技术文章
文章平均质量分 81
Lucky丶钉钉
这个作者很懒,什么都没留下…
展开
-
一文看懂LongAdder原理
前面介绍了Java中的一些原子类,但是基本都是通过CAS来实现原子性操作,白白浪费CPU资源。JDK8中新增了一个原子性递增或者递减类LongAdder用来克服高并发下使用AtomicLong的缺点。LongAdder的思路是把一个变量分解为多个变量,让同样多的线程去竞争多个资源。如图所示:使用LongAdder时,内部维护了多个Cell变量,每个Cell里面有一个初始值为0的long型变量,这样同时争取一个变量的线程就变少了,而是分散成对多个变量的竞争,减少了失败次数。如果竞争某个Cell变.转载 2021-09-17 10:00:24 · 2709 阅读 · 0 评论 -
设计模式(四)之模板方法模式
[设计模式(三)之抽象工厂模式](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 评论 -
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 评论 -
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 评论 -
Java基础语法总结
Java基础语法计算机基础1.什么是二进制?二进制数只包含0和1,每一个0或者1都是一个bit(位)。我们常用的十进制如何转换成二进制:2.什么是字节?我们知道计算机中的数据都是由1或者0组成,每个0或1都是一个bit,每8个bit就是一个字节(byte)。字节是数据存储的最小单位。1 TB = 1024 GB---->1 GB = 1024 MB ---->1 MB...原创 2019-07-02 09:11:24 · 698 阅读 · 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 评论 -
Spring基础篇
Spring基础spring容器是什么?用于管理对象的如何启动spring容器?1.导包2.添加配置文件 这个配置文件用于告诉spring容器创建哪些对象如何创建对象?(如何让容器帮我们创建对象?).方式一:使用无参构造器(重点)第一步:给类添加无参构造器.第二步:在配置文件中配置bean元素.第三步:调用容器的getBean方法来获得对象.方式二:使用静态工厂方法(使用较...原创 2019-03-19 18:28:27 · 185 阅读 · 0 评论