首页
关于
Search
1
信创日志:银河麒麟V10 安装 国产NGINX
1,297 阅读
2
信创日志:银河麒麟V10 安装 国产JDK - Alibaba dragonwell
384 阅读
3
docker_portainer安装教程
382 阅读
4
搭建SMB 的网络服务器
256 阅读
5
Docker离线安装教程
250 阅读
默认分类
docker虚拟化技术
网络服务器
数据库
spring
spring boot
spring cloud
信创-国产化
鸿蒙应用开发
Go
树莓派
AidLux OS
Vue 3
React
登录
/
注册
Search
标签搜索
docker
自建仓库
regustry
微服务
spring cloud
跨平台应用
李胤
累计撰写
26
篇文章
累计收到
32
条评论
首页
栏目
默认分类
docker虚拟化技术
网络服务器
数据库
spring
spring boot
spring cloud
信创-国产化
鸿蒙应用开发
Go
树莓派
AidLux OS
Vue 3
React
页面
关于
搜索到
5
篇与
的结果
2025-07-16
Go语言学习笔记:Consul访问方式之DNS
本次使用了一个DNS包是miekg/dns,可以自由定义从哪个DNS去获取对应的IP信息,如果没有这个包请先下载,go get github.com/miekg/dns下载后编写如下代码:package main import ( "fmt" "log" "github.com/miekg/dns" ) func queryConsulDNS(serviceName, consulAddr string) ([]string, error) { m := new(dns.Msg) m.SetQuestion(dns.Fqdn(serviceName), dns.TypeA) m.RecursionDesired = false // 不需要递归 c := new(dns.Client) in, _, err := c.Exchange(m, consulAddr+":8600") if err != nil { return nil, fmt.Errorf("DNS 查询失败: %v", err) } var ips []string for _, a := range in.Answer { if ipRecord, ok := a.(*dns.A); ok { ips = append(ips, ipRecord.A.String()) } } return ips, nil } func main() { serviceName := "consul.service.consul" // 这个不用变,每个consul启动后就有的 consulAddr := "xxx.xxx.xxx.xxx" // 注意这里不要加端口,ip是你的consul物理机的IP(内外网都行,保证当前测试机能访问到就行),我们手动指定 :8600,这个端口是consul的DNS服务端口 log.Printf("【客户端】查询 Consul DNS: %s", serviceName) ips, err := queryConsulDNS(serviceName, consulAddr) if err != nil { log.Fatalf("【客户端】DNS 查询失败: %v", err) } if len(ips) == 0 { log.Fatalf("【客户端】未找到服务 IP 地址") } for _, ip := range ips { log.Printf("【客户端】发现服务 IP: %s", ip) } }运行结果如下:2025/07/16 14:55:01 【客户端】查询 Consul DNS: helloworld.service.consul 2025/07/16 14:55:01 【客户端】发现服务 IP: 192.168.10.229
2025年07月16日
7 阅读
0 评论
0 点赞
2025-07-11
Go语言学习笔记:自定义文件之间进行相互调用
一个语言强大不强大就看调用文件是否方便不方便,效率高不高的问题就会存在,分开各个文件是为了增强代码的可读性,并为此提供统一的对外函数,也就是对应软件系统的可维护和可扩展,这样就是大系统的基础。首先,想要调用各个本地目录中的文件(也就是同一个module)下,以下教程是unix或基于此的系统,第一步:先创建项目文件夹mkdir myproject第二步:初始化项目cd myproject && go mod init myproject初始化项目后,目录中多出一个go.mod,以下就是文件内容module myproject go 1.24.4第三步:创建main.go和其它要调用文件在项目根目录下,创建main.go,然后要想调用其他的文件,就需要先在项目创建根目录下创建一个目录,然后在这个文件下创建下对应的文件,. ├── calculator │ └── calculator.go ├── external │ ├── exchange │ │ └── exchange.go │ ├── letter │ │ └── letter.go │ └── strings │ └── strings.go ├── funcdemo │ └── funcdemo.go ├── go.mod └── main.go这是我的写的一个练手项目,这里边就是完整的项目以下文件是main.gopackage main import ( "fmt" "myproject/funcdemo" ) func main() { a, _ := funcdemo.Calculator(105, 7) fmt.Println("105 x 7 = ", a) }以下文件是funcdemo.gopackage funcdemo import "fmt" /* @param a 这是第一个参数 @param b 这是第二个参数 */ func Calculator(a, b int) (mul int, div int) { //在这里,简单的赋值就可以 //并初始化它的值 mul = a * b div = a / b //这里有return关键字 //没有任何结果参数 return } func Mul(a, b int) int { c := a * b fmt.Printf("这是一个结果:%d\n", c) return 0 }{callout color="#f0ad4e"}go现在用的是module管理,所以一个module就是一个项目,其中仅有一个 go.mod 在funcdemo.go文件中,你可以看到方法名字第一个是大写,这个是有说法的,涉及到私有函数和公共函数,方法名全部小写是私有函数仅在当前包中使用,而方法名第一个字母大写的是公共函数,可以在包外调用的时候使用。{/callout}
2025年07月11日
6 阅读
0 评论
0 点赞
2025-07-09
Go语言学习笔记:从GO中找JAVA封装类
最近都是在找时间学习GO语言,这个今天学习到了GO的方法,通过一段代码你就很快明白他的类和方法的定义package main import ( "fmt" ) type author struct { name string particles string } func (a author) show() { fmt.Printf("作者名称:%s \n", a.name) fmt.Printf("作者特征:%s \n", a.particles) } func main() { // 调用 strings 模块的函数 // a, _ := funcdemo.Calculator(105, 7) // fmt.Println("105 x 7 = ", a) // fmt.Println("105 / 7 = ", b) // funcdemo.Mul(23, 45) // fmt.Print("wejriwjer\n") // defer funcdemo.Mul(23, 45) res := author{ name: "作者", particles: "203", } res.show() }这一段代码对应JAVA中的类的部分功能,类似于你在JAVA中新建了一个实体类,但是属性都是公共权限的属性,你可以在创建类的示例后,直接访问这个属性。说明:涉及到同名的方法,与java不同,在一个文件中,它类似于java中有不同类的不同方法,接受类型就是java的类,所以不同的类有同名的方法,不能支持同接受类型的同名方法不同参数的方法,即是JAVA中的重载概念。
2025年07月09日
7 阅读
0 评论
0 点赞
2025-06-25
Go语言学习笔记:Go Micro——Consul注册中心
应用安装安装 Consul1、访问官网的下载地址: 下载地址:https://www.consul.io/downloads 左侧的红色框内容是你要选择的操作系统的类型,我现在使用的是mac电脑,选择 macOS , 然后看右侧的安装教程。教程中包含包管理的方式和二进制进行安装,右上角是可以选择版本的。{dotted startColor="#ff6c6c" endColor="#1989fa"/}验证并启动验证方式在命令行中输入以下命令进行回车consul --version开发环境启动在命令行中输入以下命令进行回车consul agent -dev命令执行完毕后,浏览器中访问 http://localhost:8500/ {dotted startColor="#ff6c6c" endColor="#1989fa"/}生产环境配置Consul 集群配置# 节点1 consul agent -server -bootstrap-expect=3 -data-dir=/var/consul -node=consul-1 -bind=192.168.1.10 -client=0.0.0.0 -config-dir=/etc/consul.d # 节点2 consul agent -server -data-dir=/var/consul -node=consul-2 -bind=192.168.1.11 -client=0.0.0.0 -config-dir=/etc/consul.d -join=192.168.1.10 # 节点3 consul agent -server -data-dir=/var/consul -node=consul-3 -bind=192.168.1.12 -client=0.0.0.0 -config-dir=/etc/consul.d -join=192.168.1.10
2025年06月25日
12 阅读
0 评论
0 点赞
2025-03-14
GO: web流行的开发框架
Go语言在Web开发领域有多种框架可供选择,每种框架都有其特点和适用场景。下面是一些流行的Go Web开发框架:Gin简介:Gin是一个高性能的HTTP web框架,用Go语言编写。它具有极快的性能,支持中间件,路由分组等特性。特点:高性能、易于使用、支持中间件和路由分组。GitHub:https://github.com/gin-gonic/ginEcho简介:Echo是一个高性能、极简的Web框架,支持RESTful API的开发。特点:高性能、易于使用、支持中间件、路由分组、自动生成的文档。GitHub:https://github.com/labstack/echoBeego简介:Beego是一个全栈的Go Web框架,旨在通过减少代码量来提高开发效率。它支持MVC架构模式。特点:全栈框架、MVC架构、内置的ORM(Object-Relational Mapping)。官网:http://beego.me/GitHub:https://github.com/astaxie/beegoFiber简介:Fiber是一个Express.js启发的Web框架,专为高速设计。它提供了快速的路由处理和中间件支持。特点:高性能、易于使用、快速的路由处理。GitHub:https://github.com/gofiber/fiberIris简介:Iris是一个快速、简单且社区驱动的Web框架,支持RESTful API和MVC架构。特点:高性能、易于使用、社区活跃、支持中间件和路由分组。GitHub:https://github.com/kataras/iris如何选择?如果你需要高性能并且易于上手,可以选择 Gin 或 Echo。如果你喜欢MVC架构并且希望减少代码量,可以选择 Beego。如果你希望有类似Express.js的使用体验,可以选择 Fiber。如果你希望有活跃的社区支持和丰富的功能,可以选择 Iris。选择合适的框架主要取决于你的项目需求和个人偏好。每种框架都有其独特的优势和适用场景,可以根据具体需求进行选择。
2025年03月14日
22 阅读
0 评论
1 点赞