- 博客(665)
- 资源 (1)
- 收藏
- 关注
原创 VMware VMDK 文件瘦身全攻略:释放空间,提升性能
VMDK 文件的 "只增不减" 特性源于其存储机制: 动态扩展磁盘会根据数据写入动态分配物理空间, 但删除文件后不会自动回收. 快照, 临时文件, 日志等因素会加剧空间占用. 若直接删除虚拟机配置文件, 实际存储的 VMDK 文件仍会保留.
2025-03-19 22:21:50
403
原创 CopyOnWriteArrayList:写时复制实现的高并发列表
通过写时复制策略,在保证线程安全的同时实现了高效读操作,是解决读多写少并发问题的理想选择。但需注意其内存开销和最终一致性特性,合理设计数据结构与使用场景,才能发挥最大效能。下期预告:并发容器深度解析之的分段锁演进。
2025-03-12 13:23:25
522
原创 Redis Cluster 客户端定位分片全解析:哈希槽与动态路由机制
Redis Cluster客户端通过CRC16哈希槽算法和动态错误重定向实现高效分片路由。掌握和命令,结合客户端库的自动路由能力,可轻松构建分布式Redis应用。
2025-03-09 14:38:36
896
原创 Flowable 概述:轻量级开源工作流引擎的技术解析
Flowable 是基于 Apache 2.0 协议的开源工作流引擎,专注于提供轻量级、高性能的业务流程管理解决方案。它支持完整的 BPMN 2.0 规范,提供从流程建模、执行到监控的全生命周期管理能力。作为 Activiti 项目的分支,Flowable 在保持原有功能的基础上,通过优化架构和社区协作,成为企业级流程管理的首选方案之一。核心特性:客户端Flowable API流程引擎任务服务表单服务数据库三、技术优势与亮点1. 高性能处理执行树优化:基于状态机的流程实例管理批量操作:支持任务批处
2025-03-08 20:15:04
682
原创 Redis 持久化配置:保障数据安全与可恢复性
Redis 提供了两种主要的持久化方式:RDB(Redis Database)和 AOF(Append - Only File),下面分别介绍这两种方式的特点和配置方法。Redis 的持久化机制为我们提供了保障数据安全和可恢复性的重要手段。RDB 持久化适合用于数据恢复速度要求较高、可以容忍一定数据丢失的场景;AOF 持久化则更适合对数据安全性要求较高的场景。在实际应用中,可以根据具体的业务需求,选择合适的持久化方式或同时使用两种方式,以达到最佳的效果。
2025-03-06 21:44:30
1120
原创 Kafka 消息不丢失:全方位保障策略
要确保 Kafka 消息不丢失,需要从生产者、Broker 和消费者三个层面进行综合考虑和配置。生产者通过合理设置确认机制和重试机制,Broker 利用多副本、最小同步副本数和刷盘策略,消费者采用手动提交偏移量和异常处理等方法,全方位保障消息的可靠传输。在实际应用中,需要根据具体的业务场景和性能要求,灵活调整这些配置,以达到消息可靠性和系统性能的平衡。
2025-03-06 09:41:01
761
原创 布隆过滤器原理详解:高效解决大规模数据去重与查询问题
布隆过滤器通过概率模型与哈希技术的结合,在大规模数据处理场景中展现了卓越的性能。尽管存在误判率,但通过合理设计参数和结合业务场景,它能有效解决传统数据结构在空间和效率上的瓶颈问题。在缓存、去重、过滤等场景中,布隆过滤器已成为不可或缺的工具。
2025-03-04 09:51:24
893
原创 深入解析Java虚拟机(JVM)的核心组成
启动类加载器(Bootstrap)、扩展类加载器(Extension)和应用类加载器(Application)三级联动,确保类加载的安全性和唯一性。加载过程分为加载、验证、准备、解析和初始化五个阶段,其中验证阶段通过字节码校验确保程序的合法性,初始化阶段则触发类变量的赋值和静态代码块执行。垃圾回收器(GC)作为执行引擎的重要组成,通过标记-清除、复制、标记-整理等算法回收堆内存,G1、ZGC等新型GC实现低停顿高效回收。本地方法库封装了底层系统调用,如文件操作、网络通信等,拓展了Java的功能边界。
2025-03-03 16:35:35
529
原创 深入剖析 Netty:高性能网络编程框架的奥秘
Netty 还支持用户自定义编解码器,用户可以根据自己的业务需求实现个性化的编解码逻辑,进一步提高系统的性能和灵活性。
2025-02-28 17:04:47
704
原创 Java 并发编程:Fork/Join 框架深度解析与实战
Fork/Join 框架是 Java 并发编程中的高级工具,基于“分而治之”(Divide-and-Conquer)策略设计。该框架特别适合处理可递归分解的问题(如数组求和、快速排序等),能充分利用多核 CPU 的性能优势。Fork/Join 框架通过高效的任务拆分和负载均衡机制,为 Java 开发者提供了强大的并行计算能力。合理使用该框架能显著提升多核环境下的程序性能,但需注意任务粒度控制和线程安全问题。本文深入讲解 Java 7 引入的 Fork/Join 框架,通过分治思想实现任务并行处理。
2025-02-27 10:50:55
803
原创 深度剖析Spring Cloud生态常用组件
Spring Cloud生态中的这些常用组件,各自承担着不同的职责,相互协作,共同构建了强大的微服务架构。服务注册与发现组件确保了微服务之间的相互发现和通信;负载均衡组件提高了系统的性能和可用性;熔断与限流组件保障了系统在面对故障和高并发时的稳定性;网关组件实现了对微服务的统一管理和访问控制;配置管理组件方便了对分布式系统配置的集中管理;远程调用组件简化了微服务之间的通信;分布式追踪组件帮助开发者排查系统问题;消息队列组件实现了微服务之间的异步通信和解耦。
2025-02-26 16:35:53
607
原创 Kafka高性能背后的奥秘:深度剖析其关键技术与设计理念
Kafka的高性能并非偶然,而是其在架构设计、数据存储、消息处理和通信协议等多个方面精心设计和优化的结果。分布式架构提供了强大的扩展性和负载均衡能力,顺序读写和Page Cache等存储技术充分挖掘了磁盘和内存的性能潜力,批量与异步的消息处理策略减少了系统开销,提高了并发性能,而简洁高效的通信协议则确保了数据传输的快速与稳定。这些关键技术的协同作用,使得Kafka能够在大数据和分布式系统领域中脱颖而出,成为处理海量消息和实现高并发应用的首选消息队列。
2025-02-25 13:51:32
458
原创 分享某博主对程序员职业困境的看法
老板朋友认为, 有大局观, 从项目整体考虑的工匠(对应第一个工匠)是公司需要的;普通员工按要求完成工作(第三个工匠)也不错;同时提升沟通, 产品, 表达, 销售等可迁移能力, 以应对如 AI 发展带来的职业变化.老板朋友指出很多技术人员易陷入技术陷阱, 做技术虽需精益求精, 但多数人做的是工程而非科研, 不应只专注技术, 还应关注用户需求和产品销售.他还认为, 在互联网公司中, 技术岗位和保安一样变现能力差, 因为离用户远, 一旦失业很难变现. 程序员接外包更多靠渠道而非技术能力.
2025-02-21 09:24:19
209
原创 提升接口性能之异步
异步编程和消息队列是提升系统性能和响应速度的关键技术. 合理运用 CompletableFuture, async/await 等异步模型, 以及 Kafka, RabbitMQ 等消息队列, 能有效避免线程阻塞, 处理高并发请求, 实现系统的高效稳定运行. 在实际项目中, 需根据业务需求和场景选择合适的技术方案, 以达到最佳优化效果. 随着技术的不断发展, 异步编程和消息队列将在更多领域发挥重要作用, 为开发者提供更多创新的可能.
2025-02-19 10:07:39
530
原创 提升接口性能之缓存
本地缓存适用于减少单个应用内的重复计算和数据库查询, Caffeine 和 Guava Cache 提供了便捷的实现方式. 分布式缓存如 Redis 和 Memcached 则用于缓存全局共享数据, 通过缓存预热和防雪崩策略能有效降低数据库压力. HTTP 缓存则通过控制客户端和 CDN 对静态资源的缓存, 进一步提升了用户访问速度. 合理运用这三种缓存策略, 可以构建出高性能, 高可用的应用系统.
2025-02-18 14:40:06
616
原创 VSCode 实用快捷键
修改位置: 文件 > 首选项 > 键盘快捷方式VSCode 内置的快捷键非常丰富, 另外也支持自定义快捷键, 快快使用起来吧。
2025-02-17 10:19:48
741
原创 更高效实用 vscode 的常用设置
VSCode 各种自定义设置方便我们个性化使用 VSCode, 极大提高文本阅读和编辑效率.下一篇, 会介绍 VSCode 常用快捷键, 鼠标+键盘搭配操作可以更高效地操作文本。
2025-02-14 10:56:48
770
原创 String StringBuilder StringBuffer 区别
String, StringBuilder, StringBuffer 各有使用场景, 按照具体需求, 选择它们使用, 以提高程序的性能和稳定性。
2025-02-12 09:58:28
222
原创 分布式锁有哪些
Redis 和 Zookeeper 都有各自的优势和适用场景。如果项目中没有用到 zookeeper, 那么使用 redis 作为分布式锁, 可以减少中间件依赖, 同时实现分布式锁需求。
2025-02-11 10:00:48
315
原创 联合索引的最左匹配原则
例如 创建 name, age, city 的联合索引, 那么索引生效的条件可以是以下 where 任一情况。联合索引可以理解为多个独立索引(独立索引可能是单字段也可能是多字段)联合索引: 顾名思义就是在多个列上建立的索引。最左匹配原则即是如此. 如果要。
2025-02-07 10:01:05
197
原创 MySQL 索引类型
全文索引: 对文本的内容进行分词, 进行搜索. 目前只有 CHAR, VARCHAR , TEXT 列上可以创建全文索引. 一般不会使用, 效率较低, 通常使用搜索引擎如 ElasticSearch 代替.前缀索引: 对文本的前几个字符创建索引, 相比普通索引建立的数据更小, 因为只取前几个字符.主键索引: 加速查询 + 列值唯一(不可以有 NULL)+ 表中只有一个.联合索引: 多列值组成一个索引, 专门用于组合搜索, 其效率大于索引合并.覆盖索引: 一个索引包含(或者说覆盖)所有需要查询的字段的值.
2025-02-06 10:37:14
313
原创 MySQL 的 binlog 作用
数据写入时, 保证数据的一致性和可恢复性, 顺序依次是。主要用于记录数据修改日志, 数据备份, 主从同步。> 数据真正写入磁盘保存。
2025-02-05 10:53:02
172
原创 https 的 CA证书和电子签名
防公私钥伪造, 因而产生CA机构和CA签名.服务器上传服务器公钥到CA机构, CA机构用CA私钥对服务器公钥生成数字签名客户端通过内置CA根证书, 使用CA公钥验证签名是否正确。
2025-01-21 09:51:12
429
原创 如何以正确方式向AI提问
利用 立角色, 数问题, 定目标, 补要求 的四个方面, 与 AI 对话, 可以提升 AI 的响应质量, 响应出我们想要的风格。
2025-01-20 10:08:56
297
原创 mysql 如何快速删除表数据
在数据库管理中, 经常会遇到需要删除大量数据的情况. 对于 MySQL 数据库而言, 如何高效快速地删除数据是一个值得深入探讨的问题. 本文将详细介绍几种在 MySQL 中快速删除数据的方法及相关注意事项.
2025-01-16 20:33:39
276
原创 windows 如何设置定时任务执行程序
条件: 取消勾选 只有在计算机使用交流电源时才启动此任务。配置后, 每天 0 点, 就会自动执行我们的目标程序。触发器 > 新建 > 每天 0:00。此电脑 > 管理 > 任务计划程序。操作 > 新建 > 选择程序。不管用户是否登录都要运行。......
2022-08-31 02:03:38
6260
原创 zk 是如何解决脑裂问题的
如果两个机房之间网络断开,那么每个机房都需要重新选举leader。这里举例,2个机房,6个节点.每个机房是3个节点。这样就避免出现2个机房2个leader的情况.过半原则超过半数节点选举leader,才会成功.需要注意的是超过半数,并不包含等于半数。zk通过过半原则选举.......
2022-07-21 15:53:52
885
原创 Java 新生代晋升为老年代的四种情况
大内存对象. 当某个对象占用的内存达到阈值时, 可能会被晋升老年代年龄大的对象. 对象年龄达到阈值后, 会被晋升老年代 survivor 区满了, 对象会晋升为老年代. minor gc 后, eden 和 survivor 区会拷贝到另外一个 survivor 区动态年龄. 当某个年龄和以下年龄的对象占比超过 survivor 50%, 那么该年龄及以上的对象会晋升为老年代...
2022-04-01 16:24:11
1629
原创 java 如何调用 shell 命令
我们项目里需要调用本地的 spark-submit 命令, 提交 spark 作业这里举例如何使用 java 执行 shell 命令 /** * 执行并返回状态码 * * @param cmd * @return */ public static int execRetCode(String cmd) { boolean isWindows = System.getProperty("os.name").toLowerCas
2022-03-31 01:17:11
9001
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人