后端

Redis数据结构与对象

1.简单动态字符串 每个sds.h/sdshdr结构表示一个SDS值,Redis是C语言写的。 image.png 与C字符串的区别: 常数复杂度获取字符串长度 杜绝缓冲区溢出 C字符串不记录长度,如果两个C字符串前后紧挨在一起,这时候扩展前字符串时,后字符串就会被覆盖。 减少修改字符串时内存重分配的次数 结构体的free,就是处理分配的空间大小,如果你要扩展的话,可以探索是否

JavaGuide知识点整理——集合常见知识点(下)

Map接口 HashMap和Hashtable的区别 线程是否安全:HashMap是非线程安全的,Hashtable是线程安全的,因为Hashtable内部的方法基本都经过synchronized修饰(这是很老的一个实现,如果现在需要保证线程安全的话推荐使用ConcurrentHashMap) 效率:因为线程安全的问题,HashMap要比Hashtable的效率高一些,另外Hashtable

说说对JMM内存模型的理解?为什么需要JMM?

本身随着CPU和内存的发展速度差异的问题,导致CPU的速度远快于内存,所以现在的CPU加⼊了⾼速缓存,⾼速缓存⼀般可以分为L1、L2、L3三级缓存。基于上⾯的例⼦我们知道了这导致了缓存⼀致性的问题,所以加⼊了缓存⼀致性协议,同时导致了内存可⻅性的问题,⽽编译器和CPU的重排序导致了原⼦性和有序性的问题,JMM内存模型正是对多线程操作下的⼀系列规范约束,因为不可能让陈雇员的代码去兼容所有的CPU,通