- 博客(128)
- 收藏
- 关注
原创 Java 泛型的用法
泛型类是指在类定义时使用类型参数来指定类的类型。这样可以在类的内部使用这些类型参数来定义字段、方法的返回类型和参数类型。在这个例子中,getFirst 方法使用了一个类型参数 T,可以在调用方法时指定具体的类型。在这个例子中,Box 类使用了一个类型参数 T,可以在创建 Box 对象时指定具体的类型。静态上下文中不能使用类型参数:不能在静态方法或静态初始化块中使用类的类型参数。类型参数不能是 final 类型:不能使用 final 类型作为类型参数。类型参数不能是异常类型:不能使用异常类型作为类型参数。
2025-01-10 09:32:51
682
原创 java中instanceof的作用
4、过度使用instanceof可能导致代码耦合度增加和可维护性降低,因此在设计良好的面向对象程序中,应尽量通过多态和接口来实现行为的差异,而不是频繁使用instanceof进行类型检查。在多态的情况下,instanceof可以帮助你确定对象的实际类型,以便进行相应的处理。在进行类型转换之前,使用instanceof可以确保类型转换是安全的,避免抛出ClassCastException。2、如果左边的对象为null,instanceof的结果总是false,因为null不是任何类的实例。
2025-01-07 14:22:09
234
原创 vue项目上传ofd文件,导致文件类型丢失问题
上传ofd文件,传到java后端,变成了无类型的文件,最后通过排查,发现前端通过vue组件上传的文件,没有文件类型了。将文件内容重新放到一个新的文件中,并且给这个新的文件设置ofd类型。
2025-01-06 11:10:34
276
原创 pgsql判断逗号分割的字符串有两个字符还是三个字符
在这个例子中,你需要将 ‘your_string_here’ 替换为你想要检查的实际字符串。string_to_array 函数将字符串转换为数组, array_length 函数用于获取数组的长度。在 PostgreSQL 中,如果你需要判断一个以逗号分隔的字符串包含两个字符还是三个字符,你可以使用 string_to_array 函数将字符串转换为数组,然后检查数组的长度。在这个查询中, your_column 是包含逗号分隔字符串的列名, your_table 是包含该列的表名。
2024-11-05 08:35:25
476
原创 org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple ty
org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple ty。
2024-10-15 19:25:53
597
原创 mybatisplus和pagehelper分页冲突
选择使用MyBatis-Plus通常是一个更好的选择,因为它提供了更多的功能并且与Spring Boot集成得更好。如果决定使用MyBatis-Plus,就不需要再引入PageHelper。如果选择PageHelper,那么需要确保MyBatis-Plus的分页插件没有被激活,以避免冲突。
2024-09-28 11:43:11
1936
原创 window关闭端口程序
找到对应的进程ID(PID),然后使用 taskkill /F /PID pid_number 来停止该进程。输入 netstat -ano | findstr :8080 来查找使用8080端口的进程。
2024-09-10 08:15:17
235
原创 java和js计算文件的SHA-256哈希值
需要做分片上传,需要在分片合成文件之后校验这个合成的文件是否和上传的一直,具体就是对文件取hash值,于是选择SHA-256取文件哈希值,自己测试之后没问题,特此分享。
2024-09-03 19:10:54
729
1
原创 canal同步es数据到mysql
所以导致在查询id的时候找不到,导致报空指针异常,就很蒙比,我在想会不会是从mysql里面查的不是最新的表结构,重启mysql,重启canal。日志中发现从mysql数据库中查到的内容和mysql的字段没有对应,数据库中的主键是id,但是canal查出来的竟然是article_id。ok啦铁子,没毛病,但是我不能笃定问题在这,于是我有重新创建了es索引和mysql表,然后同步mysql数据到es中。看了官网和网上各种文档都没找到原因,于是就取找canal报错位置的源码,打印内容重新打包,使用这个jar。
2024-08-04 11:43:27
400
原创 若依前后端分离项目无感知刷新token整合
当accessToken过期的时候,会响应401,在前端响应拦截器中拦截到响应结果,然后带着refreshToken去发起请求,根据refreshToken生成新的accessToken返回给前端,再重新执行原请求。1、 首先就是我们登录成功的时候要返回两个token标识给前端,accessToken(权限认证token)和refreshToken(无感刷新token)2、前端将token保存起来。
2024-07-28 14:19:06
1516
原创 mabatis批量查询总耗时问题
在MyBatis框架中,将大量数据的查询合并为一个包含UNION ALL的大查询,理论上可以减少数据库的查询次数,从而提高效率。java的mabatis框架中,我有10万条数据,需要查询数据库10万次,因为返回结果一样,我决定把他们union all 拼起来一起查询,我8000条一次查询,总耗时为什么比5000条一次查询还慢。
2024-07-16 10:40:04
284
原创 ERROR: stack depth limit exceeded HINT: Increase the configuration parameter “max_stack_depth”
检查平台限制:HINT 提醒你,在增加 max_stack_depth 之前,确保你的操作系统或平台的堆栈深度限制是足够的。不同的操作系统可能有不同的堆栈大小限制,如果 PostgreSQL 的设置超过了这个限制,可能会导致问题。使用物化视图或临时表:如果查询涉及到大量的数据和复杂的计算,考虑使用物化视图或临时表来存储中间结果,这样可以减少单个查询的复杂性。有时候,复杂的查询或大量的递归调用可能会导致堆栈深度超出限制。当你看到这条错误信息时,意味着你的查询或事务可能需要比当前设置更多的堆栈空间。
2024-07-16 09:55:34
1074
4
原创 PreparedStatement can have at most 65535 parameters
在 JDBC 中,由于内部实现的限制,PreparedStatement 能够接受的参数个数不能超过 65,535 个。在实现上述任何一种策略之前,请确保你已经测试了它们的性能和效果,以选择最适合你情况的方法。
2024-07-16 09:42:27
796
原创 java.lang.NoSuchMethodError: okhttp3.RequestBody.create()
准备写一个springboot的sdk,经过测试代码没什么问题就打成sdk,给其他项目调用,但是在调用过程中,系统抛异常说这个方法找不到,很纳闷,于是乎查百度、问ai,发现是版本问题;可以把版本退回到3.14.9,或者使用的方法必须是3.14.9版本中有的才行,否则就会报错。
2024-07-12 14:58:35
536
原创 redis命令的底层执行流程
检查缓冲区状态:写入前,Redis 会检查输出缓冲区的状态:如果缓冲区还有足够空间,响应数据会被写入缓冲区。写事件触发:当操作系统缓冲区有足够空间时,epoll 触发写事件,Redis 收到通知后会尝试发送剩余的数据。注册写事件:如果数据没有立即发送,Redis 会注册写事件,以便在操作系统缓冲区有空间时继续发送数据。操作系统缓冲区:数据首先被写入到操作系统的缓冲区,然后由操作系统负责将数据发送到网络。缓冲区满了:如果操作系统的缓冲区已满,Redis 会等待缓冲区有足够空间后再发送数据。
2024-07-08 21:00:43
202
原创 一致性hash
(Consistent Hashing)是一种特殊的哈希算法,它在分布式系统中用于解决节点(如缓存或数据库分片)动态变化时的数据分布问题。一致性哈希由麻省理工学院的Karger和Ruhl提出,主要用于解决缓存分布式中的一些问题。
2024-07-02 21:09:00
282
原创 前后端中的cookie和session
的Set-Cookie响应头后,浏览器会自动保存这个Cookie(只要浏览器设置允许使用Cookie)。对于后续发送到同一域名下的所有请求,浏览器会自动在HTTP请求头中附加这个。这样,服务器就可以识别出这是同一个会话,维持用户的登录状态和会话数据。:当用户成功登录后,服务器会创建一个新的Session(如果之前还没有的话),并生成一个唯一的。实际上,在大多数Web应用中,这个过程通常是自动处理的,不需要手动操作。:因此,在初次登录后,每当用户浏览应用程序的不同页面或发出Ajax请求时,浏览器会自动将。
2024-06-26 22:56:20
660
原创 java单体服务自定义锁名称工具类
同样,释放锁也只是改变锁的状态,使其可以被其他线程获取,这同样是一个轻量级的操作。操作员能够对自己权限下的用户数据进行数据填充,但是不同操作员之间可能会有重复的用户数据,为了避免操作员覆盖数据或者重复操作数据,应该在操作用户数据时加锁,要求加的这一把锁必须是细粒度的锁,不能锁住所有用户的操作 ,只锁当前操作用户,锁的名字为用户id,在获取到锁之后执行业务操作,否则阻塞等待, 这个单体服务锁工具如何设计?确保你的应用程序有适当的机制来管理资源,避免无限制地添加新的锁。
2024-06-12 14:17:26
600
3
原创 sockjs-client和stompjs连接websocket服务被拒绝导致vue项目崩溃问题
3、解决方式:因为当前版本的socketjs内部没有捕捉连接失败抛出的异常,所以最好的解决方式就是对websocket服务器进行健康检查,如果请求服务器有响应说明没挂进行连接,否则就舍弃websocket相关应用,舍车保帅,保证nodejs服务的正常运行。
2024-06-12 09:52:44
806
原创 ConcurrentHashMap 方法的详细介绍
虽然 ConcurrentHashMap 提供了高并发性能,但在极端情况下仍可能遇到性能问题。因此,应合理评估应用场景和并发级别。ConcurrentHashMap 不支持 null 键或值,尝试插入 null 键或值将抛出 NullPointerException。在遍历 ConcurrentHashMap 时,应注意其他线程可能会修改映射,这可能导致遍历过程中出现意外的行为。综上所述,ConcurrentHashMap。
2024-06-06 08:19:10
881
原创 springboot请求中创建对象的被回收的过程
对于定义为请求作用域(@RequestScope 或 @Scope(“request”))的Bean,Spring容器会在每个请求中创建一个新的实例,并在请求结束时销毁这个实例。在控制器(Controller)的方法中,可能会创建一些对象,例如服务(Service)层的实例、数据传输对象(DTO)、命令对象(Command Object)等。请求结束后,请求作用域的Bean被销毁,它们持有的所有引用(包括对请求过程中创建的对象的引用)也会被清除。
2024-06-05 19:49:21
434
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人