10 2021 档案
摘要:消息Message 消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。 主题Topic Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。 一个生成者可以同时发送多种Topic的消息;而一个消费者
阅读全文
摘要:1、B+树索引: B+树是为磁盘或其他直接存取辅助设备设计的一种平衡查找树。在 B+ 树中,所有记录节点都是按键值的大小顺序存放在同一层的叶子节点上,由各叶子节点指针进行连接。在数据库中,B+ 树的高度一般都在 2~4 层,这也就是说查找某一键值的行记录时最多只需要 2 到 4 次IO 。这很不错,
阅读全文
摘要:为什么要使用线程池? 反复创建线程开销大、过多的线程会占用太多内存 线程池的好处:加快响应速度、合理利用CPU和内存、统一管理 线程池中构造方法的参数 corePoolSize指的是核心线程数 线程池在完成初始化后,默认情况下,线程池中并没有任何线程,线程池会等待有任务到来时,再创建新线程去执行任务
阅读全文
摘要:1.线程通信涉及到的三个方法: wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。 notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。 notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。 2.说明
阅读全文
摘要:方式一:同步代码块 synchronized(同步监视器){ //需要被同步的代码 } 说明:1.操作共享数据的代码,即为需要被同步的代码。 -->不能包含代码多了,也不能包含代码少了。 2.共享数据:多个线程共同操作的变量。比如:ticket就是共享数据。 3.同步监视器,俗称:锁。任何一个类的对
阅读全文
摘要:进程与线程的理解: 进程:程序的一次执行过程,或是正在运行的一个程序。进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。 线程:进程可进一步细化为线程,是一个程序内部的一条执行路径。线程作为调度和执行的单位,每个线程拥独立的运行栈和程序计数器(pc),线程切换的开销小。 进程可以细
阅读全文
摘要:| Collection:单列集合,用来存储一个一个的对象 | List:有序、可重复 | ArrayList 主要实现类,线程不安全,效率高,使用Object[] elementData存储 | LinkedList 频繁插入、删除操作,效率比ArrayList高,使用双向链表存储 | Vecto
阅读全文
摘要:分布式缓存 缓存的淘汰策略 数据过期策略:惰性删除、定期删除 惰性删除:访问一个key时,Redis先检查它的过期时间,若发现过期立即删除 定期删除:将设置了过期时间的key放入一个独立字典中;对该字典进行每秒10次的扫描,并删除扫描到的已过期的key; 扫描采用贪心策略,每次随机2
阅读全文
摘要:RDB持久化 默认采用的持久化方式,以快照的形式将数据持久化到硬盘中,主要通过bgsave命令来触发,手动自动均可。 AOP持久化 以独立日志的方式,记录每次写入的命令;实时性好,在保证性能的前提下,可以做到最多丢失1秒的数据;比RDB的文件体积大,可以通过重写机制压缩AOF文件的大小。 R
阅读全文
摘要:Redis的网络IO和键值对读写是由一个线程来完成的,但Redis的其他功能如持久化、集群的数据同步等,则依赖其他线程来执行。 单线程可以简化数据结构和算法的实现,并且可以避免线程切换和竞争造成的消耗,但若某个命令的执行时间过长,则会造成其他命令的阻塞。 Redis的大部分操作都是基于内存的,采用的
阅读全文
摘要:事务机制 Redis提供的是一种简单的事务,它不支持回滚,且通常不支持ACID中的D。 multi:使客户端进入事务模式,此时客户端的所有命令会被顺序放入一个事务队列中; exec:执行当前事务,即将事务队列中的命令批量发送给服务器; discard:清空事务队列中已有的命令,并让客户端
阅读全文
摘要:编码机制 String int 条件:数据为整型值,并可用long型表示。 结构:long。 raw 条件:长度大于32字节的字符串。 结构:SDS(简单动态字符串),分配两块内存空间,分别存放对象元数据和字符串值。 embstr 条件:长度小于等于32字节的字符串。 结构:
阅读全文
摘要:数据类型 String 字符串,最多存储512M数据。 常用命令: set key value 设置值 get key 取值 getrange key start end 获取指定key中字符的子串 Hash 哈希,一个 hash 可以存储 232 - 1 键值对。 常用命令: hset k
阅读全文