自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学而时习之

做一个积极主动的人

  • 博客(102)
  • 资源 (1)
  • 收藏
  • 关注

原创 2020 Java工程师面试题汇总

前言2020,不平凡的一年。经过一个多月的面试,整理了一些面试题,分享出来。不敢说对大家能有多大帮助,至少可以查漏补缺吧。里面很多东西,写得很长,并不是说要死记硬背,而是要理解,一次不懂,多看几次就懂了。而且有些题需要掌握一些点,按照点回答就行了。面试题博文汇总2020 Java相关 面试题整理2020 Spring相关 面试题整理2020 Mybatis 面试题整理...

2020-05-01 11:58:08 2200

原创 显示个人实力的十大排序算法

文章目录准备工作基本排序算法选择排序插入排序冒泡排序高效排序算法梳排序希尔排序快速排序堆排序牺牲空间节约时间的高效排序归并排序(Merge Sort)基数排序(非比较排序)计数排序(非比较排序)准备工作交换数组元素位置函数/** * 交换a数组中i和j的位置 * * @param a 需要交换的数组 * @param i 位置 * @param j 位置 */public ...

2019-12-01 16:25:12 419

原创 代码片段:自己动手写SQL慢查询统计

前言首先,MySQL是有自己的慢查询日志记录的,但是作为开发者,并不一定有权限查看MySQL的日志。因此可以自己动手写个SQL慢查询统计,但这个实现方式所统计到的时间是包含网络开销的,不过在正常情况下,没啥关系,根据统计也能分析到一定原因,主要是这种方式我们能实时监控SQL的大致执行时间,然后又针对的进行SQL优化,能尽快的发现一些问题。代码实现切面import org.apache....

2019-11-28 10:26:07 321

原创 HashMap不支持深拷贝问题解决方案

前言当构造一个复杂耗时的对象的时候,而且实际用的时候仅仅只是需要改动一小部分,这个时候我们往往会想到使用实现Cloneable接口来开启对象克隆。但是这里有一个问题就是,对于自定义对象无法支持深拷贝,HashMap实现了Cloneable接口,自然也是存在这种问题的。示例示例代码public class Test3 { @SuppressWarnings("unchecked"...

2019-11-26 18:00:28 1297

转载 Maven Sonatype Nexus return 401

说明之前deploy代码到sonatype一直不成功,且提示401。一直没发现原因,直到看到下面的博文,最终解决了问题,故转载分享出来。原文链接:https://www.trinea.cn/dev-tools/maven-sonatype-nexus-return-401-which-settings-xml-maven-is-using/注意:sonatype网站密码中特殊字符不要使用...

2019-11-21 17:06:01 655

原创 代码片段:利用存储过程创建大量测试数据示例

说明在平时的开发工作中经常需要创建大量的测试数据,手动插入显然不现实。这个时候我们就需要使用存储过程来为我们批量插入数据,这里简单介绍一下存储过程的例子。目标表CREATE TABLE `z_generate` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) COLLATE utf8mb4_bin DEFAULT ...

2019-11-21 11:32:36 222

原创 设计模式系列文章集合

设计模式1. 创建型模式     1.1 工厂模式          1.1.1 简单工厂模式          1.1.2 工厂方法模式&...

2019-11-09 23:11:33 167

原创 23种常用设计模式之解释器模式

说明解释器模式是一种行为型设计模式,在平时工作当中相对冷门,也非常的难于理解,可以参考正则表达式为一个实际的应用例子。虽然说解释器模式很难理解并且工作中应用很少,但是楼楼觉得解释器模式是一个非常强大且有趣的模式,因为该模式给我们提供了非常大的设计空间,我们可以在应用程序中定义自己的规则,然后去解析一些复杂的操作。应用场景解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能...

2019-11-09 22:42:23 198

原创 23种常用设计模式之中介者模式

说明中介者(Mediator)模式属于行为型模式。定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。简单的说,A想跟B通信,需要中介者M来完成。应用场景系统中对象之间存在复杂的引用关系,系统结构混乱且难以理解。一个对象由于引用了其他很多对象并且直接和这些对象通信,导致难以复用该对象...

2019-11-09 22:33:37 214

原创 23种常用设计模式之享元模式

享元模式说明应用场景模式特征代码实现优缺点模式对比重要说明

2019-11-09 22:26:02 192

原创 23种常用设计模式之建造者模式

说明建造者模式(builder pattern)是一个创建型模式。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示应用场景需要生成的产品对象有复杂的内部结构,这些产品对象具备共性;隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。需要生成的对象内部属性本身相互依赖。适合于一个具有较多的零件(属性)的产品(对象)的创建过程。快速使用方法:...

2019-11-09 21:54:13 167

原创 23种常用设计模式之访问者模式

说明访问者模式是一种行为型模式,表示一个作用于其对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。可以对定义这么理解:有这么一个操作,它是作用于一些元素(Element)之上的,而这些元素属于某一个对象结构(ObjectStructure)。同时这个操作是在不改变各元素类的前提下,在这个前提下定义新操作是访问者模式精髓中的精髓。应用场景对象结构比较稳...

2019-11-09 13:36:32 170

原创 23种常用设计模式之模板方法模式

说明模板方法(Template Method)模式是一种行为型模式,它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。应用场景多个子类有共有的方法,并且逻辑基本相同。重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。重构时,模板方法是一个经常使用的方法,把相同的代码抽取到父类...

2019-11-09 10:03:08 337

原创 23种常用设计模式之策略模式

说明策略模式(Strategy Pattern)是一种行为型模式,它定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。应用场景针对同一类型问题,有多种处理方式,每一种都能独立解决问题;算法需要自由切换的场景;需要屏蔽算法规则的场景;模式特征角色说明举栗上下文角色(Context)用来操作策略的上下文环境,屏蔽高层模块(客户端)对策略,算法的直接...

2019-11-06 23:22:57 184

原创 23种常用设计模式之状态模式

说明状态模式(State)是一种行为型模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。应用场景行为随状态改变而改变的场景。条件、分支语句的代替者。模式特征角色说明举栗上下文环境(Context)它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来处理。Cont...

2019-11-06 22:40:11 157

原创 23种常用设计模式之观察者模式

说明观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己应用场景对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。...

2019-11-04 22:35:54 218

原创 23种常用设计模式之备忘录模式

说明备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。应用场景需要保存/恢复数据的相关状态场景。提供一个可回滚的操作。模式特征Originator(原发器):它是一个普通类,可以创建一个备忘录,并存储它的当前内部状态,也可以使用备忘录来恢复其内部状态,一般将需要保存内部状态的类设计为原发器。Memento(备...

2019-11-04 17:44:49 250

原创 23种常用设计模式之迭代器模式

说明迭代器模式是一种对象行为型模式,提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。应用场景当需要为聚合对象提供多种遍历方式时。当需要为遍历不同的聚合结构提供一个统一的接口时。当访问一个聚合对象的内容而无须暴露其内部细节的表示时。模式特征角色说明举栗抽象聚合(Aggregate)角色定义存储、添加、删除聚合对象以及创建迭代器对象的...

2019-11-03 15:34:46 301

原创 23种常用设计模式之委派模式

说明委派模式是一种常用的行为型设计模式,在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项基本技巧,委派者和被委派者拥有相同的方法和属性。委派模式大量使用在spring,mybatis等开源框架中,理解委派模式的实现原理可以更好理解这些框架源码。应用场景用一个对象统一处理请求,并将请求分发到具体的请求处理类上模式特征角色说明...

2019-10-26 21:32:07 476

原创 23种常用设计模式之命令模式

说明命令模式是一种常见的行为型模式,它将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。应用场景当系统需要将请求调用者与请求接收者解耦时,命令模式使得调用者和接收者不直接交互。当系统需要随机请求命令或经常增加或删除命令时,命令模式比较方便实现这些功能。当系统需要执行一组操作时,命令模式...

2019-10-26 20:12:19 193

原创 23种常用设计模式之责任链模式

祝大家1024节日快乐,致敬一线编程工作者,学习者。说明责任链模式(Chain of Responsibility Pattern)属于行为型模式,它为请求创建了一个处理者对象的链,请求将在这个对象链上被处理,责任链模式并不要求请求一定要在某一个处理者上被处理完,简单的说,就是链上的处理者都可能处理请求的一部分,该模式可以有效的解耦请求的请求者和处理者。应用场景一个请求需要一系列的处理工...

2019-10-24 09:19:01 226

原创 封装BeanCopier工具,支持单个对象以及列表拷贝,超高性能简单实用

说明前几天写了一个关于Spring BeanUtils的封装类代码片段六:BeanUtils.copyProperties扩展复制列表,然后又发现了一款性能更好的工具BeanCopier,这款工具性能比较好,但是易用性稍差,故而封装一下,分享出来。由于使用上和上面????那个基本一致,故不作过多介绍。至于性能提升多少,小伙伴们可以参考各类对象属性拷贝工具性能测试对比(BeanCopier、BeanUt...

2019-10-17 21:09:30 3828 2

原创 各类对象属性拷贝工具性能测试对比(BeanCopier、BeanUtils、DozerBeanMapper、PropertyUtils)

说明在工作了许久之后,也认识了很多对象属性拷贝工具,诸如标题所示的那些工具,于是就想看看哪个工具在对象拷贝方面性能更高,于是乎就有了这篇博文,希望对小伙伴们有点帮助。由于是测试性能,代码写的比较露骨简单且基本相同,在每个工具类正式测试前,都做了代码预热,为了就是让结果尽量准确,各个工具的测试代码将贴在文末,下面直接附上测试结果。性能测试结果对比预热100次后的结果:类方法...

2019-10-17 17:29:28 7731

原创 23种常用设计模式之门面模式

说明门面模式也叫外观模式,是一种结构型模式。它是一种很容易理解且易于实现的模式,它的定义是这样的:外部与一个子系统内容的通信必须通过一个统一的对象进行,门面模式提供一个高层次的接口, 使得子系统更易于使用。简单的理解就是通过门面模式,我们能很轻松的使用一个子系统,而不必关心子系统内部是怎么去实现的。应用场景为一个复杂的模块或子系统提供一个供外界访问的接口子系统相对独立–外界对子系统的访问...

2019-10-16 23:46:07 290

原创 23种常用设计模式之代理模式

说明代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用实现方式静态代理:由程序员创建或特定工具自动生成源代码,在对其编译。在程序员运行之前,代理类.class文件就已经被创建了JDK动态代理:是在程序运行时通过反射机制动态创建的CGLIB动态代理:CGLib采用了非常底层的字节...

2019-10-15 11:11:56 231

原创 23种常用设计模式之装饰器模式

说明装饰器模式(Decorator)是一种结构型模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。应用场景在不想更改已存在类的核心功能的情况下,想要扩展该类的功能模式特征角色说明举栗Component统一接口,也是装饰类和被装饰类的基本类型OperateSystemConcreteComponent具体实现类,也是被装饰类,他本身是个具...

2019-10-15 11:05:37 417

原创 23种常用设计模式之组合模式

说明组合模式(Composite Pattern),又叫部分整体模式,是一种结构型模式。它将对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性应用场景部分、整体场景,如树形菜单,文件、文件夹的管理模式特征角色说明举栗抽象根节点(Component)定义系统各层次对象的共有方法和属性,可以预先定义一些默认行为和属性...

2019-10-14 14:05:13 423

原创 23中常用设计模式之桥接模式

说明桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种结构型模式,又称为柄体(Handle and Body)模式或接口(Interfce)模式。 一个事物我们可以从不同的维度去描述它,在众多维度中我们需要确定一个主维度,即其他副维度是描述主维度的。在桥接模式中,我们需要将主维度抽象化,副维度实现化,使他们能够独立的变化。 举栗说明:扩展\维度形状颜色...

2019-10-13 23:16:03 131

原创 23种常用设计模式之适配器模式

说明适配器模式(Adapter)是一种结构型设计模式。顾名思义,主要作用就是用来做适配用的。之所以需要适配,是因为已有的代码不能很好的完成我们的业务逻辑,但是通过简单的适配,就可以满足我们的需求,避免重复编写很多业务代码。应用场景想要复用一些现有的类,但是接口与复用环境要求不一致,比如入参不同、返回结果结构不能满足需求等。模式特征角色说明举栗Interface(目标...

2019-10-13 21:24:01 234

原创 23种常用设计模式之单例模式,以及它的十种实现方式

说明单例模式(Singleton)是一种常用的创建型软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。应用...

2019-10-11 23:52:14 361

原创 23种常用设计模式之原型模式

说明原型模式(Prototype Pattern)是一种创建型模式,用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新...

2019-10-10 23:39:33 321

原创 23种常用设计模式之工厂模式:抽象工厂模式

说明抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也...

2019-10-10 23:15:22 220

原创 23种常用设计模式之工厂模式:工厂方法模式

说明工厂方法模式(FACTORY METHOD)是一种常用的类创建型设计模式,此模式的核心是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品应用场景对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collec...

2019-10-10 23:12:27 202

原创 工厂模式之简单工厂模式

简单工厂模式说明简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。应用场景工厂类负责创建的对象比较少;客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;由于...

2019-10-10 23:06:54 139

原创 代码片段:BeanUtils.copyProperties扩展复制列表

写Java的同学应该都知道,在Java里面有各种O(PO,VO,TO,QO,BO,DTO),我们经常需要将各种O对象之间转换数据,用的比较多的就是Spring的BeanUtils工具的copyProperties函数和dozer的Mapper,这两种都可以完成属性的复制,但是无法完成列表的快速复制,因而笔者封装了一下,来支持列表的复制。代码如下:import com.google.common...

2019-10-10 17:28:59 3674

原创 Centos7 下安装最新版docker

最新版docker下载地址点我点我,下载地址,选择最新版本即可安装解压tar -zxf docker-19.03.2.tgz将docker命令文件复制到/usr/bin目录下cd dockercp * /usr/bin/新建服务并添加可执行权限cd /usr/lib/systemd/system/touch docker.servicechmod +x doc...

2019-09-21 23:49:31 236

原创 代码片段:flatMap方法用法

说明flatMap方法是Java8中操作stream的一种方法,它可以将多个Stream连接成一个Stream。举栗说明:给你一个列表:List<String> list = Arrays.asList("a,b,c", "b,c,e", "a,d,f", "a,e", "b,d");需求:得到不重复的字母集合————————————————————如果不清楚fla...

2019-09-20 16:31:14 1884 1

原创 代码片段:Vue整合七牛云上传文件、图片

说明该方式属于浏览器直传七牛云上传前需要将图片先转Base64文件返回链接类似这个样子:http://your.domian/hash_key (意思就是不能新增文件夹分类管理)使用前npm install qiniu --save核心代码import * as qiniu from "qiniu";import store from "../../store";impor...

2019-09-20 15:53:54 451

原创 代码片段:Vue配置生产环境参数和开发环境参数

前言:以前配置不同环境参数很简单,只需要在dev.env.js文件和prod.env.js文件下配好就行了,大概是酱紫的:然后使用 process.env.BACKEND_URI_PREFIX 就可以在全局使用环境配置参数了。但是!!!,最近重新写代码发现,这样用不行了,听说是Vue更新, 我,,,一个后端Coder有心无力啊,百度了一下也不是很明白前端大佬的思路,于是乎:不给我用,就...

2019-09-20 15:26:48 954

原创 代码片段:检测枚举字段值、字段是否合法

应用场景:对于接口传入的枚举值,无法确定其合法性。基于编程的严谨性,最好对枚举值进行校验。校验对象:自定义枚举Code、type等自定义枚举字段举栗说明测试枚举类:package cn.itoak;/** * Project:CodeFragment * FullPath:cn.itoak.ColorEnum * Date:2019/9/20 * Time:14:4...

2019-09-20 15:00:29 941

kube-flannel.yml

Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP/VXLAN封装IP包来创建overlay网络,并借助etcd(也支持kubernetes)维护网络的分配情况。由于github上无法下载,故分享出来。

2020-05-23

空空如也

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

TA关注的人

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