kun3375.github.io's People
kun3375.github.io's Issues
虚拟机中的锁膨胀 | 码路狂飙
MySQL 主从复制 | 码路狂飙
https://caoziye.top/2019/01/MySQL-%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6/
最近工作也比较忙,很久没有写新的日记了。开始重新整理一下知识点,先找一个有意思点开始吧。 复制原理这个原理其实十分简单,只要搜索一下,那些搜索引擎就会给出图示和合理的答案: 主库开启二进制日志(或者叫主机日志)bin-log。这会使得数据库在更新时记录下它的操作动作。 从机开启 slave 模式,使用一个 IO 线程去请求 master 的数据,记录在中继日志 relay-log 中;maste
SpringKafkaListener 增效 | 码路狂飙
https://caoziye.top/2019/04/SpringKafkaConsumer-%E5%A2%9E%E6%95%88/
通过 spring-kafka 的集成,我们可以通过注解 @KafkaListener 以及 spring.kafka.consumer 相关配置轻松的管理 kafka 消费。但是消费速度往往仍然不够理想,需要进一步调整。 在 kafka 的实现中,某个 topic 的 partition 即分区的数量,基本上决定在这个 topic 下的最大并发程度。因为客户端的数量是受限于 partition
实现 MyBatis 插件 | 码路狂飙
TCP 头部选项的理解 | 码路狂飙
https://caoziye.top/2019/10/TCP-Options/
TCP OptionsTCP 报头通常包含 20 字节信息。但是同时可以携带额外的选项用来说明额外的信息(下图 Options)。 每一组选项包含 1 个字节的类型标识,1 个字节的长度声明,n 个字节的具体数据,最大不超过 40 字节。 Kind Length Value 1 Byte 1 Byte (Length - 2) Bytes 以下是典型的几个选项说明: Kin
正则笔记 | 码路狂飙
Git 命令笔记 | 码路狂飙
https://caoziye.top/2018/10/Git-%E5%91%BD%E4%BB%A4%E7%AC%94%E8%AE%B0/
初始化仓库1234# 初始化一个 git 仓库并且建立工作目录git init# 初始化一个干净的仓库,使用 bare 选项不带有工作目录,使用 shared 选项,提供组可写的权限git init --bare --shared 克隆仓库12# 在未指定协议的时候优先会采用 sshgit clone [地址] 暂存文件将文件提交至暂存区(进入 staged 状态)123git add [路径]
RocketMQ Consumer 摘要 | 码路狂飙
https://caoziye.top/2018/08/RocketMQ-Consumer-%E6%91%98%E8%A6%81/
结束了对 RocketMQ 组件的初步理解以及配置的简单设定,可以对 RocketMQ 仔细研究一番了。先来看看 RocketMQ 的消费者实现,以及服务端是如何处理消费者客户端的请求,把消息送出去的。 RocketMQ 对于消费者客户端,支持推模型和拉模型。对于推模型,由消息服务端作为主动方,向客户端推送消息(尽管其本质是一个长轮询式的拉模型实现);而拉模型由客户端主动拉取消息。
实现 MyBatis 插件 | 码路狂飙
https://caoziye.top/2018/07/%E5%AE%9E%E7%8E%B0-MyBatis-%E6%8F%92%E4%BB%B6/
MyBatis 作为一个目前很常用的持久化框架,有着丰富的拓展。这些拓展功能常常以插件的形式嵌入到 MyBatis 的运作流程之中,而如何制作实现一个插件?MyBatis 已经为大家设计好了,一个 Interceptor 接口,实现它就够了。 Interceptor 接口的拦截目标,是 MyBatis 运作流程中的几个核心组件: Executor:这是 MyBatis 执行器,控制着所有和数据库
RocketMQ Producer 摘要 | 码路狂飙
https://caoziye.top/2018/08/RocketMQ-Producer-%E6%91%98%E8%A6%81/
上一篇介绍完了 RocketMQ 消费者的默认实现,现在来瞅一瞅生产者的用法。 设置必要的属性同样的,是 DefaultMQProducer,新建实例之后,在使用生产者发送消息之前,需要初始化几个属性: InstanceName 实例名称这是为了当一个 JVM 上启动了多个生产者时,区分不同的生产者实例,系统默认名称为 DEFAULT RetryTimesWhenSendFailed 重试次数当
RocketMQ 服务端消息过滤 | 码路狂飙
RocketMQ 配置探索 | 码路狂飙
ES 数据类型、元字段与映射 | 码路狂飙
JVM 常用诊断工具小抄 | 码文小记
jps查看 Java 进程及其相关信息。常用用法: 12jps # 所有 java 进程jps -mv # 所有 java 进程及启动参数 常用参数: l:输出启动类全类名 m:显示 main 方法接收到的参数 v:显示 JVM 进程及其接收的参数,通常配合 m 得到进程的启动命令
Netty ByteBuf 相关参数意义 | 码路狂飙
https://kun3375.com/2020/02/Netty-ByteBuf-%E7%9B%B8%E5%85%B3%E5%8F%82%E6%95%B0%E6%84%8F%E4%B9%89/
这里仅记录一下 ByteBuf 相关的一下内存配置参数和默认情况,分析一下 Allocator 的组成,为分析 ByteBuf 做一些概念上的铺垫。 首先看几个 PooledByteBifAllocator 中的静态变量,挑了几个说明一下: 12345678910// 默认的 arena 数量,一个对应 HeapBuf 一个对应 DirectBufprivate static final int
ES 操作-索引管理 | 码路狂飙
文字处理-sed | 码路狂飙
https://caoziye.top/2018/07/%E6%96%87%E5%AD%97%E5%A4%84%E7%90%86-sed/
sed 是非常常用的流式处理编辑工具,配合正则表达式可以进行十分效率的文字处理。它通过逐行地将文字读取,暂存进模式空间,通过指定的命令进行处理后,输出至标准输出,直到文件或者说输入的结束。原理十分简单,来学习一下吧。
RokcetMQ 配置项 | 码路狂飙
RokcetMQ 配置项 | 码路狂飙
https://caoziye.top/2018/08/RocketMQ-%E9%85%8D%E7%BD%AE%E9%A1%B9/
RocketMQ 的配置分为两部分,一者是 JVM 的配合,另一者则是对 Broker 应用本身的参数配置。在初次接触时候,除了 RocketMQ 本身的一些特性,同时也难免会被一些配置给迷惑或者踩坑,这里来看一下通常的配置点。
JVM 垃圾回收器小记 | 码路狂飙
AQS 浅析 | 码路狂飙
https://caoziye.top/2018/07/AQS-%E6%B5%85%E6%9E%90/
java.util.concurrent 包中提供了许多易用而有效的工具类,诸如 ReentrantLock,CountDownLatch,Semaphore 等等,给日常的并发编程带来了许多便利。他们都使用了同样的框架来完成基本的同步过程:AbstractQueuedSynchronizer (AQS)来实现基本功能,比如获取资源和释放的步骤。
Git 命令笔记 | 码路狂飙
AQS 浅析 | 码路狂飙
ES 操作-索引管理 | 码路狂飙
https://caoziye.top/2018/09/ES-%E6%93%8D%E4%BD%9C-%E7%B4%A2%E5%BC%95%E7%AE%A1%E7%90%86/
新建索引新建索引很简单,但是需要注意的是: ES 中索引名称不能包含大写字母 不能再次 PUT 一个已经存在的索引 ES 默认给索引设置 5 个分片和 1 个副本,该值可以通过 setting 参数域进行修改。其中副本数在索引创建之后支持修改,而分片数无法修改!12345678910PUT /person# 可选项,不附加请求体的情况下统一使用默认值{ "settings": &
Docker 挂载与数据存储 | 码路狂飙
https://caoziye.top/2018/07/Docker/
Docker 镜像是层层分离的,分为只读的底层和可读写的当前层。容器在运行时候如果有文件改动,会自动从含有该文件的底层拷贝并更新在当前层。如果容器在 commit 之前被销毁,那么有这个镜像重新生成的容器是不包含改动的内容的。
ES 分片路由 | 码路狂飙
G1GC 解读 | 码路狂飙
https://caoziye.top/2019/06/G1GC-%E8%A7%A3%E8%AF%BB/
之前对 G1 之前的垃圾回收器进行了整理《JVM 垃圾回收器小记》,但是留下了 G1 的坑长久未填,现在把相关的概念、配置参数以及 G1 的流程进行了整理。 基本概念Region不同于之前的垃圾回收按照连续的物理内存空间进行划分产生 Yong、Tenured、MetaSpace 区域并使用分代垃圾回收处理。G1 将整个堆空间切分成若干个小型的区域 Region 来存放对象,每个 Region 可以
Ribbon 摘要 | 码路狂飙
https://caoziye.top/2018/07/Ribbon/
主要构成Ribbon 是由 netflix 开源的一个客户端负载均衡组件。从客户端的角度取维护服务间请求的负载均衡,并进行一定的容错处理。自然的它的核心接口就是:com.netflix.loadbalancer.ILoadBalancer。 在配置 Ribbon 之前,了解一下 Ribbon 完成负载均衡的几个重要组成部分: IRule:负载均衡的策略。 IPing:检测服务存活的策略。 Ser
SpringKafkaListener 增效 | 码路狂飙
Docker 挂载与数据存储 | 码路狂飙
文字处理-sed | 码路狂飙
RocketMQ 日志设置 | 码路狂飙
RocketMQ 服务端消息过滤 | 码路狂飙
在服务端进行消息过滤,可以减少不必要的流量,提高带宽利用度和吞吐量。RocketMQ 支持多种方式来进行服务端的消息过滤 消息使用 Tag 标签作为一条 Message,它有着特定的 Topic,同时也可以指定唯一的 Tag 标记子分类。消费方在订阅消息时候,Broker 可以在指定 Topic 的 ConsumeQueue 下按 Tag 进行过滤,只从 CommitLog 中取出 Tag 命中的
RocketMQ Consumer 摘要 | 码路狂飙
ES 操作-文档管理 | 码路狂飙
https://caoziye.top/2018/10/ES-%E6%93%8D%E4%BD%9C-%E6%96%87%E6%A1%A3%E6%93%8D%E4%BD%9C/
创建文档ES 提供了一套遵守 Restful 语义的接口,相关的操作可以通过不同的请求方法来进行调用,比如简单的新增可以使用 POST 请求或者 PUT 请求 123456789101112# PUT 多次请求结果幂等,仅增加文档版本号,文档编号不可省略PUT /<索引>/<类型>/<编号>{ "字段A": "值A", "字段B": "值B
RocketMQ 配置探索 | 码路狂飙
https://caoziye.top/2018/07/RocketMQ-%E9%85%8D%E7%BD%AE%E6%8E%A2%E7%B4%A2/
目前被广泛使用的 MQ 有很多,包括 ActiveMQ,Kafka,RabbitMQ,RocketMQ 等等,它们各有长短。而近期所在项目选择了 RocketMQ 作为消息中间件,此前并未系统地了解研究,所以趁此机会整理了一些笔记和想法。
ES 分片路由 | 码路狂飙
https://caoziye.top/2018/10/ES-%E5%88%86%E7%89%87%E8%B7%AF%E7%94%B1/
分片路由ES 在创建新文档时候时如何选择具体存储在哪个分片上?这就是一个文档分片路由的机制。ES 使用路由值(routing)的哈希散列进行分片的路由:index_of_shards = hash(routing) % num_of_shards。 ES 查询请求过程假设在一个多分片的 ES 进行查询,会有以下几个步骤: 请求被某个节点接受 接受请求的节点将该请求广播到所有节点 每个分片进行搜索
正则笔记 | 码路狂飙
https://caoziye.top/2018/06/%E6%AD%A3%E5%88%99%E7%AC%94%E8%AE%B0/
日常开发中,经常需要进行一些文本处理,这通常是十分繁琐而无趣的。学会并利用正则表达式可以快速解决这类文本处理问题,无论是在 Java,Python 等代码中抑或是 shell 环境下。正则中存在很多细小的知识点,十分容易遗忘,着手记录,知识整理还是有所必要。
JVM 垃圾回收器小记 | 码路狂飙
https://caoziye.top/2019/02/JVM-%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E5%99%A8%E5%B0%8F%E8%AE%B0/
能力各异的垃圾回收器SerialSerial 收集器是一个新生代串行垃圾回收器,单线程执行,使用复制算法,整个流程会 STW。在单核环境下可能会不存在线程切换的问题而有略高的效率。也是之前 client 模式下的默认垃圾回收器。 ParNewParNew 收集器是一个新生代并行垃圾回收器,多线程执行,使用复制算法,整个流程会 STW。除了使用多个线程进行垃圾回收之外,其余和 Serial 一致。
对 Netty ByteBuf 的探究 | 码路狂飙
https://kun3375.com/2020/02/%E5%AF%B9-Netty-ByteBuf-%E7%9A%84%E6%8E%A2%E7%A9%B6/
对 Netty ByteBuf 的探究ByteBuf 是 Netty 在通信过程中数据传递的容器,类似于 Java NIO 中的 ByteBuffer,是通道 Channel 传输过程中的介质。 ByteBuf 类型从池化与否上看,分为池化的 PooledByteBuf 和非池化的 UnpooledByteBuf, 而从内存属性上看 ByteBuf 有着使用堆内存的 HeapByteBuf 以及基
MySQL 主从复制 | 码路狂飙
网络配置参数和调优的一些总结 | 码路狂飙
内核配置先来了解几个关于网络的内核配置。 目录以 CentOS 7 为例,目录 /proc/sys/ 存放着内核相关配置,其中网络相关的主要集中在 /proc/sys/net/core/、/proc/sys/net/ipv4/、/proc/sys/net/ipv6/ 几个目录下。在这几个目录下,不同参数名称对应一个文件,修改文件值可以调整对应参数。 同时,想要修改 /proc/sys/ 下参数也可
虚拟机中的锁膨胀 | 码路狂飙
尽管当下几乎所有的服务器环境都以集群为主,在考虑并发问题的时候通常会使用分布式技术,如 redis 等中间件来维护全局的资源和锁。但是对于一些实例层面上的资源,依旧需要使用传统的锁来维护。所以我觉得,理解 JVM 对锁的处理还是有价值的。 JVM上针对锁的处理(这里只描述内部锁,即 synchronized 的处理情况),除了有自旋锁,锁粗化,锁消除等简单的自动优化机制(不探讨啦),还可以从锁的维
ES 操作-文档管理 | 码路狂飙
RocketMQ 日志设置 | 码路狂飙
https://caoziye.top/2018/08/RocketMQ-%E6%97%A5%E5%BF%97%E8%AE%BE%E7%BD%AE/
日志配置文件位置RocketMQ 日志基于 slf4j 实现,支持 Logback、Log4j。如果需要指定日志的配置文件的位置有三种方式: 环境变量:ROCKETMQ_CLIENT_LOG_CONFIGFILE= 启动参数:rocketmq.client.log.configFile=,作为 JVM 变量,启动时时
Ribbon 摘要 | 码路狂飙
Dockerfile 中三个运行指令的差异 | 码路狂飙
在描述 Dockerfile 的时候,对于 RUN,CMD,ENTRYPOINT 三个命令,用法十分相似,功能也差不多,容易让人混用。其实一般来说,三个命令都能完成需要的操作,而差异点常常被一些使用者忽略。这里简单说一下,三个命令的不同之处。
Dockerfile 中三个运行指令的差异 | 码路狂飙
ES 数据类型、元字段与映射 | 码路狂飙
在 ES 中所有的字段都是由映射规则所控制,这将输入的数据信息转化成对应的数据格式来进行索引或保存。配置合理的映射规则有助于维护文档,增加操作效率。在了解映射相关配置之前需要了解一下 ES 的数据类型和元字段的意义。 字段类型 text文本类型,十分常用的类型,通常作用于需要被全文检索的字段上。这样的字段内容会被分词器拆成词项后生成倒排索引,它不用于排序,也很少用于聚合。 keyword关键字类型
RocketMQ Producer 摘要 | 码路狂飙
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.