<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[arctan90的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/arctan90</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; arctan90]]></copyright><item><title><![CDATA[【Netty4 简单项目实践】十四、用SpringBoot加载Netty]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/79042517</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/79042517</guid><author>arctan90</author><pubDate>Thu, 08 Feb 2018 10:13:41 +0800</pubDate><description><![CDATA[【前言】在没用SpringBoot加载Netty的时候，我觉得单独靠Thread启动一个Netty也挺好。后来因为工作习惯的改变，越来越多的依赖AOP、SOA，觉得SpringBoot管理起Netty后，其实也还好，因为很少在Netty上操作ORM，唯一有点喜欢的就是基于AOP的Log。【入口】之前我写好一个Netty Server后，会让他implements Runnable/Callable...]]></description><category></category></item><item><title><![CDATA[【Netty4 简单项目实践】十三、WebSocket Over ProtocolBuf]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/79042355</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/79042355</guid><author>arctan90</author><pubDate>Fri, 12 Jan 2018 12:00:51 +0800</pubDate><description><![CDATA[【前言】
之前用TCP模式传输ProtocolBuf模式，后面上了一个websocket传输ProtocolBuf业务，目前基本已经稳定了，现在把编解码器部分记录下来。
【server部件的组装】
核心思想是ProtocolBuf是byte[]流，而websocket对象在Netty自带的编解码中是对象，其中的数据部分是pb序列化后的字节流（即，ws的内容是二进制字节数组）所以在编码器和解码]]></description><category></category></item><item><title><![CDATA[【Netty4 简单项目实践】十二、客户端连接池-压测利器]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/78919392</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/78919392</guid><author>arctan90</author><pubDate>Thu, 28 Dec 2017 14:19:18 +0800</pubDate><description><![CDATA[【前言】
之前想写压测工具来着，但是没有很好的分析工具，所以没什么动力写。最近学会了用阿尔萨斯赶紧把压测工具补上了，疯狂的压榨服务器性能。用Netty已有的连接池模型，可以省去自己维护连接保活的工作。本来写了5个类，整理了一下代码发现非常简单，基础类就一个。
【连接池】
忘记自己借鉴了谁的代码，客户端连接池采用Netty的ChannelPoolMap接口，用网络连接地址做Key，用Fixed]]></description><category></category></item><item><title><![CDATA[【Netty4 简单项目实践】十一、用Netty分发mpegts到websocket接口]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/78832546</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/78832546</guid><author>arctan90</author><pubDate>Mon, 18 Dec 2017 15:30:01 +0800</pubDate><description><![CDATA[【前言】推视频流的时候，rtmp会有3秒的延迟。目前有一种解决方案是用mpegts的格式解决。如果考虑用ffmpeg来推流的话，可以使用http格式和udp格式来推流。现在要做的事情是用Netty来转发rtmp到websocket接口上，然后用H5来播放。播放的插件使用jsmpeg这个项目来实现。


【ffmpeg推mpegts】
ffmpeg推流支持http和udp两种协议，目前还不支]]></description><category></category></item><item><title><![CDATA[【Java】用etcd做服务注册和发现]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/77835944</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/77835944</guid><author>arctan90</author><pubDate>Mon, 04 Sep 2017 13:11:27 +0800</pubDate><description><![CDATA[最近尝试了一下etcd来做服务的注册发现
【etcd服务】
从etcd官网下载二进制文件即可，分配了三台机器做集群
10.0.1.98    etcd-001


10.0.1.205 etcd-002

10.0.1.182  etcd-003

然后用脚本启动服务



etcd --name etcd-002 --initial-advertise-peer-ur]]></description><category></category></item><item><title><![CDATA[【thrift】cygwin上编译安装thrift中的坑]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/73854321</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/73854321</guid><author>arctan90</author><pubDate>Wed, 28 Jun 2017 17:59:27 +0800</pubDate><description><![CDATA[下载了最新的cygwin，版本为0.10.0
只编译c++版本的thrift
在cygwin上装了 
5.4.0-1 cygwin64-gcc-core
5.4.0-1 cygwin64-gcc-g++
5.4.0-1 gcc-core
5.4.0-1 gcc-g++

5.4.0-4 mingw64-i686-gcc-core

5.4.0-4 mingw64-i686-gc]]></description><category></category></item><item><title><![CDATA[【Java加密】（一）JCE配置加密算法强度不受限授权的安装]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/68066660</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/68066660</guid><author>arctan90</author><pubDate>Wed, 29 Mar 2017 16:56:46 +0800</pubDate><description><![CDATA[使用JCA/JCE的时候，在jdk1.4版本及以上是需要安装授权的，否则大部分对称加密算法最高支持128bit，非对称加密算法最高支持2048bit。本方法需要确认法律风险，如果是中国，似乎好像是有授权的，允许安装无长度限制的证书。]]></description><category></category></item><item><title><![CDATA[【Java 性能伴侣】第一章 G1概览]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/67648438</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/67648438</guid><author>arctan90</author><pubDate>Tue, 28 Mar 2017 21:24:57 +0800</pubDate><description><![CDATA[Java8引入的Garbage First垃圾回收器，这本书对其进行了详细的描述。我打算翻译全书的四章来全面学习这个垃圾回收器使用上的调优手段。]]></description><category></category></item><item><title><![CDATA[【ssl】SSL证书转换]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/54380604</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/54380604</guid><author>arctan90</author><pubDate>Thu, 12 Jan 2017 18:29:46 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/aiqingqing/p/4521667.html
1.从pfx格式的证书提取出密钥和证书
set OPENSSL_CONF=openssl.cnf
openssl pkcs12 -in my.pfx -nodes -out server.pem
openssl rsa -in server.pem -out server.key 
open]]></description><category></category></item><item><title><![CDATA[【spring boot】配置ssl证书实现https]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/54142146</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/54142146</guid><author>arctan90</author><pubDate>Sat, 07 Jan 2017 01:01:13 +0800</pubDate><description><![CDATA[【前言】这里是spring boot配置ssl证书的全过程]]></description><category></category></item><item><title><![CDATA[【Netty4 简单项目实践】十、Http协议下使用protocol buff]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/53515066</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/53515066</guid><author>arctan90</author><pubDate>Thu, 08 Dec 2016 11:57:04 +0800</pubDate><description><![CDATA[介绍了在Netty中如何用Http收发Protocol buff序列化的对象。]]></description><category></category></item><item><title><![CDATA[【Hibernate】Hibernate分表的实现--老古董留存]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/52755262</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/52755262</guid><author>arctan90</author><pubDate>Sat, 08 Oct 2016 11:42:27 +0800</pubDate><description><![CDATA[之前一直不知道Hibernate如何分表，最暴力的方法就是写多个POJO，加上注解@Entity(name=xxx)制定表名，但是实际上常常会分100个表记录业务流水，记录用户。所以这种暴力方法并不能解决问题。曾经一度为了分表打算放弃Hibernate转用Mybitas，不知道下文这个方法能不能解决我的问题。]]></description><category></category></item><item><title><![CDATA[【Netty4 简单项目实践】九、示例项目]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/52298451</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/52298451</guid><author>arctan90</author><pubDate>Wed, 24 Aug 2016 11:09:10 +0800</pubDate><description><![CDATA[这个示例项目包含了【Netty4 简单项目实践】系列的代码。还包括之后写的一部分内容，如聊天敏感词过滤]]></description><category></category></item><item><title><![CDATA[【Java】正则表达式匹配多单词任意顺序组合的字符串]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/52251423</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/52251423</guid><author>arctan90</author><pubDate>Fri, 19 Aug 2016 16:01:31 +0800</pubDate><description><![CDATA[【问题】做表情抽取的时候发现标签里面的属性在不同浏览器下顺序不尽相同，比如：
chrome上这样的一个标签：
在firefox上会变成这样：
最开始的正则规则是简单粗暴的方式：


String rex = "
src=\"1.jpg\"\\stitle=\"\\S+\"\\s+class=\"emoji\\s+emoji\\w+\">";
在firefox上彻底失败了
【解决】]]></description><category></category></item><item><title><![CDATA[【nginx】App打点场景下，用nginx的log捕获http协议的$request_body的正确方法]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/52053253</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/52053253</guid><author>arctan90</author><pubDate>Thu, 28 Jul 2016 11:32:29 +0800</pubDate><description><![CDATA[【应用场景】
App里面的打点数据想自己收集，可以考虑向nginx发一个json，通过nginx生成的日志实现实时获取数据。
所以问题就归结为nginx日志的生成。


正如  http://www.cnblogs.com/meteorx/p/3188647.html 这篇作者抱怨的，nginx并不会老老实实把request_body生成在log中。不会生成的原理在于nginx处理con]]></description><category></category></item><item><title><![CDATA[【Java】聊天过滤 DFA算法的Java实现]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/51791174</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/51791174</guid><author>arctan90</author><pubDate>Thu, 30 Jun 2016 16:28:10 +0800</pubDate><description><![CDATA[开心就好
Trie树的原理不讲了，直接上代码
ChatFilter.java 是核心的过滤器 NoneWantToSee.list中读敏感词，这个文件中一个敏感词放一行
过滤器实现数据加载和提供过滤服务，过滤服务是把敏感词替换成**，可以自定义行为。
和一些例子不同，我在代码中处理了部分重叠状态的识别，比如“丝袜” “丝袜网” 都作为敏感词可以被识别出来并处理掉。
另外有一点，构造使用的]]></description><category></category></item><item><title><![CDATA[【Netty4 简单项目实践】八、转发服务的实现方案]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/51500547</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/51500547</guid><author>arctan90</author><pubDate>Sat, 28 May 2016 17:32:23 +0800</pubDate><description><![CDATA[Netty的共享线程模式]]></description><category></category></item><item><title><![CDATA[【Netty4 简单项目实践】七、上线前准备--内存泄漏监控、系统监控]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/51489558</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/51489558</guid><author>arctan90</author><pubDate>Tue, 24 May 2016 14:04:21 +0800</pubDate><description><![CDATA[一、内存泄漏
Netty4的内存泄漏监控默认是没有的，需要手动设置。
它的内存泄漏只是针对Bytebuf，这也暗示着使用Bytebuf能提高系统性能降低GC的影响。
配置很简单，就是设置运行变量 

io.netty.leakDetection.level




        String str = Property.getProperty("io.netty.leakD]]></description><category></category></item><item><title><![CDATA[【Netty4 简单项目实践】六、断掉未鉴权的TCP长连接--ChannelHandelContext中的定时器用法]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/51325256</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/51325256</guid><author>arctan90</author><pubDate>Sat, 07 May 2016 15:39:40 +0800</pubDate><description><![CDATA[本文是Netty实践中的一个小应用：用ChannelHandlerContext定时器来实现阻断无效TCP长连接的方法。]]></description><category></category></item><item><title><![CDATA[【Netty4 简单项目实践】五、Netty4接收HTTP文件上传]]></title><link>https://blog.youkuaiyun.com/arctan90/article/details/51292120</link><guid>https://blog.youkuaiyun.com/arctan90/article/details/51292120</guid><author>arctan90</author><pubDate>Sun, 01 May 2016 23:02:30 +0800</pubDate><description><![CDATA[又要开一个接收文件上传的服务，找了官方的样例代码，把不需要的东西删了一圈，很容易就实现了。
Bootstrap没什么变化，所以只写上initChannel需要加载的处理器
.childHandler(new ChannelInitializer() {
                    @Override
                    protected void initCh]]></description><category></category></item></channel></rss>