摘要:
00 JDK常见数据结构 https://www.cnblogs.com/lizhuxin/p/10745199.html 01 java中IO、NIO https://www.cnblogs.com/lizhuxin/p/10745212.html 02 java多线程基础 https://www 阅读全文
摘要:
微服务很多核心理念其实在半个世纪前的一篇文章中就被阐述过了,而且这篇文章中的很多论点在软件开发飞速发展的这半个世纪中竟然一再被验证,这就是康威定律(Conway's Law)。 在康威的这篇文章中,最有名的一句话就是: Organizations which design systems are c 阅读全文
摘要:
1 设计的六大原则 1.1开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具 阅读全文
摘要:
1软件架构概念 Architecture架构,每个人的理解都不同。 分为组成派和决策派。 组成派:软件系统的架构将系统描述为计算组件以及组件之间的交互(The architecture of a software system defines that system in term of compu 阅读全文
摘要:
MySQL有四种类型的日志:Error Log、General Query Log、Binary Log 和 Slow Query Log。 1 Error Log 错误日志是最重要的日志之一,它记录了MariaDB/MySQL服务启动和停止正确和错误的信息,还记录了mysqld实例运行过程中发生的 阅读全文
摘要:
1 MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。如图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISA 阅读全文
摘要:
1 框架 架构图如下: 连接驱动:每当一个客户端连接MySQL服务器的时候,服务器都会执行认证。认证基于用户名,客户端主机和客户端用户密码。客户端连上MySQL服务器以后,服务器会检查客户端是否有权限发起特定的请求。 缓存:查询缓存保存了SELECT语句的完整结果集。在解析查询之前,MySQL服务器 阅读全文
摘要:
Redis做缓存是最常见的应用场景。客户端请求在缓存层命中就直接返回,如果没命中就去查询数据库,再写入到redis,然后再返回到客户端。流程如下: 在这个过程中会有如下常见问题 1 穿透 穿透:频繁查询一个不存在的数据,由于缓存不命中,每次都要查询持久层。从而失去缓存的意义。 示例说明:比如数据库表 阅读全文
摘要:
1 概念 分布式锁:是进程级别的锁,用于控制多个进程对同一资源的访问。 实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁 可靠性要求: 互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也 阅读全文
摘要:
1 客户端与服务端交互过程 2 单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是 阅读全文