- 博客(23)
- 资源 (14)
- 收藏
- 关注
原创 Java的几种排序算法和查找算法
一、介绍几种常见的排序算法:直接插入排序、简单选择排序、冒泡排序、快速排序。1、直接插入排序描述:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 算法:从第二个数(当前数)开始,拿它与前一个数(比较数)比较--如果比较数大于当前数,则让比较数往后移动一...
2018-07-31 23:03:26 1706 4
原创 ForkJoin
一、认识Fork JoinFork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。如图所示,整个过程分为两部分:首先将大任务分成若干小任务(Fork),然后并行处理后把小任务执行的结果汇总(Join)。二、相关知识1、线程池以前我们使用线程的时候就去创建一个线程,这样实现起来非...
2018-07-31 17:30:01 221
原创 Java枚举
在JDK1.5之前,大家都喜欢用常量表示一些固定变量。但是,由于没有固定范围,只要传入相同类型的对象,编译器是不会报错的。所以,推荐大家使用枚举类型。package cn.zhh.basics;/* * 用法一:常量 * 在JDK1.5 之前,我们定义常量都是: publicstaticfianl.... 。 * 现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举...
2018-07-31 17:10:37 467
原创 Linux常用命令(基于CentOS7)
目录切换cp:进入指定目录,可连写多级目录./:当前目录/:根目录../:上级目录~:当前用户目录文件操作pwd:查看当前所在目录touch a.txt:新建文件a.txtls(-s或ll:详细信息):查看当前目录中的文件及文件夹ls /tmp:查看/tmp目录中的文件及文件夹rm 文件(夹):删除文件(夹),文件有确认提示,文件夹不能删rm -rf...
2018-07-31 10:46:44 418
原创 自定义maven插件:自动生成API的word文档
继上次开发完Maven插件开发:根据库表生成实体类&根据实体类生成库表之后,博主对开发maven插件喜爱得一塌糊涂。这不,今天给大家带来了《自定义maven插件:自动生成API的word文档》。老规矩,先上镇楼图。(读者们也可以研究下Swagger2生成doc文档)开门见山,直接上开发教程!首先是插件配置:<plugin> &l...
2018-07-29 23:47:35 5199 9
原创 Maven插件开发:根据库表生成实体类&根据实体类生成库表
在码农的日常生活中,复杂度低但是工作量大的工作莫过于根据已有的表写对应的实体类。当字段多的时候,那叫一个苦啊!于是,很多代码生成器应运而生,最流行的莫过于Mybatis-Generator,自动生成Entity、Dao、Mapper,确实是一个不错的工具。但是,以博主的了解,这个工具还是有一些缺点的,算是鸡蛋里挑骨头吧:样式是固定的,有时候不符合我们的习惯(当然,大神可以去改源码)。现在呢,我...
2018-07-28 11:46:06 7775 6
原创 命令模式
定义:将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化其它对象。命令模式也可以支持撤销操作。案例一:将实现自定义接口的任务对象放进自定义执行器里面执行。1、定义任务接口:该接口为函数式接口(JDK8新特性,接口只有一个抽象方法,可使用Lambda表达式)。/** * 函数式接口 * @author z_hh * @time 2018年7月27日 */@...
2018-07-27 23:26:34 171
原创 漫谈设计模式之间的联系与区别
一、工厂方法和抽象工厂P158敬请期待...二、装饰者和适配器联系:都是包装一个对象。区别:作用不同。装饰者让新的行为或责任加入类中,而无需修改现有的代码。适配器负责做接口的转换,允许客户使用新的库和子集合,无需改变任何代码。三、模板方法和策略联系:都是定义一些算法,它们有不同的实现,客户可以轻易使用不同的算法。区别:依赖程度不同。模板方法要定义一个算法的大纲,由它的子...
2018-07-25 23:26:56 502
原创 门面模式(外观模式)
英雄联盟(俗称撸啊撸)中锐雯是玩家们非常喜欢的一位英雄,致使她如此受欢迎的原因不是因为其美貌和身材,而是因为拥有一套“光速QA”的连招,学会了不但能虐菜、上分,更重要的是还可以装逼。因此,学会“光速QA”成为了大家朝思暮想的目标。但是,这套操作非常复杂,具体玩法为:1.首先平a一下敌人;2.以最快的速度接q;3.以更快的速度点一下地板;4.以相当快的速度把鼠标甩回你要攻击的目标。如此循环3次。这对...
2018-07-25 21:15:29 542
原创 Windows下使用Jenkins进行Spring Boot项目自动打包运行
一、初识JenkinsJenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。------摘自《百度百科》主要功能:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。二、安装Jenkins1、登陆官方下载网站,如下图,点击下载Windows的安装版,得到一个压缩包(...
2018-07-25 00:14:06 11986 10
原创 适配器模式
定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。案例:现在有一台MiniTV(微型电视机),需要110V电压的电流,但是只有220V电压的电池。这样,我们就可以定义一个变压器,将电池的电压降低,提供给TV使用。代码:电视机(需要110V的电压)/** * 电视机,需要110伏特的电流 * @author z_hh * @date...
2018-07-24 21:35:26 166
原创 观察者模式(使用JDK内置的工具)
定义:观察者模式(也称发布者/订阅者模式),提供了对象之间的一种依赖关系,当被依赖者发生改变时,它的所有依赖者都会收到通知,并作出反应。jdk的util包提供了一个类Observable和一个接口Observer。Observable(被观察者/发布者):这个类代表一个可观察到的对象,或数据。它可以被细分为代表一个应用程序想要观察的对象。一个可观察的对象可以有一个或多个观察者。一个...
2018-07-23 23:59:42 713
原创 观察者模式(自定义观察者和可观察者的接口)
定义:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。类图:代码:定义可观察者(发布者)接口/** * 报社接口 * @author z_hh * @time 2018年7月23日 */public interface NewspaperOffice { /** * 用户注册 * @param o 读者 ...
2018-07-23 08:50:33 785
原创 状态模式(形式一)
定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。例子:糖果机,有多种状态以及多种行为,每种状态执行每种行为会得到不同的结果,并转向下一个不同的状态。使用原始的方法:在糖果机里面定义对应的状态(属性)以及行为(方法),然后在方法执行的时候,用if...else...判断当前状态,然后执行不同的逻辑代码。弊端:不易于扩展,当添加新的状态以及行为时,需要在糖果机里...
2018-07-22 23:53:00 498
原创 《Effective Java 第二版》条目
一、创建和销毁对象1、考虑用静态工厂方法代替构造器。2、遇到多个构造器参数时要考虑用构建器。3、用私有构造器或者枚举类型强化Singleton属性。4、通过私有构造器强化不可实例化的能力。5、避免创建不必要的对象。6、消除过期的对象引用。7、避免使用终结方法。二、对于所有对象都通用的方法8、覆盖equals时请遵守通用约定。9、覆盖equals时总要覆盖ha...
2018-07-22 21:40:12 238
原创 Spring Boot2使用MockMvc测试API接口
一、引入maven依赖。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> &
2018-07-22 17:35:20 2755
原创 单例模式
定义:确保一个类只有一个实例,并提供全局访问点。代码:饿汉模式(公开域,存在内存消耗的小问题)public class Singleton1 implements Serializable { // 可供外部通过类名访问 public static final Singleton1 SINGLETON = new Singleton1(); // 防止外部创建对象 pr...
2018-07-22 16:24:10 460
原创 装饰者模式
定义:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。代码:接口(面对接口编程,以便动态绑定)public interface Women { // 颜值 void faceScore(); // 气质 void qualities();}原始类/** * 定义原始对象 * @author z_hh * @time 2018年...
2018-07-22 15:29:41 146
原创 模板方法模式
定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。OO原则:别找我,我会找你。代码:算法骨架类/** * 做饭步骤 * @author z_hh * @time 2018年7月22日 */public abstract class CookingStep { // 定义步骤,用fi...
2018-07-22 13:26:02 492
原创 策略模式
定义:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。代码:定义算法族(超类或接口及其若干实现类)public interface FlyBehavior { void fly();}public class FlyWithWings implements FlyBehavior { @Override public voi...
2018-07-22 09:17:47 201
原创 生成器模式
定义:将一个复杂对象的创建过程,封装到一个对象中(生成器),然后让客户端调用生成器按步骤构造对象。代码:public class Student { // id private Long id; // 姓名 private String name; // 性别 private Integer sex; // 手机号码 private String mobil...
2018-07-22 08:26:55 241
原创 优秀Rest风格API设计原则
Get:从服务器获取一个指定资源或一个资源集合。Post:在服务器上创建一个资源。Put:更新服务器上的一个资源,需要提供整个资源。Patch:更新服务器上的一个资源,只提供资源中改变的那部分属性。Delete:移除服务器上的一个资源。Head:获取一个资源的元数据。Options:获取当前用户对资源的访问权限。原则上URL不包含动作/动词。端点通常使用复数。过...
2018-07-21 23:07:54 274
原创 多线程高并发总结
1、synchronized对某个对象加锁(互斥锁),申请的纪录在堆内存里的对象,执行完代码就释放。2、synchronized锁的是对象,而不是代码块。3、在方法上加synchronized相当于synchronized(this)。4、synchronized用在静态方法上,相当于synchronized(T.class),即锁住类对象。5、各个代码块之间没有原子性,执行需要重...
2018-07-21 22:40:15 1141
自己动手写任务调度平台项目源代码
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关注的人