摘要: 通过简单的KV数据库理解Redis 分为访问模块,操作模块,索引模块,存储模块 底层数据结构 除了String类型,其他类型都是一个键对应一个集合,键值对的存储结构采用哈希表 哈希表由多个哈希桶组成,桶中存储entry元素,存储key和value的地址 但是当hash冲突元素过多会导致查询效率变慢, 阅读全文
posted @ 2022-08-07 12:30 山野村夫01 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 高并发组件了解 消息队列 解耦 A服务和多个服务耦合,内部维护对多个服务发送数据的接口,那么这些接口如果有的挂了,有的不需要了,那么还得修改A内部的代码,如果使用MQ,A发送消息就好,不必考虑那么多事情。 通过一个 MQ,Pub/Sub 发布订阅消息这么一个模型,A 系统就跟其它系统彻底解耦了 异步 不需等待整个业 阅读全文
posted @ 2022-07-29 22:41 山野村夫01 阅读(133) 评论(0) 推荐(0) 编辑
摘要: HTTP Study HTTP 定义:在两点之间传输文本,视频,图片等超文本数据的协议和规范 来自3.1 HTTP 常见面试题 | 小林coding (xiaolincoding.com) HTTP风险 窃听: 通信使用明文,https通过信息加密(混合加密)解决 对称加密和非对称加密 篡改: 无法验证报文的完整性,ht 阅读全文
posted @ 2022-07-22 11:49 山野村夫01 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 显示字符集编码 mysql架构 逻辑架构 Client :提供连接MySQL服务器功能的常用工具集 Server :MySQL实例,真正提供数据存储和数据处理功能的MySQL服务器进程 mysqld:MySQL服务器守护程序,在后台运行。它管理着客户端请求。mysqld是一个多线程的进程,允许多个会 阅读全文
posted @ 2022-07-19 11:43 山野村夫01 阅读(108) 评论(0) 推荐(0) 编辑
摘要: Redis学习 Redis 因为没有指定配置文件 需配置 redis-server redis.windows.conf 之后自动启动 测试性能 redis-benchmark -p 6379 -c 100 -n 10000 基础概念: 清空当前数据库:flushdb 清空全部数据库:flushall redis是 阅读全文
posted @ 2022-07-18 11:29 山野村夫01 阅读(69) 评论(0) 推荐(0) 编辑
摘要: JVM JVM 一、什么是JVM 定义 Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境) 好处 一次编写,到处运行 自动内存管理,垃圾回收机制 数组下标越界检查 比较 JVM JRE JDK的区别 二、内存结构 整体架构 1、程序计数器 作用 用于保存JVM 阅读全文
posted @ 2022-07-17 21:29 山野村夫01 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 1.构造函数 有三种 说第一种无参构造,默认初始容量为10 2.add函数 /** * 将指定的元素追加到此列表的末尾。 */ public boolean add(E e) { //添加元素之前,先调用ensureCapacityInternal方法 ensureCapacityInternal( 阅读全文
posted @ 2022-07-17 19:06 山野村夫01 阅读(148) 评论(0) 推荐(0) 编辑
摘要: InnoDB存储引擎在 RR 级别下通过 MVCC和 Next-key Lock 来解决幻读问题: 1、执行普通 select,此时会以 MVCC 快照读的方式读取数据 在快照读的情况下,RR 隔离级别只会在事务开启后的第一次查询生成 Read View ,并使用至事务提交。所以在生成 Read V 阅读全文
posted @ 2022-07-17 19:03 山野村夫01 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 索引的树结构 查找结构的进化 二分查找 二叉树 二叉平衡树 B-TREE :二叉平衡树的基础上,使加载一次节点,可以加载更多路径数据,同时把查询范围缩减到更小 缺点:业务数据的大小可能远远超过了索引数据的大小,每次为了查找对比计算,需要把数据加载到内存以及 CPU 高速缓存中时,都要把索引数据和无关的业务数据全部 阅读全文
posted @ 2022-07-17 19:01 山野村夫01 阅读(164) 评论(0) 推荐(0) 编辑
摘要: select,poll,epoll select、poll、epoll 区别总结: 底层实现 select/poll 首先把关注的Socket集合从用户态拷贝到内核态,然后由内核检测事件,遍历整个集合(由于线性结构实现,时间复杂度为O(n))找到对应的socket,并改变状态为可读或者可写,然后再拷贝整个socket集合到用户态,继续 阅读全文
posted @ 2022-07-17 18:57 山野村夫01 阅读(40) 评论(0) 推荐(0) 编辑