- 博客(120)
- 收藏
- 关注
原创 window关闭端口程序
找到对应的进程ID(PID),然后使用 taskkill /F /PID pid_number 来停止该进程。输入 netstat -ano | findstr :8080 来查找使用8080端口的进程。
2024-09-10 08:15:17 184
原创 java和js计算文件的SHA-256哈希值
需要做分片上传,需要在分片合成文件之后校验这个合成的文件是否和上传的一直,具体就是对文件取hash值,于是选择SHA-256取文件哈希值,自己测试之后没问题,特此分享。
2024-09-03 19:10:54 401
原创 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 325
原创 若依前后端分离项目无感知刷新token整合
当accessToken过期的时候,会响应401,在前端响应拦截器中拦截到响应结果,然后带着refreshToken去发起请求,根据refreshToken生成新的accessToken返回给前端,再重新执行原请求。1、 首先就是我们登录成功的时候要返回两个token标识给前端,accessToken(权限认证token)和refreshToken(无感刷新token)2、前端将token保存起来。
2024-07-28 14:19:06 546
原创 mabatis批量查询总耗时问题
在MyBatis框架中,将大量数据的查询合并为一个包含UNION ALL的大查询,理论上可以减少数据库的查询次数,从而提高效率。java的mabatis框架中,我有10万条数据,需要查询数据库10万次,因为返回结果一样,我决定把他们union all 拼起来一起查询,我8000条一次查询,总耗时为什么比5000条一次查询还慢。
2024-07-16 10:40:04 189
原创 ERROR: stack depth limit exceeded HINT: Increase the configuration parameter “max_stack_depth”
检查平台限制:HINT 提醒你,在增加 max_stack_depth 之前,确保你的操作系统或平台的堆栈深度限制是足够的。不同的操作系统可能有不同的堆栈大小限制,如果 PostgreSQL 的设置超过了这个限制,可能会导致问题。使用物化视图或临时表:如果查询涉及到大量的数据和复杂的计算,考虑使用物化视图或临时表来存储中间结果,这样可以减少单个查询的复杂性。有时候,复杂的查询或大量的递归调用可能会导致堆栈深度超出限制。当你看到这条错误信息时,意味着你的查询或事务可能需要比当前设置更多的堆栈空间。
2024-07-16 09:55:34 526 4
原创 PreparedStatement can have at most 65535 parameters
在 JDBC 中,由于内部实现的限制,PreparedStatement 能够接受的参数个数不能超过 65,535 个。在实现上述任何一种策略之前,请确保你已经测试了它们的性能和效果,以选择最适合你情况的方法。
2024-07-16 09:42:27 384
原创 java.lang.NoSuchMethodError: okhttp3.RequestBody.create()
准备写一个springboot的sdk,经过测试代码没什么问题就打成sdk,给其他项目调用,但是在调用过程中,系统抛异常说这个方法找不到,很纳闷,于是乎查百度、问ai,发现是版本问题;可以把版本退回到3.14.9,或者使用的方法必须是3.14.9版本中有的才行,否则就会报错。
2024-07-12 14:58:35 340
原创 redis命令的底层执行流程
检查缓冲区状态:写入前,Redis 会检查输出缓冲区的状态:如果缓冲区还有足够空间,响应数据会被写入缓冲区。写事件触发:当操作系统缓冲区有足够空间时,epoll 触发写事件,Redis 收到通知后会尝试发送剩余的数据。注册写事件:如果数据没有立即发送,Redis 会注册写事件,以便在操作系统缓冲区有空间时继续发送数据。操作系统缓冲区:数据首先被写入到操作系统的缓冲区,然后由操作系统负责将数据发送到网络。缓冲区满了:如果操作系统的缓冲区已满,Redis 会等待缓冲区有足够空间后再发送数据。
2024-07-08 21:00:43 178
原创 一致性hash
(Consistent Hashing)是一种特殊的哈希算法,它在分布式系统中用于解决节点(如缓存或数据库分片)动态变化时的数据分布问题。一致性哈希由麻省理工学院的Karger和Ruhl提出,主要用于解决缓存分布式中的一些问题。
2024-07-02 21:09:00 261
原创 前后端中的cookie和session
的Set-Cookie响应头后,浏览器会自动保存这个Cookie(只要浏览器设置允许使用Cookie)。对于后续发送到同一域名下的所有请求,浏览器会自动在HTTP请求头中附加这个。这样,服务器就可以识别出这是同一个会话,维持用户的登录状态和会话数据。:当用户成功登录后,服务器会创建一个新的Session(如果之前还没有的话),并生成一个唯一的。实际上,在大多数Web应用中,这个过程通常是自动处理的,不需要手动操作。:因此,在初次登录后,每当用户浏览应用程序的不同页面或发出Ajax请求时,浏览器会自动将。
2024-06-26 22:56:20 554
原创 java单体服务自定义锁名称工具类
同样,释放锁也只是改变锁的状态,使其可以被其他线程获取,这同样是一个轻量级的操作。操作员能够对自己权限下的用户数据进行数据填充,但是不同操作员之间可能会有重复的用户数据,为了避免操作员覆盖数据或者重复操作数据,应该在操作用户数据时加锁,要求加的这一把锁必须是细粒度的锁,不能锁住所有用户的操作 ,只锁当前操作用户,锁的名字为用户id,在获取到锁之后执行业务操作,否则阻塞等待, 这个单体服务锁工具如何设计?确保你的应用程序有适当的机制来管理资源,避免无限制地添加新的锁。
2024-06-12 14:17:26 553 3
原创 sockjs-client和stompjs连接websocket服务被拒绝导致vue项目崩溃问题
3、解决方式:因为当前版本的socketjs内部没有捕捉连接失败抛出的异常,所以最好的解决方式就是对websocket服务器进行健康检查,如果请求服务器有响应说明没挂进行连接,否则就舍弃websocket相关应用,舍车保帅,保证nodejs服务的正常运行。
2024-06-12 09:52:44 597
原创 ConcurrentHashMap 方法的详细介绍
虽然 ConcurrentHashMap 提供了高并发性能,但在极端情况下仍可能遇到性能问题。因此,应合理评估应用场景和并发级别。ConcurrentHashMap 不支持 null 键或值,尝试插入 null 键或值将抛出 NullPointerException。在遍历 ConcurrentHashMap 时,应注意其他线程可能会修改映射,这可能导致遍历过程中出现意外的行为。综上所述,ConcurrentHashMap。
2024-06-06 08:19:10 738
原创 springboot请求中创建对象的被回收的过程
对于定义为请求作用域(@RequestScope 或 @Scope(“request”))的Bean,Spring容器会在每个请求中创建一个新的实例,并在请求结束时销毁这个实例。在控制器(Controller)的方法中,可能会创建一些对象,例如服务(Service)层的实例、数据传输对象(DTO)、命令对象(Command Object)等。请求结束后,请求作用域的Bean被销毁,它们持有的所有引用(包括对请求过程中创建的对象的引用)也会被清除。
2024-06-05 19:49:21 337
原创 在Java中,如果使用foreach循环修改List集合中的元素,那么原List中的内容确实会发生变化
如果在foreach循环中对List中的对象进行修改,那么原List中的对象确实会被修改。通过这个引用的副本,可以访问并修改对象的属性,而这些修改会反映到原List中的对象上。:Java中的对象存储在堆内存中,而变量(包括List中的引用)存储在栈内存中。当通过foreach循环修改List中的对象时,实际上是在修改堆中的对象,因此List中对应的引用指向的对象也会被修改。:尽管可以在foreach循环中修改List中的对象,但是不能通过foreach循环来添加或删除List中的元素。
2024-05-16 08:29:55 937
原创 pgsql中如何in数组
这个查询将从表中选择所有id等于1、2或3的行。你可以将数组中的值替换为你的字符串数组。unnest 函数将数组展开为一组行,然后 IN 子句用来匹配这些行。
2024-05-16 08:26:49 636
原创 pgsql的存储过程中$$ 和$dbvis$有什么区别
1、$$:通常用于创建函数或存储过程时,定义PL/pgSQL代码块的开始和结束。这种语法要求在创建函数或存储过程时,将整个PL/pgSQL代码块包含在两个$$符号之间。这是创建函数或存储过程时最常见的用法。2、$dbvis$:是一种特殊的代码块语法,用于DBVIS(数据库可视化)工具中。它允许在代码块中使用特殊的变量引用方式,这些变量在执行期间会被替换为实际值。这种语法主要用于DBVIS工具中的动态SQL执行,不是标准的PL/pgSQL代码块定义方式。
2024-05-15 09:31:01 434
原创 pgsql执行动态sql语句的存储过程
上述代码创建了一个名为get_employee_details的存储过程,该过程接受一个参数:p_employee_id表示员工ID。存储过程返回一个表,包含员工的详细信息,包括员工ID、名字、姓氏和部门名称。**
2024-05-15 09:24:32 640
原创 vue组件循环依赖
在这种情况下,虽然它们循环引用,但只要它们不是在创建时就相互引用(例如在created或mounted钩子中),通常不会有问题。Vue的响应式系统会确保只有在实际需要时才渲染相关组件。2、解决方式:使用异步注册。
2024-05-11 08:45:03 433
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人