<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[adai_study的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/adai_study</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; adai_study]]></copyright><item><title><![CDATA[Nacos 集群搭建]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/110231267</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/110231267</guid><author>adai_study</author><pubDate>Fri, 27 Nov 2020 14:47:49 +0800</pubDate><description><![CDATA[Nacos 集群搭建
零. 参考文档

官网文档：Nacos支持三种部署模式
官网文档：集群部署说明

一. 资源选择
1.1 背景说明

Nacos 集群需要 3 个或 3 个以上的 Nacos 节点才能构成；
Nacos 默认使用嵌入式数据库实现数据的存储，也支持（目前也仅支持）Mysql 数据源的配置；

本次 Nacos 集群采用 3 个 Nacos 节点，并配置 Mysql 数据源进行存储数据。此外，Nacos 集群需要有一个统一入口进行反向代理，本次采用 Nginx 服务。
1.2 服务器选择
]]></description><category></category></item><item><title><![CDATA[SpringFramework源码编译]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/108379625</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/108379625</guid><author>adai_study</author><pubDate>Thu, 03 Sep 2020 11:42:37 +0800</pubDate><description><![CDATA[SpringFramework源码编译
在编译 SpringFramework 源码时，注意事项较多，掌握之后相对来说还是比较简单的。
0. 基础环境

JDK：1.8 及以上即可（官方文档要求 JDK 8 update 262 or later），笔者编译时的版本时 JDK 8 update 251
IDEA：这个不确定，笔者使用的是 IDEA 2019.2.4
Gradle：有的文档说官方文档要求 Gradle 需要低于 Gradle 6 的版本（没有查证），可以根据 spring framework ]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 12-混合配置注入 Bean]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431415</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431415</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:39:18 +0800</pubDate><description><![CDATA[混合配置注入 Bean
一般情况下，注入 Bean 的方式，不是通过 XML 配置，就是通过 Java 配置，如果想要同时将两种配置生效（即混合配置），则需要在 Java 配置中通过 @ImportResource 注解导入 XML 配置，应用时通过 Java 配置获取 Bean，此时 Java 配置和 XML 配置的 Bean 都可以获取到。
示例
UserJava.java --&gt; 通过...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 11-Bean 的生命周期]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431396</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431396</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:38:49 +0800</pubDate><description><![CDATA[Bean 的生命周期
生命周期类型
Bean 的生命周期（又称作用域）类型主要有四种：

singleton：单例形式，每次请求的都是同一个 Bean
prototype：原型形式，每次请求的都是一个新的 Bean
request：Bean 的生命周期与 request 同步
session：Bean 的生命周期与 session 同步

生命周期类型的设定
默认情况下，bean 的生命周期类型是...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 10-条件注解注入 Bean（Java配置实现）]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431373</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431373</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:38:21 +0800</pubDate><description><![CDATA[条件注解注入 Bean（Java配置实现）
模拟场景
当程序在 Windows 操作系统下运行时打印 dir 命令，在 Linux 操作系统下运行时打印 ls 命令
代码实现

定义接口
ShowCmd.java

public interface ShowCmd {
    String show();
}


定义接口实现

// ShowCmdInLinux.java
public clas...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 09-Profile 注入不同环境下的 Bean]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431337</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431337</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:37:53 +0800</pubDate><description><![CDATA[Profile 注入不同环境下的 Bean
原理
在注入 Bean 的时候通过 Profile 为 Bean 设定环境
实现
创建一个普通类
DataSource.java
public class DataSource {
    private String url;
    private String username;
    private String password;
    p...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 08-自动配置注入 Bean]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431304</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431304</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:37:07 +0800</pubDate><description><![CDATA[自动配置注入 Bean
自动配置的目的
为了使得 Bean 的注入不需要一个一个的配置，可以通过自动配置来简化。
自动配置的实现
为创建为 Bean 的类添加注解

@Component 一般用在身份不明确的组件上
@Repository 一般用在数据库访问层–Dao层/Repository层
@Service 一般用在业务逻辑层–Service层
@Controller 一般用在控制器层–Con...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 07-Java 配置注入 Bean]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431281</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431281</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:36:08 +0800</pubDate><description><![CDATA[Java 配置注入 Bean
开发工具：IntelliJ IDEA
JDK 版本：1.8
Spring 版本：spring-framework-4.3.9.RELEASE
搭建 Spring 项目环境

创建普通 Java 项目
项目根目录下新建 lib 文件夹
复制 Spring 项目环境基本包（5个Spring包+1个日志包）到 lib 文件夹中

beans：spring-beans-4.3...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 06-XML 注入 Bean 的属性]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431246</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431246</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:34:46 +0800</pubDate><description><![CDATA[XML 注入 Bean 的属性
注入方式：

property注入==set方法注入，指定属性名
constructor-arg注入==构造器注入，默认按顺序执行，也可指定顺序（index，从0开始）、属性名（name）、类型（type）
p命名空间注入==set方法注入，指定属性名

注入时value和ref的区别

基本类型：使用value指定
String：使用value指定
非String...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 05-XML 通过实例工厂方法注入 Bean]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431218</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431218</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:34:05 +0800</pubDate><description><![CDATA[XML 通过实例工厂方法注入 Bean
区别
通过实例工厂方法注入与通过静态工厂方法注入类似，区别有两点：

实例工厂方法不是静态方法，静态工厂方法是静态方法
实例工厂方法注入时的配置，需要先配置一个实例工厂类的 Bean ，然后根据该工厂 Bean 创建所需要的 Bean

示例
User.java
public class User {
    private String name;
   ...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 04-XML 通过静态工厂方法注入 Bean]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431171</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431171</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:33:34 +0800</pubDate><description><![CDATA[XML 通过静态工厂方法注入 Bean
1. 创建一个 User 类和对应的工厂类 UserFactory
User.java
public class User {
    private String name;
    private int age;

    public User() {
        System.out.println("调用User类的无参构造方法");
   ...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 03-XML 通过普通构造方法注入 Bean]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431125</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431125</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:32:12 +0800</pubDate><description><![CDATA[XML 通过普通构造方法注入 Bean
1. 创建简单 Java 类
User（属性：name-String, age-int，getter方法和setter方法，无参构造方法[可加入打印信息]，sayHello方法）
package org.daistudy;
public class User {
    private String name;
    private int age;
  ...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 02-XML配置注入Bean基础步骤]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431098</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431098</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:31:32 +0800</pubDate><description><![CDATA[XML 注入 Bean 基础步骤
开发工具：IntelliJ IDEA
JDK 版本：1.8
Spring 版本：spring-framework-4.3.9.RELEASE
搭建 Spring 项目环境

创建普通 Java 项目
项目根目录下新建 lib 文件夹
复制 Spring 项目环境基本包（4个Spring包+1个日志包）到 lib 文件夹中

beans：spring-beans-4...]]></description><category></category></item><item><title><![CDATA[Spring IoC/DI 01-IoC/DI 简介]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/104431063</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/104431063</guid><author>adai_study</author><pubDate>Fri, 21 Feb 2020 17:30:16 +0800</pubDate><description><![CDATA[IoC/DI 简介
IoC

IoC（英文全称为 Inversion of Control，中文译名为控制反转）是一种设计思想。在传统程序中，需要的对象（也可称之为依赖对象）都由编程开发人员直接控制（包括创建、销毁，如通过 new 的方式创建一个对象），这个可以理解为正转；而在 IoC 设计思想中，需要的对象由某个容器来控制（包括创建、销毁和注入），对象的控制权不再归属于编程人员，而归属于容器，这...]]></description><category></category></item><item><title><![CDATA[RSA前端加密后端解密（密钥动态生成）]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/103496795</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/103496795</guid><author>adai_study</author><pubDate>Wed, 11 Dec 2019 17:44:43 +0800</pubDate><description><![CDATA[RSA 是什么

RSA 是一种非对称加密算法，简单概括，就是加密和解密时使用不同的密钥进行。

问题
一般在进行WEB开发过程中，少不了用户登录功能的开发，用户在登录时需要输入用户名（或邮箱等其它唯一标识信息）和密码进行系统登录。如果密码通过明文的方式进行http传输并登录时，密码将能被人查看到。此时多数人会想到MD5编码，通过将密码进行MD5编码成无法解密的密文，则他人就算获取到该密文，也无法...]]></description><category></category></item><item><title><![CDATA[Git 扩展之全局配置]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/102553286</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/102553286</guid><author>adai_study</author><pubDate>Mon, 14 Oct 2019 17:55:36 +0800</pubDate><description><![CDATA[配置代理
设置代理
git config --global http.proxy http://127.0.0.1:8080 
git config --global https.proxy http://127.0.0.1:8080 

取消代理
git config --global --unset http.proxy 
git config --global --unset https.p...]]></description><category></category></item><item><title><![CDATA[Git 扩展之分支管理原理]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/102553269</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/102553269</guid><author>adai_study</author><pubDate>Mon, 14 Oct 2019 17:55:17 +0800</pubDate><description><![CDATA[为什么需要分支
问题情景：开发人员在开发一个新功能，需要两天完成，第一天完成 50%，如果当天提交，由于代码还没写完，不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交，又存在丢失第一天进度的巨大风险。
解决方案：创建了一个属于你自己的分支，别人看不到，别人可以继续在原来的分支上正常工作，而你在自己的分支上干活，想提交就提交，直到开发完毕后，再一次性合并到原来的分支上。
Git 分支...]]></description><category></category></item><item><title><![CDATA[Git 扩展之版本控制模型]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/102553258</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/102553258</guid><author>adai_study</author><pubDate>Mon, 14 Oct 2019 17:54:53 +0800</pubDate><description><![CDATA[问题情景
如下图所示。假设现在有两个同事：Harry 和 Sally，他们在同一时间修改了仓库中的同一文件。如果 Harry 先把修改保存到仓库中，后面 Sally 就有可能用他的新版本文件覆盖掉 Harry 的版本。虽然 Harry 的修改不会就此丢失 (因为版本控制系统会记住每一次修改)，但是 Harry 的修改不会出现在 Sally 的新版本文件中，因为他从未看到过 Harry 的修改。从效...]]></description><category></category></item><item><title><![CDATA[Git 扩展之 SSH Key]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/102553249</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/102553249</guid><author>adai_study</author><pubDate>Mon, 14 Oct 2019 17:53:55 +0800</pubDate><description><![CDATA[SSH Key 的创建

SSH Key 与计算机的用户一一对应，同一个计算机上的不同用户拥有不同的 SSH Key ，不同计算机的用户的 SSH Key 也不相同

查看是否创建
在用户主目录下，看看有没有.ssh目录，如果有，再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件，如果已经有了，就说明已经创建了
创建命令
创建时需要指定用户的邮件地址
ssh-keygen -t r...]]></description><category></category></item><item><title><![CDATA[Git 基础教程02-常用命令]]></title><link>https://blog.youkuaiyun.com/adai_study/article/details/102553235</link><guid>https://blog.youkuaiyun.com/adai_study/article/details/102553235</guid><author>adai_study</author><pubDate>Mon, 14 Oct 2019 17:53:19 +0800</pubDate><description><![CDATA[命令说明

&lt;&gt;内的内容为必填项
[]内的内容为选填项
file代指具体的文件路径
message代指具体的说明内容
remoteRepo代指具体的远程仓库地址
remoteName代指具体的远程仓库名称
localBranchName代指具体的本地仓库分支名
remoteBranchName代指具体的远程仓库分支名
stashName代指具体的工作现场名
commitId代指具体的版...]]></description><category></category></item></channel></rss>