<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Simle_Hi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Simle_Hi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Simle_Hi]]></copyright><item><title><![CDATA[ThreadLocal]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/121931216</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/121931216</guid><author>Simle_Hi</author><pubDate>Tue, 14 Dec 2021 16:57:37 +0800</pubDate><description><![CDATA[对于某一ThreadLocal来讲，他的索引值i是确定的，在不同线程之间访问时访问的是不同的table数组的同一位置即都为table[i]，只不过这个不同线程之间的table是独立的。
	对于同一线程的不同ThreadLocal来讲，这些ThreadLocal实例共享一个table数组，然后每个ThreadLocal实例在table中的索引i是不同的。

...]]></description><category></category></item><item><title><![CDATA[搭建微服务模块踩得坑]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/121618564</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/121618564</guid><author>Simle_Hi</author><pubDate>Mon, 29 Nov 2021 20:33:00 +0800</pubDate><description><![CDATA[1、坑1 api中feignclient中的名字


@FeignClient(name = "****") 和 该微服务名字不一样，调用api 会报feign.FeignException$ServiceUnavailable: [503 Service Unavailable] during GET …

解决方法： name = "user-server" 的名字要和 application.yaml中spring: application: name: user-server 一样



2、坑..]]></description><category></category></item><item><title><![CDATA[springcloud整合Admin]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/121101624</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/121101624</guid><author>Simle_Hi</author><pubDate>Tue, 02 Nov 2021 18:57:42 +0800</pubDate><description><![CDATA[一、整合Admin

1、添加依赖（注意版本和springboot版本要一致，否则会报错，我的springboot版本是2.5.5）


&lt;dependency&gt;
            &lt;groupId&gt;de.codecentric&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-admin-starter-server&lt;/artifactId&gt;
            &lt;version&gt;.]]></description><category></category></item><item><title><![CDATA[实现自定义starter步骤]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/120869602</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/120869602</guid><author>Simle_Hi</author><pubDate>Wed, 20 Oct 2021 17:22:36 +0800</pubDate><description><![CDATA[一、创建项目工程

在IDEA中创建一个空项目，两个moudle，分别是sunshine-spring-boot-starter和sunshine-spring-boot-starter-autoconfigurer



1、创建一个空项目





点击finish



创建moudle



新建一个sunshine-spring-boot-starter maven项目







点击finish即可

再新建一个moudle为sunshine-spring-boot-s...]]></description><category></category></item><item><title><![CDATA[cglib代理]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/120059781</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/120059781</guid><author>Simle_Hi</author><pubDate>Thu, 02 Sep 2021 15:03:55 +0800</pubDate><description><![CDATA[一、cglib代理


cglib是一个强大、高性能的字节码生成库，它用于在运行时扩展Java类和实现接口；本质上它是通过动态的生成一个子类去覆盖所要代理的类（非final修饰的类和方法）。Enhancer可能是CGLIB中最常用的一个类，和jdk中的Proxy不同的是，Enhancer既能够代理普通的class，也能够代理接口。Enhancer创建一个被代理对象的子类并且拦截所有的方法调用（包括从Object中继承的toString和hashCode方法）。Enhancer不能够拦截final方法，例如O]]></description><category></category></item><item><title><![CDATA[JDK动态代理]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/120059355</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/120059355</guid><author>Simle_Hi</author><pubDate>Thu, 02 Sep 2021 13:55:48 +0800</pubDate><description><![CDATA[一、JDK动态代理（只能代理接口，不能代理类）


主要用到这两个类 Proxy和InvocationHandler

Proxy，通过这个类的newProxyInstance方法可以创建代理类的实例对象。

InvocationHandler，动态代理类实现这个接口，可以对目标对象的方法进行处理




二、实现

接口


package com.sunshine.boot.proxy.jdk;

public interface IService {

    void test1();

}


实]]></description><category></category></item><item><title><![CDATA[spring中depend-on，primary和autowire-candidate]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/120056216</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/120056216</guid><author>Simle_Hi</author><pubDate>Thu, 02 Sep 2021 10:57:11 +0800</pubDate><description><![CDATA[一、depend-on

在某个bean注册之前需要依赖于其他bean注册完

比如bean1在注册时需要依赖 beanScopeItem和threadScopeConfig注册完，才能注册


@DependsOn(value = {"beanScopeItem","threadScopeConfig"})
@Component
class Bean1 {
    
}

二、primary和autowire-candidate

primary或者autowire-candidate 主要用于解决容器中]]></description><category></category></item><item><title><![CDATA[spring中自定义bean的作用域]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/120044220</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/120044220</guid><author>Simle_Hi</author><pubDate>Wed, 01 Sep 2021 17:21:08 +0800</pubDate><description><![CDATA[一、自定义作用域需要实现Scope接口

这块实现的作用域是线程级别的


package com.sunshine.boot.common;

import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.config.Scope;

import java.util.HashMap;
import java.util.Map;
import java.util.Object]]></description><category></category></item><item><title><![CDATA[线程Thread]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/118492951</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/118492951</guid><author>Simle_Hi</author><pubDate>Mon, 05 Jul 2021 17:09:58 +0800</pubDate><description><![CDATA[1、当线程睡眠中，使用inputrupt 会中断睡眠，进入catch中。比如线程t1在睡眠，当调用t1.inputrupt（）线程t1停止睡眠。



2、 synchronized:       this对象锁是非公平锁

（1）在多线程使用同一个对象的测试中，只允许同时使用一个对象锁，一个类锁，其他操作搭配都互斥，只能等前一个线程解锁才能让下一个线程使用；
（2）在多线程分别 new 一个对象的测试中，允许同时使用任意的对象锁，也允许对象锁和一个类锁同时使用，但是类锁不能够同时使用，会互斥...]]></description><category></category></item><item><title><![CDATA[ObjectInputStream和ObjectOutputStream注意事项]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/118343066</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/118343066</guid><author>Simle_Hi</author><pubDate>Tue, 29 Jun 2021 20:21:25 +0800</pubDate><description><![CDATA[1、读写顺序一致

2、要求实现序列化或者反序列化对象，需要实现Serializable

3、序列化的类中建议添加SerialVersionUID，为了提高版本兼容性（当对这个类的属性扩展时，相当于版本更新，而不至于是一个新的类）

4、序列化对象时，默认将里面所有属性都序列化，但除了static或transient修饰的成员

5、序列化对象时，要求里面的属性也需要实现序列化接口

6、序列化具备可继承性，也就是如果某类已经实现了序列化，则它的所有子类也已经默认实现序列化




...]]></description><category></category></item><item><title><![CDATA[Java网络编程 TCP，UDP注意点]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/118111368</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/118111368</guid><author>Simle_Hi</author><pubDate>Tue, 22 Jun 2021 17:17:32 +0800</pubDate><description><![CDATA[TCP编程

1、服务器端，使用ServerSocket对象的accept（） 方法会使当前线程阻塞，直到接受到客户端请求，程序进行执行。

2、使用Socket对象获取输入流，InputStream.read()方法会获取数据，如果无数据可读，就会阻塞直到有数据可读。或者到达流的末尾，这个时候分别返回-1和null。



UDP编程

1、使用datagramSocket.receive(datagramPacket)接收数据，receive（）方法等待数据报的到来，该方法会一直阻塞调用该方法的线程，.]]></description><category></category></item><item><title><![CDATA[Java枚举类]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/118080941</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/118080941</guid><author>Simle_Hi</author><pubDate>Mon, 21 Jun 2021 10:23:50 +0800</pubDate><description><![CDATA[enum关键字实现枚举注意事项

1、当我们使用enum关键字开发一个枚举类时，默认会继承Enum类，而且是一个final类。

2、传统的public static
]]></description><category></category></item><item><title><![CDATA[java中四种内部类]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/117969013</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/117969013</guid><author>Simle_Hi</author><pubDate>Wed, 16 Jun 2021 23:16:53 +0800</pubDate><description><![CDATA[一、局部内部类

局部内部类是定义在外部类的局部位置，比如方法中或者代码块中，并且有类名

1、可以直接访问外部类的所有成员，包含私有的。

2、不能
]]></description><category></category></item><item><title><![CDATA[Object里的wait()和notify()]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/116805548</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/116805548</guid><author>Simle_Hi</author><pubDate>Fri, 14 May 2021 22:20:12 +0800</pubDate><description><![CDATA[一、wait

在调用wait（）之前，线程必须获得该对象的对象级锁，即只能在同步方法或者同步块中调用wait方法。在执行wait方法之后，当前线程释放锁。如果调用wait时没有持适当的锁，则会抛出异常。



二、notify

在调用notify（）之前，线程必须获得该对象的对象级锁，即只能在同步方法或者同步块中调用notify方法。在执行notify方法之后，当前线程并不会马上释放该对象锁，要等待notify方法的线程将程序执行完，即就是退出synchronized代码块后，当前线程才释放锁。如果调.]]></description><category></category></item><item><title><![CDATA[spring中的配置文件导入多个bean.xml文件,有id相同的bean]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/115602133</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/115602133</guid><author>Simle_Hi</author><pubDate>Sun, 11 Apr 2021 17:12:53 +0800</pubDate><description><![CDATA[例如在applicationx.xml，导入test1.xml和test2.xml 如下所示

application.xml



&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context.]]></description><category></category></item><item><title><![CDATA[自己遇到的事务失效情况及解决方法]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/113811283</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/113811283</guid><author>Simle_Hi</author><pubDate>Sun, 14 Feb 2021 21:56:18 +0800</pubDate><description><![CDATA[自己遇到的事务失效情况（直接调用的意思是this.B()的形式或者B()形式调用）

同一个类中

1、A方法没有加事务，B方法加了事务，在A方法直接调用B方法，B方法出现异常了，B方法不会回滚

原因：spring在扫描包的时候会扫描到@Transactional注解的方法，spring的回滚是用过代理模式生成的，如果是一个不带事务的方法调用该类的带事务的方法，直接通过this.xxx()调用，而不生成代理事务，所以事务不起作用



2、a方法默认传播行为即Propagation.REQUIRED...]]></description><category></category></item><item><title><![CDATA[spring事务的传播行为详细理解]]></title><link>https://blog.youkuaiyun.com/Simle_Hi/article/details/113809008</link><guid>https://blog.youkuaiyun.com/Simle_Hi/article/details/113809008</guid><author>Simle_Hi</author><pubDate>Sun, 14 Feb 2021 19:46:20 +0800</pubDate><description><![CDATA[spring事务的传播行为详细理解

一，spring七中事务传播行为

　1、　REQUIRED：默认的传播特性，业务方法需要在一个事务中运行，如果一个方法已经处在一个事务中那么就加入到这个事务中，否则就会创建一个事务。

　2、　NEVER:指定的业务方法绝对不能在事务范围内运行，如果业务方法在某个事务中执行，就会抛异常，只有业务方法没有任何事务才正常执行。

　3、　MANDATORY:该属性指定业务方法只能在一个已经存在的事务中执行，业务方法不能自己发起自己的事务，如果业务方法不存在事务，容器就抛异]]></description><category></category></item></channel></rss>