自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LaurenHUA的实验室

一直在学习!

  • 博客(29)
  • 收藏
  • 关注

原创 (十五)JUC - StampedLock锁

是jdk1.8中新增的一个读写锁,也是对jdk1.5中的读写锁ReentrantReadWriteLock的优化。当stamp返回零时,表示线程获取锁失败。当释放锁或者转换锁的时候,都要传入最初获取的stamp值。read thread 写线程没有操作成功,读锁时候写锁无法介入,传统的读写互斥。:对短的只读代码段,使用乐观模式通常可以减少争用并提高吞吐量。乐观读模式:“一句话”:读的过程中也允许写锁介入。999个读,1个写,写就悲剧了。Q:有没有比读写锁更快的锁?,戳记,long类型。

2023-05-04 18:24:10 199

原创 (十四)JUC - 读写锁

解释为什么要锁降级。

2023-05-04 18:18:01 141

原创 (十三)JUC - AQS(AbstractQueuedSynchronizer,抽象的队列同步器)

整个ReentrantLock的加锁过程,可以分为三个阶段:1)尝试加锁;2)加锁失败,线程入队列;3)线程入队列后,进入阻塞状态。

2023-05-04 18:14:01 169

原创 (十二)JUC - synchronized 与 锁升级

Q:各种锁优缺点、锁升级和实现原理锁升级过程(一句话):先自旋,不行再阻塞。把之前的悲观锁(重量级锁)变成在一定条件下使用偏向锁以及使用轻量级锁(自旋锁CAS)的形式。适用情况:10. JIT编译器对锁的优化JIT (Just In Time Compiler,即时编译器)1)锁消除每次new一个对象去加锁,没有任何价值。JIT编译器会无视它2)锁粗化方法中首尾相接,前后相邻的都是同一个锁对象,那JIT编译器就会把这几个synchronized块合并成一个大块。

2023-05-04 18:00:38 152

原创 (十一)JUC - Java对象内存布局和对象头

面试。

2023-05-04 17:46:31 121

原创 (十)JUC - ThreadLocal

不再会被使用的对象或者变量占用的内存不能被回收,就是内存泄漏。

2023-05-04 17:37:09 76

原创 (九)JUC - 原子操作类之18罗汉增强

AtomicInteger、AtomicLong、AtomicIntegerArray、AtomicReference、AtomicStampedReference version号,+1 解决修改过几次AtomicMarkableReference 一次,false,true 解决是否修改过面试:CAS --- Unsafe --- do while + ABA --- AtomicStampedReference,AtomicMarkableReferenceAtomicIntegerFiel

2023-05-04 17:28:36 76

原创 (八)JUC - CAS(Compare And Swap)

天上飞的理念必然有落地的实现。

2023-03-11 15:08:40 63

原创 (七)JUC - volatile

写指令读指令。

2023-03-11 12:48:16 84

原创 (六)JUC - java内存模型 JMM

1. 计算机硬件存储体系 和 JMM 的关系2. Java内存模型 Java Memory Model3. JMM 三大特性:1)可见性线程脏读2)原子性3)有序性指令重排序4. 多线程对变量的读写过程线程脏读5. 多线程先行发生原则 happens-before (8条)总原则:案例说明:8条原则:1)次序规则一个线程内,按照代码顺序,写于前面

2023-03-07 16:03:38 152 1

原创 (五)JUC - LockSupport

线程等待唤醒

2023-03-07 15:23:03 66

原创 (四)JUC - 线程中断机制

线程中断

2023-03-07 15:05:49 115

原创 (三)JUC - 多线程锁

乐观锁 / 悲观锁、公平锁 / 非公平锁、可重入锁(递归锁)、死锁

2023-03-07 14:24:37 71

原创 (二)JUC - CompletableFuture

FutureTask

2023-03-07 13:49:50 181

原创 (一)JUC - 线程基础知识

juc入门

2023-03-07 13:37:17 86

原创 Java —— Advanced Language Features —> static

一. static修饰符 static修饰符可以用来修饰类的成员变量、成员方法和代码块。 用static修饰的成员变量表示静态变量,可以直接通过类名来访问; 用static修饰的成员方法表示静态方法,可以直接通过类名来访问; 用static修饰的代码块表示静态代码块,当Java虚似机加载类时,就会执行该代码块; 被static所修饰的成员变量和成员方法表明归某个类

2017-09-10 23:11:31 300

原创 Java 基础 —— Objects and Classes

OOP面向对象编程(Object-Oriented Programming,OOP)Java的编程单位是类,对象通过类进行实例化(“创建”)三个特性:封装 Encapsulation      (C++在类外可以定义函数)继承 Inheritance多态 Polymorphism抽象数据类型类就是模版Java中用class表示一个类,类是一个抽象的数据类型    (C++中用struct表示

2017-09-07 21:06:26 1172

原创 Java 基础 —— 数组

创建数组大致包括如下步骤:声明一个数组类型的引用变量,简称为数组变量;用new语句构造数组的实例。new语句为数组分配内存,并且为数组中的每个元素赋予默认值;初始化,即为数组的每个元素设置合适的初始值。一. 数组变量的声明;声明数组:1) 一个存放同一类型数据的集合 a. 即可以是基本类型,也可以是对象类型; b. 数组中的每个数据为元素;2) 数组是一个对象,成员是数组长度

2017-08-19 13:50:23 878

原创 Java 基础 —— 变量;操作符;条件语句;循环语句

1. java中变量的介绍变量的使用有一个作用域的问题,作用域是指它的存在范围,只有在这个范围内,程序代码才能访问它。 其次,作用域决定了变量的生命周期。变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁并清除其所占用内存空间的过程。当一个变量被定义时,它的作用域就被确定了。按照作用域的不同,变量可分为以下类型:. 成员变量:在类中声明,它的作用域是整个类;

2017-08-09 22:44:23 443

原创 Java 基础 —— 标识符、关键字和类型介绍

1、 java代码中的注释作用:使部分内容只为程序员可见,不为编译器所编译、虚拟机所执行 位置:类声明前后、方法声明前后、属性声明前后、方法体中。(几乎可以在一个源文件任意位置,但不能在一个关键字字符中插入注释。) 类型: 1) 单行注释: //text ——从 // 到本行结束的所有字符均作为注释而被编译器忽略 2) 多行注释: /

2017-08-07 22:38:36 711

原创 Java Intro

J2SE 桌面应用的开发 JAVA SE corejava J2EE 企业级开发 JAVA EE J2ME 手机应用的开发 JAVA MESDK software development kit 软件开发包 函数库或者工具等 JDK java development kit

2017-08-06 21:54:57 654

原创 Unix 操作(二) vi

/dev/null — unix黑洞cat /dev/nullcp a.txt /dev/null – 拷贝的任何内容都消失cat /dev/null > b.txt – 清空b.txt文件内容 清空文件另一方法 : > b.txtmore – 分屏显式 head – 显式文件的前N行 tail – 显式文件的后N行 (不加参数默认显式10行)调用v

2017-08-06 00:07:18 277

原创 Unix 操作(一)

chmod : 权限修改chmod u+rwx,g+r,o-xtouch : 新建文件 如果文件存在,就是修改文件的时间(修改文件的时间为系统的当前时间) 如果文件不存在,就是新建一个文件mv : (剪切) 移动 或者 重命名 $mv a.txt aa.txt 重命名 $mv c.txt dir4 移动 -i 覆盖前先进行询问 源是文

2017-08-05 23:41:06 247

原创 JDK 配置(ubuntu)

jdk 拷贝到桌面 建一个目录/usr/javasudo cp -r jdk /usr/javasudo gedit ~/.bashrc 隐藏的文件往下面加# set Java environmentJAVA_HOME=/usr/java/jdk1.8.0_74JRE_HOME=/usr/java/jdk1.8.0_74/jrePATH=$PATH:$JAVA_HOME/bin:$JRE

2017-08-02 22:01:40 240

原创 基本的Unix Command

命令格式:Command [option(s)] [argument[s]]打开终端: crtl+alt+t 远程退出: exit密码限制超级用户与普通用户查看用户信息*最小权限原则命令修改普通用户的密码 passwdpasswd 对超级用户没有作用密码要求 长度6~8个字符 至少包含两个字符和一个数字或一个特殊字符 不能与用户名相同 新密码和旧密码至少有3个

2017-08-01 23:25:43 1186

原创 Unix intro

unix是一种操作系统。OS的组成1) Kernel: OS的核心组成部分 - 管理硬件。 - 管理设备,内存,进程。 - 控制系统程序和系统硬件。 - 管理交换空间,守护进程(精灵),文件系统。 2) Shell: 是用户和kernel之间的接口。起到翻译或者解释的功能。 3) 文件系统:将硬件和软件都映射成文件。可以进行统一管理。/: unix系统的根路径 op

2017-07-31 23:06:01 315

原创 简单搭建一个ES6语法测试环境

用node运行ES6测试环境准备: 1. 官网下载并安装: node下载地址 https://nodejs.org/en/ 2. 配置环境变量: 把node.exe所在目录加入到PATH环境变量中。 3. 命令行执行 node -v 和 npm -v 能出版本号,说明安装成功。package.jsonbabel-clibabel-preset-es2015.babelrcbabel-

2017-07-18 18:12:17 3332 1

原创 ES6 check AND Babel

检查各种运行环境对 ES6 的支持情况。 工具: ES-Checker 访问ruanyf.github.io/es-checker,可以看到浏览器对 ES6 的支持程度。 or 运行下面的命令,可以查看你正在使用的 Node 环境对 ES6 的支持程度。 $ npm install -g es-checker $ es-checker Babel转码器 Babel,可将ES

2017-07-18 11:21:31 381

原创 TestCase

最近在写测试用例,由局部到整体,从模块测试到系统测试,在实现了系统所要求的功能之后再测试性能、再进行压测,说到底是为了系统能很好的运行。写测试用例的时候,要站在一个完全不懂系统的人的角度,一步一步,教他如何测,每一步的目的是什么都要考虑清楚,不进行无用的测试,也绝不漏掉任何一条线路,全面考虑这四个字说起来容易写起来难。正常的case肯定是要有的,假设系统正常运行的情况下,有哪些预期结果,到...

2017-01-05 23:20:45 494

空空如也

空空如也

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

TA关注的人

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