<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[helloWorld]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/weixin_43005178</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weixin_43005178]]></copyright><item><title><![CDATA[【vue异常解决】Invalid default value for prop “items“: Props with type Object/Array must use a factory]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/127903543</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/127903543</guid><author>weixin_43005178</author><pubDate>Thu, 17 Nov 2022 14:40:19 +0800</pubDate><description><![CDATA[vue组件通信异常解决]]></description><category></category></item><item><title><![CDATA[springcloud-alibaba五大核心组件-后端开发工程（脚手架）搭建]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/127209653</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/127209653</guid><author>weixin_43005178</author><pubDate>Sat, 08 Oct 2022 15:27:19 +0800</pubDate><description><![CDATA[springcloud-alibaba微服务最小系统搭建]]></description><category></category></item><item><title><![CDATA[mybatis-plus通用业务分页查询封装]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/127104349</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/127104349</guid><author>weixin_43005178</author><pubDate>Thu, 29 Sep 2022 12:32:42 +0800</pubDate><description><![CDATA[mybatis-plus通用业务分页查询封装]]></description><category></category></item><item><title><![CDATA[Linux内核零拷贝底层原理]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/122360600</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/122360600</guid><author>weixin_43005178</author><pubDate>Fri, 07 Jan 2022 11:21:53 +0800</pubDate><description><![CDATA[传统拷贝模式

写过程：

用户空间到内核空间：用户态切换到内核态，调用CPU Copy进行一次数据拷贝，拷贝到内核空间缓存。
由DMA中断去触发，进行一次DMA Copy，把内核空间缓存数据拷贝到磁盘/网络中。
完成之后，就不再发生拷贝了，就由内核态切换回用户态了。
此时经历：2次上下文切换，1次CPU拷贝，1次DMA拷贝。

读过程：

由用户空间发送read()命令到内核空间，此时经历用户态切换到内核态。
由DMA中断触发，使磁盘/网络发生一次DMA Copy，把数据拷贝到内核缓存空间。
再由内核缓存]]></description><category></category></item><item><title><![CDATA[CountDownLatch底层源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/122351669</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/122351669</guid><author>weixin_43005178</author><pubDate>Thu, 06 Jan 2022 20:03:36 +0800</pubDate><description><![CDATA[先写一个简单的demo
public class Test7766 {
    static CountDownLatch countDownLatch = new CountDownLatch(1);
    public static void main(String[] args) {
        Thread t1 = new Thread(()-&gt;{
            try {
                System.out.println(Thread.currentTh]]></description><category></category></item><item><title><![CDATA[ReentrantLock锁底层源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/122349077</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/122349077</guid><author>weixin_43005178</author><pubDate>Thu, 06 Jan 2022 18:41:59 +0800</pubDate><description><![CDATA[主要针对lock()、unlock()、锁的可重入性进行源码分析
先来看一个测试代码
public class Test7878 {

    public static ReentrantLock lock = new ReentrantLock(true);
    
    public static void main(String[] args) {
        Thread t1 = new Thread(()-&gt;{
            lock.lock();
         ]]></description><category></category></item><item><title><![CDATA[微服务注册中心Nacos底层源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/122312097</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/122312097</guid><author>weixin_43005178</author><pubDate>Tue, 04 Jan 2022 21:34:05 +0800</pubDate><description><![CDATA[Nacos版本1.3.1
启动console项目
启动配置修改为单机启动
-Dnacos.standalone=true

Nacos服务注册与发现
启动nacos服务端，启动nacos客户端，注册到nacos服务端
查看一下控制台输出日志
客户端
2022-01-03 23:01:18.864  INFO 14756 --- [           main] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP ]]></description><category></category></item><item><title><![CDATA[分布式事务Seata框架底层源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/122309897</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/122309897</guid><author>weixin_43005178</author><pubDate>Tue, 04 Jan 2022 19:41:01 +0800</pubDate><description><![CDATA[Seata 是一款开源的分布式事务解决方案，致力于提供高性能和简单易用的分布式事务服务。

TC:事务管理器
TM:事务开始服务
RM:事务参与过程的其他服务

底层实现流程

TM和RM都连接到我们的事务协调器TC。
TM和RM服务的数据源都被Seata代理，执行语句的前后会保存两条记录，一条是执行前的记录，一条是执行后的记录，是方便后期可以逆向的生成sql去回滚事务。具体记录存放在seata的undo_log表中。
TM在使用RPC-Feign远程调用的时候，在ThreadLocal中获取xid。
RM]]></description><category></category></item><item><title><![CDATA[微服务注册中心Eureka核心源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/122289708</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/122289708</guid><author>weixin_43005178</author><pubDate>Mon, 03 Jan 2022 17:21:22 +0800</pubDate><description><![CDATA[服务注册源码分析
查看一下eurekaClient端启动注册的日志信息
2022-01-03 02:00:34.662  INFO 8184 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ORDER-SERVICE/DESKTOP-QP9T922:order-service:9001: registering service...

我们根据日志，找到DiscoveryClient这个类对应的]]></description><category></category></item><item><title><![CDATA[SpringAop代理模式底层核心源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/122251909</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/122251909</guid><author>weixin_43005178</author><pubDate>Fri, 31 Dec 2021 21:52:25 +0800</pubDate><description><![CDATA[aop核心的bean是什么？
一般情况会使用@EnableAspectJAutoProxy注解来使Aop注入到我们Spring的IoC容器中，那这个注入的类是啥呢
测试代码如下
@Configuration
@EnableAspectJAutoProxy
public class MyConfig {
}
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new ]]></description><category></category></item><item><title><![CDATA[Spring框架Ioc容器加载流程及Bean的生命周期源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/121806724</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/121806724</guid><author>weixin_43005178</author><pubDate>Thu, 30 Dec 2021 23:56:57 +0800</pubDate><description><![CDATA[Spring源码分析-IoC容器]]></description><category></category></item><item><title><![CDATA[RocketMQ解决分布式事务问题]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/121984293</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/121984293</guid><author>weixin_43005178</author><pubDate>Thu, 16 Dec 2021 23:20:55 +0800</pubDate><description><![CDATA[现模拟一个分布式事务的小例子
给出两个服务：
order-service：订单服务
stock-service：库存服务
库存服务表结构如下
CREATE TABLE `stock_info` (
  `stock_id` bigint(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `num` bigint(11) DEFAULT NULL,
  PRIMARY KEY (`stock_id`)
) ENGINE=Inn]]></description><category></category></item><item><title><![CDATA[SpringCloud-Alibaba服务注册中心Nacos搭建]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/121973487</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/121973487</guid><author>weixin_43005178</author><pubDate>Thu, 16 Dec 2021 14:12:21 +0800</pubDate><description><![CDATA[Nacos版本：nacos-server-2.0.3.zip
nacos文档位置
https://nacos.io/zh-cn/docs/quick-start.html
找到git仓库，直接下载zip文件
启动脚本
XXX:\nacos\bin\startup.cmd

启动遇到的问题
1.点击脚本没反应
使用命令行启动脚本，发现环境变量没有配置JAVA_HOME。
解决方案：环境变量配置下JAVA_HOME，指向到jdk目录下即可，linux环境同理。
2.启动报错Nacos failed to sta]]></description><category></category></item><item><title><![CDATA[LinkedList底层源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/119548261</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/119548261</guid><author>weixin_43005178</author><pubDate>Mon, 09 Aug 2021 22:11:19 +0800</pubDate><description><![CDATA[LinkedList源码分析
add()
public boolean add(E e) {
    linkLast(e);
    return true;
}

继续跟到linkLast()这个方法
void linkLast(E e) {
    final Node&lt;E&gt; l = last;
    final Node&lt;E&gt; newNode = new Node&lt;&gt;(l, e, null);
    last = newNode;
    if (l == n]]></description><category></category></item><item><title><![CDATA[ArrayList底层源码分析]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/119489040</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/119489040</guid><author>weixin_43005178</author><pubDate>Sat, 07 Aug 2021 16:49:01 +0800</pubDate><description><![CDATA[ArrayList底层源码分析
ArrayList底层，主要是由数组实现
看代码
List&lt;String&gt; list = new ArrayList&lt;&gt;();

我们new出一个ArrayList()后，看看底层构造函数做了哪些事情
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
transient Object[] elementData;
public ArrayList() {
    ]]></description><category></category></item><item><title><![CDATA[MySQL底层索引优化]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/119319044</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/119319044</guid><author>weixin_43005178</author><pubDate>Mon, 02 Aug 2021 10:15:12 +0800</pubDate><description><![CDATA[MySQL索引调优原则

禁止join超过三张表
联合索引左前缀法则
禁止回表查询

MySQL查询EXPLAIN-type级别

All    全表扫描，最原生的sql状态，有很大的优化空间
index    另一种形式的全表扫描，扫描顺序是按照索引的顺序，扫描根据索引然后回表查询数据
range    指的是有范围的全表扫描，相对于index有了范围，要优于index
ref    查询条件使用了索引，而没用主键和unique，虽然用烂了索引但索引列的值不唯一，有重复
ref_eq    比ref好在它]]></description><category></category></item><item><title><![CDATA[Java9~Java11常用新特性整合]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/119298119</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/119298119</guid><author>weixin_43005178</author><pubDate>Sun, 01 Aug 2021 14:49:49 +0800</pubDate><description><![CDATA[本地变量类型判断
var str = "hello Java11";
System.out.println(str);//hello Java11
var list = new ArrayList&lt;String&gt;();
list.add("hello Java11");
System.out.println(list.get(0));//hello Java11

可以使用var,而不用写具体的类型
字符串新特性

isBlank()

// 判断空白字符串
String str = "  ";]]></description><category></category></item><item><title><![CDATA[自定义注解+Aop实现spring声明式事务]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/118076972</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/118076972</guid><author>weixin_43005178</author><pubDate>Sun, 20 Jun 2021 23:17:59 +0800</pubDate><description><![CDATA[SpringAop+自定义注解实现声明式事务
Spring事务实现方式
@Override
@Transactional
public Integer insertUser() throws RuntimeException {
    int i = userMapper.insertUser();
    int j = 1/0;
    return i;
}

spring中使用@Transactional来控制，当发生异常时，回滚当前所有事务。
这个注解是如何实现的呢？
先自定义一个注解
@Tar]]></description><category></category></item><item><title><![CDATA[【DevOps】maven没有主清单属性]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/117548313</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/117548313</guid><author>weixin_43005178</author><pubDate>Fri, 04 Jun 2021 09:07:43 +0800</pubDate><description><![CDATA[springboot添加
&lt;build&gt;
    &lt;plugins&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
        &lt;/plugin&gt;
    &lt;/plugins&gt;]]></description><category></category></item><item><title><![CDATA[【DevOps】jenkins+docker+harbor打包docker镜像到harbor镜像仓库]]></title><link>https://blog.youkuaiyun.com/weixin_43005178/article/details/117548229</link><guid>https://blog.youkuaiyun.com/weixin_43005178/article/details/117548229</guid><author>weixin_43005178</author><pubDate>Fri, 04 Jun 2021 09:06:25 +0800</pubDate><description><![CDATA[编写Dockerfile文件
FROM java:8
ADD springcloud-eureka-1.0-SNAPSHOT.jar /usr/local
WORKDIR /usr/local
ENTRYPOINT ["/bin/bash","-c","sh bin/eureka-app.sh &amp;&amp; sleep 5 &amp;&amp; tail -f /usr/local/applogs/springcloud-eureka-app.log"]

测试docker连接到harbor私有仓库]]></description><category></category></item></channel></rss>