<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pureorange的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/pureorange</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; pureorange]]></copyright><item><title><![CDATA[类加载器]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/112002698</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/112002698</guid><author>pureorange</author><pubDate>Thu, 31 Dec 2020 09:37:36 +0800</pubDate><description><![CDATA[类加载器
类加载器作用：将class文件字节码内容加载到内存中，并将这些静态数据转换为方法区的运行时数据结构，然后在堆中生成一个代表这个类的java.lang.Class对象，作为方法区中类数据的访问入口
一个类的生命周期：加载，连接，初始化。连接中分验证，准备，解析
类加载到内存中需要使用类加载器
根类加载器 Bootstrap
扩展类加载器Extension    继承根类加载器
系统类加载System（应用类加载器）	继承扩展类加载器
自定义类加载器ClassLoader	继承系统类加载器
双亲委派机]]></description><category></category></item><item><title><![CDATA[动态代理]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/112002610</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/112002610</guid><author>pureorange</author><pubDate>Thu, 31 Dec 2020 09:35:53 +0800</pubDate><description><![CDATA[动态代理
反射的应用：动态代理
动态代理的好处：
我们只需要传入需要代理的对象，即被代理对象，就会自动的创建相应的代理类对象，通过代理类对象操作被代理类对象
在动态代理之前，先来了解一下静态代理模式
public interface ClothFactory {
    void produceCloth();
}

代理类
public class ProxyClothFactory implements ClothFactory {
    //代理模式的关键代码
    private ClothFa]]></description><category></category></item><item><title><![CDATA[springmvc:拦截器]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/112002355</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/112002355</guid><author>pureorange</author><pubDate>Thu, 31 Dec 2020 09:21:16 +0800</pubDate><description><![CDATA[拦截器
前段时间，在csdn上查询有关拦截器的知识，但是很多文章都不全部，所以在这里我将大家写的进行了一下整理。
拦截器和过滤器的区别


拦截器是基于Java的反射机制的，而过滤器是基于函数回调。


拦截器依赖web框架，过滤器依赖于servlet容器。


拦截器配置一般在SpringMVC的配置文件中，使用Interceptors标签；过滤器配置在web.xml，使用fileter标签


拦截器只能对action(controller)请求起作用，而过滤器则可以对几乎所有的请求起作用。


在ac]]></description><category></category></item><item><title><![CDATA[反射的相关知识]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/110403874</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/110403874</guid><author>pureorange</author><pubDate>Mon, 30 Nov 2020 20:08:35 +0800</pubDate><description><![CDATA[反射
反射体现运行时的动态性
public class NewInstance1 {
    //体现反射的动态性
    public static void main(String[] args) throws Exception {
        int i = new Random().nextInt(3);
        String classPath="";
        switch (i){
            case 0:
                classPath=]]></description><category></category></item><item><title><![CDATA[DbUtils框架]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/110083262</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/110083262</guid><author>pureorange</author><pubDate>Tue, 24 Nov 2020 15:36:34 +0800</pubDate><description><![CDATA[DbUtils框架
DbUtils操作简单，功能强大；大部分功能都由三大核心实现：DbUtils工具类，ResultSetHandler接口，QueryRunner类
DbUtils工具类：关闭连接，加载驱动
ResultSetHandler接口：处理结果集
常用的实现类
QueryRunner类：增删改查

导jar包  DbUtiles的jar包
简单封装DBUtils

public class DBUtils {
    //创建连接池
    //我这里连接的是C3P0连接池，所以需要导C3P0的]]></description><category></category></item><item><title><![CDATA[获取文本上每个字符出现的次数]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/110083183</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/110083183</guid><author>pureorange</author><pubDate>Tue, 24 Nov 2020 15:34:30 +0800</pubDate><description><![CDATA[获取文本上每个字符出现的次数
方法：遍历文本每一个字符；字符及出现的次数保存在Map中；将Map中数据写入文件
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class WordCount {
    public static v]]></description><category></category></item><item><title><![CDATA[集合遍历，集合长度]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109826557</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109826557</guid><author>pureorange</author><pubDate>Thu, 19 Nov 2020 21:31:11 +0800</pubDate><description><![CDATA[集合遍历
集合都可以用for循环遍历，Set接口的集合不但可以for循环遍历，还可以使用迭代器。
Collection集合遍历
List基础知识
collection是单列集合
Vector初始容量是10，扩容增量：原来的1倍
Vector线程安全，但是速度慢
ArrayList初始容量是10，扩容增量：原来容量*0.5+1
ArrayList线程不安全，查询速度快
List集合遍历
List接口集合可以存储重复的数据，有下标
List接口集合的遍历：
for循环遍历
public class ArrayL]]></description><category></category></item><item><title><![CDATA[判断是否是回文]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109637408</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109637408</guid><author>pureorange</author><pubDate>Thu, 12 Nov 2020 09:58:40 +0800</pubDate><description><![CDATA[public class Test02 {

    public static void main(String[] args) {

        Integer i = 32123;

        palindrome(i);

    }

    public static void palindrome(Object object) 
{//传入一个Object对象，可以传基本数据类型也可以传字符串

        String string = object.toString();

]]></description><category></category></item><item><title><![CDATA[找出1-100的质数]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109631461</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109631461</guid><author>pureorange</author><pubDate>Wed, 11 Nov 2020 21:13:30 +0800</pubDate><description><![CDATA[// 输出1-100中的质数 质数：只能被1和它本身整除
        boolean isFlag = true; //标识i是否被j除尽，除尽就修改其值
        for (int i = 2; i &lt;= 100; i++) { // 遍历2-100
            for (int j = 2; j &lt; i; j++) { 
            // 被除数 被除数从2开始到它本身的前一个数字，即i-1
                if (i % j == 0) {]]></description><category></category></item><item><title><![CDATA[倒置一个整数]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109629662</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109629662</guid><author>pureorange</author><pubDate>Wed, 11 Nov 2020 19:42:51 +0800</pubDate><description><![CDATA[倒置整数
比如：倒置前  int a=123654
倒置后  int a1=456321
public class Test02 {

    public static void main(String[] args) {

        Integer a=542163600;//自动装箱

        String str = a.toString();

        int len=str.length();//这两步是为了得到存储单个数字数组的长度

        int[] rese]]></description><category></category></item><item><title><![CDATA[希尔排序]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109608693</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109608693</guid><author>pureorange</author><pubDate>Tue, 10 Nov 2020 22:17:25 +0800</pubDate><description><![CDATA[希尔排序和插入排序差不多，插入排序是步长为1的希尔排序
需要看解析请看插入排序插入排序
public class ShellSort {

    public static void main(String[] args) {

        int[] arr = {1,3,5,6,-5,9,-6,};

        shellSort(arr);

        System.out.println(Arrays.toString(arr));

    }

    public stati]]></description><category></category></item><item><title><![CDATA[插入排序]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109608659</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109608659</guid><author>pureorange</author><pubDate>Tue, 10 Nov 2020 22:14:42 +0800</pubDate><description><![CDATA[public class Test01 {

    public static void main(String[] args) {

        int[] arr = {23,65,-54,5,54,32,-5};

        insertSort(arr);

        System.out.println(Arrays.toString(arr));

    }

    public static void insertSort(int[] arr) {

        //]]></description><category></category></item><item><title><![CDATA[MySQL数据库表的约束]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109608613</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109608613</guid><author>pureorange</author><pubDate>Tue, 10 Nov 2020 22:12:30 +0800</pubDate><description><![CDATA[文章目录主键约束第一种第二种第三种非空约束唯一性约束AUTO_INCREMENT约束默认值约束外键约束第一种第二种删除外键
主键约束
第一种
create table student (
    id int primary key,
    name varchar(50)
 );

第二种
create table student (
    id int,
    name varchar(50),
    primary key (id)
 );

第三种
create table student(]]></description><category></category></item><item><title><![CDATA[序列化和反序列化（ObjectOutputStream，ObjectInputStream）]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109580785</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109580785</guid><author>pureorange</author><pubDate>Mon, 09 Nov 2020 18:56:53 +0800</pubDate><description><![CDATA[链接: [link](https://www.youkuaiyun.com/).

图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw)

带尺寸的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZ]]></description><category></category></item><item><title><![CDATA[运输层中的TCP协议（Socket，SocketServer）]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109530294</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109530294</guid><author>pureorange</author><pubDate>Fri, 06 Nov 2020 13:57:49 +0800</pubDate><description><![CDATA[运输层中的TCP协议
TCP协议是面向连接的协议，意思就是只有先连接，再通信
先启动服务端，再启动客户端
服务端
/*我是和自己通信，所以选的是本机IP地址，要和其他人电脑通信，可以使用
InetAddress.getByName(String name)返回一个InetAddress，
但是需要在同一个局域网之中*/
public class Server {

    public static void main(String[] args) throws Exception {

        S]]></description><category></category></item><item><title><![CDATA[运输层中的UDP协议（DatagramSocket，DatagramPacket）]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109528901</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109528901</guid><author>pureorange</author><pubDate>Fri, 06 Nov 2020 11:47:28 +0800</pubDate><description><![CDATA[发送方
public class Send {

    public static void main(String[] args) throws Exception {

        //端口号

        int port=10086;

        DatagramSocket socket = new 
DatagramSocket();
        
        String str = "I love you";//传输的消息

        byte[] bytes ]]></description><category></category></item><item><title><![CDATA[观察者模式]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109507922</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109507922</guid><author>pureorange</author><pubDate>Thu, 05 Nov 2020 10:58:20 +0800</pubDate><description><![CDATA[文章目录观察者模式观察者接口观察者接口实现类给观察者发信息的接口（抽象主题）抽象主题的实现类测试
观察者模式
观察者接口
public interface Observer {
    public void receiveMessage(String message);
}

观察者接口实现类
public class ObserverImpl implements Observer {

    private String name;
    public ObserverImpl(String na]]></description><category></category></item><item><title><![CDATA[寻找字符串的最长子串]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109507605</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109507605</guid><author>pureorange</author><pubDate>Thu, 05 Nov 2020 10:55:35 +0800</pubDate><description><![CDATA[/**
 *
 * 找出两个字符串的最长公共子串
 * 思路
 * 找出短的那个字符串   然后通过削短的字符串 和长的字符串作对比
 * 比如
 * 削一个字符 有两种情况  削前面 或者削后面
 * 削两个字符 有三种情况  削两个前面 或者削两个后面 或者一边削一个
 * 削三个字符 有四种情况 以此类推....
 */
 //方法一
public class Test08 {
    public static void main(String[] args) {
         String s]]></description><category></category></item><item><title><![CDATA[单例模式]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109504079</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109504079</guid><author>pureorange</author><pubDate>Thu, 05 Nov 2020 09:48:19 +0800</pubDate><description><![CDATA[两种单例模式
//饿汉式
public class Singleton {
    //单例模式  一个类创建一个对象  这个类创建的对象都是同一个
    private final static Singleton instance = new Singleton();
    private Singleton() {
        
    }
    public static Singleton getInstance() {     
        return instance;
   ]]></description><category></category></item><item><title><![CDATA[判断两个文件内容是否相同(FileInputStream)]]></title><link>https://blog.youkuaiyun.com/pureorange/article/details/109503977</link><guid>https://blog.youkuaiyun.com/pureorange/article/details/109503977</guid><author>pureorange</author><pubDate>Thu, 05 Nov 2020 09:44:43 +0800</pubDate><description><![CDATA[判断两个文件内容是否相同
FileInputStream
public class Test01 {
    public static void main(String[] args) throws Exception {
        FileInputStream fileInputStream1 = new FileInputStream("F:\\a\\copy.txt");
        FileInputStream fileInputStream2 = new FileInputStre]]></description><category></category></item></channel></rss>