山月记

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

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

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

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

2018-06-03 11:02:46

阅读数:37

评论数:0

一篇文章了解RPC框架原理

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

2018-05-24 19:25:16

阅读数:1599

评论数:2

TCP协议-个人笔记

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

2018-02-26 15:06:47

阅读数:73

评论数:0

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

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

2017-08-25 11:08:09

阅读数:3273

评论数:3

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

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

2018-04-29 11:54:41

阅读数:48

评论数: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

阅读数:91

评论数: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

阅读数:1124

评论数:2

apache-common-pool2源码分析

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

2017-10-31 10:03:55

阅读数:451

评论数:0

Java线程池使用与原理

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

2017-09-25 10:01:17

阅读数:2532

评论数: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

阅读数:292

评论数: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

linux(ubuntu)下搭建nginx,tomcat负载均衡环境搭建

随着用户访问量增加以及单台服务器处理能力瓶颈,集群可以很好的解决这个问题,集群也可以保证在单台服务器宕机系统也可以正常运行。负载均衡就是让一个集群(多台机器处理相同的业务)的机器的使用率尽可能平均。比较常用场景:一是web服务器集群,例如用户访问了www.yasin.ac.cn这个网站,通过负载均...

2017-06-25 23:10:44

阅读数:1371

评论数:0

代理模式-Java动态代理的实现及应用

Java动态代理其实写日常业务代码是不常用的,但在框架层一起RPC框架的客户端是非常常见及重要的。spring的核心思想aop的底层原理实现就使用到了java的动态代理技术。 使用代理可以实现对象的远程调用以及aop的实现。 java的动态代理的实现,主要依赖InvoctionHandler(...

2017-06-03 17:45:31

阅读数:342

评论数:0

java常用的log系统

项目中log系统必不可少的一个组件,其用户无需赘述。 java日志系统一般会分为接口层和实现层,例如common-logging和slf4j等 1.java的日志系统,常用的common-logging.jar这个类似是log系统接口规约,log4j则是具体的实现工具。当然logging可以脱...

2017-05-24 20:58:34

阅读数:455

评论数:0

Java注解的实现与使用

Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性。在如今各种框架及开发中非常常见,特此说明一下。

2017-04-26 09:15:11

阅读数:3313

评论数:3

认识java中线程安全问题

出现场景: 多个线程同时操作一个对象,如果该对象没有线程安全的控制,便会出现线程安全问题。例如:我们有一个类Apublic class A{ int count=0; public void add1000(){ for(int i=0;i<1000;i++)...

2017-03-16 16:32:33

阅读数:287

评论数:0

java操作word/excel/pdf等文件技术方案

最近项目中遇到很多对word/excel/pdf等文件的操作,解决方案有好多,开源免费有:利用openoffice组件(需要安装openoffice软件),poi,itext等。也有收费的服务:aspose(特别好用,也有点贵)。 我项目中需求可以概括为导出word(包括文字,表格,图片),把p...

2017-03-15 17:07:41

阅读数:978

评论数:0

web前端实现markdown编辑预览页面(低仿csdn博客界面)

所需的第三方js库1.编辑框库 https://github.com/ajaxorg/ace-builds/ 2.markdown预览库https://github.com/chjj/marked效果页面分三部分,一个顶部的状态栏(包括文章标题、相关插入操作工具栏),一个左部的输入框,一个右部的...

2017-02-28 08:49:44

阅读数:1482

评论数:0

CDN资源下载工具

相信大家在做项目时会经常引入第三方js/css库,有的会在官网直接下载js/css文件,但有时想直接用在大厂的CDN库中找(但又像在项目引用自己项目本地的js库),一般都是在浏览器中打开,在粘贴复制,还得新建文件,虽说不是太复杂,但还是让我有了写一个直接下载的工具的方向(是不是有点闲,不过感觉还是...

2017-01-13 17:39:24

阅读数:1111

评论数:0

Java IO最详解

博客原文:  http://blog.csdn.net/yczz/article/details/38761237 Java IO最详解 2014-08-22 20:14 118301人阅读 评论 (35) 收藏举报 本文章已收录于: 分类: JAVA (118) ...

2017-01-13 15:31:07

阅读数:303

评论数:0

微信小程序会替代原生APP吗?

今天是微信小程序正式发布的日子,我也来蹭一下热点,凭自己的理解分析一下微信小程序的影响。 不废话,先回答标题,微信小程序会替代原生APP吗?我的回答是会替代活跃度低的APP。 有不少人谈论微信小程序会成为一个生态吗?我认为不会,微信的影响力只是在国内,而且国内非腾讯系的大厂我认为也是不会上小程...

2017-01-09 18:30:11

阅读数:635

评论数:0

SSM框架整合

最近没有写博客,主要是在学习前端和java开发的一些入门知识。 这篇博客讲一下SSM整合,虽然这个没有技术含量,多搭两次变能掌握的事情,但对于刚入门的新手而言,整合这三个框架还是有点头痛的,毕竟配置文件好多。使用的工具:Spring Tool Suite(就是在Eclipse上加了一些插件);m...

2016-12-28 10:01:09

阅读数:381

评论数:0

geoserver发布多层级地图数据(大图拼接/MBTilers规范)

应用场景我是革命一块砖,哪里需要往哪搬!哈哈,身为全栈做的活挺多了,不过公司最近要用geoserver发布地图服务,又要开始了一个陌生的领域的探索。 Geoserver是一款开源免费的地图服务器,功能十分强大。或许我们会碰到这样一个场景,工作在内网下,不能使用外网的天地图资源(手动笑cry),这...

2016-11-25 17:44:33

阅读数:4496

评论数:3

MPAndroidChart使用(个人笔记)

该库github地址:https://github.com/PhilJay/MPAndroidChart android开发中经常会用到图表类的控件,MPAndroidChart可以很好的实现,不过其api很多,记不住,每次都会开始查,在这里特此总结,做个人笔记使用。 首先该库支持LineCh...

2016-11-15 12:01:36

阅读数:1145

评论数:0

SSH框架如何与APP通信

最近SSH肤浅的学了一遍后,也算自己向全栈迈出了重要的一步。现在学SSH框架大多以网站开发为例。像我这种做APP出身的,就特想实现跟服务器的通信。 要解决的问题就是如何接受APP传来的数据(一般为json格式)和返回数据(一般为json格式)。下面就进行一下说明。 如何接受APP传来的数据: ...

2016-11-05 14:46:48

阅读数:1198

评论数:1

利用geoserver+udig发布地图并对地图进行颜色渲染

对于shape文件直接发布只能是简单地形图,并没有根据数据对地形图处理。这就需要style文件对地图进行一些现实加工。 1. 利用udig软件对shape文件进行style加工: (1) 首先读入shape文件: 继续选择file,选择你的shape文件,确定后等待读入即可。 (2)...

2016-10-19 17:33:33

阅读数:2804

评论数:0

android-async-http源码宏观分析

android-async-http-client以下简称aahc,对用户而言最重要的是asynchttpclient类,该类提供了post,get等关键方法,同时post,get的方法中会有ResponseHandlerInterface子类接口提供回调。 首先分析AsyncHttpClien...

2016-09-07 17:11:57

阅读数:322

评论数:0

android弹窗使用总结,高仿QQ空间操作弹窗

android弹窗一共有两种方式,一种是dialog及其子类,另一种是popupwindow;Dialog及其子类尤其AlertDialog是最常用的,也是最自由的一种。**Popupwindow与Dialog的区别:**AlertDialog是非阻塞线程的,AlertDialog弹出的时候,后台...

2016-08-18 22:18:13

阅读数:1104

评论数:0

常用libs收集

1.圆形imageviewhttps://github.com/hdodenhof/CircleImageView

2016-08-16 09:31:18

阅读数:391

评论数:0

android事件分发总结

这篇android事件分发总结是自己也是想写好久,不过有很多巨巨已经写得相当好了。这里有郭巨巨从源码的角度开始分析事件分发 连接:Android事件分发机制完全解析,带你从源码的角度彻底理解(上) Android事件分发机制完全解析,带你从源码的角度彻底理解(下) 写的恨透侧很好,当是入门...

2016-08-03 23:16:52

阅读数:303

评论数:0

含有listview的界面实现左右滑动监听

在android开发中会碰到有顶部导航并且下面显示的内容是一个listview,此时要想实现左右滑动切换顶部导航的选项是不能实现的,因为listview自己消耗横向滑动事件。因为我可以通过继承listview,对左右滑动事件进行消耗,不在让原生的listview处理。效果图: 思路就是继承lis...

2016-08-03 21:14:21

阅读数:3961

评论数:3

android利用爬虫实现模拟登录

为了快速的用手机登录学校网,于是决定用爬虫抓取学校登录界面,然后模拟填写账号、密码,模拟点击登录按钮。 首先选择的是htmlunit解析登录界面html,一开始在pc上测的能实现,结果在android上运行不起来,因为htmlunit利用了javax中的类实现完成解析,android不支持jav...

2016-08-02 20:58:47

阅读数:2990

评论数:0

java回调思想

难得有时间,是时候写一篇java思想这一块了。随着自己的学习,越来越被OO的思想所折服!这里写一下在android用的最多也是最早就学了的回调思想。 button.setOnClickListener(new OnClickListener(){ @override publ...

2016-07-19 13:22:30

阅读数:314

评论数:0

Android自定义view

Android自定义view有人会分为自定义view和viewgroup两种,但目前我自己感觉可以分为继承view和继承Android自有的控件这两种,例如我们需要一个全新的控件会继承view或者我们只需要在某些现有的控件基础上修改即可。 这里先说一下自定义view的自定属性 例如我们现在自定...

2016-06-03 20:26:53

阅读数:294

评论数:0

Android屏幕适配方案

最近到公司实习,项目为一款智能家电写android launcher,由于屏幕很大,一开始适配出了问题,于是认真学习后在此总结。希望对别人有帮助。 一:首先图片适配可以出多套dpi的图片,Android会自动匹配不同分辨率选着不同的图片。二:(重点)距离适配,Android距离官方建议用dp,同...

2016-05-25 20:48:37

阅读数:334

评论数:0

asynchttpclient的post方法发送json格式参数和表单格式参数

Android使用 asynchttpclient的post方法发送数据大致可分为两种情况;一种使用post(android.content.Context context, java.lang.String url, cz.msebera.android.httpclient.HttpEntit...

2016-05-09 19:37:37

阅读数:9174

评论数:3

Android自定义View圆盘滑动控件(已适配多种分辨率)

好久没写博客了,最近在写一个项目时需要一个可以调节档位的圆盘, 首先实现这个圆盘自定义View,首先在构造方法中定义画笔,重写onDraw(Canvas canvas)方法,进行绘制,首先绘制一个大圆,然后我这个大圆周围的表盘显示一共有9个档位,为了美观,每个档位里面有8个小指针,这样一个分为72...

2016-04-25 20:51:50

阅读数:1902

评论数:1

Android客户端首次启动时的引导界面(viewpager)

刚做完一个比赛项目,来写点以后能用着的东西–Android客户端的首次启动页面,而且这个以后复用的几率很大,也不怎么修改,特留下为以后准备,同时为初学者提供一个帮助。 实现思路是:用SharedPreferences保存一个首次登陆的信息,默认是true,进入MainActivity后对其经行赋...

2016-03-02 23:18:59

阅读数:6480

评论数:0

android顶部(toolbar)搜索框实现

本文介绍两种SearchView的使用情况,一种是输入框和搜索结果不在一个activity中,另一种是在一个activity中。 首先编写toolbar的布局文件 toolbar中图标在menu文件下定义一个布局文件实现<menu xmlns:android="http://s...

2016-02-17 21:08:10

阅读数:16212

评论数:7

android studio使用git管理+github远程协作

Android studio用git进行版本控制+github远程仓库控制

2016-01-25 18:20:38

阅读数:790

评论数:0

低于android5.0 Meterial Design实现Dialog,以登录界面为例

众所周知,google官方希望用MaterialDesign的设计风格给Android用户带来一直的体验,并且MD的设计确实使Android得人机交互体验上升了许多,因此不少项目都采用MD的设计风格,但在低于5.0版本实现有一定麻烦。今天拿一个很全面的dialog为例。 所依赖地址:https:...

2016-01-08 19:11:11

阅读数:1109

评论数:0

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