山月记

苟有恒何必三更眠五更起 最无益莫过一日曝十日寒

排序:
默认
按更新时间
按访问量

RPC客户端如何实现-KRPC源码解析

1.前言 这篇文章主要结合KRPC(我自己开源的一个RPC框)代码详细分析一下RPC客户端具体实现。在一篇文章了解RPC框架原理文中,我们主要讲述了一次调用RPC调用中各流程,这篇文章就结合KRPC的代码仔细讲解一下 开始前,我先说一下KRPC的网络传输中的内容: 1.服务实现名字。serv...

2018-06-03 11:02:46

阅读数:42

评论数:0

一篇文章了解RPC框架原理

1.RPC框架的概念 RPC(Remote Procedure Call)–远程过程调用,通过网络通信调用不同的服务,共同支撑一个软件系统,微服务实现的基石技术。使用RPC可以解耦系统,方便维护,同时增加系统处理请求的能力。 上面是一个简单的软件系统结构,我们拆分出来用户系统和订单系统做为...

2018-05-24 19:25:16

阅读数:1628

评论数:2

TCP协议-个人笔记

我们最常用的应用层协议http都是依赖传输层tcp协议完成的。 同时很多client-server模式的软件(中间件)大都使用tcp通信,因此详细的了解tcp通信裨益极大。 首先对网络模型先进行一个介绍。 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层7层网络模型大家已经熟知。 ...

2018-02-26 15:06:47

阅读数:74

评论数:0

一篇文章了解mvc框架工作流程

动机argo是58同城开源出来的一个基于java的轻量级mvc框架。这个框架是其13年开源出来源代码,但接下来就没有维护了,但58内部好像还一直维护沿用wf(argo内部称呼)。 但阅读这款轻量级框架源码对于我们理解mvc框架运行原理还是有很大裨益的。其代码量不是很大,这也是我读的第一个开源框架...

2017-08-25 11:08:09

阅读数:3286

评论数:3

反序列化 动态加载jar的里的类报ClassNotFoundException解决办法

1.背景 自己在写一个RPC框架时,碰到第一个麻烦就是做动态加载加载jar包后,在进行反序列化(不要吐槽为啥用java原生的序列化方案,一步一步来,框架写完能跑后在优化)时报CNF错误,当时感觉应该是原生的序列化方案中使用的ClassLoader是应用加载器AppCloassLoader,而我使...

2018-04-29 11:54:41

阅读数:49

评论数:0

HashMap

注意事项 数组+链表/红黑树来存储数据 链表长度为8(默认)时,转化为红黑树,加快查询速度。 数组下标是 (n-1)&hash,n表示数组长度,hash表示key的hash值 构造参数 无参:数组长度和扩容因子采用默认(16,0.75) 单参:指定数组大小(向上...

2018-03-12 16:37:17

阅读数:53

评论数:0

java线程不安全类 SimpleDateFormat

不安全在什么地方? 前段时间在做系统数据清洗过程中,因为用到多线程及simpeldateformat,一开始没注意,遇到了线程安全问题,就在此描述解决办法。 // Called from Format after creating a FieldDelegate private S...

2018-01-07 12:03:49

阅读数:92

评论数:0

红黑树

红黑树是什么红黑树是一种树形数据结构,它的节点值的大小是按照左节点<父节点<右节点 这种顺序排列的。所有在搜索红黑树的值时,其复杂度是Olg(n)。如果有一组数据1,2,3,4,5,6,7按照这种顺序插入到树中,会导致所有的数据都在右节点上,这时候去这个树中搜索数据时,其复杂度依然是n...

2017-12-24 23:01:42

阅读数:100

评论数:0

Redis客户端Jedis源码阅读及连接池分析

0.起因 自己负责的项目redis服务端连接数明显高于实际访问量,很多空闲连接没有释放;Jedis对象和连接的对应关系?连接池的复用是复用了jedis对象,还是只保存连接?总总疑惑,让我开始了jedis的源码阅读。所幸最后都搞明白了,在这里写明白分享给大家。 我相信很多刚入门的同学一定想了解连...

2017-11-25 16:05:56

阅读数:1154

评论数:2

apache-common-pool2源码分析

基础概念apache-common-pool2是一个对象池管理框架,任何需要对象池这种概念的都可以利用这个框架来实现,例如redis的客户端jedis和dbcp都是基于common-pool2实现的。本文是common-pool2的源码分析,在讲源码前我先阐述一下基本对象池的基本概念吧。现在jav...

2017-10-31 10:03:55

阅读数:464

评论数:0

Java线程池使用与原理

线程池是什么?我们可以利用java很容易创建一个新线程,同时操作系统创建一个线程也是一笔不小的开销。所以基于线程的复用,就提出了线程池的概念,我们使用线程池创建出若干个线程,执行完一个任务后,该线程会存在一段时间(用户可以设定空闲线程的存活时间,后面会介绍),等到新任务来的时候就直接复用这个空闲线...

2017-09-25 10:01:17

阅读数:2537

评论数:7

模板方法模式

定义&示例HeadFirst定义:在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。其实就是将一些算法、业务步骤封装到一个方法中,使用者直接调用该模板方法,这样保证该步骤不会出错,减轻调用方压力。老规矩先放一...

2017-09-17 22:45:41

阅读数:257

评论数:0

命令模式

命令模式就是将方法(运算业务逻辑代码)进行封装,并将该方法传递给执行者,执行者不关心所执行的命令(业务代码)是如何实现的。 java的线程池就是命令模式的一个体现。1.示例deom说明 demo源码 demo中我使用的场景是遥控器要控制家里的电器设备。遥控器RemoteController的...

2017-08-21 00:28:36

阅读数:410

评论数:0

单例模式

单例模式其实是一个很简单的设计模式,其作用就是为了让某一个类的全局实例只有一个。 我认为这个模式在oop上思想的增加是很少的。但这个模式却是对多线程安全认知的一个很好的例子。这是我代码的demo单例github demo其实我代码中的注释也写的很明白了。 能保证线程安全的单例大概有三种写法。第...

2017-08-14 19:36:11

阅读数:276

评论数:0

工厂模式

工厂模式中大概可分为三种:简单工厂,工厂方法,抽象工厂。 工厂模式的优点是让代码之家的依赖关系变少,降低项目耦合。简单工厂简单工厂可以说并不是一种设计模式,只是一种代码风格。 这是我写的一个简单工厂的例子简单工厂demo 这个工厂用来获取物品对象,利用多态实现这一个功能,如果代码中需要很多n...

2017-08-10 00:48:10

阅读数:363

评论数:0

装饰者模式

定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案示例说明这是我github上的代码示代码talk is cheap,show your code 所以读者直接参考我github上的代码,我这里虚构了一个常见游戏场景,不同角色有自己的能力值,里面的武器也都有相应的能...

2017-08-01 19:29:38

阅读数:293

评论数:0

观察者模式

定义定了了对象之间的一对多依赖,这样依赖,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更新在具体实现中,开发者可以自己定义一整套观察者框架,也可以利用java提供的api实现这个模式自定义实现观察者模式观察者模式主要在解耦方面有巨大的作用,开发者可以自己实现整个观察者模式框架,一般会实现...

2017-08-01 19:28:20

阅读数:466

评论数:1

策略模式

定义首先给出《Head First设计模式》中的定义:策略模式定义了算法族,分别封装起来,让他们之间可以相互替代,此模式让算法的变化独立于使用算法的客户。这个定义还是很到位的,总的来说策略模式会让代码复用率很高,并且让代码更加规整简洁。像我实例代码中使用了游戏中常用的一个场景,我定义了一个抽象类P...

2017-08-01 19:26:50

阅读数:223

评论数:0

MySQL慢SQL优化-如何分析性能瓶颈

优化慢SQL首先得知道瓶颈在哪,本文主要介绍慢SQL性能瓶颈分析。本文就以前段时间参加的一个SQL优化活动为例。 mysql命令行或者一些可视化工具在sql执行时间的精度比较低,尤其是命令行只显示到10ms,所以需要打开mysql的执行时间监听 set profiling = 1;然后使用sho...

2017-07-26 17:26:11

阅读数:506

评论数:0

消息队列ActiveMQ的安装与使用

(一)介绍消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等...

2017-07-19 16:32:57

阅读数:341

评论数:2

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