自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 stream 这玩意出来之后估计复杂sql要下岗了

jdk8 真是颠覆的一个版本。除了搞了lamoda还有函数式接口以及方法引用这些好用的新玩意之外。还搞了一个stream。这个stream可不是之前什么文件stream iostream。这个stream我现在的理解主要是针对集合操作的。java里头哪些算集合。数组。list set map tree这些都算集合。说白了只要是多个的都算集合。在stream出来之前。基本我们操作这些数据结构。基本...

2019-05-09 11:42:45 892

原创 jdk8 方法引用 或者说双冒号

还是本着先学习的态度看看这个特性长什么样。然后看看到底代表了什么。一般用在什么地方。第一种 static方法的引用就是你如果有个类有个静态方法。你可以直接写ContainingClass::staticMethodName但是我有个疑问。这么写了之后。这个整体表示的是啥。如果照以前ContainingClass.staticMethodName也是可以调用啊。其实这就引出了一个问题。方法...

2019-04-30 14:45:45 643

原创 Lambda表达式 函数式接口 到底谁是谁

jdk8 搞了一个很大的语法更新。其中之一就是Lambda表达式。当然还有函数式接口这样的东西。说实话。刚开始内心是拒绝学习的。因为这么写很多时候你dubug的时候感觉很很无助。当然慢慢习惯的就好。但是到现在我对这两个概念还是模糊的。谁是谁的问题。我现在还没搞清楚。只能是先记录下来。当成学习笔记了。先看Lambda表达式我先讲Lambda表达式长什么样子。在我看来就是一个所谓的匿名函数。 就...

2019-04-29 14:16:42 342

原创 责任链模式

责任链模式 简单就是说 如果要根据某个条件处理多个不同的事情。如果正常让你来写代码。if else 或者各种case 语句就能搞定了。但是责任链模式觉得这样不好。耦合大。为了解耦。把各种真正else里头实际的处理者或者叫对象抽象出来。形成一个所谓的接口或者抽象类。这个抽象类有一个对象。这个处理对象的恰好是这个类同类型。这个接口还有一个抽象处理方法。这个方法也很诡异。一个简单的if else 。el...

2019-04-26 10:08:27 147

原创 观察者模式 事件驱动模型 傻傻分不清楚

说实话。没有写这篇文字之前。我以为这两者是同一个东西。因为从我的经验来讲。就是观察者,观察者,就是你要关注某个东西。关注某个东西的什么呢。肯定就是状态变化了。观察者模式就是就是某个类A状态变化了要及时通知到关注这个东西的一群类B。按照这个模式。就是类A里头要有一个list 存放类B。 然后A里头要有增加删除list的方法。还要有通知类B的方法。当然怎么通知呢。当然是调用B的一个方法。这样。就起到...

2019-04-25 10:14:54 1215

原创 模板方法模式template method

模板方法模式还是比较好理解的。大概是假如你做一件事 要分成 好几个步骤。也就是要定义好几个方法。然后这几个方法的顺序基本是固定的。只是少数方法在细节上有不同。这个时候模板方法就出来。 顾名思义。就是执行顺序固定抽象出来。也就是模板。然后具体细节通过再定义继承类再扩展。下面看例子对照定义 执行模板里头的方法是固定的。然后有差异部分定义成抽象方法。然后具体实现就是补充这个抽象方法总结如下1、...

2019-04-23 14:28:03 114

原创 数据库事务隔离级别 数据库事务的四大特性(简称ACID) 以及数据库事务的三大问题

首先讲概念 数据库隔离级别 四大特性或者脏读重复读幻读 这些名词 都是简称,都需要加上事务两个字。这个事务跟写代码的那个事务是同一个东西。如果没有数据库事务的概念。会出现很多问题。那究竟啥事数据库事务数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:a.为数据...

2019-04-15 13:52:48 236

原创 java异常 只看这一篇就够了

本文主要分三个部分。一个是jdk原始异常类。这个部分主要讲异常的基础。第二个部分高级篇主要还是讲是spring中的异常处理类。最后讲讲实际我对异常处理的思考。1.java所有异常的都是从java.lang.Throwable这个类 继承出来的。这个类基本处理完了所有异常应该处理的基础方法。她的两个一级子类Exception 跟Error 其实啥也没干。只是单独多出的一层。但是这么分出来是有意义的...

2019-04-09 16:04:46 1487

原创 volatile 只看一篇就够了

跟synchonized一样。主要讲这玩意能干啥,原理是什么,一般都怎么用1.这个关键字也是两个作用。 第一个能保证共享变量的可见性。 第二个是阻止指令重排序。上一篇讲synchonized 举了一个例子。 就是一个共享变量 在两个方法中。一个方法是修改。一个方法是读取。如何保证写的方法中修改了变量值,但是方法还没退出前方法切换到读方法让能读到修改的值。 当时用的是synchonized 强制...

2019-04-08 15:36:19 227

原创 synchronized 只看一篇就够了

这个关键字涉及的知识点比较多。这里准备从她的作用。她的使用。她的原理。以及她的兄弟姐妹四个方面来讲。首先她的作用。1.多线程同步里头作为 锁 能锁类。能索对象。能锁代码块2.在synchronized包含的代码块开头跟结尾的部分加入了共享变量的数据同步,我个人认为第二条才是为啥这个关键字起名的原因。为了同步嘛。至于如何同步在使用过程中一一解析先看常用锁的部分。修饰一个代码块,被修饰的...

2019-04-08 11:51:55 201

原创 并发三大特性 原子 有序 可见

1.原子性(Atomicity):一个操作不能被打断,要么全部执行完毕,要么不执行。java里头哪些语句是原子性的。真少。原子操作包括:1)除long和double之外的基本类型的赋值操作2)所有引用reference的赋值操作3)java.concurrent.Atomic.* 包中所有类的一切操作。看见没。只有赋值才是原子操作。什么加减。什么调用函数统统不算。都是有可能被打断的。最常...

2019-04-04 12:08:11 150

原创 JMM

首先要说JMM 是啥。为啥要关心JMM。JMM全程是java 内存 模型 ,说到底是讲一个java程序到底是如何分配内存的。不了解这个,后面的线程安全,后面的垃圾回收就没有理论基础了,更别说什么虚拟机优化了。java把内存分成了程序计数器(Program Counter Register)Java栈(VM Stack)本地方法栈(Native Method Stack)方法区(Met...

2019-04-04 10:22:34 145

原创 桥接模式 组合模式 门面模式

在写这个文章前,看到三个新概念,准确的说我是懵比的,妈呀写了这多年代码还有这么多模式都不会啊。不过看完之后我就想大骂一句,为了凑数量原作者真是脸都不要了。这三种模式基本你不懂都会不自觉的用上,就不要拿出来说了。先说桥接模式就是典型 has -a 模式。 对象有个属性。属性可扩展。谁还没用过可扩展的属性,spring里头全是注入了这个对象那个对象。再看看组合模式就是典型的 B has A ...

2019-04-03 10:49:25 189

原创 代理模式 jdk代理 cglib代理 spring aop代理

这里代理原理就不讲了因为基本估计你自己写代码是用不到的,除非你自己要整个框架来替代spring 。主要讲讲有哪些代理模式,以及spring的Aop动态代理规则。先讲结果,Aop的最大意义是:在不改变原来代码的前提下,也不对源代码做任何协议接口要求。而实现了类似插件的方式,来修改源代码,给源代码插入新的执行代码。有了这个,你可以实现自定义注解。实现通用方法打印日志。哪究竟啥是jdk代理呢,很简单...

2019-04-02 16:13:32 135

原创 装饰器模式decorator

这个模式还是属于结构模式。啥时候用呢。一般写代码都是定义一个接口,然后给一个默认实现就实现功能了。但是随着功能修改,要在原有impl上要新增一些调整。这个时候你会怎么做呢。直接改原impl的代码么。也许会。但是装饰器模式会新增一个装饰类。先看整个uml图。然后解释哪个才是装饰类首先Display是接口。StringDisplay是最早的实现。SideBorder才是装饰类。装饰模式一定是有了...

2019-04-02 11:22:43 180

原创 啥才是真正的适配器模式adapter之我见

网上有一篇搜索排在考前的讲适配器模式的帖子。把什么适配器分成三类,什么类适配,对象适配器,接口适配器。前2种情况的例子我觉得不够好。总感觉现实写代码不会那么去转换。靠谱的adapter模式应该是下面的模式就是当一个类就想实现一个接口或者多个接口中自己的需要的方法的时候。请使用adapter。先上类图比如你现在已经有了很多基层的细化的接口。现在想要只实现其中的某几个方法,在没有adapter的...

2019-04-02 09:49:51 153

原创 threadlocal强引用 弱应用 软引用 虚引用

有时候还是得服老外在编程方面的那种创造力,中国人哪怕是什么bat啊。还是别的什么互联网公司没弄出什么让你感觉的确是很让人惊艳的东西。国内这批开源你看了源码就如同看了中国制造。基本是在别人的基础上组合加工。吐槽就到这里,还是先开始说这个threadlocal这个类。一般一个类的属性变量按照java内存模型的设计都属于共享内存。一旦涉及多线程编程。对这个变量的修改读取基本都是线程不安全。当然要想安...

2019-04-01 12:02:01 2212 1

原创 单例模式

1.恶汉1号很少这么写。2.懒汉2号还是很少这么写3.懒汉1号多线程有事。单线程没事4.懒汉2号虽然加了sync标识,但是还是无法保证多线程没事5.懒汉3号双重检测同步代码中再加一个 if else 。同时加上volatile 防止 singleton=new singleton();这一句指令重排序。安全singleton=new singleton(); ...

2019-03-29 13:44:45 108

原创 享元模式

我理解的所谓的享元的模式就是 缓存如果这个对象不在缓存里头就创建。有的话就用缓存的。跟单例模式有点像,但是注意看实现手法,跟类的结构。这个共享对象是通过放到一个map中,如果key不同,或者计算key的方式不同是可以产生多个对象的。单例可是从头到尾只有一个对象产出。这里插入一点题外话 就是 jdk1.8里头的 ConcurrentHashMap的两个方法computeIfAbsent 跟...

2019-03-29 13:38:49 113

原创 原型模式 clone 浅拷贝 深拷贝

原型模式 就是实现对象的拷贝。 也就是实现Cloneable接口。先说Cloneable接口。空接口。是不是很意外。没有要实现的方法。那怎么实现拷贝呢。原来在Object类里头已经有方法了。只不过默认是不让用。一用就抛出异常。除非你实现了Cloneable,最后实现就是下面。是不是很简单但是重载方法的时候,发现居然只是调用了super.clone() 但是父类方法是空的啊。注意看父类方...

2019-03-29 10:14:33 170

原创 建造者模式 builder模式

先来一种貌似很多人文章里头弄的比较复杂的这里首先有最终产品Man 然后有构造过程接口ManBuilder跟具体实现ManBuilderImp 。还有一个官方定义指挥官ManDirector,实际建造过程都是通过ManDirector调用构造方法完成Man的构造。这个模式扩展性好 ,新增一种Man。就多加一个ManBuilder实现,最后用的时候通过给Director传不同的builder实...

2019-03-28 11:25:43 102

原创 简单工厂 工厂方法 抽象工厂

1.简单工厂 三种分类的uml模型图一个接口 不同的实现 ,对象生成时机都是在工厂类中。。 根据调用生成方法的不同模式。分成了普通,方法跟静态方法可以看出。要增加一个接口实现的时候。需要新增一个实现类。同时改工厂类。最差的是普通简单工厂。要update原来的getMouse方法。 对于方法跟静态方法来说,需要在工厂类add一个方法getXXXMouse,但是都是要对原有代码有入侵。2....

2019-03-27 13:43:04 128

转载 设计模式或者说面向对象的6大基本原则

设计模式基本原则先说为啥写这篇。没法子。这种理论东西居然成为了面试的考题,只能说明中国有些东西跑偏了。但是没法子。社会风气如此,面对这种问题,你只能跟皇帝的新衣里头那群大人一样,不能说不好看。回到正题,我先说说这6个基本原则是啥1、单一职责原则(Single Responsibility Principle)定义 : 应该有且只有一个原因引起类的变化这种原则从字面意思看上去好像无比正确,...

2019-03-26 14:08:05 116

原创 hashcode equals ==

hashcode equals ==equals() 的作用是 用来判断两个对象是否相等。equals() 定义在JDK的Object.java中。通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等。源码如下:public boolean equals(Object obj) {return (this == obj);}== : 它的作用是判断两个对象的地址...

2019-03-26 10:40:03 111

空空如也

空空如也

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

TA关注的人

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