自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 资源 (7)
  • 收藏
  • 关注

原创 ASM Opcodes 完整属性详解

Opcodes 类是 ASM 库中的常量定义类,包含了所有 Java 字节码操作码、访问标志、版本号等常量。这些常量用于在字节码级别操作和生成 Java 类。

2025-11-09 22:16:50 1002

原创 Java中的BigInteger

BigInteger解决了Java中​​超大整数计算​​的刚性需求,尤其在密码学、金融等场景不可替代。

2025-07-16 19:57:31 1001

原创 Java中的RecursiveTask

RecursiveTask是Java Fork/Join框架中用于处理可分解且需返回结果的并行任务的核心类。它通过分治策略将大任务递归拆分为子任务,利用工作窃取算法优化多核CPU利用率,适用于计算密集型操作如数值统计、排序等。使用时需设置合理阈值,确保任务独立性和轻量级结果合并,避免I/O操作和任务依赖。相比串行执行,它在亿级数据计算中可提升5-10倍性能,但不适合I/O密集或存在依赖的场景,此类情况建议改用CompletableFuture等方案。

2025-06-29 11:30:00 1691

原创 Java中的RecursiveAction

RecursiveAction是Java并发包中继承自ForkJoinTask的类,专为无返回值的可分治任务设计。其核心原理包括分治策略和工作窃取算法,通过ForkJoinPool管理线程池实现高效并行处理。使用时需继承RecursiveAction并重写compute()方法,合理设置任务拆分阈值。该工具适用于数据并行处理、分治算法等计算密集型场景,但不适合I/O密集或需结果聚合的任务。优化建议包括动态调整阈值、避免阻塞操作及优先使用invokeAll()。

2025-06-29 09:00:00 818

原创 Java中的Phaser

摘要: Phaser是Java并发库中的高级同步工具,支持多阶段任务协调与动态线程管理。其核心特性包括:1)分阶段同步机制,线程需同步后才能进入下一阶段;2)运行时动态调整参与者数量;3)可自定义阶段回调(如数据汇总)。相比CyclicBarrier和CountDownLatch,Phaser更适用于复杂场景(如多阶段并行计算、动态任务流水线),但学习成本较高。典型应用包括分治算法、游戏回合同步和批量数据处理。开发者需权衡其灵活性带来的性能开销,避免在简单场景中使用。

2025-06-28 09:00:00 881

原创 Java中的StampedLock

StampedLock是Java8引入的高性能读写锁,特别优化读多写少场景。它提供三种锁模式:独占写锁、共享悲观读锁和无锁乐观读,通过票据机制实现数据一致性验证。相比传统读写锁,StampedLock在读写性能上有显著提升,支持锁升级/降级,但不支持重入和条件变量。最佳适用场景包括缓存系统、配置管理等读密集型应用,而写频繁或需要条件变量的场景则不推荐使用。使用时需注意票据管理、乐观读验证和锁升级风险,以充分发挥其性能优势。

2025-06-27 08:30:00 961

原创 Java中的Exchanger

Java的Exchanger是一个用于双线程间双向数据交换的同步工具,通过配对点实现数据互换。其核心采用CAS和Arena模式处理线程竞争,支持泛型数据交换和超时控制。典型应用场景包括生产者-消费者缓冲交换、遗传算法等双线程协作。优点是轻量高效,但仅限两线程使用,需注意线程安全和超时处理。在多线程场景应改用其他同步工具。最佳实践是在严格双线程协作且数据交换频繁的场景中使用,结合缓冲区复用提升性能。

2025-06-26 08:30:00 752

原创 Java中的ReentrantReadWriteLock

摘要: ReentrantReadWriteLock是Java提供的读写分离锁,适合读多写少场景。读锁允许多线程并发读取(读读共享),写锁独占且互斥(读写/写写互斥)。核心特性包括重入性、公平性选择和锁降级(避免写后脏读)。使用时需注意:非公平锁默认更高吞吐,写操作应短促,严禁读锁升级(易死锁)。替代方案中,StampedLock适合读写均衡,ConcurrentHashMap适用于高并发集合。最佳实践包括锁降级保证数据安全,监控锁竞争优化性能。本文详解其AQS实现原理及典型应用场景(如缓存系统)。 (15

2025-06-25 08:30:00 591

原创 国密算法SM1、SM2、SM3、SM4介绍

密算法是由国家密码管理局发布的一系列国产商用密码标准算法

2025-06-24 11:12:33 5626

原创 聊聊线程池的拒绝策略

Java线程池拒绝策略全面解析:内置策略包括AbortPolicy(抛出异常)、CallerRunsPolicy(调用者执行)、DiscardPolicy(静默丢弃)和DiscardOldestPolicy(丢弃旧任务),各有适用场景。自定义策略可通过异步重试队列、任务持久化或结合流控框架实现弹性处理。最佳实践需根据业务容忍度选择策略,关键系统建议持久化+告警,高并发场景推荐异步重试+限流。核心原则是宁可优雅降级也不让系统崩溃,实际案例证明合理策略可将订单丢失率显著降低。

2025-06-24 10:00:00 1801

原创 Java中的Semaphore

Java中的Semaphore是控制并发资源访问的关键工具,采用许可证机制实现流量限制。它基于AQS共享锁模式实现,支持公平与非公平两种获取方式,并提供acquire/release等核心操作。典型应用场景包括连接池管理、API限流和硬件资源共享。使用时需注意许可证泄漏问题,建议在finally块中释放许可。Semaphore特别适合读多写少的高并发场景,能有效提升系统稳定性,但需合理设置许可证数量并避免嵌套死锁。

2025-06-24 08:30:00 2445

原创 Java中的CopyOnWriteArrayList

CopyOnWriteArrayList是Java并发包中基于写时复制机制的线程安全列表,适用于读多写少的高并发场景。其核心原理是写操作时复制新数组进行修改,读操作无锁直接访问。主要特点包括读高性能、线程安全和迭代安全,典型用于事件监听器、配置管理等低频写入场景。优点是无锁读取高效,缺点是写操作开销大且内存占用高。使用时应控制数据量,避免频繁写入和大列表操作。该结构适合允许弱一致性的高读取场景,但写频繁时应选择其他并发容器。

2025-06-23 21:49:19 1122

原创 进程与线程

进程与线程是操作系统实现并发的核心概念。进程是资源分配的基本单位,拥有独立内存空间和系统资源,隔离性强但开销大;线程是CPU调度的基本单位,共享进程资源,开销小但隔离性弱。关键区别在于:进程间需要IPC通信,线程可直接共享内存(需同步)。进程切换涉及地址空间保存(微秒级),线程仅需保存栈和寄存器(纳秒级)。实际应用中,高隔离需求(如安全沙箱)选择进程,高并发任务(如Web服务器)选择线程。开发时需注意线程同步和进程IPC优化问题。

2025-06-23 21:44:52 995

原创 偏向锁撤销为什么会触发STW?

摘要:偏向锁撤销触发STW的根本原因是需保证内存一致性和线程状态确定性。当多线程竞争时,JVM必须暂停持有线程判断同步块状态并修改对象头标记,该操作只能在全局安全点执行以避免数据冲突。虽然单次撤销仅微秒级耗时,但高并发场景会导致显著性能下降。优化方案包括禁用偏向锁(-XX:-UseBiasedLocking)、监控安全点日志或升级JDK(15+默认关闭,18+已移除该机制)。建议高并发系统直接使用轻量级锁或并发工具类规避STW影响。(149字)

2025-06-22 21:25:17 797

原创 Java中的STW(Stop-The-World)

STW(Stop-The-World)是JVM执行关键操作时暂停所有应用线程的机制,主要触发于GC、JIT优化等场景。传统GC带来的STW可达数百毫秒,严重影响系统响应。现代解决方案包括:1)采用ZGC/Shenandoah等低延迟GC实现亚毫秒级暂停;2)调优JVM参数(禁用偏向锁、固定堆大小);3)代码层减少对象分配。监控方面可通过安全点日志分析STW原因,典型优化案例包括处理偏向锁撤销和长循环问题。未来Project Lilliput有望将STW降至微秒级。高并发系

2025-06-22 21:22:35 950

原创 Java中的ReentrantLock和synchronized

本文对比Java两种锁机制的核心差异、用法及适用场景。synchronized是JVM内置关键字,自动管理锁,适合简单同步和低竞争场景。ReentrantLock为JDK实现,提供高级功能如可中断、超时、公平锁及多条件变量,适合高并发复杂场景。

2025-06-22 21:15:21 865

原创 Java中的Collections.synchronizedMap

摘要:Collections.synchronizedMap()是Java中创建线程安全Map的简易方案,通过包装器模式实现全局锁机制,确保基础操作原子性。适用于低并发场景和遗留系统改造,但高并发时存在性能瓶颈。相比Hashtable更灵活,但需手动同步复合操作和迭代。核心优势是快速实现线程安全,但高并发场景推荐使用ConcurrentHashMap。典型应用包括配置缓存等读多写少的场景。(149字)

2025-06-22 15:43:45 1111

原创 Java中的ConcurrentHashMap

ConcurrentHashMap 是 Java 并发包(java.util.concurrent)中​​线程安全的哈希表实现​​,专为高并发场景设计,在保证线程安全的同时显著提升性能。

2025-06-22 15:40:32 900

原创 Java中的CyclicBarrier

Java中的CyclicBarrier:多线程协同屏障工具 CyclicBarrier是Java并发包中的同步工具,用于协调一组线程在屏障点同步。其核心特性包括: 循环使用:屏障可重复触发,自动重置计数器。 屏障动作:支持在所有线程到达后执行自定义任务。 线程阻塞:调用await()的线程会等待其他线程到达。 与CountDownLatch相比,CyclicBarrier可重用且支持屏障动作,适用于多阶段并行计算(如数据分片处理)、并发测试及分布式任务协调。底层基于ReentrantLock和Conditi

2025-06-21 17:13:59 710

原创 Java中的CountDownLatch

《Java CountDownLatch深度解析与企业应用》 摘要:CountDownLatch是Java并发包中的核心同步工具,采用计数器机制协调多线程执行顺序。其核心特性包括:初始化指定计数、原子性递减的countDown()、阻塞等待的await(),基于AQS实现无锁设计。企业级应用场景主要覆盖:1)微服务启动协调,等待依赖服务就绪;2)电商数据聚合,并行调用多服务后渲染页面;3)分布式任务分治,批量处理后的结果汇总。使用时需注意其一次性特性(不可重置),建议配合超时控制与异常处理。相比Cyclic

2025-06-21 17:09:17 1084

原创 偏向锁是否一定比自旋锁效率高?

【摘要】Java中偏向锁与自旋锁的效率取决于应用场景。偏向锁在单线程独占时性能最优(接近零开销),而自旋锁更适合短时低竞争场景(避免偏向锁的STW撤销)。高并发时两者均劣于重量级锁。实测显示:单线程下偏向锁比自旋锁快10倍,双线程交替时自旋锁快75%。优化建议根据竞争程度选择锁机制,可通过JVM参数调整或禁用特定锁类型。关键结论:无竞争用偏向锁,低竞争用自旋锁,高竞争需升级锁策略。(149字)

2025-06-21 13:59:27 329

原创 为什么有自旋锁还需要重量级锁?

自旋锁和重量级锁是并发编程中互补的两种同步机制。自旋锁通过忙等待实现低延迟,适用于短临界区操作和多核低竞争场景,但会消耗CPU资源;重量级锁通过线程阻塞节省CPU,适合高竞争或长时间操作。现代系统(如JVM)采用锁升级策略动态切换两者:无竞争时用偏向锁,低竞争时尝试自旋,高竞争时升级为重量级锁。这种分层设计平衡了响应速度与系统吞吐量,如同"快刀"与"重锤"协同工作,适应不同并发场景的需求。开发者需根据业务特点合理选择同步机制。

2025-06-21 13:56:09 900

原创 自旋锁什么时候升级为重量级锁?

Java中synchronized锁的自旋锁升级为重量级锁的条件主要包括:自旋次数超过默认10次阈值(可调整)、自旋线程数超过CPU核心数一半、锁持有时间过长或重入竞争加剧。升级后锁机制改为操作系统互斥锁,线程从自旋变为阻塞状态,但不可逆。优化建议包括:缩小同步代码块范围、使用读写锁替代方案、调整JVM参数。本质上这是对CPU资源浪费与线程阻塞开销的权衡,需根据具体场景选择优化策略。

2025-06-21 13:47:36 440

原创 Java中锁重入实现原理

Java锁重入机制对比:偏向锁通过线程ID匹配实现零成本重入;轻量级锁利用栈帧LockRecord链隐式计数,适用于低竞争场景;重量级锁通过Monitor递归计数器实现,适合高并发但开销较大。三者分别针对单线程独占、低竞争短任务和高竞争长任务场景设计,其中锁升级不可逆。最佳实践建议根据具体场景选择合适锁机制,或通过禁用偏向锁、减小锁粒度优化性能。

2025-06-21 13:32:34 701

原创 StringBuffer和StringBuilder

StringBuffer和StringBuilder都是Java中处理可变字符串的类,主要区别在于线程安全性。StringBuffer的方法使用synchronized修饰,适合多线程环境;StringBuilder无同步机制,单线程下性能更高(测试显示速度可达StringBuffer的2倍)。建议:单线程优先使用StringBuilder,特别是循环拼接、动态SQL等场景;多线程才选择StringBuffer。注意预设容量可优化性能,避免直接使用String拼接。

2025-06-21 13:09:56 939

原创 Java中的synchronized

Java的synchronized关键字是解决多线程并发问题的核心机制,主要实现线程互斥、内存可见性和有序性。其底层通过对象头的MarkWord和Monitor管程实现,JDK6后引入偏向锁、轻量级锁和重量级锁的升级机制以优化性能。编译器和代码层可通过锁消除、锁粗化、减小锁粒度等措施进一步提升效率。相比ReentrantLock,synchronized更简单但功能有限,适用于低竞争场景。使用时需注意死锁风险、锁对象混淆等问题,在高并发场景可考虑替代方案。合理使用synchronized能有效构建线程安全的

2025-06-21 13:04:54 810

原创 join与CountDownLatch和CyclicBarrier

在高并发场景下,Java的Thread.join()方法因其灵活性不足、功能单一和性能问题,逐渐被java.util.concurrent包中的CountDownLatch和CyclicBarrier替代。

2025-06-21 10:23:52 912

原创 Java中wait和join方法

Java多线程编程中,wait()和join()都是线程协作方法,但存在关键差异:wait()是Object类方法,需在同步块中调用并释放锁,依赖手动通知唤醒,用于线程间条件协作;join()是Thread类方法,无需同步上下文,通过隐式唤醒实现线程顺序控制,常用于主线程等待子线程结束。join()底层利用wait()机制实现,当目标线程结束时自动唤醒。使用场景方面,wait()适用于生产者-消费者等条件协作模型,join()适用于线程执行顺序控制。注意事项包括避免死锁、处理中断及考虑更现代的并发工具替代方

2025-06-21 10:19:20 770 1

原创 Java中的锁升级过程

Java锁升级机制是JVM对synchronized的优化策略,通过无锁→偏向锁→轻量级锁→重量级锁的不可逆升级路径,动态适应不同竞争强度。偏向锁优化单线程重复访问,轻量级锁通过CAS自旋应对低竞争,重量级锁则处理高竞争场景。开发中需合理设计同步块,减少临界区长度,并监控锁状态。该机制在保证线程安全的同时最大化性能,但需注意偏向锁延迟启用和重量级锁不可降级等特性。理解锁升级有助于定位并发瓶颈和优化同步策略。

2025-06-21 10:02:35 1344

原创 常用公私钥格式解释

公钥常用格式包括PEM(带标记的文本)、DER(二进制)、Base64(纯编码)和SSH格式(带算法前缀)。PEM包含Base64编码的DER数据,适合配置文件;DER体积小,适合网络传输;SSH格式专用于认证场景。开发中建议优先使用PEM,注意公钥可公开传递但需验证来源,私钥必须加密存储。不同格式可通过工具转换,如OpenSSL生成PEM。选择格式需考虑应用场景,如嵌入式系统用DER,Git认证用SSH格式。

2025-06-16 18:34:52 1213

原创 Java中的CAS与ABA

《Java中CAS机制、ABA问题及Android应用解析》摘要: 本文通过图书馆占座类比通俗讲解CAS(CompareAndSwap)原理,即通过CPU指令实现原子性值替换。针对CAS可能出现的ABA问题(数据隐形篡改),提出用版本号(AtomicStampedReference)解决方案。在Android开发中,CAS常用于全局计数器(无锁性能优化)、状态标记(轻量同步)和ViewHolder复用(防ABA)。注意事项包括避免主线程自旋导致ANR,推荐优先使用原子类替代锁。总结指出CAS是并发编程基石,

2025-06-15 21:41:40 548

原创 Java垃圾回收机制

本文用生动类比解析Java垃圾回收机制(GC):将堆内存比作玩具仓库,GC是自动清洁工,通过可达性分析(寻宝游戏)识别无引用对象为垃圾。重点介绍了四种清理策略:标记-清除(产生碎片)、复制算法(适合新生代)、标记-整理(适合老年代)和主流的分代收集策略。文章对比了Serial、Parallel、CMS等不同GC收集器的适用场景,并给出优化建议:减少垃圾产生、合理配置堆大小、选择合适的收集器。最终指出GC的本质是智能内存管理系统,让开发者能专注于业务逻辑而非内存管理。全文通过生活化比喻,使复杂的GC原理变得通

2025-06-15 21:34:46 515

原创 Java对象中的MarkWord

Mark Word是Java对象的​​智能身份证​​,既存储身份信息(哈希码/年龄),又动态反映当前状态(锁类型),以最小空间支撑JVM的高效运行。

2025-06-15 21:29:13 1050

原创 CountDownLatch与CyclicBarrier的区别

CountDownLatch 和 CyclicBarrier 都是 Java 并发包中用于线程协作的工具类,但它们在设计目的、使用机制和适用场景上有本质区别。​​一句话记忆​​:​​CountDownLatch​​:主等子,一次性,如“司机等乘客到齐发车”;​​CyclicBarrier​​:子等子,可循环,如“运动员等所有人到起跑线开跑”。

2025-06-15 21:17:15 911

原创 双重检查单例

Java 中每个线程都有自己的工作内存(类似 CPU 缓存),对变量的修改会先保存在工作内存中,之后才会同步到主内存。为了提高性能,JVM 可能会对指令进行重排序(Reordering)。例如,它可能先执行步骤 1 和 3(分配内存并赋值),​。直接强制所有读写操作都发生在主内存中,跳过了线程的工作内存。可以保证线程安全,但它会导致每次调用。变量后,JVM 会禁止对这个变量的​。​,后续调用直接返回实例,性能更高。锁的是类对象,确保线程安全。,要么是已完全初始化的对象。这样,所有线程看到的。

2025-05-13 09:13:09 612

原创 技嘉主板BIOS升级

结合上面看到的主板信息下载去技嘉官网下载对应BIOS,fat格式的U盘存放解压好的bios文件。注意技嘉主板BIOS不能跨版本升级,需要一个一个版本往上升。截图可能不同的BIOS长的不一样,但大概相同,BIOS不下错,逐个版本升级就没问题。如下为Z390 GAMING X (rev1.0)去BIOS设置里面,看。开机->Del键 进入BIOS设置界面。4. 点击update bios 进入选择bios页面。5.选择好 bios,按回车键,等待验证完。这里漏了一个页面,默认选中的就可以,回车键。

2025-05-10 20:37:53 6159

原创 WebStorm引用的npm包内方法无法点击跳转进入

如图,打开WebStorm右下角找到TypeScript Service,重启Service或者打开Service,重启WebStorm即可。

2025-04-21 18:39:05 465

原创 ViewStub

ViewStub是Android中用于延迟加载布局的轻量级组件,通过占位替换机制优化性能。它仅消耗约1KB内存,在调用inflate()或setVisibility()时才加载目标布局并替换自身。优点包括减少启动耗时、降低内存占用和布局解耦;缺点是加载后不可复用且功能有限。源码显示其通过零尺寸测量和替换父视图实现延迟加载。适用于低频显示的场景(如错误页),但不适合频繁显隐的视图。正确使用可显著提升界面响应,尤其对低端设备效果明显。

2025-04-18 14:32:43 295

原创 typescript中使用类并且声明成员变量后,本地运行会报 Unexpected token = 错误

typescript中使用类并且声明成员变量后,在UC浏览器中运行会报 Unexpected token = 错误。lib中的esnext改成ES2015,增加target:ES2015。

2024-06-20 19:54:56 470 1

原创 Android FileProvider笔记

通过FileProvider.getUriForFile(@NonNull Context context, @NonNull String authority, @NonNull File file)方法获得一个有临时权限的Uri给客户端用来访问本APP文件。当然看FileProvider类的注释更加详细。

2023-09-19 19:37:13 942

SSH编写的销售管理系统

一个完整的javaweb光盘销售系统,用ssh编写的,文档,录像都有,适合初学者模仿学习

2012-03-26

Android可拖拽的GridView

Android可拖拽的GridView,效果还可以,带拖动动画,convertView复用

2015-07-14

SSH编写的博客系统

一个完整的博客系统,基于ssh框架编写的javaweb,包含注册,发表文章,上传照片,网友评论等功能

2012-03-26

以圆心散开的半圆菜单

以圆心散开的半圆形菜单 仅供参考学习,欢迎大家交流改进

2014-03-27

微信公众号H5游戏平台完整源码下载(几十款游戏和应用)

微信公众号H5游戏平台完整源码下载(几十款游戏和应用) 超级读心术 激光防线 超级足球等的等。。。。

2016-08-23

计算机网络第五版课后习题答案.doc

计算机网络第五版课后习题答案.doc 计算机网络第五版课后习题答案.doc

2011-06-21

组成原理期末模拟试卷.doc

组成原理期末模拟试卷 期末考试必备的要看看啊

2011-06-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除