分布式
文章平均质量分 76
威哥爱编程(马剑威)
华为开发者专家(HDE)、CSDN博客专家、阿里云开发者社区专家博主、Java畅销书作者、TiDB开发者官方认证讲师。百科:https://baike.baidu.com/item/马剑威/59826318 ,公众号:威哥爱编程
展开
-
强烈推荐|websocket 全双工通信协议详解
一. 前言在开发中,我们经常会遇到这样一类需求:需要在网页上显示天气预报,股票数据或者实时排行榜单等实时变化的数据。对于此类需求,一种较为原始的做法就是让客户端每隔一段时间主动去轮询服务器。但这种做法有一个很大的弊端:如果客户端的数量很大,每隔一段时间就发消息给服务器的话,服务器的并发压力会非常巨大。而且访问的频度也很难精确把握,过于频繁地访问服务器,则压力太大;不频繁的话,数据更新可能又不及时。所以今天,耀哥将会给大家分享一个可以让服务器主动推送消息给客户端的技术--websocket!二. WebSoc原创 2022-12-07 15:10:35 · 2166 阅读 · 0 评论 -
面试题分享|Linux定时任务调度机制是怎么回事?
一. 前言在求职过程中,有过面试经历的小伙伴们都知道,企业对linux的考察还是蛮频繁的。作为java开发程序员,在企业中我们的服务器都是在linux环境中部署的,所以熟练使用linux已经成为企业招聘人才的基本需求。但很多小伙伴在学习中很少使用linux,导致在面试中被问到linux时屡屡翻车,所以文哥专门收集了自己班级的学员,在面试时与linux相关的题目。今天文哥就以任务调度为例,来给大家谈谈linux中的定时任务调度。二. 什么是定时任务调度什么是任务调度?文哥是这么理解的,就是在linux操作系统原创 2022-12-07 15:08:55 · 784 阅读 · 0 评论 -
线程可重复使用,程序开发是如何使用线程池的呢?
通俗的讲,线程池就是一个线程集合,里面已经提前创建好了若干个线程,当需要线程的时候到线程集合里获取一个即可,这样省去了创建线程的时间,当然也省去了GC回收线程的时间,当线程池里的线程都被使用了后,只能阻塞等待了,等待获取线程池后被释放的线程,这样就不会无限制的去创建线程二导致Out of Memory。,所以如果要执行的任务很多,每个任务都需要一个线程的话,那么频繁的创建、销毁线程会比较耗性能。当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理。原创 2022-11-28 16:52:15 · 601 阅读 · 0 评论 -
案例实操|带你学会自定义SpringBoot starter启动器
开发人员只需要在项目的POM文件中导入对应的场景依赖,并编写少量的配置,即可快速实现当前场景的应用开发,真正的实现开箱即用。今天建哥会通过这篇文章,并结合一个具体的案例来给各位小伙伴介绍一下,我们该如何自定义一个自己的SpringBoot场景启动器,毕竟有时候官方提供的starter不能完全满足我们所有的需求。上面我们定义了一个组件HelloService,它有一个非常简单的功能,就是能够根据调用者传递的名字返回一个打招呼的信息,返回的信息内容可以根据配置的前缀和后缀进行指定格式的设置。转载 2022-11-28 16:48:52 · 386 阅读 · 0 评论 -
使用EL表达式时,PropertyNotFoundException异常的解决过程
我们在学习的时候,有很多初学者因技术运用不熟练,都会导致一些令人头疼的问题,其实遇到了问题不要怕,我们解决掉就好啦。两眼一抹黑,啥也不知道,反正就知道报错了,一下子就不知所措了。我们在上面复习了EL表达式的基本使用规则之后,尤其是明白了bean对象的使用要求,你现在是否已经知道上面异常的产生原因是什么了吗?另外该学员在排查异常时还做了查询结果输出,控制台显示查询的数据也完全正确,没有一点问题。本案例中的异常,是因粗心大意导致类的属性没有getter方法引起的错误,这不仅仅引发了。原创 2022-11-28 16:46:33 · 1159 阅读 · 0 评论 -
SpringBoot很熟?那手撕一下自定义启动器吧
而在SpringBoot中,我们只需要引入对应的mybatis启动器、druid启动器和数据库驱动,配置文件就可以自动根据配置数据库地址、用户和密码等信息快速地完成框架的搭建。也就是说,我们只要引入启动器,再配置一些必要的初始化连接参数,就可以直接使用,而不需要再自己创建很多复杂的配置,就可完成Bean类之间的依赖。这样我们就通过自定义启动器,很好地理解了SpringBoot的运行原理,特别是SpringBoot的自动装配原理。在进行代码实现之前,我们先来看看什么是SpringBoot的自动装配。原创 2022-11-28 16:43:16 · 428 阅读 · 0 评论 -
十年开发老手,深度解析企业用人标准为何越来越高?!
全栈正在变成行业趋势。建议是大数据,大数据的技术生态编程语言基本都可以用java,你可以在短时间快速入门,当然学完后也要生产实践,只有实践才能驾驭技术,就这样循序渐进,最终是可以实现全栈,当技术栈全面后,你还要在一些领域有造诣,也就是深挖,这就是技术的深度,比如深入源码学习spring,比如参与社区项目的代码贡献等等。而现在,随着参与互联网的人群越来越多,用户群体越来越庞大,我们不单单要业务实现,还要保证业务抗压,那么随之而来的是技术必须要升级,我们必须发挥分而治之的思想,采用分布式架构和性能优化。原创 2022-11-22 16:01:20 · 744 阅读 · 0 评论 -
编程常用合集,List集合使用详解掌握啦吗?
因为在实际开发场景下需要根据业务的不同选择不同的实现类来使用,这就要求大家对实现类的特点都要加以掌握,才能在实际的开发中运用自如。该类实现了迭代器和列表迭代器,同时也实现了get(int),set(int, E),add(int, E),remove(int)方法,如果子类有更好的处理方式可以覆盖这些方法。设置在通常的push和pop操作,以及作为一种方法来peek在堆栈,以测试堆栈是否为empty的方法,以及向search在栈中的项目的方法在顶部项目和发现多远它是从顶部。此类实现了可扩展的对象数组。原创 2022-11-22 15:47:33 · 169 阅读 · 0 评论 -
计算机专业入行搞开发,有必要去培训一趟吗?!
我们知道Mybatis属于一个半自动的ORM框架,之所以说Mybatis是一个半自动的ORM框架,原因是它还需要我们自己在注解或是映射文件中编写SQL语句,并没有实现完全的自动化。而Mybatis-Plus则是属于全自动的ORM框架,按照开闭原则,在不影响Mybatis现有功能的情况下,实现了对Mybatis的增强。在配置文件中,我们主要编写的是数据库的连接信息,九哥在这里使用的是properties格式的配置文件,也就是application.properties。通过在实体类中与数据库表进行映射;原创 2022-11-22 15:12:02 · 264 阅读 · 0 评论 -
深入浅出|Mybatis-Plus实现数据极简操作
我们知道Mybatis属于一个半自动的ORM框架,之所以说Mybatis是一个半自动的ORM框架,原因是它还需要我们自己在注解或是映射文件中编写SQL语句,并没有实现完全的自动化。而Mybatis-Plus则是属于全自动的ORM框架,按照开闭原则,在不影响Mybatis现有功能的情况下,实现了对Mybatis的增强。在配置文件中,我们主要编写的是数据库的连接信息,九哥在这里使用的是properties格式的配置文件,也就是application.properties。通过在实体类中与数据库表进行映射;原创 2022-11-22 15:06:53 · 463 阅读 · 0 评论 -
微服务远程调用组件Feign的使用详解
我们知道,现在最火且最有技术含量的技术莫过于SpringCloud微服务了,所以今天百泽老师就带大家来学习一下微服务的核心的组件之一,Feign的基本使用及其工作机制。简单地来说,Feign就是一个用于远程调用服务的框架/工具,让开发者可以更少耦合、更少代码、更加快,也更兼容的方法进行远程服务调用。通过测试我们就可以发现,测试我们已经实现了在服务消费者中原创调用服务提供者里的接口,从而实现了接口的远程调用。在学习Feign的使用之前,我们先来了解一下什么是Feign。此处我们需要定义一个Feign接口类。原创 2022-11-22 15:04:30 · 629 阅读 · 0 评论 -
手把手教你解决ClassCastException类型转换异常
就会发生异常,因为teacher1是JavaTeacher类型,而不是H5Teacher 类型,类型不匹配,所以就会产生java.lang.ClassCastException异常。所谓的ClassCastException类型转换异常,其实本质上就是被转换的类型不匹配,我们只需要直接将引用对象的类型和被转换的对象类型改成一致的类型,就可以完美解决了。上面的代码运行后,就产生了如上图所示的类型转换异常,那么该问题是怎么产生的,又该怎么解决呢?原创 2022-11-22 15:01:56 · 9927 阅读 · 0 评论 -
企业真实面试:父子类之间到底是怎么实例化的?
比如上面的题目,Father类的有参构造方法传递进来了一个String类型的参数“mike”。但当我们调用有参构造方法时,子类中所有的构造函数也都会默认调用父类的无参构造方法,因为每一个子类的构造方法中第一行都会隐式调用。先透露最终的答案:{Child.name:“mike”},{People.name:"mike"},{father.name:"mikeF"}。在进入到Child的有参构造方法后,接着就会去寻找Child的父类的无参构造方法,也就是People类的无参构造方法。欢迎小伙伴私信或者留言哟!原创 2022-11-22 15:00:00 · 326 阅读 · 0 评论 -
Java面试干货:关于数组查找的几个常用实现算法
假如要查找的元素在前半段,那么继续按照斐波那契数列来看,55 = 34 + 21,所以继续把前半段分成前34个数据元素的前半段和后21个元素的后半段,继续查找,如此反复,直到查找成功或失败。斐波那契查找也叫做黄金分割法查找,这种查找法其实也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。5.最后,又将mid所指向的元素(19)与待查找元素(19)进行比较,结果相等,则查找成功,返回mid指针指向的元素的位序。从折半查找中可以看出,折半查找的查找效率还是不错的。原创 2022-11-16 14:27:11 · 2311 阅读 · 0 评论 -
10个常用的Java8日期处理函数案例详解
Java 8中的日期函数,主要是基于 ISO标准日历系统,java.time 包下的所有类都是不可变类型,且线程安全,现在。通过今天的文章,你现在对Java中的日期时间处理是否熟悉了呢?如果你还想学习其他的内容,可以在评论区给我留言哦。就日期处理的常用功能代码总结如下。原创 2022-11-16 14:25:44 · 477 阅读 · 0 评论 -
Nginx服务器配置https安全协议,看这篇文章就够了
是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。是以网络安全为目标的HTTP通道,简单地讲就是HTTP的安全版,即HTTP中加入了SSL层,HTTPS的安全基础就是SSL,因此加密的详细内容就需要SSL。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性;原创 2022-11-16 14:23:39 · 5424 阅读 · 0 评论 -
Windows中安装配置Maven详细教程
我们使用的很多开发工具,比如jdk、tomcat等,都是需要配置环境变量的,maven也不例外,其配置过程如下。至此,Maven的安装配置就做完了,接下来接下来我们就可以在idea中利用maven开发java项目了。Maven的环境变量配置之后,接下来我们还需要对Maven进行必要的配置,尤其是要配置Maven仓库。我们开发时,需要将maven与自己的开发工具整合,这里壹哥以idea为例,关联配置maven。这个settings.xml文件很重要,里面可以配置maven的仓库,私服,jdk等。原创 2022-11-07 15:40:00 · 12491 阅读 · 0 评论 -
Java导出PDF样式详细解析(步骤+代码)
最后,经过反复对比研究,发现是Markdown的引用在HTML中是以blockquote标签来显示的,那也就是说,PDF不识别blockquote标签,找到问题之后,就好解决。在Java代码中将所有blockquote标签换成table标签,之所以换成table标签,因为itextpdf转换为PDF,要想显示边框,暂时只发现了能显示table的边框。上述代码就是初始化Markdown在线编辑器的代码了,一会将Markdown格式的文档转换成HTML需要用到这个editormd,所以先初始化。原创 2022-11-07 15:36:33 · 2227 阅读 · 0 评论 -
重磅干货:多维度深入总结MySQL锁机制
MYISAM存储引擎的表,在执行select语句的时候,MySQL会自动给涉及到的表加读锁。在多个用户共享数据的时候,如何保证数据并发访问时的一致性、有效性,这是数据库必须要解决的问题,此时锁对数据库而言就是一个非常好的保障机制。这是因为,我们读锁操作的是tb_book表,但这个读锁并没有释放,所以不能操作锁之外的其他表。通过以上描述可知,不同的存储引擎,对锁的支持是不一样的。今天文哥基于不同的存储引擎,给小伙伴们演示了不同存储引擎锁的特性,希望大家能够在下面按照文哥的思路逐行演练。原创 2022-11-07 15:07:23 · 465 阅读 · 0 评论 -
Spring Cloud Alibaba Nacos 注册中心使用教程
服务发现是微服务架构体系中最关键的组件之一,如果尝试着用手动的方式,来给每一个客户端配置所有服务提供者的服务列表是一件非常困难的事,而且也不利于服务的动态扩缩容。:服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地。:Nacos Client会通过发送REST请求的方式,向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。服务发现和服务健康监测;原创 2022-11-07 15:05:29 · 1891 阅读 · 0 评论 -
Java经典面试题:static加载机制你知道吗?
JVM在首次使用某个类时,会通过 classpath 来查找该类的.class文件。static在Java中是一个很常见的关键字,同时它也是面试时的一个高频考点。那么在Java类中,static的加载机制到底是怎样的呢?可以说,掌握 static 在程序中的加载执行顺序,可以使我们更好地理解代码,明白程序的执行流程。这是一道关于static加载执行顺序的经典面试题,根据代码观察执行结果,接下来我们就来分析一下上述代码的执行结果是什么。静态方法不能直接访问非静态成员;静态方法允许直接访问静态成员;原创 2022-11-07 15:04:16 · 1102 阅读 · 0 评论 -
如何使用ReentrantLock的条件变量,让多个线程顺序执行?
ReentrantLock 中的条件变量功能,类似于普通 synchronized 的 wait、notify,我们可以使用Reentrantlock 锁,配合 Condition 对象上的 await()和 signal()或 signalAll()方法,来实现线程间协作。与synchronized的wait和notify不同之处在于,ReentrantLock中的条件变量可以有多个,可以实现更精细的控制线程。今天耀哥先使用ReentrantLock 的条件变量来实现这个题目中的需求。原创 2022-11-07 15:02:56 · 717 阅读 · 0 评论 -
So easy|基于HttpURLConnection,快速实现查询城市天气效果
最近有小伙伴私聊辉哥,问怎么请求第三方平台的接口,比如想请求第三方的天气接口、短信接口、车次信息接口等。在上图的执行结果中,我们可以看到,json结果中已经拿到了”郑州“的天气信息,接下来我们只需要解析这个json文件,在相关的页面上进行渲染展示就可以了。以后如果你的项目中有相关的需求,可以直接把辉哥的这段代码拿过去,适当地根据自己的项目需求,进行简单修改就好了。以上就是相关需求的文档信息,现在我们已经知道了关于天气信息的查询接口文档,接下来我们就来编码实现这个需求。然后再根据需求的要求,实现接口的调用。原创 2022-11-01 11:10:02 · 521 阅读 · 0 评论 -
项目实战:基于Servlet和JSP的学生成绩管理系统
很多学校都会要求学生在小学期里做出一套较为完整的学生管理系统来,所以我们就为大家开发了本套学生信息管理系统,该系统中包含学生、教师、系统管理员、班级、学生成绩、课程等功能模块。5.老师进入系统后,可以对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩。3.管理员进入系统后可以对学生、老师、班级、课程等信息进行增删改查操作;做完本套项目后,能够对Java中多种设计模式的应用有更加深入的理解;4.学生进入系统后,可以查看成绩、查看和修改自己的信息;原创 2022-10-10 10:12:47 · 695 阅读 · 0 评论 -
算法精讲!带你轻松搞懂插入排序是咋回事
3. 第三轮比较,插入元素2,与排好的1、3、5进行比较。然后2再和前面的3比较,结果2比3小,继续交换;然后2再和前面的1比较,结果比1大,不用交换。2. 第二轮比较,插入元素5,与排好序的右边的数进行比较,也就是3和5比较。比较的结果是,新插入的值,比排好序的两个数中的最大值还要大,所以不用交换;关于排序法算法其实有很多种,例如简单的有冒泡排序、选择排序,复杂一些的有快速排序、插入排序等,今天平哥就给大家讲解一下插入排序的实现过程。3和1比较后,需要进行交换,变为了1、3;原创 2022-10-10 10:06:02 · 104 阅读 · 0 评论 -
毕设新思路附源码 | 微医平台项目详细步骤
随着中国人口不断增加,看病越来越是一个难题,医院官方平台挂号难的问题也随之而来,挂号网已经达成和微信的深入合作,届时注册微医的医生和医院都会在微信上有公众号,患者可以在微医平台上进行挂号和咨询.原创 2022-09-30 14:52:22 · 401 阅读 · 0 评论 -
算法精讲!带你轻松搞懂插入排序是咋回事
3. 第三轮比较,插入元素2,与排好的1、3、5进行比较。当然,如果你想学习更多的算法知识,可以在B站上搜索千锋Java,我们有很多套免费的Java算法系列教程,欢迎免费订阅哦。2. 第二轮比较,插入元素5,与排好序的右边的数进行比较,也就是3和5比较。比较的结果是,新插入的值,比排好序的两个数中的最大值还要大,所以不用交换;关于排序法算法其实有很多种,例如简单的有冒泡排序、选择排序,复杂一些的有快速排序、插入排序等,今天平哥就给大家讲解一下插入排序的实现过程。3和1比较后,需要进行交换,变为了1、3;原创 2022-09-30 14:45:58 · 380 阅读 · 0 评论 -
SQL技术干货:带你实现查询数据库表中的前几名
我们在学习数据库查询时,经常会遇到关于分组和聚合函数的查询,比如查询每门课程的最高分,每位同学的平均分,其实这些都是比较一般的问题。但如果遇到查询每门课程成绩的前几名问题,就会变的很棘手,今天老谢给你唠唠这方面的问题。其实遇到这种问题,并不单纯是在考察我们的SQL水平,同时也是在考察我们的思考能力,我们得学会思考如何进行查询,如何进行分组,如何进行条件过滤。然后我们可以根据学生和科目再进行分组,查询出比这个学生该门科目高的学生成绩条数是多少,如果条数小于3,这样就得到了前三名。原创 2022-09-30 14:45:06 · 3138 阅读 · 0 评论 -
手把手带你写代码,完美实现Java分页功能
不过在面试的时候,面试官有时会问我们分页的实现过程与原理,这就有点让人防不胜防了。所以为了防止大家在面试时手足无措,索尔就用最原始的技术来带各位实现一下分页效果,希望能够让大家弄清楚分页的底层原理!因为项目中用到了JSP标签,所以我们需要在tomcat安装文件夹中的lib子文件夹下放好jstl-1.2.jar与standard.jar文件,如果有的话就不用管它了。本项目虽小,但也是遵循三层架构的。对啦,不要忘了在项目中导入tomcat、JRE、mysql的依赖库文件,我这里用的是Eclipse工具。原创 2022-09-30 14:43:53 · 4082 阅读 · 1 评论 -
NullPointerException异常二番战
最近索尔老师给同学们讲了类和对象的基本概念及使用方法,并给大家留了个小练习,练习的题目是用一个数组来存储班级里的学生信息,其中包括学生的学号、姓名、年龄属性,最后要将学生的信息输出。接下来我们把代码运行起来,再进行测试,会发现空指针异常的问题已经得到了解决!根据提示我们可以看到,异常是在StudentTest类中的第28行发生的,那么我们就看看,在第28行哪个对象有可能是空的呢?注意:在我们new对象数组的时候,只是为数组开辟了指定长度的内存空间,但这个数组中的元素默认是null哦!原创 2022-09-30 14:42:41 · 123 阅读 · 0 评论 -
Java大牛必会|分布式缓存实现方案之Spring Cache
可以在评论区给我留言哦。Spring Cache并非一种具体的缓存技术,而是基于各种缓存产品(如Guava、EhCache、Redis等)进行的一层封装,结合SpringBoot开箱即用的特性用起来会非常方便;Miss率 = 没有从缓存中读取的次数 / (总读取次数[从缓存中读取次数 + 从慢速设备上读取的次数])命中率 = 从缓存中读取次数 / (总读取次数[从缓存中读取次数 + 从慢速设备上读取的次数]);小白:杨哥,今天我做分布式缓存时,看到公司用了Spring Cache,这个技术你能给我讲讲吗?原创 2022-09-30 14:41:04 · 2098 阅读 · 0 评论 -
十几年Java“老油条”,教你如何才能把Java学好学透彻
根本不符合他对工作的期望,他觉得人生灰暗了,心情也不美丽了,腰也疼了,腿也酸了...... 他想逃、他想去追求自己的理想、他去实现自己的人生价值 ...... 可是,但可是理想很丰满,现实却更骨感,当老板拿出了大量美丽的元、开出了各种毫无下限的条件,还为他成立了一个单独的部门,让他想干啥干啥 ..... 他麻了,突然间觉得诗和远方其实也没那么美好,现在的生活也挺好的,嗯,真香。1995年,一个阳光明媚的上午,在硅谷-好莱坞的互联网娱乐业会议上,他带着他的Java技惊四座,全场哗然,瞬间圈粉无数。原创 2022-09-22 14:54:01 · 618 阅读 · 0 评论 -
核酸检测引发的思考,关于redis缓存穿透、击穿和雪崩的理解和解决方案
尤其是在秒杀、大促的情况下,并发请求量过大,而key刚好又过期,缓存key对应的key值,计算又比较复杂,重新缓存到数据库也需要一段时间,这时就可能会压垮后端数据库。对于缓存穿透,可以将查询的数据条件都哈希到一个足够大的布隆过滤器中,用户发送的请求会先被布隆过滤器拦截,一定不存在的数据就直接拦截返回了,从而避免下一步对数据库的压力。如果某个核酸点没有核酸检测物料,比如试管,可以在第一次问询防疫中心,如果都没有的情况下,就会在这个核酸点贴出公告,告知做核酸的人员,这样后面排队的人就不用苦苦等待了。原创 2022-09-22 14:52:36 · 842 阅读 · 0 评论 -
面试题精讲:你所不知道的Lambda表达式和常用的函数式接口
如果⼀个⽅法的参数和返回值全都是 Consumer 类型,那么就可以实现效果:消费数据的时候,⾸先做⼀个操作, 然后再做另⼀个操作,实现组合。java.util.function.Function接⼝⽤来根据⼀个类型的数据得到另⼀个类型的数据,前者称为前置条件,后者称为后置条件。⽆论是JDK内置的Runnable 、 Comparator 接⼝还是⾃定义的接⼝,只有当接⼝中的抽象⽅法存在且唯⼀时,才可以使⽤Lambda。Function接⼝中有⼀个默认的andThen⽅法,⽤来进⾏组合操作。原创 2022-09-22 14:51:04 · 929 阅读 · 1 评论 -
十年坎坷Java路,文哥从“菜鸟”到“大佬”的逆袭成长经历
当我在第一家公司干了差不多6个月之后,觉得公司的技术体系和业务也熟悉的差不多了,再继续下去,也不会有很大的提高,于是我就跳槽了。当简历投递出去之后,大多都是石沉大海,偶尔有一两个面试的机会,在面试的时候也是被面试官虐的跟菜狗一样,尴尬的要死。看到粉丝的这个问题,文哥也是有感而发,想当年文哥刚毕业,也是菜鸟一枚,在就业的过程中也确确实实遇到了很多的阻碍。就这样的情况,一直持续了两个月。在公司里面,我对自己的位置也摆放的比较低,刚开始进去,每天都是第一个来公司,最后一个离开公司,就是为了快速的上手。原创 2022-09-22 14:42:43 · 423 阅读 · 0 评论 -
Java大牛必会|分布式缓存实现方案之Spring Cache
Spring Cache并非一种具体的缓存技术,而是基于各种缓存产品(如Guava、EhCache、Redis等)进行的一层封装,结合SpringBoot开箱即用的特性用起来会非常方便;Miss率 = 没有从缓存中读取的次数 / (总读取次数[从缓存中读取次数 + 从慢速设备上读取的次数])命中率 = 从缓存中读取次数 / (总读取次数[从缓存中读取次数 + 从慢速设备上读取的次数]);小白:杨哥,今天我做分布式缓存时,看到公司用了Spring Cache,这个技术你能给我讲讲吗?原创 2022-09-22 14:30:58 · 1411 阅读 · 2 评论 -
JDBC操作时竟然NullPointerException?!看我怎么一招搞定它
也有一些稍微表现好点的同学,会在第一时间进行百度,或者是问老师,问其他同学,最后会知道自己遇到了大名鼎鼎的空指针异常,但至于为什么出现这个异常,则又完全没有了头绪。该方法的逻辑是要将查询到的多条记录都封装到List集合中,而List集合里添加的是员工对象,我们上面代码的错误提示的就是出现在这个方法中的第42行!我们以后在写代码时,不要去求快,而是要求稳,每一行代码都要认真思考琢磨,用心去打磨自己的项目,这正应了我们的一句老话:”磨刀不误砍柴工“。上面的代码,我们只是增加了给emp对象赋值的过程!原创 2022-09-22 14:29:39 · 1776 阅读 · 0 评论 -
打开Java美颜丨程序员如何帮女朋友完成整容级修图!
当然可以,很多大厂都提供了AI人工智能的免费或付费服务,可以通过三方接口调用来完成,这是最简单的方式了,当然如果你对AI确实感兴趣,建议可以从神经网络、图像与视觉、OpenCV,机器学习的实现技术,俗话说得好,兴趣是最好的老湿,威哥带一起搞一个简单的AI美颜程序出来,体验一下,AI的魅力所在。美女果然是换妆啦,我喜欢这种淡淡的粉红粉红色,你喜欢吗,不喜欢也没办法,这是直接调用百度AI换妆API自动换妆后返回的结果。OK,测试一下,完美展示文章开头的效果,好了,感兴趣的朋友可以自己操作一下!原创 2022-09-16 17:38:32 · 488 阅读 · 0 评论 -
Java诊断怎么搞?Arthas技能必不可少
Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供了丰富的 Tab 自动补全功能,方便进行问题的定位和诊断。在我们的日常开发中,如果在代码中遇到问题,我们可以使用DEBUG进行调试,追踪方法的执行过程,查看参数及返回值和报错信息等,并可以进行定位和解决问题。但如果是在服务器上,或者是在进行前后端联调、预发及线上,没有IDE的环境,我们遇到了问题,又如何排查定位问题呢?但如果是数据有问题呢?我们查看线上的仓库代码,发现代码确实是新的,但执行的似乎是旧的代码?原创 2022-09-16 17:02:53 · 381 阅读 · 0 评论 -
10分钟带你学会FastDFS分布式文件管理系统,就是这么快!
这个感觉很难实现呢。文件上传一般都有文件的名字、文件的内容、文件的扩展名、文件的md5值、文件的作者等相关属性,我们可以创建一个对象封装这些属性。客户端如果想要存储,发送请求到tracker管理端,管理端会返回给客户端一个存储端服务器的ip和端口,然后客户端向具体的存储端服务器中存储,存储后返回一个存储后的路径,并且文件会被自动重命名,防止文件重名。FastDFS分为客户端client(我们的项目),tracker管理端(管理存储端服务器的,不存储文件),storage存储端(存储文件) 共三部分。原创 2022-09-16 17:00:47 · 510 阅读 · 0 评论