-
yexindonglai@163.com
2022-03-01 11:52
设计模式
904°
0
建造者模式原话:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示;其实就是将一个对象详细化,比如把人分为美国人、日本人、中国人、韩国人、非洲人,每一种人都有不同的肤色、身高、头部特征;其实仔细看,建造者模式和工厂模式很像,很多人将这2者傻傻分不清楚,其实,工厂模式创建的是单个类,而建造者模式是将一个类型的东西集中起来进行管理,比如人类,它的里面会有很多分类: 1、黑皮肤、大高个、做事拖拉懒散,将这三者结合起来就成为一个类型:黑人; 2、黄皮肤、个子纤瘦、做事严谨、严丝合缝,将这四者结合起来就成为一个类型:日本人; 像肯德基或者麦当劳里面的套餐,将汉堡、可乐、奶
-
yexindonglai@163.com
2022-03-01 11:52
设计模式
919°
0
模板方法模式原文介绍 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。 这原文乍一看是不是特抽象?这特么说的都是啥玩意,这也太抽象了吧,我相信只要是一个正常受过九年义务教育的人都看不懂这说的啥,不过呢,今天这篇文章就是帮助大家彻底理解这个东东的;模板方法通俗地讲,其实就是先定义一个抽象方法,将相同的逻辑放在抽象类里面,将不同的逻辑由子类实现, 模板方法使用场景实现一些操作时,整体部分是固定的,但是其中一小部分容易变,这个时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现,模板方法的具
-
yexindonglai@163.com
2022-03-01 11:51
idea
1119°
0
在查看jdk或者其他框架源码并且在调试模式的时候,我们会经常看到很多的代码都是在一起的,有可能一行代码里面就调用到了好几个函数,那么如果我们想要运行其中一个方法的时候,想要得到某个方法的结果时,就觉得有些困难了,比如下面的代码,我只要要得到add方法的结果,而不是直接打印结果;想要得到add方法的结果其实很简单,而且idea也给我们提供了这样的方法;1、首先,先选中你想要执行的方法;然后右击;2、右击后会弹出一系列的选项,我们选择EvaluateExpression...3、这时候会弹出一个窗口,选择最下面的 Evaluate按钮后,即可得出结果;、 怎么样?是不是很简单呢?赶快试试吧!!
-
yexindonglai@163.com
2022-03-01 11:50
Java
698°
0
ReentrantLock锁是一个轻量级锁,底层其实就是用自旋锁实现的,lock锁不依赖操作系统,而是使用java实现的锁,当我们调用lock方法的时候,在内部其实调用了Sync.lock()方法,而Sync继承了AbstractQueuedSynchronizer,简称AQS,所以在底层调用的其实是AQS的lock()方法; ReentrantLock和synchronized不同的是,synchronized在jdk1.5以前是一把很重的锁,每次使用时都需要向操作系统申请,所以会耗费很大的资源,且效率不高,但ReentrantLock的底层是由cas实现的,cas本身是自旋锁,也叫
-
yexindonglai@163.com
2022-03-01 11:44
Java
713°
0
synchronized在jdk1.6以前(不包括1.6)是一把很重的锁,每次使用锁的时候都是直接向操作系统请求的,所以效率低,且占资源,所以在jdk1.6以后,加入了锁升级的功能, 锁升级过程单线程的时候用偏向锁就够了,如果有两个线程了,会升级成轻量级锁(自旋锁、cas),如果线程很多的情况下,就会再次升级为重量级锁; 偏向锁 首先,偏向锁不是一把锁,而是一个标签,一个标识符,特别轻的一把锁,比轻量级锁还轻,轻到什么程度呢?就是无锁;可见这有多轻;偏向锁的概念就是偏向某个线程,使某个线程优先使用; 在大多数情况下,我们运行程序的时候都是只有一个线程的,当我们运行了只有一个线程的synch
-
yexindonglai@163.com
2022-03-01 11:42
Spring
930°
0
什么是传播行为? 默认情况下,只有一个事务,所有的修改操作都在一个事务里面,要么一起提交,要么一起回滚,这没什么问题。但要是有2个或者2个事务以上该如何解决呢? 既然是传播,那么至少要有2个东西,才可以传播,我传给你或者你传给我,才叫传播,单体不存在传播这个行为; 事务传播行为,指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。比如说,A事务方法调用了B事务方法,B是继续在调用者A的事务中运行呢?还是为自己另开一个新事物运行?这就是由B的事务传播行为决定的。spring事务传播行为一共有7种:(前言:当前事务指的是调用者自带的事务,A调用B,那么A就是当前事务)REQU
-
yexindonglai@163.com
2022-03-01 11:41
设计模式
1001°
0
适配器的定义 首先我们先要了解一下什么是适配器,以及适配器能干什么。下面的这2个东东大家都见过吧?是不是人手一个,不对,是每人都有好几个;这个东东就叫做电源适配器,在这个电源的内部经过了一层转换,把市电220V(单位:伏)的交流电转为手机能识别的5V(单位:伏)直流电 ; 我们在来看看下面这个东东,都见过吧,没错了,这就是type-c转耳机接口,因为我们的耳机大多都是3.5毫米直径的圆孔插口,但是现在大多手机都没这个接口了,所以要用耳机就得经过一层转换;当然了,还有下面的这些东东都叫适配器;也叫转接器、转换器都可以; 适配器流程说白了。适配器就是起到一个转换的作用,
-
yexindonglai@163.com
2022-03-01 11:38
设计模式
951°
0
为什么需要外观模式? 先举个例子,就拿我自己来讲,当程序员多年了,攒了一些小钱,现在年过35,被市场淘汰了,于是呢,衣锦还乡,回到老家想盖一座房子,如果让我自己来盖,是不是就很费事,我得去买造房子需要的材料,钢筋、混凝土、还得请工人,如果这些事情如果都是我来做的话,这实在是太麻烦了,有没有人能够帮我做这件事呢?就是有一个人帮我把上面的事情都做了,这样我就省心了;那么这时候我就可以找个包工头,付钱给他就好了,他会直接帮我把房子建好,我只要坐着看电视等他建好就行了!外观模式的概念 其实非常好理解,在程序的层面,就是做了一层封装,基于面向对象的封装概念,我把底层的功能都实现好了,你只需要调
-
yexindonglai@163.com
2022-03-01 11:37
设计模式
979°
0
什么是策略模式? 策略模式是有多个选择,每个选择都是一种策略,就像面向对象的一个特性:多态。就拿出行来说,比如我想从深圳去到北京,有多种出行方式供我选择:飞机、高铁、汽车;每种选择方式都有自己的特点;策略模式的原介绍是:定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换,在代码中更多的使用来表示算法的策略,比如我们GC垃圾回收算法中就用到了策略模式首先,算法是一个接口,所有的策略都是算法的实现类,实现不同的功能,这中间还有一个上下文Context;Context是上下文角色,也叫Context封装角色,起承上启下的作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变
-
yexindonglai@163.com
2022-03-01 11:36
Spring
889°
0
@Autowired和@Resource注解的最大区别就是@Autowired默认是以类型type(全类名)装配的,@Resource默认是以名称id(byName)装配的@Resource @Resource是java自带的注解,使用方式,在属性上面加上@Resource注解后,spring默认会在ioc容器里面寻找name为testController的bean,如果找不到则直接报错,我们看到的默认注入方式是这样的@ResourceprivateTestControllertestController;其实它内部是这样的@Resource(name="testController")p