- 博客(35)
- 收藏
- 关注
原创 简单通俗理解IO多路复用原理
这种机制使得系统资源使用更加高效,特别是在大量连接但活跃连接较少的场景下(这正是 Redis 的典型使用场景)。在 Linux 系统中,每个网络连接都被抽象为一个文件描述符(fd)。
2025-03-22 15:40:00
376
原创 Java实现隐形水印:零宽度字符的艺术 |防盗必备
今天给大家分享一个超实用的Java技巧!用零宽度字符给文本添加隐形水印,Windows记事本打开完全看不见,太神奇了!这个技术真的超实用!#Java编程 #安全技术 #程序员 #技术分享 #编程技巧 #防盗技术。
2025-03-12 11:02:10
265
原创 设计模式-原型模式
简单来说,原型模式就是"复制"而不是"新建"!它通过复制一个已有对象来创建新对象,而不是通过new关键字实例化。当你需要创建大量相似对象时,这个模式简直是救星!不仅提高性能,还能简化创建过程,太赞了!✨。
2025-03-08 14:30:54
645
原创 什么时候需要 volatile?
可以阻止编译器和 CPU 对指令的重排序。如果某些变量的赋值顺序必须保持严格一致,并不是所有的多线程共享变量都需要。如果一个变量在多个线程间共享,并且。,所以在以下情况下,它是。如果两个线程同时执行。,它们可能会同时读取。如果某个变量在初始化后。如果变量的值需要进行。
2025-03-06 14:02:50
660
原创 connect-timeout、read-timeout、write-timeout区别
超时设置在网络请求中起着至关重要的作用,不同类型的超时(如 连接超时、读超时、写超时)分别对应请求的不同阶段。
2024-11-22 19:03:28
1263
原创 SpringBoot实现国密通信
有些 SSL/TLS 库会在握手时输出所使用的加密算法,检查 A 和 B 项目的启动日志或请求日志,有时可以找到所使用的具体加密算法信息。可以查看项目 B 的服务器证书,确保它确实是基于国密算法生成的(如 SM2 算法)。工具,或直接使用专门的工具,例如一些企业提供的国密证书生成工具。如果服务器证书使用的是 SM2,则通信时双方会使用国密的公私钥来加解密数据。为了使用国密算法,通常需要使用一些支持国密算法的工具来生成证书。在项目 B 中可以使用调试代码来确认使用的密钥对。字段,确保它是国密算法(例如。
2024-11-01 15:02:50
1338
1
原创 为什么TCP(TIME_WAIT)2倍MSL
MSL(最大报文段生存时间)是TCP协议中定义的一个常量,表示TCP报文在网络中存活的最长时间。等待2倍MSL的原因是为了给报文提供足够的时间消失或确认。第一个MSL:等待网络中的FIN和ACK报文到达对方,确保双方完成连接关闭。第二个MSL:等待可能在网络中滞留的所有旧报文完全失效,避免与未来的新连接混淆。TIME_WAIT状态在TCP协议中扮演了确保数据完整性和网络可靠性的角色,通过2倍MSL时间的等待机制,防止ACK丢失以及旧报文干扰新连接。
2024-11-01 11:27:45
877
原创 SpringBoot开启server:compression:enabled(Illegal character ((CTRL-CHAR, code 31)))
的形式发送给客户端。如果客户端没有正确解压缩这些数据,可能会导致解析失败,因为客户端会尝试将压缩的字节流当作普通文本来读取,结果出现序列化异常。即当响应内容的大小达到或超过 1024 字节时,服务器会对该响应内容进行压缩;如果内容小于 1024 字节,则不会启用压缩。通过上述调整,您可以避免由于压缩导致的客户端解析错误。最优方案是确保客户端正确处理 GZIP 响应,避免禁用压缩带来的性能影响。可以优化服务器性能,使压缩只应用于较大的响应内容。开启压缩后,服务器会将响应数据以。
2024-10-31 17:56:13
677
原创 Mybatisplus多表关联分页查询有多种实现方式
这是最常用的方式,通过自定义 SQL 查询可以实现较复杂的关联查询,结合 MyBatis-Plus 的IPage接口,可以实现分页效果。User和Order,我们想查询用户及其对应的订单列表。@Data@Data在UserMapper@DataUserMapper实现方式优点适用场景XML 自定义 SQL灵活性高,可实现复杂的关联查询复杂 SQL 关联查询Wrapper 自定义 SQL灵活性高,支持简单关联查询简单的多表关联查询使用 DTO 与自定义 SQL。
2024-10-29 11:56:11
2927
原创 Received fatal alert: handshake_failure
这个错误信息表明在 SSL/TLS 握手过程中出现了问题,导致握手失败。通过以上具体做法,你可以更有效地排查并解决 SSL/TLS 握手失败的问题。表示在尝试建立安全连接时,服务器或客户端拒绝了握手。通过上述步骤,你可以逐步诊断并解决这个握手失败的问题。
2024-10-24 10:21:33
2527
原创 Openfeign动态设置Headers
创建一个实现接口的拦截器类,该类将负责在请求发送之前添加或修改请求头,并添加签名参数。注意:这个类是放在客户端实现的。// 获取所有请求参数(包括URL和Body中的参数) Map < String , String > params = new HashMap < >();// URL中的参数 if(template . queries()!= null &&!} });
2024-07-24 14:02:23
1152
原创 隐私计算模型理解
一个电子商务网站希望通过机器学习模型来为用户提供个性化商品推荐,以提高用户满意度和销售额。该过程包括模型训练、模型生成、模型部署、推理和预测。通过这个案例,我们展示了一个从模型训练到推理和预测的完整流程。该过程包括数据准备、模型训练、模型保存、模型部署、实时推理和结果分析。通过这些步骤,可以构建一个高效的推荐系统,为用户提供个性化的购物体验。
2024-07-19 11:01:43
402
原创 深入理解Redis Hash数据类型
💡 包含键值对的无序散列表。value 只能是字符串,不能嵌套其他类型。同样是存储字符串,Hash 与 String 的主要区别?1、把所有相关的值聚集到一个 key 中,节省内存空间2、只使用一个 key,减少 key 冲突3、当需要批量获取值的时候,只需要使用一个命令,减少内存/IO/CPU 的消耗Hash 不适合的场景:1、Field 不能单独设置过期时间2、没有 bit 操作3、需要考虑数据量分布的问题(value 值非常大的时候,无法分布到多个节点)hashtable存
2024-06-30 14:33:58
717
原创 深入理解Redis String数据类型
Redis 中字符串的实现。在 3.2 以后的版本中,SDS 又有多种结构(sds.h):sdshdr5、sdshdr8、sdshdr16、sdshdr32、sdshdr64,用于存储不同的长度的字符串,分别代表2^5=32byte。
2024-06-29 18:51:52
1030
原创 MybatisPlus出现Error attempting to get column ‘xxx字段‘ from result set异常
org.springframework.dao.InvalidDataAccessApiUsageException: Error attempting to get column 'state' from result set. Cause: java.sql.SQLFeatureNotSupportedException; null; nested exception is java.sql.SQLFeatureNotSupportedException
2023-08-09 22:49:10
6312
3
原创 SpringBoot GraalVM Native Image Support
GraalVM本机镜像提供了一种部署和运行Java应用程序的新方法。与Java虚拟机相比,本机镜像可以使用更小的内存占用和更快的启动时间来运行。它们非常适合使用容器镜像部署的应用程序。与为JVM编写的传统应用程序不同,GraalVM Native Image应用程序需要提前处理才能创建可执行文件。这种提前处理涉及从应用程序的主要入口点静态分析应用程序代码。GraalVM本机镜像是一个完整的、特定于平台的可执行文件。
2023-08-08 22:54:35
1595
原创 maven集成protobuf插件实现proto文件转换java类文件
在网络通信中大家经常会接触到网络数据传输,然后不同的数据格式在传输中底层格式会有不同的却别。反之,不然以任何什么数据格式都是为了提高传输效率以及节省带宽消耗。常见的传输数据格式有fastjson(alibaba)、xml、protobuf(Google RPC)、hessian(Dubbo RPC)、jackson2(SpringMVC默认)、java原生序列化技术等。那这么多序列化方式我们到底选那种呢,这个就得根据具体的业务常见,框架来决定。
2023-08-03 22:55:08
1533
原创 Git不同网站配置不同ssh秘钥
实现了简单配置github ssh秘钥通信。实现了在同一个本地,不同的github使用不同的秘钥对通信方式。
2023-07-26 15:01:26
643
1
原创 Maven集成Docker插件发布镜像到远程仓库
使用过Docker的同学都清楚,Docker容器是基于镜像Image来运行的。所以我们前提条件是要会熟悉如何制作镜像。制作镜像最简单的方式就是通过Docker自带的。来实现基于源码来实现一键镜像Image发布到远程仓库(Docker Hub、阿里云仓库等)。发布成功之后就可以在仓库上看到自己的镜像了。
2023-07-25 22:02:52
917
原创 如何查看docker容器内部Redis的TCP连接情况
在一次生产环境中偶然发现Redis的连接数特别大,于是很好奇想知道为什么或者具体哪些服务连接了当前Redis。想必大家都会觉得这个问题还是比较简单的,会想起netstat命令。但是因为当时的redis是docker容器部署的方式在宿主机执行怎么也查询不出来。于是开始各种搜索解决方案。实践存在两种方式:(本文推荐第二种方式)第一种docker exec进容器操作第二种使用提示:以下是是第二种方式的操作过程简单分析下这个命令结构:红色部分:nsenter -t 12599 -n为nsenter的执行前缀。
2023-07-18 21:43:58
1481
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人