工厂设计模式
工厂设计模式(Factory Pattern)描述: 工厂设计模式是用来生产对象的,在java中万般皆对象,如果创建的时候使用new 关键字会出现耦合严重,如果我们的对象名称换了那么所有出现此对象的地方都要进行修改。维护起来会十分的麻烦,所以就会使用工厂设计模式。
工厂设计模式的种类:
简单工厂(Simple Factory Pattern)
工厂方法(Factory Method)
抽象工厂(Abstract Factory)
简单工厂设计模式(Simple Factory Pattern) /静态工厂方法示例:
电脑的抽象类
1234public interface Computer { String getRAM();//内存 String getCPU();//cpu}
联想电脑厂家
12345678910111213141516public class Lianxiang implements Computer{ String ram; String cpu; public Lianxian ...
mybatis相关笔记
mybatis中inster一条数据后返回数据库自增的主键值
相关sql的写法
keyProperty=”tid” 对应的是实体映射
keyColumn=”typing_test_id” 对应的是表中的字段自增主键 id
12345<insert id="insterTypingTest" parameterType="com.mwt.oes.dto.TypingTestDTO" useGeneratedKeys="true" keyProperty="tid" keyColumn="typing_test_id">INSERT INTO typing_test ( title, test_user_role, typing_content_id, start_time, end_time, duration, create_user,create_time, update_time ) VALUES ...
建造者设计模式
建造者设计模式 (BuilderPattern)描述: 首先建造者设计模式是用来构建复杂的对象的,它主要强调的是当对于一个复杂对象的构建,比如当一个类的构造函数的参数超过4个的时候,且都是可变参数时侯考虑使用建造者设计模式。
核心思想: 当你的一个类需要很多的参数来构建时就可以把这些参数提取出来放在另一个类中进行构建
建造者设计模式的优点:
封装性
独立 , 易于扩展
便于控制细节风险,对建造过程逐步细化
建造者设计模式的使用场景:
- 相同的方法,不同的执行顺序产生不同的结果- 多个零件或者部件,可以配置到多个对象中产生不同的效果- 产品类中调用的顺序不同会产生不同的结果
示例:
构建 制茶模型
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354abstract class TeaModel { public abstract void caiZhai(); public abstract void wei ...
策略者设计模式
策略者设计模式 (StrategyPattern)描述: 策略者解决的是在多种算法相似的情况下,使用if….else…ss等所带来的的复杂代码。解决的思路是,将这些算法的代码封装成一个一个的类,实现统一接口。
核心思想: 策略设计模式就是 实现一种策略 展示不同的结果
使用场景: 有多种动物需要对它们进行排序,但每种动物的排序规则都不一样 此时我们就会写很多的if() 判断语句 此时就可以使用策略者设计模式
策略者设计模式的优点:
算法可以自由的切换
减少多重判断的使用
扩展性好
策略者设计模式的缺点:
策略类都会暴露在外,客户端都要知道每个策略算法的区别
如果系统中的的算法种类很多的话 策略类会爆炸式增长,不便于维护
示例:
猫的对象
123456789public class Cat { private Integer age; private String name; public Cat(Integer age,String name){ this.name=name; this.age=ag ...
单例设计模式
单例设计模式 (Singleton)描述: 一个类有且仅有一个实例的类
特点: 单例类只有一个实例,单例必须自己创建自己的唯一实例,必须给其他的访问对象提供自己的试列 。这样的好处就是避免了内存的频繁的创建和销毁实例。
饿汉式
12345678910111213 /*饿汉式类加载到内存之后就一个实例 , jvm保证线程的安全缺点就是不管用到与否 都会在内存中产生一个实列*/class Test{ //构造器私有,不能被外界随便调用 private Test(){} private static final Test t = new Test(); //提供访问接口 只能是 类名.的方式调用 public static Test getTest(){ return t; }}
懒汉式(线程不安全)
123456789101112131415161718 /*懒汉式 线程不安全*/class Test { private static T ...
面向对象的七大设计原则
七大设计原则
名称
英文名称
简称
单一职责原则
Single Responsibility Principle
SRP
里氏替换原则
Liskov Substitution Principle
LSP
依赖倒置原则
Dependence Inversion Principle
DIP
开闭原则
OPen Closed Priciple
OCP
接口隔离原则
Interface Segregation Principle
ISP
迪米特法则
Law of Demete
LOD
组合/聚合复用原则
Composite/Aggregate Reuse Principle
CRP
1. 单一职责原则 描述: 一个方法只干一件事,一个类只干一件事,甚至一个模块专注于一件事。
特点: 一个类 一个方法被修改的机率很大,如果一个方法或者类中有好几个功能相互关联,修改一个功能会带来其他功能的变动, 因此在实现的过程中一个类或者一个方法因该只专注于做好一件事情,降低功能之间的关联。(高内聚,低耦合)
2.里氏替换原则 描述: 任何父类出现 ...
常用的批处理命令
常用的批处理命令1.启动jar123456@echo offstart javaw -jar oes.jarecho ------------启动成功!--------------------pauseexit
2. 停止服务 杀死进程12345678910111213141516171819202122@echo off & setlocal EnableDelayedExpansionset obj[0]=9111set port=0set pid=0for /f "usebackq delims== tokens=1-2" %%a in (`set obj`) do ( set port=%%b for /f "tokens=5" %%m in ('netstat -aon ^| findstr ":%%b"') do ( set pid=%%m ...
java8之Stream
1. Stream介绍Stream不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的Iterator。原始版本的Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的Stream,用户只要给出需要对其包含的元素执行什么操作,比如,“过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream会隐式地在内部进行遍历,做出相应的数据转换。Stream就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了。在Java8 中增加了Stream API ,简化了串行或者并行的大批量的操作 。Stream中的数据元素可以是对象引用,或者基本数据类型的值: int long double
2. Stream的具体用法1. Stream 常用的创建方法 ***使用Collection下的 stream() 和 parallelStream() 方法***
1234567 List<String> list = new ArrayList<Str ...
mysql锁机制
1、MySQL锁的基本介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
从上述特点可见,很难笼统地说哪种锁更好,只能就具体应用的特点来 ...