<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"><channel><title>skQuax's Blog</title><link>https://codelens.net/</link><atom:link href="https://codelens.net/rss.xml" rel="self" type="application/rss+xml"/><description>skQuax's Blog</description><generator>Halo v2.21.10</generator><language>zh-cn</language><lastBuildDate>Fri, 17 Apr 2026 17:25:15 GMT</lastBuildDate><item><title><![CDATA[1. 初识Hertz]]></title><link>https://codelens.net/archives/1.-chu-shi-hertz</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=1.%20%E5%88%9D%E8%AF%86Hertz&amp;url=/archives/1.-chu-shi-hertz" width="1" height="1" alt="" style="opacity:0;">初识Hertz Hertz[həːts] 是一个字节跳动开源的 Golang 微服务 HTTP 框架，在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势， 并结合实际业务需求，使其具有高易用性、高性能、高扩展性等特点，目前在字节跳动内部已广泛使用。 主体部分采用了四层分层设计：]]></description><guid isPermaLink="false">/archives/1.-chu-shi-hertz</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Sun, 7 Jul 2024 18:39:40 GMT</pubDate></item><item><title><![CDATA[Go编程基础-11. 测试]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-11.-ce-shi</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-11.%20%E6%B5%8B%E8%AF%95&amp;url=/archives/gobian-cheng-ji-chu-11.-ce-shi" width="1" height="1" alt="" style="opacity:0;">测试 测试是自动化测试的简称，即编写简单的程序来确保产品代码在特定输入下产生预期的输出。这些测试通常要么是精心设计的以检测某种功能，要么是随机性的以扩大测试覆盖面。 软件测试领域非常广泛。测试任务几乎占据了所有程序员的一部分时间，有时候甚至是全部时间。关于测试的资料有数千本书和数百万字的博文。在每种]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-11.-ce-shi</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Sun, 30 Jun 2024 14:58:00 GMT</pubDate></item><item><title><![CDATA[Go编程基础-10. 包和go工具]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-10.-bao-he-gogong-ju</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-10.%20%E5%8C%85%E5%92%8Cgo%E5%B7%A5%E5%85%B7&amp;url=/archives/gobian-cheng-ji-chu-10.-bao-he-gogong-ju" width="1" height="1" alt="" style="opacity:0;">使用共享变量实现并发 每个包定义了一个独立的命名空间作为其标识符。每个名称都会与一个具体的包关联，从而使我们能够在为类型、函数等选择简洁明了的名称时，不会与程序的其他部分发生冲突。通过控制名称是否导出以使其对包外可见，包提供了封装功能。这种限制包成员可见性的做法，不仅隐藏了 API 背后的辅助函数和]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-10.-bao-he-gogong-ju</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Sun, 30 Jun 2024 14:57:58 GMT</pubDate></item><item><title><![CDATA[Go编程基础-9. 使用共享变量实现并发]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-9.-shi-yong-gong-xiang-bian-liang-shi-xian-bing-fa</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-9.%20%E4%BD%BF%E7%94%A8%E5%85%B1%E4%BA%AB%E5%8F%98%E9%87%8F%E5%AE%9E%E7%8E%B0%E5%B9%B6%E5%8F%91&amp;url=/archives/gobian-cheng-ji-chu-9.-shi-yong-gong-xiang-bian-liang-shi-xian-bing-fa" width="1" height="1" alt="" style="opacity:0;">使用共享变量实现并发 1. 竞态 当一个程序有两个或多个 goroutine 时，每个 goroutine 内部的各个步骤虽然是顺序执行的，但我们无法确定一个 goroutine 中的事件 x 和另一个 goroutine 中的事件 y 的先后顺序。如果我们不能自信地说一个事件肯定早于另一个事件，那]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-9.-shi-yong-gong-xiang-bian-liang-shi-xian-bing-fa</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Sun, 30 Jun 2024 14:57:51 GMT</pubDate></item><item><title><![CDATA[Go编程基础-8. goroutine和通道]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-8.-goroutinehe-tong-dao</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-8.%20goroutine%E5%92%8C%E9%80%9A%E9%81%93&amp;url=/archives/gobian-cheng-ji-chu-8.-goroutinehe-tong-dao" width="1" height="1" alt="" style="opacity:0;">goroutine和通道 并发编程指的是一个程序由若干个自主执行的活动单元组成。Web服务器可以同时处理数千个请求。平板电脑和手机应用在渲染用户界面的同时，后端也在同步进行计算和处理网络请求。甚至传统的批处理任务——如读取数据、进行计算并输出结果——也使用并发技术来隐藏I/O操作的延迟，从而充分利用]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-8.-goroutinehe-tong-dao</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Sun, 30 Jun 2024 14:57:44 GMT</pubDate></item><item><title><![CDATA[Go编程基础-7. 接口]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-7.-jie-kou</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-7.%20%E6%8E%A5%E5%8F%A3&amp;url=/archives/gobian-cheng-ji-chu-7.-jie-kou" width="1" height="1" alt="" style="opacity:0;">接口 接口类型是对其他类型的抽象和概括，允许编写灵活通用的函数，不依赖特定类型实现。Go语言的接口通过隐式实现，即类型不需要显式声明实现哪些接口，只要实现了接口所需方法即视为实现该接口。这种设计使得不修改已有类型内部实现的前提下，可以为它们添加新接口，尤其适用于无法修改的包中的类型。 接口是一种抽象]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-7.-jie-kou</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Sun, 30 Jun 2024 14:57:37 GMT</pubDate></item><item><title><![CDATA[Go编程基础-6. 方法]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-6.-fang-fa</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-6.%20%E6%96%B9%E6%B3%95&amp;url=/archives/gobian-cheng-ji-chu-6.-fang-fa" width="1" height="1" alt="" style="opacity:0;">方法 方法是针对某种特定类型的函数。面向对象编程就是使用方法来描述不同数据结构的属性和操作。 1. 方法声明 方法的声明与函数的声明类似，只是在函数名字前面多了一个类型参数，来将方法绑定到这个参数对应的类型上。下面是一个简单的方法声明： package main import ( "fmt"]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-6.-fang-fa</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Sun, 30 Jun 2024 14:57:30 GMT</pubDate></item><item><title><![CDATA[Tailscale DERP 中继节点搭建]]></title><link>https://codelens.net/archives/tailscale-derp-da-jian</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Tailscale%20DERP%20%E4%B8%AD%E7%BB%A7%E8%8A%82%E7%82%B9%E6%90%AD%E5%BB%BA&amp;url=/archives/tailscale-derp-da-jian" width="1" height="1" alt="" style="opacity:0;">通常，我会将自己nas上搭建的一些服务通过内网穿透的方式暴露到公网中，以供自己在外使用。此前我所使用内网穿透服务一直都是frp，但是frp需要为每个服务暴露一个公网端口，这一定程度上增加了被扫描和攻击的风险。为了降低潜在的风险，保证服务的稳定性，我逐渐产生了组建大内网的想法，通过虚拟组网从云服务器上]]></description><guid isPermaLink="false">/archives/tailscale-derp-da-jian</guid><dc:creator>skquax</dc:creator><category>技术</category><pubDate>Sat, 4 May 2024 21:20:18 GMT</pubDate></item><item><title><![CDATA[Go编程基础-5. 函数]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-5.-han-shu</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-5.%20%E5%87%BD%E6%95%B0&amp;url=/archives/gobian-cheng-ji-chu-5.-han-shu" width="1" height="1" alt="" style="opacity:0;">函数 函数是包含连续执行语句的代码块，可以通过在代码中调用函数来执行它们。函数可以将一个复杂的工作划分成多个更小的模块，使得多人协作变得更加容易。另外，函数对它的使用者隐藏了实现细节。这几方面的特性使得函数成为大多数编程语言的重要特性之一。 1. 函数声明 每个函数声明都包含一个名字、一个形参列表、]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-5.-han-shu</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Sat, 27 Apr 2024 18:03:00 GMT</pubDate></item><item><title><![CDATA[Go编程基础-4. 复合数据类型]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-4.-fu-he-shu-ju-lei-xing</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-4.%20%E5%A4%8D%E5%90%88%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B&amp;url=/archives/gobian-cheng-ji-chu-4.-fu-he-shu-ju-lei-xing" width="1" height="1" alt="" style="opacity:0;">复合数据类型 Go语言中四种主要的数据类型：数组、slice、map和结构体。 1. 数组 数组是一个具有固定长度且包含零个或多个相同数据类型元素的序列。由于数组的长度是固定的，因此在Go中很少直接使用。相比之下，切片的长度可以增长和缩短，在许多情况下更为常用。数组的特点如下： 数组中每个元素通过索]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-4.-fu-he-shu-ju-lei-xing</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Thu, 18 Jan 2024 13:30:00 GMT</pubDate></item><item><title><![CDATA[Go编程基础-3. 基本数据类型]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-3.-ji-ben-shu-ju-lei-xing</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-3.%20%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B&amp;url=/archives/gobian-cheng-ji-chu-3.-ji-ben-shu-ju-lei-xing" width="1" height="1" alt="" style="opacity:0;">Go的数据类型分为四大类：基础类型（basic type）、聚合类型（aggregate type）、引用类型（reference type）和接口类型（interface type）。 基本数据类型 math包的MaxXXX变量给出了一些基本数据类型的上下界，在一些场景下可以用于溢出判断和处理。]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-3.-ji-ben-shu-ju-lei-xing</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Thu, 18 Jan 2024 13:29:00 GMT</pubDate></item><item><title><![CDATA[Go编程基础-2. 程序结构]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-2.-cheng-xu-jie-gou</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-2.%20%E7%A8%8B%E5%BA%8F%E7%BB%93%E6%9E%84&amp;url=/archives/gobian-cheng-ji-chu-2.-cheng-xu-jie-gou" width="1" height="1" alt="" style="opacity:0;">程序结构 1.名称 函数、变量、常量、类型等命名规则：名称的开头是一个字母或下划线，后面可以跟任意数量的字母、数字和下划线，并区分大小写；注意名称不能是Go内置的25个关键词及预声明的变量、函数、类型： 这些预声明的名称不是预留的，可以在声明中使用但是并不建议，因为这可能会产生冲突从而造成未知的错误]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-2.-cheng-xu-jie-gou</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Thu, 11 Jan 2024 09:23:00 GMT</pubDate></item><item><title><![CDATA[Go编程基础-1. 入门案例]]></title><link>https://codelens.net/archives/gobian-cheng-ji-chu-1.-ru-men-an-li</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Go%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80-1.%20%E5%85%A5%E9%97%A8%E6%A1%88%E4%BE%8B&amp;url=/archives/gobian-cheng-ji-chu-1.-ru-men-an-li" width="1" height="1" alt="" style="opacity:0;">入门案例 1. 前言 Go语言及其配套工具的设计目标是具有表达力，高效的编译和执行效率，有效地编写高效和健壮的程序。 Go语言从C语言继承了表达式语法、控制流语句、基本数据类型、按值调用的形参传递以及指针。然而，更为重要的是，它继承了C语言所强调的核心原则：将程序编译为高效的机器码，并与所在操作系统]]></description><guid isPermaLink="false">/archives/gobian-cheng-ji-chu-1.-ru-men-an-li</guid><dc:creator>skquax</dc:creator><category>编程</category><pubDate>Tue, 9 Jan 2024 08:50:00 GMT</pubDate></item><item><title><![CDATA[Nginx基本使用]]></title><link>https://codelens.net/archives/nginxji-ben-shi-yong</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=Nginx%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8&amp;url=/archives/nginxji-ben-shi-yong" width="1" height="1" alt="" style="opacity:0;">1.Nginx简介 Nginx是一款轻量级的Web服务器、反向代理服务器，由于它的内存占用少，启动极快，高并发能力强，在互联网项目中广泛应用。其开发的最初目是为了解决C10K问题，即服务器同时处理10000个并发连接（10000 concurrent connection），由于其性能优异在开发出来]]></description><guid isPermaLink="false">/archives/nginxji-ben-shi-yong</guid><dc:creator>skquax</dc:creator><category>技术</category><pubDate>Thu, 28 Dec 2023 17:37:00 GMT</pubDate></item><item><title><![CDATA[PowerShell简单美化]]></title><link>https://codelens.net/archives/1703598703709</link><description><![CDATA[<img src="https://codelens.net/plugins/feed/assets/telemetry.gif?title=PowerShell%E7%AE%80%E5%8D%95%E7%BE%8E%E5%8C%96&amp;url=/archives/1703598703709" width="1" height="1" alt="" style="opacity:0;">一直以来，我都不太习惯使用PowerShell进行命令行操作。无论是每次打开都会存在的CopyRight，还是不同命令结果中数量不等的空行，对于我这个强迫症而言都有点过于难受了。不过由于最近从Java转Go，开始尝试使用Vscode进行编程，与PowerShell的交互不可避免的多了起来，恰好也找到]]></description><guid isPermaLink="false">/archives/1703598703709</guid><dc:creator>skquax</dc:creator><category>技术</category><pubDate>Tue, 26 Dec 2023 13:53:00 GMT</pubDate></item></channel></rss>