随笔分类 -  Java SE

摘要:反射操作泛型 import java.lang.reflect.*; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) throws NoSu 阅读全文
posted @ 2022-03-16 15:07 振袖秋枫问红叶 阅读(232) 评论(0) 推荐(0)
摘要:获取运行时类的完整结构 通过反射可以获得类实现的接口、父类、构造器、方法、属性、注解 import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; publ 阅读全文
posted @ 2022-03-16 11:21 振袖秋枫问红叶 阅读(52) 评论(0) 推荐(0)
摘要:Java内存分析 public class Main { public static void main(String[] args) { /** * 1、加载到内存,产生一个Class对象 * 2、链接,给静态变量value赋值默认值0 * 3、初始化,如果实例化对象,<clinit>方法会将所有 阅读全文
posted @ 2022-03-15 23:56 振袖秋枫问红叶 阅读(105) 评论(0) 推荐(0)
摘要:动态语言 vs. 静态语言 动态语言:运行时可以改变其结构的语言,例如引进新的函数、对象甚至代码,删除原有的代码(JavaScript、PHP、Python) 静态语言:运行时不可变的语言(Java、C、C++) 但是,Java可以利用反射机制获得类似动态语言的特性 反射机制 概述 反射是Java被 阅读全文
posted @ 2022-03-15 21:09 振袖秋枫问红叶 阅读(52) 评论(0) 推荐(0)
摘要:什么是注解 注解不是程序本身,可以对程序作出解释(这点和注释一样) 注解以“@注解名”的形式存在,可以附加在package、class、method、field上,可以通过反射机制编程实现对这些元数据的访问,可以被其他程序(比如编译器)读取 内置注解 @Override、@Deprecated @S 阅读全文
posted @ 2022-03-15 18:52 振袖秋枫问红叶 阅读(42) 评论(0) 推荐(0)
摘要:不用连接,双方都可以发送消息, 发送端 import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 不需要连接服务器 */ public class Sender 阅读全文
posted @ 2022-03-15 16:57 振袖秋枫问红叶 阅读(390) 评论(0) 推荐(0)
摘要:客户端 1、Socket连接服务器 2、发送消息 import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; /** * 客户端 */ pu 阅读全文
posted @ 2022-03-15 10:52 振袖秋枫问红叶 阅读(567) 评论(0) 推荐(0)
摘要:IP地址 Java的InetAddress类可以获取IP地址 import java.net.InetAddress; import java.net.UnknownHostException; public class Main { public static void main(String[] 阅读全文
posted @ 2022-03-14 11:48 振袖秋枫问红叶 阅读(77) 评论(0) 推荐(0)
摘要:计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 网络通信的要素 C/S架构(客户/服务器模式)和B/S架构(浏览器/服务器模式) IP地址、端口号:定位 阅读全文
posted @ 2022-03-14 11:08 振袖秋枫问红叶 阅读(24) 评论(0) 推荐(0)
摘要:经常创建、销毁线程对性能影响很大,因此可以提前创建多个线程放入线程池,使用时直接获取,使用完放回池中 好处:使用线程池可以提高响应速度、降低资源消耗、便于线程管理 import java.util.concurrent.ExecutorService; import java.util.concur 阅读全文
posted @ 2022-03-13 22:47 振袖秋枫问红叶 阅读(43) 评论(0) 推荐(0)
摘要:synchronized实现了同步,但不能实现不同线程之间的消息传递 线程通信的三种方法(只能在同步方法和同步块中使用,否则抛出异常): **wait()**方法,表示线程一直等待,直到其他线程通知,与sleep()不同,wait()会释放锁 **notify()**方法,唤醒一个处于等待的线程 * 阅读全文
posted @ 2021-09-17 19:15 振袖秋枫问红叶 阅读(35) 评论(0) 推荐(0)
摘要:线程同步机制 多个线程访问同一个对象,为了保证数据在方法中被访问时的正确性,就需要线程同步 线程同步就是一种等待机制,多个线程进入这个对象的等待池,形成队列,等待前面的线程执行完毕,下一个线程再使用 在访问时加入锁机制(synchronized),当一个线程获得对象的排他锁就能独占资源,其他线程必须 阅读全文
posted @ 2021-09-16 17:41 振袖秋枫问红叶 阅读(44) 评论(0) 推荐(0)
摘要:线程的状态 五种状态 观测线程状态 一个线程可以在给定的时间点处于一个状态,这些状态是不反映任何操作系统线程状态的虚拟机状态 **getState()**方法查看线程的状态 状态标识符 状态描述 NEW 尚未启动的线程处于此状态 RUNNABLE 在Java虚拟机中执行的线程处于此状态 BLOCKE 阅读全文
posted @ 2021-09-15 14:52 振袖秋枫问红叶 阅读(48) 评论(0) 推荐(0)
摘要:真实对象和代理对象都要实现同一个接口,代理对象要代理真实角色 好处:代理对象可以做很多真实对象做不了的事情;真实对象专注做自己的事情 public class Main { public static void main(String[] args) { /** * 通过代理对象来实现真实对象的方法 阅读全文
posted @ 2021-09-14 17:06 振袖秋枫问红叶 阅读(36) 评论(0) 推荐(0)
摘要:Lambda表达式可以避免匿名内部类定义过多,让代码看上去很简洁,其实质属于函数式编程的概念 函数式接口 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口,如Runnable接口 对于函数式接口,可以通过Lambda表达式来实现 实现函数式接口的方式 public class Main 阅读全文
posted @ 2021-09-14 15:34 振袖秋枫问红叶 阅读(119) 评论(0) 推荐(0)
摘要:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念 进程是执行程序的一次执行过程,是一个动态的概念,是系统分配资源的单位 线程是CPU调度和执行的单位,一个进程至少有一个线程 创建线程的三种方式 1、继承Thread类(不建议使用,避免单继承局限性) /** * 1、自定义线程类 阅读全文
posted @ 2021-09-14 13:56 振袖秋枫问红叶 阅读(52) 评论(0) 推荐(0)
摘要:File类 File类代表物理盘符中的一个文件或文件夹 其不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性 import java.io.File; import java.io.IOException; import java.util.Arrays; public class 阅读全文
posted @ 2021-09-13 10:54 振袖秋枫问红叶 阅读(94) 评论(0) 推荐(0)
摘要:打印流 PrintWriter子类 文本打印输出流,继承抽象父类输出流(Writer) 字节流在传输数字时会将其转为字符,而PrintWriter类的println()方法可以原封不动的打印数据,不会转换数字 import java.io.PrintWriter; public class Main 阅读全文
posted @ 2021-09-12 21:21 振袖秋枫问红叶 阅读(54) 评论(0) 推荐(0)
摘要:字符编码 当编码方式和解码方式不一致时,会出现乱码 ISO:包括ASCII码在内的一些西欧国家的文字符号 UTF-8:针对Unicode码表的可变长度字符编码(1~3个字节) GBK:简体中文、扩充 文件字符流 FileReader子类 文件字符输入流,继承抽象父类字符输入流(InputStream 阅读全文
posted @ 2021-09-12 20:20 振袖秋枫问红叶 阅读(50) 评论(0) 推荐(0)
摘要:对象字节流,使用流传输对象,该过程称为序列化\反序列化 对象字节流的特点: 拥有缓冲区 可以读写八大基本数据类型和字符串 可以读写对象 ObjectOutputStream子类 通过writeObject()方法向流中写入一个对象,这个过程称为序列化 import java.io.FileOutpu 阅读全文
posted @ 2021-09-12 17:13 振袖秋枫问红叶 阅读(177) 评论(0) 推荐(0)