- 博客(182)
- 收藏
- 关注
原创 由 B-/B+树看 MySQL索引结构【转载】
http://www.cnblogs.com/tgycoder/p/5410057.html B-树B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树 它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图.B-树有如下特点:所有键值分布在整颗树中;任何一个关键字出现...
2017-05-03 20:09:46
214
http-post-upload 格式
目的:发起一个携带文件和字段的http请求,理解http 通过 boundary分割域 实现文件上传功能 浏览器: 客户端发送的请求:结论:http 文件上传,http协议通过定义:boundary=---------------------------7e131a1ade2200 来实现每个字段域直接的分割针对普通的文本域,比如:username,passw...
2017-05-03 16:48:27
440
原创 http-post(收藏)
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主...
2017-05-03 14:37:51
363
原创 iotop&iostat (load高 IO高的问题排查)
目标:使用iotop&top&jstack命令定位 io高的应用以及线程信息实现:load过高但是cpu占用率低的模拟与验证一般load高,说明系统大量的线程在等待执行cpu us sy 显示都不高,并且wa 占用高,说明系统在等待大量的io操作 1、安装iotopsudo yum install iotop 2、top命令显示 从to...
2017-04-27 20:40:41
2885
socket-server-http
目标:实现一个http协议的demo服务器实现:启动一个ServerSocket,监听特定端口,然后浏览器请求,返回页面 代码实现:package com.socket.bio.socket;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;...
2017-04-25 14:50:32
197
原创 mysql-执行计划 (整理转载)
Explain语法 执行计划包含的信息:[10列数据项]id包含一组数字,表示查询中执行select子句或操作表的顺序 id相同,执行顺序由上至下 如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行 id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行 selec...
2017-04-25 11:57:56
150
socket-client-http-post
目标:通过socket 模拟HTTP协议连接 tomcat,做一次POST请求 请求数据:POST /index.jsp HTTP/1.1Host:192.168.237.230Content-Type:application/x-www-form-urlencodedConnection: closeContent-Length:42usern...
2017-04-25 11:08:48
226
socket-client-http-get
目标:通过socket 模拟HTTP协议连接 tomcat,做一次GET请求 HTTP 协议的格式: request:GET /index.jsp?username=xinchun.wang&password=123456 HTTP/1.1Host:192.168.237.230Connection: close response:...
2017-04-25 11:03:55
136
原创 byte[]&int&long
参考:http://blog.csdn.net/defonds/article/details/8782785int 值和byte[]数组直接的转换: public static int byteArrayToInt(byte[] b) { return b[3] & 0xFF | (b[2] & 0xFF) <...
2017-04-19 20:48:53
163
应用系统的缓存实践
背景:重构后需要通过调用dubbo接口获取数据,数据量比较大,需要做缓存 缓存策略:1、客户端缓存 存在的问题: 缓存数据多份分散在不同的应用服务器上,应用机器越多,总占用缓存空间就越大; 数据量很高的情况,这种方案完全不可行 ...
2017-04-19 16:41:13
169
原创 socket-长连接&短连接
转载链接:https://www.zhihu.com/question/22677800/answer/63806275首先介绍下短链接和长连接的区别:短连接连接->传输数据->关闭连接 比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 具体就是 浏览器client发起并建立TCP连接 -> client发...
2017-04-18 18:52:28
254
redis-避免误用redis (转载)
避免误用 Redis Redis 是目前 NoSQL 领域的当红炸子鸡,它象一把瑞士军刀,小巧、锋利、实用,特别适合解决一些使用传统关系数据库难以解决的问题。但是 Redis 不是银弹,有很多适合它解决的问题,但是也有很多并不适合它解决的问题。另外,Redis 作为内存数据库,如果用在不适合的场合,对内存的消耗是很可观的,甚至会让系统难以承受。我们可以对系统存储使用的数据以两种角度分...
2017-04-08 16:10:15
139
serialization-protobuf
java : http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html protobuf 简介:是一种序列化与结构化数据的一种机制,具有跨平台、解析速度快、序列化数据体积小、扩展性高、使用简单的特点目标:验证protobuf序列化的内存占用量低于Java的直接序列化 java的实现: pub...
2017-04-07 20:20:15
493
java-jvm-jstack-(监视器和锁的概念)
下面这段jstack的栈信息里,有一个死锁其中:Thread-1 持有 0x00000007d5df4970,等待获取:0x00000007d5df4960Thread-0 持有 0x00000007d5df4960,等待获取:0x00000007d5df4970所以导致了死锁的出现两个线程都有有一句: java.lang.Thread.State: BLOCKED (...
2017-04-06 16:52:18
324
java-jvm-jstack-线程状态
常见的线程状态:RUNNABLE:正在执行的线程注意:这里执行是针对jvm来说的,并非真的在cpu上执行,这要看操作系统处理器是否有机会 BLOCKED:阻塞的线程注意:阻塞的线程一般是拿不到监视器锁(a monitor lock),比如:synchronized block/method,ReentrantLock.lock() jstack一般显示为:...
2017-03-31 14:42:47
188
原创 java-jvm-jstack-2(超级转载)
jstack Dump 日志文件中的线程状态dump 文件里,值得关注的线程状态有:死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注)暂停,Suspended对象等待中,Object.wa...
2017-03-30 17:31:51
129
原创 java-jvm-cpu (cpu)高问题排查
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...
2017-03-28 21:07:17
855
原创 zookeeper 收藏文章
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
2017-02-22 11:19:30
109
原创 zookeeper 配置解析(收藏)
zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg。其中各配置项的含义,解释如下: 1.tickTime:CS通信心跳数Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。tickTime=2000 ...
2017-02-19 15:50:14
98
原创 zookeeper 集群搭建
目标:搭建一个zk的集群(5个节点) zk的下载:wget http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz 解压:tar -xvf zookeeper-3.4.9.tar.gz 可执行脚本简介: zkCleanup—清理ZooKeeper历史数据,包括事物日志...
2017-01-20 11:47:12
116
原创 Serializable
Serializable:java默认序列化的功能,必须实现Serializable接口 实现Serializable 接口的类,虚拟机会默认添加一个ServialVersionUID 属性1、SerialVersionUID默认值的计算:根据类的各个方面得来的(属性,方法等)2、如果显示的声明此属性,虚拟机不会再添加3、SerialVersionUID 如果不一致,反序列...
2017-01-19 14:15:32
1208
原创 瞬时高并发(秒杀/活动)Redis方案(转载)
1,Redis丰富的数据结构(Data Structures)字符串(String)Redis字符串能包含任意类型的数据一个字符串类型的值最多能存储512M字节的内容利用INCR命令簇(INCR, DECR, INCRBY)来把字符串当作原子计数器使用使用APPEND命令在字符串后添加内容列表(List)Redis列表是简单的字符串列表,...
2017-01-14 16:32:54
337
redis-sentinel【收藏】
redis-sentinel:redis作为一个存储系统,可靠性非常重要,为此redis提供了哨兵的功能来检测master状态,并在master实例异常的时 实现主从库的切换,被集成在2.4以上的版本。 首先 redis-sentinel 是redis官方自带的工具,用于管理多个Redis服务器实例,使用的时候只需要启动若干个sentinel实例即可其次redis-sentin...
2017-01-09 12:00:05
104
原创 redis-master-slave
Redis复制工作原理:1. 如果设置了一个Slave,无论是第一次连接还是重连到Master,它都会发出一个SYNC命令;2. 当Master收到SYNC命令之后,会做两件事:a) Master执行BGSAVE,即在后台保存数据到磁盘(rdb快照文件);b) Master同时将新收到的写入和修改数据集的命令存入缓冲区(非查询类);3. 当Master在后台把数据保存到快照文件完成之后,...
2017-01-06 17:17:46
175
设计模式-Immutable
不变设计模式:不变模式的用意是对象生成之后就不能再改变了 尤其在多并发程序中:为确保数据的一致性和正确性,又必要对对象进行同步,但是同步操作对系统性能有相当的损耗。因此可以使用一种不可改变的对象,依靠其不变形来确保并行操作在没有同步的情况下依旧保持一致性和正确性。 保持对象不可变的手段:1、基本类型 ,final修饰 或者 不提供set方法2、引用类型(包括集合类型),...
2017-01-06 15:37:06
177
spring-transaction-basic
Spring的事务本身是基于AOP的 AOP代理自动创建器:InfrastructureAdvisorAutoProxyCreatorbeanname:org.springframework.aop.config.internalAutoProxyCreator 事务AOP:BeanFactoryTransactionAttributeSourceAdvisorbean...
2016-12-26 19:18:34
99
mysql-repeatable read可以避免幻读
事务隔离级别的语义:当前事务执行过程中,通过select,update,delete 操作,对其他事务的影响,反过来也是如此,通俗的说就是 当前事务是否可以看到其他事务的操作结果。 1、如何查询当前数据库的隔离级别(我们只讨论mysql的事务隔离级别) select @@tx_isolation;SELECT @@session.tx_isolation; SELECT...
2016-11-26 15:50:50
685
spring-transaction-propagation
Spring 事务:是spring 通过 aop实现的一套事务管理功能,可以定义隔离级别,传播行为,回滚规则,事务超时,是否只读。1、隔离级别 对应mysql 几乎都是定义为 可重复读2、传播特性则不同,不同的业务场景,使用的特性非常不同 spring 事务的创建的时间点:通过aop 在调用需要开启事务的方法前开启,方法结束后提交事务(准确的说还要看事务的传播行为),或者抛出异...
2016-11-25 21:00:31
143
原创 spring bean & id
首先澄清一个概念: 同名bean:多个bean 有相同的 name 或者 id,称之为同名bean <bean> 的id 和 name的区别 id和name都是spring 容器中bean 的标识符。 id: 一个bean的唯一标识 , 命名格式必须符合XML ID属性的命名规范 name: 可以用特殊字符,并且一个bean可以用...
2016-11-25 17:57:11
169
spring 父子容器
特殊说明:ContextLoaderListener: 创建的容器为父容器(applicationContext.xml)DispatcherServlet:创建的容器为子容器(appServlet-context.xml)1、问题:同一个类可以被子容器和父容器同时生成实例吗?答案:可以,并且是不同的实例2、问题:如果一个类子容器(appSe...
2016-11-25 17:11:13
162
原创 guava 简介
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。下面我...
2016-11-25 17:06:33
191
原创 设计模式-Command
[b]命令模式[/b]:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化操作,实现对请求排队或记录请求日志,以及支持可撤销的操作。[b]模式分析[/b]:1.命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。2.每一个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接收的一方收到请求,并执行操作。3.命令模式允许请求的一方和接收的...
2016-10-16 17:04:37
89
设计模式-Prototype
学习参考:[url]http://www.cnblogs.com/hegezhou_hot/archive/2010/12/04/1896471.html[/url][b]定义:[/b]是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的.[b]重点:[/b]1、原型模式主要用于对象的复制,Pr...
2016-10-16 12:31:15
75
设计模式-Builder
[b]建造者模式[/b]: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。提供一种“封装机制”来隔离“复杂对象的各个部”的变化,从而保持系统中的“稳定构建算法”而不随需求的变化而变化。[b]解决的问题:[/b]主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分...
2016-10-14 16:06:04
98
设计模式-Proxy
[b]代理模式:[/b]1、表现为了控制对真实对象的访问,提供一个代理的角色,客户端通过调用代理实现访问真实对象。2、表现为 对真实对象的操作进行拦截,再调用真实对象前后,代理对象做一些操作[b]特点:[/b]1、代理对象和真实对象有公共的接口,这个接口暴露给客户端。2、代理对象持有真实对象3、客户端通过访问代理对象 实现访问真实对象的目的4、代理对象可以在调用真实...
2016-10-14 14:20:38
93
设计模式-Strategy
[b]策略模式:[/b] 属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。[b]角色划分:[/b]抽象策略角色: 由一个接口或者抽象类实现 具体策略角色: 包装了相关的算法和行为 环境角色(客户端): 持有一个策略类的引用结构:[img]http://d...
2016-10-13 14:33:46
118
设计模式-templete method
[b]模板方法模式:[/b]在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法的实现需要语言层面的支持:比如继承,多态。[b]关注点:[/b]1、抽象类实现一个算法的不变的部分,并将可变的行为留给子类来实现;抽象类一般用来控制执行流程,是主逻辑;各子类中公共的行为应被提取出来并集中到...
2016-10-12 20:23:19
97
设计模式-Abstract Factory
[b]定义[/b]:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。[b]特点:[/b]1、多个产品系列 工厂方法一般是一个产品系,抽象工厂是多个2、抽象工厂接口 提供获取多个获取产品的方法(产品簇)3、具体工厂 工厂方法:只生产一种产品;抽象工厂:生产一个产品族产品簇:是指位于不同产品等级结构中,功能相关联的产品组成的家族...
2016-10-12 19:58:42
151
设计模式-factory method
[b]工厂方法模式(FACTORY METHOD):[/b]是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品。[b]工厂方法(Factory Method)模式的实现[/b]:定义一个创建产品对象的工厂接口,将...
2016-10-12 12:49:57
99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人