自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

周先生丶的博客

学一学,记一记

  • 博客(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

自己动手写任务调度平台项目源代码

自己动手写任务调度平台项目源代码,更多详情请查看相关博客:https://blog.csdn.net/qq_31142553/article/details/95396253

2019-07-11

根据数据库表自动生成实体类的源代码

用一个根据数据库表自动生成实体类代码的案例讲解了代码生成器的核心思路,相关博客地址:https://blog.csdn.net/qq_31142553/article/details/93673384。

2019-06-26

Apollo配置中心客户端使用案例源码

Apollo配置中心客户端使用案例源码。更多详情请查看相关博客:https://blog.csdn.net/qq_31142553/article/details/87769239

2019-02-24

自己动手写MyBatis框架项目源代码

自己动手写基于Spring Boot的注解版MyBatis框架项目源代码,更多详情请查看相关博客:https://blog.csdn.net/qq_31142553/article/details/86655951

2019-01-26

自己动手写SpringMVC框架项目源代码

自己动手写SpringMVC框架项目源代码,更多详情请查看相关博客:https://blog.csdn.net/qq_31142553/article/details/86582066

2019-01-25

利用Aspect/Javassist/动态代理/Lombok等方式省略Controller的参数校验结果处理代码

利用Aspect/Javassist/动态代理/Lombok等方式省略Controller的参数校验结果处理代码,更多详情请查看相关博客:https://blog.csdn.net/qq_31142553/article/details/86547201

2019-01-19

自己动手写基于动态代理,使用ZooKeeper作为注册中心,以Netty进行网络通信的RPC框架

自己动手写基于动态代理,使用ZooKeeper作为注册中心,以Netty进行网络通信的RPC框架。更多详情请查看相关博客:https://blog.csdn.net/qq_31142553/article/details/86316654

2019-01-13

NIO相关代码和文档资料

Java NIO相关代码和文档资料,详细信息请参考博客文章:https://mp.csdn.net/postedit/85925718

2019-01-06

dubbo-admin的war包和zookeeper的安装压缩包

包含dubbo-admin的war包、zookeeper的安装压缩包,相关博客:https://mp.csdn.net/postedit/85333379

2019-01-02

利用Java的动态编译、动态加载结合EasyRules实现业务规则的动态性的项目源码

利用Java的动态编译、动态加载结合EasyRules实现业务规则的动态性的项目源码,具体详情请查看相关博客https://blog.csdn.net/qq_31142553/article/details/85013989

2018-12-19

借鉴p6spy,实现自己的SQL执行监控器项目源代码

借鉴p6spy开源框架部分源码,实现自己的SQL执行控制器。详情请查看相关博文:https://blog.csdn.net/qq_31142553/article/details/84405154

2018-11-25

Spring Advice插件平台开发项目源代码

Spring Advice插件平台开发项目源代码,具体项目详情请看https://blog.csdn.net/qq_31142553/article/details/81298171

2018-08-05

自定义maven插件:自动生成API的word文档源代码

自己实现的自定义maven插件:可以根据配置的接口类和参数类,生成对应的word版本的API文档。还可以自定义自己的模板文件。

2018-07-30

Maven插件源码:根据库表生成实体类&根据实体类生成库表

自定义Maven插件:根据配置的数据库信息,生成对应的Java实体类文件,并自动生成备注、长度、是否为空等的doc注释。也可以根据已有的实体类,在数据库生成对应的库表。

2018-07-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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