- 博客(264)
- 资源 (1)
- 收藏
- 关注
原创 条件编译控制
本文介绍了Go语言中//go:build debug指令的用法: 添加该指令的文件默认不编译,需通过-tags debug参数显式包含 This file may be excluded due to its build tags; try adding "-tags=<build tag>" to your gopls "buildFlags" configuration See the documentation for more information on working with build t
2026-01-20 14:06:48
30
原创 redis 的内存清理
Redis内存优化、Redis内存释放、Redis配置调优、maxmemory参数、Redis淘汰策略、Redis过期删除
2025-12-23 18:15:06
623
原创 rust match 匹配用法
本文介绍了Rust中模式匹配(match)的多种用法,包括: 基本特性:支持各种类型匹配、解构复杂数据结构、是表达式有返回值、要求穷尽所有可能情况 具体匹配方式: 整数匹配:支持区间和通配符(_) 字符切片匹配 枚举匹配:包括自定义枚举和Option/Result标准枚举 结构匹配:解构元组和结构体 守卫匹配:在模式中添加if条件 引用匹配:处理String类型 语法特点: 必须覆盖所有可能情况 匹配顺序影响结果 支持值绑定和解构 匹配后所有权通常保留 模式匹配是Rust中强大且安全的特性,能优雅地处理各种
2025-12-19 16:00:01
614
原创 Elasticsearch 数据类型用途
Elasticsearch数据类型主要分为核心数据类型和复合数据类型两大类。核心数据类型包括字符串(text和keyword)、数字型、日期型、布尔型、二进制型和范围型。复合数据类型涵盖数组、对象、嵌套类型、地理位置(geo_point和geo_shape)以及特定类型如IP地址、自动补全等。其中text类型用于全文检索会被分词,而keyword类型保持原样用于精确匹配;日期型支持多种格式存储;地理位置类型支持坐标点和复杂形状。此外还介绍了token_count统计分词数量等特殊用途类型。这些丰富的数据类型
2025-12-18 15:21:37
1043
原创 中兴的大明(张居正)
张居正先生一生用心做了两件大事情,一件教了两个学生,这两个学生是父子,隆庆和万历,另一件事是改革变法,这也是他最值得骄傲的事情。中国历史上出名的变法人物,有商鞅、王安石、张居正,只有商鞅先生是最成功切得以持续实施的,但是下场也是最惨的一位。张先生时任内阁首辅,死之前还被封为太师,太师虽只是一个名号,但是却是为官者的最高荣耀。(明代的政治中心为一个叫内阁机构,一般设为7位成员,这7位内阁大学生是按顺序排名的,由于老朱把宰相废了,慢慢的内阁便为政治中心)隆庆皇帝死得早,小万历...
2025-12-18 15:20:39
329
原创 中兴的大明(万历新政)
万历新政(即张居正变法)以考成法整顿吏治、强化中央集权,军事上派戚继光、李成梁镇守边防并修缮长城、与鞑靼议和,经济上推行一条鞭法清丈土地、计亩征银,同时治理黄淮水利,短期内充实了国库、巩固了国防。但改革触动了官僚、大地主阶级利益,一条鞭法虽降低征税成本,却因农民需卖粮换银缴税,遭商贩与官员双重剥削而损害底层利益,激化了多方矛盾。这场改革实为明朝的 “兴奋剂”,仅短时提振国力,因一人主导、缺乏延续性,且未能突破农耕社会生产力局限,最终无法挽救王朝颓势。张居正死后下场凄惨,1582 年其逝世也被视作明朝失去翻盘
2025-12-18 15:19:12
262
原创 sublimeText Golang插件安装
本文介绍了在Sublime Text中配置Go开发环境的简要步骤:首先通过Package Control安装插件;其次安装GoSublime插件;最后在用户设置中配置GOPATH路径为"D:\golang"。这些操作可以帮助开发者在Sublime中搭建基本的Go语言开发环境。
2025-12-18 15:13:44
128
原创 Elasticsearch Centos7的安装
本文详细介绍了ElasticSearch 6.2.4及相关组件的安装配置过程。主要内容包括:1)JDK环境配置和ElasticSearch安装,解决root用户运行问题和内存调整;2)创建专用用户运行ES服务,配置系统参数优化;3)安装Head插件管理工具,解决跨域访问问题;4)Kibana可视化平台的安装与配置;5)中文分词器IK的安装方法。文中提供了完整的命令行操作步骤和常见问题的解决方案,涉及环境变量设置、用户权限管理、端口配置等多个技术要点,为搭建完整的ElasticSearch生态体系提供了实用指
2025-12-18 15:11:25
889
原创 go.dev博客阅读-pipelines
Go语言中的高效流式数据处理 本文介绍了如何利用Go的chan类型实现高效流式数据处理,重点探讨了MapReduce模型和生产者-消费者模式的应用。通过平方计算的示例,展示了从基础管道到并行处理的演进过程: 基础实现:使用无缓冲通道构建简单管道 并行优化:引入多goroutine处理和有缓冲通道 安全改进:添加done通道实现优雅终止 性能考量:讨论GC优化和资源释放问题 文章特别强调了通道关闭、协程管理和异常处理的重要性,为构建健壮的流式处理系统提供了实用建议。
2025-12-18 14:58:50
858
原创 代码开发,常用的几种设计模式【golang】
本文介绍了Go语言中常用的几种设计模式及其实现方式。创建型模式包括单例模式(使用sync.Once保证线程安全)和工厂模式(通过函数返回接口);结构型模式涵盖装饰器模式(动态添加功能)和适配器模式(接口转换);行为型模式包含策略模式(算法封装替换)和选项模式(优雅参数设置)。每种模式都通过典型代码示例展示了Go语言中的实现特点,如接口组合、闭包函数等特性,体现了Go语言简洁高效的设计哲学。这些模式为构建灵活、可维护的Go程序提供了有效解决方案。
2025-12-15 17:01:58
693
原创 设计模式-控制反转【golang】
本文通过Go语言示例解释了控制反转(IoC)设计模式。文章展示了传统方式下业务逻辑直接依赖具体数据库实现的问题,当需要更换数据库时不得不修改业务代码。然后通过引入接口和回调函数,将依赖管理从业务逻辑中抽离出来,交由外部容器控制。这种实现方式采用闭包回调函数+接口的组合,通过预定义代码块在运行时回调执行,从而降低了业务代码与具体实现的耦合度,使得在不修改业务逻辑的情况下可以灵活切换依赖组件。
2025-12-12 17:46:56
255
原创 golang的包名中带有 internal 引入
Go语言中internal包是特殊的访问控制机制,仅允许其父目录及子目录下的代码导入。例如在github.com/myapp项目中,main.go可以导入同级internal包,但external/consumer.go则不行。这种设计用于隐藏内部实现细节,防止外部误用。根据Go官方文档,该机制自Go1.4引入,适用于本地和远程包,远程internal包访问限制更严格。目录层级越深,internal包的可见范围越小,形成层级访问控制。
2025-12-09 17:57:05
143
原创 Windows PowerShell编程-alias别名
摘要:本文介绍了在Windows PowerShell中创建和使用自定义函数的方法。通过编辑$PROFILE文件(路径为C:\Users\用户名\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1),用户可以定义快捷命令。文章演示了如何创建配置文件(使用New-Item命令),并提供了两个示例函数(site和www),用于快速切换到指定目录。这种方法类似于Linux中的alias功能,能提高命令行操作效率。
2025-12-03 19:56:22
218
原创 golang sync包条件等待 sync.Cond
本文探讨了Go语言中sync.Cond的使用场景及其与互斥锁的区别。作者通过邮件发送任务的示例,对比了sync.Mutex、chan和sync.WaitGroup的实现方式,指出sync.Cond更适合多个goroutine等待条件满足的场景。sync.Cond通过Wait()挂起程序、Broadcast()/Signal()通知等待者的机制,提供了一种优雅的同步解决方案。文章最后强调sync.Cond本质上仍是基于互斥锁的封装,并指出其通知顺序不确定的特性,建议高层次的同步仍优先使用通道通信。
2025-12-03 13:37:57
339
原创 Mysql B+ 索引八股文
本文介绍了B+树的基本概念与特点,包括根节点、阶数、树高、叶节点等术语,并分析了页大小对树结构的影响。重点对比了MySQL中InnoDB和MyISAM存储引擎的索引实现差异:InnoDB采用聚簇索引(主键索引存储数据本身),MyISAM为非聚簇索引(存储数据指针)。文章还探讨了聚簇索引的优缺点,指出顺序主键(如自增ID)能减少页分裂,而非顺序主键会导致插入性能下降。最后建议合理设计主键以优化查询性能,避免回表操作和存储空间浪费。
2025-12-02 11:59:05
761
原创 golang testing包基准测试
Go语言基准测试(性能测试)使用*testing.B类型,测试函数需以Benchmark为前缀。通过go test -bench命令运行测试,其中b.N由框架自动调整。示例展示了任务池的性能测试,输出包含执行时间、内存分配等指标。Windows系统需注意$转义,添加-benchmem可查看内存分配情况。测试结果包含操作系统、CPU信息、执行次数、每次操作耗时及内存分配等详细信息。
2025-12-01 14:28:02
211
原创 golang中 go race 使用
Go语言竞态检测工具使用指南 本文介绍了Go语言中处理多线程/协程安全问题的方法,重点讲解了-race参数的使用。文章首先分析了常见的线程安全问题(死锁和竞争条件),然后详细介绍了Go内置的竞态检测器使用方法。通过实际代码示例展示了如何检测和修复竞争条件问题,包括: 故意编写的危险代码示例及其竞态检测报告 使用互斥锁修复后的安全版本 使用注意事项(性能影响、环境要求等) 特别提醒开发者应在测试环境中使用该工具,并避免在生产环境启用竞态检测。
2025-11-30 14:43:25
271
原创 Windows 开发中 msvc、Miscrosofe visual C++ 2015、Visual Studio Installer、Visual Studio
文章摘要:MSVC是微软C++开发工具链的统称,包含编译器、链接器等核心组件;Visual Studio是功能全面的集成开发环境,支持多种语言,MSVC是其C++开发模块;Visual Studio Installer是管理VS安装和组件的专属工具;Microsoft Visual C++ 2015包括开发组件和运行时组件包,前者用于C++开发,后者保证程序运行。这些工具共同构成了Windows平台的C++开发体系。
2025-11-17 14:05:32
847
原创 Windows 开发 rust 程序,常见的一些报错
在Windows系统开发Rust程序时,常见编译错误主要有三类:1) 依赖包编译失败,如windows_x86_64_msvc等系统底层库报错;2) dlltool.exe缺失错误;3) link.exe链接器未找到错误。这些问题的根本原因是缺少MSVC编译工具链。解决方法是通过Visual Studio Installer安装C++桌面开发工具集(2022版本),并配置系统环境变量CARGO_TARGET_DIR指向Rust工作目录。安装完成后即可正常使用cargo进行编译。
2025-11-17 14:03:45
660
原创 数组、哈希表实现原理
本文比较了数组和哈希表两种数据结构的特性与实现原理。数组通过连续内存存储和索引计算实现O(1)查询,但在搜索时需要O(n)或O(log n)时间。哈希表则通过哈希函数将键映射到数组索引,实现快速查找,但存在哈希冲突问题,常用链地址法解决。两种结构各有优缺点:数组查询高效但搜索慢,哈希表查询快但可能产生冲突。理解二者的内存机制有助于在实际业务中选择合适的数据结构方案。
2025-11-10 16:34:33
673
原创 洋葱模型-中间件实现【golang】
洋葱模型中间件实现摘要 本文介绍了洋葱模型中间件的实现原理与编程实践。中间件作为业务代码的过滤层,采用洋葱模型层层包裹请求处理流程,具有先进后出的栈式特点。 文章首先阐述了洋葱模型的概念,请求像穿过洋葱表皮一样层层递进到核心业务逻辑,再反向穿出各层中间件。然后通过Go语言示例展示了单层和多层中间件的实现方式: 单层示例实现了支付业务与风控中间件,演示了中间件初始化、业务绑定和执行流程 多层示例展示了日志、参数校验和IP黑名单三个中间件包裹登录业务逻辑的完整洋葱结构 实现要点包括: 中间件通过高阶函数返回函数
2025-10-27 18:15:04
382
原创 零拷贝Zero-copy
零拷贝技术通过减少数据在内存中的冗余拷贝,提升系统性能。其核心是让内核直接处理数据传输,避免应用程序参与不必要的拷贝。主要应用于大文件传输、日志收集等数据无需二次处理的场景。在Go中,io.Copy和syscall.Mmap实现了零拷贝功能,前者适合网络传输,后者适合文件随机访问。该技术不仅存在于操作系统层面,也体现在编程语言的切片设计等思想中,能有效节省CPU和内存资源。
2025-10-24 16:21:01
908
原创 Golang规则引擎 Gengine
本文介绍了规则引擎的概念及其在电商行业中的应用,重点讲解了基于Go语言的Gengine规则引擎。文章首先通过价格计算示例说明规则引擎如何将业务逻辑从代码中抽离,实现动态配置。然后详细介绍了Gengine的使用方法,包括规则定义语法、API调用流程和实际应用场景。Gengine通过抽象语法树将规则转换为可执行代码,支持动态加载。文章最后推荐了两个功能更强大的替代库。这种技术方案特别适合需要频繁修改业务规则的场景,如电商促销和风控系统。
2025-09-16 23:07:00
671
1
原创 编程语言中的GC对比
PHP与Golang的垃圾回收机制对比 PHP采用引用计数+循环垃圾回收的组合机制,适用于短周期web请求,内存自动释放。对于CLI或大数据处理场景,可通过gc_collect_cycles()手动触发回收。其优化空间有限,主要关注大对象分配和循环引用问题。 Golang使用三色标记清除算法,通过并发执行减少STW时间。GC触发条件包括内存阈值、定时器和手动调用。优化手段包括调整GOGC参数、使用对象池、减少指针等,可显著降低GC对性能的影响。 两种语言GC机制各具特色:PHP侧重实时性,Golang强调并
2025-09-08 16:59:50
827
原创 rust 代码格式化
Rust代码格式化工具使用指南:介绍了官方工具rustfmt和cargo fmt的区别,推荐使用cargo fmt格式化整个项目,rustfmt处理单个文件。针对VSCode编辑器,提供了配置自动保存格式化的方法(需安装rust-analyzer插件并设置editor.formatOnSave)。文章通过对比不规范和规范的代码格式,强调代码格式化的重要性,并给出不同场景下的格式化解决方案。
2025-09-06 12:42:44
377
原创 位运算语法糖-文件打开函数
本文介绍了位运算在权限控制和订单状态管理中的应用。通过定义不同位掩码表示权限或状态(如读、写、已支付等),使用|运算组合权限,&运算检测权限,&^移除权限。这种方法简洁高效,常见于文件操作和状态管理场景(如订单状态),通过位运算可轻松实现多权限/状态的组合判断。
2025-09-03 23:08:44
162
原创 微信扫码开发流程图
本文介绍了微信扫码开发的完整流程,通过流程图展示了从用户扫码到系统响应的各个环节。开发过程包括生成二维码、用户扫码验证、服务器回调处理等关键步骤,适用于支付、登录等多种应用场景。该流程图直观呈现了微信开放平台接口的调用顺序和数据处理逻辑,为开发者提供了清晰的实现指引。
2025-08-22 16:04:25
119
原创 github.com/stretchr/testify 包使用
本文介绍了Go语言中使用testify库进行测试断言的方法。相比标准库testing需要手动写if判断,testify提供了更简洁的结果导向断言方式。文章展示了assert包的基本用法,包括Equal、NotEqual、True/False、Nil、Contains等常用断言方法,并介绍了通过assert.New(t)减少参数传递的语法糖。同时对比了assert和require的区别:assert失败会继续执行后续测试,require失败则会立即终止。最后通过示例代码演示了两者在测试失败时不同的执行行为。
2025-08-04 16:59:22
803
原创 Elasticsearch轻量级替代品-meilisearch
MeiliSearch是一个基于Rust开发的高性能轻量级搜索引擎,具有以下特点:1)性能优于Go和Java方案,内存占用低;2)支持ElasticSearch常用查询功能;3)单机部署即可支持百万级数据量;4)分页效果优于ES,搜索精准度与ES相当。安装简单,通过Docker可快速部署,提供可视化控制台和模拟数据导入功能。配置选项丰富,支持多种实验性功能。虽然目前市场认知度有限,但表现出良好的发展潜力。
2025-08-03 18:14:04
835
原创 clickhouse 从入门到放弃
本文介绍了在Windows系统下使用Docker安装ClickHouse数据库的详细步骤。主要包括:1)拉取ClickHouse镜像;2)运行临时容器获取配置文件;3)修改配置文件(开放远程访问、设置密码);4)正式启动容器并映射端口和配置文件;5)验证安装。针对Windows权限问题,提供了使用Docker数据卷的解决方案。文章还介绍了多种连接方式(HTTP、TCP、MySQL协议)和权限配置方法,并演示了通过HTTP协议执行SQL查询的操作示例。最后提到将提供实际应用案例。
2025-08-03 18:11:58
358
原创 golang自定义标签
Go语言中的标签(Labels)可以实现类似goto的跳转功能,主要用于控制循环流程。标签定义在循环前,通过break/continue配合标签名使用。主要应用场景包括:1)跳出多层嵌套循环;2)在for-select结构中实现循环跳出。虽然标签功能强大,但不建议滥用,应优先考虑结构化编程方式。文中展示了标签在双重循环和通道选择中的典型用法,演示了如何通过标签实现精确的流程控制。
2025-07-27 22:09:02
166
原创 AI技术写作-Go协程超时控制实现
本文介绍了在Golang中实现子协程超时控制的方法。通过创建超时时间为6秒的context,使用select语句监控worker协程完成或超时状态。示例中3个worker分别耗时3、5、7秒,前两个在超时前完成,第3个worker因超时被终止。但需要注意的是,超时控制仅中断了主协程的等待,被终止的worker协程仍会在后台运行完成。正确做法应是在耗时操作中主动检查context状态,或使用支持context的IO库来实现真正的超时中断。
2025-07-27 21:36:32
338
原创 React Hook useEffect has a missing dependency: ‘fetchData‘. Either include it or remove the dependen
React 19中useEffect依赖项警告的解决方法:当在useEffect中使用外部函数时,ESLint会提示缺少依赖项警告。文章演示了三种解决方案:1) 将逻辑直接写入useEffect;2) 使用注释禁用ESLint检查;3) 用useCallback包裹函数并添加依赖。其中useCallback是最推荐的做法,它能确保函数仅在依赖变化时重建,避免不必要的重新渲染。其他方法虽能消除警告,但各有适用场景。
2025-07-14 22:54:17
193
原创 python 项目工程管理 uv
摘要:Astral公司开发的Rust语言Python包管理工具uv凭借并行处理技术大幅提升依赖解析和安装速度(比pip快10-100倍),支持多Python版本管理(类似nvm)。安装推荐使用curl命令,项目初始化自动生成虚拟环境和pyproject.toml(替代requirements.txt),通过uv add安装依赖、uv run执行脚本。其设计理念接近Node.js/npm工作流,但尚未成为Python社区官方标准。新特性包括脚本模式(单文件管理)和工具命令(如uvx pytest),需注意Py
2025-06-01 23:36:20
1313
原创 json-rpc 调用协议
JSON-RPC 2.0是一种轻量级RPC协议,使用JSON作为数据格式,适用于跨语言/平台的远程调用。文章介绍了JSON-RPC的基本概念、请求响应格式、错误代码规范,并通过示例展示了数组传参、命名参数、通知请求等多种使用场景。JSON-RPC具有简单性、标准化、跨平台和无状态的特点,适用于微服务、移动应用后端、物联网等多个领域,特别是在大模型agent服务中应用广泛。各语言都有相应的实现框架,如Python的jsonrpclib、JavaScript的jayson等。
2025-06-01 22:08:44
836
原创 http SSE 协议使用
摘要:Server-Sent Events(SSE)是一种HTTP协议扩展,用于实现服务器到客户端的单向通信。文章介绍了SSE的特点(长链接、单工通信、基于HTTP)、适用场景(如大模型流式返回),对比了HTTP不擅长的领域(大数据量传输、长时处理)的三种解决方案(轮询、WebSocket、SSE)。详细说明了SSE的行业规范,包括响应头要求、消息格式(data字段必填)、编码规范等。最后通过Node.js示例展示了SSE的实际应用效果,演示了在Postman和浏览器中的不同响应表现。SSE特别适合需要服务
2025-05-30 15:58:34
649
Closure闭包函数示例
2019-04-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅