<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[java 学习路]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/iteye_5504</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; iteye_5504]]></copyright><item><title><![CDATA[由 B-/B+树看 MySQL索引结构【转载】]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681932</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681932</guid><author>iteye_5504</author><pubDate>Wed, 03 May 2017 20:09:46 +0800</pubDate><description><![CDATA[

http://www.cnblogs.com/tgycoder/p/5410057.html
 
 
B-树
B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树 它类似普通的平衡二叉树，不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图.

B-树有如下特点:


所有键值分布在整颗树中；


任何一个关键字出现...]]></description><category></category></item><item><title><![CDATA[http-post-upload 格式]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681927</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681927</guid><author>iteye_5504</author><pubDate>Wed, 03 May 2017 16:48:27 +0800</pubDate><description><![CDATA[
目的：发起一个携带文件和字段的http请求，理解http 通过 boundary分割域 实现文件上传功能
 
浏览器：
  
客户端发送的请求：

结论：
http 文件上传，http协议通过定义：boundary=---------------------------7e131a1ade2200 来实现每个字段域直接的分割
针对普通的文本域，比如：username，passw...]]></description><category></category></item><item><title><![CDATA[http-post(收藏)]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681920</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681920</guid><author>iteye_5504</author><pubDate>Wed, 03 May 2017 14:37:51 +0800</pubDate><description><![CDATA[
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据，本文主要讨论 POST 提交数据的几种方式。
我们知道，HTTP 协议是以 ASCII 码传输，建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分：状态行、请求头、消息主...]]></description><category></category></item><item><title><![CDATA[iotop&iostat （load高  IO高的问题排查）]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681781</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681781</guid><author>iteye_5504</author><pubDate>Thu, 27 Apr 2017 20:40:41 +0800</pubDate><description><![CDATA[
目标：使用iotop&amp;amp;top&amp;amp;jstack命令定位 io高的应用以及线程信息
实现：load过高但是cpu占用率低的模拟与验证
一般load高，说明系统大量的线程在等待执行
cpu  us sy 显示都不高，并且wa 占用高，说明系统在等待大量的io操作
 
1、安装iotop
sudo yum install iotop
 
2、top命令显示
 
从to...]]></description><category></category></item><item><title><![CDATA[socket-server-http]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681666</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681666</guid><author>iteye_5504</author><pubDate>Tue, 25 Apr 2017 14:50:32 +0800</pubDate><description><![CDATA[
目标：实现一个http协议的demo服务器
实现：启动一个ServerSocket，监听特定端口，然后浏览器请求，返回页面
 
代码实现：
package com.socket.bio.socket;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
...]]></description><category></category></item><item><title><![CDATA[mysql-执行计划 (整理转载)]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681659</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681659</guid><author>iteye_5504</author><pubDate>Tue, 25 Apr 2017 11:57:56 +0800</pubDate><description><![CDATA[

Explain语法



 
 执行计划包含的信息:[10列数据项]

id
包含一组数字，表示查询中执行select子句或操作表的顺序
 

id相同，执行顺序由上至下
 

如果是子查询，id的序号会递增，id值越大优先级越高，越先被执行
 

id如果相同，可以认为是一组，从上往下顺序执行；在所有组中，id值越大，优先级越高，越先执行
 
selec...]]></description><category></category></item><item><title><![CDATA[socket-client-http-post]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681656</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681656</guid><author>iteye_5504</author><pubDate>Tue, 25 Apr 2017 11:08:48 +0800</pubDate><description><![CDATA[
目标：通过socket 模拟HTTP协议连接 tomcat，做一次POST请求
 
 
 
请求数据：
POST /index.jsp HTTP/1.1
Host:192.168.237.230
Content-Type:application/x-www-form-urlencoded
Connection: close
Content-Length:42

usern...]]></description><category></category></item><item><title><![CDATA[socket-client-http-get]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681655</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681655</guid><author>iteye_5504</author><pubDate>Tue, 25 Apr 2017 11:03:55 +0800</pubDate><description><![CDATA[
目标：通过socket 模拟HTTP协议连接 tomcat，做一次GET请求
 
HTTP 协议的格式：

 
 request:

GET /index.jsp?username=xinchun.wang&amp;amp;password=123456 HTTP/1.1
Host:192.168.237.230
Connection: close
 
 
response:...]]></description><category></category></item><item><title><![CDATA[测试文章锦集]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681457</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681457</guid><author>iteye_5504</author><pubDate>Thu, 20 Apr 2017 11:07:15 +0800</pubDate><description><![CDATA[
gro：分流工具
http://chuansong.me/n/341279651545
]]></description><category></category></item><item><title><![CDATA[byte[]&int&long]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681438</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681438</guid><author>iteye_5504</author><pubDate>Wed, 19 Apr 2017 20:48:53 +0800</pubDate><description><![CDATA[
参考：http://blog.youkuaiyun.com/defonds/article/details/8782785
int 值和byte[]数组直接的转换：
 

public static int byteArrayToInt(byte[] b) {  
    return   b[3] &amp;amp; 0xFF |  
            (b[2] &amp;amp; 0xFF) &amp;lt...]]></description><category></category></item><item><title><![CDATA[应用系统的缓存实践]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681429</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681429</guid><author>iteye_5504</author><pubDate>Wed, 19 Apr 2017 16:41:13 +0800</pubDate><description><![CDATA[
背景：
重构后需要通过调用dubbo接口获取数据，数据量比较大，需要做缓存

 
缓存策略：

1、客户端缓存
      存在的问题：  
                      缓存数据多份分散在不同的应用服务器上，应用机器越多，总占用缓存空间就越大；
                      数据量很高的情况，这种方案完全不可行
                  ...]]></description><category></category></item><item><title><![CDATA[socket-长连接&短连接]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681399</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681399</guid><author>iteye_5504</author><pubDate>Tue, 18 Apr 2017 18:52:28 +0800</pubDate><description><![CDATA[

转载链接：https://www.zhihu.com/question/22677800/answer/63806275
首先介绍下短链接和长连接的区别：
短连接连接-&amp;gt;传输数据-&amp;gt;关闭连接 比如HTTP是无状态的的短链接，浏览器和服务器每进行一次HTTP操作，就建立一次连接，但任务结束就中断连接。 具体就是 浏览器client发起并建立TCP连接 -&amp;gt; client发...]]></description><category></category></item><item><title><![CDATA[redis-避免误用redis （转载）]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681058</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681058</guid><author>iteye_5504</author><pubDate>Sat, 08 Apr 2017 16:10:15 +0800</pubDate><description><![CDATA[
避免误用 Redis
 
Redis 是目前 NoSQL 领域的当红炸子鸡，它象一把瑞士军刀，小巧、锋利、实用，特别适合解决一些使用传统关系数据库难以解决的问题。但是 Redis 不是银弹，有很多适合它解决的问题，但是也有很多并不适合它解决的问题。另外，Redis 作为内存数据库，如果用在不适合的场合，对内存的消耗是很可观的，甚至会让系统难以承受。
我们可以对系统存储使用的数据以两种角度分...]]></description><category></category></item><item><title><![CDATA[ serialization-protobuf]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681039</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681039</guid><author>iteye_5504</author><pubDate>Fri, 07 Apr 2017 20:20:15 +0800</pubDate><description><![CDATA[
java : http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html
 
protobuf 简介：是一种序列化与结构化数据的一种机制，具有跨平台、解析速度快、序列化数据体积小、扩展性高、使用简单的特点
目标：验证protobuf序列化的内存占用量低于Java的直接序列化
 
java的实现：
 pub...]]></description><category></category></item><item><title><![CDATA[java-jvm-jstack-（监视器和锁的概念）]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82681000</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82681000</guid><author>iteye_5504</author><pubDate>Thu, 06 Apr 2017 16:52:18 +0800</pubDate><description><![CDATA[
下面这段jstack的栈信息里，有一个死锁
其中：
Thread-1 持有  0x00000007d5df4970，等待获取：0x00000007d5df4960
Thread-0 持有  0x00000007d5df4960，等待获取：0x00000007d5df4970
所以导致了死锁的出现
两个线程都有有一句： java.lang.Thread.State: BLOCKED (...]]></description><category></category></item><item><title><![CDATA[java-jvm-jstack-线程状态]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82680806</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82680806</guid><author>iteye_5504</author><pubDate>Fri, 31 Mar 2017 14:42:47 +0800</pubDate><description><![CDATA[
常见的线程状态:
RUNNABLE：正在执行的线程
注意：这里执行是针对jvm来说的，并非真的在cpu上执行，这要看操作系统处理器是否有机会
 
 
BLOCKED:阻塞的线程
注意：阻塞的线程一般是拿不到监视器锁（a monitor lock），比如：synchronized block/method，ReentrantLock.lock()
 
jstack一般显示为：
...]]></description><category></category></item><item><title><![CDATA[java-jvm-jstack-2(超级转载)]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82680773</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82680773</guid><author>iteye_5504</author><pubDate>Thu, 30 Mar 2017 17:31:51 +0800</pubDate><description><![CDATA[
jstack Dump 日志文件中的线程状态
dump 文件里，值得关注的线程状态有：



死锁，Deadlock（重点关注） 


执行中，Runnable   


等待资源，Waiting on condition（重点关注） 


等待获取监视器，Waiting on monitor entry（重点关注）


暂停，Suspended


对象等待中，Object.wa...]]></description><category></category></item><item><title><![CDATA[java-jvm-cpu (cpu)高问题排查]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82680701</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82680701</guid><author>iteye_5504</author><pubDate>Tue, 28 Mar 2017 21:07:17 +0800</pubDate><description><![CDATA[
1、通过top命令发现 cpu高的进程
根据top命令，发现PID  为22143的Java进程占用CPU 17.8%
2、根据cpu高的进程，查找引起cpu高的线程
命令：ps -mp 22143 -o THREAD,tid,time|sort -k1 -nr|head -15方案二：


 top -H -p pid 这样是是看pid对应下的线程对应的的cpu 占用率，可以定位到c...]]></description><category></category></item><item><title><![CDATA[zookeeper  收藏文章]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82679332</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82679332</guid><author>iteye_5504</author><pubDate>Wed, 22 Feb 2017 11:19:30 +0800</pubDate><description><![CDATA[http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/]]></description><category></category></item><item><title><![CDATA[zookeeper  配置解析（收藏）]]></title><link>https://blog.youkuaiyun.com/iteye_5504/article/details/82679204</link><guid>https://blog.youkuaiyun.com/iteye_5504/article/details/82679204</guid><author>iteye_5504</author><pubDate>Sun, 19 Feb 2017 15:50:14 +0800</pubDate><description><![CDATA[
zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg，需要将其修改为zoo.cfg。其中各配置项的含义，解释如下：
 
1.tickTime：CS通信心跳数
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔，也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。

tickTime=2000  
...]]></description><category></category></item></channel></rss>