<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[catkin_ws的博客]]></title><description><![CDATA[985硕，服务端研发工程师]]></description><link>https://blog.youkuaiyun.com/catkin_ws</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; catkin_ws]]></copyright><item><title><![CDATA[Golang协程泄漏定位和排查]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/142147263</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/142147263</guid><author>catkin_ws</author><pubDate>Wed, 11 Sep 2024 18:40:42 +0800</pubDate><description><![CDATA[Golang内存泄漏定位和排查]]></description><category></category></item><item><title><![CDATA[【操作系统】同步互斥与Golang互斥锁实现]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/141819254</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/141819254</guid><author>catkin_ws</author><pubDate>Mon, 02 Sep 2024 15:43:23 +0800</pubDate><description><![CDATA[使用临界区的思想，问题就可以较好的解决。有了临界区的代码之后，就可以确保任何时候只有一个对象在临界区中执行，其他对象在外面等待，知道临界区中的对象离开，其他进程中的一个会进入临界区去执行。执行这种可屏蔽中断的指令，只是把自身的响应中断的能力屏蔽了，并不意味着也将其他cpu的响应中断能力屏蔽，所以其实其他的cpu还是可以继续产生中断，所以在多cpu的情况下是无法解决互斥问题的。有些看上去是原子操作，实际不是，连x++这样简单的语句，实际上是由3条指令造成的，有时候甚至连条单条机器指令都不是原子的。]]></description><category></category></item><item><title><![CDATA[短链接服务—业务设计&实践（微信小程序码scene长度限制）]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/141673694</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/141673694</guid><author>catkin_ws</author><pubDate>Thu, 29 Aug 2024 15:04:31 +0800</pubDate><description><![CDATA[短链接也称短网址、短链。由于短信、微博等平台，对于内容有长度限制，过长的 url 不适合直接在微信、短信等平台直接发送原始地址，需要缩短长度。转换后的短网址用于消息发送，也可以避免过多的无用信息影响用户体验。示意图如下。]]></description><category></category></item><item><title><![CDATA[【操作系统】死锁]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/141634175</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/141634175</guid><author>catkin_ws</author><pubDate>Wed, 28 Aug 2024 10:35:19 +0800</pubDate><description><![CDATA[如果在一个进程集合中的每个进程都在等待只能有该集合中的其它进程才能引起的事件，而无限期陷入僵持的局面称为死锁。]]></description><category></category></item><item><title><![CDATA[快速低成本动画视频课]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/129101366</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/129101366</guid><author>catkin_ws</author><pubDate>Sat, 18 Feb 2023 16:11:08 +0800</pubDate><description><![CDATA[Adobe Animate和Character Animator]]></description><category></category></item><item><title><![CDATA[服务端高并发分布式架构演进之路]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/127209437</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/127209437</guid><author>catkin_ws</author><pubDate>Sat, 08 Oct 2022 15:18:43 +0800</pubDate><description><![CDATA[本文以淘宝作为例子，介绍从一百个到千万级并发情况下服务端的架构的演进过程，同时列举出每个演进阶段会遇到的相关技术，让大家对架构的演进有一个整体的认知，文章最后汇总了一些架构设计的原则。特别说明：本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题，并非是淘宝真正的技术演进路径架构的调整是否必须按照上述演变路径进行？不是的，以上所说的架构演变顺序只是针对某个侧面进行单独的改进，在实际场景中，可能同一时间会有几个问题需要解决，或者可能先达到瓶颈的是另外的方面，这时候就应该按照实际问题实际解决。]]></description><category></category></item><item><title><![CDATA[Go设计模式学习——开闭原则]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/122450601</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/122450601</guid><author>catkin_ws</author><pubDate>Wed, 12 Jan 2022 12:12:43 +0800</pubDate><description><![CDATA[1 开闭原则
对扩展开放、修改关闭 (Open Closed Principle)
software entities (modules, classes, functions, etc.) should be open for extension , but closed for modification
直译: 软件实体（模块、类、方法等）应该 “ 对扩展开放、对修改关闭 ”。
白话: 添加一个新的功能应该是，在已有代码基础上扩展代码（新增模块、类、方法等），而非修改已有代码（修改模块、类、方法等）。.]]></description><category></category></item><item><title><![CDATA[Go设计模式学习——单一职责原则]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/122225701</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/122225701</guid><author>catkin_ws</author><pubDate>Wed, 29 Dec 2021 22:02:51 +0800</pubDate><description><![CDATA[1单一职责原则
1.1 含义
单一职责原则 (Single Responsibility Principle)(SRP)
A class or module should have a single responsibility.
一个类或者模块只负责完成一个职责（或者功能）。
把模块看作比类更加粗粒度的代码块，模块中包含多个类，多个类组成一个模块
1.2 理解
一个类只负责完成一个职责或者功能。不要设计大而全的类，要设计粒度小、功能单一的类。
单一职责原则是为了实现代码高内聚、低耦合，提高代码的复用性、可]]></description><category></category></item><item><title><![CDATA[业务学习笔记]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/119344538</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/119344538</guid><author>catkin_ws</author><pubDate>Tue, 03 Aug 2021 10:36:00 +0800</pubDate><description><![CDATA[学习笔记MVC框架和设计模式优点缺点ORM
MVC
MVC开始是存在于桌面程序中的，M是指业务模型，V是指用户界面，C则是控制器，使用MVC的目的是将M和V的实现代码分离，从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步，一旦M改变，V应该同步更新。
V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面，或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生，它]]></description><category></category></item><item><title><![CDATA[go语言实现设计模式—单例模式]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/119329482</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/119329482</guid><author>catkin_ws</author><pubDate>Mon, 02 Aug 2021 17:25:14 +0800</pubDate><description><![CDATA[go语言实现设计模式—单例模式1 背景2 什么是单例3 应用场景&amp;优势4 如何创建单例4.1 饿汉式4.2 懒汉式-非线程4.3 懒汉式-线程安全4.4 双重检查4.5 once优雅写法5 其他
1 背景
2 什么是单例
3 应用场景&amp;优势
4 如何创建单例
4.1 饿汉式
4.2 懒汉式-非线程
4.3 懒汉式-线程安全
4.4 双重检查
4.5 once优雅写法
5 其他

...]]></description><category></category></item><item><title><![CDATA[go context实现多协程树型调用]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/118033382</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/118033382</guid><author>catkin_ws</author><pubDate>Fri, 18 Jun 2021 20:37:07 +0800</pubDate><description><![CDATA[背景
在实际编程中goroutine会拉起新的goroutine，新goroutine又会拉出另一个新goroutine，单纯使用退出通知机制会比较复杂，采用context标准库的做法，对“树型”的goroutine调用，提供退出通知和元数据传递。
实现例子
package main

import (
	"context"
	"fmt"
	"time"
)

type otherContext struct {
	context.Context
}

func work(ctx context.Conte]]></description><category></category></item><item><title><![CDATA[goroutine计算自然数的和——拆分task、channel、WaitGroup、线程池、done]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/117961265</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/117961265</guid><author>catkin_ws</author><pubDate>Wed, 16 Jun 2021 16:51:03 +0800</pubDate><description><![CDATA[goroutine计算自然数的和——拆分task、channel、WaitGroup功能程序逻辑代码
功能
计算100个自然数的和。
程序逻辑

InitTask函数构建task并发送到task通道。
分发任务函数DistributeTask为每个task启动goroutine处理任务，并等待其处理完成，然后关闭通道。
ProcessResult函数读取并统计所有的值。
这几个函数在不同的goroutine中运行，它们通过通道和sync.WaitGroup进行通信与同步。
整个流程如图：

代码
packa]]></description><category></category></item><item><title><![CDATA[看这一篇就够了！ROS2入门学习：安装、测试、多机通信以及与ROS1的切换、通信]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/117480016</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/117480016</guid><author>catkin_ws</author><pubDate>Wed, 02 Jun 2021 19:43:31 +0800</pubDate><description><![CDATA[ROS2入门学习：安装、测试、多机通信以及与ros1的切换、通信为什么要写这篇blog1 ROS2优势欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
为什么要写这篇blog
本人研究方向为多移]]></description><category></category></item><item><title><![CDATA[总结之OLTP与OLAP]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/116194222</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/116194222</guid><author>catkin_ws</author><pubDate>Tue, 27 Apr 2021 10:43:16 +0800</pubDate><description><![CDATA[OLTP与OLAP的介绍
数据处理大致可以分成两大类：联机事务处理OLTP（on-line transaction processing）、联机分析处理OLAP（On-Line Analytical Processing）。 
 OLTP是传统的关系型数据库的主要应用，主要是基本的、日常的事务处理，例如银行交易。  OLAP是数据仓库系统的主要应用，支持复杂的分析操作，侧重决策支持，并且提供直观易懂的查询结果。  OLTP 系统强调数据库内存效率，强调内存各种指标的命令率，强调绑定变量，强调并发操作；  O]]></description><category></category></item><item><title><![CDATA[三种实现分布式锁的方式]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/116131845</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/116131845</guid><author>catkin_ws</author><pubDate>Sun, 25 Apr 2021 16:15:02 +0800</pubDate><description><![CDATA[一、为什么要使用分布式锁 
我们在开发应用的时候，如果需要对某一个共享变量进行多线程同步访问的时候，可以使用我们学到的Java多线程的18般武艺进行处理，并且可以完美的运行，毫无Bug！ 
注意这是单机应用，也就是所有的请求都会分配到当前服务器的JVM内部，然后映射为操作系统的线程进行处理！而这个共享变量只是在这个JVM内部的一块内存空间！ 
后来业务发展，需要做集群，一个应用需要部署到几台机器上然后做负载均衡，大...]]></description><category></category></item><item><title><![CDATA[Makefile快速入门]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/115463305</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/115463305</guid><author>catkin_ws</author><pubDate>Tue, 06 Apr 2021 16:13:22 +0800</pubDate><description><![CDATA[Makefile快速入门1 什么是 Makefile2 命名规则3 工作原理4 变量5 模式匹配6 函数伪文件 .PHONY
1 什么是 Makefile


一个工程中的源文件不计其数，其按类型、功能、模块分别放在若干个目录中，Makefile 文件定义了一系列的规则来指定哪些文件需要先编译，哪些文件需要后编译，哪些文件需要重新编译，甚至于进行更复杂的功能操作，因为 Makefile 文件就像一个 Shell 脚本一样，也可以执行操作系统的命令。


Makefile 带来的好处就是“自动化编译” ，一旦]]></description><category></category></item><item><title><![CDATA[静态库和动态库]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/115457854</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/115457854</guid><author>catkin_ws</author><pubDate>Tue, 06 Apr 2021 11:59:24 +0800</pubDate><description><![CDATA[这里写目录标题1 什么是库2 静态库的制作3 动态库的制作4 工作原理5 编译过程6 静态库与动态库的优缺点
1 什么是库

库文件是计算机上的一类文件，可以简单的把库文件看成一种代码仓库，它提供给使用者一些可以直接拿来用的变量、函数或类。
库是特殊的一种程序，编写库的程序和编写一般的程序区别不大，只是库不能单独运行。

库文件有两种：
静态库和动态库（共享库）
区别：

静态库在程序的链接阶段被复制到了程序中；
动态库在链接阶段没有被复制到程序中，而是程序在运行时由系统动态加载到内存中供程序调用

使用库]]></description><category></category></item><item><title><![CDATA[数据库2021题库]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/113040069</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/113040069</guid><author>catkin_ws</author><pubDate>Sat, 23 Jan 2021 12:58:57 +0800</pubDate><description><![CDATA[数据库2021题库数据库2021题库1 主键，外键，超键，候选键2 数据库事务的四个特征及含义3 视图的作用，可以更改吗4 游标5  drop,delete和truncate6 连接的种类7 数据库范式8 触发器的作用9 存储过程10 存储过程与触发器的区别11 分表与分区12 数据库隔离级别13 MYSQL的两种存储引擎14 索引的工作原理和其种类15 索引的优缺点16 数据库索引的底层实现？17 哪些情况下索引会失效？18 在那些地方适合创建索引？19 创建索引需要注意什么？20 使用索引查询一定能提高]]></description><category></category></item><item><title><![CDATA[计算机网络2021题库]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/113038340</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/113038340</guid><author>catkin_ws</author><pubDate>Sat, 23 Jan 2021 12:49:54 +0800</pubDate><description><![CDATA[计算机网络太难？了解这一篇就够了一、简介二、OSI体系1、谈下你对五层网络协议体系结构的理解？2、简单说下每一层对应的网络协议有哪些？3、ARP 协议的工作原理？4、谈下你对 IP 地址分类的理解？5、TCP 的主要特点是什么？6、UDP 的主要特点是什么？7、TCP 和 UDP 的区别？8、TCP 和 UDP 分别对应的常见应用层协议有哪些？9、详细说下 TCP 三次握手的过程？10、为什么两次握手不可以呢？11、为什么不需要四次握手？12、Server 端收到 Client 端的 SYN 后，为什么还要]]></description><category></category></item><item><title><![CDATA[操作系统2021基础知识]]></title><link>https://blog.youkuaiyun.com/catkin_ws/article/details/112973849</link><guid>https://blog.youkuaiyun.com/catkin_ws/article/details/112973849</guid><author>catkin_ws</author><pubDate>Thu, 21 Jan 2021 22:34:39 +0800</pubDate><description><![CDATA[操作系统2020面试一、操作系统引论1 什么是操作系统？2 什么系统调用？ 用户态和系统态。3 操作系统的特性（并共虚异）4 并发，并行，同步，异步的区别？5 中断的分类6 操作系统的主要功能7 各种操作系统的区别8 动态链接库与静态链接库的区别
一、操作系统引论
1 什么是操作系统？

是管理计算机硬件和软件的资源的程序，是计算机系统的内核与基石
本质上是计算机软件程序
为用户提供了与系统交互的操作界面
操作系统分为内核和外壳，外壳主要是运行在系统上的其他的应用程序，内核则包括管理与配置内存，决定系统资源]]></description><category></category></item></channel></rss>