JAVA热部署,通过agent进行代码增量热替换!!!

摘要:前言 在前说明:好久没有更新博客了,这一年在公司做了好多事情,包括代码分析和热部署替换等黑科技,一直没有时间来进行落地写出一些一文章来,甚是可惜,趁着中午睡觉的时间补一篇介绍性的文章吧。 首先热部署的场景是这样的,公司的项目非常多,真个BU事业部的项目加起来大约上几百个项目了,有一些项目本地无法正常 阅读全文
posted @ 2020-09-14 15:26 张玉龙 阅读(2366) 评论(8) 推荐(6) 编辑

史上最全java pdf精品书籍整理

摘要:算法,多线程,spring,数据库,大数据,面试题等等。喜欢的小伙伴加群获取 QQ群号825199617 (非广告培训技术群,纯java知识交流,请自重) 阅读全文
posted @ 2019-11-25 10:52 张玉龙 阅读(543) 评论(2) 推荐(0) 编辑

JAVA RPC (十) nio服务端解析

摘要:源码地址:https://gitee.com/a1234567891/koalas-rpc 企业生产级百亿日PV高可用可拓展的RPC框架。理论上并发数量接近服务器带宽,客户端采用thrift协议,服务端支持netty和thrift的TThreadedSelectorServer半同步半异步线程模型, 阅读全文
posted @ 2019-11-15 16:54 张玉龙 阅读(624) 评论(0) 推荐(0) 编辑

java代理,手把手交你写java代理

摘要:一:常用的java代理模式 一般经常做java开发的知道java的代理模式一共有三种,第一种也就是静态代理,这种用法比较简单,没有什么魔法棒,比较好理解,另外两种分别是JDK代理和cglib代理,他们分别是对接口代理和对class类本身进行代理,jdk代理要求类必须实现有一个或者多个接口,对接口进行 阅读全文
posted @ 2019-11-12 14:10 张玉龙 阅读(909) 评论(0) 推荐(0) 编辑

JAVA RPC 生产级高可用RPC框架使用分享

摘要:先放出链接,喜欢的给个star:https://gitee.com/a1234567891/koalas-rpc 一:项目介绍 koalas-RPC 个人作品,提供大家交流学习,有意见请私信,欢迎拍砖。客户端采用thrift协议,服务端支持netty和thrift的TThreadedSelector 阅读全文
posted @ 2019-07-17 10:57 张玉龙 阅读(730) 评论(0) 推荐(0) 编辑

DB缓存一致性

摘要:直接硬核干货,去掉前戏。 方案大致说明 1:假设对redis中存在一对key,value的对应关系是 key=money,value=666 2:当修改线程修改key时先将key设置成value=666_write,(这里需要说明的是:线上实际应用可以将_wirte改成非常复杂的UUID等字符串,只 阅读全文
posted @ 2019-06-24 13:54 张玉龙 阅读(1015) 评论(1) 推荐(1) 编辑

JAVA RPC (九) netty服务端解析

摘要:源码地址:https://gitee.com/a1234567891/koalas-rpc 企业生产级百亿日PV高可用可拓展的RPC框架。理论上并发数量接近服务器带宽,客户端采用thrift协议,服务端支持netty和thrift的TThreadedSelectorServer半同步半异步线程模型, 阅读全文
posted @ 2019-05-09 18:00 张玉龙 阅读(570) 评论(0) 推荐(0) 编辑

JAVA RPC (八) 手把手从零教你写一个生产级RPC之client请求

摘要:上节说了关于通用请求代理,实际上对spring的bean引用都是通过koalasClientProxy来实现的,那么在代理方法中才是我们实际的发送逻辑,咱们先看一下原生的thrift请求是什么样的。 用同步调用的例子来说明,首先需要new 一个TSocket对象,这个对象其实就是thrift维护的s 阅读全文
posted @ 2019-04-28 14:33 张玉龙 阅读(560) 评论(0) 推荐(0) 编辑

JAVA RPC (七) 之手把手从零教你写一个生产级RPC之client的代理

摘要:首先对于RPC来讲,最主要的无非三点【SERVER IO模型】、【序列化协议】、【client连接池复用】,之前的博客大家应该对thrift有一个大致的了解了,那么我们现在来说一说如何将thrift的序列化和传输使用到生产中。先放一张作者自己写的一个rpc架构图。 分成几个主要部分: 1:serve 阅读全文
posted @ 2019-04-25 20:04 张玉龙 阅读(880) 评论(0) 推荐(0) 编辑

JAVA RPC (六) 之thrift反序列化RPC消息体

摘要:我们来看一下服务端的简单实现,直接上thrift代码,很直观的来看一看thrift的server到底干了些什么 这个地方代码就很清晰了,原来是从trans里面或取得字节流数据。 继续能翻到最终的代码解析部分 这里就很明显了,首先read一个四个字节的长度,这个int类型代表着后面要跟着接收的消息体的 阅读全文
posted @ 2019-04-07 13:10 张玉龙 阅读(504) 评论(0) 推荐(0) 编辑

JAVA RPC (五) 之thrift序列化RPC消息体

摘要:让大家久等了。继续更新thrift序列化的消息体,下面我们一步一步的看一看thrift的rpc是怎么实例化消息体的。 首先我们先准备一个request文件 一个respone文件 一个service文件 编译文件 生成的文件如下 自己写一个简单的RPC的例子 client server 自己的实现类 阅读全文
posted @ 2018-11-30 16:19 张玉龙 阅读(438) 评论(0) 推荐(0) 编辑

JAVA RPC (四) 之thrift序列化普通对象

摘要:先简单写一个thrift文件 本地通过thrift编译之后会生成一个java源文件。 编译口令 :thrift -gen java mytestrequest.thrift 编译后的源代码如下: 生成了一个500多行的代码,那么我们现在对这个请求对象进行序列化,看看序列化结果。 看一看对于这么个简单 阅读全文
posted @ 2018-11-30 15:02 张玉龙 阅读(1373) 评论(0) 推荐(0) 编辑

JAVA RPC (三) 之thrift序列化协议入门杂谈

摘要:首先抱歉让大家久等了,最近工作的原因,再加上自己维护koalas rpc利用的大部分时间,一直没腾出空来写这篇文章。 先放出来自研的企业级RPC框架源代码地址,上面有使用方式和部署环境说明,说环境部署,其实只需要傻瓜式的安装一个zookeeper就可以了。 地址:https://gitee.com/ 阅读全文
posted @ 2018-11-30 14:48 张玉龙 阅读(895) 评论(0) 推荐(0) 编辑

热点账户冲扣设计方案

摘要:前言:方案设计前提 一般账务系统对账户的冲扣需要满足以下两点 1:更新账户表中的账户余额。 2:记录账户明细表中的账户更新前余额,账户更新后余额,操作金额。 其中对账户表中的余额更新一般是直接update,对账户明细表中的操作前金额,操作后金额和操作金额就是对账户表update的记录 1:为什么做热 阅读全文
posted @ 2018-11-08 13:41 张玉龙 阅读(4889) 评论(3) 推荐(1) 编辑

JAVA RPC(二)序列化协议杂谈

摘要:序列化和反序列化作为Java里一个较为基础的知识点,大家心里也有那么几句要说的,但我相信很多小伙伴掌握的也就是那么几句而已,如果再深究问一下Java如何实现序列化和反序列化的,就可能不知所措了!遥记当年也被问了这一个问题,自信满满的说了一大堆,什么是序列化、什么是反序列化、什么场景的时候才会用到等, 阅读全文
posted @ 2018-10-31 12:32 张玉龙 阅读(1581) 评论(0) 推荐(0) 编辑

JAVA RPC(一)RPC入门

摘要:为什么要写这个RPC 市面上常见的RPC框架很多,grpc,motan,dubbo等,但是随着越来越多的元素加入,复杂的架构设计等因素似使得这些框架就想spring一样,虽然号称是轻量级,但是用起来却是让我们很蹩脚,大量的配置,繁杂的API设计,其实,我们根本用不上这些东西!!! 我也算得上是在很多 阅读全文
posted @ 2018-10-30 10:57 张玉龙 阅读(11681) 评论(7) 推荐(3) 编辑

装饰者模式来实现多数据源

摘要:在我们的项目中遇到这样一个问题:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。我们以往在spring和hibernate框架中总是配置一个数据源,因而sessionFactory的dataSource属性总是指向这个数据源并且恒定不变,所有DAO在使用sess 阅读全文
posted @ 2016-11-30 13:47 张玉龙 阅读(578) 评论(0) 推荐(0) 编辑

java多线程同步,等待,唤醒

摘要:notify()、notifyAll()、wait()属于java.lang.Object,java.lang.Thread也是Object,自然也有上述方法; sleep()、interrupt()、interrupted()、join()、yield()属于java.lang.Thread wa 阅读全文
posted @ 2016-11-30 13:39 张玉龙 阅读(428) 评论(0) 推荐(0) 编辑

数据库隔离级别

摘要:数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。 √: 可能出现 ×: 不会出现 脏读 不可重复读 幻读 Read uncomm 阅读全文
posted @ 2016-11-30 13:30 张玉龙 阅读(217) 评论(0) 推荐(0) 编辑

spring+mybatis多数据源动态切换

摘要:spring mvc+mybatis+多数据源切换 选取oracle,mysql作为例子切换数据源。oracle为默认数据源,在测试的action中,进行mysql和oracle的动态切换。 web.xml applicationContext.xml 配置 parentDataSource 的父b 阅读全文
posted @ 2016-11-30 13:04 张玉龙 阅读(3262) 评论(1) 推荐(0) 编辑