自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Memcached源码分析之内存管理

一)模型分析         在开始解剖memcached关于内存管理的源代码之前,先宏观上分析一下memcached内存管理的模型是怎样子的:         提个建议,我觉得memcached内存管理的模型与我们平时做作业的作业本“画格子给我们往格子里面写字”的逻辑很像,一本本作业本就是我们的内存空间,而我们往里写的字就是我们要存下来的数据,所以分析的时候可以想像一下用方格作业本写字的情景。

2017-07-27 15:46:15 463

转载 分布式服务框架 Zookeeper -- 管理分布式环境中的数据

原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/#icomments安装和配置详解本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机

2017-01-08 15:14:16 350

原创 TProfiler工具的使用

背景前两天做了一个新接口,接口的逻辑也比较简单,从第三方拿到数据,做一些封装返回给客户端即可,但压测时发现当QPS为300左右,机器负载已经达到13左右,看了代码半天没有头绪,不知道问题出现在哪一步,所以就在网上查找性能优化的相关工具,觉得TProfiler简单易用、功能强大,就简单介绍下如何使用。TProfiler下载与安装第一步先去Github TProfiler

2017-01-05 11:49:51 3197 2

原创 Thrift源码系列----4.数据的解析与发送、接收

前言        在了解了Transport、TProtocol层的接口后,这一章我们来研究Thrift在客户端调用了方法后,是如何将我们传递的参数对象进行解析并发送出去的,服务端是如何将字节数组还原成一个对象的。创建Thrift文件        由于所有的序列化、反序列化操作、客户端的生成等都是在Thrift编译器生成的代码中,所以我们创建一个Thrift文件并生成Java类,后续都以该文件的

2016-12-19 14:31:38 3489 1

原创 Thrift源码系列----3.TProtocol层功能分析

前言        这一章我们来看TProtocol提供了哪些方法,重点介绍方法的功能,不对每个方法的源码实现做细致的分析,由于这一章牵扯到了上一层方法的调用问题,会有些难以理解,更多细节会在下一章详述。数据结构        在Thrift中有一套规则,规定了如何将我们传入的对象转为自身可使用的参数,下面我们来看三个类。        TField代表一个字段,无论该字段是一个对象还是基本字段,都

2016-12-16 10:29:48 999

原创 Thrift源码系列----2.TTransport层源码分析

概述前言        前几篇博客为大家介绍了Thrift类体系及非阻塞服务模型的框架实现,分析过程中对TTransport、TProtocol的类功能做简单介绍,忽略了实现细节,作者本人对一些细节实现也不很清楚,觉得很有必要再深入每一层的细节研究,所以从本章开始将对每一层次的类源码详细介绍,本章主要讲解服务端和客户端用到的TTransport。客户端与服务端        看源码前,有必要向大家说

2016-12-15 10:43:24 6121

原创 Thrift源码系列----6.TThreadedSelectorServer源码实现

前言上一章我们介绍了Thrift非阻塞型服务的父类AbstractNonblockingServer,搞清楚了该类的内部的特性后,TThreadedSelectorServer还是比较容易理解的。 #

2016-12-07 19:03:59 3297 6

原创 Thrift源码系列----1.服务端类体系

背景在转载的另一篇博客里,主要包括了thrift服务端现有的5种运行方式,其中的阻塞服务TSimpleServer,TThreadPoolServer模型相对简单,底层都是使用阻塞IO模型,源码实现也较简单,本文将就TThreadedSelectorServer类型服务作源码分析,相信搞清楚了该种模型的运作原理后,TNonblockingServer与THsHaServer的源码也会很容易读懂

2016-11-03 19:54:54 1682

原创 Thrift源码系列----5.AbstractNonblockingServer源码

前言        接上一章,我们继续服务端源码的探索,本来打算将五种服务模型的源码都分析一遍,但看完源码后觉得阻塞型服务实现非常简单,这里便不做详述。而非阻塞型服务都继承AbstractNonblockingServer类,理解该类是理解非阻塞型服务实现的关键,所以本章开始探索AbstractNonblockingServer。TServer        由于所有的服务模型都是由父类定义好框架,

2016-11-03 19:51:39 2247 1

原创 网络编程的5个IO模型

原文地址:http://www.cnblogs.com/duanxz/p/3696849.html 据Unix网络编程,Unix主要有阻塞IO、非阻塞IO、信号驱动IO、IO复用、异步IO;前五种都是同步,只有最后一种才是异步IO。1.先贴上Unix网络编程的几张大图: 同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞! 阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回!

2016-10-18 16:26:46 681

转载 Thrift server端的几种工作模式分析

源文地址:http://blog.csdn.net/houjixin/article/details/42779915相关示例代码见:http://download.csdn.net/detail/hjx_1000/8374829Thrift服务器端几种工作模式分析与总结        Thrift为服务器端提供了多种工作模式,本文中将涉及以下5中工作模式:TSimpleServer、TNonblo

2016-10-16 16:46:02 821

原创 Thrift连接池优化

背景众所周知,thrift是一款很优秀的rpc框架,公司今年在部门间推行thrift框架来提高部门间的通信效率,作者本人的工作内容主要是作为客户端(本人所在组为服务端,对于提供服务的其他部门来说是客户端)调用其他部门的接口,在工作过程中发现thrift有个较大的弊端,一般情况下服务端会向客户端提供一组服务IP,所有的负载均衡工作,连接是否可用等工作都需要客户端自己来维护,而apach

2016-10-10 17:06:56 12812 1

原创 CAS与sun.misc.Unsafe

什么是Compare And Swap(CAS)?        顾名思义,简单说就是比较并交换。CAS操作一般涉及三个操作数:内存值,预期原值,新值。如果内存值与预期原值相同,则将会用新值替换内存值,返回更新成功,否则,什么也不处理,返回更新失败。java.util.concurrent包的底层即是依靠CAS操作来实现,CAS在java中的具体实现是sun.misc.Unsafe类,作为java.

2016-10-10 11:16:42 779

原创 J.U.C框架学习顺序

背景        Java concurrent包提供了很多高性能的并发类,类的设计思路及源码值得我们学习参考,但在学习其原理过程中,作者经常碰到这种情况,在学习ConcurrentHashMap时,里面的部分方法操作牵扯到其他类,例如Unsafe、ReentrantLock,又需要了解ReentrantLock,进而又去学习AQS原理,导致整个学习过程非常的复杂,没有条理性,所以本文主要介绍根据

2016-10-09 17:53:05 2647 3

空空如也

空空如也

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

TA关注的人

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