<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tiechui1994的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tiechui1994</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tiechui1994]]></copyright><item><title><![CDATA[Cursor 本地轻量化HTTP2代理工具]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/157292437</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/157292437</guid><author>tiechui1994</author><pubDate>Fri, 23 Jan 2026 14:36:30 +0800</pubDate><description><![CDATA[摘要：Cursor-fake 是一个用于劫持 Cursor 相关域名（*.cursor.sh/com/api）的 DNS 工具，通过分配本地 fake-ip（127.0.0.x）并转发流量到真实 IP 实现透明代理。支持 UDP/DNS-over-TLS/DNS-over-HTTPS 三种上游解析方式，提供 TCP 443 端口转发功能，可通过远程 HTTP 代理中转流量。]]></description><category></category></item><item><title><![CDATA[最小化安装 ubuntu]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/156641208</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/156641208</guid><author>tiechui1994</author><pubDate>Tue, 06 Jan 2026 10:52:40 +0800</pubDate><description><![CDATA[本文介绍了如何在Ubuntu 20.04最小化安装基础上构建Ubuntu-Unity桌面环境。主要内容包括：替换APT源、卸载Snapd、安装Unity桌面环境及相关组件、中文语言支持配置、搜狗输入法安装等基础设置。随后提供了系统优化方案，涉及启动项配置、Grub优化、Swap调整、内核清理等性能调优措施。最后列出了可选工具安装建议，涵盖开发工具、系统工具和多媒体应用等。该方案适合需要轻量级Unity桌面环境的用户，通过精简安装和优化配置可显著提升系统响应速度。]]></description><category></category></item><item><title><![CDATA[Go 编译移动端程序]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/127878469</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/127878469</guid><author>tiechui1994</author><pubDate>Wed, 16 Nov 2022 09:53:56 +0800</pubDate><description><![CDATA[Go 程序编译成 Android/iOS 的jar包或者二进制程序]]></description><category></category></item><item><title><![CDATA[关于文件变化监听, 你了解多少?]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/122370229</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/122370229</guid><author>tiechui1994</author><pubDate>Fri, 07 Jan 2022 18:41:22 +0800</pubDate><description><![CDATA[监听文件变化的实现

Linux下inotify特性:
inotify是内核一个特性, 可以用来监控目录, 文件的读写等事件. 当监控目标是目录时, inotify除了会监控目录本身, 还会监控目
录中的文件. inotify的监控功能由如下几个系统调用组成: inotify_init1, inotify_add_watch, inotify_rm_watch,
read 和 close.
inotify的主要操作基于inotify_init1返回的 inotify 文件描述符, 该描述符的作用类似于 ep]]></description><category></category></item><item><title><![CDATA[Go 当中 JSON 常用技巧]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/111193219</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/111193219</guid><author>tiechui1994</author><pubDate>Tue, 15 Dec 2020 10:33:55 +0800</pubDate><description><![CDATA[json

忽略 struct 空字段


忽略 struct 空字段, 使用 omitempty

type User struct{
    Email string `json:"email,omitempty"`
    Pwd  string `json:"pwd,omitempty"`
}


临时粘合两个struct

type BlogPost struct{
    URL string `json:"url"`
}

type Analytics struct{
    Visitors]]></description><category></category></item><item><title><![CDATA[详细介绍Go交叉汇编ARM]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/110312051</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/110312051</guid><author>tiechui1994</author><pubDate>Sun, 29 Nov 2020 14:30:27 +0800</pubDate><description><![CDATA[Go 交叉编译

说明: 以下的交叉编译主机是在 x86_64 Ubuntu 16.04 平台下进行的.

Go 交叉编译涉及的编译参数:


GOARCH, 目标平台的 CPU 架构. 常用的值 amd64, arm64, i386, armhf


GOOS, 目标平台, 常用的值 linux, windows, drawin (macOS)


GOARM, 只有 GOARCH 是 arm64 才有效, 表示 arm 的版本, 只能是 5, 6, 7 其中之一


CGO_ENABLED, 是否支持 ]]></description><category></category></item><item><title><![CDATA[Bash 编程之正则匹配利器 grep]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/110184519</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/110184519</guid><author>tiechui1994</author><pubDate>Thu, 26 Nov 2020 13:40:06 +0800</pubDate><description><![CDATA[grep
grep usage:
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN]...  [-f FILE]...  [FILE...]

OPTIONS - (Matcher Selection)

-E, --extended-regexp 将PATTERN解释为扩展正则表达式.
-F, --fixed-strings 将PATTERN解释为固定字符串列表(而不是正则表达式), 由换行符分隔, 其中任何一个都要匹配.
-G, --]]></description><category></category></item><item><title><![CDATA[Bash编程之变量怎么玩?]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/110128127</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/110128127</guid><author>tiechui1994</author><pubDate>Wed, 25 Nov 2020 14:17:59 +0800</pubDate><description><![CDATA[变量
变量声明与定义

使用 declare

# 定义一个只读的变量(变量只能使用, 无法更新和删除), 需要定义的时候立即初始化
declare -r x=100

# 定义一个数组/字典
## 声明一个数组/字典
declare -A any
declare -A any=()

## 声明并且初始化一个字典/数组
declare -A map=(['java']=1 ['css']=2 ['go']=3)
declare -A arr=([1]='java' [2]='css' [3]='go')
]]></description><category></category></item><item><title><![CDATA[Bash 编程, 字符串都哪些鲜为人知的用法呢?]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109853325</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109853325</guid><author>tiechui1994</author><pubDate>Fri, 20 Nov 2020 16:26:03 +0800</pubDate><description><![CDATA[shell 下字符串处理
使用字符串的过程中, 既可以使用双引号, 也可以使用单引号, 也可以什么也不用.

单引号

单引号内容是原样输出, 不能包含变量(若包含, 则依旧原样输出), 且不能出现单独单引号.
例如:
a='hello'
echo ${a} # 输出是 hello

b='$a world'
echo ${b} # 输出是 $a world


双引号

可以出现转义字符(如果使用 echo 需要使用 -e 参数, 进行转义输出.). 可以包含变量(变量会被转换为其值)
例子:
a="he]]></description><category></category></item><item><title><![CDATA[Bash编程中循环结构应该这么使用]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109812430</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109812430</guid><author>tiechui1994</author><pubDate>Thu, 19 Nov 2020 14:58:07 +0800</pubDate><description><![CDATA[shell 当中的循环
shell 当中循环命令存在三种, 分别是: for, while 和 until. for和while属于"当型循环", until属于"直到型循环".

注意: 在循环结构体作用域内要想修改外部作用域的变量, 需要使用 let 命令. 否则修改无效.

for 循环
for 循环有三种结构: 列表for循环, 不带列表for循环, 类C风格的for循环.

列表for循环

# 1到5的循环
for v in {1..5}; do
    echo "$v"
done

# 1到]]></description><category></category></item><item><title><![CDATA[Bash 编程当中的条件怎么写, 你知道吗?]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109730724</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109730724</guid><author>tiechui1994</author><pubDate>Mon, 16 Nov 2020 21:39:50 +0800</pubDate><description><![CDATA[shell 当中的条件判断

简介: 在 Shell 编程当中, 经常会使用 if 进行条件判断, 那么条件判断当中的条件应该怎样标准的书写, 是我们需要思考的. 虽然说在某种方式的书写能让 Shell 脚本正常运行, 但是对于后来人的理解和维护, 这是一个很大的成本. 本文提供了一种统一的写法, 方便理解和维护.

字符串相关
A="A"
B="AB"
C=""

## 等于 (=) , 不等于(!=)
if [[ ${A} = ${A} ]]; then
    echo '等于 if [[ ${A} ]]></description><category></category></item><item><title><![CDATA[学习 Go自己的一点看法]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109703136</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109703136</guid><author>tiechui1994</author><pubDate>Sun, 15 Nov 2020 13:37:50 +0800</pubDate><description><![CDATA[首先, 去学习一下官方的入门教程. 这个只是一个大概了解的教程, 简单介绍一些简单的东西, 并没有太多的说明.

tour.golang.org(中文)

开发环境


这里也可以忽略不看，因为每一个教程都会介绍怎么配置环境


操作系统

我个人十分推荐使用 Linux, 可以使用 Ubuntu 或 Deepin. 桌面都做的挺不错的. 当然了有条件了可以使用 Mac

开发环境

Go 的开发环境安装十分简洁, 依赖很少. 如果是 Linux 下安装基本上下载一个二进制包, 解压, 放到一个目录下, .]]></description><category></category></item><item><title><![CDATA[Shell编程, 这几种数据结构你都会吗?]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109656681</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109656681</guid><author>tiechui1994</author><pubDate>Thu, 12 Nov 2020 20:46:51 +0800</pubDate><description><![CDATA[Shell 编程常用的数据结构
源自:  Shell编程, 这几种数据结构你都会吗?

简介: shell 编程当中, 除了对常用的命令 awk, sed, grep, find 等命令要非常熟悉之外, 对于 map, array 等常用数据结构的操作也需要熟练掌握, 这样你的编程能力才有一个飞跃. 本文就简单的介绍下 shell 当中 map, array 这两种数据结构的操作, 以及如何解决 shell 编程数学计算的小数点问题.

map
使用 map 的时候, 需要先声明, 否则结果可能与预期不同.]]></description><category></category></item><item><title><![CDATA[最全面的解决Charles手机抓包的证书难题(步骤非常详细)]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109574616</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109574616</guid><author>tiechui1994</author><pubDate>Mon, 09 Nov 2020 15:07:44 +0800</pubDate><description><![CDATA[Charles 抓包

简介: Charles 抓包是日常开发当中经常会用到的技术手段, 但是在 Android 7 之后, 手机只信任系统内置的根证书, 对于用户添加的证书则会被忽略, 此举提升了手机系统的安全性, 但是对于抓包的却很不友好. 本文主要全面讲解 IOS 和 Android 两大系统如何去配置根证书. 彻底解决抓包的难题.

charles 抓包前的准备工作


下载 charles, 官网的地址: https://www.charlesproxy.com


配置要抓包的主机和端口, Pr]]></description><category></category></item><item><title><![CDATA[万余字带你认识 go chan 底层是如何设计的]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109495753</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109495753</guid><author>tiechui1994</author><pubDate>Wed, 04 Nov 2020 18:04:30 +0800</pubDate><description><![CDATA[golang channel 源码解析
欢迎大家关注微信公众号后端开发杂谈, 这里有更多实用的干货等着你来拿!

简介: channel 是 go 当中一个经常使用到的数据结构, 它经常用在并发通信当中. 如果只是知道它的用法, 而不了解其底层的原理是一个很大的损失. 本文带你去深入理解 chan 底层设计的原理.

数据结构
type hchan struct {
	qcount   uint           // chan 里元素的数量
	dataqsiz uint           // cha]]></description><category></category></item><item><title><![CDATA[Go sync.Map 并发效率为什么那么高?​]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109383623</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109383623</guid><author>tiechui1994</author><pubDate>Fri, 30 Oct 2020 13:43:50 +0800</pubDate><description><![CDATA[Go sync.Map 设计背后的并发思想

简介: 对于熟悉 Go 语言的同学都知道, Go 自身的 map 是不支持并发读写, 并发写的, 为了解决这个问题, Go 官方提供了 sync.Map 专门支持并发读写的问题.  本文依据 sync.Map 的源码, 解读 sync.Map 背后的设计思想.

Map类型针对两种常见用例进行了优化:
(1)给定键的条目仅写入一次但多次读取(例如仅在增长的高速缓存中),
(2)当多个goroutine读取, 写入时, 并覆盖不相交的键集的条目.
在这两种情况下,]]></description><category></category></item><item><title><![CDATA[3万字详解Go 是如何设计Map的]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109319863</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109319863</guid><author>tiechui1994</author><pubDate>Tue, 27 Oct 2020 20:48:27 +0800</pubDate><description><![CDATA[golang map 源码解析
文章可能有些长, 主要分为以下的几个大块, 如果有同学觉得文章太长, 可以选择自己感兴趣的内容进行阅读.

map 数据的数据结构
辅助函数, 在map的操作当中涉及的一些函数
map 创建
map 插入
map 查询
map 扩容与数据搬移
map 删除
map 迭代

数据结构与实际的数据结构
map 中的数据被存放在一个数组中的, 数组的元素是桶(bucket), 每个桶至多包含8个键值对数据. 哈希值低位(low-order bits)
用于选择桶, 哈希值高位(hi]]></description><category></category></item><item><title><![CDATA[Go监控文件的原理及代码实现]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/109062388</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/109062388</guid><author>tiechui1994</author><pubDate>Tue, 13 Oct 2020 22:22:04 +0800</pubDate><description><![CDATA[监听文件变化的实现

Linux下inotify特性:
inotify是内核一个特性, 可以用来监控目录, 文件的读写等事件. 当监控目标是目录时, inotify除了会监控目录本身, 还会监控目录中的文件. inotify的监控功能由如下几个系统调组成: inotify_init1, inotify_add_watch, inotify_rm_watch, read 和 close.
inotify的主要操作基于inotify_init1返回的 inotify 文件描述符, 该描述符的作用类似于 epol]]></description><category></category></item><item><title><![CDATA[vue route 路由跳转传递参数]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/108702601</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/108702601</guid><author>tiechui1994</author><pubDate>Mon, 21 Sep 2020 09:17:31 +0800</pubDate><description><![CDATA[vue route 路由跳转传递参数

使用 $router 方式

源组件:
&lt;template&gt;
    &lt;button @click="sendParams"&gt; 跳转 &lt;/button&gt; 
&lt;/template&gt;

&lt;script&gt;
export default {
    methods:{
        sendParams() {
            this.$router.push({
                path]]></description><category></category></item><item><title><![CDATA[5张图片带你认识 Linux 底层的 IO 模型]]></title><link>https://blog.youkuaiyun.com/tiechui1994/article/details/108531947</link><guid>https://blog.youkuaiyun.com/tiechui1994/article/details/108531947</guid><author>tiechui1994</author><pubDate>Fri, 11 Sep 2020 12:25:14 +0800</pubDate><description><![CDATA[Linux IO
Linux 下主要的 5 种IO模型:

阻塞I/O (blocking I/O)
非阻塞I/O (nonblocking I/O)
I/O 复用 (I/O multiplexing)
信号驱动I/O (signal driven I/O (SIGIO))
异步I/O (asynchronous I/O)

阻塞I/O
进程一直阻塞, 直到数据拷贝完成. 应用程序一个 IO 函数, 导致应用程序阻塞, 等待数据准备好. 数据准备好以后(从设备拷贝到内核
空间), 从内核空间拷贝到用户空间,]]></description><category></category></item></channel></rss>