- 博客(25)
- 问答 (1)
- 收藏
- 关注
原创 Mysql查询性能优化的心得
前言:之前实习时候做过一阵子的查询优化,那段时间结合阅读《高性能mysql》,有些心得体会,现在重新总结。围绕着《高性能mysql》,同时加入自己的心得体会。
2017-08-23 15:06:36 2131 1
原创 RocketMQ源码深度解析五之Consumer篇
前言:RocketMQ 提供了两种消费模式, PUSH 和 PULL,大多数场景使用的是PUSH模式,这两种模式分别对应的是 DefaultMQPushConsumer 类和DefaultMQPullConsumer 类
2017-08-09 15:21:44 4910
原创 RocketMQ源码深度解析二之Name Server篇
前言:主要是用于管理所有的broker信息,让producer和consumer都能获取到正确的broker信息,进行业务处理。这是一个类似于zookeeper的服务治理中心。
2017-08-07 11:48:07 2239 1
原创 RocketMQ源码深度解析一之消息存储
前言:RocketMQ的消息持久化是基于文件系统,而从效率来看文件系统>kv存储>关系型数据库。那么,到底是如何存储的,相信对源码进行解析,将会是我们大大提高对消息存储的认识。
2017-08-07 01:09:05 11973 1
原创 dubbo源码深度解读七之registery模块
前言:dubbo-registry是注册中心模块,基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。Dubbo的注册中心提供了多种实现,其实现是基于dubbo的spi的扩展机制的,我们也可以直接实现自己的注册中心
2017-08-01 15:47:17 2658
原创 dubbo源码深度解读六之cluster模块
前言:这是集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡, 容错,路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。下图描述了dubbo调用过程中的对于集群,负载等的调用关系,根据该图一步步进行解读。 一,Cluster 将Directory中的多个Invoker伪装成一个Invoker, 对上层透明,包含集群的容错机制@SPI(FailoverCluster.NAME
2017-08-01 14:35:27 1145
原创 dubbo源码深度解读五之rpc模块
前言:rpc模块是远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。这个模块的学习将使我们对服务的发布和调用更加清晰。重点学习这几个类的作用和它们的实现类:ProxyFactory、Invoker、Protocol、Exporter
2017-07-31 17:42:22 990
原创 dubbo源码深度解读四之remoting模块
前言:remoting模块是远程通讯模块,相当于Dubbo协议的实现,是一个为Dubbo项目处理底层网络通信的层。具体结合了netty,mina等进行实现。
2017-07-31 00:24:03 3062
原创 dubbo源码深度解读三之container模块
前言:container为服务容器,用于部署运行服务,是一个Standlone的容器,以简单的Main加载Spring启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务。
2017-07-30 12:09:30 2613
原创 dubbo源码深度解读二之config模块
前言:config是配置模块,是Dubbo对外的API,用户通过Config使用Dubbo,隐藏Dubbo所有细节。里面包含了dubbo-config-api和dubbo-config-spring。该模块依赖dubbo-common(上篇已经讲过了)和dubbo-rpc(放在后面解读)
2017-07-29 12:39:37 2989
原创 dubbo源码深度解读一之common模块
前言:或许很多人会使用dubbo,但是阅读源码将使我们更加了解它,以及在未来对它进行改进优化。我就先把flag立在这里了,接下来这阵子将会深入源码进行学习和优化。做为一个要使用dubbo的程序员,必须需要深入理解它,因为dubbo已经停止了维护。
2017-07-28 12:01:39 4909 1
原创 基于Netty和Zookeeper实现RPC框架
前言:所谓RPC是一种通过网络从远程计算机请求服务,而不必了解底层技术的协议,客户端不在乎传输层使用TCP或者UDP,不在意IO模型选择select还是epoll。现在典型的RPC框架有:Thrift,Dubbo等。接下来将参考一些dubbo的东西,展示如何基于Netty和zookeeper开发实现一个高性能RPC框架,同时结合问题分析解决方法
2017-07-21 14:53:29 5438 1
原创 java8中使用Metaspace就不会出现OOM吗?
前言:在java8中,Metaspace的出现,使我们现在不会再遇到java.lang.OutOfMemoryError: PermGen问题,但是我们要记住,这个新特性并不会使类加载导致的内存泄露就此消失。(一)Metaspace的简单介绍 (1)内存模型:大部分类元数据都在本地内存分配,用于描述类元数据的“klasses“已经被移除。 (2) 容量:默认情况下只受本地内存限制,但是我们可
2017-07-14 00:40:25 4104 1
原创 深入理解垃圾收集器和收集器的选择策略
前言:新生代的收集器有:Serial,ParNew,Parallel Scavenge等。老年代有:CMS,SerialOld,Paraller Old等。接下来将深入理解各个垃圾收集器的原理,以及它们如何在不同场景下进行搭配使用。 同时,先解释几个名次: 1,并行(Parallel):多个垃圾收集线程并行工作,此时用户线程处于等待状态 2,并发(Concurrent):用户线程和垃圾收集线程
2017-07-13 16:48:09 2687
原创 Netty之私有协议栈开发
前言:《Netty权威指南》这本书让我收益巨大,接下来将结合自己的理解以及书中私有协议栈开发的例子,谈谈私有协议开发的思路,可能会遇到的问题,以及解决方法。同时会谈谈针对网络攻击(例如syn攻击)的解决方案。具体代码链接:https://github.com/wacxt/netty-private-protocol,可以结合进行看,这次不会上一堆代码,重点谈谈一些设计理念上的东西。(一)通信模型:
2017-06-27 15:23:30 1880 1
原创 mysql高性能索引的探索
前言:索引对于一个系统良好的性能来说非常重要,尤其是数据越来越多,但是索引却经常被忽略,索引优化能大大提高查询性能。接下来将从索引基础到索引建立的策略,步步深入说明。相信仔细看完会有较大收获一,索引基础 1,索引的类型 :B-Tree索引B-Tree索引意味着所有的值都是按顺序存放的,并且每一个叶子页到根到距离相同。B-Tree索引之所以能加快数据的速度,是因为存储引擎不再需要根据全表扫
2017-06-23 23:25:21 1132
原创 dubbo对传统ssm进行服务化改造的思路以及一些分布式工具实现的思路
前言:当垂直应用越来越多,应用之间交互不可避免时,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。接下来将讲解一下dubbo对传统ssm进行服务化改造的思路以及一些分布式工具(分布式锁,分布式队列)实现的思路。相关代码已经放在了Github,如果对基础ssm框架还不会搭建的,可以看看前面的博文
2017-06-16 11:59:15 1463
原创 Zookeeper教程(三):ZooKeeper源码阅读之Worker机制及集群状态监控
前言:接下来将会着重解释一下ZooKeeper里面重要的代码,本次将针对Worker机制,以及运用Worker进行对集群状态进行监控。如果对Zookerper的安装配置和运用不了解的,可以看看上两篇文章:(1)Zookeeper教程(一):快速开始以及结合java实现分布式Barrier和Queue (2) Zookeeper教程(二):ZooKeeper与Dubbo结合以及原理讲解
2017-06-01 16:17:55 1520
原创 Zookeeper教程(二):ZooKeeper与Dubbo结合以及原理讲解
前言:上次讲了ZooKeeper的搭建以及几个实例,这次将要讲讲ZooKeeper在Dubbo的应用,以及结合实例对其中原理进行讲解。(一)Dubbo的快速讲解 以防有人对Dubbo不了解,快速过一下Dubbo的基本概念,下面简单引用一下官方的介绍 (1)架构: (2)角色说明 Provider:暴露服务的提供方 Consumer:远程服务的消费方 Register:服务注册与发现的
2017-05-29 22:10:21 3614
原创 Zookeeper教程(一):快速开始以及结合java实现分布式Barrier和Queue
前言:现在网上对于详细系统的Zookeeper教程较少,于是自己想着来写一个,其实也是结合官方英文文档进行学习,计划将覆盖Zookeeper配置使用,结合java实现一些案例,源码解读,以及最终与dubbo等进行结合部署一个分布式系统。所有相关的代码都会上传到git,需要的可以下载一下。这篇教程最后将会结合ZooKeeper讲讲分布式Barrier和分布式队列
2017-05-26 21:45:19 10365
原创 基于docker的sentinel的高可用Redis集群
前言:docker和redis都是很好玩的技术,作为一个技术狂,一定会特别喜欢,那么我们可能会使用Docker来启动单个Redis用于开发,接下来将讲讲基于Sentinel的高可用Redis 3集群,代码以及放在git(git代码链接)上面了,放在项目里面的resources文件夹下面。觉得不错请给个星。不仅包含了如何启动docker集群,同时融入到java的ssm框架中,结合实例使用。使用的是Re
2017-05-25 00:56:52 3510
原创 SSM超详细搭建教程(Spring+SpringMVC+Mybatis)以及集成Redis和Druid
这个教程主要包括以下部分: 1,基础SSM(Spring+SpringMVC+Mybatis)搭建教程 2,集成Redis 3,Redis Sentinel高可用方案(基于docker) 4,Druid该教程写完可以当作一个脚手架以后直接使用,很方便,同时会讲解一下缓存方案,为下面搭建一个分布式高可用的系统先做点铺垫,源码以及全部上传到git上面,https://github.com/wac
2017-05-25 00:19:03 4177 1
原创 轻量级Java框架
该项目是一个轻量级MVC框架,重点实现了依赖注入和AOP特性,适合需要学习这两方面知识的人git地址:https://github.com/wacxt/light-framework依赖注入的实现:通过BeanHelper(位于Helper包中)获取所有Bean Map(是一个记录了类与对象的映射关系的Map,Object>结构),遍历这个映射关系,取出Bean类与Bean实例,通
2017-05-23 11:55:48 1002
空空如也
如何解决项目中数据字典的问题
2017-08-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人