![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVASE2
文章平均质量分 60
阿巴巴巴巴巴巴
这个作者很懒,什么都没留下…
展开
-
Java代理
静态代理 本质: 不改变源代码的情况下对功能进行增强 需求: 在不改变原有代码的基础上,在项目现有所有类的方法前后打印日志。 通过静态代理实现: 为项目的每一个类都编写一个对应的代理类,且代理类和被代理类都实现相同的接口,代理类中存在被代理类的引用; .在创建代理对象时,通过构造器塞入一个目标对象,然后在代理对象的方法内部调用目标对象同名方法,并在调用前后打印日志。 也就是说,代理对象 = 增强代码 + 目标对象(原对象)。有了代理对象后,就不用原对象了 静态代理实现 公共的接口 public原创 2021-05-20 23:47:44 · 137 阅读 · 2 评论 -
HashMap
HashMap 结构 JDK1.8之前:数组 + 链表 JDK1.8:数组 + 链表红黑树 插入原理 1、先判断要插入的数组是否为空,为空:初始化数组 2、根据hash&(数组大小-1)计算存储数组下标位置 3、该数组位置是否有值:根据遍历数组上的集合,查看有没有key值等于我们要插入节点的key,有则覆盖,没有则插入到链表中(插入之前要判断该当前节点是否是红黑树节点,是怎放入红黑树节点,否则加入链表,在加入链表之前又判断(节点数>8&&数组长度>64),是怎转原创 2021-05-20 10:25:34 · 115 阅读 · 1 评论 -
JavaSE(2)16 IO流--字符流
IO流 字节缓冲流 字节缓冲流构造方法 字节缓冲流介绍 lBufferOutputStream:该类实现缓冲输出流。通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用。 lBufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组。当从流中读取或跳过字节时,内存缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节。 构造方法 //字节缓冲流构造方法 public static void ma原创 2021-03-24 18:26:03 · 71 阅读 · 0 评论 -
JavaSE(2)15 IO流
IO流 IO流概述和分类 IO流介绍 IO:输入/输出(Input/Output) 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据的传输 IO流:用来处理设备间数据的传输问题。常见的应用:文件复制;文件上传,文件下载 IO流分类 按数据的流向: 输入流:读数据 输出流:写数据 按照数据类型: 字节流 字节输入流 字节输出流 字符流 字符输入流 字符输出流 IO流的使用场景 如果操作的是纯文本文件,优先使用字符流 如果操作的是原创 2021-03-23 18:38:02 · 45 阅读 · 0 评论 -
JavaSE(2)14 File --File类概述和构造方法
File File类概述和构造方法 File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于FIle而言言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的 File类的构造方法 public static void main(String[] args) { //通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 Fil原创 2021-03-22 17:09:35 · 51 阅读 · 0 评论 -
JavaSE(2)13 集合--Map集合
集合 Map集合 概述和使用 interface Map<K,V> K:键的类型;V:值的类型 将键映射到值的对象,不能包含重复的键,每个键可以映射到最多一个值 //通过多态创建Map对象 public static void main(String[] args) { //创建集合对象 Map<Integer,String> map=new HashMap<>(); //集合中添加元素 ma原创 2021-03-22 16:00:45 · 53 阅读 · 0 评论 -
JavaSE(2)12 集合--泛型
集合 泛型 概述 jdk1.5之后引入的特性,提供了编译时类型安全检查机制,该机制允许在编译时检测到非法的类型,它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数 将类型由原来的具体的类型参数化,然后在使用或调用时传入具体的类型 这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法和泛型接口 定义格式: <类型>,指定一种类型的格式,这里的类型可以被看作形参 <类型1,类型2…> 指定多种类型的格式,多种类型之间用逗号隔开,这里的类型可以被看作形参原创 2021-03-21 20:28:48 · 67 阅读 · 0 评论 -
JavaSE(2)11 集合--Set
集合 Set集合 Set集合概述和特点 特点: 不能有重复元素 没有带索引的方法,不能使用普通for循环遍历 //HashSet:对集合的迭代顺序不做任何保证 public static void main(String[] args) { //创建Set集合对象 Set<String> set=new HashSet<>(); //添加元素 set.add("Hello"); set原创 2021-03-21 17:44:43 · 47 阅读 · 0 评论 -
JavaSE(2)10 集合--概论、List
集合 概论 定义:集合与数组类似,只不过集合中的数据量可以动态的变化 分类 Collection(接口) 单列 List(接口)集合:存放的数据可以重复,并且有序 Set(接口)集合:存放的数据无序且不可重复 Map (接口)多列:双列,存放数据无序,key不可重复,value可重复 Collection集合的概述和使用 Collection概述 Collection是单列集合层次结构中的根界面,是单列集合的顶层接口 Collection表示一组对象,这些对象也称为Collection的原创 2021-03-21 00:15:48 · 52 阅读 · 0 评论 -
JavaSE(2)09 反射--反射的泛型操作
反射 反射的泛型操作 Java采用泛型擦除的机制来引入泛型,Java中的泛型仅仅是给编译器javac使用的,确保数据的安全性和免去强制类型转换问题,但是一旦编译完成,所有和泛型有关的类型全部擦除 //通过反射获取泛型 @SuppressWarnings("all") public class Demo11 { public static void test01(Map<String,Users> map, List<Users> list){ System原创 2021-03-20 17:41:16 · 54 阅读 · 0 评论 -
JavaSE(2)08 反射机制--获取运行时类的完整结构
反射机制 获取运行时类的完整结构 通过反射获取运行时类的完整结构包括:Field、Method、Construct、SupperClass、interface、Annotation 类的默认无参构造是私有的,用private修饰 //获得类的信息 public class Demo08 { public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethod原创 2021-03-20 16:06:07 · 72 阅读 · 0 评论 -
JavaSE(2)07 反射机制--概述
反射机制 概述 静态语言和动态语言 动态语言:运行时可以改变其结构的语言 C#、JavaScript、PHP,Python 静态语言:运行时结构不可变得语言 Java、C、C++ Java不是动态语言,但Java可以称之为准动态语言,即Java有一定的动态性,我们可以利用反射机制获得类似动态语言的特性 Reflection 是Java被视为动态语言的关键,反射机制允许程序在执行期间借助Reflection API获得任何类的内部信息,并且能直接操作任意对象的内部属性及方法 加载完类之后,在堆内原创 2021-03-20 12:05:37 · 59 阅读 · 0 评论 -
JavaSE(2)06 注解Annotation
注解 Annotation 什么是注解 不是程序本身,可以对程序做出解释 作用:可以被其他程序(如:编译器等)读取 格式:@注释名(参数) 在哪使用:包、类、方法、field等,可以通过反射机制编程实现对这些元数据的访问 ...原创 2021-03-18 22:29:02 · 62 阅读 · 0 评论 -
JavaSE(2)05 多线程--线程通信
多线程 线程通信 生产者消费者问题 这是一个线程同步问题,生产者和消费者共享同一个资源,并且消费者和生产者之间相互依赖,互为条件。 对于生产者,没有生产商品之前,要通知消费者等待,而生产了商品之后,又需要马上通知消费者来消费; 对于消费者,在消费之后,要通知生产者已经结束消费,需要生产新的产品以供消费 生产者消费者之间仅有synchronized是不够的 synchronized可以阻止并发更新同一个共享资源,实现了同步 synchronized不能用来实现不同线程之间的消息传递(通信) 解决方原创 2021-03-17 23:22:09 · 44 阅读 · 0 评论 -
JavaSE(2)04 多线程--线程同步机制
多线程 线程同步机制 并发 同一个对象被多个线程同时操作 线程同步 其实就是一个等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用 统一进程的多个线程共享同一存储空间,为了保证数据在方法中被访问时的正确性,在访问时加入了锁机制synchronized,当一个线程获得对象的排他锁,独占资源,其他线程必须等待。但会存在如下问题: 一个线程持有锁会导致其他所需要的此锁的线程挂起; 在多线程竞争下,加锁,释放锁会导致比较多的上下文切换和调度延时,引起性原创 2021-03-15 23:20:22 · 44 阅读 · 0 评论 -
JavaSE(2)03 多线程--线程状态及方法
多线程 线程的五大状态 创建状态:new 就绪状态:(start()开启线程进入就绪状态) 运行状态:RUNNABLE 阻塞状态:TIMED_WAITING 死亡状态:TERMINATED 线程一旦进入该状态就不能再调start()启动 线程方法 线程停止 建议线程正常停止—>利用次数,不建议死循环 建议使用标志位—>设置一个标志位 不建议使用stop或destroy等过时的或JDK不建议使用的方法 //1、设置标志位 private Boolean flag=tru原创 2021-03-14 22:51:15 · 58 阅读 · 0 评论 -
JavaSE(2)02 多线程--静态代理
多线程 静态代理 //静态代理总结: //真实对象和代理对象都要实现同一个接口 //代理对象要代理真实角色:把真实对象通过参数传给代理对象 //好处: //代理对象可以做好多真实对象做不了的事情 //真实对象专注做自己的事情 public class StaticProxy { public static void main(String[] args) { WeddingCompany company=new WeddingCompany(new You());原创 2021-03-14 11:51:34 · 55 阅读 · 0 评论 -
JavaSE(2)01 多线程--线程简介
多线程 线程简介 Process和Thread 进程和程序 程序是指令和数据的有序集合,程序是静态的,进程是执行程序的一次执行过程,进程是动态的,是系统资源分配的基本单位(线程是调度的基本单位) 进程和线程 通常一个进程中可以包含若干个线程,进程中至少包含一个线程(main线程),线程是CPU调度和执行的基本单位 注意:很多多线程都是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。如果是模拟出来的多线程,即在一个CPU的情况下,在同一时间点,CPU只能执行一个代码,因为线程切换的快,所以给人同原创 2021-03-13 15:31:03 · 63 阅读 · 0 评论