
Go语言
文章平均质量分 84
内核程序员kevin
我是一名程序员, 专注于Linux应用程序与内核模块开发,喜欢研究各种技术。目前担任某数据安全企业架构师, 在安全软件研发和架构领域深耕近15年。
我希望能帮助更多的程序员成长。
欢迎关注我,让我们一起探讨技术,共同进步。
展开
-
请让你的Go程序优雅退出:避免数据丢失、资源泄露的隐患!
本文详细介绍了如何在Go语言程序中实现优雅退出,以避免数据丢失和资源泄露的风险。首先揭示了强制退出可能带来的五大风险,包括未保存的数据丢失、未释放的资源泄露等,并阐述了优雅退出对系统稳定性和用户体验的重要性。接着,文章讲解了如何使用`os/signal`包捕获系统信号(如SIGINT、SIGTERM),并通过代码示例展示了具体的实现方法。原创 2025-02-14 09:15:00 · 564 阅读 · 0 评论 -
Go语言接口中的值接收者和指针接收者:用法和区别
1. **值接收者实现的接口**,既可以存储值类型也可以存储指针类型,灵活性高。 2. **指针接收者实现的接口**,只能存储指针类型,明确意图,避免误用。原创 2024-12-28 09:00:00 · 755 阅读 · 0 评论 -
Go语言方法接收者与C++中this指针的对比
- **C++的`this`指针**是隐式传递的指针,允许成员函数访问对象的成员。它对于链式调用和成员函数的实现非常有用。- **Go语言的接收者**则通过显式声明值接收者或指针接收者,达到了类似于C++ `this`指针的效果,但提供了更多的灵活性和可读性。原创 2024-12-28 09:15:00 · 943 阅读 · 0 评论 -
Go语言中如何快速定位程序崩溃位置
在Go语言中,快速定位程序崩溃位置的方法包括调整`GOTRACEBACK`环境变量以获取更详细的堆栈信息,设置选项有`none`、`stack`、`all`和`crash`,分别适应不同调试需求。使用`runtime.Stack`函数配合`defer`和`recover`可以捕获`panic`发生时的调用堆栈,帮助精确定位问题。对于由操作系统信号(如`SIGSEGV`)引起的崩溃,利用`os/signal`包监听并响应这些信号,同样能捕获关键的堆栈信息。原创 2024-12-10 09:15:00 · 722 阅读 · 0 评论 -
用Go语言重写Linux系统命令 -- nc简化版
文章介绍了用Go语言重写简化版nc(netcat)工具的全过程,旨在创建一个专注于网络连通性测试的小巧实用工具,同时增加对HTTP和Ping测试的支持。项目核心功能包括TCP、UDP端口测试,HTTP请求测试,以及Ping测试;设计上注重用户体验,提供命令行参数配置,并确保快速响应与简洁性。原创 2024-12-07 09:19:30 · 885 阅读 · 0 评论 -
Go语言玩转原始套接字通信:从入门到飞起
本文介绍了如何使用Go语言实现原始套接字通信,从基础概念到具体实现。原始套接字允许直接操控IP层及以下的协议栈,适用于网络嗅探、自定义协议实现和网络诊断等场景。文中详细解析了IPv4头部结构及其各字段意义,并解释了校验和计算方法。通过构建客户端和服务器两端程序,演示了数据包的发送与接收过程。客户端负责创建自定义IP头部并发送至服务器,服务器接收后解析IP头部信息并将数据回传给客户端。原创 2024-12-06 09:46:35 · 1151 阅读 · 0 评论 -
用Go语言重写Linux系统命令 -- ls
本文介绍了如何用Go语言重写Linux的`ls`命令,旨在帮助读者理解文件系统和系统调用。文章首先解释了为何选择Go来实现这一项目,并设定了功能目标,包括列出目录内容、显示隐藏文件、以长格式展示详细信息及以人类可读格式显示文件大小。接着详细说明了环境配置、基础代码结构、选项支持及功能增强的过程。特别强调了用户名与组名解析、文件权限及元信息处理等细节。最后,文章讨论了编译打包步骤,并提出了未来可能的功能扩展建议,如排序、颜色输出、递归列表、跨平台支持等。原创 2024-12-02 09:14:11 · 1212 阅读 · 0 评论 -
用Go语言重写Linux系统命令 -- ping
本文介绍了如何使用Go语言重写Linux系统中的`ping`命令。首先,简要概述了ICMP协议和`ping`命令的工作原理,包括ICMP包的结构和发送接收过程。接着,详细描述了项目初始化步骤、代码模块划分以及每个模块的具体职责。项目被划分为ICMP包构造、网络通信和统计信息处理三个主要部分。文章还提供了一个完整的Go代码实现,包括ICMP包的创建、发送与接收、统计信息的收集及输出。最后,给出了一个测试脚本,用于验证程序功能,并说明了如何为编译后的程序添加必要的权限以执行ICMP请求。原创 2024-11-29 09:22:39 · 1619 阅读 · 0 评论 -
用 Go 语言从零开始打造你的端口转发工具
从项目初始化到配置解析与核心逻辑实现,每一步都旨在帮助你加深对Go语言网络编程的理解。本工具支持TCP流量转发,可通过配置文件灵活配置。原创 2024-11-23 09:15:00 · 2083 阅读 · 0 评论 -
使用Go语言开发eBPF入门教程
在这篇文章中,我们一起探索了 eBPF 技术,通过克隆 `cilium/ebpf` 仓库,编写了一个简单的 eBPF 程序 `hello.c`,并在 Go 代码 `hello.go` 中加载和运行了该程序。我们使用 Kprobe 监控 `execve` 系统调用,并在每次调用时向内核日志打印一条消息。通过 `go generate` 和 `go build` 编译运行程序,最终在 `/sys/kernel/tracing/trace_pipe` 中看到了输出。原创 2024-11-18 09:15:00 · 590 阅读 · 0 评论 -
深入掌握Go语言中的空接口: interface{}
在这篇教程中,我们深入探讨了 Go 语言中的空接口 interface{}。从定义和基本用法,到类型断言和类型开关,再到最佳实践和编译器处理机制,我们全面解析了空接口的各个方面。空接口作为 Go 语言中的顶级接口,提供了极大的灵活性,可以处理任意类型的值。通过类型断言和类型开关,我们可以安全地处理不同类型的值,同时保持代码的清晰和高效。希望这篇教程能帮助你更好地理解和应用空接口,提升你的 Go 语言编程技能。继续探索,不断进步,享受编程的乐趣吧!原创 2024-11-16 09:15:00 · 1548 阅读 · 0 评论 -
Linux 使用go语言通过D-Bus发送桌面通知
Linux 使用go语言通过D-Bus发送桌面通知原创 2023-03-28 08:45:41 · 507 阅读 · 0 评论