会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
arax
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
下一页
2018年11月27日
CountDownLatch与CyclicBarrier对比
摘要: 在并发编程时总会遇到一种这样的场景:等待一系列任务做完后,才能开始做某个任务。当遇到这种场景时,两个类cross our mind:CountDownLatch和CyclicBarrier。下面从使用方法和内部实现原理分别对这两个类做出介绍。 使用方法 CountDownLatch 任务 在完成每一
阅读全文
posted @ 2018-11-27 22:35 arax
阅读(781)
评论(1)
推荐(0)
2018年11月8日
ArrayBlockingQueue与LinkedBlockingQueue对比
摘要: ps:在下文中分别以Array代表ArrayBlockingQueue,Link代表LinkedBlockingQueue,下文中不再说明。 Array和Link在并发场景中经常使用,他们的共同作用就是实现线程安全队列。下面对这两种队列的实现进行对比分析。 底层实现 ArrayBlockingQue
阅读全文
posted @ 2018-11-08 11:30 arax
阅读(2647)
评论(0)
推荐(0)
2018年8月8日
手写HashMap
摘要: 根据自己对hashMap的理解,基于数组加链表实现了一个HashMap。 下面给出源码:https://github.com/XiaoheXu/hotchpotch/blob/master/src/main/java/com/chris/java/collections/HashMap.java 单
阅读全文
posted @ 2018-08-08 13:38 arax
阅读(201)
评论(0)
推荐(0)
2018年7月10日
volatile关键字解析
摘要: volatile 保证此变量对所有线程的可见性。 这个可见性是指,当一个线程读取volatile修饰的变量时,永远读取的都是最后一个线程写回主内存的最新值。某个线程在读取数据之后,另一个线程对变量值做了修改,这个线程是不知道的,这就导致当前线程读取的值是过期的,当前线程将过期的数据经过计算写回主内存
阅读全文
posted @ 2018-07-10 19:26 arax
阅读(218)
评论(1)
推荐(0)
2018年6月28日
两个栈实现队列——优化版
摘要: 这个是一个很常见的算法,在剑指offer中有详细的讲解,在这里提供一种优化的 "实现" 。该实现的优点是不需要每次在数据出列时,将数据copy到另一个堆栈中。并写了其对应的 "单元测试" 。 主要思想 主要实现是在类中定义了两个全局变量,标明当前队列中两个栈的状态, isMain 表示现在数据存储在
阅读全文
posted @ 2018-06-28 22:26 arax
阅读(671)
评论(0)
推荐(0)
2018年6月10日
RabbitMQ Authentication failed
摘要: 当我们兴致勃勃的安装完erlang和rabbitMQ。准备爽一下的时候,发现在执行一些rabbitmqctl list_users命令时总是报错。 报错信息如下: 看了图片以后会发现授权失败的提示信息。再往下看就会看到当前rabbitMQ的Erlang cookies hash。 这个报错信息是因为
阅读全文
posted @ 2018-06-10 17:29 arax
阅读(633)
评论(0)
推荐(0)
JVM中数组长度限制
摘要: 发现问题 当写下这行代码时,程序会注定运行失败。 错误信息:java.lang.OutOfMemoryError: Requested array size exceeds VM limit. 而且在jdk源码中总会看到类似这样的定义: 分析问题 看注释可以了解到,jvm会为数组头信息保留一些空间。
阅读全文
posted @ 2018-06-10 14:14 arax
阅读(623)
评论(0)
推荐(0)
Vector源码解析
摘要: 简介 Vector 看上去想一个可增长的数组,可以使用索引访问。他的size随着添加或删除item可大可小。Vector为了优化存储,保存着capacity和capacityIncrement两个变量。capacity最小为vector当前的大小。一般比vector的size要大,当有有数据添加到v
阅读全文
posted @ 2018-06-10 12:55 arax
阅读(211)
评论(0)
推荐(0)
2018年6月3日
RabbitMQ 入门
摘要: RabbitMQ作为应用程序之间通信的工具,越来越受欢迎,下面结合介绍一下RabbitMQ中一些简单的概念。建议初学者可以看一下 "RabbitMQ官方教程" 和官方在GitHub上提供的 "样例代码" 。 几个重要概念 生产者 生产者也叫客户端,不是RabbitMQ的一部分,他创建消息,并将消息发
阅读全文
posted @ 2018-06-03 21:31 arax
阅读(178)
评论(0)
推荐(0)
2018年5月17日
模板设计模式(Template Design Pattern)
摘要: 如果说算法,数据结构是编码术的层面,那么设计模式则是编码中的道。 定义 模板设计模式,定义一组算法的框架,这些算法的步骤大致相同。而将这些算法中不同的步骤延迟到子类中实现。 例子 我们在日常生活中使用的料理机时,先将原材料经过初步处理(打豆浆,需要泡豆子;榨果汁,需要提前将水果洗好),然后打开料理机
阅读全文
posted @ 2018-05-17 21:29 arax
阅读(717)
评论(0)
推荐(0)
上一页
1
2
3
4
5
下一页
公告