
java基础
哀愁
专注java,前后端分离,linux
展开
-
反射机制
反射机制 通过java语言中的反射机制可以操作字节码文件。 类似于黑客(可以读和修改字节码文件) 通过反射机制可以操作代码片段(class文件) 反射机制的相关类在那个包下? java.lang.reflect.*; 反射机制相关的重要的类有哪些 java.lang.Class: 代表整个字节码,代表一个类型,代表一个类 java.lang.reflect.Method:代表字节码中的方法字节码。 java.lang.reflect.Constructor:代表字节码中的构造方法字节原创 2020-08-02 21:08:46 · 136 阅读 · 0 评论 -
多线程详解
多线程的概述 什么是进程?什么时线程? 进程是一个应用程序(1个进程是一个软件)。 线程是一个进程中的执行场景/执行单元。 一个进程可以启动多个线程 进程和线程是什么关系? 阿里巴巴:进程 公司的每个员工就是阿里巴巴的每个线程 京东:进程 强东:京东的一个进程 妹妹:京东的一个线程 进程可以看作是现实生活当中的公司。 线程可以看作是公司当中的某个员工。 注意: 进程A和进程B的内存独立不共享 进程A和进程B在java语言中 线程A和线程B,堆内存和方法区共享内存 原创 2020-08-01 22:05:58 · 161 阅读 · 0 评论 -
生产者和消费者
第一:wait和notify方法不是线程对象的方法, 是java中任何一个java对象都有的方法,因为这两个方式是Object类自带的方法。 wait方法和notify方法不是通过线程对象调用的。 ## wait()方法的作用? Object o=new Object(); o.wait(); 表示: 让正在o对象上活动的线程进入等待状态,无期限等待, ## notify()方法作用? Object o=new Object(); o.notify(); 表示: 唤醒正在o对象上等待的 线程.原创 2020-08-01 22:03:22 · 575 阅读 · 0 评论 -
jdk8实现线程方式
实现Callable接口。(jdk8新特性) 这种方式实现的线程可以获取线程的返回值(一开始的那两种不能获取返回值) 缺点:效率低 package com.aaa; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class FutureTaskTest { public st.原创 2020-08-01 17:28:45 · 1268 阅读 · 0 评论 -
死锁的实现
死锁的理解图 代码实现 package com.aaa.syntest; /* * 死锁的实现方式 * */ public class DesdLock { public static void main(String[] args) { Object o1=new Object(); Object o2=new Object(); //这两个线程共享o1,o2 Thread thread=new Threads(o1,o2);原创 2020-08-01 11:14:17 · 115 阅读 · 0 评论 -
序列化和反序列化
序列化和反序列的理解 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nvbbZ1IY-1596105242544)(D:\pic\Typora-pic\image-20200730171552575.png)] 序列化的实现 参与序列化和反序列的对象必须实现Serializable接口 Serializable接口只是一个标志接口(这个接口中什么代码都没有), 起到标志的作用,java虚拟机看到这个类实现了这个接口,可能会对这个类进行特殊待遇, 每个实现序列化接口的类中都会原创 2020-07-30 18:35:48 · 104 阅读 · 0 评论 -
java中流的基本使用
(IO)流 Io流的理解 通过IO可以完成硬盘文件的读和写 /* * 文件的输入和输出都是基于内存为参照物的 * 文件的输入就是硬盘中的文件读到内存中 * 文件的输出就是内存中的文件写的硬盘中 */ IO 分类 有多种分类方式: 一种方式是按照流的方向进行分类: 以内存作为参照物 往内存中去,叫做输入(Input)。或者叫做读 从内存中出来,叫做输出(Output)或者叫做写 另一种方式是按照读取数据方式不同进行分类 有的流是按照字节的方式读取文件,一次读取一个字节,等同于一次读取原创 2020-07-30 16:02:25 · 1187 阅读 · 0 评论 -
泛型的高级使用
泛型的使用 public class Fan<T> { private Integer id; private String username; private List<T> data; //Fan前边的这个T 与后边传入参数的T相对应、 //Fan后边的这个T代表的是返回值的类型 public <T> Fan<T> add(List<T> date){ Fan<T> tFan = new Fa原创 2020-07-30 10:24:11 · 317 阅读 · 0 评论 -
数组的扩容
Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。 2)利用数组复制方法可以变通的实现数组扩容。 3)System.arraycopy()可以复制数组。 4)Arrays.copyOf()可以简便的创建数组副本。 5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容。 使用Arrays.copyOf: int [] ints= new int[10]; System.out.println(ints.length); /原创 2020-07-29 15:13:51 · 2081 阅读 · 0 评论 -
jdk1.8中日期和字符串的相互转换
//当前时间 LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt);//2018-09-06T18:22:47.366 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); ...原创 2020-04-30 17:59:18 · 4105 阅读 · 0 评论 -
java基础-二维数组
/二维数组的练习/ //声明一个二维数组 int [][] array=new int[][]{{1},{2,3},{4,5,6},{5}}; //遍历二维数组 一个{} 代表一行 里边有几个数据,就代表几列 for (int i = 0; i <array.length ; i++) { /* * array.length:返回的是数组的行数 * array[i].length:返回的...原创 2020-04-04 09:33:29 · 138 阅读 · 0 评论