黄小华的个人网站
熬过无人问津的日子才有诗和远方!
通过volatile了解缓存一致性协议
Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,...
2020-06-29
浅析Synchronized关键字和Lock
一 Synchronized简介 Synchronized是java内置的关键字。代表这个方法加锁,相当于不管哪一个线程,运行到这个方法时,都要检查有没有其它线程正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程运行完这个方法后再运行此线程,没有的话,锁定...
2020-06-28
Java线程池
线程池概念 线程池: 简单理解,它就是一个管理线程的池子。 优势 (1)、降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗; (2)、提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行; (3)方便线程并发数的管控。因为线程若是无限制的创建,...
2020-06-28
Java类加载机制
Java程序通过编译器javac后变成.class字节流文件,类加载器就将.class加载到JVM中。 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的...
2020-06-27
JavaIO流 BIO->NIO->AIO->Netty->Dubbo
1,学IO流之前,我们写的程序,都是在内存里自己跟自己玩。比如,你声明个变量,创建个数组,创建个集合,写一个排序算法,模拟一个链表,使用一些常用API,现在回想一下,是不是在只是自己在内存里玩一玩?计算机组成包括运算器,控制器,存储器,输入设备,输出设备。那么你前面的工作,仅仅够你的程序和内存以及C...
2020-06-25
Java集合的框架
Collection 对象是封装数据的,集合是用于存储对象的。 集合长度可变,只能存储引用数据类型,可以是不同数据类型。 Collection是接口的接口(单列集合) ├——-List 接口:元素按进入先后有序保存,可重复 │—————-├ LinkedList 接口实现类, 链表, 插入删除效率...
2020-06-25
Http详解
1.从输入URL到页面加载发生了什么? 总体来说分为以下几个过程: 1.DNS解析 2.TCP连接 3.发送HTTP请求 4.服务器处理请求并返回HTTP报文 5.浏览器解析渲染页面 6.连接结束 1.DNS解析 DNS解析的过程就是寻找哪台机器上有你需要资源的过程。当你在浏览器中输入一个地址时,例...
2020-06-03
Leetcode寻找重复树
题目描述 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 要求 不能更改原数组(假设数组是只读的)。 只能使用额外的 O(1) 的空间。 时间复杂度小于 O(n2) 。 数组中...
2020-05-26
深入理解Docker
Docker ...
2020-05-22
垃圾回收算法(GC)
GC Algorithms Mark-Sweep(标记清除) Copying(拷贝) Mark-Compact(标记压缩) ...
2020-05-17