java基础
文章平均质量分 74
lzt928786458
这个作者很懒,什么都没留下…
展开
-
PriorityQueue使用及源码探究
使用PriorityQueue,能够对大顶堆,小顶堆进行模拟,是java中很好用的数据结构,而现在我仅仅是会用的水平,打算看一下源码,深入了解一下底层实现(顺便复习一下堆排序doge)PriorityQueue使用介绍,小顶堆或者是大顶堆Java中PriorityQueue实现了Queue接口,不允许放入null元素;其通过堆实现,具体说是通过完全二叉树(complete binary tree)实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值),也就意味着可以通过数组来作为Prior原创 2021-04-23 15:21:19 · 207 阅读 · 0 评论 -
java复习笔记2
1.Hashmap的线程安全问题比较熟知的就是Hashtable,但是HashTable是直接采用synchronize修饰,效率低在并发包中也提供了一个类:ConcurrentHashMap ,这个类通过分段锁实现线程安全1.7中 ConcurrentHashMap 底层采⽤ 分段的数组+链表 实现;采用 分段锁(Sagment) 对整个桶数组进⾏了分割分段(Segment),每⼀把锁只锁容器其中⼀部分数据,多线程访问容器⾥不同数据段的数据,就不会存在锁竞争,提⾼并发访问率。1.8中又修改了,底原创 2021-03-10 16:45:52 · 66 阅读 · 0 评论 -
java复习笔记1
1.抽象类和接口的异同相同:都不能被实例化;都可以定义抽象方法,子类必须实现这些抽象方法不同:1.抽象类只能被单继承,接口可以多继承2.抽象类里面可以声明成员变量,接口只能是public static final的静态常量3.抽象类中可以包含普通方法,接口只能是public abstract修饰抽象方法4.抽象类可以由构造方法,接口中不能有构造方法抽象类:既想约束子类具有共同的行为(但不再乎其如何实现),又想拥有缺省的方法,又能拥有实例变量接口:需要该类实现这些方法,但是不在乎其如何实现;实原创 2021-03-02 18:39:47 · 86 阅读 · 0 评论 -
操作系统复习
1.进程与线程的区别进程:是资源分配的最小单位,是程序的执行过程,一个进程可以有多个线程,多个线程共享进程的堆和方法区资源,但每个线程又有属于自己的本地方法栈、虚拟机栈、程序计数器线程:是任务调度和执行的最小单位,线程间可能存在相互影响,执行开销较小,不利于资源的管理和保护,线程间是共享进程中的资源的2.进程间通信(IPC)见https://www.jianshu.com/p/c1015f5ffa741)匿名管道pipe半双工,只能用于父子进程或者兄弟进程之间,对于管道两边的进程来说,是一种特殊原创 2021-03-01 17:00:37 · 58 阅读 · 0 评论 -
计网复习
1.OSI七层与TCP/IP五层模型七层:多了表示层与会话层五层:物理层,数据链路层,网络层,传输层,应用层2.TCP可靠传输的保证方式,拥塞控制的原理3.从在浏览器中输入URL地址,到展示页面,一共经历了什么DNS解析、TCP连接、发送HTTP请求、服务器处理请求并返回HTTP报文、浏览器渲染、结束4.HTTP1.0、1.1、2.01.0在请求结束之后会立刻断开连接1.1在请求结束知乎也不会立刻断开,而是默认使用长连接,避免了连接建立和释放的开销2.0的传输格式为二进制格式,引入了帧的概原创 2021-03-01 16:13:03 · 77 阅读 · 0 评论 -
javaIO流笔记
流的分类字符流更适合处理文本数据(16bit就是一个char),非文本数据字节流原创 2021-03-01 15:26:48 · 168 阅读 · 2 评论 -
java多线程笔记
程序进程线程的基本概念程序:为了完成任务,用某种语言编写的一组指令的集合,这个基本不会问进程:程序的一次执行过程,或者正在运行的一个程序,有它自身的产生、存在和消亡的过程。进程可进一步细化为线程,是一个程序内部的一条执行路径,一个进程可以由多个线程。一个进程内的多个线程共享相同的内存单元和地址空间,因此他们可以访问相同的变量和对象(所以多线程会带来数据的安全隐患)下面一个java虚拟机的内部构造,在内存区域,方法区和堆是所有线程共有的,程序计数器,虚拟机栈和本地方法栈是每个线程独有的单核cpu原创 2021-02-27 15:54:40 · 85 阅读 · 0 评论 -
java注解笔记
注解(Annotation)注解概述SE中常见的**@Override,@Deprecated**都是注解如何去自定义Annotation自定义的注解,必须配合上反射才有意义(所以说注解也叫标记确实没错)(使用反射获取注解,获取到注解之后,再根据注解中的内容,去做相应操作)元注解@Retention修饰Annotation的生命周期所以自定义的注解需要@Retention(Policy.RUNTIME) 保留到虚拟机运行中,使得反射能够获取到@Target这个也是用来修饰Annot原创 2021-02-24 18:27:18 · 58 阅读 · 0 评论 -
java枚举类笔记
1.枚举类Enum自定义枚举类(不使用enum关键字)import org.junit.Test;public class EnumTest { @Test public void test(){ Season season = Season.AUTUMN; System.out.println(season); }}//自定义枚举类class Season{ public final String seasonName;原创 2021-02-24 15:35:00 · 68 阅读 · 0 评论 -
java8新特性笔记
1.Lambda表达式其实这个东西我一律是归为奇淫巧技里面的,不是必须用的时候,我是不会拿出来用的,我认为这个对代码的可读性还是有一些影响的。先来两个例子import org.junit.Test;import java.util.Comparator;public class LambdaTest { @Test public void test1(){ Runnable r1 = new Runnable() { public原创 2021-02-24 14:47:01 · 101 阅读 · 0 评论 -
java动态代理笔记
我其实觉得反射的内容不太重要,也不是不太重要,但是动态代理才是重中之重,之后学spring原理的时候要用到,AOP面向切面编程的原理,就是动态代理,所以回来补课了代理模式:使用代理将对象包装起来,用该代理对象取代原始对象首先是一个静态代理的例子import org.junit.Test;interface ClothFactory{ void productCloth();}//代理类class ProxyClothFactory implements ClothFactory{原创 2021-02-23 15:43:05 · 63 阅读 · 1 评论 -
java反射笔记
在类加载完成后,通过反射来拿取这个类的完整的结构信息通过反射,可以完整地获取一个类,包括该类的内部的各种信息java.lang.Class :这个对象就是代表了一个加载后的类,使用这个对象,获取一个你需要的类的信息Class clazz = Xxx.class;clazz.getConstructor getMethod getParamter等等对java.lang.Class的理解:每一个运行时类,就是一个Class实例不使用反射,无法使用类内部的一些私有方法通过反射可以调用(setAc原创 2021-02-22 17:14:29 · 83 阅读 · 0 评论