<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[skystep的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/skystep</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; skystep]]></copyright><item><title><![CDATA[Elasticsearch 集群和分片使用]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/127740153</link><guid>https://blog.youkuaiyun.com/skystep/article/details/127740153</guid><author>skystep</author><pubDate>Mon, 07 Nov 2022 21:49:53 +0800</pubDate><description><![CDATA[一个集群就是由一个或多个节点组织在一起，它们共同持有整个的数据，并一起提供索引和搜索功能；一个节点是集群中的一个服务器，作为集群的一部分，它存储你的数据，参与集群的索引和搜索功能。]]></description><category></category></item><item><title><![CDATA[Elasticsearch 入门]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/127543887</link><guid>https://blog.youkuaiyun.com/skystep/article/details/127543887</guid><author>skystep</author><pubDate>Thu, 27 Oct 2022 22:54:34 +0800</pubDate><description><![CDATA[Elasticsearch 是一个非常强大的搜索引擎。它目前被广泛地使用于各个 IT 公司。Elasticsearch 是由 Elastic 公司创建。它的代码位于 GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine。目前，Elasticsearch 是一个免费及开放（free and open）的项目。同时，Elastic 公司也拥有 Logstash 及 Kibana 开源项目。]]></description><category></category></item><item><title><![CDATA[Redisson 三种集群部署模式使用]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/127001912</link><guid>https://blog.youkuaiyun.com/skystep/article/details/127001912</guid><author>skystep</author><pubDate>Thu, 22 Sep 2022 23:06:54 +0800</pubDate><description><![CDATA[Redis 常见四种部署模式：单机部署、主从模式部署、sentinel 部署模式、分片模式，针对不同场景一般选择不同的集群部署模式。而 redisson 单机部署针对不同的部署模式分别提供了不同的 API 以统一操作。]]></description><category></category></item><item><title><![CDATA[MySQL 索引的使用和设计]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126844328</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126844328</guid><author>skystep</author><pubDate>Wed, 14 Sep 2022 00:47:10 +0800</pubDate><description><![CDATA[如果进行更新的时候，更新的字段是非索引字段，提升的效率会更明显，这是因为非索引字段更新不需要对索引进行维护。索引就是让数据按照某种顺序进行存储或检索，因此当我们使用 GROUP BY 对数据进行分组查询，或者使用 ORDER BY 对数据进行排序的时候，就需要 对分组或者排序的字段进行索引。这样也可以较少的建立一些索引。需要对某个字段进行去重，使用 DISTINCT，那么对这个字段创建索引，也会提升查询效率。在数据量不大的情况下，索引就发挥不出作用了，但是却消耗了空间和降低增、删、改的效率。]]></description><category></category></item><item><title><![CDATA[MySQL 索引]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126824489</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126824489</guid><author>skystep</author><pubDate>Mon, 12 Sep 2022 23:07:30 +0800</pubDate><description><![CDATA[索引是 帮助MySQL高效获取数据的数据结构。MySQL 数据存储硬盘不是连续存储，记录的存储单位是数据页，每次查询需对数据页的进行读取和加载，免不了 IO 操作，如果遍历全部页，那么意味着进行多次 IO 操作。索引通过实现了一套数据结构，记录了数据页和记录的关系，使得以更少的 IO 次数获取到目标数据页。此外，该数据结构对数据进行了预先排序，满足特定查找算法，可以更快的查询到数据页上的目标记录。因此，索引可以通过减少 IO 操作次数、使用更加快速的查找算法查找到目标记录。]]></description><category></category></item><item><title><![CDATA[MySQL 索引失效]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126696617</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126696617</guid><author>skystep</author><pubDate>Sun, 04 Sep 2022 23:48:17 +0800</pubDate><description><![CDATA[所以尽量让主键具有 AUTO_INCREMENT ，让存储引擎自己为表生成主键，而不是手动插入 ，比如： person_info 表：我们自定义的主键列 id 拥有 AUTO_INCREMENT 属性，在插入记录时存储引擎会自动为我们填入自增的主键值。所以如果想尽量避免这样无谓的性能损耗，最好让插入的记录的主键值依次递增 ，这样就不会发生这样的性能损耗了。虽然建立了索引，但是该索引最左边的是 age，查询语句中不包含 age，根据最左前缀匹配特性，这时候索引失效。8、OR 前后存在非索引的列，索引失效。]]></description><category></category></item><item><title><![CDATA[Redis 持久化]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126634473</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126634473</guid><author>skystep</author><pubDate>Thu, 01 Sep 2022 00:02:30 +0800</pubDate><description><![CDATA[AOF (Append Only File) 持久化默认是关闭的，通过将 redis.conf 中将 appendonly no，修改为 appendonly yes 来开启AOF 持久化功能，如果服务器开始了 AOF 持久化功能，服务器会优先使用 AOF 文件来还原数据库状态。如图所示，将 RDB 数据文件的内容和增量的 AOF 命令文件存在一起。：把内存数据以快照的形式保存到磁盘上，在指定的时间间隔内，执行指定次数的持久操作，将内存中的数据集快照写入磁盘中，它是 Redis 默认的持久化方式。...]]></description><category></category></item><item><title><![CDATA[缓存穿透、缓存击穿、缓存雪崩]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126634369</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126634369</guid><author>skystep</author><pubDate>Wed, 31 Aug 2022 23:26:30 +0800</pubDate><description><![CDATA[在并发的多个请求中，只有第一个请求线程能拿到锁并执行数据库查询操作，其他的线程拿不到锁就阻塞等着，等到第一个线程将数据写入缓存后，直接走缓存。说明：大量的热点 key 设置了相同的过期时间，导在缓存在同一时刻全部失效，造成瞬时数据库请求量大、压力骤增，引起雪崩，甚至导致数据库被打挂。在并发的多个请求中，只有第一个请求线程能拿到锁并执行数据库查询操作，其他的线程拿不到锁就阻塞等着，等到第一个线程将数据写入缓存后，直接走缓存。如图：每次请求都经过3、4、5，每次都要操作数据库，也就是缓存无效了。...]]></description><category></category></item><item><title><![CDATA[EMQX 集群节点数据转发]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126595168</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126595168</guid><author>skystep</author><pubDate>Tue, 30 Aug 2022 00:21:35 +0800</pubDate><description><![CDATA[emqx 分布式集群解决的问题时将客户端连接分到不同的节点上，从未获取到最大的连接数和并发量。 因此也带来了新的问题：订阅者和发布者不再同一个节点上，发布者的消息需要进行中转才能到达订阅者。

emqx 设计了一套数据路由中转机制，其中主要使用了订阅表、路由表、主题树。三者搭配实现了数据的路由。.........]]></description><category></category></item><item><title><![CDATA[grep 使用]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126569346</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126569346</guid><author>skystep</author><pubDate>Sun, 28 Aug 2022 14:15:05 +0800</pubDate><description><![CDATA[常见参数：-r : 递归查询目录下的所有文件；-n：显示行号；-v：排除关键字；-o：只输出匹配的字符串；-num：num为数值，输出匹配的上下num行；-i：忽略大小写。

查找进程、 文件查找关键字、查找CPU占用最大进程、查找内存占用最大进程、查找磁盘占用最大文件
...]]></description><category></category></item><item><title><![CDATA[MySQL 事务]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126569236</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126569236</guid><author>skystep</author><pubDate>Sun, 28 Aug 2022 14:00:41 +0800</pubDate><description><![CDATA[MySQL 事务
保证多个任务执行要不同时成功要不同时回滚。事务支持是在引擎层实现的，Mysql 的默认引擎 InnoDB 是支持事务的，MyISAM 是不支持事务的。

事务特性 ACID
原子性：一个事务包括多个任务，所有的任务要不全成功，要不全部失败回滚，不存在部分成功；
一致性：如果事务成功地完成，那么系统中所有变化将正确地应用，系统处于有效状态；如果在事务中出现错误，那么系统中的所有变化将自动地回滚，系统返回到原始状态；
隔离性：指在并发环境中，并发的事务是相互隔离的，每个事务都有各自完成的数据空]]></description><category></category></item><item><title><![CDATA[Netty 实现传输字符串]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126457984</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126457984</guid><author>skystep</author><pubDate>Mon, 22 Aug 2022 00:44:30 +0800</pubDate><description><![CDATA[【代码】Netty 实现传输字符串。]]></description><category></category></item><item><title><![CDATA[Netty-解码器]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126457850</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126457850</guid><author>skystep</author><pubDate>Mon, 22 Aug 2022 00:25:35 +0800</pubDate><description><![CDATA[该解码器是四个解码器中相对来说稍显复杂一点，不是实现复杂，是因为以下两个方面的原因：一是参数较多，二是准确计算各参数的值。1.发送端给每个数据包添加包首部，首部中应该至少包含数据包的长度，这样接收端在接收到数据后，通过读取包首部的长度字段，便知道每一个数据包的实际长度了。2.发送端将每个数据包封装为固定长度（不够的可以通过补0填充），这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。行解码器：使用换行符\n或者\r\n作为依据，遇到\n或者\r\n都认为是一条完整的消息。]]></description><category></category></item><item><title><![CDATA[Netty-自定义线程池处理长耗时业务]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126457769</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126457769</guid><author>skystep</author><pubDate>Mon, 22 Aug 2022 00:16:42 +0800</pubDate><description><![CDATA[在Netty中，EventLoop 和 EventExecutorGroup 提供的普通任务不能解决长耗时业务处理引起的 I/O 线程阻塞问题，究其原因：在 Netty 中，一个 channel 在它的生命中期内只注册于一个 EventLoop，而一个 EventLoop 在它的生命周期内只和一个线程绑定，一个给定的 channel 的 I/O 操作都是由相同的线程进行处理。为此不能直接在该线程上进行长耗时业务处理。为了解决这个问题，通常的做法是：自定义线程池,把长耗时的业务都丢到线程池中去处理。]]></description><category></category></item><item><title><![CDATA[图说 Netty 核心组件]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126457618</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126457618</guid><author>skystep</author><pubDate>Mon, 22 Aug 2022 00:03:01 +0800</pubDate><description><![CDATA[Netty 功能非常强大，依赖于其团队对其高度抽象化和模块化，封装出各个组件，开发者只需要调用对应的组件便可以轻松构造出高性能服务。

通常编写最简单高效的服务一般会涉及到如下组件：

Channel、EventLoop、ChannelFuture：socket 管理、控制流、多线程、并发；
ChannelHandler、ChannelPipeline：管理数据流和数据处理；
ByteBuf：高效简单的数据读写缓存，数据读写容器；
Encode、Decode：一套编解码框架;
Bootstrap：配置服务参]]></description><category></category></item><item><title><![CDATA[认识 EMQX]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126450368</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126450368</guid><author>skystep</author><pubDate>Sun, 21 Aug 2022 14:00:59 +0800</pubDate><description><![CDATA[EMQX 是基于发布订阅，一款大规模可弹性伸缩的 MQTT 消息服务器。EMQX 提供了高效可靠海量物联网设备连接，能够高性能实时移动与处理消息和事件流数据，帮助您快速构建关键业务的物联网平台与应用。]]></description><category></category></item><item><title><![CDATA[EMQX 实现 阿里云一机一密 认证]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126445940</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126445940</guid><author>skystep</author><pubDate>Sat, 20 Aug 2022 23:32:08 +0800</pubDate><description><![CDATA[EMQX 实现 阿里云一机一密 验证。设备接入物联网平台之前，需通过身份认证。目前，阿里云物联网平台支持使用设备密钥、ID²和X.509证书进行设备身份认证。]]></description><category></category></item><item><title><![CDATA[JAVA类加载流程]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126331845</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126331845</guid><author>skystep</author><pubDate>Sun, 14 Aug 2022 15:15:43 +0800</pubDate><description><![CDATA[类加载流程描述了类加载器把 class 文件加载到虚拟机的过程。class 文件像是一个模板，被加载到 JVM 之后，可以被复刻为多个实例。]]></description><category></category></item><item><title><![CDATA[JAVA 类加载器]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126223503</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126223503</guid><author>skystep</author><pubDate>Mon, 08 Aug 2022 10:58:33 +0800</pubDate><description><![CDATA[在 java 中，类基于按需加载，所有的类都是使用类加载器进行加载，就是将 .class 文件加载到内存。JVM 中内置了三个类加载器，分别是：启动类加载器，扩展类加载器，应用类加载器。除了启动类加载器之外，其他的 JAVA 实现的类加载器都是继承 java.lang.ClassLoader。......]]></description><category></category></item><item><title><![CDATA[JAVA 浅拷贝和深拷贝]]></title><link>https://blog.youkuaiyun.com/skystep/article/details/126211689</link><guid>https://blog.youkuaiyun.com/skystep/article/details/126211689</guid><author>skystep</author><pubDate>Sun, 07 Aug 2022 15:27:38 +0800</pubDate><description><![CDATA[在 java 中，默认的拷贝指的是类重写 Object 类中的 clone 方法，调用该方法进行拷贝。使用 clone 方法生生成新的对象，此时在堆中产生新的对象，clone 存放了该对象的引用。对浅拷贝进行加强，对象中引用属性进行 clone 操作，以下例子 User 类 clone 的时候也对 animal 进行拷贝。深拷贝相对于浅拷贝而言，会对所有数据类型都进行拷贝一份，包括这个对象所包含的内部对象。User 类实现 Serializable 接口，对堆区中的实例进行读写，从而实现对实例的全部拷贝。.]]></description><category></category></item></channel></rss>