
java基础
做一件事就好
好好工作,认真生活
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
多线程-企业中使用
一、线程生命周期新建、可运行(就绪\运行)、完成、等待,超时等待,阻塞 new waiting(wait) runnable time_waiting(sleeping) block(monitor) terminated二、线程池1、线程池创建核心线程数、最大线程数、超时时间\时间单位、任务队列、饱和策略。2、线程池执行过程3、开发中使用线程池 ThreadPoolExecutor: 核心线程数、最大线程数、超时时间\时间单原创 2022-05-07 18:52:16 · 477 阅读 · 0 评论 -
网络
网络分层OSI:七层网络模型TCP/IP:四层网络模型(事实上的标准)五层网络协议:应用层,传输层,网络层,数据链路层,物理层。各层的功能物理层和数据通信物理层作用主要任务就是尽可能的屏蔽掉不同传输方式的差异,屏蔽掉比如使用光纤,双绞线或者无线传输的差异。物理连接的建立和释放问题...原创 2020-01-03 09:41:56 · 105 阅读 · 0 评论 -
JVM内存结构
一、JDK规范1、JDK规范规范中规定了JVM虚拟机基本的划分:堆区、栈区、方法区、本地方法区、程序计数器。2、规范实现不同版本的JDK对JDK的规范实现方式不同二、堆区和方法区堆区和方法区是线程共享的,在jdk1.7之前,堆区和方法区都在JVM虚拟机内存中,1.8之后,方法区放在虚拟机内存之外,称为元数据区。三、栈区和技术器栈区和程序计数器栈区是线程私有的,所有方法的执行都是在栈区完成的,每调用一个方法,就会进行一次压栈操作,方法每执行完一个方法就会进行弹栈操作,每个方法在栈区以栈帧原创 2021-02-01 16:21:56 · 120 阅读 · 0 评论 -
类、类结构以及类的加载
一、类运行概述类创建运行和访问过程1、java源文件,通过编译转成计算机可以识别的.class文件2、类加载器将.class文件装载到内存3、在内存中创建对象实例4、通过实例对象访问数据思考1、java源文件如何编译成.class文件的,编译过程是什么样子的?2、编译后的.class文件结构是什么样的,与源文件如何对应的?3、.class文件是如何转载进JVM虚拟机的,转载过程是什么样的?4、类加载器可装载哪些来源的.class文件,.calss放在哪些地方可以成功被类加载器转载进JV原创 2021-01-26 22:45:56 · 137 阅读 · 0 评论 -
GC算法和垃圾回收器
一、GC算法二、垃圾回收器原创 2021-02-01 16:24:43 · 152 阅读 · 0 评论 -
多线程-学习和使用
一、线程基本知识基本使用场景:多线程实现文件下载后台任务执行异步处理:记录日志多步骤处理任务:一个动作完成需要多个步骤,这时可以由一个主线程分隔给多个字线程完成处理多线程价值:利用多核cpu资源,实现线程的并行处理,从而实现一个进程内多个线程的并行执行,同时基于线程本身异步执行的特性,提升任务处理的效率。Java中创建多线程线程声明周期二、线程基本的操作三、线程安全四、Java并发包工具JUC五、线程池六、Java并发...原创 2021-07-26 13:00:59 · 85 阅读 · 0 评论 -
集合列表lamda操做:去重;交、并、差集
根据指定属性获取两集合的交集列表@Data@AllArgsConstructorprivate class User { private String name; private String address; private int age;}public class CollectorsStreamLamda { public static void main(String[] args) { List<User> users =原创 2021-07-22 10:55:47 · 1017 阅读 · 1 评论 -
2021-07-21
原创 2021-07-21 13:46:47 · 78 阅读 · 0 评论 -
反射的使用
定义反射的定义1、反射:反向探知就是在程序运行过程中,获取类的所有属性和方法、类的相关信息下,以及调用类所有属性和方法。获取类相关信息:Calss.forName ():获取类对象clazz.getName():获取类名称clazz.getPackage():获取类所在包clazz.getClassLoader():获取类加载器clazz.getSuperclass():获取父类调用属性和方法clazz.newInstance():创建对象clazz.getDeclareMeth原创 2021-07-21 10:21:16 · 197 阅读 · 0 评论 -
注解和使用
注解概念注释:用文字描述,给程序员看的注解概念:代码级别的说明(元数据),说明程序的,给计算机看的。作用:编译检查:@Override:告诉计算机,这个方法是重写的父类的方法,如果父类中没有这个方法就会报错,所以注解在此起到了编译检查的作用。编写文档:生成java文档时,会抽取对应注解的内容@author 标识用户@version 标识版本@since 标识时间@param 标识参数代码分析:通过标识的注解,对代码进行分析和处理(我们常用)JDK预定义注解@Overri原创 2021-07-21 08:02:36 · 132 阅读 · 0 评论 -
范型和范型使用
范型只在编译阶段有效,编译后,jvm会去除范型,也就是说在运行阶段范型是没有效果的。范型通配符1. 无边界通配符:?public void print(List<?> list){ for(int i=0;i<list.size();i++){ system.out.print(list.get(i)); }}2.上边界通配符:?extends Number通用的类型必须是Number及其子类,本例中就是必须是Long、Double、Byte、Integer原创 2021-07-20 09:32:12 · 289 阅读 · 0 评论 -
接口中的静态方法和默认方法
默认方法解决的问题场景:有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本就不需要实现这个方法也要写一个空实现,所以接口默认方法就是为了解决这个问题。静态方法解决的场景:接口静态方法类似于默认方法,但是我们不能在实现类中覆盖它们,可以避免默认方法在实现类中被覆盖实现。总结:1、接口默认方法、静态方法可以有多个。2、默认方法通过实例调用,静态方法通过接口名调用。3、default默认方法关键字只能用在接口中。4、默认方法可以被继承,如果继承了多个接口,多原创 2021-07-19 15:38:47 · 5553 阅读 · 0 评论 -
Map集合
Mapmap特点TreeMap:TreeMap红黑树实现:TreeMap特点1、跟节点是黑节点,2、所有nil叶子节点为黑节点3、根节点到所有叶子节点的黑节点都一致4、红节点的字节点都是黑节点5、所有节点不是黑节点就是红节点旋转规则:左左:右旋(以父节点为支点)左右:左旋(以本节点为支点),右旋(已父节点为支点)右右:左旋(以父节点为支点)右左:右旋(以本节点为支点),左旋(已父节点为支点)平衡二叉树:AVL树1、左右子树的最高差绝对值是小于等于1;2、左右子树都是平衡二原创 2021-07-15 10:53:28 · 80 阅读 · 0 评论 -
List集合
‘ArrayList底层原理:动态扩容:源码熟悉1、无参构造方法,懒加载,没有初始化数组2、有参构造方法,初始化指定长度数组3、通过add方法实现的初始化和数组动态扩容(通过copy实现扩容)4、通过remove方法实现的数据内容的copy复制减元素5、动态扩容,是扩容原数组的一半;然后将原数组内容copy到新数组vector所有操作和arraylist都一样,不同点是所有的写操作都加入了synchronize,即都是线程安全的,消耗性能,所以被抛弃了;那如何在多线程下保证集合数据的安原创 2021-07-15 07:54:29 · 115 阅读 · 0 评论 -
java基础整理
学的东西挺多,但是一直没梳理,这次梳理一下:借鉴《java编程思想》《java核心技术I》《java核心技术II》java基础基本程序设计结构注释,数据类型,变量常量,运算符,字符串,输入输出,流程控制,大数,数组,对象与类,继承和接口类与对象,面向对象设计,静态字段和方法,方法参数,对象构造,包,jar文件,文档注释继承类、超类和子类,超类,泛型数组,对象包装和自动拆箱,参数可变的方法,枚举类,反射接口接口,lambda表达式,内部类,代理异常,断言和日志:对于异常的处理最优雅的方原创 2020-07-09 20:41:26 · 111 阅读 · 0 评论