Java学习笔记
文章平均质量分 58
ligen1112
这个作者很懒,什么都没留下…
展开
-
Java nio基本知识2:selector/FileLock
selector是选择器,用来检查channel的状态,可以实现单线程管理多个channel。通道和选择器之间的关系,是通过注册完成的,注册的时候需要指定监控通道的哪些操作。监控状态可读: SelectionKey.OP_READ可写: SelectionKey.OP_WRITE连接: SelectionKey.OP_CONNECT接受: SelectionKey.OP_ACCEPT多个操作都感兴趣,可以用int key = SelectionKey.OP_WRITE | SelectionK原创 2021-09-22 22:02:27 · 132 阅读 · 0 评论 -
java线程知识初级
线程1.基本概念多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程是比进程更小的执行单位,线程是进程的基础之上进行进一步的划分。所谓多线程是指一个进程在执行过程中可以产生多个更小的程序单元,这些更小的单元称为线程,这些线程可以同时存在,同时运行,一个进程可能包含多个同时执行的线程。2.Java中的线程方法1继承了Thread类就可以当线程使用class Cat extends Thread{ int times = 0; @Override原创 2021-09-14 13:47:34 · 86 阅读 · 0 评论 -
JVM探索笔记之二 栈与堆
方法区1供各线程共享的运行时内存区域,储存了每个类的构造信息,例如常量池,字段和方法数据,构造函数和普通方法的字节码内容。小class在硬盘,大Class在方法区中2方法区是规范,不同虚拟机不一样(实例变量在堆内存中,和方法区无关)栈栈负责运行,堆负责存储。栈也叫栈内存,主管java程序运行,是在线程创建时候创建,声明周期跟随于线程周期,线程结束内存释放。栈不存在垃圾回收。8中基本类型变...原创 2019-12-08 21:02:11 · 157 阅读 · 0 评论 -
JVM探索笔记之一 ClassLoader
JVM1 什么是类加载器2 类加载器有几种3 双亲委派4 沙箱安全5JVM结构图JVM是运行在操作系统之上的,和硬件没有直接交互类装载器ClassLoader:负责加载class文件,class文件在文件开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构。ClassLoader只负责class文件的加载,是否能运行是Execu...原创 2019-12-05 14:11:02 · 114 阅读 · 0 评论 -
JUC探索笔记之二 synchronized
在多线程环境下,共享数据会存在安全问题,sychronized可以保证同一时只有一个线程能进入代码块或者是这个方法。因此synchronized可以有三种用法:修饰代码块,修饰类中的普通方法(锁实例对象),修饰静态方法(锁类对象)。下面来看下作用于普通方法的例子手机类有两个功能:发短信和发邮件class Phone{ public synchronized void sendEmail()...原创 2019-12-04 14:00:17 · 80 阅读 · 0 评论 -
JUC探索笔记之一
什么是进程/线程?进程是资源分配的最小单位,线程是程序运行的最小单位。进程是程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文 (上下文是除了cpu之外的运行环境)。 线程是共享了进程的上下文环境,的更为细小的CPU时间段,正是因为线程共享进程的数据,使用相同的地址空间,CPU切换线程远远快于切换进程。例子 进程:word.exe 线程:纠错功能,断电恢复并发的小例子简...原创 2019-11-29 21:22:35 · 95 阅读 · 0 评论 -
Java hashMap 思维导图辅助理解
HashMap概述链表(LinkedList)短板是查询慢,动态数组(ArrayList)短板是增删慢,HashMap克服了这两个缺点,在录入数据时候花费额外的算力结构化每个数据,做到了可以快速查找,增删。存储数据时候输入<key, value>键值对, 在后面的查询时候直接给出key就可以快速得到value1.源码分析HashMap的创建, 扩容, 数据存储结构2.让我们从...原创 2019-11-14 16:00:29 · 217 阅读 · 0 评论 -
LeetCode 498对角线【中等】详细图解
LeetCode 498对角线【中】详细图解给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示第一步:观察到数字遍历轨迹分为两种,一种是斜向上,一种是斜向下。对应方法:在复制到新数组中进行计数,偶数向上,奇数向下,用%2控制int k = 0;if(k % 2 == 0){ 斜向上代码 ...原创 2019-11-02 15:38:12 · 627 阅读 · 0 评论 -
Java Array.sort详解
Java Array.sort详解基本用法基本用法sort是Arrays类中一个静态方法,此处用针对整数数组的方法,具体用法是将一个整数数组按照从小到大的顺序排列。方法里面直接指向DualPivotQuicksort方法。public static void sort(int[] a) { DualPivotQuicksort.sort(a, 0, a.length - 1,...原创 2019-10-25 18:16:08 · 1277 阅读 · 0 评论