前言Spring框架本身有各种不同的方式来执行依赖项的注入。灵活的选择是Spring框架的强项。然而,并非所有依赖注入方式都被认为是最佳实践。依赖注入接下来我们通过一些代码示例,来分别实现Spring的多种依赖注入的方式。首先我们有一个MyService,这个service中有一个sayHi()的服务,我们在Controller中尝试用不同的方式进行注入。ServicepublicclassMyService{publicStringsayHi(){retu...
2022-11-18 11:10:07 6026浏览 0点赞 0回复 0收藏
前言RobertC.Martin提出了5条面向对象的设计原则,并将其缩写为SOLID。这个首字母缩写词的每一个字母都在谈论Java中的原则。当以一种组合的方式使用所有的SOLID原则时,就会更容易开发出易于管理的软件。RobertC.Martin,世界级编程大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++Report前主编。20世纪70年代初成为职业程序员,后创办ObjectMentor公司并任总裁。后辈程序员亲切地称之为“Bob大叔”。SOLID什么意思如上所...
2022-11-10 11:11:09 4855浏览 0点赞 0回复 0收藏
前言Guava是一个谷歌开发的开源库。Guava工程中包含了很多被Google的Java项目广泛依赖的核心库。本文主要介绍Guava中的EventBus组件。EventBusEventbus是一种机制,它允许不同的组件在不了解彼此的情况下相互通信。组件可以将Event发送到Eventbus,而不知道谁将接收它,或者有多少其他组件将接收它。组件还可以监听Eventbus上的事件,而不知道是谁发送了事件。这样,组件就可以在不依...
2022-11-10 11:10:02 5489浏览 0点赞 0回复 0收藏
前言String字符串在我们开发中非常高频出现的一种数据结构,我这里准备了几道小题,不管你是初学者还是专家,都可以试试是否可以很容易的解决下面几道题,如果你有更好的解决办法,欢迎在评论区交流!如何不使用Java内建方法反转一个字符串?写一个java程序检查两个字符串是异位词?[异位词是指相同字符不同位置]判断一个字符串中的所有字符是否只出现一次?如何从字符串中找到重复的字符找到字符串的所有子字符串找出一个输入...
2022-11-10 11:09:22 4241浏览 0点赞 0回复 0收藏
前言在当今世界,各个商业、互联网、企业之间的竞争异常激烈,各个中小企业都面临着数字化转型的挑战,为什么要数字化转型,因为数字化转型可以使企业变得更加敏捷,创新成本更低。但是数字化转型的道路具有一定的复杂性,需要有合格的开发人员能够快速准确地开发出符合复杂业务的应用程序和流程。而开发人员从0到1的开发系统,存在着一定的风险,因为这会有很长的交付时间,并且成本可能会非常高,而且对开发人员的专业程度...
2022-11-10 11:06:14 5510浏览 0点赞 0回复 0收藏
什么是短链接短链接顾名思义,就是一个比较短的链接(我好像说了个废话),我们平时看到的链接可能长这样:http:mp.weixin.qq.comsbizMzU5MjY4MTM3MA&mid2247485162&idx1&sn00a7baa5284b8231c56507068378ccb2&chksmfe1d461fc96acf092d58ebf0bc3298d3ee6ce4819fa73c31fb01def5ee7b076e4add0592fd6frd又臭又长有没有(没错,这是一个WX公众号链接),那如果我们需要将某个链接发在某个文章或者推广给别人的时候,这么长看...
2022-11-10 11:03:57 7446浏览 0点赞 0回复 0收藏
前言HTTP(超文本传输协议)是一种应用层协议,用于客户端和服务端进行通信,按照标准格式如JSON、XML等进行网络数据的传输,通常也作为应用程序之间以RESTAPI形式进行通信的常用协议。在Java应用中需要调用其他应用提供的HTTP服务API时,通常需要使用一些HTTP客户端组件。而可选择的HTTP客户端有很多,本期内容主要介绍在Java应用程序中可以使用的HTTP客户端工具。概述本文主要介绍的HTTP客户端包括:Java11+版本中提供...
2022-11-10 11:02:58 8004浏览 0点赞 0回复 0收藏
前言最近公司因业务发展需要建设一个新应用,在架构设计时我也有机会能在提供一些建议,这个过程还是比较有趣的,要找到符合业务场景和用户需求的技术,并且要考虑未来的扩展性,相对来说还是比较困难的。涉及到后端、前端、开发规范、运维等多个方面的大量技术内容,为了以后能在类似的工作中变得更容易,我决定在本期内容中进行整理,列出一些在新项目建设时需要考虑的一些问题。提前声明一下,本期内容在大多数问题下只提...
2022-11-10 11:01:18 4946浏览 0点赞 0回复 0收藏
前言大家好,我是小黑,好久不见。看过我以往文章的小伙伴可能会发现,我的大部分文章都有很多配图。我的文章风格是图文相结合,更便于大家理解。最近有很多小伙伴发私信问我:文章中的图是用什么工具画的。他们觉得我画的图风格挺小清新的,能够让人眼前一亮。先上几张图让大家看看效果:说实话,问我的人太多了,我真的没法一个个回复。同时问我的人多,也恰恰说明了这个工具的优秀。今天特地写一篇介绍画图工具的文章,给有...
2022-11-10 11:00:13 7110浏览 0点赞 0回复 0收藏
大家好,我是小黑本期文章给大家分享10个我用着还算顺手的IDEA插件,绝对实用不花哨,能极大提高编码效率。aiXcoderaiXcoder一款国产代码开发工具,提供了比较强大的代码补全、预测的功能,它的宗旨就是让我们少些代码,能自动生成的绝不手写,上手感受下就会爱上它。实际开发中我会结合IDEA的postfixcompletion和aiXcoder配置使用,IDEA本身就已经提供了许多快速补全的...
2022-11-10 10:58:32 6122浏览 0点赞 0回复 0收藏
场景在我们的系统中不可避免要进行数据的存储,比如系统中会有用户上传的大量图片,这些图片数据要存放在文件服务器磁盘上,而一台服务器的存储空间往往是有限的,那么当图片量超过服务器磁盘的时候,一般都需要进行扩容,使用很多台服务器来存放我们的图片数据。而这时我们会面临着两个问题:如何确定将一张图片存放在哪一台服务器上,以及想要查看某一张图片时应该去哪个服务器找;如何保证在某一台服务器崩溃或磁盘损坏时...
2022-11-10 10:54:58 6655浏览 0点赞 0回复 0收藏
前言我们都知道,SpringBoot最大的特点就是自动装配,简化依赖,可以让我们快速的搭建项目。使用SpringBoot之后,我们要想在项目中使用一些其他框架,只需要引入对应的Starter依赖就可以了。那么你在实际开发中是否也开发过一些基础功能,这些功能需要在你们的SpringBoot项目中使用呢?而这些功能可能在其他项目中可能也需要用到,如果我们把相同的功能在另一个项目中重新再写一遍的话肯定不是一个好方法。我们可以将我们的功...
2022-11-09 15:53:33 4804浏览 0点赞 0回复 0收藏
前言在Java中应该如何处理异常,这个话题看似简单,不就是try...catch嘛,但是往往BUG更容易出现在一些简单的、容易忽略的地方。大多数成熟的开发团队对于如何进行异常处理都有一套规范和最佳实践。本期内容我整理了一些在我的团队正在使用的9个最佳实践,希望能让你对异常处理有所帮助。1、使用finally或try...with...resource关闭资源如果我们在try代码块中需要使用到一些资源,比如InputStream,在使用完之...
2022-11-09 15:52:07 6299浏览 0点赞 0回复 0收藏
什么是Junit5Junit是Java语言中的一个流行测试框架,是由KentBeck和ErichGamma开发的。它的第一个版本于1997年发布。由于其易用性,它成为Java社区中最流行的测试框架之一。它是一个轻量级测试框架,允许Java开发人员用Java语言编写单元测试用例。最新发布的版本是5.8.2,被称为JUnit5。JUnit5由许多不同的模块组成。主要包括以下三个子模块:JunitPlatformJunitJupiterJunitVintage以上三个模块构成了Junit5...
2022-11-09 15:50:05 5898浏览 0点赞 0回复 0收藏
小黑有个朋友最近去面试,过程中有问他一些缓存相关的问题。让他回答一下,设计一个LRU缓存,应该怎么实现我这个朋友呢,应该是没好好准备这块儿内容,反正是没咋答上来,于是。。。就让他回家等通知了。今天小黑就带大家来聊一聊LRU算法,并动手写一个LRU缓存。缓存淘汰策略是啥在我们平时开发中,经常会使用到缓存,比如一些热点商品,配置数据等,为了提高访问速度都会放到缓存中,但是,往往缓存的容量是有限的,我们不...
2022-11-09 15:48:17 5354浏览 0点赞 0回复 0收藏
场景通常,在后端项目开发中,因为会有项目分层的设计,例如MVC架构,以及最近很火热的DDD架构中,会在不同的层级,有对应的DO,BO,VO,DTO等各种各样的POJO类,而我们在层级之间进行调用的数据传递时,通常要进行对象属性之间的映射。对于一些简单的对象,可能会直接使用get,set方法完成,或者使用BeanUtils工具类来完成属性之间的映射。这些代码往往是枯燥、无聊的,并且在不同的业务处理类中可能需要重复地对两个对象进行...
2022-11-09 15:47:03 8062浏览 0点赞 0回复 0收藏
场景有五位沉默的哲学家围坐在一张圆桌旁,他们一生都在吃东西和思考。有五只筷子供他们使用,哲学家需要双手拿到一双筷子之后才能吃饭;吃完后会将筷子放下继续思考。那么现在有一个问题,我们需要想出一种方案,如何保证哲学家们可以交替吃饭和思考,而不会被饿死。哲学家就餐问题上面这个问题是由Dijkstra提出的一个经典的线程同步问题。解决方案我们在开始想如何解决问题之前,可以先将这个场景通过代码还原,在程序中...
2022-11-09 11:39:14 5551浏览 0点赞 0回复 0收藏
大家好呀,我是小黑。我们在开发应用时,只要涉及到用户,登录注册功能则是必不可少的。但是,并不是所有人都能做好登录注册功能。比如最基本的密码应该如何保存?应该用哪种加密方式对密码进行加密都不是很清楚。一旦出现数据库泄漏,密码外泄等问题,会对用户造成极大的损失。密码该如何保存?如果我们要在服务器中对用户进行身份验证,我们需要完成以下的步骤:获取到要登录用户的用户名和密码;根据用户名在数据库中查...
2022-11-09 11:38:31 4491浏览 0点赞 0回复 0收藏
大家好,我是小黑呀!数据库设计锁的目的是处理并发问题,在并发对资源进行访问时,数据库要合理控制对资源的访问规则。而锁就是用来实现这些访问规则的一个数据结构。在对数据并发操作时,没有锁可能会引起数据的不一致,导致更新丢失。锁的分类乐观锁和悲观锁乐观锁:对于出现更新丢失的可能性比较乐观,先认为不会出现更新丢失,在最后更新数据时进行比较。CREATETABLEt(idint(11)NOTNULL,valueint(11)DEFAULTNULL,versi...
2022-11-09 11:37:16 6203浏览 0点赞 0回复 0收藏
前言在分布式场景下,我们经常会听到“代理”、“反向代理”等这样的术语。如果你对它们的概念不是很清楚,那么可能会在具体场景下比较困惑。本期内容,主要跟大家介绍一下,代理和反向代理是什么?有什么区别?以及它们都有什么作用和使用案例。没有代理的请求过程在没有代理服务器时,客户端和服务器之间的请求和响应过程。代理服务器代理服务器是位于客户端和服务器之间的软件或硬件服务器。客户端连接到代理以请...
2022-11-09 11:32:46 8725浏览 0点赞 0回复 0收藏