<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[R_TJW的博客]]></title><description><![CDATA[IT取经之路]]></description><link>https://blog.youkuaiyun.com/X_Crew_TJ</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; X_Crew_TJ]]></copyright><item><title><![CDATA[windows安装docker]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/121655180</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/121655180</guid><author>X_Crew_TJ</author><pubDate>Wed, 01 Dec 2021 15:39:25 +0800</pubDate><description><![CDATA[windows安装docker教程windows安装wsl2(一个适用于 Linux 的 Windows 子系统)[安装步骤]步骤 1 - 启用适用于 Linux 的 Windows 子系统步骤 2 - 检查运行 WSL 2 的要求步骤 3 - 启用虚拟机功能步骤 4 - 下载 Linux 内核更新包步骤 5 - 将 WSL 2 设置为默认版本步骤 6 - 安装所选的 Linux 分发
windows安装wsl2(一个适用于 Linux 的 Windows 子系统)
[安装步骤]

https://docs]]></description><category></category></item><item><title><![CDATA[SpringCloud原理]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/118928586</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/118928586</guid><author>X_Crew_TJ</author><pubDate>Tue, 20 Jul 2021 14:18:31 +0800</pubDate><description><![CDATA[文章目录SpringCloud业务场景(已支付订单为例)核心组件一:Eureka核心组件二:Feign核心组件三：Ribbon核心组件四:Hystrix核心组件五: Zuul总结
SpringCloud
SpringCloud是基于SpringBoot的一整套实现微服务的框架。它提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是，基于SpringBoot，会让开发微服务架构非常方便。
简而言之:一个帮助开发微服务应用的框]]></description><category></category></item><item><title><![CDATA[Redision分布式锁]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/118785893</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/118785893</guid><author>X_Crew_TJ</author><pubDate>Fri, 16 Jul 2021 14:59:41 +0800</pubDate><description><![CDATA[Redision分布式锁
为啥使用锁
在并发编程中,避免由于竞争资源而造成数据不一致的问题
锁的操作

加锁
在沙滩上踩一脚,留下自己的脚印,就对应了加锁操作。其他线程或者进程,看到沙滩上有脚印,证明锁已经被别人持有,则等待
解锁
把脚印从沙滩上抹去
锁超时
为了避免死锁,我们可以设置一阵风,在单位时间后,将脚印抹去实现自动解锁

redision分布式锁的源码分析

加锁

public RLock getLock(String name) {
    return new RedissonLock(co]]></description><category></category></item><item><title><![CDATA[Mybatis源码-SQL的执行过程]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/116751367</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/116751367</guid><author>X_Crew_TJ</author><pubDate>Thu, 13 May 2021 16:33:12 +0800</pubDate><description><![CDATA[以mybatis:3.4.2源码为例
参考文章

1.1 SQL 执行入口
XxxMapper xxxMapper = session.getMapper(XXXMapper.class);
XxxObject xxxObject= xxxMapper.sqlMethod(args);


1.1.1 为Mapper接口创建代理对象
public class MapperRegistry {

  private final Configuration config;
  private final Map]]></description><category></category></item><item><title><![CDATA[spring Aop实战]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/116229853</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/116229853</guid><author>X_Crew_TJ</author><pubDate>Wed, 28 Apr 2021 15:51:46 +0800</pubDate><description><![CDATA[spring Aop实战
1.五大通知注解

@Before 前置通知
@After 后置通知
@AfterReturning 返回通知
@AfterThrowable 异常通知
@Around 环绕通知


1.1 @AfterReturning对方法返回的数据进行处理

自定义注解(@ProcessMultiply相当于切入点)

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Pro]]></description><category></category></item><item><title><![CDATA[DDD分层架构]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/114964689</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/114964689</guid><author>X_Crew_TJ</author><pubDate>Thu, 18 Mar 2021 10:51:20 +0800</pubDate><description><![CDATA[1. 经典分层架构(四层架构)

2.工程目录结构
 map  
    ┣ api  
    ┃ ┣ assembler 
    ┃ ┣ controller
    ┃ ┃ ┣ v1
    ┃ ┣ dto
    ┣ app 
    ┃ ┣ service
    ┃ ┃ ┣ impl
    ┣ config
    ┣ domain 
    ┃ ┣ aggregate 
    ┃ ┣ entity 
    ┃ ┣ factory 
    ┃ ┣ repository
    ┃ ┣ ]]></description><category></category></item><item><title><![CDATA[DDD:领域驱动设计]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/114929792</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/114929792</guid><author>X_Crew_TJ</author><pubDate>Wed, 17 Mar 2021 16:33:02 +0800</pubDate><description><![CDATA[DDD的核心思想
通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型和代码模型的一致性
三步划定领域模型和微服务的边界

第一步:在事件风暴中梳理业务过程中的用户操作、事件以及外部依赖关系、根据这些要素梳理出领域实体等领域对象
第二步：根据领域实体之间的业务关联性，将业务紧密相关的实体进行组合形成的聚合，同时确定聚合中的聚合根、值对象和实体。在这个图里，聚合之间的边界是第一层边界，它们在同一个微服务实例中运行，这个边界是逻辑边界
第三步：根据业务及语义边界等因素，将一个或者多个聚合划定在]]></description><category></category></item><item><title><![CDATA[@Retention注解注解]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/112767624</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/112767624</guid><author>X_Crew_TJ</author><pubDate>Mon, 18 Jan 2021 11:25:20 +0800</pubDate><description><![CDATA[@Retention的注解作用


]]></description><category></category></item><item><title><![CDATA[Xshell查看日志]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/108560623</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/108560623</guid><author>X_Crew_TJ</author><pubDate>Sun, 13 Sep 2020 11:41:54 +0800</pubDate><description><![CDATA[一、下载安装Xshell
二、新建链接（输入主机，用户名，密码）

三、进入你的环境日志目录
使用tail -f XXX命令查看实时日志

]]></description><category></category></item><item><title><![CDATA[IDEA插件之Translation翻译插件]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/108560500</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/108560500</guid><author>X_Crew_TJ</author><pubDate>Sun, 13 Sep 2020 11:29:23 +0800</pubDate><description><![CDATA[一、安装
在IDEA的Plugin里直接搜索Translation插件，安装重启IDEA就好了
二、使用
复制所选内容，点击右键，再点Translation就好了


]]></description><category></category></item><item><title><![CDATA[React父子组件传值]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/107321136</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/107321136</guid><author>X_Crew_TJ</author><pubDate>Mon, 13 Jul 2020 17:35:39 +0800</pubDate><description><![CDATA[父组件给子组件传值
父组件 WorkTeam

class WorkTeam extends Component {

  workTeamDS: DataSet;

  constructor(props) {
    super(props);
    this.workTeamDS = new DataSet({
      ...WorkTeamDS(),
    });
  }
 
  @Bind()
  goToAssignStaff(record) {
    Modal.open({
   ]]></description><category></category></item><item><title><![CDATA[TypeScript入门]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/107313214</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/107313214</guid><author>X_Crew_TJ</author><pubDate>Mon, 13 Jul 2020 16:27:56 +0800</pubDate><description><![CDATA[TypeScript入门
TypeScript是什么?
TypeScript是JavaScript的超集,支持ECMAScript 6 标准
TypeScript安装
1.npm安装
2.node安装

3.Visual Studio Code 安装(下载地址)
TypeScript 与面向对象
面向对象是一种对现实世界理解和抽象的方法。
TypeScript 是一种面向对象的编程语言。
面向对象主要有两个概念：对象和类。
对象：对象是类的一个实例（对象不是找个女朋友），有状态和行为。例如，一条狗是一个对象]]></description><category></category></item><item><title><![CDATA[ECMAScript中null,undefinedy以及空字符的判断]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/107244181</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/107244181</guid><author>X_Crew_TJ</author><pubDate>Fri, 10 Jul 2020 11:07:02 +0800</pubDate><description><![CDATA[ECMAScript中null,undefinedy以及空字符的判断
1、null ,undefined,’ '这三种直接判断是false,而[ ],{ }直接判断是true。
import React, { Component } from 'react';
import { render } from 'react-dom';
import Hello from './Hello';
import './style.css';

interface AppProps { }
interface AppS]]></description><category></category></item><item><title><![CDATA[消息中间件MQ]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/106994317</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/106994317</guid><author>X_Crew_TJ</author><pubDate>Sun, 28 Jun 2020 16:54:05 +0800</pubDate><description><![CDATA[为什么使用MQ？MQ的优点?

异步处理 - 相比于传统的串行、并行方式，提高了系统吞吐量。
应用解耦 - 系统间通过消息通信，不用关心其他系统的处理。
流量削锋 - 可以通过消息队列长度控制请求量；可以缓解短时间内的高并发请求。
日志处理 - 解决大量日志传输。
消息通讯 - 消息队列一般都内置了高效的通信机制，因此也可以用在纯的消息通讯。比如实现点对点消息队列，或者聊天室等。
详答

主要是：解耦、异步、削峰。
解耦：A 系统发送数据到 BCD 三个系统，通过接口调用发送。如果 E 系统也要这个数据呢？]]></description><category></category></item><item><title><![CDATA[Java 正则表达式]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/106329157</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/106329157</guid><author>X_Crew_TJ</author><pubDate>Mon, 25 May 2020 14:13:29 +0800</pubDate><description><![CDATA[Java 正则表达式
什么是正则表达式？
正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言，但是在每种语言中有细微的差别。
java.util.regex 包主要包括以下三个类：


Pattern 类：
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象，你必须首先调用其公共静态编译方法，它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。


Matcher]]></description><category></category></item><item><title><![CDATA[Mybatis的工作原理]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/106328041</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/106328041</guid><author>X_Crew_TJ</author><pubDate>Mon, 25 May 2020 11:02:15 +0800</pubDate><description><![CDATA[Mybatis是什么?

MyBatis 是一款优秀的持久层框架，它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息，将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。（这是官网解释）

个人理解：就是一个通过注解或者xml，来操作数据库的一个工具。
Mybatis的工作流程
当框架启动时，通过c]]></description><category></category></item><item><title><![CDATA[Java Map.Entry的使用方法解析]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/106327943</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/106327943</guid><author>X_Crew_TJ</author><pubDate>Mon, 25 May 2020 10:40:03 +0800</pubDate><description><![CDATA[Java Map.Entry的使用方法解析
Map是java中的接口，Map.Entry是Map的一个内部接口。
Map提供了一些常用方法，如keySet()、entrySet()等方法，keySet()方法返回值是Map中key值的集合；entrySet()的返回值也是返回一个Set集合，此集合的类型为Map.Entry。
Map.Entry是Map声明的一个内部接口，此接口为泛型，定义为Entry&lt;K,V&gt;。它表示Map中的一个实体（一个key-value对）。接口中有getKey(),ge]]></description><category></category></item><item><title><![CDATA[Git的个人见解]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/100136289</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/100136289</guid><author>X_Crew_TJ</author><pubDate>Thu, 29 Aug 2019 14:26:26 +0800</pubDate><description><![CDATA[Git总结
1.  概述
git是一个超级好用的项目版本管理工具,是目前世界上最先进的分布式版本控制系统
2. git的工作区域
git如上图所示,分为4个区域
workspace:工作区
index/stage:暂存区
repository:本地仓库
remote:远程仓库
3. 项目开发的一般流程

从远程仓库克隆项目
git clone ssh钥匙/https
新建一个自己的分支
git c...]]></description><category></category></item><item><title><![CDATA[java泛型详解]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/100133376</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/100133376</guid><author>X_Crew_TJ</author><pubDate>Thu, 29 Aug 2019 12:13:51 +0800</pubDate><description><![CDATA[java泛型

概述

泛型，即“参数化类型”。一提到参数，最熟悉的就是定义方法时有形参，然后调用此方法时传递实参。那么参数化类型怎么理解呢？

顾名思义，就是将类型由原来的具体的类型参数化，类似于方法中的变量参数，此时类型也定义成参数形式（可以称之为类型形参），

然后在使用/调用时传入具体的类型（类型实参）。

泛型的本质是为了参数化类型（在不创建新的类型的情况下，通过泛型指定的不同类型来控制...]]></description><category></category></item><item><title><![CDATA[@ResponseBody注解的作用]]></title><link>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/99868797</link><guid>https://blog.youkuaiyun.com/X_Crew_TJ/article/details/99868797</guid><author>X_Crew_TJ</author><pubDate>Tue, 20 Aug 2019 18:16:03 +0800</pubDate><description><![CDATA[**

@ResponseBody注解的作用
**
@ResponseBody这个注解通常使用在控制层（controller）的方法上，其作用是将方法的返回值以特定的格式写入到response的body区域，进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
@RequestMapping("/gld/responsibil...]]></description><category></category></item></channel></rss>