- 博客(25)
- 资源 (8)
- 收藏
- 关注
原创 RocketMQ源码调试环境搭建
序言之前实习的时候曾阅读过一些RocketMQ(MetaQ)的源码,当时只是debug了客户端代码,没有debug服务端(如:broker)的代码。网上的教程大多是安装教程,前几天赋闲在校,在本机上搭建好了RocketMQ的源码调试环境,也踩了几个坑,下面分享一下:环境(自己的笔记本,跟了我好几年了,性能快跟不上了)OS:Win8.1 IDE:intelij idea 内存:6G步骤一、安装好
2016-12-16 19:03:08
9031
6
原创 RocketMQ原理解读 NameServer篇(broker节点治理)
序言在来阿里实习之前,就对消息队列非常感兴趣,当时就翻看了RocketMQ的使用指南并在本地搭建环境跑了些demo。如今项目压力不太大,就准备趁着实习期间来细看RocketMQ的原理和源码实现.NameServer作用nameServer顾名思义,在系统中肯定是做命名服务,服务治理方面的工作,功能应该是和zookeeper差不多,据我了解,RocketMq的早期版本确实是使用的zookeeper,后
2016-09-23 12:58:22
14344
5
原创 MySQL执行计划理解与实践
SQL执行过程和优化器首先看一下MySQL中,一条sql的执行过程,这里主要是引用了《高性能MySQL》中的内容:1、客户端发送一条查询给服务器 2、服务器先检查查询缓存,如果命中缓存则立刻返回存储在缓存中的结果,否则进入下一阶段。 3、服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划。 4、MYSQL根据优化器生成的执行计划调用存储引擎的API来执行查询 5、将结果返回给客户端
2016-05-17 13:43:35
5595
原创 理解Java虚拟机
一、简介Java运行时,会将管理的内存划分成各个不同区域,每个区域的功能以及生命周期都不同。下面将大致介绍各个内存区域的作用。二、具体区域program counter register(程序计数器)可以看作是是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值进行跳转。显而易见的是程序计数器是线程私有的。 如果线程正在执行的是一个Java方法,计数器记录的则是正在
2016-03-23 15:03:41
483
原创 Linux :IO多路复用模型
一、IO多路复用定义IO多路复用允许应用在多个文件描述符上阻塞,并在某一个可以读写时通知, 一般遵循下面的设计原则:、IO多路复用:任何文件描述符准备好IO时进行通知在文件描述符就绪前进行睡眠。唤醒:哪个准备好了在不阻塞的情况下处理所有IO就绪的文件描述符返回第一步Linux下提供了三种IO多路复用方案,select、poll和epoll。二、select IO 多路复用看一下selec
2016-03-08 14:47:52
3303
原创 高性能Mysql:事务特性及实战
一、开篇简介事务的作用我就不再提及了, 相信看到这篇文章的基本上都会知道事务的概念。本篇文章首先会介绍一下事务的特性、四种隔离级别以及对应的实战测试,希望帮读者加深事务的理解。二、事务的ACID特性原子性(atomicity)一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部成功,要么全部失败一致性(consistency)数据库永远是从一个一致性状态转向另一个一致性状态
2016-03-07 19:32:50
1711
原创 分布式理论:ZAB协议
一、简介前面的博文介绍了2pc、3pc以及paxos,到了具体的工程实现中,分布式协议的实现并没有那么简单,很多时候需要做出一些取舍,下面介绍zookeeper的分布式一致性协议ZAB(ZooKeeper Atomic Broadcast ZooKeeper原子消息广播协议)。ZAB的核心处理方式所有事务请求必须由一个全局唯一的服务器来协调处理,这个服务器成为leader,其他称为follower,
2016-03-07 12:58:38
922
原创 高性能Mysql:B-TREE和B+-TREE
高性能Mysql:B-TREE和B+-TREE一、索引简介数据库中,索引对于查询来说至关重要。它就像书籍里的目录一样,能在磁盘页面中迅速找到所需要的记录,能够将查询性能提高好几个数量级。所以索引是应对查询性能最有效的手段。下面从原理的角度分析mysql的集中索引类型。二、B-TREE和B+-TREE的特点首先明确一点,mysql中的索引是存储引擎实现的,而不是在服务器层实现的,所以每种存储引擎的索引
2016-03-06 14:31:36
5889
1
原创 Java并发编程系列(一):Java并发内存模型
Java并发编程系列(一):Java内存模型基础一、进程间通信方式线程是借鉴了进程的工作方式,所以我们有必要先看一下进程间通信的方式。 1、管道:这个大家应该比较熟悉,这里主要是父子进程的通信。 2、有名管道:主要是给无亲缘关系的进程传递数据使用,Linux命令中也可以常常使用管道来进行数据的传递。 3、信号量:信号量由迪杰斯特拉提出,用一个整型变量来累积唤醒次数来控制多个进程对资源
2016-03-05 23:37:07
806
原创 Mysql limit 分页机制和优化实例
Mysql limit 常用于分页等操作,对于页面展示来说,一旦数据量上升,分页查询的性能问题就会非常需要关注,下面给出几种 limit性能分析和实例。
2016-03-05 18:02:55
5553
原创 Java源码分析:ConcurrentHashMap
上篇文章和大家分享了HashMap的源码,了解了HashMap的原理。和HashMap比较相似的有Hashtable,Hashtable的代码和HashMap大部分相似,关键的区别在于前者是线程安全的,后者线程不安全。Hashtable主要是对所有关于hash表的操作加锁来实现线程安全。
2016-03-05 14:59:28
513
原创 Java源码分析:HashMap
HashMap源码分析:1、分析了HashMap的基础数据结构 2、分析了HashMap的hash值计算方式 3、分析了HashMap的数据存储
2016-03-02 15:38:17
537
转载 Paxos Made Simple【翻译】
Paxos一致性算法——分布式系统中的经典算法,论文本身也有一段有趣的故事。一致性问题是分布式系统的根本问题之一,在论文中,作者一步步的加强最初一致性问题(2.1节提出的问题)的约束条件,最终导出了一个可实现的一致性模型。当前Paxos算法的研究越来越多,相关实现也不少,而原论文依然是最不可少的资料。论文通篇没有一个数学公式,这是大牛的坚持!【】中的是我个人的注释。先解释文中几个关键词
2016-01-30 20:24:57
607
原创 分布式理论:2pc与3pc
分布式系统中,人们为了保障多个节点在进行全局事务操作的一致性,提出了很多分布式算法,其中比较著名的有二阶提交协议(Two Phase Commitment Protocol)、三阶提交协议(Three Phase Commitment Protocol)和Paxos算法,本文主要讲述2pc和3pc算法,paxos算法会留到下一篇博客中。
2016-01-16 20:53:41
3526
2
原创 zookeeper官档教程一(zookeeper数据模型)
zookeeper有一个高级的命名空间,像一个分布式文件系统,但是唯一区别在于空间中每个node都和它的子文件相关,就像任何一个文件都可以是一个文件夹。路径也是绝对路径,没有相对路径。同时有一些命名规则上有些unicode字符串不能用,比如. ..这种。ZNodes:zookeeper中每个节点都是一个znode,ZNodes维护了一个统计信息数据结构,其中包含了数据改变的版本号以
2016-01-03 00:58:45
2602
原创 JAVA的最小生成树(prim)算法
好久没更新博客了,由于离散数学的实践项目和SDN学习的需要,这次要学习一下图的最小生成树(PRIM)算法,PRIM算法的简介我这里就不COPY百度了。
2015-03-10 22:19:24
1284
原创 数据结构(二叉树系列)先序创建三种遍历和求深度(递归实现)
typedef struct BiTNode{ // 二叉树结点结构 char data; // 结点数据 struct BiTNode *lchild; // 左孩子 struct BiTNode *rchild; // 右孩子 }BiTNode,*BiTree; BiTree CreateBiTree(BiTree T);void TraversalBiTree1(BiTree T);void
2014-11-12 20:21:49
1515
开发至今搜集到的所有jar包
2015-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人