- 博客(13)
- 收藏
- 关注
原创 Linux文件管理及命令
Linux 系统下的文件类型与文件权限 文件类型 Linux 下所有的东西(包括内存、网卡、外部设备等等)都可以看做文件,Linux 将文件 分为以下五种类型: a. 普通文件 ‘-’ b. 目录文件 ‘d’ c. 管道文件 ‘p’ d. 链接文件 ‘l’ e. 设备文件(块设备 ’b’ 、字符设备 ‘c’ 、套接字设备 ‘s’ ) .mp4 .avi .txt linux只有通过命令才能查看出一个文件的类型:ls -l 、ll :能查出隐藏文件 文件权限 用
2020-10-21 12:35:48
231
原创 初识Linux以及目录结构
初识Linux Linux是一种操作系统软件 常见的操作系统软件:unix(最早的),Windows,Mac,Linux Linux和Windows的区别 1.Linux主要使用命令行操作系统,Windows则是图形化界面 2.Linux主要应用于服务器,Windows则是个人操作系统 3.Linux属于开源项目,Windows则不开源 4.Linux是多用户系统,Windows则是单用户系统 注意:多用户系统是指多个人可以同时操作计算机,单用户系统是只能有一个用户进行操作 Linux的内核.
2020-10-07 22:00:29
149
原创 ConcurrentHashMap底层分析
ConcurrentHashMap底层分析 ConcurrentHashMap数据结构 ConcurrentHashMap相比HashMap而言,是多线程安全的,其底层数据与HashMap的数据结构相同,数据结构如下: ConcurrentHashMap的数据结构是数组+链表+红黑树 类的继承关系 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap&l
2020-08-13 10:12:59
175
原创 线程间通信
线程间通信 什么是线程通信 多个线程在处理同一个资源,并且任务不同时,需要线程通信来帮助解决线程之间对同一个变量的使用或操作。 就是多个线程在操作同一份数据时, 避免对同一共享变量的争夺。 于是我们引出了等待唤醒机制:wait()、notify() 就是在一个线程进行了规定操作后,就进入等待状态wait,等待其他线程执行完他们的指定代码过后,再将其唤醒notify。 wait/notify/notifyAll机制的使用与分析 1.Synchrnoized加锁的线程的Object类的wait/notify/
2020-08-13 09:53:09
134
原创 ReentrantLock实现机制
ReentrantLock实现机制 公平锁和非公平锁 1.公平锁的实现就是谁等待的时间长谁就先获取锁 2.非公平锁就是随机获取锁,谁运气好,cpu时间片轮询到哪个线程,哪个线程就能获取资源 3.公平锁在市里化对象时要写入参数"true" 4.非公平锁在实例化对象时不用写入参数,因为默认为非公平锁 可重入锁和不可重入锁 所谓不可重入锁就是当前线程执行某个方法已知获取了该锁,那么在方法中尝试再次获取锁时,就会获取不到被阻塞,可重入锁恰好与之相反,不会被阻塞。 Reentrant Lock时可重入锁 Synch
2020-08-04 00:43:42
210
原创 死锁问题
死锁 什么是死锁 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 死锁的4个必要条件 1.互斥条件:某个资源某一时刻只能由一个线程占用 2.不可抢占条件:资源申请者,不能从资源占有者手中抢夺资源 3.占有且申请:线程至少已经占有一个资源,但又去申请新的资源,新资源被占用,该线程就会阻塞 4.循环等待:在发生死锁时,存在一个进程,即资源的环形链 产
2020-08-03 23:48:53
272
原创 Synchronized底层实现
Synchronized底层实现 synchronized关键字锁的都是对象,不是代码。 synchronized可以修饰静态方法、成员函数,同时还可以直接定义代码块,但是它上锁的资源只有两类:一个是对象,一个是类。 对象锁和类锁 对象锁:只作用于同一个对象,如果调用两个同一类的对象上的同步代码块,就不会同步。 类锁:作用于当前整个类,如果两个线程调用同一个类的不同对象上的同步语句,实惠同步的。 等待池和锁池 等待池:某一现场调用了某一对象的wait()方法之后,档期啊线程就会释放该对象的锁,进入到
2020-08-02 02:24:26
238
原创 Voltatile关键字
Voltatile关键字 1.Voltatile是一个轻量级锁,相比重量级锁synchronized,只保证可见性,不保证原子性。 2.Voltatile时修饰共享变量的,synchronized时用来修饰变量的调用者。 内存模型的相关概念 共享变量:所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享,说简单点,就是全局变量,静态变量,以及数组,对象等,在多线程中可以称之为共享变量。 缓存不一致:一个变量在多个CPU中缓存时,当各CPU从高速缓存中更新数据到主存时。 缓存不一致的解决方案:
2020-08-02 00:39:16
569
原创 Java集合—WeakHashMap
Java集合—WeakHashMap WeakHashMap的使用 WeakHashMap的使用和HashMap类似,区别是WeakHashMap除了自身有对key的引用,没有其他引用,也就是弱引用,所以WeakHashMap中的key可能就会被GC(垃圾回收器)回收,value值也会被回收 WeakHashMap的特点 允许key和value值为null(和HashMap一样) WeakHash...
2020-04-12 17:43:04
241
原创 Java集合—HashMap
Java集合—HashMap 哈希表:是一种通过关键码去寻找值得数据映射映射 的结构 哈希函数的构造方法:直接定址法、除留余数法 处理哈希冲突的方法:处理冲突是指对于一个待插入哈希表的数据元素,若按给定的哈希函数求得的哈希地址已被占用,则按一定规则求下一哈希地址,如此重复,直至找到一个可用的地址以保存该元素 HashMap介绍 public interface Map<K,V> 参...
2020-04-05 17:50:46
164
原创 Java集合—PriorityQueue
Java集合—PriorityQueue PriorityQueue基本特点 是数组实现来存放数据的 优先级队列大小不受限制,可以再创建时指定大小, 队列也能自动扩容(小 2倍,队列大(大于64)按照1.5倍 扩容) 此队列是不能存储null值,也不支持不可比较的对象 优先级的队列是基于自然排序或者Compartor自定义排序规则来进行数据优先级处理 PriorityQueue底层源码实现 ...
2020-04-05 16:41:13
187
原创 Java集合—ArrayList
ArrayList ArrayList使用 ArrayList是List接口的实现类 集合框架库 Collection 常用方法 add addAll remove contain toArray List-定义允许重复的一个有序集合 ArrayList - “动态”的数组 ArrayList基本特点 数据插入有序 可以存储null值 数据可以重复 底层基于数组实现,数组在内存中是连续分布的...
2020-04-05 14:02:24
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅