copyonwritearraylist与copyonwritearrayset详解-编程思维

  【1】CopyOnWrite容器是基于并发模式Copy-on-Write模式(最简单的并发解决方案)实现的用于避免共享的数据集合。   【2】CopyOnWrite容器又被成为写时复制的容器,即当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对C

计算机基础-编程思维

1.计算机的组成,包括硬件和软件。 2.冯·诺依曼体系: 输入设备--存储器(运算器,控制器)--输出设备 3.快捷键,功能键: Tab:切换菜单,空出四格。 Shift:上面的符号。 Ctrl+Shift:改变输入法。 Ctrl+C:复制;+V:粘贴;+A全选;+X:剪切;+Z:撤销;+S:保存。 Alt+F4:关闭窗口。 Ctrl+Shift+ESN:打开任务管理器。 Shift+Dele

注释符,关键字,标识符。-编程思维

1.  注释符 a./    /单行注释符 b./*      */多行注释符 c./**      */文档注释符 2. 关键字(不能做标识符) abstract byte volatile const while try null this char void new static super double break for final implements false

注解实现:判空赋值-编程思维

工作中的小玩意~~ 流程: 注解实现 反射工具类 注解定义及实现 注解定义: @Documented @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface CheckParam { String value() default "-1"; } 简单解释上述其相关注解 Targ

java循环标签-编程思维

大家是否见过这种for循环,在for循环前加了个标记的: outerLoop: for (; ; ) { for (; ; ) { break outerLoop; } } 我之前有一次在公司业务代码中见过有这种写法的,没在意,今天在看JDK线程池的代码时,又看到ThreadPoolExecutor的addWorker方法中有这种写法。于是就查了相关资料,也比较

java8 stream流的合并-编程思维

最近的需求里有这样一个场景,要校验一个集合中每个对象的多个Id的有效性。比如一个Customer对象,有3个Id:id1,id2,id3,要把这些Id全部取出来,然后去数据库里查询它是否存在。 @Data @AllArgsConstructor public class Customer { private String name; private String id1;

2.java入门基础知识-编程思维

数据类型: java的数据类型分为两大类:基本类型和引用类型 基本类型: 整数类型: byte 一个字节 -128-127 short 2个字节 32768-32767 int 4个字节 很大 long 8个字节 巨大 用long的时候赋值要在数字后加 L 扩展: public class HelloWorld { public st

3.1 java方法:-编程思维

JAVA方法: 何为方法 方法是语句的集合,这个集合执行一个功能 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 java全是值传递 方法的定义和调用 方法的定义: 修饰符 返回类型 方法名(参数类型 参数){ 方法体 return 返回值; } 修饰符(可选):告诉编译器如何调用该方法 返回值类型:方法可能会返回值;无返回值的方法用void 方法名:开头小

3.2 构造器、this、包机制、访问修饰符、封装-编程思维

构造器 构造器:在实例化的一个对象的时候会给对象赋予初始值,因此我们可以通过修改构造器,来改变对象的初始值,构造器是完成对象的初始化,并不是创建对象 我们也可以创建多个构造器实现不同的初始化,即构造器的重载 默认初始化: 数字: 整形是0 浮点型是0.0 char:u0000 boolean:false 引用: null 一个类即使什么也不写,它的class文件也会自带一个构造方法,这个

3.3 继承-编程思维

继承的原理: 继承用于解决代码复用性 继承的本质就是对某一批类的抽象,即取一批类的共同有的属性和方法组成一个父类;继承也是类和类之间的一种关系 继承通过在类名后面加上extends +父类名 来实现, 也就是子类是父类的扩展 子类继承了父类就会拥有父类的全部方法和属性 前提是,父类的方法和属性修饰符是public 修饰符的优先级: public 最高的,继承一般用这个 protec

3.4 多态-编程思维

多态 多态的基础: 多态可以解决代码的复用性不高,不利于代码维护的问题 多态只能用于方法的多态,不能用于属性的 多态是建立在封装和继承的基础之上的 多态也叫多种状态,指方法或对象具有多种状态;多态能体现在以下这几个方面: 方法重载的多态 public class Demo01 { public static void main(String[] args) { A

从new file("")到jdk源码-编程思维

1. 概述 今天在项目中看到下面两行代码,看注释说是获取当前工作路径,之前也没有用过这种用法,比较好奇还能这样用,所以研究了一下源码。 //获取当前工作路径 File file = new File(""); String currentWorkDirectory = file.getAbsolutePath(); 2. new File("")解析 首先,new File()是创建一个虚拟的

jmm(java内存模型)是什么?为什么使用并发?-编程思维

1、计算机   首先我们需要讲解下计算机的模型:现代计算机模型是基于-冯诺依曼计算机模型   我们不用管输入和输出设备,最主要的就是中间计算器和存储器之间的交互,也就是CPU与主内存之间取数、存数。   大家会看到有一个IO总线在进行数据的流通,所以CPU与此磁盘的交互也会通过IO总线,但是IO总线上有其他的一些数据在流通,比如显示器、鼠标键盘等,并且现在的CPU计算速度普遍在GHz,但是我

synchronized&lock&aqs详解-编程思维

  加锁目的:由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问。   加锁方式:java锁分为两种--显示锁和隐示锁,本质区别在于显示锁需要的是程序员自己手动的进行加锁与解锁如ReentrantLock需要进行lock与unlock。而隐式锁则是Synchronized,jvm内置锁,jvm进行操作加锁与解锁。 Synchronized关键字   每个对象创建后都会存

深入浅出jvm-编程思维

jvm内存模型   主要包含类加载器、jvm内存、字节码执行引擎、GC;      类加载器   类加载器主要包含:应用程序加载器、扩展类加载器、启动类加载器。     启动类加载器:主要进行加载java核心类,例如:rt.jar包下的类。     扩展类加载器:主要进行加载java中ext包下的类。     应用程序类加载器:主要加载我们自己写的java类。   类加载机制:双亲委派机制和全