自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习笔记【JavaWeb-第一节:HTML标签】

WebJavaWeb使用Java语言开发基于互联网的项目。软件架构C/S:Client/Server 客户端/服务器端在用户本地有一个客户端程序,在远程有一个服务器端程序优点:用户体验好缺点:开发、安装、部署、维护麻烦。B/S:Browser/Server 浏览器/服务器端只需要一个浏览去,用户通过不同的网址(URL),客户访问不同的服务器端程序优点:开发、安装、部署、维护麻烦。(相对而言)缺点:如果应用过大,用户的体验可能受到影响;对硬件要求过高。B/S两种资源Ser

2020-12-31 20:14:24 153

原创 学习笔记【JDBC简单基础-第二节:数据库连接池 与 JDBC Template】

数据库连接池其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容其中获取连接对象,用户访问之后,会将连接对象归还给容器。好处:节约资源用户访问高效实现:标准接口DataSource javax.sql包下的方法:获取连接:getConnection()归还连接:如果连接对象Connection是从数据库连接池值获取的,那么调用Connection.close()方法,则不会再关闭连接,而是归还连接了。

2020-12-27 19:16:21 178

原创 学习笔记【JDBC简单基础-第一节:JDBC快速入门】

JDBC概念:Java Database Connectivity Java数据库连接,Java语言操作数据库本质: Java官方(SUN)定义了一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。快速入门:步骤:导入驱动jar包注册驱动获取数据库连接对象 Connection定义sql获取执行sql语句的对象 Statement执行sql,接受返回结果处理结果

2020-12-26 22:36:34 85

原创 学习笔记【MySQL基础操作-第六节:DCL 管理用户与授权】

DCL管理用户创建用户:CREATE USER '用户名'@ '主机名' IDENTIFIED CREATE BY '密码';删除用户:DROP USER '用户名'@'主机名';修改用户密码:①UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER ='用户名'; ②SET PASSWORD FOR '用户名'@ '主机名'=PASSWORD('新密码');mysql中忘记了root用户的密码管理员cmd–> ne

2020-12-25 22:29:04 101

原创 学习笔记【MySQL基础操作-第五节:多表查询 与 事务】

多表查询查询语法:select * from 表1,表2;查询出的表的行数为笛卡尔积的数量,即两张表的信息的组合数,但这会出现一些问题,如:所以需要消除无用的。多表查询的分类内连接查询、外连接查询、子查询内连接查询隐式内连接:使用where,如:select * from 表1,表2 where 表1.'emp_id'=表2.'id';显式内连接:语法:select 字段列表from 表名1inner join --inner可省略 表名2on 条件

2020-12-25 19:51:42 119

原创 学习笔记【MySQL基础操作-第四节:备份与还原】

数据库的备份和还原命令行的方式语法:备份:mysqldump -u用户名 -p密码 要备份的数据库名称> 保存的路径 还原:登录数据库创建数据库使用数据库执行文件。source 文件路径

2020-12-25 16:52:20 83 1

原创 学习笔记【MySQL基础操作-第三节:数据库的设计(范式)】

数据库的设计多表之间的关系一对一: 如人和身份证,一个人对一个身份证,一个身份证对一个人。一对多(多对一): 如部门和员工,一个部门对多个员工,一个员工对一个部门。多对多: 学生和课程,一个学生可以选多个课程,一个课程可被多个学生选择。实现关系一对多(多对一): 在多的一方建立外键,指向一的一方的主键。多对多: 需要借助第三张中间表,中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键。一对一: 在任意一方添加唯一约束的外键,指向另一方的主键。不过一般都放在一张表

2020-12-25 11:54:22 99

原创 学习笔记【MySQL基础操作-第二节:约束】

约束对表中的数据进行限定,保证数据的正确性、有效性和完整性。分类主键约束:primary key非空约束:not null唯一约束:unique外键约束:foreign key非空约束 not null值不能为空。创建表时添加非空约束:CREATE TABLE students02( id INT, NAME VARCHAR(20) NOT NULL);创建表后添加非空约束:ALTER TABLE students02 MODIFY NAME VARCHAR(20) N

2020-12-24 23:10:01 201 1

原创 学习笔记【MySQL基础操作-第一节:MySQL基本操作】

数据库:DataBase;简称DB。用于存储和管理数据的仓库。数据库的特点:持久化存储数据的。其实DB就是一个文件系统。方便存储和管理数据。使用了统一的方式操作数据库–SQL。数据库的种类:MySQL:开源免费的数据库,小型的数据库,已经被Oracle收购了MySQL6.x开始收费。Oracle:收费的大型数据库。DB2:IBM公司的数据库产品,收费的。长应用在银行系统中。SQLServer:MicroSoft公司收费的中兴的数据库。C#、net等语言常使用。-等等…MySQL

2020-12-24 18:46:32 172

原创 学习笔记【23种设计模式-第二十三节:Chain of Responsibility Pattern 职责链模式】

Chain of Responsibility Pattern 职责链模式简述职责链模式又叫责任链模式,为请求创建一个接收者对象的链(简单示意图)。这种模式对请求的发送者和接收者进行解耦。职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,以此类推。这种类型的设计模式属于行为型模式。角色Handler:抽象的处理者,定义了一个处理请求的接口,同时包含另一个HandlerConcreteHandlerA、B:是具体的处理者,

2020-12-19 19:39:00 84 1

原创 学习笔记【23种设计模式-第二十二节:Strategy Pattern 策略模式】

Strategy Pattern 策略模式简述:策略模式中,定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。这算法体现了几个设计原则:① 把变化的代码从不变的代码中分离出来;② 针对接口编程而不是具体类(定义了策略接口);③多用组合/聚合,少用继承(客户通过组合方式使用策略)。角色Context类有成员变量strategy或其他的策略接口,至于需要使用到哪个策略,我们可以在构造器中指定。例子鸭子:有玩具鸭、北京鸭和野生鸭,所有鸭子都能有用,但并

2020-12-19 12:36:57 71 1

原创 学习笔记【23种设计模式-第二十一节:State Pattern 状态模式】

State Pattern 状态模式简述状态模式:主要用于解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为一一对应的,状态之间可以互相转换。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。角色State:是抽象状态角色,定义一个接口封装与Context的一个特点接口相关行为。ConcreteState:具体的状态角色,每个子类实现一个与Context的一个状态相关行为Context:为环境角色,用于维护State实例,这个实例定义当前状态。

2020-12-18 23:19:57 74 1

原创 学习笔记【23种设计模式-第二十节:Interpreter Pattern解释器模式】

Interpreter Pattern 解释器模式简述在编译原理中,一个算术表达式通过词法分析器形成此法单元,而后这些词法大院再通过语法分析器构建语法分析树,最终形成一棵抽象的语法分析树。这里的语法分析器和词法分析器都可以看作是解释器。解释器模式:是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个计时器,使用该解释器来解释语言中的句子(表达式)。应用场景:一、应用可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。二、一些重复出现的问题可以用一种简单的语言来表达。三、一个简单语法

2020-12-18 21:09:50 79 1

原创 学习笔记【23种设计模式-第十九节:Memento Pattern 备忘录模式】

Memento Pattern 备忘录模式简述备忘录模式在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同的意见的事情,以防忘记。在软件层面,备忘录模式有着相同的意义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作。备忘录模式属于行为型模式。角色Originator

2020-12-18 19:51:21 85 1

原创 学习笔记【23种设计模式-第十八节:Mediator Pattern 中介者模式】

Mediator Pattern 中介者模式简述:中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式属于行为型模式,使代码易于维护比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用。角色Mediator就是抽象中介者,它定义了同事对象到中介者对象的接口Colleague 是抽象同事类ConcreteMedi

2020-12-18 18:35:41 83 1

原创 学习笔记【23种设计模式-第十七节:Observe 观察者模式】

Observe 观察者模式简述:观察者模式类似于订牛奶业务:① 奶站:Subject;② 用户:Observer。Subject:登记注册、移除和通知:①registerObserver 注册;② removeObserver 移除; ③ notifyObservers 通知所有的注册用户,根据不同需求,可以是更新数据,让用户来取,也可以是实施推送,看具体需求定。Observer:接受输入观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,S

2020-12-18 16:41:31 114 2

原创 学习笔记【23种设计模式-第十六节:Iterator Pattern 迭代器模式】

Iterator Pattern 迭代器模式简述:迭代器模式是常用的设计模式,属于行为型模式如果我们的集合元素使用不同的方式实现的,有数组,还有java的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。迭代器模式,提供一种遍历集合元素的统一接口,用一只的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。角色Iterator:迭代器接口,是系统提供的ConcreteIterator

2020-12-18 15:40:12 63

原创 学习笔记【23种设计模式-第十五节:Visitor Pattern 访问者模式】

Visitor Pattern 访问者模式简述:访问者模式,封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。主要将数据结构和数据操作分离,解决数据结构和操作耦合性问题。访问者模式的基本工作原理是: 在被访问的类里面加一个对外提供接待访问者的接口访问者模式主要应用场景是: 需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联),同时需要避免让这些操作污染这些对象的类,可以选用访问者模式解决。角色Visitor 是抽象的访问者

2020-12-18 09:55:30 68

原创 学习笔记【23种设计模式-第十四节:Command Pattern 命令模式】

Command Pattern 命令模式简述命令模式,在软件设计中,我们经常需要向欧协对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计命令模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。在明明模式中,会将一个请求封装为一个对象,以便使用不同参数来表示不同的请求(即命名),同时命令模式也支持可撤销的操作。通俗易懂的理解:将军发布命令,士兵去执行。其中有几个

2020-12-17 21:33:33 88

原创 学习笔记【23种设计模式-第十三节:Template Method Pattern模板方法模式】

Template Method Pattern模板方法模式简述:模板方法模式,又叫模板模式,在一个抽象类公开定义了执行他的方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说,模板方法模式定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定的步骤。属于行为型模式。角色AbstractClass抽象类,类中实现了模板方法,定义了算法的股价,具体子类需要去实现,其他抽象方法operation2、3

2020-12-17 17:59:17 122

原创 学习笔记【23种设计模式-第十二节:Proxy代理模式】

Proxy代理模式简述:代理模式:为一个对象提供一个替身,以控制对这个对象的访问,即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,及扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象和需要安全控制的对象代理模式有不同的形式,主要有三种:静态代理、动态代理(JDK代理、接口代理)和Cglic代理(可以在内存动态的创建对象,而不需要实现接口,属于动态代理的范畴)。静态代理在使用时,需要定义接口或者弗雷,被代理对象(即目标对象)与代理对象

2020-12-17 15:37:10 82

原创 学习笔记【23种设计模式-第十一节:Flyweight Pattern 享元模式】

Flyweight Pattern 享元模式简述:享元模式也叫蝇量模式:运用共享技术有效的支持大量粒子度的对象。常用于系统底层的开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中由我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个。享元模式能够解决重复对象的内存浪费问题,当系统中有大量相似的对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。享元模式经典的应用场景就是池技术,String常量池、数据库连接池、缓冲池等等都是享元模式的应用

2020-12-16 22:43:01 77

原创 学习笔记【23种设计模式-第十节:Facade外观模式】

Facade外观模式简述:外观模式,也叫做过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。外观类(Facade)为调用端提供统一的调用决口,外观类知道那些子系统负责处理请求,从而将调用端的请求代理给适当的子系统对象。例子:影院管理:有很多设备的类,用了单例饿汉模式,给每个设备设一些方法。设置一个H

2020-12-16 21:21:39 105

原创 学习笔记【23种设计模式-第九节:Composite Pattern组合模式】

Composite Pattern组合模式简述:组合模式,又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示"整体-部分"的层次关系。组合模式一句树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式。组合模式使得用户对单个对象和组合对象的访问具有一致性,即组合能让客户以一致的方式处理个别对象以及组合对象。例子编写程序展示一个学校院系结构:要在一个页面中展示出学校的院系组成,一个学校有很多学院,一个学院有很多系。有一个OrganizationC

2020-12-16 20:03:38 95

原创 学习笔记【23种设计模式-第八节:Decorator装饰者模式】

Decorator装饰者模式简述:装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,他比继承更有弹性,装饰者模式也体现了开闭原则(ocp)。装饰者模式就像打包一个快递,有主体(被装饰者Component),有包装(Decorator)Decorator继承Component(抽象),还传入了Component属性。例子咖啡问题:各种coffee类继承Coffee类(缓冲类),Coffee类继承抽象类Drink。Decorator(装饰类)继承和组合了Drink,下面有很多调料继承

2020-12-16 18:48:58 86

原创 学习笔记【23种设计模式-第七节:Bridge桥接模式】

Bridge桥接模式简述:桥接模式是指:将实现与楚向放在两个不同的类层次中,使两个层次可以独立改变。是一种结构性设计模式Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。例子:有一个接口Brand,有open,close,call三个方法,底下是品牌实现它,并重写了他的方法,有一个抽象类Phone,传入

2020-12-16 17:15:24 100

原创 学习笔记【23种设计模式-第六节:Adapter Pattern适配器模式】

Adapter Pattern适配器模式简述:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。适配器模式属于构造型模式。主要分为三类:适配器模式、对象适配器模式、接口适配器模式。工作原理适配器模式:将一个类的接口转换成另一种接口,让原本接口不兼容的类可以兼容。从用户的角度看不到被适配者,是解耦的。用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法。用

2020-12-16 15:08:14 67

原创 学习笔记【23种设计模式-第五节:建造者模式】

建造者模式简述:建造者模式又叫生成器模式 ,是一种对象构建模式,它可以将复杂的建造过程抽象出来,使这个抽象过程的不同实现方式可以构造出不同表现(属性)的对象。建造者模式 使一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建他们,用户不需要知道内部的具体构造细节。建造者模式的四个角色Product(产品角色) :一个具体的产品对象。Builder (抽象建造者) :创建一个Product对象的各个部件指定的接口。ConcreteBuilder(具体建造者) :实

2020-12-15 19:50:34 87 1

原创 学习笔记【23种设计模式-第四节:Prototype原型模式 -克隆羊、深浅拷贝】

Prototype原型模式简述:原型模式(Prototype模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。原型模式是一种创建型设计模式,允许一个对象再创建另一个可定制的对象,无需知道如何创建的细节。工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即对象.clone()形象的理解:孙悟空拔出猴毛,变出其他孙猴子。例子:克隆羊:Sheep类实现了Cloneable接口,重写了clone方法:p

2020-12-15 18:11:57 117

原创 学习笔记【23种设计模式-第三节:工厂模式--简单工厂、工厂方法、抽象工厂】

工厂模式简单工厂模式简述:简单工厂模式属于创建型模式,是工厂模式的一种,简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式。简单工厂模式:定义一个创建对象的类,有这个类来封装实例化对象的行为。在软件开发中,当我们会用到大量的创建某种、某类或者某对象时,就会使用到工厂模式。Pizza类:public abstract class PizzaTest { protected String name; public abstr

2020-12-15 14:43:33 104

原创 学习笔记【23种设计模式-第二节:Singleton单例模式】

Singleton(单例)饿汉式类加载到内存后,就实例一个单例,JVM保证线程安全。简单实用!推荐使用!唯一缺点:不管用到与否,类装载时都会完成实例化public class Test01 { private static final Test01 INSTANCE=new Test01(); /*private static final Test01 INSTANCE; static {INSTANCE=new Test01();}*/ private Tes

2020-12-14 23:35:33 112

原创 学习笔记【23种设计模式-第一节:设计模式的七大原则及初步了解UML】

设计模式常用的七大原则:单一职责原则接口隔离原则依赖倒转原则里氏替换原则开闭原则ocp迪米特原则合成复用原则

2020-12-14 20:42:25 195

原创 学习笔记【多线程-第十三节:ConcurrentHashMap】

ConcurrentHashMap的数据结构(数组+链表+红黑树),桶中的结构可能是链表,也可能是红黑树,红黑树是为了提高查找效率。其实现了Serializable接口表示ConcurrentHashMap可以被序列化。ConcurrentHashMap和HashMap相比,还添加了Unsafe实例,主要用于反射获取对象相应的字段。主要的类Node类  Node类主要用于存储具体键值对,其子类有ForwardingNode、ReservationNode、TreeNode和TreeBin四个子类。四

2020-12-13 17:50:01 401

原创 学习笔记【多线程-第十二节:AQS】

AQS(Abstract Queued Synchronizer)抽象的队列的同步器,AQS定义了一套多线程访问共享资源的同步器,很多同步类底层都是它,如ReentrantLock、Semaphore、CountDownLatch…。拿ReentrantLock的lock()举例:以上为它的底层调用图,我们可以看到,最底层AQS的acquire()方法调用的是子类重写的tryAcquire()方法,而未用自己的tryAcquire()方法,自己的tryAcquire()方法是为了给子类重写的,这其实

2020-12-13 17:45:20 183

原创 学习笔记【多线程-第十节:ReentrantLock可重入锁】

ReentrantLock可以替代synchronized(Lock lock=new ReentrantLock();),底层是CAS。在原来synchronized(this) 的地方加 lock.lock();,而且必须用lock.unlock();进行解锁,解锁必须写在finally里面以保证解锁。1、可使用tryLock尝试锁定boolean locked = false;try{ locked = lock.tryLock(5,TimeUnit.SECONDS); System.ou

2020-12-12 21:35:59 114 1

原创 学习笔记【多线程-第十一节:JUC Tools】

1、CountDownLatch(倒数门栓)private static void usingCountDownLatch(){ Thread[] threads=new Thread[100]; CountDownLatch latch=new CountDownLatch(threads.length); for (int i=0;i<threads.length;i++){ threads[i]=new Thread((

2020-12-12 21:35:02 243

原创 学习笔记【多线程-第九节:线程池】

线程也叫轻量级进程LWP(Light Weight Process)两种线程模型用户级线程ULT:用户程序实现,不依赖操作系统核心,应用提供创建,同步,调度和管理线程的函数来控制用户线程;不许用户态/内核态切换,速度快;内核对ULT无感知,线程阻塞及进程阻塞。内核级线程KLT:系统内核管理线程,内核保存线程的状态和上下文信息,线程阻塞不会引起进程阻塞。在多处理器系统上,多线程在多处理器上并行运行。线程的创建、调度和管理由内核完成,效率比ULT慢,比进程操作快。Java用的时KLT线程模型。UL

2020-12-11 14:52:57 143

原创 学习笔记【多线程-第八节:volatile个人详解】

其实说volatile,个人觉得比synchronized简单多了,他并不是一个锁,只是一个可以修饰的关键字,作用就两个:可见性与禁止指令重排序。可见性与禁止指令重排序我们先来看一个简单的例子:public class NowTest { private static boolean temp=true; public static void main(String[] args) { new Thread(()->{ while(temp

2020-12-10 19:21:57 107

原创 学习笔记【多线程-第七节:synchronized锁优化、Thread Local及Cache Line】

回顾在上一节,我们提到了synchronized的一些底层实现,这节我们把剩下的说一说。java代码: synchronized字节码中: 有ACC_SYNCHRONIZED这么一个标志,后面有monitorenter和monitorexit。在汇编信息中: 有lock cmpxchg的字样,也就是说,其实synchronized的底层,也是靠lock 与CAS实现的。对象在内存中的储存分布在讲synchronized前需要先说一下储存分布等Class Pointer(类型

2020-12-10 15:31:47 316 2

原创 学习笔记【多线程-第六节:JMM简图 及 synchronized的特性】

在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系,这里提到的两个操作既可以是在一个线程之内,也可以是在不同线程之间。两个操作之间具有happens-before关系,并不意味着前一个操作必须要在后一个操作之前执行,happens-before仅仅要求前一个操作(执行的结果)对后一个操作可见,且前一个操作按顺序排在第二个操作之前。

2020-12-08 21:25:37 157

空空如也

空空如也

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

TA关注的人

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