读书笔记
文章平均质量分 68
Lucky丶钉钉
这个作者很懒,什么都没留下…
展开
-
设计模式(四)之模板方法模式
[设计模式(三)之抽象工厂模式](https://blog.csdn.net/zxyy2627/article/details/108742126)设计模式(四)之模板方法模式前言什么是抽象工厂模式?一、模板方法模式什么是模板方法模式?二、代码示例1.模板方法模式示例2.通用代码模板方法模式的结构模板方法模式的注意事项:总结前言什么是抽象工厂模式?抽象工厂模式相比于工厂方法模式是为了提高产品分级的扩展性。根据前面的学习,知道在简单工厂模式和工厂方法模式是为了创建对象而建立,这两个模式容易添加.原创 2020-09-23 15:30:55 · 181 阅读 · 0 评论 -
设计模式(三)之抽象工厂模式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档设计模式(三)之抽象工厂模式前言什么是简单工厂模式?什么是多工厂类的工厂方法模式?一、什么是抽象工厂模式?二、示例1.女娲造人示例2.通用代码三、抽象工厂模式的优缺点抽象工厂模式的优点:抽象工厂模式的缺点:注意事项:总结:前言上一节学习到了工厂方法模式,工厂方法模式也有几个扩展。1.简单工厂模式2.多个工厂的工厂方法模式回顾一下,上一节的内容:什么是简单工厂模式?简单工厂模式包含一个工厂类,使用静态方法创建对象,因为只有一原创 2020-09-22 23:00:47 · 389 阅读 · 0 评论 -
设计模式(二)之工厂方法模式
设计模式(一)之单例模式Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory method lets a class defer instantiation to subclass;定义一个接口用于创建对象,但是让子类决定实例化哪个类。工厂使一个类的实例化推迟到子类。工厂模式...原创 2020-09-22 11:20:09 · 197 阅读 · 0 评论 -
设计模式(一)之单例模式
设计原则之单一职责原则设计原则之里氏替换原则设计原则之依赖倒置原则设计原则之接口隔离原则设计原则之迪米特法则设计原则之开闭原则单例模式一般情况下,一个国家只有一个皇帝。public class Emperor { private static final Emperor emperor = new Emperor(); private Emperor() { } public static Emperor getInstance() { .原创 2020-09-05 20:20:08 · 192 阅读 · 0 评论 -
设计原则之开闭原则
定义:Software entities like classes,modules and functions should be open for extensions but closed for modifications.一个软件实体如类,模块甚至方法应该对扩展开放,对修改关闭。解释:对扩展开放?开放什么?对修改关闭?如何关闭?什么是开闭原则?开闭原则的定义:软件实体应该对扩展开放,对修改关闭。意思就是软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。软件实体包括.原创 2020-09-05 18:15:28 · 889 阅读 · 0 评论 -
设计原则之迪米特法则
迪米特法则定义:一个对象应该对其他对象有最少的了解。迪米特法则的要求1.只和直接的朋友交流什么是朋友?每个对象必然都会与其他对象有耦合关系,两个对象之间的耦合就是朋友关系。这种关系的类型有组合,聚合,依赖。但是迪米特法则要求,只和直接朋友交流。实例:老师让体育委员清点班上的女生的人数。 public class Teacher { public void commond(GroupLeader groupLeader) { List<Gir原创 2020-08-29 23:46:49 · 335 阅读 · 0 评论 -
设计原则之接口隔离原则
接口隔离原则定义:客户端不应该依赖它不需要的接口类间的依赖关小应该建立在最小的接口上什么是接口?1.实例接口:Person zhangsan = new Person();类Person就是zhangsan的实例接口。2.类接口,就是通常意义上,用interface关键字定义的接口。解释:根据接口隔离原则的定义:事实上就是建立单一接口,不要建立臃肿的接口。接口尽量细化,同时接口中的方法尽量少。接口隔离原则和单一职责原则接口隔离原则讲的是不论是实例接口也好,还是类接口也好,都要做原创 2020-08-29 22:26:46 · 234 阅读 · 0 评论 -
设计原则之依赖倒置原则
依赖倒置原则定义1.高层模块不应该依赖低层模块,两者都应该依赖于抽象2.抽象不应该依赖于细节3.细节应该依赖于抽象解释:1.什么是低层模块?就是原子逻辑组成低层模块。2.什么是高层模块?就是原子逻辑的再组装,就变成了高层模块。3.什么是抽象?抽象就是接口或者抽象类。4.什么是细节?细节就是实现类。那上面三句话的意思就是:高层模块不依赖低层模块,容易理解,模块之间的依赖应该通过接口或者抽象类,而不应该通过实现类抽象不应该依赖细节,就是说接口或者抽象类不应该依赖于实现类细节原创 2020-08-29 17:16:55 · 457 阅读 · 0 评论 -
设计原则之里氏替换原则
里氏替换原则定义:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有对象o1都替换成o2时,程序P的行为没有发生变化,那么类型S就是类型T的子类型。所有引用基类的地方必须能透明地使用其子类对象。首先看继承的优缺点:继承的优点1.代码共享,提高代码的复用性,每个子类都拥有父类的属性和方法2.子类虽然拥有父类的方法,但是也可以拥有自己的特性。即可扩展性继承的缺点1.继承有侵入性,只要继承,那么就会拥有父类的属性和方法2.因为子类拥有父类的属性和方法,所原创 2020-08-27 23:51:05 · 336 阅读 · 0 评论 -
设计原则之单一职责原则
#单一职责原则什么是单一职责原则定义:有且仅有一个使接口或类产生变化的原因。也就是说我们使类或接口变化,只能有一个理由。但是在实际开发的过程中,我们很容易做到接口单一职责,很难做到类单一职责。例如:我们以查询数据,处理数据,返回数据为例。如果我们这样设计一个接口:public interface IUserBO{ List selectData(); List dataProcessing(); List returnData();}public class Us原创 2020-08-19 00:15:54 · 179 阅读 · 0 评论 -
Spring高级装配(二)
bean的作用域在默认情况下,spring应用上下文中所有的bean都是单例的,也就是说spring容器中,默认只会创建一个类的实例,不管这个bean在哪里调用,事实上都是同一个实例。但是这样的设置对于某些需要重用的对象是不合理的,所以spring也给出了重用这些bean的机会。spring就此定义了多种作用域:1.单例(Singleton):在整个应用中,只创建bean的一个实例2.原型(Prototype):每次注入或者通过spring应用上下文获取的时候,都会创建一个新的bean的实例3.原创 2020-06-03 16:22:15 · 230 阅读 · 0 评论 -
Spring高级装配(一)
Spring高级装配Spring Profile什么是Spring profile?是为了方便环境迁移时,简化修改配置的过程。也就是说我们有一个项目在开发环境时,可能用到的是windons系统,mysql数据库等。但是到生产环境,项目部署在Linux系统上,也有可能是使用Oracle数据库。这个时候你也许在发布到生产环境时,需要修改跟环境有关的诸多代码,这样不安全。Spring就提供了一个解决方案,使用profile bean ,等到运行时,Spring会识别到active的profile,自动帮你原创 2020-05-27 22:02:45 · 238 阅读 · 0 评论 -
SpringIoC配置详解
Spring装配BeanSpring可选的配置方案1.在XML中配置2.在java中进行显示配置3.隐式的bean发现机制和自动装配推荐第三种,使用自动装配。接下来我们都会先介绍注解配置,其次介绍XML配置。spring实现自动装配:1.组件扫描,2.自动装配组件扫描会自动发现应用上下文中所创建的bean,自动装配是在扫描后自动满足bean之间的依赖关系先认识...原创 2020-04-02 00:51:07 · 199 阅读 · 0 评论 -
Mybatis框架基础配置及使用详解
Mybatis框架基础一、配置mybatis使用环境1.创建maven工程2.添加jar包依赖<dependencies> <!--mysql8连接数据库--> <dependency> <groupId>mysql</groupId> &l...原创 2020-01-04 17:10:58 · 315 阅读 · 0 评论 -
CoreJava读书笔记--集合(三)--映射
映射集是一个集合,它可以快速地查找现有的元素。但是,要查看一个元素,需要有要查找元素的精确副本。通常,我们知道某些键的信息,并想要查找与之对应的元素。映射(map)数据结构就是为此设计的。(一)基本映射操作Java类库为映射提供了两个通用的实现:HashMap和TreeMap。这两个类都实现了Map接口。HashMap:散列映射,对键进行散列TreeMap:树映射,用键的整体顺...原创 2018-10-10 15:24:51 · 156 阅读 · 0 评论 -
CoreJava读书笔记--集合(二)--具体的集合
具体的集合(一)链表什么是链表?链表就是一个可以在任何位置进行高效地插入和删除操作的有序序列。为什么要有链表?因为对于数组和ArrayList而言,要想从中间删除一个元素要付出的代价相当大,当某个元素被删除的时候,在这个元素之后位置的元素全部都要向前移动,而插入元素时也是这样。为了解决这个问题,就有了链表这样的数据结构。事实上,在Java中,所有的链表都是双向链接的,即每个...原创 2018-10-09 22:24:51 · 266 阅读 · 0 评论 -
CoreJava读书笔记--JavaSE 8的流库(一)
JavaSE 8的流库什么是流?流是一种比集合更高级的概念,它是指定计算的数据视图。在我看来,我们处理集合中的数据时,往往需要进行迭代操作,先遍历,再对每个元素进行某项操作。但是流可以优化这个解决办法,只关心需要的是什么,而不关心它的实现过程。【1】从迭代到流操作我们先比较一下,迭代和流操作的具体实现。比如,要计算某本书中长单词(大于12个字母就算)的数量。String cont...原创 2018-10-25 23:31:32 · 192 阅读 · 0 评论 -
CoreJava读书笔记--JavaSE8的流库(二)
JavaSE8的流库【8】收集结果当流处理完以后,我们如果想要获得处理结果,如果是查看流中的元素,有三种方式:①传统的迭代器查看,②使用forEach方法查看,③使用forEachOrdered方法查看package com.zxyy.stream.test;import java.io.IOException;import java.nio.charset.StandardC...原创 2018-10-26 23:14:33 · 205 阅读 · 0 评论 -
Java多线程之使用多线程
Java多线程基础1.1进程和线程的概念1.什么是进程?进程是收操作系统管理的基本单元。我们可以看到,一个exe程序就可以看做是一个进程。2.什么是线程?线程就是在进程中独立运行的子任务。例如我们使用QQ时,可以一边聊天,一边传输文件,一边添加好友等等。这些都可以看做是一个独立的线程。1.2使用多线程每一个进程都至少有一个线程在运行它。那么我们平常写的小程序...原创 2019-08-08 15:52:15 · 858 阅读 · 0 评论 -
Java多线程之currentThread()方法
currentThread()方法currentThread()方法返回正在被执行的线程的信息。public class Run1{ public static void main(String[] args){ System.out.println(Thread.currentThread().getName()); }}注意事项:main线...原创 2019-08-08 17:15:28 · 20008 阅读 · 0 评论 -
Java多线程之sleep()方法和getId()方法
sleep()方法让当前正在执行的线程休眠(暂停执行)指定的毫秒数。public class MyThread1 extends Thread { @Override public void run() { try{ System.out.println("run threadName = " +this.currentThread...原创 2019-08-08 17:31:30 · 511 阅读 · 0 评论 -
Java多线程之停止线程
停止线程这里我们将学习如何更好地停止一个线程。停止线程,就是在线程正在处理指定任务的过程中,人为的不让它在继续执行下去,放弃当前的操作。停止线程看起来很简单,但是要想达到预期效果,就必须做好防范措施。停止线程的3种方式:1.使用退出标志,是线程正常退出,也就是执行完run方法再停止。2.使用stop方法停止3.使用interrupt方法中断线程1.7.1 停止不了的线程...原创 2019-08-08 19:09:34 · 204 阅读 · 0 评论 -
Java多线程之暂停线程
暂停线程暂停线程意味着此线程还可以恢复运行。在Java多线程中,suspend()方法可以暂停线程,resume()方法可以恢复线程。这两个方法都是已经过时的方法。1.8.1suspend与resume方法的使用package cn.zxyy.multiThread.Thread.suspendThread;public class MyThread extends Thre...原创 2019-08-11 01:23:13 · 6485 阅读 · 0 评论 -
Java多线程之yield()方法
yield()方法该方法作用是放弃当前的CPU资源,将它让给其他的任务去占用CPU的执行时间。但是放弃的时间不确定,也许刚刚放弃就又获得了CPU的执行权。package cn.zxyy.multiThread.Thread.yield;public class MyThread extends Thread { @Override public void run(...原创 2019-08-11 07:42:15 · 294 阅读 · 0 评论 -
Java多线程之线程的优先级和守护线程
线程的优先级在操作系统中,线程可以划分优先级,优先级高的线程得到CPU执行权的机会多,也就是说优先级高的线程可能会先执行。setPriority()方法可以设置线程的优先级,一般线程的优先级数值是1~10,如果超过这个范围会抛出异常IllegalArguementException。1.10.1 线程优先级的继承性什么是优先级的继承性?就是说如果优先级为5的线程A启动了线程B,那么...原创 2019-08-11 08:46:31 · 323 阅读 · 0 评论 -
CoreJava读书笔记--控制流程
控制流程(一)块作用域块(block)是指由一对大括号括起来的若干条简单的Java语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。例如:public static void main (String[] args){ int n; ... { int k; ... } //k is only defined up to h...原创 2018-03-17 12:19:21 · 163 阅读 · 0 评论 -
CoreJava读书笔记--集合(一)--Java集合框架
Java集合框架(一)将集合的接口与实现分离事实上,Java的集合类库也是将接口与实现分离的。这句话的意思就是:集合会定义接口,然后再实现接口。我们举个例子,看看对列Queue是如何接口与实现分离的。队列接口指出可以在队列尾部添加元素,队列头部删除元素,并且可以查找队列元素的个数。那么,我们可以把队列接口用下面简单的形式表现出来:public interface Queue<...原创 2018-09-29 11:05:57 · 379 阅读 · 0 评论 -
CoreJava读书笔记--泛型程序设计(二)
泛型程序设计(二)泛型代码和虚拟机虚拟机没有泛型类型对象。这句话可以理解为虚拟机不认识泛型类,它仍然只认识普通类。(一)类型擦除什么是类型擦除?无论何时定义一个泛型类型,都自动提供了一个相应的原始类型。原始类型的名字就是删去类型参数后的泛型类型名。而编译器在编译过程中去掉类型变量,就叫擦除。什么是补偿?编译器在将泛型类编译成class文件的过程中,擦除了类型变量,但是并...原创 2018-09-28 17:45:14 · 130 阅读 · 0 评论 -
CoreJava读书笔记--异常、断言和日志(二)--断言和日志
使用断言在一个具有自我保护能力的程序中,断言很常用。(一)断言的概念断言机制允许在测试期间向代码中插入一些检查语句。当代码发布时,这些插入的检测语句将会被自动地移走。Java语言引入了关键字assert。assert有两种形式:assert 条件;和assert 条件 : 表达式;这两种形式都会对条件进行检测,如果结果为false,则抛出一个AssertionErro...原创 2018-09-21 18:29:39 · 197 阅读 · 0 评论 -
CoreJava读书笔记--对象与类(五)--对象构造
对象构造Java中构造器(constructor)用来定义对象的初始状态,并且伴随着new操作符使用。由于对象构造非常重要,所以Java提供了多种编写构造器的机制。(一)重载有些类有多个构造器。例如:StringBuilder messages = new StringBuilder();//构造一个空的StringBuilder对象StringBuilder todoList...原创 2018-03-31 11:30:07 · 158 阅读 · 0 评论 -
CoreJava读书笔记--数组
数组数组是一种数据结构,用来存储同一类型值得集合。通过一个整型下标可以访问数组中的每一个值。在声明数组变量时,需要指出数组类型和数组变量的名字。下面声明了整型数组a:int[] a;不过,这条语句只是声明了数组变量,但是还未完成初始化。使用new来初始化一个数组:int[] a = new int[100];注意:数组中的下标不是从1开始,而是从0开始,也就是说上面的...原创 2018-03-25 11:01:43 · 188 阅读 · 0 评论 -
CoreJava读书笔记--对象与类(一)--介绍类与对象
面向对象程序设计概述面向对象程序设计简称OOP,Java是完全面向对象的。面向对象的程序是由对象组成,每个对象包含了对用户公开的特定功能部分和隐藏的实现部分。Java中有很多对象来自于标准库,还有一些事自定义的。传统的结构化程序设计通过一系列的过程(即算法)来求解问题,所以有人说程序=算法+数据结构,其中算法是第一位,而数据是第二位,这样的方式就是首先要确定如何操作数据,然后再决定如何组织数据,以...原创 2018-03-25 16:55:27 · 286 阅读 · 0 评论 -
CoreJava读书笔记--对象与类(四)--方法参数
方法参数在程序设计语言中,将参数传递给方法(或函数)有两种传递方式:①按值调用(call by value):表示方法接收的是调用者提供的值。②按引用调用(call by reference):表示方法接收的是调用者提供的变量地址。按引用调用时,方法可以修改传递引用所对应的变量值;按值调用时,方法不能修改传递值调用所对应的变量值。而Java程序设计语言总是采用按值调用,也就是说...原创 2018-03-31 01:04:39 · 149 阅读 · 0 评论 -
CoreJava读书笔记--对象与类(三)--静态域与静态方法
静态域与静态方法(一)静态域如果将域定义为static,每个类只有一个这样的域。而每个对象对于所有的实例域都有自己的一份拷贝。给Employee类添加一个实例域id和一个静态域nextId:class Employee{ private static int nextId=1; private int id;}现在,每个对象都有一个自己的id域,但这个类的所有...原创 2018-03-30 16:11:13 · 179 阅读 · 0 评论 -
CoreJava读书笔记--输入输出
输入输出(一)读取输入前面我们使用过很多“标准输出流”,System.out.println();要想使用“标准输入流”,首先要构造一个Scanner对象,并与“标准输入流”System.in关联。接着使用in.nextXXX()方法读取输入即可。Scanner in = new Scanner(System.in);运行示例,读取控制台输入的姓名,年龄,薪资:import...原创 2018-03-13 11:19:25 · 190 阅读 · 0 评论 -
CoreJava读书笔记--大数值
大数值如果基本的整数和浮点数不能满足需求,那么可以使用java.math包中的两个很有用的类:BigInteger和BigDecimal。这两个类可以处理任意长度数字序列的数值。BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。使用静态的valueOf方法可以将普通数值转换为大数值:BigInteger a = BigInteger.va...原创 2018-03-18 08:45:58 · 172 阅读 · 0 评论 -
CoreJava读书笔记--字符串
字符串从概念上讲,Java字符串就是Unicode字符序列。在Java中提供了一个类,叫String,每个用双引号括起来的字符串都是String类的一个实例。例如:String e ="";//一个空字符串String greeting ="Hello";(一)子串String类的substring方法可以从一个较大的字符串中提取一个字串。public class SubstringTest {...原创 2018-03-08 23:34:38 · 261 阅读 · 0 评论 -
CoreJava读书笔记--变量与运算符
变量在Java中,每个变量都有一个类型。在声明变量时,变量的类型在变量名之前,例如:double salary;int vacationDays;long earthPopulation;boolean flag;(一)变量命名规则1.变量由字母,数字,_,$组成。2.变量必须由字母开头。3.不能使用保留字。4.Java大小写敏感。(二)变量的初始化声明了一个变量后,必须用赋值语句对变量进行...原创 2018-03-06 23:00:26 · 171 阅读 · 0 评论 -
plsql连接Oracle客户端
ora-12154解决办法原创 2017-03-27 16:56:23 · 1056 阅读 · 0 评论 -
CoreJava读书笔记--对象与类(二)--用户自定义类
用户自定义类之前的类一直都包含了简单的main方法,而JavaEE程序设计大多数类是没有main方法,这些类有自己的实例域和实例方法,一个完整的Java程序是由若干类组合在一起,其中只有一个类由main方法。(一)Employee类Java中最简单的类的定义形式为:class ClassName{ field1; field2; constructor1;...原创 2018-03-30 11:46:17 · 156 阅读 · 0 评论