JAVA
文章平均质量分 63
力不竭!!!战不止!!!
You just run, OK?
展开
-
使用Mybatis-plus时,获取的LocalDateTime类型字段为空时报错:Error attempting to get column ‘xxx_time‘ from result set.
在3.0.7版本中,类型处理器中获取字段时对LocalDateTime类型的返回字段进行的null值处理。原创 2024-03-15 17:44:53 · 975 阅读 · 1 评论 -
java.lang.AbstractMethodError: ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(Lch/qo
【代码】java.lang.AbstractMethodError: ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(Lch/qo。原创 2023-09-07 10:29:30 · 2779 阅读 · 0 评论 -
Communications link failure The last packet successfully received from the server was 20 millisecon
相关url链接加入一些参数解决,如下所示。原创 2023-07-21 10:37:38 · 2734 阅读 · 0 评论 -
Multimaps【概述、适用场景、java demo】
Multimaps是 Google Guava 提供的一个工具类,用于处理多值映射的数据结构。它提供了一种方便的方式来创建和操作多值映射,其中每个键都可以关联一个或多个值。Multimaps。原创 2023-06-21 15:21:56 · 3598 阅读 · 0 评论 -
观察者设计模式(Observer Design Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]
观察者设计模式(Observer Design Pattern)是一种行为型设计模式,它定义了一种对象间的一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象状态发生改变时,通知所有观察者对象,使它们能够自动更新。方法中,我们创建了一个具体主题和两个具体观察者,将观察者添加到主题中,然后改变主题的状态并观察输出结果。方法中,它会遍历所有注册的监听器,并将事件分发给匹配的监听器。,该方法会遍历注册的监听器,并将事件分发给匹配的监听器。接口,因此在Spring中,事件发布主要由。原创 2023-04-24 17:08:11 · 1246 阅读 · 87 评论 -
使用状态机实现幂等性
对于每个状态和操作,我们定义了一个状态转换接口的实现。在执行操作时,我们根据订单的当前状态和请求的操作来查找相应的状态转换。当收到一个请求时,根据当前状态和请求类型来判断是否允许执行操作,如果允许则执行操作并更新状态,否则拒绝操作。例如,对于一个删除记录的操作,如果删除成功,无论执行多少次,记录都会保持被删除的状态。类似地,对于一个更新操作,如果更新成功,无论执行多少次,更新后的状态都保持不变。幂等(Idempotency)是指对于一个系统,一个具有幂等性质的操作,无论执行多少次,其结果始终保持一致。原创 2023-04-23 17:42:27 · 1333 阅读 · 14 评论 -
迭代器设计模式(Iterator Design Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]
迭代器设计模式(Iterator Design Pattern)是一种行为型设计模式,它提供了一种方法来顺序访问一个聚合对象(如集合)的元素,而不需要暴露该对象的底层表示。迭代器模式可以帮助我们在不关心底层数据结构的情况下,遍历一个集合。原创 2023-04-19 16:03:35 · 586 阅读 · 16 评论 -
策略设计模式(Strategy Pattern)[论点:概念、组成角色、相关图示、示例代码、适用场景]
(Strategy Pattern)是一种行为设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式使得算法可以独立于使用它的客户端变化。这种模式的主要目的是将算法的定义与使用分离,以提高代码的灵活性和可重用性。原创 2023-04-14 18:00:25 · 532 阅读 · 14 评论 -
带你玩转状态机(论点:概念、相关图示、示例代码、适用场景、相关文档)
状态机(State Machine)是一种用于描述系统在不同状态下的行为及状态之间转换的数学模型。状态(State)、事件(Event)和转换。原创 2023-04-14 15:32:34 · 2873 阅读 · 27 评论 -
状态设计模式(State Pattern)[论点:概念、相关角色、图示、示例代码、框架中的运用、适用场景]
一个常见的使用状态设计模式的例子是Java线程的状态管理。Java的Thread类使用了状态模式来表示线程的不同状态,例如:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED。这些状态之间的转换由Thread类和相关的方法控制。(State Pattern)是一种行为型设计模式,用于解决对象在不同状态下的行为问题。它允许一个对象在其内部状态改变时改变它的行为。原创 2023-04-13 17:07:09 · 1026 阅读 · 32 评论 -
责任链设计模式(Chain of Responsibility Pattern)[论点:概念、组成角色、图示、相关代码、框架中的运用、适用场景]
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,其主要目的是将请求的发送者和接收者解耦。当一个请求到来时,这些处理器按照顺序处理请求,直到其中一个处理器成功处理请求为止。:在Spring MVC框架中,当请求经过过滤器链处理并到达Servlet之后,请求会被传递给DispatcherServlet。DispatcherServlet的主要职责是将请求分发给适当的处理器(如Controller方法)。原创 2023-04-12 16:55:36 · 747 阅读 · 22 评论 -
一文了解编程领域的模版
🍊在编程领域,模板是一种代码片段,它可以被重复使用,并允许您在保持代码的基本结构不变的情况下,根据需要调整其中的内容。模板通常在构建大型程序或开发一类相关程序时非常有用,以减少代码冗余并提高代码可读性。🍊模板可以通过多种方式实现,具体取决于使用的编程语言。在 C++ 中,可以使用模板来实现泛型编程。在 Java 中,可以使用泛型来实现类似模板的功能。此外,许多编程语言都提供了模板引擎,可以生成静态 HTML 或动态网页。原创 2023-02-03 15:11:17 · 1988 阅读 · 71 评论 -
Springboot2.x+Websocket+js实现实时在线文本协同编辑,并展示协同用户
展示当前用户以及同时编辑文本的人员名称。编写WebSocketConfig和WebSocketHandler配置类,实现对WebSocket的配置。实现页面实时在线文本协同编辑,且显示当前同时编辑文本的用户。同时打开多个页面,当编辑信息时会显示到同时编辑的用户列表。上面实现为简易实现,仅供参考,可能并不适用一些业务场景。当前用户点击保存时推出当前同时编辑的用户列表。//可以选择没人编辑的时候隐藏当前列表。好久没写前端了,写起来有点费劲!//获取当前文本同时编辑的用户。//点击保存后输入框变为只读。原创 2023-01-31 17:18:44 · 4701 阅读 · 11 评论 -
使用Springboot 2.7+Websocket+js实现服务端消息实时推送
在页面中使用JavaScript实现Websocket的前端实现,建立连接,接收并显示消息。在页面关闭时通过JavaScript关闭Websocket连接,以确保连接正常关闭。编写一个WebSocketServer类,实现服务端主动推送消息的逻辑(此处服务端推送客户端消息的逻辑采用定时任务自动推送,模拟服务端主动推送消息给客户端,同时展示客户端发送给客户端的消息以及服务端推送给客户的消息。//防止每次刷新页面产生新的WebSocket连接,在此加入判断。//建立websocket连接。原创 2023-01-30 16:36:54 · 1807 阅读 · 3 评论 -
一文了解WebSocket及Springboot集成WebSocket
🍊WebSocket与HTTP协议不同,它使用了独立的端口,并且在建立连接后,不需要在每次数据传输时重新建立连接。与 HTTP 通信不同的是,WebSocket 通信是基于TCP的,所以它是一个持久连接。如下图所示,发起一个websocket链接之后,请求和响应的参数里会有一些websocket相关的参数,该报文中有一个upgrade首部,它的作用是告诉服务端需要将通信协议切换到websocket。🍊WebSocket协议是一种全双工协议,它允许服务器主动发送信息给客户端,而不是等待客户端的请求。原创 2023-01-29 14:57:27 · 4425 阅读 · 21 评论 -
文件上传oss,并查询上传进度(SpringBoot+Redis+Oss+Swagger3)
实现这个功能的由来是有可能上传的文件较大,并不能在调用上传接口得到文件上传成功或者失败的回应。文件下载时的进度也可以参考上述代码,进度存储也可以使用其他方式,如ConcurrentHashMap、Mysql等,当然前端也可以实现等。启动项目无报错后访问:http://localhost:8080/swagger-ui/index.html#/Swagger UI页面可以让后端开发更变便捷的操作接口,个人感觉像个快捷版的Postman吧。可以看到我们的接口在页面上有显示,可以点击对应的接口进行操作。原创 2023-01-17 17:55:42 · 2919 阅读 · 4 评论 -
Thread.sleep(0) vs Thread.sleep(1) vs Thread.yield() vs Object.wait()
这些方法都可以用于线程调度和同步。但是,它们之间有一些重要的区别,应根据具体情况选择使用。 `Thread.sleep(0)`、`Thread.sleep(1)`、`Thread.yield()` 和 `Object.wait()` 方法之间的一些区别原创 2022-12-16 18:53:54 · 725 阅读 · 0 评论 -
你真的了解Thread.sleep(0)吗?以及Thread.sleep(1) vs Thread.sleep(0)
https://blogs.msmvps.com/peterritchie/2007/04/26/thread-sleep-is-a-sign-of-a-poorly-designed-program/ (发表于07年)Thread.Sleep(0) 有效地告诉操作系统你比它更擅长调度进程,你可能会影响它调度线程和进程的方式,如果你使用 Sleep( 0)很多。将阻塞当前线程至少n 毫秒内可能发生的时间片(或线程量程)的数量,换句话说,它将无条件地将其剩余时间片放弃给任何其他线程。原创 2022-12-15 18:42:20 · 522 阅读 · 0 评论 -
一文理解Flink 水位线(Flink Watermark)
在说水位线之前,我们先了解一下相关的知识,如flink的时间语义中的处理时间、事件时间 对于一台机器而言,“时间”自然就是指系统时间。但我们知道,Flink 是一个分布式处理系统。分布式架构最大的特点,就是节点彼此独立、互不影响,这带来了更高的吞吐量和容错性;但有利必有弊,最大的问题也来源于此。 在分布式系统中,节点“各自为政”,是没有统一时钟的,数据和控制信息都通过网络进行传输。比如现在有一个任务是窗口聚合,我们希望将每个小时的数据收集起来进行统计处理。而对于并行的窗口子任务,它原创 2022-12-06 22:13:01 · 563 阅读 · 0 评论 -
flink 单作业模式部署提交作业爆:Trying to access closed classloader. Please check if you store classloaders direc
报错信息:Exception in thread "Thread-5" java.lang.IllegalStateException: Trying to access closed classloader. Please check增加 :classloader.check-leaked-classloader: false , 保存后重启任务即可。您可以使用配置“classloader.check-泄漏-类加载器”禁用此检查。类加载器相关的报错,可能是类加载器问题。编辑flink-conf.yaml。原创 2022-11-08 22:02:40 · 4103 阅读 · 0 评论 -
如何使用ES更有效率的进行多字段模糊匹配
2、ngram (分词器在对纯中文或者中英文混合相关等检索的时候很犀利,无脑的将词分隔成成为几个字连接起来)官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/5.5/analysis-ngram-tokenizer.html。min_gram和max_gram 有助于分词的效率,类似一个窗口(如下配置像一个长度1~3单位的窗口,可以在字段字符上来回滑动分词),窗口长度拉的越长,匹配的更加具体,长度越小,匹配质量越低。原创 2022-11-07 19:12:44 · 3254 阅读 · 0 评论 -
如何结合spring和redis进行优雅的轮询
当业务结束后需要轮训获取内部接口或者第三方接口执行结果信息,可以使用一些轮训方式,如mq、项目自己异步线程轮训、队列等方式,下面的方式是以redis和spring定时执行相结合实现的。application.xml和application.properties配置redis相关配置。原创 2022-10-21 11:43:17 · 1167 阅读 · 0 评论 -
方便的java Stream api
在Java8之前,如果我们想对集合进行操作还是比较麻烦的。Java8设计了Stream API来简化对集合的操作,Stream API的设计基于函数式编程和lambda表达式,行云流水似的编程方式给人带来新的体验。Stream操作分为如下三个步骤创建Stream:从数据源,例如集合,数组中获取一个流中间操作:对数据进行处理终止操作:执行中间操作,并产生结果。一般返回void或一个非流的结果注意当不执行终止操作的时候,中间操作不会执行。原创 2022-09-27 18:06:41 · 149 阅读 · 0 评论 -
项目根pom导入依赖爆红,死活解决不了
今天遇到一个奇怪的事情,在项目根pom导入maven依赖一直爆红,拉了很多遍拉不下来,检查了本地库,根本没有对应的文件。试了很多方法:删除pom文件重新创建不行、重启idea不行、关机也不行、换网络也不行、重新打了二方包重新拉也不行、清除idea缓存也不行。解决方式,根pom拉不下来,放到子项目pom去拉就好了。后来,放到子项目moudle的pom下,拉下来了。...原创 2022-08-02 17:44:22 · 1132 阅读 · 0 评论 -
IDEA中java项目变成橙色文件解决办法
背景:有时候我们打开项目,里面的文件变成了橙色,进不去里面的方法,相当于本地无法使用解决办法1:给项目重新设置sdk【有时候游泳】解决办法2:重新设置moudle,关闭掉再添加一下,点击ok,项目就变回原样了......原创 2022-07-04 15:27:45 · 22430 阅读 · 0 评论 -
异步神器CompletableFuture
CompletableFuture,提供了很多函数式接口,当接口达到瓶颈时,很有可能需要使用多线程优化项目想方便的异步执行任务,就必须放到单独的线程中。继承Thread类,实现Runnable都不能拿到任务的执行结果,这时就不得不提创建线程的另一种方式了,实现Callable接口。对于简单的场景使用Future并没有什么不方便。但是一些复杂的场景就很麻烦,如2个异步任务,其中一个有结果就直接返回。Future用起来就不方便,因为想获取结果时,要么执行future.get()方法,但是这样会阻塞线程,变成同原创 2022-06-24 18:18:47 · 321 阅读 · 0 评论 -
导出带水印的PDF
有时候我们需要导出单个pdf数据,上面需要加上一些水印或者图片测试demo图片原创 2022-06-17 16:08:49 · 461 阅读 · 0 评论 -
对比相同类对象字段的变化(可用于审计或者轨迹)
有时候我们需要做一下审计日志或者操作记录等功能,需要对某条数据变动之后看到变化的数据。我想到两个实现方法:使用反射(直接舍弃,效率太低),使用阿里fastjson的JSONObject所需东西:维护一个对象字段及字段含义的枚举,每条数据的对象模版对象模版枚举测试demo##运行结果##反射实现方法...原创 2022-06-09 18:24:21 · 219 阅读 · 0 评论 -
超方便.使用EasyExcel导入excel
背景 说到导出Excel文档,我们一般会想到很多放方式,比如简单的EasyPoi,采用注解的方式,直接导出,使用template模板方式,然后将数据写入模板,将数据转换成Map或是List集合写入Excel。 EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址:https://github.com/alibaba/easyexcel使用demo导入依赖<dependency>原创 2022-05-23 14:07:23 · 518 阅读 · 0 评论 -
JAVA函数套娃的骚操作
JAVA高级函数套娃的骚操作在项目代码中发现一个骚操作,2个高级函数套起来使用,一开始有点迷糊,后来写了个单测跑了下明了了。function的结果作为convertFun的入参 @Test public void test(){ processTemplate((m) -> m + " somthing", (paramA, paramB) -> paramA + paramB); } public <D> void processTemplate(Fu原创 2022-01-25 15:27:51 · 485 阅读 · 0 评论 -
一招教你如何减少本地调试tomcat重启次数,亲测有效
一招教你如何减少本地调试tomcat重启次数当我们进行本地调试的时候,代码做了少量改动,却要重启tomcat。如果项目比较小还行,如果项目比较大这个时候重启tomcat的时间就比较长。下面我说的方法将会让你减少tomcat不必要的重启次数。这次引入的技术为Groovy。在groovy中书写的代码无需重启tomcat,修改之后需需要重新从入口进入就行了什么是GooovyApache Groovy是一种功能强大、可选的类型和动态语言,具有静态键入和静态编译功能,适用于Java平台,旨在通过简洁原创 2022-01-24 15:00:00 · 657 阅读 · 2 评论 -
key-value配对:java Pair<L, R>api使用
key-value配对:java Pair<L, R>api使用当我们在需要返回两种值的情况下可以使用这个api,在核心Java库中可以使用配对(Pair)的实现、Apache Commons。如果原来的项目中jdk低于1.8建议使用Apache Commons这种方法,这样不用动原项目的jdk。Pair类Pair类在javafx.util 包中,类构造函数有两个参数,键及对应值:javafx.util.Pair<Integer, String> pair = new j原创 2021-10-12 18:32:12 · 1276 阅读 · 0 评论 -
记录一个使用lombok的坑(内部类也必须使用@Data注解)
今天做一个测试,一个类中嵌套一个集合类,对最外层的类使用logbok,对内部类没使用。最后导致Json串转java类之后内部类没有属性值。具体如下示例json串{ "displayValue": test", "empty": false, "values": [ { "empty": false, "id": "xxx", "name": "test" } ]}示例代码import lombok.Data;import.原创 2021-09-23 18:08:41 · 5563 阅读 · 2 评论 -
GOF设计模式之创建型模式小结
创建型模式有以下五种工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)工厂模式????????定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。对外部应隐藏内部的复杂实现,调用者只需要关注以那种方式调用产生自己想要的对象。但是每次增加一个产品时,都需要增原创 2021-08-28 19:55:36 · 207 阅读 · 0 评论 -
GOF设计模式之责任链模式(行为型模式)
????责任链模式是什么 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。????责任链模式能干什么 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责原创 2021-08-27 12:12:38 · 233 阅读 · 1 评论 -
【近五千字纯手撸】✨前后一个月面试30家中大型高级、资深java工程师终获500强公司offer心得以及经过
????????一个毕业两年的双非本科的小小程序员的冲击历程,拿到了500强的offer。链接:https://blog.csdn.net/asd1358355022/article/details/119707811前提背景????????当前公司岗位已不足以满足我个人未来规划以及当前的工作已经不满足我的能力提升,故开始找下一份工作。我从7月中旬开始,每天下班开始高强度备战,7月下旬开始窥探当前行情,投递简历。前前后后陆陆续续接到了30来家中大型公司的面试邀约。????????面试范围很广泛原创 2021-08-26 12:58:08 · 6369 阅读 · 11 评论 -
GOF设计模式之代理模式(结构型代理模式)
1、职责清晰:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用2、高扩展性:代理对象可以扩展目标对象的功能3、智能化:代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。...原创 2021-08-25 20:12:51 · 5837 阅读 · 0 评论 -
GOF设计模式之享元模式(结构型代理模式)
相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。原创 2021-08-24 21:29:28 · 5828 阅读 · 0 评论 -
GOF设计模式之外观模式(结构型代理模式)
1、减少系统相互依赖:降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。2、提高灵活性:降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程,因为编译一个子系统不会影响其他的子系统,也不会影响外观对象。3、提高了安全性:对客户屏蔽了子系统组件的内部构造和逻辑。1、不符合开闭原则,增加新的子系统可能需要修改外观类或客户端的源代码(特殊情况下会很麻烦),继承重写都不合适。2、不能很好地限制客户使用子系统类,很容易带来未知风险。...原创 2021-08-23 20:36:43 · 5924 阅读 · 4 评论 -
手写一个有界阻塞队列 ✨每日积累
import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class TestBoundedQueue { public原创 2021-08-22 23:01:30 · 5945 阅读 · 4 评论