摘要:一、为什么需要全文索引? 通过 前面的文章 我们了解到 B+ 树索引具有"最左前缀匹配"的特性,因此,对于以下查询 B+ 树索引能很好的适配。 SELECT * FROM blog WHERE content like 'xxx%' 但是 B+ 树索引对于 '%xxx%' 式的匹配却显得无能为力,而 阅读全文
posted @ 2020-08-20 09:18 JMCui 阅读(48) 评论(0) 推荐(0) 编辑
摘要:一、B+树索引概述 索引是应用程序设计和开发的一个重要方面。若索引太多,应用程序的性能可能会受到影响(需维护索引的结构和数据);而索引太少,对查询性能又会产生影响。 二叉树,左子树的键值总是小于根的键值,右子树的键值总是大于根的键值。 平衡二叉树(AVL树),任何节点的两个子树的高度最大差为 1。平 阅读全文
posted @ 2020-08-13 09:25 JMCui 阅读(68) 评论(0) 推荐(0) 编辑
摘要:引入 MRR,全称「Multi-Range Read Optimization」。 简单说:MRR 通过把「随机磁盘读」,转化为「顺序磁盘读」,从而提高了索引查询的性能。 至于: 为什么要把随机读转化为顺序读? 怎么转化的? 为什么顺序读就能提升读取性能? 执行一个范围查询: mysql > exp 阅读全文
posted @ 2020-08-12 09:50 JMCui 阅读(49) 评论(1) 推荐(0) 编辑
摘要:MySQL 数据库在 5.1 版本时添加了对分区(partitioning)的支持。分区的过程是将一个表或索引分解成多个更小、更可管理的部分。就访问数据库的应用而言,从逻辑上来讲,只有一个表或一个索引,但是在物理上这个表或索引可能由数十个物理分区组成。 MySQL 分区功能并不是在存储引擎层完成的, 阅读全文
posted @ 2020-07-31 13:20 JMCui 阅读(75) 评论(0) 推荐(0) 编辑
摘要:一、InnoDB 体系架构 InnoDB 存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作: 维护所有进程/线程需要访问的多个内部数据结构。 缓存磁盘上的数据,方便快速的读取,同时对磁盘文件的数据修改之前在这里进行缓存。 重做日志(redo log)缓冲。 后台线程的主要作 阅读全文
posted @ 2020-07-15 10:48 JMCui 阅读(86) 评论(0) 推荐(0) 编辑
摘要:BASIC 认证 BASIC 认证(基本认证)是从 HTTP/1.0 就定义的认证方式。 BASIC 认证会将“用户名:密码”经过 Base64 加密后放入请求头部的 Authorization 字段用于服务端校验,因为采用的是 Base64 加密,密码被盗用的风险极高,另外一般的浏览器也无法实现认 阅读全文
posted @ 2020-07-05 07:55 JMCui 阅读(99) 评论(0) 推荐(1) 编辑
摘要:一、前言 HTTP 协议具有无状态、不连接、尽最大努力的特点,对于 Web 网站的攻击基本也是针对 HTTP 协议的这些特点进行的。比如无状态的特点,就要求开发者需要自行设计开发"认证"和"会话管理"功能来满足 Web 应用的安全,而形形色色的自行实现,也为用户会话劫持、SQL 注入等攻击埋下了风险 阅读全文
posted @ 2020-06-30 18:03 JMCui 阅读(2007) 评论(1) 推荐(10) 编辑
摘要:随着智能化互联时代的来临,家中的智能设备越来越多:电视机、平板、游戏主机、电脑、手机等遍及家中各个角落,同时设备之间共享数据的需求变的越来越强烈。比如同步、备份手机上的照片和视频,在电视机上观看电脑中下载的影片、手机拍摄的视频,存储高清电影、音乐、VLOG 素材等。这时候在家中搭建一台 NAS(Ne 阅读全文
posted @ 2020-06-24 17:45 JMCui 阅读(1857) 评论(1) 推荐(2) 编辑
摘要:前言: 网上聊 HTTPS 的文章已经数都数不过来了吧,厚着脸皮,整理下读书笔记,结合平常项目的实践,也来聊聊 HTTPS。 ##一、为什么需要 HTTPS? 众所周知,HTTP 协议具有无连接、不可靠、尽最大努力的特点,这也为 HTPP 协议带来信息窃听或身份伪装等安全问题。主要体现在几个方面: 阅读全文
posted @ 2020-06-22 22:49 JMCui 阅读(244) 评论(0) 推荐(1) 编辑
摘要:一、概述 HTTP 首部字段是构成 HTTP 报文的要素之一。在客户端与服务器之间以 HTTP 协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用。 使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。 HTTP/1.1 首部字段根 阅读全文
posted @ 2020-06-15 11:27 JMCui 阅读(93) 评论(0) 推荐(0) 编辑
摘要:一、前言 高可用性 HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。HA 系统是目前企业防止核心计算机系统因故障停机的最有效手段。 实现 HA 的方式,一般采用两台机器同时完成一项功能,比如数据库 阅读全文
posted @ 2020-06-06 16:51 JMCui 阅读(516) 评论(0) 推荐(0) 编辑
摘要:一、HTTP 请求流程 最初,HTTP 协议的出现主要是为了解决文本传输的难题,由于协议本身非常简单,于是在此基础上设想了很多应用方法并投入了实际使用。现在 HTTP 协议已经超出了 Web 这个框架的局限,被运用到了各种场景里。 目前主流的 HTTP 版本还是 HTTP/1.1。 HTTP 协议基 阅读全文
posted @ 2020-05-20 11:13 JMCui 阅读(98) 评论(0) 推荐(0) 编辑
摘要:一、jacoco 简介 jacoco 是一个开源的覆盖率工具,它针对的开发语言是 java。其使用方法很灵活,可以嵌入到 ant、maven 中;可以作为 Eclipse 插件;可以作为 javaAgent 探针监控 java 程序等等。 很多第三方的工具提供了对 jacoco 的集成,如 sona 阅读全文
posted @ 2020-05-07 15:09 JMCui 阅读(1089) 评论(0) 推荐(0) 编辑
摘要:一、前言 相信做过开发的同学,都多多少少写过下面的代码,很长一段时间我一直以为这就是单元测试... @SpringBootTest @RunWith(SpringRunner.class) public class UnitTest1 { @Autowired private UnitService 阅读全文
posted @ 2020-04-29 14:41 JMCui 阅读(832) 评论(0) 推荐(3) 编辑
摘要:一、git hook 和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。有两组这样的钩子:客户端钩子和服务器钩子。客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 钩子都被存储在 Git 目录下的 hooks 子目录中。 也即 阅读全文
posted @ 2020-04-27 11:30 JMCui 阅读(570) 评论(0) 推荐(0) 编辑