布隆过滤器(Bloom Filter) 发表于 2019-11-27 | 更新于: 2019-11-29 | 分类于 基础知识 , Bloom 字数统计: 3k | 阅读时长 ≈ 12 概念布隆过滤器(英语:Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。 优点: 空间效率和查询时间都远远超过一般的算法 缺点: 有一定的误识别率和删除困难。 原理布隆过滤器的原理 ... 阅读全文 »
Redis过期键处理策略 发表于 2019-11-22 | 更新于: 2019-11-22 | 分类于 中间件 , Redis 字数统计: 2.8k | 阅读时长 ≈ 10 Redis Expire Key基础redis数据库在数据库服务器中使用了 redisDb 数据结构,结构如下: 12345678910typedef struct redisDb { dict *dict; /* 键空间 key space */ d ... 阅读全文 »
Netty性能优化 发表于 2019-11-20 | 更新于: 2019-11-20 | 分类于 Netty , 基础 字数统计: 3.3k | 阅读时长 ≈ 13 共享Handler代码:https://github.com/austin-brant/netty-im 在使用 Netty 完成了一个 IM 系统的核心功能之后,我们再来仔细看一下服务端 NettyServer.java 1234567891011121314151617serverBoots ... 阅读全文 »
Netty心跳与空闲检测 发表于 2019-11-15 | 更新于: 2019-11-20 | 分类于 Netty , 基础 字数统计: 2.4k | 阅读时长 ≈ 8 代码:https://github.com/austin-brant/netty-im 网络问题下图是网络应用程序普遍会遇到的一个问题:连接假死 连接假死的现象是: 在某一端(服务端或者客户端)看来,底层的 TCP 连接已经断开了,但是应用程序并没有捕获到,因此会认为这条连接仍然是存在的,从 TC ... 阅读全文 »
Netty ChannelHandler生命周期 发表于 2019-11-14 | 更新于: 2019-11-20 | 分类于 Netty , 基础 字数统计: 2k | 阅读时长 ≈ 7 ChannelHandler有很多回调方法,这些回调方法的执行是有顺序的,而这个执行顺序可以称为 ChannelHandler 的生命周期。 代码:https://github.com/austin-brant/netty-im 生命周期详解对于服务端应用程序来说,我们这里讨论 ChannelHa ... 阅读全文 »
Netty数据传输载体ByteBuf简介 发表于 2019-11-12 | 更新于: 2019-11-20 | 分类于 Netty , 基础 字数统计: 2.9k | 阅读时长 ≈ 11 代码:https://github.com/austin-brant/netty-im ByteBuf结构首先,我们先来了解一下 ByteBuf 的结构 以上就是一个 ByteBuf 的结构图,从上面这幅图可以看到 ByteBuf 是一个字节容器,容器里面的的数据分为三个部分: 第一个部分是已经 ... 阅读全文 »
Mysql性能分析工具 发表于 2019-10-09 | 更新于: 2019-10-09 | 分类于 Mysql , 性能 字数统计: 4.5k | 阅读时长 ≈ 21 Explain简介MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如: 1EXPLAIN SELE ... 阅读全文 »
Mysql索引底层原理 发表于 2019-09-28 | 更新于: 2019-10-09 | 分类于 Mysql , 索引 字数统计: 3.9k | 阅读时长 ≈ 13 常用引擎InnoDB(聚集索引) InnoDB的存储文件有两个,后缀名分别是.frm 和.idb,其中.frm是表的定义文件,而.idb是索引和数据文件。 InnoDB 中存在表锁和行锁,不过行锁是在命中索引的情况下才会起作用。 InnoDB 支持事务,且支持四种隔离级别(读未提交、读已提交、可 ... 阅读全文 »
Kafka快速入门 发表于 2019-09-23 | 更新于: 2019-09-23 | 分类于 中间件 , Kafka 字数统计: 6.3k | 阅读时长 ≈ 22 介绍Apache Kafka® 是 一个分布式流处理平台.我们知道流处理平台有以下三种特性: 可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。 可以储存流式的记录,并且有较好的容错性。 可以在流式记录产生时就进行处理。 Kafka适合什么样的场景? 它可以用于两大类别的应用 ... 阅读全文 »
Mysql入门 发表于 2019-09-22 | 更新于: 2019-11-22 | 分类于 Mysql , 入门 字数统计: 4.6k | 阅读时长 ≈ 16 重识Count()COUNT(列名)、COUNT(常量)和COUNT(*)之间区别前面我们提到过 COUNT(expr) 用于做行数统计,统计的是expr不为NULL的行数,那么 COUNT(列名)、 COUNT(常量) 和 COUNT(*) 这三种语法中,expr分别是列名、 常量 和 *。 那么 ... 阅读全文 »