<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lrqforest的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lrqforest</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lrqforest]]></copyright><item><title><![CDATA[logstash 安装，配置手册]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/121514140</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/121514140</guid><author>lrqforest</author><pubDate>Wed, 24 Nov 2021 14:05:50 +0800</pubDate><description><![CDATA[解压安装包：(到指定的目录) 如：usr/local/
tar -xvf logstash-7.7.0.tar.gz
mv logstash-7.7.0  logstash
将配置文件std_ruby.conf上传到   /usr/local/logstash/config/
添加配置文件说明
codec =&gt; #可选项，默认是plain，可设置其他编码方式。
discover_interval =&gt; #可选项，logstash多久检查一下path下有新文件，默认15s。
exclude =&g]]></description><category></category></item><item><title><![CDATA[解决多数据源事务不一致导致事务不生效问题]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/110953212</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/110953212</guid><author>lrqforest</author><pubDate>Thu, 10 Dec 2020 15:00:30 +0800</pubDate><description><![CDATA[一般不建议开多数据源
但是同事已经使用了，只能帮忙填下坑，在使用事务时提示XX表不存在
然后写了个接口继承IService
public interface BaseService&lt;T&gt; extends IService&lt;T&gt; {

  /**
   * PROPAGATION_REQUIRED (默认)
   * 支持当前事务，如果当前没有事务，则新建事务
   * 如果当前存在事务，则加入当前事务，合并成一个事务
   * REQUIRES_NEW （一般用在子方法需要单独事务）]]></description><category></category></item><item><title><![CDATA[两个微服务强关联且含有事务，一个成功，一个失败怎么办，分布式事务解决方案]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109812841</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109812841</guid><author>lrqforest</author><pubDate>Thu, 19 Nov 2020 15:08:32 +0800</pubDate><description><![CDATA[今天被问到一个问题，就是如果有调用同时插入数据的微服务A和B，如果A成功，B不成功怎么办？
首先从 业务上来分析：
1.我们为什么要同时操作两个微服务来插入呢?
2.是这两个微服务中有强依赖关系吗？是上一个插入成功下一个才能插入吗？那为何不直接在A服务里面写，调用B服务呢？
值得深思，微服务的划分粒度是否有问题？
如果两者不存在强依赖关系，使用MQ的ACK机制完全可以满足你，因为他们两者谁先插入都无所谓，重要消息不被确认会重试。
如果真的存在那怎么处理？
我提出一个方案：
方案.
1.定义一个变量，类型Ha]]></description><category></category></item><item><title><![CDATA[JAVA学习代码]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109688063</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109688063</guid><author>lrqforest</author><pubDate>Sat, 14 Nov 2020 11:04:55 +0800</pubDate><description><![CDATA[阿里云短信
	JAVA基础
	WebSocket Demo
	elasticsearch Demo
	mongodb Demo
	rabbitmq Demo
	redis Demo
	shiro Demo
	springboot Demo
	freemarker Demo
	多线程Demo


传送门：https://github.com/CharlesQian18/java-demo/tree/master




]]></description><category></category></item><item><title><![CDATA[PMP复习和考试技巧]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109673759</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109673759</guid><author>lrqforest</author><pubDate>Fri, 13 Nov 2020 14:11:13 +0800</pubDate><description><![CDATA[一个人能做的事情太少，一个团队才能把事情做好，事情要做好，必须要管理，所以才想学习PMP，由于学习有点分神，学习效率不高，也可能有学生拖延症在里面，学习曲线不佳，还好一次性过了PMP，我的学习步骤是：
1.看王老师视频一遍，开的是2倍速度刷过，建议一个月内看完；
2.看汪博士解读PMP书籍一遍，感觉没啥用，看了很快就忘记了，建议不看，可以多刷两遍PMPBOOK；
3.看PMPBOOK一遍，这本书对个人而言，非常有用，很多系统的知识都能获取到，边看边些笔记，下面是我整理了项目管理的流程图：
计划流程：http]]></description><category></category></item><item><title><![CDATA[项目管理-风险管理流程]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109673388</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109673388</guid><author>lrqforest</author><pubDate>Fri, 13 Nov 2020 13:52:20 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[项目管理-采购管理流程]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109673365</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109673365</guid><author>lrqforest</author><pubDate>Fri, 13 Nov 2020 13:51:09 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[项目管理-计划流程]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109673336</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109673336</guid><author>lrqforest</author><pubDate>Fri, 13 Nov 2020 13:49:42 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[项目管理—执行和变更流程]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109673202</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109673202</guid><author>lrqforest</author><pubDate>Fri, 13 Nov 2020 13:40:50 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[第八章  live-server]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109639307</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109639307</guid><author>lrqforest</author><pubDate>Fri, 13 Nov 2020 13:38:57 +0800</pubDate><description><![CDATA[live-server
没有webpack，我们就无法使用webpack-dev-server运行这个项目，实现热部署。
所以，这里我们使用另外一种热部署方式：live-server
这是一款带有热加载功能的小型开发服务器。用它来展示你的HTML / JavaScript / CSS，但不能用于部署最终的网站。
安装命令
npm install -g live-server

运行命令
live-server

输入命令 live-sever 启动，默认会自动打开浏览器，并且访问8080端口，若出现Erro]]></description><category></category></item><item><title><![CDATA[第七章  Vue方法和组件]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109639214</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109639214</guid><author>lrqforest</author><pubDate>Fri, 13 Nov 2020 13:38:44 +0800</pubDate><description><![CDATA[computed（计算属性）
计算的本质就是方法，但是一定要返回数据。然后页面渲染时，可以把这个方法当成一个变量来使用
watch（监控）
普通变量
num(newVal,oldVal){
console.log(newVal,oldVal);
}

对象变量：深度监控
person: {
    deep: true,
    handler(val) {
        console.log(val.age);
    }
}

组件化
在大型应用开发时，页面可以划分成很多部分。往往在不同页面，也有相]]></description><category></category></item><item><title><![CDATA[第六章  Vue指令]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109639186</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109639186</guid><author>lrqforest</author><pubDate>Fri, 13 Nov 2020 13:38:26 +0800</pubDate><description><![CDATA[{{}}
{{}} =》插值表达式
插值表达式不能使用在属性中
使用{{}}方式在网速较慢时会出现问题，在数据未加载完成时，页面会显示出原始的{{}}，加载完毕后才会显示正确的数据，我们称为插值闪烁
v-text , v-html , v-model

使用指令来替代插值表达式，指令必须在标签里面使用


v-text ：将数据输出到元素内部，如果输出的数据有HTML代码，会作为普通文本输出
v-html ：将数据输出到元素内部，如果输出的数据有HTML代码，会被渲染
属于单项绑定
v-model ： 数据]]></description><category></category></item><item><title><![CDATA[第五章  Vue 的生命周期]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109636750</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109636750</guid><author>lrqforest</author><pubDate>Fri, 13 Nov 2020 13:38:08 +0800</pubDate><description><![CDATA[1） 新建个Vue对象
2)   初步初始化对象
3） 初始化对象的监控（监控变量，利用get，set方法对变量进行注入和动态响应）
4） 判断是否有el 或者  template 标签
5） 对关联标签进行编译
6） 创造真实的html代码，并挂载到关联标签上
7） 数据改变重新渲染
8） 生命周期销毁
this 等于当前app对象

...]]></description><category></category></item><item><title><![CDATA[第四章 Vue入门]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109636713</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109636713</guid><author>lrqforest</author><pubDate>Thu, 12 Nov 2020 09:31:03 +0800</pubDate><description><![CDATA[MVVM模式
M： 即Model，模型，包括数据的一些基本操作
V：  即View，视图，页面渲染结果
VM：即View-Model，模型与视图间的双向操作（无需开发人员干涉)
在MVVM之前，开发人员从后端获取需要的数据模型，然后要通过DOM操作Model渲染到View中，而后当用户操作视图，我们还需要通过DOM获取View中的数据，然后同步到Model中。
而MVVM中的VM要做的事情就是把DOM操作完全封装起来，开发人员不用再关心Model和View之间是如何相互影响的:


只要我们Model发生了]]></description><category></category></item><item><title><![CDATA[第三章 ES6 - 数组的 map 和 reduce]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109636697</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109636697</guid><author>lrqforest</author><pubDate>Thu, 12 Nov 2020 09:29:25 +0800</pubDate><description><![CDATA[let arr =[‘1’,‘3’,’-10’,‘15’]
一. map 把集合的元素逐个处理，并放在新的元素中, 并不会改变原来的数组,分散处理
let arr2=arr.map(d=&gt;parseInt(d))
二. reduce 对以前的结果累积处理
arr2=[2,5,-10,15]
arr2.reduce((a,b)=&gt;a+b)
运算结果：

首先用 a=2,b=5
a=7,b=-10
a=-3,b=15
a=12

如果数组只有一个值，可以默认初始值
arr2=[2]
arr2.red]]></description><category></category></item><item><title><![CDATA[第二章  ES6 - 函数的优化]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109636688</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109636688</guid><author>lrqforest</author><pubDate>Thu, 12 Nov 2020 09:28:59 +0800</pubDate><description><![CDATA[原来的：
function sum(a,b){
return a+b;
}
优化后：
const add=(a,b)=&gt;a+b;
优化前：
对象包含成员变量，和成员方法
const p={
name:“jack”,
age: 21,
sayHello: function(){
console.log(“hello”);
}
}
p.sayHello();
优化后：
const p={
name:“jack”,
age: 21,
sayHello(){
console.log(“hello”);
}
}]]></description><category></category></item><item><title><![CDATA[第一章  ES6 - let，cont和结构体]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109636676</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109636676</guid><author>lrqforest</author><pubDate>Thu, 12 Nov 2020 09:28:14 +0800</pubDate><description><![CDATA[前景： 如果再循环体中使用var定义的变量，也可以在外部访问到
所以使用let，外部无法访问
使用cont，定义了常量，无法修改，类似java的final
结构体：
一. 解析数组
let arr=[2,5,-1,55];
//左右对比，将右边对应的数组值赋予左边的x,y
let [x,y]=arr;
let [,a,b]=arr;
console.log(x,y,a,b);
//第一个不要，将剩下的赋值给rest
let [,…rest] =arr;
二. 解析对象：
let p={name:“jack”]]></description><category></category></item><item><title><![CDATA[第十六章  无状态登录]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109636546</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109636546</guid><author>lrqforest</author><pubDate>Thu, 12 Nov 2020 09:23:31 +0800</pubDate><description><![CDATA[1.2.什么是无状态
微服务集群中的每个服务，对外提供的都是Rest风格的接口。而Rest风格的一个最重要的规范就是：服务的无状态性，即：
服务端不保存任何客户端请求者信息
客户端的每次请求必须具备自描述信息，通过这些信息识别客户端身份
带来的好处是什么呢？
客户端请求不依赖服务端的信息，任何多次请求不需要必须访问到同一台服务
服务端的集群和状态对客户端透明
服务端可以任意的迁移和伸缩
减小服务端存储压力
1.3.如何实现无状态
无状态登录的流程：
当客户端第一次请求服务时，服务端对用户进行信息认证（登录）]]></description><category></category></item><item><title><![CDATA[第十五章  短信服务]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109636463</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109636463</guid><author>lrqforest</author><pubDate>Thu, 12 Nov 2020 09:20:33 +0800</pubDate><description><![CDATA[阿里云短信接入
开通短信
创建子账号

创建子账号的AccessKey



创建短信签名



创建模板



示例链接： https://help.aliyun.com/document_detail/101893.html?spm=a2c4g.11186623.6.649.2fd650a4XPdZFk

]]></description><category></category></item><item><title><![CDATA[第十四章  Redis]]></title><link>https://blog.youkuaiyun.com/lrqforest/article/details/109636443</link><guid>https://blog.youkuaiyun.com/lrqforest/article/details/109636443</guid><author>lrqforest</author><pubDate>Thu, 12 Nov 2020 09:18:28 +0800</pubDate><description><![CDATA[NOSQL= Not  Only SQL
Redis 是一个开源（BSD许可）的，内存中的数据结构存储系统，它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构，如 字符串（strings）， 散列（hashes）， 列表（lists）， 集合（sets）， 有序集合（sorted sets） 与范围查询， bitmaps， hyperloglogs 和 地理空间（geospatial） 索引半径查询。 Redis 内置了 复制（replication），LUA脚本（Lua scripting），]]></description><category></category></item></channel></rss>