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