- 博客(10)
- 资源 (3)
- 收藏
- 关注
原创 开源技术选型因素
开源技术选型因素指标说明成熟度是否稳定,是否经历很多公司使用吞吐量吞吐量以及执行效率技术栈一致性是否更公司技术栈匹配关注度社区的活跃度学习成本学习花费时间扩展能力是否具有二次开发以及扩展能力1、MQ选型对比特性RabbitMQRocketMQKafka成熟度官方支持Erlang、Java/Ruby等,社区产出多种语言API,几乎支持所有常用语言开发度较活跃,版本更新很快官方支持JAVA,开源社区有多语言版本
2022-04-12 00:38:15
1856
原创 JAVA集合学习
JAVA集合Java集合框架1、ArrayListArrayList remove会遇到的坑2、HashMapJava集合框架JCF定义了14种容器接口(collection interfaces),它们的关系如下图所示:Map接口没有继承自Collection接口,因为Map表示的是关联式容器而不是集合。但Java为我们提供了从Map转换到Collection的方法,可以方便的将Map切换到集合视图。上图中提供了Queue接口,却没有Stack,这是因为Stack的功能已被JDK 1.6引入的D
2021-08-24 12:12:19
133
原创 JAVA复习资料
复习资料1. JAVA锁机制根据是否要锁住同步资源分为 悲观锁和乐观锁,锁住资源失败了,不阻塞分为自旋锁和适应性自旋锁;针对synchronized进行了锁的优化:无锁->偏向锁->轻量级锁->重量级锁。2. Set与ListSet是通过HashMap来实现,value存储一个Object,List是通过数组的形式存储,jdk1.8无参数初始化,默认长度是0,当真正对数组进行添加时,才真正分配容量。每次按照1.5倍(位运算)的比率通过copeOf的方式扩容。 在JKD1.6中实现是
2021-07-23 17:30:50
134
原创 多线程银行转账死锁优化
多线程银行转账死锁问题在转账操作中,一致性必须要保证的,转账的前后,各个账户的金额必须符合算术一致性,如果在转账方法上直接加锁,那相当于整个转账过程都是单线程的,并发和性能不高,如果针对账户加锁,会存在A->B,B->A之间死锁问题**- 账户信息public class Account { private String id; private String name;// 账号 private int balance;// 资金总额 public Account(String
2021-07-23 16:42:31
457
原创 JAVA锁学习
AQS原理AQS是AbstractQueuedSynchronizer是用来构建锁或者其他同步组件的基础框架类。J.U.C 中许多锁和并发工具类的核心实现都依赖于 AQS,如:ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch 等。AQS 的源码中 方法很多,但主要做了三件事情:管理 同步状态;维护 同步队列;阻塞和唤醒 线程。另外,从行为上来区分就是 获取锁 和 释放锁,从模式上来区分就是 独占锁 和 共享锁。AQS内部
2021-02-26 13:52:17
99
原创 JVM垃圾收集器
垃圾收集器HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。新生代垃圾收集器Serial 垃圾收集器(单线程)只开启一条 GC 线程进行垃圾回收,并且在垃圾收集过程中停止一切用户线程(Stop The World)。一般客户端应用所需内存较小,不会创建太多对象,而且堆内存不大,因此垃圾收集器回收时间短,即使在这段时间停止一切用户线程,也不会感觉明显卡顿。因此 Serial
2021-02-08 15:43:57
198
原创 JVM学习笔记
JAVA的内存模型Java内存模型规定了所有的变量都存储在主内存(Main Memory)中,每条线程还有自己的工作内存(Working Memory),线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成,线程,主内存,工作内存三者的交互关系如下图:...
2021-02-04 18:02:14
110
原创 Java多种方式实现生产者消费者模式
生产消费者生产者消费者问题(Producer-consumer problem),也称有限缓冲问题(Bounded-buffer problem),是一个多线程同步问题的经典案例。生产者生成一定量的数据放到缓冲区中,然后重复此过程;与此同时,消费者也在缓冲区消耗这些数据。生产者和消费者之间必须保持同步,要保证生产者不会在缓冲区满时放入数据,消费者也不会在缓冲区空时消耗数据。不够完善的解决方法容易出现死锁的情况,此时进程都在等待唤醒。示意图:实现方式实现的核心 保证同一资源被多个线程并发访问时
2021-02-02 18:03:07
340
3
Navicat Premium_11.1.8简体中文版
2018-04-08
Spring 2.5中文参考手册[文字版][中文].chm
2012-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人