<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Theo9的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Theo9</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Theo9]]></copyright><item><title><![CDATA[java.lang.IncompatibleClassChangeError: Found class com.*, but interface was expect]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/120975623</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/120975623</guid><author>Theo9</author><pubDate>Tue, 26 Oct 2021 16:49:43 +0800</pubDate><description><![CDATA[java异常：
Handler dispatch failed; nested exception is java.lang.IncompatibleClassChangeError: Found class com.*, but interface was expected
原因：版本不一致导致的冲突
修复：统一版本号

]]></description><category></category></item><item><title><![CDATA[2021-06-24]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/118187313</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/118187313</guid><author>Theo9</author><pubDate>Thu, 24 Jun 2021 14:22:05 +0800</pubDate><description><![CDATA[mysql的varchar长度
MySQL的varchar定义长度到底是字节还是字符
varchar存储规则：
4.0版本以下，varchar(20)，指的是20字节，如果存放UTF8汉字时，只能存6个（每个汉字3字节）
5.0版本以上，varchar(20)，指的是20字符，无论存放的是数字、字母还是UTF8汉字（每个汉字3字节），都可以存放20个，最大大小是65532字节
Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。

...]]></description><category></category></item><item><title><![CDATA[Cannot find current proxy: Set ‘exposeProxy‘ property on Advised to ‘true‘ to make it available.]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/115766224</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/115766224</guid><author>Theo9</author><pubDate>Fri, 16 Apr 2021 16:32:32 +0800</pubDate><description><![CDATA[当使用AopContext.currentProxy()代理当前service的时候，报Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to make it available.



解决方案：

1、在代理的类上添加注解


@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)

2、在xml配置文件上添加


&lt.]]></description><category></category></item><item><title><![CDATA[mysql操作-以及性能记录]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/108340548</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/108340548</guid><author>Theo9</author><pubDate>Tue, 01 Sep 2020 14:22:17 +0800</pubDate><description><![CDATA[//30w条数据 create 耗时0.04s
create table feature_record_hist_200901 like feature_record;

//空表rename 耗时0.039
rename table feature_record_hist_200901 to feature_record_hist_20200901;

//30w的数据 insert select 耗时3.32s
INSERT into feature_record_hist_20200901 SELEC]]></description><category></category></item><item><title><![CDATA[kafka时间轮-轮询方式]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/106722067</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/106722067</guid><author>Theo9</author><pubDate>Fri, 12 Jun 2020 19:10:49 +0800</pubDate><description><![CDATA[时间轮

kafka中存在大量的延时操作，比如延时生产，延时消费，延时删除等。kafka并没有使用JDK自带的Timer和DelayQuene来实现延时的功能，而是基于时间轮的概念自定义实现了一个用于延时操作的定时器（SystemTimer）。

复杂度

jdk的Timer和DelayQuene的插入和删除的复杂度为O（nlogn）
根据源码分析，Timer底层使用的TaskQueue，内部实现使用的是最小堆
kafka使用的时间轮接近于O（1）,不仅仅是kafka采用了时间轮，在 Netty，Akka,]]></description><category></category></item><item><title><![CDATA[@FeignClient RequestParam.value() was empty on parameter 0]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/106719994</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/106719994</guid><author>Theo9</author><pubDate>Fri, 12 Jun 2020 17:10:24 +0800</pubDate><description><![CDATA[使用@FeignClient注解的时候，如果接口方法中参数没有指明，就会报RequestParam.value() was empty on parameter 0

Result methord(@RequestParam String param)

             VS

Result methord(@RequestParam("param") String param)

idea可以通过如下设置解决


...]]></description><category></category></item><item><title><![CDATA[Kafka常用命令]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/105486412</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/105486412</guid><author>Theo9</author><pubDate>Mon, 13 Apr 2020 13:09:32 +0800</pubDate><description><![CDATA[一、单节点

1、启动kafaka


bin/kafka-server-start.sh  config/server.properties  &amp;

2、创建主题，分区


bin/kafka-topics.sh --zookeeper localhost:2181/kafka --create --topic topic-demo --replication-factor 2 --pa...]]></description><category></category></item><item><title><![CDATA[Lombak ERROR]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/105269205</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/105269205</guid><author>Theo9</author><pubDate>Thu, 02 Apr 2020 14:28:46 +0800</pubDate><description><![CDATA[基于gradle,使用lombak自动配置，代码中没有错误，结果在编译的时候发现报错如下：


Warning:(18, 8) java: lombok.javac.apt.LombokProcessor could not be initialized. Lombok will not run during this compilation: java.lang.RuntimeException...]]></description><category></category></item><item><title><![CDATA[线程池]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/103122033</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/103122033</guid><author>Theo9</author><pubDate>Mon, 18 Nov 2019 15:09:55 +0800</pubDate><description><![CDATA[一、java线程池的参数


			1. corePoolSize:指定了线程池中的线程数量。
			2. maximumPoolSize:指定了线程池中的最大线程数量。
			3. keepAliveTime:当前线程池数量超过 corePoolSize 时，多余的空闲线程的存活时间，即多

			次时间内会被销毁。

			4. unit:keepAliveTime 的单位。
			5. wo...]]></description><category></category></item><item><title><![CDATA[重入锁synchroized,reentrantlock]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/103110577</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/103110577</guid><author>Theo9</author><pubDate>Sun, 17 Nov 2019 22:16:36 +0800</pubDate><description><![CDATA[重入锁：在同一个线程内可以对同一个资源锁多次，且都可以上锁成功。

能够重入的锁有synchroized和reentrantLock

一、synchroized


public class AddNum {

    private Integer num = 9;
    public int add(int a){
        synchronized (num){
         ...]]></description><category></category></item><item><title><![CDATA[十个线程执行1+2+3+4+...+n]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/103020646</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/103020646</guid><author>Theo9</author><pubDate>Sat, 16 Nov 2019 22:37:08 +0800</pubDate><description><![CDATA[问题：十个线程执行1+2+3+4+...+n

1、方法一

使用volatile


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class AddNum {
    public static void main(String[] args) {
    ...]]></description><category></category></item><item><title><![CDATA[IO原理]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/103100873</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/103100873</guid><author>Theo9</author><pubDate>Sat, 16 Nov 2019 21:48:21 +0800</pubDate><description><![CDATA[BIO:阻塞同步IO

NIO:同步非阻塞IO

AIO:异步非阻塞IO

JDK1.6之前都是使用BIO和NIO,JDK1.7之后AIO（NIO 2.0）得到了应用

一、阻塞IO（BIO）

阻塞IO是最传统的一种IO,在读写数据的时候会发生阻塞现象，当用户线程发出IO请求后，内核会去检查数据是否已经准备就绪，如果数据没有就绪，就会出现阻塞现象，用户线程会交出CPU。当数据准备就绪后，内核则将...]]></description><category></category></item><item><title><![CDATA[concat和group_concat --Mysql]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/102677747</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/102677747</guid><author>Theo9</author><pubDate>Tue, 22 Oct 2019 10:33:47 +0800</pubDate><description><![CDATA[1、concat和group_concat都是用在sql语句中做拼接使用的，但是两者使用的方式不尽相同，concat是针对以行数据做的拼接，而group_concat是针对列做的数据拼接，且group_concat自动生成逗号。

2、concat的使用



结果



3、group_concat的使用：



结果：



而且group_concat一般和group by 结合使用比较多
...]]></description><category></category></item><item><title><![CDATA[mybais-show slave(master) status]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/102625807</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/102625807</guid><author>Theo9</author><pubDate>Fri, 18 Oct 2019 15:09:04 +0800</pubDate><description><![CDATA[1、现在的数据库一般都在适用主从库，由于某个时段，数据库压力比较大就会导致从库出现延迟，从库查询的数据不准确。

所以在做从库查询的时候，需要判断当前从库的延迟时间。

2、在数据库命令中，我们可以执行show slave status 查看当前mysql从库的状态。

3、在项目中使用mybatis

mapper.java


/**
     * 查询从库状态
     * @return
...]]></description><category></category></item><item><title><![CDATA[sleep(),wait(),join(),yield(),suspend(),resume()方法]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/101062748</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/101062748</guid><author>Theo9</author><pubDate>Fri, 20 Sep 2019 23:54:14 +0800</pubDate><description><![CDATA[1、sleep()

在Thread.class中对其描述为：


/**
     * Causes the currently executing thread to sleep (temporarily cease
     * execution) for the specified number of milliseconds, subject to
     * the precisi...]]></description><category></category></item><item><title><![CDATA[RabbitMq:java.lang.NoClassDefFoundError: org/springframework/util/backoff/BackOff]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/100980077</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/100980077</guid><author>Theo9</author><pubDate>Wed, 18 Sep 2019 13:28:04 +0800</pubDate><description><![CDATA[一、报错内容

Caused by: java.lang.ClassNotFoundException: org.springframework.util.backoff.BackOff
 at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
 at java.lang.ClassLoader.loadClass(C...]]></description><category></category></item><item><title><![CDATA[JVM-GC 判断对象是否存活]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/100831471</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/100831471</guid><author>Theo9</author><pubDate>Sun, 15 Sep 2019 12:14:14 +0800</pubDate><description><![CDATA[一、判断对象是否存活的方法

1、引用计数法

    引用计数法是一个比价基础的判断方法，为对象配置一个计数器，每出现一个对该对象引用的地方，则计数器加一，每有一个引用失效，则计数器减一。当计数器的累计值为0的时候，表示该对象没有地方引用了，已经死亡。

    引用计数法的有点事效率比较高，实现比交简单；缺点是很难解决对象与对象之间的相互引用。

2、根搜索算法

   ...]]></description><category></category></item><item><title><![CDATA[Spring Bean的生命周期]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/100593462</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/100593462</guid><author>Theo9</author><pubDate>Fri, 13 Sep 2019 17:47:15 +0800</pubDate><description><![CDATA[一、整体流程

1、实例化BeanPostFactoryProcessor

2、执行BeanPostFactoryProcessor 的 postProcessorBeanFactory

3、实例化BeanPostProcessor

4、实例化InstantiationAwareBeanPostProcessor

5、执行InstantiationAwareBeanPostProcesso...]]></description><category></category></item><item><title><![CDATA[单向链表反转]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/100540627</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/100540627</guid><author>Theo9</author><pubDate>Thu, 05 Sep 2019 15:10:13 +0800</pubDate><description><![CDATA[一、链表

链表的结构是一种非线性的数据结构，优点是可以充分使用空间，插入和删除节点的时候不需要遍历节点速度较快，但是由于其特性在查找的时候遍历速度比较慢。每一个节点在存储自己的数据的时候，还存储下一个节点的物理位置。

可抽象为：



二、链表反转

1、新增物理存储反转

如图：

1
			2
			3
			4
			null
		

第一步：生成一个新的节点1

1
		

第二步...]]></description><category></category></item><item><title><![CDATA[MAC安装JDK1.8]]></title><link>https://blog.youkuaiyun.com/Theo9/article/details/100529813</link><guid>https://blog.youkuaiyun.com/Theo9/article/details/100529813</guid><author>Theo9</author><pubDate>Tue, 03 Sep 2019 23:06:40 +0800</pubDate><description><![CDATA[一、资源下载

jdk1.8下载：

链接:https://pan.baidu.com/s/1KkyIzv3gl4ScSANGn9nSpQ 密码:jtih

安装：双击，continue就可以

二、环境配置

1、查看jdk的安装位置

/usr/libexec/java_home -V


$ /usr/libexec/java_home -V
Matching Java Virtual M...]]></description><category></category></item></channel></rss>