
java技术
三方三方
这个作者很懒,什么都没留下…
展开
-
基于atomic包分析CAS原理
大家都知道,多线程下操作共享变量,会出现所谓的“线程安全问题”从而不能得到我们预期的结果,为了解决这种问题,在早期的JDK版本中,提供的synchronized关键字来解决这种线程安全问题,而在JDK1.5以后的java.util.concurrent包中,里面大量使用了一种叫CAS的技术,提供了一种不用synchronized的前提下解决线程安全问题的方案。本文将从AtomicInteger包...转载 2020-03-31 13:57:00 · 222 阅读 · 0 评论 -
Lambda表达式效率低
一、验证 废话不多说,先上验证代码: List<Integer> list = new ArrayList<>(); for (int i = 0; i < 1000000; i++) { list.add(i); } long lambdaStart = System.cu...原创 2020-03-31 12:12:33 · 2565 阅读 · 0 评论 -
NIO实现简易的多人聊天室
一、基本概念 1.Selector 选择器,常用方法有: Selector selector.open() 创建选择器; int selector.select() 监听客户端事件; Set<SelectionKey> selector.selectKeys() 返回选择器中已出触发事件的选择键; 4中Sel...原创 2020-03-27 14:25:37 · 235 阅读 · 0 评论 -
squirrel-foundation java状态机
介绍 squirrel-foundation:轻量级java有限状态机 状态机的要素 状态机可归纳为4个要素,即现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。 现态:是指当前所处的状态。 条件:又称为事件。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需...转载 2020-03-16 21:11:24 · 956 阅读 · 0 评论 -
布隆过滤器BloomFilter
问题引出 1.如何在亿级黑名单中快速定位URL地址是否在黑名单中?(每条URL平均64字节) 2.目前有10亿数量的自然数,乱序排列,需要对其排序,在32位机器上完成,内存限制为2G? 什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存...转载 2020-01-12 11:37:00 · 190 阅读 · 0 评论 -
BitMap的简单实现
Bitmap介绍 bitmap是很有用的结构。所谓的bitmap就是用一个bit位来标记某个元素,而数组下标是该元素。 bitmap优势 bitmap经常用在大数据的题中,比如10亿个int类型的数,如果用int数组存储的话,那么需要大约4G内存,浪费内存。如果用bitmap解决,就比较方便。bitmap可以用int来模拟,也可以用byte来模拟,它只是逻辑上的概念,在java语言中写不出来...转载 2020-01-12 11:15:56 · 713 阅读 · 0 评论 -
状态机引擎选型
状态机引擎选型 概念 有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在电商场景(订单、物流、售后)、社交(IM消息投递)、分布式集群管理(分布式计算平台任务编排)等场景都有大规模的使用。 状态机的要素 状态机可归纳为4个要素,即现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。详解如下...转载 2019-10-23 17:03:25 · 2488 阅读 · 0 评论