- 博客(8)
- 资源 (14)
- 收藏
- 关注
原创 利用Java的动态编译、动态加载结合EasyRules实现业务规则的动态性
作为一名专门写bug的Java程序猿,相信大家都会遇到过这样的问题:项目的业务逻辑很复杂,而且还经常变化,今天的一个办理条件是小于5,明天就变成了大于10或者条件作废。这就很头疼了,里面的数字可以抽取到配置文件,但是大于和小于呢?条件作废呢?对于业务规则的复杂性,我们可以使用一些规则引擎来解决代码可读性差的问题。市面上也有不少的规则引擎框架,开源的不开源的,收费的不收费的,我们这里推荐使用的是...
2018-12-19 17:05:43 16709 14
原创 基于ZooKeeper实现分布式锁(公平和非公平两种形式)
关于ZooKeeper,上一篇博客有更详细的介绍(传送门)。一、分布式锁在同一个jvm进程中时,可以使用JUC提供的一些锁来解决多个线程竞争同一个共享资源时候的线程安全问题,但是当多个不同机器上的不同jvm进程共同竞争同一个共享资源时候,juc包的锁就无能无力了,这时候就需要分布式锁了。 常见的分布式锁实现方式有Redis的SETNX和GETSET函数,数据库锁,zk的数据节点和监听事...
2018-12-31 21:54:19 3271 1
转载 ZooKeeper的主要功能和原理
本文转自:https://blog.csdn.net/weijifeng_/article/details/79775738一 、Zookeeper功能简介ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现。分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、配置维护...
2018-12-31 20:46:01 1961
原创 字节码操纵技术——Javassist
一、背景编程语言有静态语言和动态语言之分,例如:C、C++、Java等属于静态语言,JavaScript、Ruby、Python等属于动态语言。动态语言的灵活性非常高,遗憾的是,至今为止,作为Java程序员的我尚未享受到动态编程的乐趣。不过,Java也逐步提供了一些有限的动态编程机制,主要有下面三个方面: (1) 反射 (2) 动态编译 (3) 调用Jav...
2018-12-30 19:00:58 2315 2
原创 Java SPI
参考:https://blog.csdn.net/sigangjun/article/details/79071850一、什么是SPI?有什么用?先贴一张官方文档的介绍图:总结一下:SPI,全名为Service Provider Interface。API大家都知道吧,它是针对使用者的;而SPI恰好相反,是针对服务提供者的,比如厂商或者插件。我们系统里抽象的各个模块,往往有很多不同...
2018-12-30 12:36:46 520
原创 Java内部类序列化
一个类能够序列化,需要满足两个条件:类本身实现序列化接口Serializable 类所有的成员属性实现序列化接口SerializableJava的嵌套类(nested class)一共有四种:static nested class 静态嵌套类 inner class 内部类(非静态) local class 本地类(定义在方法内部) anonymous cla...
2018-12-27 15:10:02 5905
原创 设计模式的六大原则
1、单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。说明:单一职责原则遵循了高内聚低耦合的指导方针,一个类所作的事情应该是单一的,这样才能提高复用性和可维护性。举例:// TODO2、开闭原则(Open-Closed Principle, OCP)...
2018-12-21 14:29:09 149
原创 归并排序
简单粗暴的解释:内部有序外部无序的两个数组的排序。归并排序以O(NlogN)最坏情形时间运行,而所使用的比较次数几乎是最优的。它是递归算法一个好的实例。典型应用场景:MapReduce。 递归:一个方法调用自己本身。其关键点是要找到结束方法递归调用的条件出口。归并排序的合并算法说明,内容直接截取自《数据结构与算法分析·Java语言描述·第3版》。一、实现Java语言描述...
2018-12-01 14:32:19 339
自己动手写任务调度平台项目源代码
2019-07-11
根据数据库表自动生成实体类的源代码
2019-06-26
Apollo配置中心客户端使用案例源码
2019-02-24
自己动手写MyBatis框架项目源代码
2019-01-26
自己动手写SpringMVC框架项目源代码
2019-01-25
利用Aspect/Javassist/动态代理/Lombok等方式省略Controller的参数校验结果处理代码
2019-01-19
自己动手写基于动态代理,使用ZooKeeper作为注册中心,以Netty进行网络通信的RPC框架
2019-01-13
dubbo-admin的war包和zookeeper的安装压缩包
2019-01-02
利用Java的动态编译、动态加载结合EasyRules实现业务规则的动态性的项目源码
2018-12-19
借鉴p6spy,实现自己的SQL执行监控器项目源代码
2018-11-25
Spring Advice插件平台开发项目源代码
2018-08-05
自定义maven插件:自动生成API的word文档源代码
2018-07-30
Maven插件源码:根据库表生成实体类&根据实体类生成库表
2018-07-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人