面试突击-数据库篇 发表于 2019-08-26 | 分类于 面试相关 缓存更新策略先更新数据库,再更新缓存缺点:1)、线程安全角度,同时有请求A和请求B进行更新操作,那么会出现a.线程A更新了数据库b.线程B更新了数据库c.线程B更新了缓存d.线程A更新了缓存 这就出现请求A更新缓存应该比请求B更新缓存早才对,但是因为网络等原因,B却比A更早更新了缓存。这就导致了脏数据,因此不考虑。 阅读全文 »
面试突击-基础篇 发表于 2019-08-26 | 分类于 面试相关 HashMap存储结构数组+链表+红黑树,链表的存在是为了解决hash冲突,当链表长度大于8的时候,后面的数据存放在红黑树中。 特点 快速存储 快速查找(时间复杂度为o(1)) 可伸缩 线程不安全 阅读全文 »
Redis 原理解析 发表于 2019-07-29 | 分类于 中间件 数据类型Stringstring 类型通过int、sds作为数据结构,int用来存储整型数据,sds存放字节、字符串、浮点型数据。redis3.2分支引入了五种sdshdr类型,目的是为了满足不同长度字符串可以使用不同大小的Header,从而节省内存,每次在创建一个sds时根据sds的实际长度判断应该选择什么类型的sdshdr。 Listlist 可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素。 阅读全文 »
策略模式 发表于 2019-07-22 | 分类于 设计模式 介绍在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 用途主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。 阅读全文 »
mysql 存储引擎 发表于 2019-07-11 | 分类于 数据库 介绍 可插拔的插件方式 存储引擎是指定在表之上的,每个表可以指定专用的存储引擎 不管采用什么存储引擎,都会在数据区产生对应的一个frm文件(表结构定义描述文件) 阅读全文 »
mysql 解析 发表于 2019-07-10 | 分类于 数据库 索引是什么索引是为了加快对表中数据行的检索而创建的一种分散存储的数据结构。 为什么用索引 索引能极大的减少存储引擎需要扫面的数据量 索引可以把随机IO变成顺序IO 索引可以帮助我们在进行分组、排序等操作时,避免使用临时表 阅读全文 »
springboot 异步任务(taskExecutor+FutureTask) 发表于 2019-07-08 | 分类于 多线程 不使用异步提交任务12345678910111213@Servicepublic class UserManager { // 模拟耗时业务 public int sleep1() throws InterruptedException { Thread.sleep(2000); return 2; } // 模拟耗时业务 public int sleep2() throws InterruptedException { Thread.sleep(3000); return 3; }} 阅读全文 »
mycat 解析 发表于 2019-07-07 | 分类于 数据库 主要作用 作为分布式数据库中间层 实现读写分离和负载均衡 对业务数据库进行垂直切分 对业务数据库进行水平切分 控制数据库连接的数量 阅读全文 »
Hexo 实用插件 发表于 2019-06-29 | 分类于 网站运维 搜索插件进入博客根目录,从cmd输入以下命令 1npm install hexo-generator-searchdb --save 修改 站点配置 文件,注意 search.xml 的路径 阅读全文 »