- 博客(11)
- 收藏
- 关注
原创 word插入对象一键变为图片格式
此快捷键可以用于将word中插入的对象,比如 MathType 公式、Visio 对象等更改为图片格式,用于减小文件大小。CTRL+A选中全文快捷键 CTRL + shift + Fn + F9
2022-03-08 11:28:24
1831
原创 多线程-synchronized锁升级过程
synchronized底层原理synchronized是基于JVM内置锁实现,通过内部对象Monitor(监视器锁)实现,基于进入与退出Monitor对象实现方法与代码块同步,监视器锁的实现依赖底层操作系统的Mutex lock(互斥锁)实现,它是一个重量级锁性能较低。JVM内置锁在1.5之后版本做了重大的优化,如锁粗化(Lock Coarsening)、锁消除(Lock Elimination)、偏向锁(Biased Locking)、轻量级锁(Lightweight Locking)、适应性自旋(
2020-12-24 21:53:50
406
原创 多线程-CAS
乐观锁和悲观锁多线程的并发操作可能会引发并发安全问题。实现并发控制的主要手段可以分为两种:乐观并发控制和悲观并发控制,即乐观锁和悲观锁。悲观锁:对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度。因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁具有强烈的独占和排他特性。乐观锁:假设数据一般情况下不会发生冲突,只在提交操作时检查是否违反数据完整性。乐观锁机制采取了更加宽松的加锁机制。乐观锁的实现CAS实现CAS实现会遇到ABA问题:其他线程修改数次最后值和
2020-12-21 21:56:39
266
1
原创 多线程-对象内存布局
根据java虚拟机规范对堆(Heap)内存的描述,所有的实例对象都在堆上分配内存。对于一个实例对象而言,其本身的内在结构也是有描述方式的,也就是接下来提到的对象内存布局。对象内存布局一个java对象在内存中包括对象头,实例数据和对齐三个部分。对象头对象头包括两部分:标记位(Mark word)和类指针(Class pointer)标记位(Mark word):包含一系列的标记位信息,比如锁标识为信息,在内存中占8字节。类指针(Class pointer):用来指向对象对应的Class对象的地址
2020-12-06 21:06:09
223
原创 多线程-java中的锁
当多个线程同时对共享数据进行操作时,可能会引发线程安全问题。解决多线程的并发安全问题,主要方法是加锁。在java中,加锁有两个方法,即synchronized和Lock.synchronized方法Synchronized是java的关键字,该关键字可以作用于同步代码块和同步方法,被synchronized修饰的代码具有原子性和可见性。synchronized作用于同步代码块synchronized ( 同步监视器 ) { //操作共享数据的代码}同步监视器:即锁,任何一个对象都可以
2020-12-03 22:11:54
134
原创 多线程-死锁
死锁的定义:两个或多个线程互相持有对方所需的资源,这些线程会互相等待对方释放资源,如果线程都不主动释放所占有的资源,这些线程都会处于等待状态,无法继续执行,产生死锁死锁产生的条件:互斥条件:线程对所分配的资源具有排他性,即一个资源只能被一个线程占用,知道该线程释放该资源;请求和保持条件:一个线程因请求被占用资源而发生阻塞时,对已获得的资源保持不放;不剥夺条件:任何一个备战有的资源在没被该线程释放之前,任何其他线程都无法对他进行剥夺占用;循环等待条件:当发生死锁时,所等待的线程必定会形成一个
2020-11-29 17:13:04
109
原创 归并排序
归并排序的核心思想是“分而治之“,与快速排序的思想一致。归并排序的特点有:归并排序的时间复杂度为O(nlogn),可以达到基于比较的排序算法的最优时间复杂度;归并排序是一种稳定的排序算法,即相同元素在排序前后的相对位置保持不变;归并排序是一种常用的外部排序算法;归并排序需要O(n)的辅助空间,在同类算法中空间复杂度略高。//归并排序的java实现public class MergeSort { public static void main(String[] args) { int
2020-09-11 21:05:13
162
原创 堆排序算法
堆是一种完全二叉树,且具有以下性质: 大顶堆:每个节点的值都大于或者等于其左右孩子节点的值; 小顶堆:每个节点的值都小于或者等于其左右孩子节点的值。堆排序利用了堆来设计排序算法,是一种选择排序算法,其最好、最坏和平均时间复杂度均为,该排序算法不稳定。堆排序的基本思路:1)首先建堆,升序排序选择大顶堆,降序排序选择小顶堆;2)将堆顶元素与当前堆的最后一个元素进行交换,将最大(最小)元素沉到数组末尾,相当于从堆中删除当前最大(最小元素)。3)重新调整当前堆...
2020-08-26 20:04:37
133
原创 快速排序算法
快速排序的基本思想是,以记录中某一个元素a为基准,使得一趟排序后的结果满足:元素a之后记录的关键字均不小于记录a,同时使其之前元素的关键字均不大于记录a。一趟快速排序后,元素a把待排序序列分为两个部分,这时只需要对前后两个部分再用相同的方法进行排序便可。public class QuickSort { public static void main(String[] args) { int[ ] arr = new int[ ]{ 4, 5, 1, 6, 2, 7, 3, 8 };
2020-08-24 16:03:54
204
原创 Altium Designer常用快捷键及操作
测量长度:Ctrl+m切换长度单位:q切换布线的宽度:3切换直角、斜45°角和弧形:Ctrl+Shift+空格调整PCB黑色区域大小:1->D->Edit Board Shape->2铺铜相关规则调整:rules->Plane绘制Keepout-Line:选中Keep-out层,然后Place->Keepout->Track导入已有的元件库和封装库:先将文件复制在项目目录下,然后Add Existing to Project去绿:t+m(一般都只是暂时有.
2020-07-06 22:18:06
1285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人