<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zk_chs的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zk_chs</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zk_chs]]></copyright><item><title><![CDATA[记录hbase遇到的问题]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84812254</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84812254</guid><author>zk_chs</author><pubDate>Thu, 04 Aug 2016 11:41:43 +0800</pubDate><description><![CDATA[
这次记录下学习hbase遇到的一些问题，有了新问题也会追加。
 
背景：使用vmware创建3台桥接模式虚拟机进行集群，熟练之后大概会使用7台。
宿主机操作系统：mac osx 10.11.3 16G 256G SSD。
软件版本：hadoop 2.7.2、zookeeper 3.4.8、hbase 1.2.2
 
1、瞎捣鼓，通过hdfs将/hbase目录删除了，此时执行在hba...]]></description><category></category></item><item><title><![CDATA[Grpc应用，搭配commons-pool2连接池实现连接复用]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84808476</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84808476</guid><author>zk_chs</author><pubDate>Sat, 02 Jul 2016 16:03:40 +0800</pubDate><description><![CDATA[
commons-pool2是apache的连接池框架，方便我们创建连接池，实现tcp连接的复用，不需要每次请求都发送握手请求、断开请求等操作，很多开源项目都采用了commons-pool，例如jedis。
 
上一篇的Grpc应用博客只是简单地实现了一个Grpc应用，但是，一个致命的缺点在于每次创建连接、断开连接时的高消耗，这次博客使用commons-pool2来实现一个Grpc的连接池。...]]></description><category></category></item><item><title><![CDATA[Grpc应用，基本实现]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84808311</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84808311</guid><author>zk_chs</author><pubDate>Fri, 01 Jul 2016 00:02:03 +0800</pubDate><description><![CDATA[
使用grpc可以用来进行不同系统之间的信息交互，而且grpc不限于java，使用同一个proto文件可以在不同的编程语言之间交互。

上面这张图介绍了proto文件的语法，对应proto3.0，具体更多的内容请参考文档：
http://www.grpc.io/docs/#generating-grpc-code
 
 
下面我们先讲一下如何在java中通过proto文件生成java...]]></description><category></category></item><item><title><![CDATA[tcp/ip 学习记录 传输层]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84804302</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84804302</guid><author>zk_chs</author><pubDate>Thu, 26 May 2016 22:24:38 +0800</pubDate><description><![CDATA[
TCP是面向连接的、可靠的流协议。
UDP是不具有可靠性的数据报协议。
 
根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序。
 
TCP/IP、UDP/IP通信中，通常采用5个信息来识别一个通信。分别为：源IP地址、目标IP地址、协议号、源端口号、目标端口号。只要其中一项不同，那么就会被认为是不同的通信。
 
动态分配的端口号取值范围在49152至65535之...]]></description><category></category></item><item><title><![CDATA[tcp/ip 学习记录 网络接口层 网络互联层]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84804137</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84804137</guid><author>zk_chs</author><pubDate>Wed, 25 May 2016 23:02:53 +0800</pubDate><description><![CDATA[
网络分层：应用层(Date + 应用协议)、传输层(.. + tcp/udp)、网络互联层(.. + ip)、网络接口层(.. + mac)
上面括号内的协议只是代表协议，其实还有更多的选择
 
以太网帧体格式：目标mac(6)、源mac(6)、类型(2)、数据(46-1500)、FCS(4)
 
网络拓扑：网络的连接和构成的形态称为网络拓扑。
MAC地址也不总是唯一的，即使MAC...]]></description><category></category></item><item><title><![CDATA[idea快捷键for mac]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84803481</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84803481</guid><author>zk_chs</author><pubDate>Fri, 20 May 2016 23:17:54 +0800</pubDate><description><![CDATA[
这次带来的是一些在idea中的快捷键操作，现在网上很多博客介绍的快捷键都是基于windows的或太老的，所以自己这次就整理了一下，方便大家查阅。
 


功能介绍
keymap


显示或隐藏project窗口
⌘1


显示或隐藏最近修改的文件(与git关联)
⌘9


显示或隐藏Run窗口
⌘4


运行main方法(Run方式)
⇧^R


显示或隐藏Debug窗...]]></description><category></category></item><item><title><![CDATA[scala协变逆变与java中PECS的关系]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84794530</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84794530</guid><author>zk_chs</author><pubDate>Sun, 24 Apr 2016 02:00:49 +0800</pubDate><description><![CDATA[
在effective java 2nd中第28条，有对java范型PECS的介绍。
 
首先，我们看一个在java中经常被我们使用的方法addAll()：为什么在addAll的时候Collection的类型要通过继承范型E来进行限定？ 有什么特殊的吗？接着我们再来看一看普通的add方法：有没有觉得很奇怪？使用add方法的时候又不需要限定类型。
 
下面我们自己来写一个List进行以下测...]]></description><category></category></item><item><title><![CDATA[scala 隐式转换函数、隐式转换参数]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84794413</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84794413</guid><author>zk_chs</author><pubDate>Sat, 23 Apr 2016 02:33:16 +0800</pubDate><description><![CDATA[
目前的scala相关博客大概只能算一个笔记，方便自己记录，也帮大家查找信息了。
 
首先scala中的隐式转换可以分为隐式函数转换与隐式参数转换两类，下面就来分别说一下自己对这两种模式的理解。
 
1、隐式函数转换，我们先看一段代码：
scala&amp;gt; val x: Int = 3.14
&amp;lt;console&amp;gt;:10: error: type mismatch;
 fo...]]></description><category></category></item><item><title><![CDATA[spring boot + log4j2 配置]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84794412</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84794412</guid><author>zk_chs</author><pubDate>Sat, 23 Apr 2016 01:23:14 +0800</pubDate><description><![CDATA[
以前的log一直都是组长进行配置，自己甚至连log的级别都分不太清楚，为了避免这种尴尬的情况再次发生，自己尝试了一下在spring boot中进行log4j2的配置。
 
首先自定义一个log4j2.xml文件：
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;Configuration status=&quot;WARN&quot;&amp;gt;
    &amp;...]]></description><category></category></item><item><title><![CDATA[spring加载过程，源码带你理解从初始化到bean注入]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84794212</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84794212</guid><author>zk_chs</author><pubDate>Thu, 21 Apr 2016 23:58:14 +0800</pubDate><description><![CDATA[
之前写过的很多spring文章，都是基于应用方面的，这次的话，就带大家来一次对spring的源码追踪，看一看spring到底是怎么进行的初始化，如何创建的bean，相信很多刚刚接触spring的朋友，或者没什么时间的朋友都很想知道spring到底是如何工作的。
 
首先，按照博主一贯的作风，当然是使用最新的spring版本，这次就使用spring4.2.5...其次，也是为了方便，采用sp...]]></description><category></category></item><item><title><![CDATA[scala类型变量界定、视图界定、上下文界定]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84793762</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84793762</guid><author>zk_chs</author><pubDate>Wed, 20 Apr 2016 00:05:34 +0800</pubDate><description><![CDATA[
类型变量界定(Type Variable Bound)、视图界定(View Bound)、上下文界定(Context Bound)，在scala中算很重要的内容了，这次博客就来写点自己的理解。
 
1、类型变量界定(Type Variable Bound)：
// 编译错误
def typeVariable[T](a: T, b: T) = {
    if (a.compareTo...]]></description><category></category></item><item><title><![CDATA[通过spring配置redis cluster]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84793480</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84793480</guid><author>zk_chs</author><pubDate>Mon, 18 Apr 2016 22:23:57 +0800</pubDate><description><![CDATA[
上周spring data redis更新了1.7.1版本，正式支持redis cluster集群模式，这里就介绍一下关于redis cluster集群的相关配置，例如redis连接池等内容。不过想要使用redis cluster集群的话，还是需要你先启动redis cluster才行，具体操作可以参考我之前的redis cluster集群搭建。
 
1、与之前的文章相同，不采用xml，而...]]></description><category></category></item><item><title><![CDATA[spring配合scala时，@Autowired的一个问题]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84776668</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84776668</guid><author>zk_chs</author><pubDate>Wed, 13 Apr 2016 00:16:41 +0800</pubDate><description><![CDATA[
今天在用spring配合scala时，遇到了一个关于@Autowired的问题，主要报错信息如下：
Caused by: java.lang.NoSuchMethodException: com.zk_chs.xxxxx.....&amp;lt;init&amp;gt;()
	at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_73...]]></description><category></category></item><item><title><![CDATA[zookeeper 学习笔记(二) JMX监控]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84776095</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84776095</guid><author>zk_chs</author><pubDate>Sun, 10 Apr 2016 01:18:15 +0800</pubDate><description><![CDATA[
上次的笔记介绍的是zookeeper的安装、部署、部分java客户端代码，这次我们使用java自带的Jconsole或jvisualvm工具进行对zookeeper进行监控。
 
1、首先，zookeeper并没有配置开启远程连接jmx的端口信息，而是默认开启了本地连接而已。所以，我们需要添加一些配置，这些配置位于zookeeper目录下的bin/zkServer.sh中：
bin/Se...]]></description><category></category></item><item><title><![CDATA[kafka 学习笔记(二) java客户端代码]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84774656</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84774656</guid><author>zk_chs</author><pubDate>Sun, 03 Apr 2016 01:18:57 +0800</pubDate><description><![CDATA[
在学习笔记(一)中，讲解了kafka的安装、部署、以及bash下进行的一些简单操作，而这次将学习kafka的java客户端代码。
 
1、jar包。
在maven上，我们有两种apache kafka提供的jar包：
&amp;lt;dependency&amp;gt;
	&amp;lt;groupId&amp;gt;org.apache.kafka&amp;lt;/groupId&amp;gt;
	&amp;lt;artifactId...]]></description><category></category></item><item><title><![CDATA[kafka 学习笔记(一) 安装、部署]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84774287</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84774287</guid><author>zk_chs</author><pubDate>Fri, 01 Apr 2016 00:14:29 +0800</pubDate><description><![CDATA[
kafka是一个高吞吐量的分布式消息系统，整体设计为典型的发布与订阅模式。kafka内部采用zookeeper来解决配置管理、通知/协调、集群管理、master选举等问题，所以建议先对zookeeper有个基本的了解，可以看下我的zookeeper笔记(一)。
 
这次对于kafka只介绍一下命令行下的安装部署等操作，其它的，比如kafka在zookeeper中的存储结构、配置详解、jav...]]></description><category></category></item><item><title><![CDATA[zookeeper 学习笔记(一) 安装、部署、部分java客户端代码]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84774044</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84774044</guid><author>zk_chs</author><pubDate>Wed, 30 Mar 2016 23:17:05 +0800</pubDate><description><![CDATA[
很多大型系统基本都需要一个无单点问题的分布式框架，zookeeper便满足这一需求。这次的博客，我们先进行一个最基本的安装、部署、连接。
 
1、首先下载zookeeper，解压，我这里选择最新的稳定版3.4.8，然后我们使用单机模拟集群，可以专门建立一个文件夹，用来放置你的zookeeper，比如：
/Users/zk_chs/something/hadoop/zookeeper-3....]]></description><category></category></item><item><title><![CDATA[jedis客户端连接redis cluster代码]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84772571</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84772571</guid><author>zk_chs</author><pubDate>Wed, 23 Mar 2016 21:05:29 +0800</pubDate><description><![CDATA[
上一篇redis中，讲解了redis cluster集群，但是却没有涉及到客户端代码，这次就一起来看下如何通过jedis使用redis cluster。
 
在此之前，需要说一个坑，上一篇中，我们将cluster中每个节点的ip:port配置成了如127.0.0.1:7000这样的形式。
但是，由于集群内部存取时，需要确定key所在的slot，一旦不是在我们登录的节点上，就会有内部转发，...]]></description><category></category></item><item><title><![CDATA[spring boot + redis 实现session共享]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84772377</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84772377</guid><author>zk_chs</author><pubDate>Wed, 23 Mar 2016 00:44:26 +0800</pubDate><description><![CDATA[
这次带来的是spring boot + redis 实现session共享的教程。
 
在spring boot的文档中，告诉我们添加@EnableRedisHttpSession来开启spring session支持，配置如下：
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig {
}
...]]></description><category></category></item><item><title><![CDATA[spring boot + websocket进行通信]]></title><link>https://blog.youkuaiyun.com/zk_chs/article/details/84772157</link><guid>https://blog.youkuaiyun.com/zk_chs/article/details/84772157</guid><author>zk_chs</author><pubDate>Tue, 22 Mar 2016 09:32:33 +0800</pubDate><description><![CDATA[
这次给大家说一下自己对websocket + spring boot结合使用的一些经验
 
首先websocket是一个持久化的协议，实现了浏览器与服务器的全双工通信。不再像http那样，只有在浏览器发出request之后才有response，websocket能实现服务器主动向浏览器发出消息。
 
下面我们用spring boot来实现一下：
在spring boot的文档中，介绍...]]></description><category></category></item></channel></rss>