自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

顺顺利利的专栏

执剑跨秋霜,引吭歌燕赵;千里平原秋叶老,只等春来到

  • 博客(163)
  • 资源 (2)
  • 收藏
  • 关注

原创 【AI问答/Docker】Docker全命令对照表:命令+中文+示例+示例说明

本文整理了Docker常用命令速查表,分为五大类:基础命令(如run、exec、build等)、资源管理命令(如container、network、volume等)、Swarm集群命令、独立功能命令(如cp、logs、stats等)以及全局参数。表格包含命令释义、示例及说明,特别标注了桌面版专属插件命令。涵盖容器/镜像全生命周期管理、网络/存储配置、集群编排等场景,适合作为日常开发运维的快速参考指南。

2026-06-04 17:53:02 223

原创 【AI问答】GoLang关于代码复用

文章摘要: 该代码分析讨论了两种缓存读取方法的设计差异。GetText直接查询特定语言值,而GetLanguagesForRecord返回完整语言映射。作者指出两种方法分离是正确设计,原因在于:1) GetText直接访问避免创建临时map的内存浪费和GC压力;2) 减少锁持有时间,提升并发性能。文章还优化了GetText的嵌套if结构,改用卫语句提高可读性。最后建议可以进一步检查缓存的写入逻辑是否合理。核心观点是方法设计需平衡性能、内存和并发安全。

2026-05-31 19:05:33 221

原创 【AI问答】GO代码循环返值

这段Go代码通过深拷贝返回map是为了避免并发读写问题和数据污染。原代码虽然安全但嵌套过深,可以用卫语句优化结构。如果确认外部不会修改map,也可以直接返回但需明确标注只读。进一步优化可能需要重构缓存数据结构。核心是理解map引用类型的并发风险与深拷贝的必要性。

2026-05-31 18:57:13 279

原创 【AI问答/前端】前端瞒天过海局(三)

JS 负责出数据和网址,浏览器负责出历史纪录栈。用户后退时,浏览器负责发广播通知(popstate),前端 Router 负责收听通知并用 Vue 组件秒切画面。 它们俩合起伙来,在单页面(index.html)里给网民演了一出“我真的在好几个网页之间前进后退”的绝妙大戏。

2026-05-24 23:14:32 360

原创 【AI问答/前端】现代前端的满天过海局(二)

JavaScript通过HTML5的history.pushState()API可以安全地修改浏览器地址栏,但这并非突破安全限制。浏览器厂商为解决SPA应用的前进/后退功能问题,在严格同源策略下开放此功能:1)仅允许修改同源URL;2)只改变地址显示,不触发网络请求;3)必须监听popstate事件响应导航。这种机制确保了前端路由的安全性,本质仍是浏览器提供的受控Web API,而非JS突破了沙箱限制。

2026-05-24 23:09:32 369

原创 【AI问答/前端】前端满天过海局(一)

本文解析了现代前端两大核心技术Pinia和Router的核心原理。Pinia相当于全局响应式变量存储,组件可直接访问共享数据,无需逐层传递,解决了传统Vue组件传参的痛点。Router通过HTML5 History API实现URL无刷新切换,实际上是前端"欺骗"浏览器的障眼法,需要后端配合重定向到index.html以防刷新404。这两项技术共同构成了现代前端应用的基础架构,前者解决数据共享问题,后者实现单页应用的URL路由功能。理解这些底层原理对掌握现代前端开发至关重要。

2026-05-24 23:05:51 550

原创 【GO context 】上下文取消/超时的本质

Go语言中context的退出机制本质上是通知而非强制中断。关键在于函数内部必须主动监听ctx.Done()通道才能响应上级context的取消或超时。纯内存计算的函数若不检查ctx.Done(),即使上级context超时也无法中断执行。标准做法是在耗时循环中定期检查ctx.Done(),通常每N次迭代检查一次以平衡性能。数据库/Redis等库之所以能自动响应context取消,是因为它们的底层驱动已实现了对ctx.Done()的监听。开发者若编写纯计算逻辑,必须手动添加监听代码才能实现优雅中断,

2026-05-23 22:21:43 360

原创 【Go Generics】泛型为何而生的

让你在“逻辑完全相同,只有数据类型不同”的场景下(比如实现一个通用的切片去重、通用的 Map 过滤、或者通用的缓存加载),只写一份代码。泛型(Generics)关注的是“数据类型(Type)”:比如“不管是 int 还是 string,这段内存剥离逻辑都长一样”。它的核心是消除重复代码。

2026-05-22 21:16:35 89

原创 【Go Interface】接口诞生的意义

接口(Interface)的核心价值在于解耦上层业务逻辑与底层实现,解决代码强耦合问题。通过定义行为契约而非具体实现,接口让上层代码不再依赖特定底层技术(如Redis/MySQL)。当需要切换存储方案时,只需让新实现满足接口要求,无需修改业务逻辑层代码。这种设计既保证了核心业务逻辑的稳定性,又能灵活应对底层技术变更,特别适合需要频繁切换实现(数据库、日志系统、测试Mock等)的场景,是大厂应对多变需求的利器。

2026-05-22 21:05:35 65

原创 【Go i18n】TOML语言包

VSCode中处理TOML文件的两个必备插件:EvenBetterTOML(提供语法高亮、错误检查和格式化功能)和TOMLLanguageSupport(确保深层目录文件支持)。同时提供了TOML文件的极简语法指南,包括注释写法、键值对格式和常见注意事项。最后指导用户安装插件后,将示例翻译内容粘贴到指定路径的error.toml文件中,即可快速实现多语言支持的基础搭建。全文重点突出TOML配置文件的编辑技巧和实用工具推荐。

2026-05-22 20:53:13 49

原创 【Go Test】单元测试保姆级完整指南

Go语言原生测试框架的核心使用规范和实践方法:1) 测试文件命名规则(以_test.go结尾)和测试函数格式(TestXxx(t *testing.T));2) 测试文件必须与被测文件同目录同包;3) 常用测试命令及覆盖率检测方法;4) 三种实战示例:普通函数单元测试(表格驱动测试)、原生HTTP Handler测试(无需启动服务)和Gin框架测试;5) 对比手动测试的劣势,强调自动化测试的优势(可回归、可量化、可集成)。文章提供了可直接复用的代码模板和最佳实践,帮助开发者高效编写可

2026-05-21 18:05:07 631

原创 【Go Context】终极指南

Context = 协程生命周期控制器 + 超时熔断 + 请求链路传值父管子,子不干扰父,兄弟互不干扰长任务用取消,短任务用超时HTTP 用自带 ctx,后台任务用全局 ctx。

2026-05-21 11:35:24 775

原创 【PostgreSQL】时间取最大值,转换为init,如果为空则为0

SQL查询中处理时间戳的三个核心函数组合:1)EXTRACT(EPOCH FROM...)将时间转为Unix时间戳秒数;2)::BIGINT将浮点数转为整数;3)COALESCE(...,0)确保空值返回0。这三个函数配合MAX()使用,形成完整的时间戳处理链:先取最大时间,转为秒数时间戳,再转为整数,最后进行空值保护。文章还提供了替代方案,当需要保留原始时间格式时,可直接返回时间类型并设置默认值。通过这种组合,可以确保程序始终获得有效的数字时间戳或默认值,避免NULL导致的错误。

2026-05-20 10:52:25 52

原创 Go 新版核心知识点合集(适配 Go1.18+ 含泛型 + 断言 + 接口 + 指针接收者全套)

本文摘要:Go语言中空接口any可存储任意类型,通过类型断言可转回具体类型。匿名接口可临时定义方法集合,结构体隐式实现接口。方法接收者分为值接收者(拷贝操作)和指针接收者(原地修改),后者需传递地址。泛型[T any]支持多类型复用函数,保留类型安全。错误处理推荐使用%w嵌套保留原始错误。包级init函数自动执行,结构体Init方法需显式调用。配置加载流程结合泛型、环境变量标签和自动初始化,实现高效配置管理。核心要点包括:any万能容器、安全类型断言、指针接收者修改字段、泛型复用代码和错误链式处理。

2026-05-19 23:11:46 218

原创 【PHPer转GO】必啃20个高频标准库函数

20个PHP开发者转Go时需要掌握的核心函数与思维差异。网络请求处理方面,Go通过net包提供IP解析和校验功能;字符串处理使用strings包替代PHP函数;错误处理采用显式返回而非异常机制;路径操作推荐filepath跨平台方法;类型转换必须手动强转。三大核心差异:Go强类型需手动转换、拒绝全局变量改用Context传参、错误处理需逐层返回而非抛出异常。这些要点帮助PHP开发者快速适应Go语言特性与编程范式。

2026-05-19 22:23:08 241

原创 标准 HTTP API 签名鉴权 Header 完整规范

HTTP API接口签名验证的通用规范。1)统一使用X-前缀命名自定义请求头字段,避免与标准头冲突;2)详细说明签名算法规则,包括参数排序、拼接格式和加密方式;3)GET/POST请求的签名处理逻辑;4)服务端校验流程和常见避坑要点。该方案通过时间戳、随机数和签名机制,有效防止重放攻击和数据篡改,适用于各类API接口的安全验证场景。

2026-05-19 16:14:24 263

原创 【Go工具】Go 标准库 VS go-playground

Go标准库与go-playground生态对比:标准库专注底层基础功能,而go-playground系列工具(validator/form/errors等)专攻业务开发痛点。在参数校验、表单解析、错误处理和国际化等场景中,go-playground提供标签式校验、自动绑定、堆栈追踪和多语言支持等高级特性,大幅提升开发效率。两者形成互补关系,go-playground填补了标准库在业务开发中的功能空白,成为现代Go项目不可或缺的工具集。

2026-05-19 12:59:05 179

原创 【Go工具】go-playground除了validator还有哪些常用的库

go-playground 组织提供了多个实用的 Go 开发库,其中最值得使用的 6 个包括: form - 自动绑定表单/URL 参数到结构体,适合原生 net/http 解析参数。 universal-translator - 国际化翻译核心库,支持多语言错误提示。 errors - 增强错误处理,支持堆栈、类型和字段信息。 locales - 提供多语言本地化数据,配合翻译库使用。 pure - 轻量 HTTP 路由,零依赖且高效。 pkg - 工具函数合集,增强标准库功能。

2026-05-19 12:51:28 248

原创 【Go工具】go-playground是什么组织?官方的?

摘要(150字): go-playground是加拿大独立开源组织(非官方),专注开发高性能Go工具库,核心项目validator是Go生态参数校验的事实标准。该组织与Google官方的Go Playground无关,其工具以稳定性、生产可用性著称,被Docker、K8s等广泛采用。旗下还有form(表单解析)、errors(增强错误处理)等实用库。validator凭借强大的校验功能、微秒级性能及框架兼容性成为首选,测试覆盖率95%+。总结:第三方高质量工具集,名字易混淆,但技术口碑过硬。

2026-05-19 12:46:40 315

原创 【PHPer转Go】fmt vs log/slog

Go语言中fmt与log/slog的核心区别在于日志专业性。fmt仅适合临时调试输出,缺乏时间戳、日志级别等关键信息,且并发不安全;而log/slog是专为生产环境设计的日志系统,自动包含时间(支持时区配置)、日志级别、结构化输出(如JSON),具备并发安全特性(通过互斥锁保证输出完整),支持多种输出目标(文件/远程服务)。这类似于PHP中echo与Monolog的区别,在Go高并发场景下必须使用slog才能确保日志可运维、可监控。

2026-05-19 10:08:52 399

原创 【PHPer转Go】函数/方法返回类型的取舍,指针还是值

摘要: 在Go语言中,函数和方法返回值选择指针(*T)还是值(T)需综合考虑语义和性能。语义优先:若结构体代表唯一实体(如数据库连接、含锁对象)或需修改状态,返回指针;若为只读数据(如坐标、配置),返回值。性能权衡:小结构体(<64字节)返回值可避免堆分配和GC压力;大结构体或需nil表达“空”时用指针。一致性原则要求方法接收者与返回值类型统一。决策口诀:含锁必用指针;需nil或修改用指针;大对象用指针;否则返回值优化性能。

2026-05-18 20:44:58 411

原创 【Go 时间类型】时间对比

只要进入到业务逻辑层(Service):一律将外部入参(如int64)在最外层(如 Controller/Handler)反序列化时,就转换成time.Time。后续所有比较、计算、加减、存库:全线使用time.Time进行操作,以此保证系统的严谨性。

2026-05-18 19:43:01 227

原创 【Go 时间类型】 int64/time.Time的选择

摘要:PostgreSQL的timestamp with timezone存储的是包含时区信息的完整时间格式,而非纯数字时间戳。Go语言应使用time.Time结构体与之对接,以保留时区、日期等完整信息。time.Time适合业务逻辑层和数据库交互,支持时区转换和复杂计算;而int64时间戳更适合API传输和中间件交互等场景。最佳实践建议:数据库层使用timestamp with timezone,业务层使用time.Time,接口层转换为int64或RFC3339格式字符串,以确保数据完整性和系统兼容性。

2026-05-18 19:39:41 388

原创 为什么在部署GO原生的时候,前面还加一层nginx

Go语言原生net/http性能虽强,但在商业环境中仍需Nginx作为前端防护,原因有四:1)Nginx异步架构抵御慢速连接攻击,保护Go线程池;2)零拷贝技术高效处理静态资源,释放Go算力;3)SSL证书卸载与热更新,避免Go频繁重启;4)实现无缝服务重启,保障用户体验。Nginx负责公网防护与流量管理,Go专注核心业务逻辑,形成高效分工架构。

2026-05-17 18:01:27 305

原创 如何零费用享受全套现代化 IT 基础设施的终极流程

这就是 2026 年独立开发最性感的魅力所在! 真的就只需要掏一个域名的钱(一年也就几十块人民币),你就瞬间白嫖了大厂级别的全套现代化 IT 基础设施。

2026-05-17 11:43:20 38

原创 【前端】npm audit fix 修复漏洞时的具体逻辑

本文解析了npm包管理中版本控制与漏洞修复的关键机制。通过SemVer语义化版本规则,npm audit fix可自动修复符合版本约束的漏洞,但会保留跨大版本的危险漏洞。package-lock.json确保团队开发环境一致性,但也导致初始安装可能包含已知漏洞。当遇到无法自动修复的"顽固漏洞"时,强制升级(--force)虽能解决但风险极高。行业常见做法是:开发环境中的非生产相关漏洞可选择性忽略,生产环境则需谨慎评估风险。文章揭示了前端开发中版本锁定与安全修复之间的权衡关系,以及开发者应对漏洞的实用策略。

2026-05-14 19:40:31 402

原创 【PostgreSQL】建库删库与用户授权等常用SQL

本文介绍了PostgreSQL数据库的初始化配置步骤:1)创建用户daydayup并设置密码;2)创建UTF-8编码的helloword数据库并指定所有者;3)切换到新数据库;4)授予用户在public模式下的所有权限;5)关键步骤是配置默认权限,确保用户对自己创建的表和序列拥有完整权限。这些操作涵盖了从用户创建到权限配置的全过程,特别强调了默认权限设置的重要性,以避免后续操作中的权限问题。

2026-05-14 17:43:54 39

原创 【GVA】商业级综合后台的整体技术生态和功能拼图

GVA(Gin-Vue-Admin)是一个综合后台管理系统,集成了8大核心技术组件:1)Viper配置管理中心实现动态配置管理;2)Cron定时任务调度;3)基于Redis+Lua的分布式限流器;4)支持本地/云存储的文件管理适配器;5)JWT+Redis黑名单机制实现单点登录;6)gopsutil跨平台系统监控;7)模块化动态路由注册;8)图形验证码防护。通过"三板斧"快速开发流程:代码生成器建表→后台录入数据→编写公开API,可快速构建完整后台系统。这些组件共同构成了一个高效、安全的

2026-05-14 16:54:32 396

原创 【PHPer转GO】之高并发场景避坑Map补充内容

Go语言中nilMap的读写行为差异显著:读取nilMap返回零值不会报错,但写入nilMap会直接panic。对于多级map必须逐层初始化,不能像PHP那样自动创建嵌套结构。建议通过辅助函数或显式检查确保每层map完成初始化,避免因PHP编程习惯导致Go程序频繁panic。

2026-05-10 18:10:46 108

原创 【PHPer转GO】之高并发场景避坑宝典

Go语言开发中的7个常见陷阱及优化建议:1)Map并发写需加锁,删除元素不会释放内存;2)结构体传值存在拷贝开销,大结构体应传指针;3)循环变量在闭包中的引用问题;4)接口nil判断的特殊性;5)错误处理不应忽略;6)注意内存逃逸对性能的影响;7)接受Go"少即是多"的设计哲学。

2026-05-10 18:04:00 208

原创 Go 内存优化骚操作

Go语言内存优化技巧:1)使用空结构体struct{}{}节省内存;2)切片预分配避免扩容;3)结构体字段对齐减少填充;4)引用类型直接传值;5)避免Map值含指针减轻GC压力;6)字符串与字节切片零拷贝转换;7)用int代替string作为Map键;8)sync.Pool复用临时对象;9)用切片下标代替指针;10)位运算压缩布尔标记;11)边界检查消除优化数组访问;12)strings.Builder高效拼接字符串。这些技巧通过减少内存分配、优化数据布局和降低GC负担,可显著提升大规模数据

2026-05-09 13:21:40 419

原创 Go 协程与通道:生存与协作全景指南

本文探讨了Go语言中进程、协程、通道和WaitGroup的协作关系。进程是协程运行的载体,主协程退出会导致所有子协程终止。协程通过循环、通道阻塞或定时器保持运行状态。通道作为协程间的通信机制,具备唤醒休眠协程的能力,而for-range循环则是优雅监听通道的方式。WaitGroup作为协调工具,主协程通过它等待子协程完成任务。这四个组件共同构成了Go并发编程的核心:进程提供运行环境,协程执行并发任务,通道实现协程通信,WaitGroup确保任务同步完成。理解它们的协作机制是掌握Go并发编程的关键。

2026-05-04 15:54:44 281

原创 【PHPer转Go】之 指针/引用传递

PHP与Go在指针引用上的差异源于设计哲学和用途不同。PHP作为脚本语言强调安全隔离,通过写时复制机制避免隐式引用导致的逻辑混乱,适合快速开发但牺牲了性能控制。而Go作为系统编程语言追求极致效率,其显式指针设计让开发者精准控制内存,同时通过编译器逃逸分析和垃圾回收保障安全。PHP限制引用传递防止意外修改,Go则用指针实现高效状态共享,尤其在并发场景下不可或缺。两者差异本质上是动态语言安全优先与静态语言性能优先的体现,也反映了Web请求隔离与系统级资源共享的不同需求。

2026-04-30 15:46:29 198

原创 PostgreSQL之索引/函数/触发器

PostgreSQL中为已有数据的表创建索引时,应使用CONCURRENTLY选项避免锁表。通过创建触发器函数和触发器,可以自动更新updated_at字段,确保数据一致性。这种方法消除了手动更新时间戳的需要,保证使用数据库服务器时间,避免多节点时钟不同步问题,使代码更简洁可靠。触发器适用于各种数据更新方式,包括程序代码、手动修改和运维脚本。

2026-04-30 14:21:18 62

原创 GO错误处理【7】层层递进,环环相扣

Go语言工程哲学的核心是"层层递进,环环相扣",强调确定性和代码清晰度。文章提出三个优化技巧:1)采用卫语句实现"逻辑扁平化",避免嵌套;2)利用局部变量传递处理结果;3)掌握数据流、错误流、日志流和配置流四大关键流程。通过这些方法,可以使代码如精密内燃机般运转,便于定位错误和性能问题。

2026-04-30 11:09:33 173

原创 GO错误处理【6】显式哲学

Go 的哲学是 “显式优于隐式”。没错!在 PHP 里,异常像电梯,报错了直接“嗖”地一下穿透所有楼层直到被 catch。但在 Go 里,错误像爬楼梯,你必须手递手地把 err 交给上一层,否则上一层根本不知道楼下“起火”了。

2026-04-30 10:56:39 251

原创 GO错误处理【5】显式错误处理

Go语言强制显式错误处理,要求涉及外部依赖的函数必须返回(error)。与PHP抛出异常不同,Go通过层层传递错误实现精细控制:底层封装原始错误,中层添加上下文,顶层决定最终处理方式。这种设计虽增加if err!=nil的编码量,但带来显著优势:所有风险点清晰可见,强制开发者处理错误,编译器会检查未处理的错误。典型处理模式是底层用fmt.Errorf包装错误,顶层统一记录日志。对于纯计算等确定性操作可不返回error。

2026-04-30 10:40:41 228

原创 GO错误处理【4】报错即链条

Go语言采用"报错即链条"的错误处理机制,与Java/PHP的异常处理有本质区别。通过"楼下保安抓小偷"的比喻,说明Go错误处理的三层机制:1)Repo层包装原始错误;2)Logic层添加业务信息;3)Handler层统一记录日志。这种"接力棒"式处理相比"横冲直撞"的异常机制优势在于:通过%w包装保留完整错误链,避免重复日志,最终在终点一次性输出包含完整上下文的错误信息

2026-04-30 10:30:27 208

原创 GO错误处理【3】返回err与日志的结合

日志记录应遵循"谁终结错误谁打日志"的原则。Repo和Model层只返回错误不上报;Middleware必须记录HTTP日志和崩溃信息;Cron作为后台任务的终结者必须记录错误;Handler可视情况选择记录;Logic层需记录关键业务异常。错误传递链条应清晰,避免重复记录。目录结构建议将仅内部使用的req/res移至internal/handler附近。此外,需注意CORS中间件需处理OPTIONS预检请求,避免前端调用被拦截。

2026-04-30 10:24:15 246

原创 GO裸奔【1】动态SQL

Go中处理动态SQL的优雅方式:使用"切片拼凑法"显式构建SQL。通过字符串切片存储SQL片段,[]any切片存储参数值,配合占位符计数器自动管理参数位置。这种方法既保证了类型安全,又避免了SQL注入风险,同时保持代码整洁。相比PHP的数组拼接方式,Go需要更显式的参数绑定,但通过这种模式可以灵活应对不同数量的查询条件。当条件复杂时可考虑使用Squirrel等SQL构建器,但原生方案更适合理解底层机制。关键要避免直接拼接参数值到SQL字符串中,确保查询安全性。

2026-04-30 10:08:49 200

漫谈设计模式.pdf

第一篇模式介绍 第二篇创建对像 第三篇构建复杂结构 第四篇行为模式 第五篇终点还是起死回生点

2011-07-07

freebsd中文手册三部曲(txt,pdf).rar

FreeBSD使用手册.txt FreeBSD系统结构手册.txt FreeBSDPorter 手册.txt FreeBSD使用手册.pdf FreeBSD系统结构手册.pdf FreeBSDPorter 手册.pdf

2011-07-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除