01 2023 档案
摘要:什么是进程,线程? 线程是进程的最小执行单元,相当于不同的执行路径 run和start的区别? run只是单纯的方法调用,在主线程进行.start相当于开启一个线程 线程的启动的三种方式 Thread,runable,线程池 线程的6个状态 可重入锁和不可重入的区别 可重入锁也叫递归锁,是在一个线程
阅读全文
摘要:为什么要序列化? 如果光看定义我想你很难一下子理解序列化的意义,那么我们可以从另一个角度来感受一下什么是序列化。 都玩过游戏么?玩过的同学应该知道游戏里有一个叫『存档』的功能,每次不想玩的时候可以把当前进度存档,下次有时间想玩的时候,直接载入存档就可以接着玩了,这样的好处是之前的游戏进度不会丢失,要
阅读全文
摘要:在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问Mysql等数据库。这样可以大大缓解数据库的压力。具体业务流程如下: 读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出
阅读全文
摘要:避免缓存击穿的利器之BloomFilter Bloom Filter 概念 布隆过滤器(英语:Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一
阅读全文
摘要:Redis可以使用主从同步,从从同步。第一次同步时,主节点做一次bgsave,并同时将后续修改操作记录到内存buffer,待完成后将RDB文件全量同步到复制节点,复制节点接受完成后将RDB镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。后续的增量数
阅读全文
摘要:一、什么是LRU? LRU(Least Recently Used),最近最少使用。 是一种【内存管理】算法。 LRU算法基于一种假设: 长期不被使用的数据,在未来被用到的几率也不大。因此,当数据所占内存达到一定阈值时,要移除掉最近最少使用的数据。 LRU算法使用了一种有趣的数据结构,叫做【哈希链表
阅读全文
摘要:缓存穿透 缓存穿透:指在redis缓存中不存在数据,这个时候只能去访问持久层数据库,当用户很多时,缓存都没有命中就会照成很大压力 解决方案 : (1)布隆过滤器(对可能查询的数据先用hash存储) (2)缓存空对象:在没有的数据中存一个空,而这些空的对象会设置一个有效期) 缓存击穿 缓存击穿指的是缓
阅读全文
摘要:CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。 在多
阅读全文
摘要:#Tag ##查看tag git tag ##新建tag 首先切换到需要打标签的分支上,使用命令git tag <name>就可以打一个新标签。 添加说明 git tag -a 标签名 -m "标签说明" 推送标签到远程仓库: 如果要推送某个标签到远程,使用命令git push origin 标签名
阅读全文