后端
说说对JMM内存模型的理解?为什么需要JMM?
本身随着CPU和内存的发展速度差异的问题,导致CPU的速度远快于内存,所以现在的CPU加⼊了⾼速缓存,⾼速缓存⼀般可以分为L1、L2、L3三级缓存。基于上⾯的例⼦我们知道了这导致了缓存⼀致性的问题,所以加⼊了缓存⼀致性协议,同时导致了内存可⻅性的问题,⽽编译器和CPU的重排序导致了原⼦性和有序性的问题,JMM内存模型正是对多线程操作下的⼀系列规范约束,因为不可能让陈雇员的代码去兼容所有的CPU,通
JavaGuide知识点整理——集合常见知识点(下)
Map接口
HashMap和Hashtable的区别
线程是否安全:HashMap是非线程安全的,Hashtable是线程安全的,因为Hashtable内部的方法基本都经过synchronized修饰(这是很老的一个实现,如果现在需要保证线程安全的话推荐使用ConcurrentHashMap)
效率:因为线程安全的问题,HashMap要比Hashtable的效率高一些,另外Hashtable
Redis数据结构与对象
1.简单动态字符串
每个sds.h/sdshdr结构表示一个SDS值,Redis是C语言写的。
image.png
与C字符串的区别:
常数复杂度获取字符串长度
杜绝缓冲区溢出
C字符串不记录长度,如果两个C字符串前后紧挨在一起,这时候扩展前字符串时,后字符串就会被覆盖。
减少修改字符串时内存重分配的次数
结构体的free,就是处理分配的空间大小,如果你要扩展的话,可以探索是否
20230318--Docker Compose配置文件详解
Docker Compose配置文件是Docker Compose的核心,用于定义服务、网络和数据卷。格式为YAML,默认路径为./docker-compose.yml,可以使用.yml或.yaml扩展名,目前Compose配置文件格式的最新版本为V3。
Docker Compose配置文件详解.png
一)version
Docker Compose版本主要有1, 2, 2.x,