ElasticSearch 如何使用 ik 进行中文分词?

2021-04-12
阅读 8 分钟
3.9k
大家好,我是历小冰。在《为什么 ElasticSearch 比 MySQL 更适合复杂条件搜索》 一文中,我们讲解了 ElasticSearch 如何在数据存储方面支持全文搜索和复杂条件查询,本篇文章则着重分析 ElasticSearch 在全文搜索前如何使用 ik 进行分词,让大家对 ElasticSearch 的全文搜索和 ik 中文分词原理有一个全面且深入的了解。
封面图

一万字详解 Redis Cluster Gossip 协议

2020-12-03
阅读 19 分钟
11k
对于数据存储领域,当数据量或者请求流量大到一定程度后,就必然会引入分布式。比如 Redis,虽然其单机性能十分优秀,但是因为下列原因时,也不得不引入集群。

Java 数据持久化系列之 HikariCP (一)

2020-04-14
阅读 8 分钟
1.8k
在上一篇《Java 数据持久化系列之池化技术》中,我们了解了池化技术,并使用 Apache-common-Pool2 实现了一个简单连接池,实验对比了它和 HikariCP、Druid 等数据库连接池的性能数据。在性能方面,HikariCP遥遥领先,而且它还是 Spring Boot 2.0 默认的数据库连接池。下面我们就来了解一下这款明星级开源数据库连接池的...

MySQL的死锁系列- 锁的类型以及加锁原理

2020-04-01
阅读 6 分钟
2.9k
疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发现了死锁现象:

Redis 命令执行过程(下)

2019-12-14
阅读 12 分钟
1.7k
在上一篇文章中《Redis 命令执行过程(上)》中,我们首先了解 Redis 命令执行的整体流程,然后细致分析了从 Redis 启动到建立 socket 连接,再到读取 socket 数据到输入缓冲区,解析命令,执行命令等过程的原理和实现细节。接下来,我们来具体看一下 set 和 get 命令的实现细节和如何将命令结果通过输出缓冲区和 socket ...

Java 数据持久化系列之JDBC

2019-11-26
阅读 8 分钟
2.2k
前段时间小冰在工作中遇到了一系列关于数据持久化的问题,在排查问题时发现自己对 Java 后端的数据持久化框架的原理都不太了解,只有不断试错,因此走了很多弯路。于是下定决心,集中精力学习了持久化相关框架的原理和实现,总结出这个系列。

当 Redis 发生高延迟时,到底发生了什么

2019-11-12
阅读 5 分钟
2k
Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多。但是 Redis 也会发生延迟时,这是就需要我们对其产生原因有深刻的了解,以便于快速排查问题,解决 Redis的延迟问题

公理设计-由奇怪海战引发的软件设计思考

2019-11-02
阅读 3 分钟
1.4k
公理设计理论将设计建立在科学公理、定理和推论的基础上,由麻省理工学院教授 Nam. P. Suh 领导的研究小组于 1978 年提出,适用于各种类别的设计活动。软件设计当然也属于一类工程设计过程,下面我们就来看一下两者的关联。

详解 Redis 内存管理机制和实现

2019-10-30
阅读 10 分钟
2.8k
防止所用内存超过服务器物理内存。因为 Redis 默认情况下是会尽可能多使用服务器的内存,可能会出现服务器内存不足,导致 Redis 进程被杀死。

一文了解 Redis 内存监控和内存消耗

2019-10-15
阅读 6 分钟
2.8k
Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多。所以,监控 Redis 的内存消耗并了解 Redis 内存模型对高效并长期稳定使用 Redis 至关重要。

Redis 复制过程详解

2019-09-22
阅读 4 分钟
2k
Redis 的复制功能分为同步( sync )和命令传播( command propagate )两个步骤: 同步用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态。 命令传播则用于在主服务器的数据库状态被修改,导致主从服务器的数据库状态出现不一致时,让主从服务器的数据库重新回到一致状态。 同步 Redis 使用 psync 命令完成主...

编程小技巧之 Linux 文本处理命令

2019-09-18
阅读 6 分钟
1.2k
本文简单的介绍三个能使用 Linux 文本处理命令的场景,给大家开阔一下思路。希望大家阅读完这篇文章之后,要多加实践,将这些技巧内化到自己的日常工作习惯中,真正的提高效率。内化很重要,就像开玩笑所说的一样,即使我知道高内聚,低耦合的要求,了解 23 种设计模式和 6 大原则,熟读代码整洁之道,却仍然写不出优秀...

Redis 事件机制详解

2019-08-08
阅读 12 分钟
5k
Redis 采用事件驱动机制来处理大量的网络IO。它并没有使用 libevent 或者 libev 这样的成熟开源方案,而是自己实现一个非常简洁的事件驱动库 ae_event。

Redis AOF 持久化详解

2019-07-30
阅读 4 分钟
2.6k
Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多。但是一旦进程退出,Redis 的数据就会丢失。

TCP 拥塞控制算法

2019-03-01
阅读 4 分钟
11.1k
最近花了些时间在学习TCP/IP协议上,首要原因是由于本人长期以来对TCP/IP的认识就只限于三次握手四次分手上,所以希望深入了解一下。再者,TCP/IP和Linux系统层级的很多设计都可以用于中间件系统架构上,比如说TCP 拥塞控制算法也可以用于以响应时间来限流的中间件。更深一层,像TCP/IP协议这种基础知识和原理性的技术,...

MySQL探秘(八):InnoDB的事务

2018-12-24
阅读 5 分钟
3.8k
事务是数据库最为重要的机制之一,凡是使用过数据库的人,都了解数据库的事务机制,也对ACID四个基本特性如数家珍。但是聊起事务或者ACID的底层实现原理,往往言之不详,不明所以。所以,今天我们就一起来分析和探讨InnoDB的事务机制,希望能建立起对事务底层实现原理的具体了解。

MySQL探秘(六):InnoDB一致性非锁定读

2018-11-18
阅读 5 分钟
4.2k
一致性非锁定读(consistent nonlocking read)是指InnoDB存储引擎通过多版本控制(MVVC)读取当前数据库中行数据的方式。如果读取的行正在执行DELETE或UPDATE操作,这时读取操作不会因此去等待行上锁的释放。相反地,InnoDB会去读取行的一个快照。

MySQL探秘(三):InnoDB的内存结构和特性

2018-08-26
阅读 4 分钟
3.2k
常言说得好,每个成功男人背后都有一个为他默默付出的女人,而对于MySQL来说,这个“人”就是InnoDB存储引擎。 MySQL区别于其他数据库的最为重要的特点就是其插件式的表存储引擎。而在众多存储引擎中,InnoDB是最为常用的存储引擎。从MySQL5.5.8版本开始,InnoDB存储引擎是默认的存储引擎。 InnoDB存储引擎支持事务,其设...

View的三次measure,两次layout和一次draw

2016-10-30
阅读 5 分钟
4.4k
我在《Android视图结构》这篇文章中已经描述了Activity,Window和View在视图架构方面的关系。前天,我突然想到为什么在setContentView中能够调用findViewById函数?View那时不是还没有被加载,测量,布局和绘制啊。然后就搜索了相关的条目,发现findViewById只需要在inflate结束之后就可以。于是,我整理了Activity生命周...

Android 图像处理(一) : Shader

2016-08-26
阅读 5 分钟
3.5k
之前一段时间,我都在研究Android自定义View的相关知识,随着逐渐的深入,渐渐了解到了一些Android图像处理的知识,主要是Bitmap,Canvas,Shader,Matric,ColorFilter和Xfermode的使用。所以准备写一系列文章介绍一下这些方面的知识。

Android Span 进阶

2016-08-08
阅读 8 分钟
3.8k
在上篇文章《Android Span 架构介绍》,我们讲述了Android Span的基本概念和用法,这篇文章我们就来扩展一下我们对Android Span的了解,这一定会使你感到惊奇的,惊叹Android Span竟然还能完成这些的效果,让你在Android自定义View和动画方面有更加深刻的理解,可能会帮助你你想出更加简洁的实现方式。 本篇文章主要讲述...

Android Span 架构介绍

2016-08-05
阅读 8 分钟
3.9k
前几天在微博上看到一个人评论Android Span机制相当强大,有必要细心研究一下,于是就google了一下,发现了一篇很好的文章Spans, a Powerful Concept.,然后以这篇文章为基础研究了一下Android Span的用法。于是决定写几篇文章来总结一下。

自定义Switch过程详解

2016-07-15
阅读 7 分钟
3.2k
前段时间,我看到了一篇关于Android动画的文章Android View 仿iOS SwitchButton Material Design,十分喜欢文章作者的笔风,可惜每个人的笔风都不同,不过我倒是实现了一个类似的Switch组件,项目地址为[链接],就用这篇文章来讲述一下实现过程和机制吧。

TCP/IP协议详解(二):建立和关闭连接

2016-06-15
阅读 3 分钟
3.8k
看了酷壳网站上的《TCP 的那些事儿》系列文章,有一点很受启发:锻炼一下自己是否使用较少的篇幅将TCP协议讲解清楚。一般的同学写博文,可能像摊大饼一样,篇幅较多并且罗嗦。我以前写文章时也是这个习惯,所以希望在以后的博文写作过程中,尽量使用比较短的篇幅来讲完想要讲的内容。 为了节约你的时间,本片文章主要讲...

TCP/IP详解阅读笔记(一):TCP协议

2016-06-09
阅读 2 分钟
4.4k
前段时间提交了本科毕业论文,这段时间特别空闲,于是希望研究一些基础性的技术,比如网络和编译原理。于是就找来《TCP/IP协议详解》来看,并做一些笔记,记录一下感悟或在重点。 为了节约你的时间,本文主要内容为:

Python中的plisttext和HTTP的Content-Type

2016-05-28
阅读 3 分钟
3.4k
这段时间本人在学习Android Service相关的内容,临时需要一个可以提供文件上传和下载功能的服务器,于是上网查找了一个简单服务器的python实现代码,本着温顾一下HTTP协议的想法,于是深入研究了一下其中的代码,发现大家对SimpleHTTPRequestsHandler中的self.headers.plisttext.split("=")[1]语句的含义不是很理解,于...

Property Animation 框架详解(一)

2016-05-09
阅读 10 分钟
4.1k
前段时间阅读了一篇关于Android动画学习的文章《如何学习 Android Animation?》,深感Android动画种类繁复,类型多遍,虽然自己实现过很多动画效果,但是对Android动画的整体领悟还有所欠缺,所以决定最近好好研究一下Android动画的相关内容。

SICP 习题2.6之丘奇数

2016-05-01
阅读 2 分钟
2.7k
最近一直在阅读《SICP》,然后下午做其中的习题2.6,对其题意很不理解,于是搜索了相关资料,不禁如题设所说感到如雷灌顶,特此记录下来,以供大家阅读和交流

Android Scroll详解(三):Android 绘制过程详解

2016-04-21
阅读 10 分钟
6.2k
本篇为Android Scroll系列文章的最后一篇,主要讲解Android视图绘制机制,由于本系列文章内容都是视图滚动相关的,所以,本篇从视图内容滚动的视角来梳理视图绘制过程。

Android视图架构详解

2016-04-17
阅读 6 分钟
4.3k
最近一直在研究View的绘制相关的机制,发现需要补充一下Android View Architecture的相关知识,所以就特地研究了一下这方面的代码,写成本篇文章