- 博客(50)
- 收藏
- 关注
原创 线程安全的集合类:CopyOnWrite/BlockingQueueArrayList/Hashtable/ConcurrentHashMap
线程安全的集合类:CopyOnWrite/BlockingQueueArrayList/Hashtable/ConcurrentHashMap
2023-11-27 15:14:38 91
原创 JUC(java.util.concurrent)的常见类: Callable interface/ ReentrantLock/原子类/ 线程池/ 信号量/CountDownLatch
JUC(java.util.concurrent)的常见类: Callable interface/ ReentrantLock/原子类/ 线程池/ 信号量/CountDownLatch
2023-11-27 15:00:28 213
原创 常见锁策略(乐观锁悲观锁/读写锁/重量级锁轻量级锁/自旋锁挂起等待锁/公平锁非公平所/可重入锁不可重入锁)
常见锁策略(乐观锁悲观锁/读写锁/重量级锁轻量级锁/自旋锁挂起等待锁/公平锁非公平所/可重入锁不可重入锁)
2023-11-26 16:36:04 86
原创 线程池简介及其简单实现
如果需要频繁的创建销毁线程, 就需要想办法降低创建和销毁的开销, 而线程池就是一个很好的选择: 提前创建好一些线程, 等到需要使用线程的时候, 直接从池子里拿一个就好了, 当不再使用该线程时, 就放回到池子里.那么此时就从 创建/销毁线程 -> 池子里取线程/将线程还到池子里线程池最大的好处就使减少每次启动销毁线程的损耗.为什么这样会更高效?如果是从系统申请创建线程, 就需要调通系统api, 进一步由操作系统内核完成线程的创建过程.
2023-11-21 23:57:04 67
原创 单例模式--饿汉模式, 懒汉模式
一般的执行顺序使1->2->3, 但也可能会被优化成1->3->2. 假设T1是按照1->3->2执行的, 并且在执行完3后2之前出现了线程切换, 此时还未对对象进行初始化就调度给别的线程了. T2线程执行的时候, 判断instance非空, 于是直接返回instance, 并且后续可能会使用到instance中的一些属性和方法, 这样就可能会出现一些问题.但是加锁是一个成本比较高的操作, 加锁可能会引起阻塞等待, 所以非必要不加锁. 如果无脑加锁, 就会导致程序执行效率受到影响. 所以这里该如何加锁?
2023-11-15 20:49:50 217
原创 简述JVM
JVM 是 Java Virtual Machine 的简称, 意为Java虚拟机.虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。
2023-10-26 17:13:29 506
原创 数据链路层--以太网
以类型0800 来说, 一个以太网数据帧的载荷部分最大长度1500, 这是受限于硬件的. 数据链路层和硬件是密切相关的, 对于以太网来说, 对应的硬件设备只能支持这么大. 换成其他的硬件, 也就需要搭配其他的数据链路层协议, 所对应的最大长度会不一样, 把这个最大长度称为MTU.mac地址是6个字节, 表示的范围比ipv4要大很多, 所以mac地址在网卡出场的时候写死了, 可以保证每个设备的网卡都有独立的mac地址.目的地址和源地址, 叫做mac地址(物理地址), 长度是6字节. 也是用来区分不同的主机.
2023-09-23 21:18:11 251 1
原创 进程的初步认识
这样设定之后, 每个进程的有效的虚拟地址都是固定的范围, 进程使用虚拟地址的内存时, 都需要操作系统将其转换成物理地址, 转换过程中, 就可以针对虚拟地址是否有效做出一个校验, 当系统检查出了非法地址的使用时, 就可以及时的通知这个进程, 甚至直接让进程结束, 避免影响到其他进程, 进而提高了系统的稳定性.进程之间进行通信的方法有很多, 无论哪种办法, 本质都是一样的: 通过一个公共的, 多个进程都能访问到的区域, 借助该区域完成数据的交换.进程是在CPU上执行的, CPU分为单核CPU和多核CPU.
2023-07-24 21:55:46 73 1
原创 十大排序算法(中):冒泡排序,快速排序(递归和非递归)、归并排序(递归和非递归)
万字详解冒泡、快排(递归非递归)、归并(递归非递归)!进来看看!
2023-05-17 08:00:00 2060 39
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人