<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Gsasuke的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Gsasuke</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Gsasuke]]></copyright><item><title><![CDATA[自定义类加载器]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/115831837</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/115831837</guid><author>Gsasuke</author><pubDate>Sun, 18 Apr 2021 15:42:57 +0800</pubDate><description><![CDATA[import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class UserCustomerClassLoader extends ClassLoader{
    //1、创建一个私有的String类型的classPath变量，确定class文件位置
    private String classPath;

    public UserCusto]]></description><category></category></item><item><title><![CDATA[refresh( )]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/115417639</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/115417639</guid><author>Gsasuke</author><pubDate>Sat, 03 Apr 2021 17:48:08 +0800</pubDate><description><![CDATA[refresh()

1、准备工作;

prepareRefresh();


2、创建beanFactory

ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
但是还没有填充属性


3、对beanFactory填充属性

prepareBeanFactory(beanFactory);


4、PostProcessBeanFactory

没有具体实现方法，子类覆盖方法做额外的处理，此处我们自己一般不做任何]]></description><category></category></item><item><title><![CDATA[可重入锁]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/115184270</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/115184270</guid><author>Gsasuke</author><pubDate>Fri, 26 Mar 2021 19:45:25 +0800</pubDate><description><![CDATA[同步方法
public class ReEnterLockDemo {
    static Object objectLockA = new Object();

    public static void m1(){
        new Thread(() -&gt; {
            synchronized (objectLockA){
                System.out.println(Thread.currentThread().getName()+"\t"+"]]></description><category></category></item><item><title><![CDATA[死锁]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/115149733</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/115149733</guid><author>Gsasuke</author><pubDate>Tue, 23 Mar 2021 23:03:07 +0800</pubDate><description><![CDATA[一、产生死锁代码
public class Main{
    public static void main(String[] args) {
        Object o1 = new Object();
        Object o2 = new Object();
        //t1 和 t2 两个线程共享o1,o2
        Thread t1 = new MyThread1(o1,o2);
        Thread t2 = new MyThread2(o1,o2);

]]></description><category></category></item><item><title><![CDATA[zookeeper]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114919829</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114919829</guid><author>Gsasuke</author><pubDate>Wed, 17 Mar 2021 17:07:53 +0800</pubDate><description><![CDATA[centsos 启动zookeeper
cd /usr/local/zookeeper/zookeeper-3.4.9/bin
./zkServer.sh start

mac 启动
来到bin文件夹
zkServer start


]]></description><category></category></item><item><title><![CDATA[dubbo]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114872112</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114872112</guid><author>Gsasuke</author><pubDate>Tue, 16 Mar 2021 16:15:00 +0800</pubDate><description><![CDATA[打开Dubbo的monitor
cd dubbo-admin-distribution/target

java -jar dubbo-admin-0.3.0-SNAPSHOT.jar


]]></description><category></category></item><item><title><![CDATA[阻塞队列——SynchronousQueue]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114682107</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114682107</guid><author>Gsasuke</author><pubDate>Thu, 11 Mar 2021 22:37:55 +0800</pubDate><description><![CDATA[SynchronousQueue：不存储元素的阻塞队列，也即单个元素的队列
是阻塞队列的一个实现类，没有容量，与其他的BlockQueue不同，SynchronousQueue是一个不存储元素的BlockQueue，每一个put操作必须等待一个take消费，否则不能消费，也就是说，生产一个消费一个

public class HelloGC {
    public static void main(String[] args) throws InterruptedException {
       B.]]></description><category></category></item><item><title><![CDATA[聚簇索引与非聚簇索引]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114409641</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114409641</guid><author>Gsasuke</author><pubDate>Fri, 05 Mar 2021 20:34:57 +0800</pubDate><description><![CDATA[聚簇索引

非聚簇索引


]]></description><category></category></item><item><title><![CDATA[链表——两数相加]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114366513</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114366513</guid><author>Gsasuke</author><pubDate>Thu, 04 Mar 2021 14:16:36 +0800</pubDate><description><![CDATA[class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode root= new ListNode(0);
        ListNode cursor = root;

        int carry = 0;
        //只要有一个不为空就继续
        while(l1 != null || l2 != null){
            //判断..]]></description><category></category></item><item><title><![CDATA[手写lru算法]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114256241</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114256241</guid><author>Gsasuke</author><pubDate>Mon, 01 Mar 2021 10:35:26 +0800</pubDate><description><![CDATA[public class LRUcache&lt;K,V&gt; extends LinkedHashMap&lt;K,V&gt; {
    private  int size;

    public LRUcache(int size) {
        super(size,0.75F,true);
        this.size = size;
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry&lt;]]></description><category></category></item><item><title><![CDATA[多个key同时被修改]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114187530</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114187530</guid><author>Gsasuke</author><pubDate>Sat, 27 Feb 2021 19:31:28 +0800</pubDate><description><![CDATA[watch+mutil保证同一个key不被多次修改
RedisTemplate template  = null;//这里配置自己的redis
        template.watch("key");
        template.multi();
        template.opsForValue().set("key","value");
        List exec = template.exec();
        if (null==exec){
            Sy]]></description><category></category></item><item><title><![CDATA[Jap测试Redis]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114163576</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114163576</guid><author>Gsasuke</author><pubDate>Sat, 27 Feb 2021 10:22:11 +0800</pubDate><description><![CDATA[@SpringBootTest
public class  RedisTest {

    @Autowired
    private RedisTemplate&lt;String, String&gt; redisTemplate;

    @Autowired
    private HrRepository hrRepository;

    @Test
    public void test() throws JsonProcessingException {
        //1.从]]></description><category></category></item><item><title><![CDATA[工厂模式]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114026858</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114026858</guid><author>Gsasuke</author><pubDate>Wed, 24 Feb 2021 17:56:12 +0800</pubDate><description><![CDATA[实例化对象，用工厂方法代替new操作，实现了创建者和调用者的分离
将选择实现类，创建对象统一管理和控制。从而将调用者与实现类结耦


简单工厂模式


简单工厂模式也叫静态工厂模式，就是工厂类一般使用静态方法，通过接收的参数的不同来返回不同的对象
对于增加新产品无能为力。不修改代码的话是无法拓展的


public interface Car {
    void run();
}

public class Audi implements Car {
    @Override
    public ..]]></description><category></category></item><item><title><![CDATA[单例模式]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/114020724</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/114020724</guid><author>Gsasuke</author><pubDate>Wed, 24 Feb 2021 15:54:42 +0800</pubDate><description><![CDATA[单例模式
保证一个类只有一个实例，并且提供一个访问该实例的全局访问点
例如：数据库连接吃，spring中的每个bean默认是单例的
饿汉式

线程安全，效率高，但是不能延时加载
饿汉式中，static会在类装载时初始化，所以不会涉及多个线程对象访问的问题。
但是，如果只是加载本类，而并不调用getInstance()，则会出现资源浪费

/**
 * 饿汉式
 */
public class SingletonDemo1 {

    //类初始化时，立刻加载这个对象。加载类时线程安全 （没有延迟加载）
 ]]></description><category></category></item><item><title><![CDATA[动态规划（2）]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/113888208</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/113888208</guid><author>Gsasuke</author><pubDate>Sun, 21 Feb 2021 11:17:03 +0800</pubDate><description><![CDATA[动态规划非常多在数组中取一定条件子集的题
动态规划最重要的还是要找到状态方程
股票买卖问题
股票买卖是非常经典的动态规划的题

给定一个数组 prices ，它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票，并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润，返回 0 。

这是股票买卖的动态方程：
		for(int i=1;i&lt;prices.]]></description><category></category></item><item><title><![CDATA[回溯算法]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/113845704</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/113845704</guid><author>Gsasuke</author><pubDate>Thu, 18 Feb 2021 17:02:27 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[N皇后]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/113849465</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/113849465</guid><author>Gsasuke</author><pubDate>Thu, 18 Feb 2021 16:51:49 +0800</pubDate><description><![CDATA[package Leetcode;

public class placeQueens {
    public static void main(String[] args) {
       new placeQueens().placeQueens(8);

    }

    /*
    数组索引是行号，数组元素是列号
     */
    int[] cols;
    //多少种方法
    int ways;
    void placeQueens(int n){

        i]]></description><category></category></item><item><title><![CDATA[动态规划]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/113846548</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/113846548</guid><author>Gsasuke</author><pubDate>Thu, 18 Feb 2021 16:51:06 +0800</pubDate><description><![CDATA[package Leetcode;

public class DProgrammer {
    public static void main(String[] args) {
        System.out.println(coins(50));
    }
    /*
    coins(n-25)+1第一次选择25所需要的最少硬币
    coins(n-20)+1第一次选择25所需要的最少硬币
    coins(n-5)+1第一次选择25所需要的最少硬币
    coins(n-1).]]></description><category></category></item><item><title><![CDATA[算法题1]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/113844838</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/113844838</guid><author>Gsasuke</author><pubDate>Thu, 18 Feb 2021 12:46:34 +0800</pubDate><description><![CDATA[题目：给定n，构造长度为n的排列，使满足j&lt;j&lt;k的aj，ai，ak，不出现ak+ai=aj*2
public class test01 {
    public static void main(String[] args) {
        Solve solve = new Solve();
        solve.solve(1,10,0);
        for (int i=1;i&lt;= 10;i++){
            System.out.print(solv]]></description><category></category></item><item><title><![CDATA[ReadWriteLock]]></title><link>https://blog.youkuaiyun.com/Gsasuke/article/details/113839350</link><guid>https://blog.youkuaiyun.com/Gsasuke/article/details/113839350</guid><author>Gsasuke</author><pubDate>Wed, 17 Feb 2021 22:43:34 +0800</pubDate><description><![CDATA[读-读能共享
读-写不能共享
写-写不能共享

public class ReadWriteLockDemo {
    public static void main(String[] args) {
        MyCache myCache = new MyCache();
       for (int i = 1;i&lt;=5;i++){
           final int tempInt = i;
           new Thread(() -&gt; {
         .]]></description><category></category></item></channel></rss>