自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(133)
  • 收藏
  • 关注

原创 设计模式指引

启迪篇:设计模式之领航篇高内聚和低耦合设计模式之大话细品设计原则(一) 设计模式之大话细品设计原则(二)创建类模式:单例模式,工厂方法模式、抽象工厂模式,建造者模式、单例模式和原型模式java之设计模式(单例)(单例模式) 设计模式学习之如何正确使用单例模式(单例模式) 设计模式学习之如何建造一个简单工厂(工厂方法模式) 设计模式学习之工厂扩大规模怎么办(抽象工厂模式) 设计模式学习之假如你是一个建造者(建造者模式) 设计模式学习之原型分身术(原型模式)结构类模式:适.

2020-08-05 22:15:31 127

原创 设计模式之大话细品SOLID设计原则(二)

3.依赖倒置原则DIP依赖倒置中,依赖很容易理解,但是倒置可能会有些晦涩。首先了解下正置,正置就是指的实实在在的类间的关系,依赖是靠实实在在的类。而本事编程思想中,就是将具体变为抽象,倒置就是反编程思维,将依赖变为更抽象的类(接口或者抽象类)。依赖倒置原则有三层含义高层模块不应该依赖低层模块,两者都应该依赖其抽象; 抽象不应该依赖细节; 细节应该依赖抽象在Java语言中模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生。 接口或抽象类不依赖于实现类.

2020-06-06 13:29:25 155

原创 设计模式之大话细品SOLID设计原则(一)

1.单一职业原则SRP单一职责原则要求一个接口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,它就负责一件事情。这个接口看似最容易理解,但是确是最难实现的一个原则。在设计接口中,如果不满足原则,可以拆分接口,这个很勉强可以接受。但是如果一个实体类不满原则,那该怎么办?拆分成几个类?在实际开发中要是这么干了,估计脑壳会被敲爆。原则是提供了一种规范,尺寸要把握合适。理解原则是方式,但是更多的在实践中如何运用。单一原则的优点:类的复杂性降低,实现什么职责都有清晰明确的定义; 可读...

2020-06-04 19:22:53 227

原创 设计模式之领航篇高内聚和低耦合

为什么要学习设计模式,首先我简单聊聊。在学习源码或者CodeView别的代码时,总会有这样的疑问,这个类为什么要这么写,这个基础模型有没有更好的实现方式?但是却说不出个所以然,为什么呢?一个人学习武功时,首先先会学习招式,然后学习心法口诀,招式是对敌之策,心法口诀是内功。平时写代码就是招式,编写代码的风格和方式五花八门。但是代码的奥义都逃不过编程的核心思想。编程思想是最基础的心法。而要想功夫更上一层楼还行多层次的修炼,设计模式就是其中的一个层次。...

2020-06-04 12:01:13 956

原创 Java1.8 Optional简单使用

听到同事们说Optional类是Java1.8新增的类可以用来判断对象是否为null。当时感到一丝丝疑问:为了判null至于新出一个类吗?直到了学习了官方文档和实际演示了一遍,发现Optional并不是只是判null这么简单。.........

2022-06-04 17:17:56 1680

转载 SecureCRT自动保存日志设置

SecureCRT自动保存日志设置

2022-06-03 14:40:07 16246

原创 idea常用的搜索方式

Idea常用的搜索方式:1.在当前资源搜索;2.全局搜索;3.搜索调用方法;4.搜索方法完整调用树

2022-05-28 17:48:37 11561

原创 git闭坑指南(执行更新)

使用git管理代码带来很大的便利,但是在来回切换分支的同时,常常也会产生一些误操作。(一)恢复已commit未push的代码1.git log 找到之前提交的 commit_id; 2.1.git reset –hard id完成撤销,同时将代码恢复到前一commit_id 对应的版本(注意会覆盖当前修改的代码) 2.2.或执行 git reset id 完成撤销(不会覆盖当前修改的代码)如果撤销commit后的操作:git reset HEAD~ HEAD 代表:上一次提交...

2020-10-13 23:34:45 147

转载 DAO、DTO、PO、POJO、BO、VO、AO基本概念

基本概念:DAO:Data access object 数据库访问对象主要用来封装对数据库的访问,通过它可以把POJO持久化为PO,用PO组装出来VO、DTO。DTO:Data Transfer Object数据传输对象主要用于远程调用等需要大量传输对象的地方。PO:persistent Object 持久对象有时也称Data对象,对应数据库中的Entity,简单的可以认为一个PO对应数据库的一个条记录。BO:Bussiness Object对象业务对象主要作用是把业..

2020-09-29 22:05:20 1665

原创 Java基础之聊聊运算符“==”和equals方法

目录一、“==”和equals方法的初步认识二、String类的具体说明三、Integer类的具体说明一、“==”和equals方法的初步认识在面试的过程中,说一说“==”和equals的区别算是一个比较经典也是一个很基础的问题了。但是可能每个人回答的角度都是对,但是往往都不全面,那怎么回他才是更全面的呢?分以下几点来看下。首先,“==”和equals方法共同点是都是用来判断两个变量是否相同,为什么强调是变量呢,变量分为基本数据类型和引用数据类,从而引申出来不同的地方。不同点,当

2020-09-05 21:50:25 288

原创 Java基础之值传递的一探究竟

Java方法签名中的参数被称为形参,而方法实际调用时传递到形参的值称为实参。Java的参数传递机制只有值传递,所谓值传递就会将实参的值副本传递到方法内,而参数本身不受到任何影响。比如:示例一:public class Test { public static void main(String[] args) { int a = 1; int b = 2; conver(a,b); System.out.println("a =

2020-08-23 17:49:20 126

原创 MySQL索引的优缺点及分类

索引在MySql也叫做key或index,是存储引擎用于快速找到记录的一种数据结构。在数据量越来越大时,索引对性能的影响会越来越大。在MySql中,索引时在存储引擎上实现的,可以包含一个列或者多个列。索引的分类索引根据实现的数据结构可以分为B-Tree索引,哈希索引,空间数据索引(R-Tree),全文索引等B-Tree索引B-Tree索引是使用最频繁的一种索引,也是我们平时常常说的一种索引。它是使用B-Tree数据结构来存储数据。原理:...

2020-08-16 21:02:24 422

原创 重修Redis之五:缓存清理机制

前言Redis是内存数据库,缓存中数据可以设置过期时间的属性。那如何过期的数据会如何清理,下面就来学习下。数据删除策略关于数据清理,一般情况分为主动删除和被动删除,主动删除常见的策略是定时删除和定期删除,被动删除常见的策略是惰性删除。定时删除:在设置数据过期时间时,会创建一个定时器,让定时器在数据过期时间来临时,立即执行对键的删除。定时删除的优势是对内存能更快释放存储空间,但是对于CPU不够友好,尤其是当过期数据较多了,更占用大量CPU资源去进行清理工作。定期删除:每隔一段时间,程序就

2020-08-09 22:55:32 1606

原创 设计模式之大话细品ISS 原则、YAGNI 原则和DRY 原则(三)

KISS 原则:尽量保持简单KISS原则是保证代码可读和可维护的重要手段。并不是代码行数越少就符合KISS原则,如果简单几行代码却使用了复杂的类库方法,也是不符合KISS原则的。同样对于复杂的问题采用复杂的方法也不一定就不符合KISS原则。YAGNI 原则:不需要的就不要使用YAGNI原则理解也很简单,比如目前的需求不需要实现这个功能就不要实现,如果为了满足需求变化可以预留扩展点。还有一个典型的例子是,项目中不需要的jar就不要引入它。DRY 原则: 不要写重复的代码如果判断是否符合DR

2020-08-09 07:40:13 182

原创 设计模式之浅析面向对象编程语言的四大特性

浅析面向对象编程语言的四大特性:面向对象编程简称OOP,是时下应该最广最普及的一种编程方式或者编程风格。对应的是面对对象编程语言。Java是目前最普及应用最广的面向对象编程语言之一。说的面向编程语言也就不得不说其四大特性:封装、继承、多态和抽象。下面在重新简单认识一遍:封装:也叫作数据保护和信息隐藏。类仅暴露必要的访问函数,授权外部类来进行数据访问。在Java语言中通过private、public等权限访问关键字来实现控制。封装主要解决类不被暴露更多属性给调用,让调用者通过授权的函数方法来实现数据访

2020-08-08 01:25:38 783

原创 设计模式学习之简单聊聊如何写出优秀的代码

前言:到底什么样的代码是优秀的代码?这个恐怕是仁者见仁、智者见智的问题。一个程序员随着能力的提升和视野的开拓不同的阶段看待这个问题会有不一样的答案。不过常见的一些评判的标准,像可维护性,可扩展性、可读性等等,都是常常听到的词语。代码的评判标准:可维护性: 维护本身的含义就是指在不破坏原有的设计意图上进行修修补补,能快速的修改bug或者增加新的功能点。曾几何时你是不是也对着前同事的代码,在心里奔腾过无数猛兽。是不是也因为修复bug却搞出了其他bug。造成这种情况的根本原因是因为代码的本身可维护..

2020-08-07 23:55:48 183

原创 设计模式之解释器模式

1

2020-08-05 21:48:45 108

原创 设计模式学习之屡屡清楚状态模式

定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。状态模式的核心是封装,由于对象内部状态的改变,从而使这个类改变了其行为,看起来就像是换了一个类一样。三个角色:State抽象状态角色接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。ConcreteState具体状态角色每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理,通俗地说,就是本状态下要做的事情,以及本状态如何过渡到其他状态。Context环境角色定义客户端需要的接口,并且

2020-08-02 21:46:33 313

原创 Jmockit入门操作(一)

JMockit是一款Java类/接口/对象的Mock工具,目前广泛应用于Java应用程序的单元测试中。主要特点是Api操作简单,容易上手。

2020-08-02 20:43:07 974

原创 Web安全之浅析SQL注入

定义:SQL注入常见的Web安全问题之一,其形式主要是把SQL命令插入到Web表单提交或页面请求url的查询字符串,破坏原有SQL结构,最终达到欺骗服务器执行恶意的SQL命令。原理 sql注入的原理是将sql代码伪装到输入参数中,传递到服务器解析并执行的一种攻击手法。也就是说,在一些对server端发起的请求参数中植入一些sql代码,server端在执行sql操作时,会拼接对应参数,同时也将一些sql注入攻击的“sql”拼接起来,导致会执行一些预期之外的操作。示例: ...

2020-08-02 09:15:05 190

原创 设计模式学习之不常用的访问者模式

1

2020-08-02 08:46:10 126

原创 设计模式学习之后悔药的制作过程

1

2020-07-29 20:58:41 421

原创 设计模式学习之是看起来的样子吗?(门面模式)

定义:门面模式也叫做外观模式,是一种常用的封装模式,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。角色分类:Facade门面角色:客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任。一般情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去,也就说该角色没有实际的业务逻辑,只是一个委托类。 subsystem子系统角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。子系统并不

2020-07-23 22:50:48 116

原创 设计模式学习之我的心思你不用猜

定义:观察者模式又叫发布订阅模式,定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。角色分类:Subject被观察者:定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类,仅仅完成作为被观察者必须实现的职责:管理观察者并通知观察者。 Observer观察者:观察者接收到消息后,即进行update(更新方法)操作,对接收到的信息进行处理。 ConcreteSubject具体的被观察者:定义被观察者自己的业

2020-07-23 20:22:51 115

原创 设计模式学习之如何组合一个树(组合模式)

定义: 组合模式也叫合成模式,有时又叫做部分-整体模式,主要是用来描述部分与整体的关系。对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。现在生活中有很多这样的例子,比如:公司的职级体系,文件的目录接口,包括我们的亲属关系等待,都可以用这种树形结构的设计模式来设计。组合模式的角色:Component:抽象定义的基础组件,包含组合对象默认的方法和属性,叶子和树枝构件都继承于它。 Leaf:叶子构件或者叫叶子对象,遍历的最...

2020-07-22 21:09:36 505

原创 设计模式学习之程序变压器的工作原理(适配器模式)

定义: 适配器模式的定义是将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。就像一个变压器将高压电转换为低压电,因此适配器也称为变压器模式。下面是很形象的一个图:引用自设计模式之禅关键词:适配 转换实现:需求:现在有用户基本信息,用户家庭信息,用户办公信息三个接口,如何设计一个接口可以执行查询到用户的姓名,家庭住址和办公电话设计思路:通过适配器的思想,用户基本信息、用户家庭信息和用户办公信息是现有的实现接口和...

2020-07-19 21:08:48 272

原创 设计模式学习之锦囊妙计定乾坤

策略模式

2020-07-19 10:29:05 167

原创 设计模式学习之—我是一个粉刷匠(装饰模式)

装饰模式定义: 装饰模式就是动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。装饰模式实现:需求:净水器公司想要搞一波营销活动,买送净水机送三种礼品:鸡蛋,雨伞,洗菜盆,但是销售比较鸡贼这三种礼品不是必须都送的,会根据消费者的购买意愿来由销售来送几种礼品。设计思路:实现抽象的Gift类是原始对象,有giveGift方法;SaleGift类是最核心的类,必须会执行也是需要装饰的类;Decorator类是装饰的抽象类,GiftDecorator1和Gif...

2020-07-18 16:49:17 239

原创 设计模式学习之—把对象串成一个链(责任链模式)

责任链模式的定义: 责任链模式就是使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。责任链模式重点是在链上,链上的节点都有可能处理请求,前提是必须是符合处理该节点处理条件,如果不符合将继续查找下一个节点,而处理功能通常会采用递归的形式。责任链模式的实现:需求:完成公司请假模块的开发,公司现在请假流程还是比较简单的,只需要向自己的上级领导请示通过就可以了,公司一个有组员,组长,总监,总经理四个职...

2020-07-18 14:38:04 257

原创 设计模式学习之一个命令就可以搞定

1

2020-07-16 20:34:09 126

原创 设计模式学习之当好一个中介难不难

2020-07-14 10:44:16 134

原创 设计模式学习之原型分身术(原型模式)

原型模式的定义: 分身术说的其实就是设计模式中的原型模式。原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。听着和神仙剧的中的分身术十分相似。如何使用原型模式:需求:某银行举办清凉一夏抽奖活动,需要通过邮件的形式通知到客户设计思路:邮件内容基本保持一致,主要区别是收件人。活动内容不定期改变,定义成活动模板。为了保证线程安全和消息准确性每发一次邮件就需要新建一个邮件内容类。类图设计:代码实现:package com.specify;/...

2020-07-11 12:33:40 171

原创 设计模式学习之如何找一个合适的代理(代理模式)

1

2020-07-05 16:30:44 2588

原创 设计模式学习之假如你是一个建造者(建造者模式)

4

2020-06-27 11:27:35 142

原创 设计模式学习之有了工厂为啥还有模板

基本定义: 模板方法模式(Template Method Pattern) 是定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。简单的说就是模板类提供了结构或者步骤,而子类在不改变步骤的前提下,实现自己特有的细节。模板类和子类是一种继承关系。举例: 定义一个抽象的模板类,模板类包含若干基本方法,模板方法(统一调用模板方法),钩子方法,确认模板方法中的执行顺序和结果(方便子类扩展,符合开闭原则)。除模板方法...

2020-06-21 20:32:39 127

原创 设计模式学习之工厂扩大规模怎么办(工厂模式二)

抽象工厂模式是工厂方法模式的升级版,也是工厂模式最抽象的以中国模式。抽象工厂模式的定义是为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类,抽象工厂模式对应的是更复杂的情况。在工厂方法模式中,如有新的需求改动,只能修改工厂类,新增或修改工厂类,这样违背了开闭原则,于是抽象工厂原则应运而生。

2020-06-14 18:29:57 339

原创 设计模式学习之如何建造一个简单工厂(工厂模式一)

工厂方法模式是经常使用的一种设模式,基本可以分为产品,工厂和使用者。定义一个用于创建对象的接口,它的子类决定实现实例化哪一个类。最基本的工厂方法模式:包括一个抽象工厂类,定义工厂;工厂类实现工厂生产的具体细节;产品的抽象类,定义产品的属性和行为,实际的产品类,最终生产的产品。

2020-06-07 14:39:06 777

原创 学习设计模式之你就是唯一(单例模式)

什么是单例? 用小学老师教的拆字组词理解法单例就是当个实例。结合定义来说,单例就是一个类只实例化一次,并且实例化的对象可供系统全局调用。

2020-06-07 14:38:35 279 2

原创 Java容器源码分析——HashSet是如何保证元素的不可重复

一、前言HashSet的基本特点是元素不可重复,但是不能保证元素的顺序;同时也是不同步的,所以多线程常见会存在线程安全问题。在开发过程中,HashSet是一个不错的去重工具。那是具体的实现机制是怎样的呢?马上开始揭晓。二、源码解读特性HashSet继承了集合框架AbstractSet<E>,保证了集合的基本特征,实现了接口Set包含了基本集合操作,实现了接口Cloneable支持克隆,实现了Serializable支持序列化。public class HashSet<

2020-05-23 14:02:06 476

原创 Java基础之初见Lambda表达式

lambda表达式是Java8中最瞩目的一个新特性,提供了一种更简洁的开发流程。

2020-05-14 10:38:47 259

空空如也

空空如也

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

TA关注的人

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