Http Utils的一段代码 Jun 11, 2020

简单的备忘,httpclient的代码

...
wait/notify和condition Jun 11, 2020

以下全部来自jdk8的javaDoc。

...
从register和accept的锁竞争问题到netty的nioEventLoop设计 Jun 5, 2020

今天在v2ex看到一个问题,NIO 如下代码怎么绕过死锁?还是说我写的不对?如下代码,里面贴了代码。

简单说明:创建了两个selector A和B,线程1使用A来accept连接,并且register到B上。同时,线程2使用B来select,处理读写事件。

问题:select和register都要获取Selector publicKeys 的锁->虽然创建了线程1和2,但是还是要等待对方释放锁,所以这两个线程就没啥用,在以往的NIO实践中我也遇到过。解决这个问题很简单,生产者消费者模式就可以,线程1生产register请求,线程2消费register事件,真正执行在B上的register。反正一句话,同一个selector的register和select需要串行,并行不了(因为需要获取同一个锁)。

上面只是引子,我想看看netty是如何处理这个细节的。关于netty的架构和设计,什么EventLoopGroup、EventLoop、Pipepline、ChannelHandler网上说的很多了。今天要做的是看netty如何封装java NIO的accept、register,如何进行select,下面开始。

...
Luence学习 May 1, 2020

官方文档

demo项目

...
开发Elasticsearch自定义评分插件-horspool评分 Apr 27, 2020

Elasticsearch调研中,已经学习了es的similarity、plugin和在idea中debug启动。有了以上,就可以自己制作es评分插件。这篇博客说下如何自定义script_score实现自己的评分算法。

...
Windows Terminal Apr 24, 2020

windows terminal这个终端很好用,这里记一下

...
acme.sh签发dnspod(腾讯云)和阿里云ssl野卡证书并自动续签 Apr 19, 2020

用一下acme.sh,实现自动签发野卡证书的需求

...
Elasticsearch调研 Apr 3, 2020

目的:调研elasticsearch的启动、debug、评分、插件以实现自定义评分插件。

首先,关于es启动流程的大体介绍lanffy.github.io。在这片文章中,将会主要关注加载插件的部分。

elaticsearch我的fork

...
Shadowsocks-rust源码阅读【where to modify】 Mar 22, 2020

看看shadowsocks-rust的源码,确定需要改哪里

...
Rust 冲冲冲 Mar 22, 2020

来了来了,记录下学习rust的笔记,一门艰深的语言啊。。

为什么要学

因为go很香,又不够香。有一种说法,go是网络编程语言,rust是系统编程语言。go的runtime这个东西让人又爱又恨啊,要学rust!

其实我想要的很简单,就是能编译出二进制可执行文件的语言,java、python这种解释型的语言不行,go差强人意,rust我要学一学。

另外,还有一个很直接的学习动力,想修改一个rust项目实现自己的功能。嗯,带着目标去学我觉得会好很多,在一片汪洋中给你一方向。

...