<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[耳东er的博客]]></title><description><![CDATA["春酒 热夏 秋酿 知寒"]]></description><link>https://blog.youkuaiyun.com/q734044429</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; q734044429]]></copyright><item><title><![CDATA[注解：Annotation]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/122106535</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/122106535</guid><author>q734044429</author><pubDate>Wed, 29 Dec 2021 15:43:50 +0800</pubDate><description><![CDATA[一、注解

注解(Annotation)是一种引用数据类型，编译之后也是生成xxx.class文件。
自定义注解的语法格式：[修饰符列表] @interface 注解类型名{
}


注解的使用：


注解使用时的语法格式：@注解类型名
注解可以出现在类上、属性上、方法上、变量上等…注解还可以出现在注解类型上。



JDK内置的注解：


java.lang包下的注解类型：

Deprecated：用@Deprecated 注释的程序元素表示该元素已过时，不鼓励程序员使用这样的元素，通常是因为它很危险或存]]></description><category></category></item><item><title><![CDATA[Java反射机制 01：概述&应用]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121937265</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121937265</guid><author>q734044429</author><pubDate>Thu, 23 Dec 2021 14:08:51 +0800</pubDate><description><![CDATA[一、反射机制

反射机制的作用：通过Java语言中的反射机制可以操作字节码文件（代码片段、Class文件）。
—— 可以读和修改字节码文件
反射机制的相关类在java.lang.reflect.*包下。


二、反射机制相关的重要的类

java.lang.Class：代表整个字节码，代表一个类型。代表整个类。
java.lang.reflect.Method：代表字节码中的方法字节码。代表类中的方法。
java.lang.reflect.Constructor：代表字节码中的构造方法字节码。代表类中的构造]]></description><category></category></item><item><title><![CDATA[Java反射机制 课外02：资源绑定器（ResourceBundle）、类加载器（ClassLoader）]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121999828</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121999828</guid><author>q734044429</author><pubDate>Sun, 19 Dec 2021 15:27:14 +0800</pubDate><description><![CDATA[一、资源绑定器

java.util 包下提供了一个资源绑定器，便于获取属性配置文件中的内容。
资源绑定器只能绑定xxx.properties文件，并且这个文件必须放到类路径下。
——文件的扩展名必须为propertiespublic class ResourceBundleTest01 {
    public static void main(String[] args) {
        // 资源绑定器，只能绑定xxx.properties文件。并且这个文件必须在类路径下。
        // ]]></description><category></category></item><item><title><![CDATA[Java反射机制 课外01：获取一个文件的绝对路径]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121995415</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121995415</guid><author>q734044429</author><pubDate>Fri, 17 Dec 2021 14:36:57 +0800</pubDate><description><![CDATA[一、获取一个文件的绝对路径

方式一：New FileReader(“Name”);
—— 这种方式的路径缺点是：移植性差，在IDEA中默认的当前路径是project的根。public class AboutPath {
    public static void main(String[] args) throws Exception{
        // 这种方式的路径缺点是：移植性差，在IDEA中默认的当前路径是project的根。
        // 这个代码假设离开了IDEA，换到了其它位置]]></description><category></category></item><item><title><![CDATA[Java多线程 04：wait方法 和 notify方法（生产者和消费者模式）]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121796269</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121796269</guid><author>q734044429</author><pubDate>Tue, 14 Dec 2021 17:52:21 +0800</pubDate><description><![CDATA[一、关于Object类中的 wait 和 notify 方法

wait 和 notify 方法不是线程对象的方法，是java中任何一个java对象都拥有的方法，因为这个是Object类中自带的方法。
wait() 和 notify() 方法的作用：

Object o = new Object();

o.wait()： 让正在o对象上活动的线程进入无期限等待状态，直到被唤醒为止。
o.notify()： 唤醒正在o对象上等待的线程。
—— notifyAll()方法：这个方法是唤醒o对象上处于等待的所有]]></description><category></category></item><item><title><![CDATA[Java多线程 03：守护线程 & 定时器]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121792170</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121792170</guid><author>q734044429</author><pubDate>Wed, 08 Dec 2021 16:00:46 +0800</pubDate><description><![CDATA[一、守护线程

Java语言中线程分为两大类：

用户线程
守护线程（后台线程）


守护线程的特点：一般守护线程是一个死循环，所有的用户线程只要结束，守护线程自动结束。
—— 其中具有代表性的就是：垃圾回收线程（守护线程）。
注：主线程main方法是一个用户线程
守护线程用在什么地方？
每天00:00的时候系统数据自动备份。这个需要使用到定时器，并且我们可以将定时器设置为守护线程。一直在那里看着，每到00:00的时候就备份一次。所有的用户线程如果结束了，守护线程自动退出，没有必要进行数据备份了。
void]]></description><category></category></item><item><title><![CDATA[Java多线程 02：线程安全]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121715370</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121715370</guid><author>q734044429</author><pubDate>Sat, 04 Dec 2021 17:15:51 +0800</pubDate><description><![CDATA[一、线程安全

在多线程并发的环境下数据存在安全问题的条件
—— 多线程并发的环境下，有共享数据，并且这个数据还会被修改，此时就存在线程安全问题。


满足以下三个条件之后，就会存在线程安全问题：

多线程并发
有共享数据
共享数据有修改的行为






解决线程安全问题
—— 使用线程同步机制：线程同步，实际上就是线程不能并发了，线程必须排队执行，会牺牲一部分效率，但数据安全了。


线程同步涉及两个专业术语：

异步编程模型 —— 线程并发
—— 线程t1和线程t2，各自执行各自的，t1不管t2，t2]]></description><category></category></item><item><title><![CDATA[Java多线程 01：概述&使用]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121514082</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121514082</guid><author>q734044429</author><pubDate>Sat, 04 Dec 2021 14:08:30 +0800</pubDate><description><![CDATA[一、什么是进程和线程：

——进程：是一个应用程序（一个进程是一个软件）。
——线程：是一个进程中的执行场景 / 执行单元。
注：一个进程可以启动多个线程。


二、进程和线程的关系：

——进程可以看做是现实生活当中的火车站。
——线程可以看做是火车站当中的售票窗口。
注：

进程A和进程B的内存独立不共享（资源不会共享）。
线程A和线程B的堆内存和方法区内存共享，但是栈内存独立，一个线程一个栈。




三、实现线程的方式：

第一种方式：编写一个类，直接继承java.lang.Thread，重写run]]></description><category></category></item><item><title><![CDATA[Java IO流 07：IO+Properties的联合应用]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121423084</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121423084</guid><author>q734044429</author><pubDate>Wed, 24 Nov 2021 13:50:42 +0800</pubDate><description><![CDATA[一、IO+Properties的联合应用

IO+Properties的联合应用是一个非常好的设计理念：
—— 以后经常改变的数据，可以单独写到一个文件中，使用程序动态获取。
将来只需要修改这个文件中的内容，java代码不需要改动，不需要重新编译，服务器也不需要重启，就可以拿到动态的信息。


类似于以上机制的这种文件被称为配置文件

并且当配置文件中的内容格式是：
key1=value
key2=value
的时候，我们把这种配置文件叫做属性配置文件。


java规范中有要求：属性配置文件建议以.pro]]></description><category></category></item><item><title><![CDATA[Java IO流 05：对象流（序列化 & 反序列化）]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121380890</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121380890</guid><author>q734044429</author><pubDate>Fri, 19 Nov 2021 14:59:23 +0800</pubDate><description><![CDATA[一、对象流

ObjectInputStream：对象字节输入流
ObjectOutputStream：对象字节输出流



序列化（Serialize）：Java对象存储到硬盘文件中。将Java对象的状态保存下来的过程。
反序列化（DeSerialize）：将硬盘文件上的数据重新恢复到内存当中，恢复成Java对象。
注：参与序列化和反序列化的对象，必须实现Serializable接口，不然会出现 java.io.NotSerializableException:(对象不支持序列化)
通过源代码发现，Ser]]></description><category></category></item><item><title><![CDATA[Java IO流 06 ：File类（一次复制所有文件、目录-练习-CopyAll）]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121143120</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121143120</guid><author>q734044429</author><pubDate>Wed, 17 Nov 2021 15:39:57 +0800</pubDate><description><![CDATA[一、java.io.File

File对象代表：文件和目录路径名的抽象表示形式。
—— 一个File对象有可能对应的是目录，也可能对应的是文件（File只是一个路径名的抽象表示形式）
File类和四大家族没有关系，所以File类不能完成文件的读和写。
File类中常用的方法：


booleanexists()：判断此抽象路径名表示的文件或目录是否存在。
booleancreateNewFile()：如果不存在具有此抽象路径名指定名称的文件时，创建一个新的空文件
booleanmkdir()：创建此抽象路]]></description><category></category></item><item><title><![CDATA[Java IO流 04：数据流 & 标准输出流]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121123529</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121123529</guid><author>q734044429</author><pubDate>Wed, 03 Nov 2021 17:42:40 +0800</pubDate><description><![CDATA[一、数据流


DataOutputStream：数据专属的输出流。
DataInputStream：数据专属的输入流。


这个流可以将数据连同数据的类型一并写入文件。
DataOutputStream写的文件，只能使用DataInputStream去读。并且读的时候你需要提前知道写入的顺序。
——读的顺序需要和写的顺序一致。才可以正常取出数据。
注：这个文件不是普通文本文档。（这个文件使用记事本打不开。）


——DataOutputStream（输出，编写）
public class DataOutp]]></description><category></category></item><item><title><![CDATA[Java IO流 03：缓冲流 & 转换流]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121110364</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121110364</guid><author>q734044429</author><pubDate>Wed, 03 Nov 2021 15:26:11 +0800</pubDate><description><![CDATA[一、缓冲流

BufferedReader：带有缓冲区的字符输入流。
——使用这个流的时候不需要自定义char数组，或者说不需要自定义byte数组。自带缓冲。public class BufferedReaderTest01 {
    public static void main(String[] args) {
        //定义一个字符输入缓冲流
        BufferedReader br = null;
        try {
            //创建一个文件字符输入流
]]></description><category></category></item><item><title><![CDATA[Java IO流 02：文件流]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121057562</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121057562</guid><author>q734044429</author><pubDate>Tue, 02 Nov 2021 20:43:10 +0800</pubDate><description><![CDATA[FileInputStream（文件字节输入流）
FileOutputStream（文件字节输出流）
FileReader（文件字符输入流）
FileWriter（文件字符输出流）]]></description><category></category></item><item><title><![CDATA[Java IO流 01：IO概述]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/121051105</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/121051105</guid><author>q734044429</author><pubDate>Sat, 30 Oct 2021 22:00:16 +0800</pubDate><description><![CDATA[一、IO流

java中所有的流都是在：java . io . * ;
IO流：通过IO可以完成硬盘文件的读和写。

—— I ：是Input（输入）
—— O ：是Output（输出）



IO流的分类：

按照流的方向进行分类：（以内存作为参照物）


往内存中去，叫做 输入（Input），或者叫做 读（Read）。
从内存中出来，叫做 输出（Output），或者叫做 写（Write）。



按照读取数据方式不同进行分类：


有的流是按照字节的方式读取数据，称为 字节流，一次读取1个字节byte，]]></description><category></category></item><item><title><![CDATA[Java集合04：Set接口 & Map接口]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/120904891</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/120904891</guid><author>q734044429</author><pubDate>Wed, 27 Oct 2021 14:02:00 +0800</pubDate><description><![CDATA[关于java.util.Set接口（单个方式存储元素）

一、HashSet集合


HashSet集合是非线程安全的。
HashSet集合存储元素的特点：无序不可重复。
——无序：存进去的顺序和取出来的顺序不一定相同。
——不可重复：存进去一个1，不能再存进去一个1。
放到HashSet集合中的元素实际上是放到HashMap集合中的key部分，底层是哈希表。



二、TreeSet集合


TreeSet集合存储元素的特点：无序不可重复的，储存的元素是可以自动按照大小顺序排序的。
——无序：存进去的顺序]]></description><category></category></item><item><title><![CDATA[Java集合03：List接口]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/120786821</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/120786821</guid><author>q734044429</author><pubDate>Fri, 22 Oct 2021 14:02:24 +0800</pubDate><description><![CDATA[关于java.util.List接口（单个方式存储元素）

一、List集合接口中的常用方法


List集合存储元素的特点：有序可重复
——有序：存进去的顺序和取出来的顺序相同，集合中的元素有下标，从0开始以1递增
——可重复：存储进去一个1，可以再存进去一个1
List集合继承了Collection接口，继承了Collection集合中的方法时，也具有自己“特有”的方法：
——以下只列出List接口特有的常用的方法：

voidadd(int index, E element)： 在集合的指定下标位置插]]></description><category></category></item><item><title><![CDATA[Java集合02：Collection接口]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/120753346</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/120753346</guid><author>q734044429</author><pubDate>Fri, 15 Oct 2021 16:35:20 +0800</pubDate><description><![CDATA[一、关于java.util.Collection接口（单个方式存储元素）常用的方法


Collection中能存放什么元素？

—— 没有使用“泛型”之前，Collection中可以存储Object的所有子类型。
—— 使用“泛型”之后，Collection中只能存储某个具体的类型。
注：集合中不能直接存储基本数据类型，也不能直接存储Java对象，只能存储Java对象的内存地址




Collection接口中的常用方法


booleanadd(Object e)：向集合中添加元素。
intsize(]]></description><category></category></item><item><title><![CDATA[计算机英语常用单词]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/120786141</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/120786141</guid><author>q734044429</author><pubDate>Fri, 15 Oct 2021 16:33:58 +0800</pubDate><description><![CDATA[计算机英语

增删改查这几个单词：

增：add、save、new
删：delete、drop
改：update、set、modify
查：find、get、query、select




]]></description><category></category></item><item><title><![CDATA[Java集合01：集合概述]]></title><link>https://blog.youkuaiyun.com/q734044429/article/details/120704480</link><guid>https://blog.youkuaiyun.com/q734044429/article/details/120704480</guid><author>q734044429</author><pubDate>Wed, 13 Oct 2021 21:31:04 +0800</pubDate><description><![CDATA[一、集合的概述

集合实际上就是一个容器，可以来容纳其他类型的数据。数组其实就是一个集合
集合为什么在开发中使用较多？

集合是一个容器，是一个载体，可以一次容纳多个对象。在实际开发中，假设连接数据库，数据库当中有10条记录，那么假设把这10条记录查询出来，在Java程序中会将10条记录封装成10个Java对象，然后将10个Java对象放到某一个集合中，将集合传到前端，然后遍历集合，将一个数据一个数据展现出来。


集合不能直接存储基本数据类型，另外集合也不能直接存储Java对象，集合当中存储的都是Java]]></description><category></category></item></channel></rss>