<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Konan96的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Konan96</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Konan96]]></copyright><item><title><![CDATA[golang并发学习及实战记录]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/120693225</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/120693225</guid><author>Konan96</author><pubDate>Sun, 10 Oct 2021 22:55:01 +0800</pubDate><description><![CDATA[一、切片append方法不是原子操作
多个协程操作同一个切片，使用append方法添加元素时，存在并发安全问题，需要对append方法加锁
func example() {
	// 添加互斥锁
	var lock sync.Mutex
	eg := errgroup.Group{}
	res := make([]int, 0)
	for i := 0; i &lt; 100; i++ {
		eg.Go(func() error {
			lock.Lock() // 加锁
			res = append(]]></description><category></category></item><item><title><![CDATA[Win10部署Authelia（OAuth2授权框架）]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/120686297</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/120686297</guid><author>Konan96</author><pubDate>Sun, 10 Oct 2021 15:46:31 +0800</pubDate><description><![CDATA[一、安装docker
二、下载authelia代码
# 下载代码并切换到本地运行例子
git clone https://github.com/authelia/authelia.git
cd authelia/examples/compose/local

三、配置相关参数

打开configuration.yml查看配置
具体参数详解可查看： https://www.authelia.com/docs/configuration/

1、访问控制
access_control:
  default_po]]></description><category></category></item><item><title><![CDATA[golang中的context]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/120113958</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/120113958</guid><author>Konan96</author><pubDate>Sun, 05 Sep 2021 14:58:28 +0800</pubDate><description><![CDATA[一、Context含义
1、context定义

context是golang中的上下文。goroutine的相关环境快照，其中包含函数调用以及涉及的相关的变量值。
golang通过Context机制解决一个request中多个goroutine之间的交互问题。相互调用的goroutine之间通过传递context变量保持关联，这样在不用暴露各goroutine内部实现细节的前提下，有效地控制各goroutine的运行。
Context设计成是包含父子关系的，如此一来，通过传递Context就可以追踪gor]]></description><category></category></item><item><title><![CDATA[golang-测试]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/120110114</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/120110114</guid><author>Konan96</author><pubDate>Sun, 05 Sep 2021 10:47:08 +0800</pubDate><description><![CDATA[一、代码覆盖率和性能测试
1、代码覆盖率
代码：
# 将代码覆盖率报告输出到c.out文件中
$ go test -coverprofile=c.out
# 查看代码覆盖率
$ go tool cover -html=c.out

效果：
// 测试方法对这段代码的代码覆盖率
func twoSum(nums []int, target int) []int {
	m := make(map[int]int)
	for i, num := range nums {
		if val, ok := m[tar]]></description><category></category></item><item><title><![CDATA[设计模式学习笔记-行为型模式（下）]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/119382758</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/119382758</guid><author>Konan96</author><pubDate>Wed, 04 Aug 2021 14:06:08 +0800</pubDate><description><![CDATA[七、观察者模式
1.作用
当对象间存在一对多关系时，则使用观察者模式。比如，当一个对象被修改时，则会自动通知依赖它的对象。
2.举例
1、创建 Observer 类
type Observer interface {
	Notify(interface{})
}

2、创建 Subject 类
type Subject struct {
	observers []Observer
	state     string
}

func (s *Subject)SetState(state string) {
	]]></description><category></category></item><item><title><![CDATA[设计模式学习笔记-行为型模式（上）]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/119333027</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/119333027</guid><author>Konan96</author><pubDate>Wed, 04 Aug 2021 14:04:08 +0800</pubDate><description><![CDATA[设计模式golang-行为型模式（上）
一、责任链模式
1.作用
意图：避免请求发送者与接收者耦合在一起，让多个对象都有可能接收请求，将这些对象连接成一条链，并且沿着这条链传递请求，直到有对象处理它为止。
主要解决：职责链上的处理者负责处理请求，客户只需要将请求发送到职责链上即可，无须关心请求的处理细节和请求的传递，所以职责链将请求的发送者和请求的处理者解耦了。
2.举例
1、定义处理请求接口
// 处理事件
type ScreenEvent struct {
	Type string
	Comment s]]></description><category></category></item><item><title><![CDATA[设计模式学习笔记-创建型模式]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/118445324</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/118445324</guid><author>Konan96</author><pubDate>Sat, 03 Jul 2021 21:56:44 +0800</pubDate><description><![CDATA[设计模式golang-创建型模式
一、工厂模式
1.作用
定义一个创建对象的接口，让其子类自己决定实例化哪一个工厂类，工厂模式使其创建过程延迟到子类进行。
2.举例
1、定义接口
//笔
type pen interface {
	//写字
	Write()
}

2、创建实现接口的结构体
type pencil struct {
}

func (p *pencil) Write() {
	fmt.Println("铅笔")
}

type brushPen struct {
}

func (p *br]]></description><category></category></item><item><title><![CDATA[设计模式学习笔记-结构型模式]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/118442185</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/118442185</guid><author>Konan96</author><pubDate>Sat, 03 Jul 2021 21:08:55 +0800</pubDate><description><![CDATA[设计模式golang-结构型模式
一、适配器模式
1.作用
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
2.举例

已经存在的接口

//不可充电电池使用接口
type NonRechargeableBattery interface {
	Use()
}


客户希望的接口

//可充电电池使用接口
type RechargeableBattery interface {
	Use()
	Charge()
}


已经存在的对象和实现方]]></description><category></category></item><item><title><![CDATA[Linux学习笔记-常用命令总结]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/117338430</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/117338430</guid><author>Konan96</author><pubDate>Sun, 30 May 2021 17:39:18 +0800</pubDate><description><![CDATA[一、文件管理
1.查看文件与目录: ls

-l 显示文件的详细信息
-a 显示隐藏文件
-r 逆序显示
-t 按时间排序
-R 递归显示

2. 操作目录或文件

mkdir 创建目录
rmdir 删除空目录
touch 创建文件
rm 删除文件


-r 递归删除
-f 强制删除


cp 复制文件


-r 复制目录


rm 删除文件
mv 移动与重命名

3. 路径操作

cd 进入指定路径
pwd 显示当前路径

4. 通配符


...]]></description><category></category></item><item><title><![CDATA[Redis学习笔记-持久化]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/117216160</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/117216160</guid><author>Konan96</author><pubDate>Thu, 27 May 2021 21:18:00 +0800</pubDate><description><![CDATA[Redis学习笔记-持久化
一、RDB持久化
1. 持久化方式

手动执行、定期执行

2. 持久化执行过程
1） 创建RDB二进制文件

SAVE命令： 阻塞Redis服务器进程，直到文件创建完成。
BGSAVE命令： 创建一个子进程来创建文件。 用于定期执行RDB持久化


BGSAVE命令执行时，不能同时执行SAVE、BGSAVE、BGREWRITEAOF命令。
其中，不能同时执行BGREWRITEAOF命令是为了性能考虑

2） 载入RDB二进制文件

自动载入。
如果开启了AOF持久化，就载入AO]]></description><category></category></item><item><title><![CDATA[MySql学习笔记-02索引]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/116244692</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/116244692</guid><author>Konan96</author><pubDate>Thu, 29 Apr 2021 23:23:00 +0800</pubDate><description><![CDATA[MySql学习笔记-02索引索引1、隔离级别的通俗理解2、隔离级别-可重复读 是如何实现的3、怎么查询数据库语句命中了索引
索引
1、隔离级别的通俗理解

读未提交：事务的修改都会被其他事务看见
读提交：一个事务提交后，都会被其他事务看见，无论其他事务有没有完成
可重复读： 一个事务在执行过程中，只会看到当前事务的变化
串行化： 多个事务不会同时进行，一个事务完成了才会进行下一个事务

2、隔离级别-可重复读 是如何实现的

版本快照     MVCC(多版本并发控制)

详细过程

每个事务都有一个版本号]]></description><category></category></item><item><title><![CDATA[MySql学习笔记-01事务]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/116211316</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/116211316</guid><author>Konan96</author><pubDate>Wed, 28 Apr 2021 22:10:31 +0800</pubDate><description><![CDATA[MySql学习笔记-01事务隔离隔离级别的通俗理解隔离级别-可重复读 是如何实现的索引如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
事务隔离
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇]]></description><category></category></item><item><title><![CDATA[一张图带你理清Mybatis实现原理]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/100600438</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/100600438</guid><author>Konan96</author><pubDate>Sat, 07 Sep 2019 16:11:12 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[Window64位系统用HSDIS对java代码进行反编译]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/100534915</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/100534915</guid><author>Konan96</author><pubDate>Wed, 04 Sep 2019 11:11:36 +0800</pubDate><description><![CDATA[1.下载hsdis-amd64.dll文件并放入%JAVA_HOME%\jre\bin中，例如：


C:\Program Files\Java\jdk1.8.0_191\jre\bin

书上说的是放在%JAVA_HOME%\jre\bin\server中，亲测还是找不到hsdis-amd64.dll文件，放在bin文件目录下可以正常反编译。错误提示如下：


Could not load hs...]]></description><category></category></item><item><title><![CDATA[腾讯云服务器上搭建Hadoop伪分布式教程]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/98350912</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/98350912</guid><author>Konan96</author><pubDate>Sat, 03 Aug 2019 17:21:52 +0800</pubDate><description><![CDATA[1 登陆腾讯云服务器控制台查看内网ip地址



2 更改主机名

修改master ip地址，地址改为内网地址


$ vi /etc/hosts

172.21.0.*

修改主机名



$ vi /etc/hostname
master

重启服务器


$ reboot

查询是否更改成功


$ hostname
master
$ hostname -i
172.21.0.*

2 ...]]></description><category></category></item><item><title><![CDATA[Windows系统配置Hadoop注意事项]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/98213658</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/98213658</guid><author>Konan96</author><pubDate>Fri, 02 Aug 2019 17:26:13 +0800</pubDate><description><![CDATA[hadoop官方下载地址：https://hadoop.apache.org/releases.html

1 解压后的Hadoop需要放在与Java Jdk同一个盘符中

2Hadoop和Jdk的目录如果有空格会识别不出来。

出现此类问题会报错：Hadoop Error: JAVA_HOME is incorrectly set.或者C:\'Program' 不是内部或者外部命令，也不是可运...]]></description><category></category></item><item><title><![CDATA[ROS学习笔记]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/90902894</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/90902894</guid><author>Konan96</author><pubDate>Wed, 05 Jun 2019 15:29:25 +0800</pubDate><description><![CDATA[目录

1 创建、编译和运行

1.1 创建程序包

1.2 编译

1.3 运行

2 ROS话题

2.1 rqt_graph

2.2 rostopic

2.3 rqt_plot

3 ROS服务和参数

3.1 rosservice call

3.2 rosparam

4 rqt_console、roslaunch和rosed

4.1 rqt_console

4.2 roslau...]]></description><category></category></item><item><title><![CDATA[Ubuntu系统下ROS安装说明]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/89486407</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/89486407</guid><author>Konan96</author><pubDate>Wed, 24 Apr 2019 09:46:56 +0800</pubDate><description><![CDATA[1.准备工作



安装前看看有什么更改Ubuntu默认的更新源，如果更改了，要换回备份的默认的安装源（/etc/apt/sources.list.bak）。

权限设置

用户需要成为“拨出”组的一部分：


sudo usermod -a -G dialout $USER

删除modemmanager

Ubuntu附带一个串行调制解调器管理器，它可以严重干扰任何与机器人相关的串口（或...]]></description><category></category></item><item><title><![CDATA[Mybatis源代码解析（操作数据库全流程）]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/89462885</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/89462885</guid><author>Konan96</author><pubDate>Tue, 23 Apr 2019 10:49:56 +0800</pubDate><description><![CDATA[1.从 XML 中构建 SqlSessionFactory


String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new...]]></description><category></category></item><item><title><![CDATA[Jetson TX1/TX2搭载RTSO-9003载板刷机及使用JetPack3.3安装软件教程（防踩坑）]]></title><link>https://blog.youkuaiyun.com/Konan96/article/details/88966661</link><guid>https://blog.youkuaiyun.com/Konan96/article/details/88966661</guid><author>Konan96</author><pubDate>Tue, 02 Apr 2019 13:35:00 +0800</pubDate><description><![CDATA[1 烧录Linux系统

1.1 系统要求

最好给主机电脑安装Ubuntu14和Ubuntu16 x86_64系统。Ubuntu18系统不能运行JetPack3.3软件，且JetPack3.3安装软件必须在主机Host x86_64系统上运行。

1.2 下载软件包

rtso-9003载板系统的安装包官网上有，下面是官方下载地址，我下载的版本号是R28.2：

http://www.realt...]]></description><category></category></item></channel></rss>