- 博客(25)
- 收藏
- 关注
原创 kafka多种通信方案总结
Kafka安全体系采用三层架构设计:传输加密(TLS/SSL)、身份认证(SSL证书/SASL机制)和权限授权(ACL)。主流认证方案包括SASL_SCRAM(挑战应答模式)、SASL_GSSAPI(Kerberos)和双向TLS,生产环境必须禁用明文协议。最佳实践推荐:中小团队使用SASL_SSL+SCRAM-SHA-256,大型企业采用SASL_SSL+GSSAPI,云环境选择SASL_SSL+OAUTHBEARER。安全配置核心是正确组合security.protocol协议类型,并配合ACL实现细粒
2026-02-02 15:04:33
855
原创 通过实际场景解释ThreadLocal的线程隔离特性
ThreadLocal 是一种实现线程变量隔离的工具,它允许不同线程访问同一变量时拥有各自独立的副本。典型应用场景包括数据库连接管理和用户信息传递。 在数据库连接场景中,ThreadLocal 确保同一线程复用同一个连接,不同线程的连接相互隔离,避免资源争抢,使用后必须调用remove()防止内存泄漏。 在用户信息传递场景中,ThreadLocal 可在Web请求处理过程中(如拦截器到业务层)存储用户上下文,实现跨组件免参数传递,同样需要在请求结束后清理ThreadLocal。 核心优势是线程隔离性和代码简
2026-01-06 16:04:55
853
原创 Java加解密相关的各种名词的含义,各种分类的算法及特点
Java 加解密是信息安全的核心,涉及大量专业名词和算法分类,理解这些概念是实现数据加密、签名、验签的基础。
2025-12-17 15:43:27
556
原创 数字签名为什么不直接使用非对称加密算法而要配合使用哈希算法的原因
非对称加密算法(如最经典的“教科书RSA”)在数学上有其固有的特性和限制。如果直接对原始消息进行签名(即用私钥加密消息本身),那么消息本身的数学属性可能会与签名算法的数学结构发生危险的相互作用,从而导致漏洞。一个简化的危险案例(基于RSA的属性):RSA有一个著名的乘法同态性质:如果 RSA-Sign(m1) = m1^d mod n 且 RSA-Sign(m2) = m2^d mod n。
2025-12-16 14:16:36
510
原创 哈希(hash)算法使用特点及常见疑问解答
哈希算法是一种(消息)(哈希值,或称摘要)的数学函数。哈希算法在设计上是单向的,一般也不用于还原加密后的内容,多数场景式使用哈希算法是为了验证消息的完整性(消息是否被篡改)。如果是想用于加解密可以使用专用于加解密的非对称密钥算法。
2025-12-16 11:25:02
726
原创 Java的自旋
摘要:自旋是线程通过循环主动检查条件而非阻塞等待的机制,在Java中主要用于性能优化。典型应用包括:1)原子类的CAS操作(如AtomicInteger)通过自旋重试;2)锁机制(如ReentrantLock)在获取锁时先自旋尝试;3)线程池核心线程自旋等待任务。高性能框架(如Disruptor)提供不同自旋策略(纯自旋/让步/睡眠)以适应场景需求。开发者应避免手动编写无限自旋(会导致CPU 100%),而应使用JDK内置的优化实现,仅在短等待、低延迟场景合理应用自旋机制。
2025-11-07 15:49:21
789
原创 Java NIO流的Buffer、Channel和Selecter与传统BIO的对比
Java NIO核心机制通过Buffer、Channel和Selector实现高效IO操作。Buffer作为数据容器,提供内存缓存区域;Channel作为双向传输通道,连接数据源和Buffer;Selector实现单线程管理多通道。相比传统BIO,NIO采用面向缓冲区+非阻塞模式,支持高并发和大文件传输。Buffer通过position、limit等属性控制读写状态,需配合flip()等方法切换模式。Channel必须与Buffer协同工作,常见实现包括FileChannel和SocketChannel等。
2025-11-07 15:00:13
2206
原创 阻塞IO和非阻塞IO
摘要:BIO(阻塞IO)和NIO(非阻塞IO)的核心区别在于线程处理方式。BIO在数据未就绪时线程会被挂起,造成资源浪费;而NIO通过非阻塞通道和Selector机制,使线程在数据未就绪时可处理其他任务,仅对有数据的通道进行IO操作。这种设计让NIO能用更少线程处理更多连接,显著提升吞吐量。Netty等高性能框架正是基于NIO这一优势构建的。(149字)
2025-11-06 14:52:27
424
原创 kafka核心组件关系和常用命令总结
本文介绍了Apache Kafka的核心概念与常用操作命令。Kafka作为分布式流处理平台,其核心组件包括Producer、Consumer、Topic、Partition等,支持高吞吐、低延迟的消息传递。文章详细说明了主题管理(创建/删除/修改)、消息生产消费、消费者组管理等相关命令行操作,并解释了消费者组与主题间的关系(如分区分配规则)。此外,还提供了性能测试、日志查看等实用命令,为Kafka的日常运维和问题排查提供了实用参考指南。
2025-07-31 10:58:45
714
原创 脚本通过read命令更安全的接收参数
当高安全开发场景,我们需要尽量保证保证系统的安全性,信息的保密性。当需要对脚本传参时应避免直接传参,选择read交互式方式传参更加安全
2025-05-09 17:12:48
391
原创 加解密技术常见名词含义
加解密技术我认为入门时最不好理解的就是各种名词的含义,其实在你学习一个新的技术时,对各种基本名词的认知是很重要的,这就像基石。
2024-09-24 13:39:47
505
原创 Maven通过指令引入依赖时跳过测试用的依赖
发现了一个很好用的maven指令,尤其是在内网开发时,能去除很多麻烦,节省时间,而且跳过测试用的依赖,对项目正常发布启动是没有影响的。
2024-09-14 10:49:35
301
2
原创 使用itextpdf添加图片时,报错 is not a recognized imageformat. 及源码简单分析
使用itextpdf添加图片时,报错 is not a recognized imageformat. 及源码简单分析
2023-06-12 16:51:14
3947
4
原创 javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V异常及解决办法-idea中jar包冲突解决方法
javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V异常及解决办法--idea中jar包冲突解决方法
2023-06-07 15:43:53
1620
1
原创 MySQL 通过information_schema.tables查询数据库的表信息
MySQL 通过information_schema.tables查询数据库的表信息
2023-05-12 16:07:11
2647
原创 springboot项目多环境配置及常见配置名的含义
我们在进行项目开发时,经常同一个应用需要在不同环境下开发、测试、使用,一般都是数据库地址、服务端口号不同。但是全都放在一个配置文件中显然不合适,此时就需要多环境配置了。
2023-03-14 10:59:29
1142
原创 使用VMware Workstations新建虚拟机时,报“无法创建新虚拟机: 不具备执行此操作的权限。”错误
今天在新建虚拟机时突然报了一个“**无法创建新虚拟机: 不具备执行此操作的权限。**”的错误
2023-03-10 10:33:07
9614
7
原创 idea从插件市场或者外部插件库导入插件的方式
我们平时在使用idea进行开发时,会用到一些插件来辅助开发或增强某些功能。选好合适的插件能帮助我们提高开发效率,事半功倍。以下两种方式,后一种方式主要在插件市场无法联网或者某些插件在一些idea版本中搜索不到的情况下会用到。
2023-02-23 14:29:16
25067
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅