- 博客(23)
- 收藏
- 关注
原创 JIT即时编译器:Client Compiler 和 Server Compiler
HotSpot JVM 提供了两种 JIT(即时编译)编译器:Client Compiler 和 Server Compiler。这两种编译器的设计目标和优化策略有所不同,主要是为了适应不同的应用场景,分别优化启动时间和运行性能。
2024-12-20 11:19:19
757
原创 引用类型集合的深拷贝,无需手动写循环:Apache Commons Lang (SerializationUtils)
在java中,我们如果想要对引用类型的集合进行深拷贝。Apache Commons Lang 提供了 SerializationUtils 类,可以利用 Java 的序列化机制来进行集合及其元素的深拷贝。通过将集合进行序列化和反序列化,达到深拷贝的效果。
2024-12-13 15:45:52
695
原创 Docker报错:Error response from daemon: conflict: unable to remove repository reference “xxx“
Docker报错:Error response from daemon: conflict: unable to remove repository reference "xxx" - container xxx is using its referenced image xxx 。这个错误是因为你尝试删除镜像 xxx时,发现有一个容器(ID 为 xxx)正在使用该镜像,所以 Docker 拒绝删除镜像,避免破坏该容器的运行状态。
2024-12-12 17:46:36
763
原创 docker build次数过多,导致磁盘内存不足:ERROR: no space left on device
在使用构建镜像时,Docker 会创建一个临时的构建上下文,生成镜像的过程中会产生多个中间层。这些文件和层会占用磁盘空间。构建完成后,如果你没有清理这些不再使用的中间层和临时文件,可能会导致磁盘空间不足。
2024-12-12 17:40:55
746
原创 使用枚举实现单例模式,不会反序列化破坏攻击,不会被反射破坏攻击。(附带枚举单例的简单实现)
在 JDK 8 中,反序列化无法破坏枚举实现的单例模式,主要是由于 Java 枚举类型的设计和Enum类的特殊机制。具体来说,在 Java 的枚举实现中,反序列化的安全性和单例性主要依赖于 Java 的序列化机制以及方法的使用。
2024-12-11 17:17:45
691
原创 JAVA中,Object与泛型的区别,分别在什么时候使用
在Java编程中,Object和 泛型都可以用于处理各种类型的数据,但它们有不同的应用场景和优势。以下是何时使用Object。
2024-12-02 11:06:59
425
原创 有人说:java字符串常量池存储的是使用字面量所创建的字符串,如果使用new String()创建的呢(jdk8),附带intern()方法
字符串常量池只包含字面量字符串和通过intern()方法显式加入的字符串。使用创建的字符串对象不直接从常量池中引用,而是会在堆内存中创建一个新的字符串对象。会将"hello"字符串添加到常量池中,并且返回常量池中对应的"hello"字符串引用。intern()方法:主要用于 --- 在对字符串的循环体中,减少String对象的创建。
2024-11-29 15:35:52
404
原创 class类常量池与运行时常量池的关系(JDK8)
类常量池中的内容(字面量和符号引用)会被读取并保存到运行时常量池中。:对于类常量池中的符号引用(如方法引用、字段引用),JVM 会根据实际的类加载顺序,进行符号解析并将其转化为直接引用,这个过程是在类加载后,运行时常量池中完成的。符号解析阶段:对于类、方法、字段的引用,JVM 会在类加载时通过符号解析的方式,将符号引用转换为直接引用(例如,类的对象或方法的地址等)。运行时常量池的作用是存储程序在运行过程中需要使用的常量,特别是当类加载时遇到的常量,它们会被加载到内存中,供 JVM 在执行时使用。
2024-11-28 15:03:44
424
原创 java抽象类实现接口,缓解普通类实现接口方法的压力,在普通类和接口中间加一层抽象类。附带:模板方法模式举例。
抽象类不仅可以继承另一个类,还可以实现一个或多个接口。实现接口的方式和普通类相似,只是抽象类不需要实现接口中的所有方法,它可以选择只实现部分方法,剩余的方法由具体子类实现。假设你有多个类需要实现一个接口,但是这些类的实现大部分都相似,只有少数方法需要不同的实现。你可以使用一个抽象类来提供共同的实现,子类只需要专注于实现那些特有的方法。,提供代码复用,并且让实现者更加聚焦于实现自己特定的功能,而不是所有的细节。当在普通类和接口之间添加一层抽象类时,可以。
2024-11-27 12:38:36
201
原创 如何理解Java:方法重写的时候,抛出异常不能更多,可以更少。但是运行时异常可以在重写的时候抛出新的异常
受检异常(Checked Exception):子类方法可以抛出比父类方法更少的受检异常,但不能抛出更多的受检异常。运行时异常(Unchecked Exception):子类方法可以抛出新的运行时异常,不受限制。这两个规则保证了程序的可维护性和一致性,遵循了 Liskov 替换原则:在运行时,你应该能够使用父类或子类对象,而不影响程序的正常行为。
2024-11-22 17:49:40
499
原创 WebSocket连接是如何建立的,WebSocket的握手过程。
WebSocket 的连接是基于 HTTP 协议的握手过程建立的,这个过程包括了客户端与服务器之间的一次 HTTP 请求和响应,以便将传统的 HTTP 协议“升级”到 WebSocket 协议。WebSocket 握手的关键在于客户端请求中包含了特殊的头信息,服务器回应确认后,连接才能正式建立。
2024-11-18 12:12:58
709
原创 CLH锁的简单实现
CLH队列锁是一种基于链表的自旋锁,采用类似队列的方式管理线程的排队。该锁的核心思想是通过在每个线程节点中存储锁的状态来确保线程的顺序访问,而不直接依赖于共享的状态。CLH 锁有效减少了线程竞争时的缓存一致性问题。下面是一个简单的 Java 实现,模拟了 CLH 锁的工作原理。
2024-11-15 17:46:46
806
原创 Mysql的全文检索:FULLTEXT索引
MySQL 的 FULLTEXT 索引是专门用于处理文本数据的一个索引类型,它能够加速对长文本字段(如 TEXT 或 VARCHAR 类型字段)的全文搜索。与传统的 B-tree 索引不同,FULLTEXT 索引是基于词条(或标记,token)进行优化的,主要用于匹配文本中的单词或短语。这个索引对于实现快速的文本搜索非常有用,尤其是在大量文本数据中查找特定关键词时。
2024-11-13 17:17:25
1415
原创 JAVA中wait、notify和unpark、park的区别
wait、notify、unpark 和 park 都是多线程编程中用于线程同步和协调的方法,它们在不同的编程语言和库中有不同的实现。这里我们分别讨论 Java 中的 wait 和 notify 以及 Java 中 Lock 相关的 park 和 unpark 方法(来自 java.util.concurrent.locks 包)。
2024-11-11 18:31:23
390
1
原创 413 Request Entity Too Large【解决】
413 Request Entity Too Large是一个 HTTP 错误状态码,表示客户端发送的请求体(通常是上传的文件)超出了服务器允许的最大大小。这个错误通常发生在上传文件时,尤其是当上传的文件比服务器所配置的大小限制还要大时。
2024-11-06 14:33:28
3836
原创 SpringBoot配置文件加密,最简单方式-jasypt。解决:Failed to bind properties under ‘xxx.xxx.xxx’ to java.lang.String
Springboot配置文件加密。在项目安全检测时,不得将敏感信息、用户名密码等直接放到配置文件yml或者properties当中。需要将其加密。
2024-04-02 17:52:10
1649
原创 使用docker安装onlyoffice,以及踩坑记录:安全令牌问题、下载失败问题。
在linux环境下,使用docker安装onlyoffice1、安装docker2、 安装onlyoffice3、启动onlyoffice解释:--restart=always 代表每次启动linux都自动启动该容器的onlyoffice,节省时间--JWT_ENABLED=false 代表不走JWT验证,避免访问onlyoffice造成指令错误问题。
2024-02-26 18:24:07
3731
4
原创 Java整合MinIO文件管理
提示:这里提供一些操作minio的代码,包括(multipartFile、inputstream的操作)。可以直接调用或者加以完善。提示:这里提供上传和下载并且与前端交互的代码。
2024-02-19 16:24:23
1927
1
原创 JAVA解压ZIP文件,并上传到minio。JAVA解压从前端传来的zip文件,踩坑记录。java.lang.IllegalArgumentException: MALFORMED 解决方法等
JAVA解压从前端传来的zip文件,踩坑记录。java.lang.IllegalArgumentException: MALFORMED ,file.delete()无法删除等
2024-01-23 17:23:11
1528
1
原创 Forest:跨服务调用,Http请求工具的简单使用
Forest:一款基于httpClient的跨服务调用工具,简单易用,支持文件等复杂请求,以及所有请求方式。
2023-08-23 18:14:53
780
原创 MybatisPlus在任意搜索条件加括号
在sql语句略微复杂的情况下,例如出现多个and以及多个or,甚至同时存在。应对其进行查询条还能的分类。例如(and...or...or... / (and...or)...or... / (and...(or...or) )
2023-07-31 12:08:44
4170
1
原创 Flowable工作流兼容达梦数据库
首先flowable工作流的源码当中是没有定义达梦驱动、没有指定达梦协议、没有指定达梦端口号的,所以我们要修改flowable相关jar包当中的源码,去定义达梦数据库的一切。链接:https://pan.baidu.com/s/1pqGikT9ta6Z_fyCl2DuOYQ?在替换jar包中class文件的时候,需要使用"360压缩软件"进行打开不会损坏jar包,替换其中.class文件即可。
2023-07-20 15:08:55
1119
8
原创 Java使用POI从Excel读取数据,解决读取到空行问题,并存入数据库。
java使用poi读取Excel数据(单Sheet版),解决在读取过程中读取到空行,导致映射到java实体类的时候为null,解决成功并批量存入到数据库当中。
2023-07-20 13:59:55
5354
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人