- 博客(221)
- 收藏
- 关注
原创 Go之路 - 8.go的接口
Go接口的核心机制与应用模式 Go语言的接口采用隐式实现机制,类型无需显式声明实现接口,只需包含接口定义的所有方法即可自动实现。编译器会自动检查方法签名匹配情况,并允许类型自动转换为接口类型。接口的核心应用包括:作为函数参数实现多态(如Shape接口处理不同几何图形)、通过小接口组合构建复杂功能(如ReadWriteCloser)、利用空接口存储任意类型数据。高级特性涉及指针/值接收者的实现差异、接口零值为nil但可包含nil动态值等。这种设计使Go接口既灵活又类型安全,支持松耦合架构和扩展性编程。
2025-12-26 13:13:45
309
原创 Go之路 - 7.go的结构体
本文系统介绍了Go语言结构体的核心概念与高级用法。主要内容包括:结构体定义与初始化(4种方式)、嵌套与匿名嵌套结构体、结构体标签的JSON序列化应用、值/指针接收者方法。高级特性部分涵盖组合实现"继承"、结构体实现接口、工厂函数模式、结构体比较、空结构体优化以及内存对齐技巧。文章强调Go应遵循"组合优于继承"原则,通过结构体嵌入实现代码复用,并提供了性能优化建议如合理使用指针接收者、优化内存布局等。最后总结了结构体使用的最佳实践,包括工厂函数、字段访问控制、接口实现等
2025-12-13 10:06:14
292
原创 Go之路 - 7.go的函数
本文系统介绍了Go语言中函数的使用方法和高级特性。主要内容包括:1) 基础函数声明、多返回值和命名返回值;2) 函数作为值和闭包实现;3) 可变参数和延迟执行(defer)机制;4) 方法与接收者的定义和使用;5) 匿名函数和错误处理模式;6) 函数实现接口和回调函数设计模式;7) 函数选项模式等最佳实践。文章通过大量代码示例展示了Go函数式编程的核心特性,涵盖了从基础语法到高级应用的全方位内容,为开发者提供了完整的Go函数使用指南。
2025-12-12 10:28:37
194
原创 Go之路 - 6.go的指针
Go语言指针详解:基础概念与核心应用 本文系统介绍了Go语言中指针的核心知识,包括指针基础概念、声明初始化方法、指针操作以及与函数、结构体、数组/切片、映射的结合使用。重点讲解了指针的解引用、值传递与指针传递的区别、指针接收者方法等关键特性,并分析了多级指针的应用场景。文章指出Go指针相比C/C++更安全,没有指针算术,减少了内存错误风险,同时强调了指针在函数参数传递、大结构体处理和数据共享等场景中的优势。通过丰富的代码示例展示了指针的正确使用方式,帮助开发者编写高效清晰的Go代码。
2025-12-11 14:16:54
271
原创 Go之路 - 5.go的流程控制
本文介绍了Go语言中的条件语句和循环结构。条件语句部分详细讲解了if-else语句的基本用法、实际示例和初始化语句特性,以及switch-case语句的基本用法、多值匹配、表达式判断、初始化语句和fallthrough关键字。循环语句部分涵盖了for循环的基本形式、类似while的循环、无限循环、遍历数组/切片/map/字符串的方法,以及break和continue控制语句的使用,包括带标签的break和continue实现多层循环控制。这些控制结构是Go语言编程的基础组成部分,掌握它们对编写高效、清晰的代
2025-12-11 11:42:58
175
原创 Go之路 - 4.go的集合[完整版]
本文介绍了Go语言中四种常用的集合类型:数组、切片、映射和列表。数组是固定长度的同类型元素集合,切片是动态长度的数组,支持追加、删除等操作。映射是键值对集合,提供高效查找功能。列表通过container/list实现双向链表结构。每种类型都展示了基本用法和高级操作,包括多维数组、切片分块、map反转合并等实用技巧,涵盖了Go语言集合操作的核心知识点。
2025-12-11 11:32:36
238
原创 Go之路 - 3.go的数据类型与转换
Go语言类型系统分为基础类型和复合类型两大类。基础类型包括布尔型(bool)、整数型(int/uint等)、浮点型(float32/64)、复数型(complex64/128)和字符串(string)。复合类型包含数组(固定长度)、切片(动态数组)、映射(map键值对)、结构体(struct)、指针和函数类型。每种类型都有特定用途,如rune处理Unicode,byte处理二进制数据。类型系统设计强调简洁高效,支持类型推断和显式转换,同时通过零值初始化、严格类型检查等机制确保安全性。复合类型如切片和映射提供
2025-12-11 10:32:22
464
原创 vite+vue3 ssg预渲染方案
本文介绍了使用Vite+Vue3项目配置预渲染的完整方案。首先安装必要的依赖包,包括@prerenderer/rollup-plugin插件和Vue3、Vite基础依赖。然后通过配置vite.config.js文件,指定需要预渲染的路由路径,设置Puppeteer渲染器参数,并添加HTML后处理逻辑以优化输出。文中特别提供了可执行的配置代码片段,包括浏览器路径设置和空白字符清理等实用技巧。最后只需执行pnpm build命令即可完成预渲染。该方案经过验证可避免常见问题,为Vue项目实现SSR提供了一种简单可
2025-12-11 10:19:21
206
原创 Go之路 - 2.go的常量变量[完整版]
本文系统总结了Go语言变量声明与使用的核心知识点:1)变量声明方式包括标准var声明、初始化声明和短变量声明;2)未初始化变量会自动赋零值;3)匿名变量_用于忽略不需要的值;4)特殊用法如常量、指针、类型转换等;5)复合类型变量包括数组、切片、map和结构体的声明方法。关键要点包括短声明只能在函数内使用、显式类型转换、零值初始化机制和块作用域规则。这些基础语法是掌握Go语言编程的重要前提,建议通过实践加深理解不同声明方式的适用场景。
2025-12-10 17:11:24
185
原创 Go之路 - 1.gomod指令
本文提供了Go模块(GoModules)的简明使用指南,适用于Go1.11+版本。主要内容包括:1)通过gomodinit初始化项目;2)使用goget添加/更新依赖,推荐固定版本;3)通过gomodtidy自动管理依赖关系;4)构建运行程序的标准流程。指南强调了go.sum文件的重要性,并给出了日常开发推荐工作流:初始化→编码→添加依赖→整理依赖→测试运行。还介绍了查看依赖树和升级依赖的方法,提醒谨慎使用破坏性更新。遵循本指南可确保Go项目的依赖管理清晰高效。
2025-12-10 16:44:22
278
原创 React18+快速入门 - 5.受控组件与非受控组件
React表单组件分为受控和非受控两种类型。受控组件由React state完全控制,通过value属性绑定数据,onChange事件更新state,实现实时同步验证和提交。非受控组件则由DOM自身管理数据,通过ref获取值,性能更好但集成度低。文章详细介绍了各种表单元素(文本框、单选、复选、下拉框等)的受控实现方式,并展示了结合touched状态和验证函数的表单验证方案。受控组件适合需要复杂交互和验证的场景,而非受控组件更适合简单表单或性能敏感场景。
2025-12-09 16:09:42
391
原创 React18+快速入门 - 4.组件插槽
React中实现组件插槽的多种方法:1.使用props.children作为默认插槽接收任意JSX内容;2.通过props传递命名插槽实现多插槽布局;3.采用Render Props模式通过函数prop共享组件逻辑;4.将函数作为子组件使用,使子组件能访问父组件状态。这些方法使React组件更加灵活可复用,可根据不同场景选择合适的插槽实现方式。
2025-12-09 15:26:10
458
原创 React18+快速入门 - 3.组件通讯[完整版]
本文详细介绍了React中各种组件通信方式,包括基础到高级的解决方案:1)父子组件通过props向下传递数据;2)子组件通过回调函数向父组件传递数据;3)兄弟组件通过状态提升实现共享状态;4)跨层级组件使用Context API避免属性层层传递。每种方式都配有实际代码示例,如父子组件的数据传递、兄弟组件通过共同父组件通信、以及使用Context API实现跨组件数据共享。这些方法覆盖了React开发中常见的数据通信场景,开发者可根据具体需求选择合适的方式。
2025-12-09 15:06:06
483
原创 React18+快速入门 - 2.核心hooks之useEffect
本文详细介绍了 React 的 useEffect Hook 及其应用场景。主要内容包括:1) 基础概念和语法;2) 5种使用模式:每次渲染执行、仅挂载执行、依赖特定状态、多依赖项和清理函数;3) 实际应用示例:数据获取、事件监听、表单防抖和 localStorage 交互。文章通过代码示例展示了 useEffect 在不同场景下的正确使用方法,特别是依赖数组和清理函数的使用技巧,帮助开发者避免常见错误并提升组件性能。
2025-12-09 14:43:49
1040
原创 React18+快速入门 - 1.响应式机制之 useState 和 useReducer
本文详细介绍了React中两个核心状态管理Hook:useState和useReducer。首先讲解了useState的基础用法,包括三种初始化方式(直接值、函数初始化、对象状态)和四种更新状态的方法(直接设置新值、函数更新、部分更新对象、重置状态),并通过TodoList示例展示复杂状态管理。然后介绍了useReducer的基本概念,适合处理复杂状态逻辑,演示了reducer函数的三种写法(switch语句最常用),通过计数器示例说明如何使用dispatch派发不同action来更新状态。全文通过丰富代码
2025-12-09 14:34:24
497
原创 无需绑卡的海外地图
本文介绍了一种无需绑卡的海外地图展示方案。针对Google、Mapbox等地图服务需要绑卡注册的痛点,推荐使用Leaflet前端库配合免绑卡瓦片源的解决方案。文章提供了一个可直接使用的HTML代码示例,包含地图初始化、三种免绑卡瓦片源选择(OpenStreetMap、CartoDB、Wikimedia)、公司位置标记等功能。获取经纬度坐标可通过OpenStreetMap官网完成,只需替换代码中的坐标即可快速实现公司位置展示。该方案简单实用,有效解决了海外地图展示的难题。
2025-12-01 14:59:57
197
原创 Nuxt4提升SEO与搜索展示效果-结构化数据Schema.org
结构化数据是一种标准化格式,使用Schema.org词汇表帮助搜索引擎理解网页内容,从而在搜索结果中展示丰富摘要(Rich Snippets)。它能显著提升SEO效果,包括提高点击率、增强内容展示、获得特殊展示位等优势。常见类型包括产品、食谱、文章、活动、面包屑导航等,每种类型都有特定的数据格式要求,如产品需包含名称、价格、库存状态等信息。通过JSON-LD格式标记,可以优化网站在搜索引擎中的呈现效果。
2025-12-01 09:48:51
822
原创 [逆向] 2.加壳脱壳之UPX
UPX是一款开源可执行文件压缩工具,能减少程序体积50%-70%而不影响运行。文章介绍了UPX的核心概念(加壳/脱壳)、Windows环境下的安装配置方法,以及常用命令详解。特别强调了适用场景(C/C++等原生程序)与不适用场景(.NET/Java等)。提供了安全压缩工作流、批量处理技巧和构建流程集成建议,并针对常见问题给出解决方案。核心建议包括:确认程序类型、保留备份、立即验证和使用最新版本。UPX在合适场景下能显著优化程序分发效率。
2025-11-29 19:03:14
1107
原创 Nuxt 4 多语言网站SEO - 让谷歌精准收录各语言版本
本文详细介绍了在Nuxt 4项目中实现多语言SEO的完整方案。重点阐述了三种多语言网站结构(顶级域名、子域名、目录路径),并推荐使用目录路径方案。核心实现包括:建立清晰的URL结构、动态生成hreflang标签、设置HTML lang属性、多语言Meta标签配置以及自动生成多语言sitemap。文章还解析了搜索引擎抓取和索引多语言页面的完整流程,确保不同地区用户搜索时能正确显示对应语言版本。这套解决方案能有效提升网站在全球范围的搜索排名和用户体验,适用于支持多语言的Nuxt项目开发。
2025-11-28 14:14:05
816
原创 [逆向] 1.本地登录爆破
本文介绍了使用Node.js创建可执行文件并用调试工具进行爆破的过程。首先通过npm初始化项目,安装bun打包工具,编写包含账号验证的JavaScript代码,最后用bun打包成exe文件。随后使用dbg调试工具加载该exe,通过交互操作定位内存中的账号信息,演示了如何绕过简单的登录验证。整个过程展示了从代码编写到逆向分析的全流程,为前端开发者提供了一个基础的逆向工程示例。
2025-11-26 19:15:18
447
原创 软件卸载流程
本文介绍了彻底卸载软件的三个步骤:首先通过系统正常卸载程序;其次查找并删除用户配置文件目录中的相关文件夹;最后清除应用数据缓存中的残留文件。这三个步骤可确保软件及其相关数据被完全移除。操作时需使用Windows的运行窗口输入特定路径命令,检查并删除对应目录。该方法适用于大多数软件的彻底卸载需求。
2025-11-23 16:40:30
182
原创 前端如何快速抄网站
吐槽前端开发过程中频繁修改页面内容的困扰,介绍了一个实用工具——谷歌浏览器插件SingleFile。该插件可以快速将整个网页保存为单个HTML文件,操作简便:访问目标网页后点击插件图标,待进度条完成即可完成保存。这种方法为前端开发者提供了一种高效的页面内容复用方案,避免了重复开发的工作量。
2025-11-19 15:11:22
209
1
原创 前端牛马开发必用插件: code-inspector-plugin
Code-inspector-plugin是一款前端开发调试工具,支持在浏览器中直接定位源代码位置,适用于React、Vue和原生JS项目。通过简单配置即可集成到Vite等项目构建工具中,提供可视化开关和编辑器跳转功能(如VSCode),显著提升开发调试效率。安装仅需npm命令,配置示例展示了与Vite和Vue插件的协同使用方式。
2025-11-08 14:22:52
378
原创 linux挂载系统盘[ubuntu22 2025年11月]
本文详细介绍了Linux系统下挂载新磁盘的完整步骤:1)使用lsblk查看磁盘;2)通过fdisk对/dev/vdb分区;3)格式化为ext4文件系统;4)创建/data目录并挂载;5)验证挂载状态;6)使用blkid获取UUID并写入fstab实现开机自动挂载;7)测试配置正确性。整个过程涵盖了从分区到持久化挂载的全部操作,确保新磁盘可以永久用于数据存储。
2025-11-04 09:45:46
265
原创 前端没有3D知识,如何写一个性能不差的3D看房功能
本文介绍了如何利用Three.js和相关工具实现3D看房功能。作者分享了一个技术方案:首先使用sharp库将全景图片切割成4x4网格(行业标准的2:1比例),然后通过Photo Sphere Viewer的EquirectangularTilesAdapter实现分块加载,在Vue3框架中构建交互界面。该方法避免了复杂的着色器编程,适合基础开发者实现性能良好的3D全景展示功能。文章包含图片处理代码示例和前端实现方案,并建议使用云存储提升访问速度。
2025-10-31 16:55:53
359
1
原创 写官网要知道SEO的几件事
爬虫主要通过外链、sitemap提交、robots.txt引导和内部链接结构发现网页。新页面可通过更新sitemap、增加内部链接、API推送等方式让爬虫发现。即使未提交sitemap,爬虫也可能通过外链、DNS信息、用户搜索、社交分享或内部链接被动发现页面。建议主动提交sitemap到搜索引擎平台(如Google Search Console)以提高被发现概率。
2025-10-27 09:27:53
759
原创 [Nodejs+LangChain+Ollama] 2.提示词实践
本文介绍了提示词(prompt)在语言模型开发中的应用。提示词模板类似于短信/邮件模板,包含指令、问答示例和问题。文章详细讲解了如何创建提示词模板、聊天消息提示词模板,以及使用MessagePlaceholder动态插入消息。重点介绍了Few-shot prompt模板,通过少量示例指导模型处理新输入,并展示了示例选择器(SemanticSimilarityExampleSelector)的应用,可根据输入自动选择最相关示例。这些技术可有效提升语言模型的理解和响应能力。
2025-09-22 23:09:11
1033
1
原创 [Nodejs+LangChain+Ollama] 1.第一个案例
上一世,在中国Ai人工智能的市场被Java和Python垄断,这一世我Nodejs要夺回我失去的一切!
2025-09-21 22:04:48
901
原创 使用Node.js和PostgreSQL构建数据库应用
PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台。结合这两个技术,我们可以创建出色的数据驱动应用。本文将介绍如何使用Node.js中的`pg`库与PostgreSQL数据库进行交互。
2025-09-21 19:28:40
582
原创 我的ORM迁移之旅:从TypeORM到Prisma再到Drizzle
本文分享了作者在Node.js开发中使用TypeORM、Prisma和Drizzle三种ORM库的实践体验。TypeORM上手简单但存在类型安全和性能问题;Prisma提供完善的类型安全和迁移系统,但学习曲线较陡;Drizzle则平衡了类型安全和SQL灵活性。作者总结出TypeORM适合快速原型,Prisma适合复杂项目,Drizzle适合追求轻量级和SQL控制的场景。最终选择需根据项目需求和团队偏好,保持对新技术的开放态度才能找到最佳工具。
2025-08-25 09:07:56
1144
原创 使用 npm-run-all2 简化你的 npm 脚本工作流
摘要:npm-run-all2 是 npm-run-all 的维护分支,用于并行或顺序执行多个 npm 脚本。相比原版,它解决了兼容性问题、修复了 bug,并改进了 TypeScript 支持。通过 run-s 和 run-p 命令可分别实现顺序和并行执行,支持通配符匹配和参数传递。安装简单,API 与原版兼容,是简化复杂构建流程的理想工具,特别适合需要执行多个相关任务的 Node.js 项目。
2025-08-16 17:02:10
633
原创 前端还在转全栈学Java吗,来看看这个
本文对比了新兴的TypeScript框架Encore.ts与传统的Spring Boot 3在后端开发中的差异。Encore.ts基于Rust混合运行时,在性能(RPS测试中表现突出)、启动速度(毫秒级)和内存占用上优势明显,适合高频交易和实时API场景;而Spring Boot 3凭借JVM成熟生态,在企业级应用和复杂业务中更稳定。开发体验上,Encore.ts学习曲线低(TypeScript生态),Spring Boot则依赖Java注解和IDE深度集成。建议新项目追求性能选择Encore.ts,
2025-07-23 15:25:09
810
原创 Encore.ts:下一代高性能 TypeScript 后端框架的崛起
Node.js 生态中,Encore.ts 凭借 Rust + TypeScript 混合架构实现高性能,Rust 处理 I/O 密集型任务,TypeScript 专注业务逻辑,性能远超 Express 和 Fastify。与 Elysia.js、Hono、Bun 等框架对比,Encore.ts 在 高并发、云服务支持 方面优势显著,适合企业级应用。其他框架如 Elysia.js(全栈 TS)、Hono(边缘计算)、Fastify(传统 Node)各有适用场景。Encore.ts 代表未来 Rust
2025-07-23 15:17:52
1472
原创 ==让我没有安全感,就像漂亮的她一样
JavaScript的==运算符因隐式类型转换常导致反直觉结果。文章解析了其转换规则:数字与字符串比较时字符串转数字,布尔值转数字(true→1,false→0),对象调用valueOf()/toString(),null==undefined为true。通过三个典型案例(0==''→true因空字符串转0,0=='0'→true因'0'转0,''=='0'→false因直接比较字符串)演示了转换过程,并提供了流程图说明。建议使用===避免隐式转换,因其更可预测(类型不同直接返回false)。最后给出最佳实
2025-07-15 10:51:00
793
原创 我被MySQL的锁与事务绕晕,交通警察让我明白了一切
MySQL默认的REPEATABLE READ隔离级别就像"普通城市的交通规则"一样,已经能满足大多数日常需求。只有在特殊场景才需要额外加锁或调整隔离级别。
2025-07-04 11:55:59
166
原创 在 NestJS 中优雅使用 TypeORM 进行事务管理
本文介绍了NestJS框架中使用TypeORM进行事务管理的四种方法:1) QueryRunner基础方式;2) DataSource简洁方式;3) 自定义事务装饰器(推荐);4) 全局事务拦截器。重点分析了每种方法的优缺点及适用场景,并提供了事务管理的最佳实践建议,包括保持事务短小、正确处理异常等。文章指出DataSource.transaction方法或自定义装饰器适用于大多数业务场景,帮助开发者确保数据的一致性和完整性。最后通过表格对比了各方法的复杂度、灵活性和适用场景,为开发者选择合适的事务管理方案
2025-07-03 17:22:42
530
原创 MySQL事务,看我这一篇就够了
MySQL事务是确保数据一致性的关键技术,具有原子性、一致性、隔离性和持久性(ACID)四大特性。本文详细介绍了事务的基本使用,包括控制语句、自动提交设置和保存点技术,并深入解析了四种隔离级别及其适用场景。通过银行转账案例展示了事务的实际应用,最后总结了最佳实践:控制事务时长、避免外部操作、合理选择隔离级别和正确处理异常。正确使用事务能在数据一致性和系统性能之间取得平衡,是开发可靠数据库应用的关键。
2025-07-03 17:12:36
960
原创 基于Vue3+TypeScript+NaiveUI的Cron表达式生成器
基于Vue3+TypeScript+NaiveUI的Cron表达式生成器是一款可视化定时任务配置工具。该组件通过直观的UI界面简化了传统Cron表达式配置的复杂性,支持秒级精度、多种执行方式和特殊表达式。采用Vue3+TypeScript技术栈,结合NaiveUI提供美观界面,实现实时预览、一键复制等功能。文章详细阐述了组件设计思路、技术实现和实际应用场景,帮助开发者轻松配置定时任务,解决了Cron表达式晦涩难懂的问题。该项目既可独立使用,也适合集成到各类后台管理系统中。
2025-06-20 17:18:29
1266
原创 NestJS中实现动态Cron任务管理
本文介绍了在NestJS中实现动态Cron任务管理的方法。通过@nestjs/schedule模块和SchedulerRegistry服务,开发者可以灵活地在运行时添加、修改和删除定时任务。文章详细讲解了基础配置、动态任务服务实现、任务管理API设计以及实际应用示例,并探讨了任务持久化、分布式环境考虑等高级主题。这套方案为需要动态调整任务调度的应用(如CMS、数据分析平台等)提供了可靠的技术支持,使任务管理更加灵活可控。
2025-06-20 16:13:53
452
原创 Monorepo + PNPM 搭建高效多项目管理
摘要: 本文详细介绍了如何利用 Monorepo + PNPM 构建高效的多项目管理架构。Monorepo 将多个项目(如前端、后端、共享库)集中在一个仓库中,提升协作效率;而 PNPM 通过硬链接和 Workspace 支持优化依赖管理。实战部分从项目初始化、Workspace 配置、子项目创建到跨包引用,逐步展示搭建流程。此外,还涵盖任务运行、批量操作及高级优化(如 Turborepo 集成)。核心优势包括代码复用、统一版本、快速安装和磁盘节省,适合全栈开发、组件库等场景。通过本文,开发者可快速掌握现代
2025-06-10 15:44:46
2096
vue中watch监听props数据问题
2023-03-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅