摘要:
双重检查(单例模式) class Singleton{ private volatile static Singleton instance = null; private Singleton() { } public static Singleton getInstance() { if(inst 阅读全文
摘要:
为了支持 JMM,Java 定义了 8 种原子操作(Action),用来控制主存与工作内存之间的交互: read 读取:作用于主内存,将共享变量从主内存传动到线程的工作内存中,供后面的 load 动作使用。 load 载入:作用于工作内存,把 read 读取的值放到工作内存中的副本变量中。 stor 阅读全文
摘要:
在遍历对象图的过程中,把需要遍历的对象按照“是否访问过”分为以下三种颜色。 白色:表示对象尚未被垃圾回收器访问过。显然,在可达性分析刚刚开始的阶段,所有的对象都是白色的,若在分析结束的阶段,仍然是白色的对象,即代表不可达。 黑色:表示对象已经被垃圾回收器访问过,且这个对象的所有引用都已经扫描过。黑色 阅读全文
摘要:
G1抛弃了之前的分代收集的方式,面向整个堆内存进行回收,把内存划分为多个大小相等的独立区域Region。 一共有4种Region: 自由分区Free Region 年轻代分区Young Region,年轻代还是会存在Eden和Survivor的区分 老年代分区Old Region 大对象分区Humo 阅读全文
摘要:
DDD是复杂系统设计方法论,核心设计思想:将对软件的分析与设计还原到真实世界中。 系统增删改的业务适用于领域驱动设计,数据分析场景不适合。例:订单与订单明细场景,统计所有订单明细的商品,不可能去查询出订单,再查出订单明细,再统计商品数据分析。 实体 通过一个唯一标识来区分真实世界中每一个个体的领域对 阅读全文
摘要:
分析 包含下面的过程: 首先,将一块文本分成适合于倒排索引的独立的 词条 , 之后,将这些词条统一化为标准格式以提高它们的“可搜索性”,或者 recall 分析器执行上面的工作。 分析器 实际上是将三个功能封装到了一个包里: 字符过滤器 首先,字符串按顺序通过每个 字符过滤器 。他们的任务是在分词前 阅读全文
摘要:
正排索引:key-value 中,通过 key 去寻找 value。 倒排索引:通过 value(或包含 value)去寻找对应的 key。 正排索引需要首先对全局进行扫描遍历,进而从中做筛选;而倒排索引可以仅抽取符合条件的 value 值,节省大量的资源。 每个被索引的字段都有自己的倒排索引,是否 阅读全文
摘要:
index属性 analyzed:分词后索引,可搜索。 not_analyzed:字段值不分词,以单个关键词进行索引。 no:字段不索引,当然也就不能搜索。 store属性 属性store默认false,当某个数据字段很大,我们可以指定其它字段store为true,这样就不用从_source中取数据 阅读全文
摘要:
事务消息需要消息队列提供相应的功能才能实现,Kafka和RocketMQ都提供了事务相关功能。 以在电商平台上下单购物的场景为例: 订单系统要保证订单创建后一定能发消息通知到购物车系统。 首先,订单系统在消息队列上开启一个事务。然后订单系统给消息服务器发送一个“半消息”,这个半消息不是说消息内容不完 阅读全文
摘要:
大数据存储场景下为什么这么难? 为了追求高性能,进行数据分片 performance -> sharding 为了容错 faults -> tolerance,需要数据复制,多副本 tolerance -> replication 为了维护primary数据与replicate副本的数据一致性 re 阅读全文