- 博客(23)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注
原创 从电子管到量子计算:计算机技术的四次跃迁与未来展望
一、计算机技术演化的历史脉络1.1 电子管时代(1946-1957):巨型机的诞生与科学计算启蒙20 世纪 40 年代,世界局势风云变幻,第二次世界大战激战正酣,军事上对高速计算的需求如饥似渴。就在这样的背景下,1946 年,世界首台通用电子计算机 ENIAC(Electronic Numerical Integrator And Computer)在美国宾夕法尼亚大学诞生,宛如一颗璀璨新星划破计算领域的夜空。它的诞生标志着电子计算机时代的正式开启,彻底改变了人类计算的方式。ENIAC 堪称一个庞然
2025-03-28 09:50:42
651
原创 垃圾回收算法深度解析:核心原理、技术演进与性能优化实践
垃圾回收(Garbage Collection, GC)是自动内存管理的核心技术,用于回收程序中不再使用的内存。
2025-03-27 13:52:15
759
原创 Spring Boot 与 Spring MVC 区别
Spring Boot 和 Spring MVC 是 Spring 生态中两个不同层级的组件,。
2025-03-27 13:25:29
825
原创 高并发场景下MQ消息去重技术实现:基于TCC事务补偿与BloomFilter的联合优化策略
实际应用中需根据业务场景选择组合方案(如高频场景用Redis去重,复杂事务用分布式锁),同时结合监控和告警机制,确保消息系统的最终一致性。当消息处理需要调用外部服务(如支付接口)时,需确保接口的幂等性。通过唯一标识(如消息ID)判断消息是否已被处理,避免重复消费。通过锁机制确保同一时刻只有一个消费者能处理某条消息。同一操作执行多次的结果与执行一次的结果一致。避免MQ重复消费的核心在于:。
2025-03-26 17:17:58
627
原创 用Java LRU缓存实现
以下是一个完整的 ,包含详细注释,帮助理解每个模块的设计思路和实现细节:/*** LRU缓存实现(Least Recently Used)* 核心思想:当缓存容量满时,优先淘汰最久未被访问的数据* 实现方式:双向链表维护访问顺序 + 哈希表实现快速查询*//*** 双向链表节点定义* - key: 用于在哈希表中快速定位节点* - value:存储的实际数据* - prev: 前驱节点指针* - next: 后继节点指针*/int key;
2025-03-26 16:44:19
710
原创 主流分布式中间件深度解析:核心功能、应用场景与选型指南
以下是对常见分布式中间件的更详细说明,包括其核心功能、适用场景、优缺点对比以及典型案例,帮助您更全面地理解它们的作用和差异。
2025-03-26 16:32:58
605
原创 消息队列的使用场景、消息重发策略与有序性保证
故障处理:消费者故障时,需确保新消费者从正确位置继续消费(如Kafka的偏移量提交)。同一Topic的单个分区内消息有序,需将需保序的消息发送到同一分区(通过Key哈希)。事务消息选RocketMQ。同一MessageQueue(队列)的消息顺序消费,需保证消息发送到同一队列。RocketMQ支持事务消息:生产者发送半消息,本地事务提交后消息才可见。局部有序:同一业务ID(如订单ID)的消息按顺序处理(实际常用方案)。全局有序:所有消息严格按发送顺序消费(性能低,仅适用于单分区场景)。
2025-03-26 15:57:01
598
原创 动态代理机制详解:JDK与CGLib对比及实现原理
动态代理是一种在运行时动态生成代理对象的技术,用于在不修改原始类代码的前提下,扩展或控制其行为。以下是动态代理的主要实现方式、核心区别及CGLib实现原理的整合分析。一、动态代理的主要实现方式。
2025-03-26 15:45:04
1646
原创 Java反射机制:核心原理与类实例创建的三种方式详解
/ 调用有参构造器。获取Class对象方式 Class.forName("类名") classLoader.loadClass("类名")关键方法:Class.forName()、ClassLoader.loadClass() 用于获取Class对象。行为 Class.forName() ClassLoader.loadClass()。// 调用无参构造器。当类被加载到JVM时,会生成一个唯一的Class对象,包含类的完整结构信息(字段、方法、构造器等)。
2025-03-26 15:33:44
555
原创 IO模型有哪些,分析nio和bio,aio的区别
在编程中,I/O模型(输入/输出模型)是指一个程序在执行输入输出操作时的工作方式。不同的I/O模型会影响程序的性能和响应性。主要有以下几种I/O模型::总结来说,NIO、BIO、AIO三种I/O模型各有优缺点,适用于不同的场景。在选择使用哪种模型时,需要根据具体的应用需求和性能要求来决定。以下是一个更详细的 。
2025-03-26 15:22:45
540
原创 Java 8中,ConcurrentHashMap放弃了分段锁机制
然而,新的机制也存在一些潜在的问题和挑战,如读写锁竞争和内存占用等。因此,在使用ConcurrentHashMap时,需要根据具体场景来评估其适用性和性能表现。综上所述,Java 8对ConcurrentHashMap的改进是为了提高并发性能和简化实现,这一改变在大多数情况下都能带来更好的性能表现。
2025-03-26 15:18:45
274
原创 Java 中常用 Map 类的详细对比、线程安全性分析、并发场景下的使用建议,以及内部原理的总结
ConcurrentHashMap 无序 不允许 是 分段锁(Java 7)或 CAS + synchronized(Java 8) 高并发场景。CAS + synchronized(Java 8):采用更细粒度的锁(对单个链表或红黑树节点加锁),减少锁竞争。高并发性能:相比 Hashtable(全局锁),ConcurrentHashMap 的并发度更高。分段锁机制(Java 7):将数据分成多个段(Segment),每个段独立加锁,提高并发度。树化条件:链表长度 ≥ 8 时,链表转为红黑树;
2025-03-26 15:16:39
445
原创 Java类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据
这种顺序保证了在子类构造函数执行之前,父类的静态和实例数据已经被正确初始化。:首先加载所有父类的静态数据。静态数据在程序启动时加载,并且只加载一次。:接下来,创建父类的实例,包括父类的实例数据(字段)和实例构造函数。:最后,创建子类的实例,包括子类的实例数据(字段)和实例构造函数。:然后加载子类的静态数据。
2025-03-26 15:15:38
129
原创 String 类能被继承吗?String,StringBuffer,StringBuilder 的区别
不可变性:String 类是不可变的,这意味着每次对 String 对象进行修改操作(例如 concat、replace 等)时,都会创建一个新的 String 对象。线程安全:StringBuffer 内部的方法是通过 synchronized 关键字同步的,因此是线程安全的。可变性:StringBuffer 类是可变的,可以在原有字符串基础上进行修改,不会创建新的对象。安全性:不可变的 String 对象使得字符串在程序中的安全性更高,防止了潜在的恶意修改。
2025-03-26 15:12:54
150
自然语言汉字处理中的汉字结构分类
2018-03-09
DB2安装后出现的问题
2011-11-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人