自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 kafka命令

以下是kafka常用命令行总结:    1.查看topic的详细信息  ./kafka-topics.sh -zookeeper 127.0.0.1:2181 -describe -topic testKJ1    2、为topic增加副本  ./kafka-reassign-partitions.sh -zookeeper 127.0.0.1:2181 -reassi...

2018-10-12 15:03:32 130

原创 HBase 原理

http://lxw1234.com/archives/2016/09/719.html这一篇讲的不错Rowkey设计rowkey是HBase实现分布式的基础,HBase通过rowkey范围划分不同的region,分布式系统的基本要求就是在任何时候,系统的 访问都不要出现明显的热点现象,所以rowkey的设计至关重要,一般我们建议rowkey的开始部分以hash或者MD5进行散列,尽...

2018-05-02 21:42:24 136

原创 linux 设置 ulimit

java.lang.OutOfMemoryError: unable to create new native thread 启动服务报错,无法创建native thread,排查结论是被系统限制资源,设置 ulimit root 修改 /etc/security/limits.conf *                -       core            5...

2018-04-20 17:11:02 112

原创 Probobuf 原理介绍

主要参考博文《https://www.jianshu.com/p/ec39f79c0412》主要优点:1. 序列化速度快,压缩体积小    1.1 数据紧凑,使用 tag+value 方式,tag为字段编号    1.2 剔除无效字段,未设置字段不会传输(proto3 之后全部字段都是optional)    1.3 传输字段采用特殊规则编码,体积更小(varints &am...

2018-03-19 18:59:55 181

原创 Redis 缓存问题及解决方案

1. 缓存穿透    指查询一个不存在的对象,缓存层和存储层都不会命中,可以采用缓存空对象或者bloom filter解决,两者的解决典型场景不同,bloom filter适用于数据相对固定实时性低的场景。2. 无底洞优化    无底洞问题指水平扩展,性能没有提升甚至会下降,这是因为客户端一次批量操作会涉及很多网络操作,随着节点增多,耗时会变大,网络节点多对节点性能也有影响。优化方...

2018-02-07 15:49:34 177

原创 Redis Cluster集群故障转移

1. 故障发现    1.1 主观下线,Redis集群通过Gossip的ping,pong消息来互相通信,比如A节点向B节点发送ping,如果在 cluster-node-timeout时间内一直失败,则节点A会认为B是主观下线,同时将此状态信息在集群内广播    1.2 客观下线,当半数以上的持有槽的主节点都标记B是主观下线时,触发客观下线流程。          1.2.1 通...

2018-02-06 21:47:59 636

原创 Redis Cluster集群水平扩展

Redis分布式方案一般有两种(1)客户端分区,优点是分区逻辑可控,缺点是需要客户端处理数据路由、高可用、故障转移等。(2)代理方案,优点是简化客户端逻辑和升级,缺点是加重架构复杂性和性能损耗。Redis Cluster是官方提供的分布式解决方案,从3.0版本正式推出,和以上两种方案都不太一样,采用了虚拟槽分区,分区方式采用了hash分区,它并没有使用一致性hash(增减节点会导致...

2018-02-05 21:06:27 333

原创 Redis Sentinel

Redis Sentinel 是 redis的高可用实现方案:故障发现、故障自动转移、配置中心、客户端通知,Jedis原生支持,客户端在连接时,实际连接的Sentinel集合,当Sentinel观测到变化和故障转移后,会Pub到client端,实际使用了redis的pub/sub功能。 1. 主节点故障,主从复制失败2. Sentinel通过定期监控,发现主节点故障3. 多个S...

2018-02-01 21:24:04 91

原创 Redis 主从复制

Redis主从复制过程,由从节点发起复制请求,默认情况从节点是只读的1. 从节点发起复制请求,保存主节点信息2. 主从建立socket连接3. 从节点发送ping命令4. 主节点权限验证(默认关闭)5. 同步数据6. 持续复制 其中同步数据又分为全量复制和部分复制 全量复制,从节点第一次复制必须为全量复制,全量复制过程为从节点发起,主节点保持RDB文件,...

2018-02-01 16:39:07 76

原创 Redis 持久化

Redis持久化有两种方式,RDB和AOF,持久化通常都会fork一个子进程做备份。 RDB使用一次性生成内存快照方式,压缩且文件更紧凑,读取RDB恢复速度快;但是每次RDB是全量备份,速度慢,无法做到实时持久化,通常用于数据冷备和复制传输。 AOF通过追加命令到文件实现实时(秒级)持久化,极端情况丢失2s的数据;因为不断追加命令,文件会越来越大,要定期执行重写AOF文件降低文...

2018-02-01 16:21:40 73

原创 Mysql在线修改Scheme工具原理

MySQL在线更改schema的工具很多,如Percona的pt-online-schema-change、 Facebook的 OSC和 LHM 等,这些都是基于触发器(Trigger)的; gh-ost 声称是github自己开源的不需要触发器(Triggerless)支持的在线更改表结构的工具;腾讯GSC 目前最常用的工具是pt-online-schema-change,大概原理...

2018-01-30 17:02:03 399

原创 Mysq bin redo undo log

1. undo logundo日志用于存放数据修改被修改前的值,是逻辑日志,比如delete sql 对应的undo log是一条insert sql。undo log作用有两个,一个是用于事务回滚操作,保证事务原子性,部分解决持久性;另一个是对MVCC实现,即MVCC实现是依赖于undo log的。 实现原子性和持久化的事务的简化过程 假设有A、B两个数据,值分别为1,2...

2018-01-30 15:56:08 92

原创 Mysql锁

1. 共享锁  排他锁 select * from xxx where a=10 lock in share mode //共享锁其他事务中的普通select和共享select可以;  排他读以及增删改会阻塞 select * from xxx where a=10 for update //排他锁其他事务中普通select读可以;共享读、排他读和增删改,都会阻塞 ...

2018-01-26 16:43:58 72

原创 Mysql隔离级别

1.《Mysql隔离级别》https://www.jianshu.com/p/4ba118333a19Mysql innodb默认隔离级别 Repeatable Read,只是部分消除了 幻读问题,普通select语句是快照读(MVCC实现),不会读到其他事务新删改的记录,(但是share mode select 或者拍他锁的 select update insert delete 是当前...

2018-01-23 20:17:03 228

原创 Mysql命令

《Mysql inner join left join》http://justcode.ikeepstudying.com/2016/08/mysql-%E5%9B%BE%E8%A7%A3-inner-join%E3%80%81left-join%E3%80%81right-join%E3%80%81full-outer-join%E3%80%81union%E3%80%81union-al...

2018-01-23 20:07:53 59

原创 敏捷开发

https://www.qcloud.com/community/article/766331?fromSource=gwzcw.93748.93748.93748《敏捷开发》

2017-12-21 12:34:10 175

原创 Redis 高并发原理

1 单线程模型Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。2 单线程模...

2017-12-14 12:18:58 3108

原创 服务治理

服务如何治理,服务治理的目标是什么1. 服务注册与发现2. 服务订阅3. 服务变更通知http://www.cnblogs.com/Zachary-Fan/p/service_manage_discovery.html

2017-12-14 12:09:35 110

原创 Hbase介绍

1. 基于行和列族的管理 每个列族是个maphttp://blog.csdn.net/heyutao007/article/details/57669452. hbase一些特性,使用 row key获取的原子操作http://www.uml.org.cn/zjjs/201211132.asp...

2017-12-08 10:46:33 65

原创 RPC通信协议

1.《Thrift通信协议》可支持二进制序列化方式,省空间效率高https://qinzhaokun.github.io/2017/09/12/Thrift%E9%80%9A%E4%BF%A1%E6%A8%A1%E5%9E%8B/

2017-12-07 21:10:44 213

原创 Mysql索引原理

《Mysql 索引原理》 http://blog.codinglabs.org/articles/theory-of-mysql-index.html 3. 《Mysql inner join left join》http://justcode.ikeepstudying.com/2016/08/mysql-%E5%9B%BE%E8%A7%A3-inner-join%E3%80%8...

2017-12-06 11:30:51 60

原创 计划列表

1. 操作系统   select poll epoll  NIO AIO, 用户态,内核态https://segmentfault.com/a/1190000003063859  介绍IO多路复用的(完成)http://blog.csdn.net/anxpp/article/details/51512200 介绍java nio bio2. Mysql 相关,B+树,乐观锁,悲观锁(完成)...

2017-10-05 17:30:58 253

原创 Spring MVC(2) - DispatcherServlet运行

Spring MVC(2) - DispatcherServlet运行流程 再次看一下类的继承结构 http请求在Servlet的业务处理流程 // Called by the servlet container to allow the servlet to respond to a request.// javax.servlet.Servlet中定义的接口se...

2017-10-02 15:08:49 62

原创 Spring MVC(1) - DispatcherServlet初始化

本节主要讲Spring MVC的DispatcherServlet初始化, Servlet是不能自己启动,是由web容器(比如tomcat)启动和调用Servlet初始化的。DispatcherServlet实现和扩展了javax.Servlet,它是Spring MVC的核心。首先贴一下基础配置文件,web.xml<?xml version="1.0" encoding="UTF-...

2017-10-01 23:29:13 71

原创 Spring bean初始化(3) - ApplicationContext

本节讲 Spring bean初始化(3) - ApplicationContextApplicationContext和BeanFactory都是用于加载Bean的,但是项目中基本都是使用ApplicationContext,原因是它包括了BeanFactory的所有功能,并且进行了扩展,ApplicationContext初始化过程中会完成所有的单例( no-lazy-init) 的初...

2017-10-01 10:56:10 77

原创 Spring bean初始化(2) - bean实例化

Spring bean初始化(2) - bean实例化  XmlBeanFactory bf = new XmlBeanFactory(new ClassPathResource("/spring-code-test.xml")); // bean实例化是由getBean调用触发的 TestBean bean = (TestBean) bf.getBean("...

2017-09-30 21:38:34 113

原创 Spring bean初始化(1) - XML解析

Spring bean的初始化源码分析-XML解析XML解析部分,XML解析最终会将XML中配置的bean或者标签需要扫描的bean,都准备好,生成beanDefinition,用于后续的bean实例化 XmlBeanFactory bf = new XmlBeanFactory(new ClassPathResource("/spring-code-test.xml")); ...

2017-09-26 10:32:33 81

原创 Mysql innodb和myisam

转自 http://www.jianshu.com/p/a957b18ba40d MyISAM与InnoDB的区别是什么?事务和行级锁,是两者最大的区别! 1、 存储结构MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.M...

2017-09-22 16:03:47 93

原创 tcp三次握手四次挥手及网络状态

tcp 三次握手和四次挥手示意图, 详细见 http://www.jianshu.com/p/9968b16b607e  对一些状态的说明,1. Client端在结束的时候,发送FIN后,进入FIN-WAIT-1状态2. Server端收到FIN,发送ACK后,进入 CLOSE-WAIT状态3. Client端收到ACK后,进入FIN-WAIT-2状态,停止发送数据4....

2017-09-22 15:25:29 62

原创 Spring AOP实现源码分析(三)

Spring AOP的实现可以分为三大部分1. 注册AOP功能具体实现类2. 普通Bean实例化时AOP的切入3. AOP切入具体流程 下面分析BeanPostProcessor执行过程中,aop如何切入,上一节讲到,普通bean初始化会调用如下方法 // 调用AOP的真正实现方法入口 result = beanProcessor.postProcessA...

2017-08-03 22:19:21 93

原创 Spring AOP实现源码分析(二)

Spring AOP的实现可以分为三大部分1. 注册AOP功能具体实现类2. 普通Bean实例化时AOP的切入3. AOP切入具体流程 2. 普通Bean实例化时AOP的切入ApplicationContext主流程会保证先完成BeanPostProcessor的注册实例化,这样可以保证普通bean实例化时,所有的 BeanPostProcessor 已经实例化了 ...

2017-08-03 22:17:50 86

原创 https交互过程

1. 客户端发起https请求,请求数据中包括当前浏览器的加密算法列表,随机数(random1)2. 服务端回复客户端,数据包括 证书,确认的加密算法,随机数(random2)3. 客户端验证证书的合法性4. 客户端生成加密随机数(premaster_secret),使用第2步约定的生成秘钥算法(非对称加密算法),通过证书的公钥,对premaster_secret进行加密,传输给服...

2017-08-02 18:36:12 335

原创 Spring AOP实现源码分析(一)

Spring AOP的实现可以分为三大部分1. 注册AOP功能具体实现类2. 普通Bean实例化时AOP的切入3. AOP切入具体流程 本文主要讲第一部分1. 注册AOP功能具体实现类1.1 初始化aop自定义标签解析器 AspectJAutoProxyBeanDefinitionParser      当 xml 中读到  aop:aspectj-autoproxy ...

2017-08-02 13:52:08 63

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除