自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

雁过留痕

从今天开始记录点滴

  • 博客(72)
  • 资源 (5)
  • 收藏
  • 关注

原创 Gone框架介绍33 - HTTP 注入说明

本文介绍Gone支持的HTTP参数注入

2024-06-22 13:03:41 599

原创 Gone框架介绍32 - 函数参数的依赖注入

函数参数的依赖注入,是v1.x版本正式发布的新功能,允许使用Goners仓库中的Goners来自动生成函数的参数对应的`[]reflect.Value`数组。这个功能由`Cemetery`接口的`InjectFuncParameters`方法提供。业务编写上,一般情况,不推荐使用该功能;如果尝试扩展Gone框架的功能,可以使用该功能。

2024-06-22 12:58:59 236

原创 Gone框架介绍31 - 使用`goner/zap`替代logrus默认实现,提升日志输出的效率

goner/zapgone是可以高效开发Web服务的Golang依赖注入框架。

2024-06-22 12:57:05 356

原创 Gone框架介绍30 - 使用`goner/gin`提供Web服务

goner/gingone是可以高效开发Web服务的Golang依赖注入框架。

2024-06-22 12:54:14 618

原创 Gone——golang依赖注入框架介绍

在Gone启动前,需要将所有的Goners注册到Gone框架,启动时Gone会对所有Goners的属性进行自动装配,完成依赖注入,编写组件不必关心依赖的实现和依赖的接口是如何来的,只需要直接使用就可以了。Gone启动后,会 复活 所有 Goners,建立一个 天国,“天国的所有人都不再残缺,他们想要的必定得到满足”。虽然golang的反射一直被人诟病太慢,但是在Gone中依赖注入只是程序的启动阶段,不影响运行阶段的速度,最多就是给启动过程增加几毫秒的时间,带来的好处却是不再需关心各种依赖如何创建。

2024-06-20 10:25:21 1209

原创 Gone框架介绍29 - 在Gone中使用gRPC通信

本介绍如何在gone框架中使用gRPC

2024-06-19 22:34:51 583

原创 Gone框架介绍28 - 使用goner.IsDefault 将Goner设置为接口的默认实现

本文介绍如何将Goner设置为接口的默认实现,解决按类型注入的歧义性,方便按类型依赖注入,省去记忆GonerId的麻烦。

2024-06-19 05:30:00 630

原创 Gone框架介绍27 - 再讲 Goner 和 依赖注入

本文介绍Gone框架的依赖注入设计逻辑

2024-06-16 21:37:29 1066

原创 Gone框架介绍26 - Gone v1.x 版本 正式发布,更加强大的依赖注入,更加卓越的执行效率

gone是可以高效开发Web服务的Golang依赖注入框架。

2024-06-16 14:31:35 1009

原创 gRPC - Protocol Buffer 编译器安装

本文大部分示例代码使用的是 Protocol Buffer 语言的第 3 版(proto3)。如果你想从源码构建 Protocol Buffer 编译器,或访问旧版本的预编译二进制文件,请参阅 Download Protocol Buffers。Protocol Buffer 编译器 protoc 用于编译包含服务和消息定义的 .proto 文件。安装后请检查 protoc 的版本(如下面所示),以确保版本足够新。从预编译的二进制文件安装(如下节所述)是确保使用最新版本的 protoc 的最佳方法。

2024-05-27 21:36:12 735

原创 Gone框架介绍25 - Redis模块参考文档

/设置缓存,Set的别名//设置缓存//获取缓存//删除缓存//根据模式获取缓存的key//获取当前Cache使用的前缀// Locker redis 分布式缓存//TryLock 尝试将key锁定一段时间,成功返回一个解锁函数,失败返回错误//LockAndDo 尝试获取锁,并执行fn函数,函数未执行完自动续期,函数执行完后自动释放锁//Expire 给key设置一段时间后过期//ExpireAt 设置key在某个时间点过期//Ttl 获取key的过期时间。

2024-05-23 22:19:49 704

原创 如何将老板的游戏机接入阿里云自建K8S跑大模型(下)- 安装nvidia/gpu-operator支持GPU在容器中共享

当时安装的详细步骤没有记录,重现起来太累了,也没有多少人阅读;说来算是虎头蛇尾,惭愧呀……

2024-05-23 22:13:01 363

原创 如何将老板的游戏机接入阿里云自建K8S跑大模型(中) - 将自建GPU服务器加入k8s集群做节点

安装了一个三节点的的K8S——基于基于rke2的K8S部署过程记录- rke2 + rancher + metallb为了让服务器通过统一的IP访问外网,我们创建了一个NAT服务器——如何在阿里云上自建NAT服务器来访问外网为了让本地服务器加入阿里云上的服务器,我们拆掉了 VPN中的地址转换——如何将办公室中新购买的GPU服务器接入到阿里云上部署的K8S - 如何去掉pritunl中的NAT在《如何将办公室中新购买的GPU服务器接入到阿里云上部署的K8S - 如何去掉pritunl中的NAT。

2024-05-22 12:42:50 403

原创 使用 依赖注入 获取 GIN 的 HTTP请求参数

另外,还集成 日志、配置、定时任务、分布式缓存、数据集、消息中间件等功能。另外,🔥添加交流群,赠送 Golang 多套 学习资料,夯实基础👍🏻👍🏻。更多 HTTP请求注入方式,可以参考官方文档。

2024-05-22 11:38:00 363

原创 如何在阿里云上自建NAT服务器来访问外网

Linux 内核是支持地址转换的,这里我们利用 Linux 内核的转发机制来实现NAT服务。使阿里云 VPC内网 没有外网IP 的 ECS服务器 通过我们 自建的NAT 访问外网。在阿里云上购买一台ECS,要求 linux 内核系统,拥有外网IP。

2024-05-21 10:14:54 424

原创 Gone框架介绍24 - Gone vs Spring,写给想转 Go 的 Java程序员

Spring和Gone在依赖模块导入、依赖注入、配置注入以及HTTP参数注入方面有不同的实现方式。Spring通过项目管理工具(如Maven或Gradle)引入依赖,并自动扫描加载依赖模块。依赖注入使用@Autowired注解,配置注入使用注解,HTTP参数注入则通过和注解实现。相对而言,Gone在函数中手动加载依赖模块,通过gone标签进行依赖和配置注入,并支持多种HTTP参数注入方式(如URL、Header、Body、Cookie、Form、Path等),灵活处理HTTP请求参数。

2024-05-21 09:45:47 1749

原创 如何将老板的游戏机接入阿里云自建K8S跑大模型(上) - 如何去掉pritunl中的NAT

AI 大火,老板觉得租用阿里云的服务器太贵了,于是把他自己的的 高配置 **游戏机** 搬到了公司,硬是要求接入到阿里云的K8S中,说用它来提供服务,无非就是公司多点电费。

2024-05-20 09:50:31 501

原创 利用Docker+Pritunl搭建一个企业VPN,解决员工远程办公和访问云服务器的问题

Pritunl是与专有商业VPN产品(如Aviatrix和Pulse Secure)相比最优秀的开源替代方案。通过Pritunl,您可以构建支持数千个并发用户的庞大云VPN网络,并且无需为每个用户支付额外费用,从而更好地掌控您的VPN服务器。

2024-05-20 09:08:10 940

原创 Gone框架介绍23 - Gone对Xorm的一点点增强

使用`Transaction`函数包裹的函数,执行前会自动开启事务,返回`error`或者发生`panic`自动完成事务回滚,不返回`error`则自动提交事务。

2024-05-20 08:57:58 407

原创 基于基于rke2的K8S部署过程记录- rke2 + rancher + metallb

我基于rke2部署了一套三节点的k8s,同时部署了rancher 和 metallb

2024-05-18 09:00:00 690

原创 Gone框架介绍22 - 错误处理,Web开发的错误我们这么干的

做人做事,边界很重要,过犹不及;我们希望通过不同类型的错误定义,厘清团队成员职责的边界。写程序,代码要职责清晰;团队成员职责要清晰明确。简单的讲就是要分清“**锅**”是谁的,俗话说“是福不是**锅**,是**锅**躲不过”。在Web开发中,我们认为也有三种类型的错误...

2024-05-18 01:00:00 783

原创 Gone框架介绍21 - 手把手教你封装一个Goner用于调用GPT对接强大的GPT4o

下面例子的代码已经开源在:https://github.com/gone-io/gpt;如果需要,可以导入使用:。实现这个接口并嵌入上面代码,通过嵌入,实现了接口,同时通过嵌入实现了Goner接口,使得这个结构体可以注入到依赖注入中。我们希望可以将这两个配置注入到我们实现的结构体中,如下:使chatGPTClient实现接口函数,称为“先知”方法会在框架初始化时调用,用于初始化结构体中的字段。好了,到此我们就基本完成了我们的目标:封装一个Goner用于调用GPT。但是为了方便用户使用我们还需要做

2024-05-17 04:00:00 868

原创 为什么我们需要依赖注入? - “拒绝喝牛奶从种草养牛开始”

在现代软件开发中,依赖注入(DI)是一个类似于“即插即用”的概念,帮助开发者轻松管理和使用各种组件或服务,而无需从头开始构建每一个部分。通过使开发者从繁重的依赖管理中解脱出来,依赖注入让他们可以更专注于创造出色的软件解决方案,享受编码的乐趣,而不是被底层细节所困扰。通过解耦合增强了代码的模块化,每个部分都可以独立工作,就像厨房的多个设备一样,每个设备都完成特定的功能,但彼此独立,需要时可以互换。就像用不同类型的咖啡豆测试咖啡机一样,开发者可以在不影响系统其他部分的情况下,测试各种配置的效果。

2024-05-17 00:15:00 390

原创 使用Docker在阿里云ECS上部署Gitlab,提供代码托管、CICD 和 docker镜像服务

我们这里使用 https://gitlab.goner.fun/ 作为git网页的地址;使用 https://r.gitlab.goner.fun 作为docker镜像的服务地址。这里利用docker容器化方式部署gitlab,利用docker-gitlab-ruuner 来运行gitlab-cicd脚本。进入页面:https://gitlab.wfsanwen.com/admin/runners。我开发了一个golang的依赖注入框架名字叫Gone,是可以高效开发Web服务的Golang依赖注入框架。

2024-05-16 15:00:51 866

原创 Gone框架介绍20 - 用cron表达式配置定时任务

定时任务对于Web项目基本上时标配,可以通过Gone的内置组件来实现定时任务,支持`cron`表达式。在Web项目中代码一般都是多节点运行,我们使用了redis作为分布式锁来保证任务每次执行只在一个节点上进行,所以需要先准备redis服务,关于redis相关内容请参考:[利用redis提供分布式锁和分布式缓存](https://goner.fun/zh/guide/redis.html)。另外定时任务还可以和框架“配置注入”的特性结合,将cron表达式放到配置文件中,参考[通过内置Goners支持配置文件]

2024-05-16 14:33:43 226

原创 Gone框架介绍19 -如何进行单元测试?

在一个依赖注入框架中如何进行单元测试,将依赖项先注入后再测试;一种方式是手动将mock后的Goner埋葬到系统,另外一种方式时将已经埋葬的Goner,使用。实际上推荐接口注入的另一个原因是,go语言提供了基于接口的mock方案,我们可以将依赖的内容都mock起来。的作用是,先用mock为该接口生成一个mock对象,然后通过管道传递给。,无法被埋葬,所以也无法注入;好让,我们来试试吧,创建一个空目录并在进入后,将上文件。一般的使用方法是,在需要mock的接口上加。可以看到,命令运行完后,将生成文件。

2024-05-15 20:14:56 517

原创 Gone框架介绍18 - redis 分布式缓存 和 分布式锁

在本文中,我们将分享在gone中如何使用分布式缓存和分布式锁,其中分布式锁中实现了一种较为自由的处理方式———“智能锁”,对一个处理函数进行上锁,函数执行中会周期性检测锁过期的剩余时间并自动给锁续期,函数执行完后会自动解锁。这种方式,使用锁需要保证在锁定的时间内能够执行完所有操作,否则由于锁过期可能会导致问题。其中,redis服务地址需要改你能访问到的redis服务地址。推荐使用这种方式,可以无脑使用,降低使用的心智负担。在需要使用的结构体中注入 接口。什么是 Cemetery?什么是 Goner?

2024-05-15 17:46:28 833

原创 Gone是什么—— 一个轻量的,基于Golang的,依赖注入框架

首先,Gone是一个轻量的,基于Golang的,依赖注入框架,灵感来源于Java中的Spring Framework;其次,Gone框架中包含了一系列内置组件,通过这些组件提供一整套Web开发方案,提供服务配置、日志追踪、服务调用、数据库访问、消息中间件等微服务常用能力。下面使用Gone来编写一个Web服务吧!

2024-05-14 18:44:30 422

原创 Gone框架介绍17 - 创建一个可运行在生产环境的Web项目

在本文中,我将演示如何创建一个可运行在生产环境的Web项目,并对项目做简单的介绍。项目的使用MySql作为数据库,使用docker-compose管理容器。

2024-05-14 16:32:30 1237

原创 如何在系统中安装make命令

官网首页:https://www.gnu.org/software/make/hi,我在开发一个很酷的Golang Web框架,可以方便的Web开发。点击框中的下载,下载后安装。把安装路径添加到环境变量 PATH 中.是系统比较基础的命令,一般会自己携带,如果没有就手动安装一下吧。请帮忙在github上点个 ⭐️吧,这对我很重要;从官网下载 make.exe Make for Windows。

2024-05-14 12:34:58 425

原创 Caddy2使用阿里云DNS申请https证书,利用阿里云DNS境内外不同解析给Gone文档做一个同域名的国内镜像站点

Caddy2使用阿里云DNS申请https证书,利用阿里云DNS境内外不同解析给Gone文档做一个同域名的国内镜像站点;使用docker重新编译Caddy2,使用docker-compose来管理容器。

2024-05-13 18:39:55 415

原创 Gone框架介绍16 - 自动生成Priest

在gone框架中需要编写Priest函数将Goners埋葬到框架中去,本文介绍使用gone tool 生成代码自动完成该过程。

2024-05-13 05:26:54 378 1

原创 除了GET方法,新的HTTP QUERY方法规范发布

与 POST 一样,查询操作的输入在请求的有效负载内传递,而不是作为请求 URI 的一部分。然而,与 POST 不同的是,该方法是明确安全和幂等的,允许缓存和自动重试等功能运行。通常,这些限制是无法提前知道或发现的,因为请求可能会通过许多不协调的系统。近日IETF提交新规范讨论:定义了一种新的 HTTP 方法QUERY,QUERY方法作为一种安全、幂等的请求方法,可以携带请求内容。因此,很多使用HTTP POST 方法作为使用 GET 的替代方法来执行查询,这种变体与 GET 具有相同的基本限制。

2024-05-12 21:00:07 361

转载 Go语言之父的反思:我们做对了什么,做错了什么

大家好!今天是2023年11月10日,Go作为开源项目推出14周年的纪念日。2009年11月10日那天,加州时间下午3点(如果没记错的话),Ken Thompson、Robert Griesemer、Russ Cox、Ian Taylor、Adam Langley、Jini Kim和我满怀期待地看着网站上线。之后,全世界都知道我们在做什么了。14年后的今天,有很多事情值得回顾。我想借此机会谈谈自那一天以来学到的一些重要经验。即使是最成功的项目,在反思之后,也会发现一些事情本可以做得更好。

2024-05-12 20:48:53 14

原创 Gone框架介绍15 - 使用traceId追踪日志

我从头到尾实现了一个Golang的依赖注入框架,并且集成了gin、xorm、redis、cron、消息中间件等功能;自己觉得还挺好用的,并且打算长期维护!github地址:https://github.com/gone-io/gone文档地址:https://goner.fun/请帮忙在github上点个 ⭐️吧,这对我很重要;!

2024-05-12 20:13:10 1114

原创 golang 反射能否获取到函数参数名字?

Type是一个接口,函数类型是其中的一种实现,很可惜它没有提供 获取函数参数名字的方法;只能拿到函数参数的个数和参数的类型(Type)。Value,代表了一个变量的值。Type,代表了一总类型。

2024-05-11 09:49:03 506

原创 Gone框架介绍14 -日志输出

在web应用中,我们希望有一个统一的编号来标识同一请求产生的日志。这个统一的Id,就是TraceId,如果有这个Id,排查问题时,我们只需要使用这个Id搜索日志,就可以获取请求的所有日志。log.output,日志输出的位置,默认为stdout(标准输出),支持stderr 和 一个文件路径。将应用部署在容器中,日志直接输出到标准输出,由收集组件采集日志,比较成熟的方法比如EFK。希望有小伙伴封装其他的日志输出包,提供更多的日志解决方法。在Gone中,提供了一个内置Goner用于日志输出——

2024-05-11 09:45:35 1216

原创 Gone框架介绍13 - Gone的Hook函数

在Gone的启停过程中,支持注册4种类型的函数,这个些函数会在特定时机被执行,被称为Hook函数。BeforeStart Hook函数,在Gone启动前执行,通过注册AfterStart Hook函数,在Gone启动后执行,通过AfterStart注册BeforeStop Hook函数,在Gone停止前执行,通过BeforeStop注册AfterStop Hook函数,在Gone停止后执行,通过AfterStop注册。

2024-05-10 21:20:37 585

原创 Golang reflect.MakeFunc() 的用法及示例

本文简单介绍了 reflect.MakeFunc() 的使用方法和原理。当然,Golang 中的反射并不仅限于这个,它还提供了许多其他有用的方法,比如 reflect.TypeOf()、reflect.ValueOf() 等。反射虽然强大,但它的使用需要小心谨慎,因为它会降低程序的性能,同时也会增加代码的复杂度。我希望这篇文章能帮助你更好地理解 reflect.MakeFunc() 的使用方法及原理。

2024-05-10 18:17:47 413

原创 Gone框架介绍12 - 通过内置Goners支持数据库操作

通过内置的xorm相关的Goners,可以支持多种关系型数据库的操作

2024-05-10 17:43:06 1120

Quidway S5700 官方手册

华为 Quidway S5700 官方手册 用于网络设备S5700系列交换机的学习和参考

2013-03-27

命令参考手册(华为交换机S5700)

华为官方的参考手册,用于华为交换机S5700系列。

2013-03-27

华为资料阅读器|.dhx阅读器

.dhx文档阅读器,用于阅读华为的.dhx格式的文档。

2013-03-27

校园网计费管理的分析与研究

本文讨论了网络计费的环境和计费原则, 对基于 IP 的计费策略进行了分析, 同时还对计费信 息的收集和处理、用户接口的实现提出了可行的解决方案。

2011-03-18

空空如也

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

TA关注的人

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