- 博客(9)
- 收藏
- 关注
原创 在虚拟机中下载安装配置redis
大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。因此一下内容是基于Linux系统来安装Redis,此处Linux版本为CentOS 7。
2025-07-10 16:23:57
1300
原创 虚拟机环境搭建
虽然 CentOS 已经下载到 VMware 上,但还需要设置一个静态的 IP 才能访问到,在这之前要先确定你网络连接中的 VMnet8 是否开启。此时CentOS 上连接外网,试着用 CentOS 上面的游览器去访问百度,能够访问得上就说明网络已经配置好了。这里的路径,需要选择一个虚拟机的光盘映像文件,这里选择的是CentOS。只有确定 VMnet8 是已启用状态再去设置静态 IP 才有效。重启 centos 的网络,查看 IP 地址。输入命令切换为root用户。进行NAT-模式配置。
2025-07-10 09:53:55
926
原创 基于对锁的升级以及优化进行分类——偏向锁和轻量锁和重量锁
场景锁类型触发条件性能影响单线程重复操作偏向锁同一线程多次访问无同步开销低竞争短任务轻量级锁多线程交替竞争(自旋成功)少量CPU自旋消耗高竞争或长任务重量级锁自旋失败/竞争激烈线程挂起唤醒开销大注:从JDK 15开始,偏向锁默认禁用(可通过手动启用)。轻量级锁在竞争加剧时会升级为重量级锁(JVM自动管理)。长任务建议用替代(支持超时和公平锁)。
2025-07-07 15:19:15
890
原创 基于对共享资源的访问方式进行分类——悲观锁和乐观锁
适用场景写操作密集(如转账、库存扣减)。数据冲突概率高(如订单状态更新)。对数据一致性要求严格(如金融系统)。实现方式:简单易用,JVM内置支持。:灵活可控,支持超时、公平锁等特性。注意事项锁粒度尽量小(如锁特定订单ID而非整个服务类)。避免嵌套锁以防死锁。高并发场景下需评估性能损耗(如用乐观锁替代读多写少场景)。适用场景读多写少(如商品浏览 vs 购买)冲突概率低(如用户积分更新)需要高并发读(如文档查看)实现方式AtomicXXX:Java原子类(CAS)版本号:数据库/内存中版本控制。
2025-07-07 11:35:58
1064
原创 基于锁的获取公平性进行分类——公平锁和非公平锁
场景类型典型案例公平锁价值替代方案金融交易银行转账/证券交易保证交易顺序可审计,防止大额交易阻塞小额分布式事务+顺序日志资源配额API调用限额/许可证分配保证交易顺序可审计,防止大额交易阻塞小额令牌桶算法任务调度医院挂号/物流分拣平衡紧急与普通任务,防止低优先级任务饥饿优先级队列+非公平锁设备控制工业机器人控制/打印机调度避免指令冲突,保证操作序列化硬件队列状态机操作订单状态变更/工作流引擎确保状态转换顺序一致性数据库乐观锁。
2025-07-07 10:22:30
923
原创 基于对资源的访问权限进行分类——独占锁和共享锁
使用建议:简单场景:优先使用synchronized(简洁安全)复杂需求:需要超时控制、可中断锁时使用ReentrantLock最佳实践:锁范围尽量缩小(减少阻塞时间)避免锁嵌套(防止死锁)ReentrantLock务必在finally中释放锁高并发场景考虑使用读写锁(ReentrantReadWriteLock)优化性能示例中的sleep()模拟了真实业务中的I/O操作或复杂计算,在实际生产环境中,这些操作会导致线程阻塞,使锁竞争问题更加凸显全局数据 → 全局读写锁。
2025-07-05 14:45:20
1228
原创 基于锁的占有权是否可重入进行分类——可重入锁和不可重入锁
递归操作场景文件/目录树处理组织架构树遍历递归数学计算(如斐波那契数列缓存)XML/JSON树解析事务处理场景银行核心系统(转账、清算)交易订单处理库存管理系统计费系统需要高级控制的场景高并发库存管理实时交易系统资源池管理(数据库连接池)任务调度系统框架内部实现Spring事务管理Hibernate会话管理线程池任务处理消息队列消费者。
2025-07-04 16:24:32
1319
原创 基于锁的获取与释放方式即计划于所得获取与释放方式进行分类——显式锁和隐式锁
相较于隐式锁,显式锁提供了更为多样化的锁操作选项,包括但不限于支持线程在等待锁时可被中断、根据先后顺序分配锁资源的公平锁与非公平锁机制,以及能够设定锁获取等待时间的定时锁功能。虽然Java标准库并未直接暴露操作系统的互斥锁提供使用,但在Java虚拟机对synchronized关键字处理的底层实现中,当锁竞争激烈且必须升级为重量级锁时,会利用操作系统的互斥量机制来确保在同一时刻仅允许一个线程持有锁,从而实现严格的线程互斥控制。可重入锁,继承自Lock接口,支持可中断锁、公平锁和非公平锁的选择。
2025-07-03 18:08:32
1073
原创 多线程编程中的核心概念----锁(Lock)
在多线程编程中,锁(Lock)是一种核心的同步机制,用于控制多个线程对共享资源(如变量、数据结构、文件、设备等)的并发访问。它的核心目的是防止竞态条件(Race Condition),确保数据的一致性(Consistency)和程序的正确性(Correctness)。锁的核心思想:互斥(Mutual Exclusion)当一个线程需要访问或修改共享资源时,它必须先获取(Acquire/Lock)与该资源关联的锁。一旦某个线程持有了锁,任何其他试图获取同一把锁的线程都会被阻塞(Blocked)
2025-07-03 16:01:23
1141
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅