您现在的位置是:网站首页> Go语言

Go优秀的开源库及软件项目

摘要

Go优秀的开源库及软件项目

k8s介绍

Gin一个快捷Web框架

HMQ开源的MQTT服务

frp端口映射工具

gopay微信、支付宝、通联支付、拉卡拉、PayPal、Apple 的Go版本SDK

go-redis,redis客户端SDK

goproxy,高性能http,https,websocket,tcp,socks5代理服务器

livego,简单高效的直播服务器

go-fastdfs 是一个简单的分布式文件系统(私有云存储)

aliyunpan阿里云盘命令行客户端,支持JavaScript插件,支持同步备份功能

Bililive-go是一个支持多种直播平台的直播录制工具

gowebsocket基于websocket单台机器支持百万连接分布式聊天(IM)系统

TangSengDaoDaoServer高颜值 IM 即时通讯,聊天

中国最可靠的 Go 模块代理Goproxy.cn

Fyne UI库

AI 助手全套开源解决方案,自带运营管理后台,开箱即用

Go硬件操作库

go 使用webview作界面的详细过程和例子包含UI交互

Windows上安装webview2运行时

Linux上如何安装webkit2gtk-4.0给出详细步骤

免费使用192种AI大模型的方法,每天20-30美金的额度


k8s介绍

Kubernetes (K8S) 3 小时快速上手 + 实践,无废话纯干货

虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。

虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare)。

而容器技术恰好没有这些缺点。它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。

它启动时间很快,几秒钟就能完成。而且,它对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外,它占的空间很小,虚拟机一般要几GB到几十GB的空间,而容器只需要MB级甚至KB级。

4.png

想要搞懂Docker,其实看它的两句口号就行。

第一句,是,“搭建、发送、运行”,三板斧。

举个例子:

我来到一片空地,想建个房子,于是我搬石头、砍木头、画图纸,一顿操作,终于把这个房子盖好了。

结果,我住了一段时间,想搬到另一片空地去。这时候,按以往的办法,我只能再次搬石头、砍木头、画图纸、盖房子。

但是,跑来一个老巫婆,教会我一种魔法。

这种魔法,可以把我盖好的房子复制一份,做成“镜像”,放在我的背包里。

等我到了另一片空地,就用这个“镜像”,复制一套房子,摆在那边,拎包入住。

怎么样?是不是很神奇?


所以,Docker的第二句口号就是:“Build once,Run anywhere(搭建一次,到处能用)”。


Docker技术的三大核心概念,分别是:


镜像(Image)

容器(Container)

仓库(Repository)



我刚才例子里面,那个放在包里的“镜像”,就是Docker镜像。而我的背包,就是Docker仓库。我在空地上,用魔法造好的房子,就是一个Docker容器。


说白了,这个Docker镜像,是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。


也就是说,每次变出房子,房子是一样的,但生活用品之类的,都是不管的。谁住谁负责添置。


每一个镜像可以变出一种房子。那么,我可以有多个镜像呀!


也就是说,我盖了一个欧式别墅,生成了镜像。另一个哥们可能盖了一个中国四合院,也生成了镜像。还有哥们,盖了一个非洲茅草屋,也生成了镜像。。。


这么一来,我们可以交换镜像,你用我的,我用你的,岂不是很爽

于是乎,就变成了一个大的公共仓库。

负责对Docker镜像进行管理的,是Docker Registry服务(类似仓库管理员)。

不是任何人建的任何镜像都是合法的。万一有人盖了一个有问题的房子呢?

所以,Docker Registry服务对镜像的管理是非常严格的。

最常使用的Registry公开服务,是官方的Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。

好了,说完了Docker,我们再把目光转向K8S。



中国最可靠的 Go 模块代理Goproxy.cn

点击进入源码页

Goproxy.cn 完全实现了 GOPROXY 协议。并且它是一个由中国备受信赖的云服务提供商七牛云支持的非营利性项目。我们的目标是为中国的 Gopher 们提供一个免费的、可靠的、持续在线的且经过 CDN 在全球范围内加速的模块代理。请在 status.goproxy.cn 订阅我们的有关系统性能的实时和历史数据。

请注意,Goproxy.cn 只专注于服务在 https://goproxy.cn 的 Web 应用本身的开发。如果你正在寻找一种极其简单的方法来搭建你自己的 Go 模块代理,那么你应该看一下 Goproxy,Goproxy.cn 就是基于它开发的。


用法

Go 1.13 及以上(推荐)

打开你的终端并执行

$ go env -w GO111MODULE=on

$ go env -w GOPROXY=https://goproxy.cn,direct

完成。


macOS 或 Linux

打开你的终端并执行

$ export GO111MODULE=on

$ export GOPROXY=https://goproxy.cn

或者

$ echo "export GO111MODULE=on" >> ~/.profile

$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile

$ source ~/.profile

完成。


Windows

打开你的 PowerShell 并执行

C:\> $env:GO111MODULE = "on"

C:\> $env:GOPROXY = "https://goproxy.cn"

或者


1. 打开“开始”并搜索“env”

2. 选择“编辑系统环境变量”

3. 点击“环境变量…”按钮

4. 在“<你的用户名> 的用户变量”章节下(上半部分)

5. 点击“新建…”按钮

6. 选择“变量名”输入框并输入“GO111MODULE”

7. 选择“变量值”输入框并输入“on”

8. 点击“确定”按钮

9. 点击“新建…”按钮

10. 选择“变量名”输入框并输入“GOPROXY”

11. 选择“变量值”输入框并输入“https://goproxy.cn”

12. 点击“确定”按钮

完成。


为什么创建 Goproxy.cn?

由于中国政府的网络监管系统,Go 生态系统中有着许多中国 Gopher 们无法获取的模块,比如最著名的 golang.org/x/...。并且在中国大陆从 GitHub 获取模块的速度也有点慢。因此,我们创建了 Goproxy.cn,使在中国的 Gopher 们能更好地使用 Go 模块。事实上,由于 Goproxy.cn 已在全球范围内通过 CDN 加速,所以你可以在任何地方使用它。


使用 Goproxy.cn 是否安全?

当然,和所有其他的 Go 模块代理一样,我们只是将模块原封不动地缓存起来,所以我们可以向你保证它们绝对不会在我们这边被篡改。不过,如果你还是不能够完全信任我们,那么你可以使用最值得信任的校验和数据库 sum.golang.org 来确保你从我们这里获取的模块没有被篡改过,因为 Goproxy.cn 已经支持了代理校验和数据库。


Goproxy.cn 在中国是合法的吗?

Goproxy.cn 是一个由商业支持的项目而不是一个个人项目。并且它已经 ICP 备案在中华人民共和国工业和信息化部(ICP 备案号:沪ICP备11037377号-56),这也就意味着它在中国完全合法。


为什么不使用 proxy.golang.org?

因为 proxy.golang.org 在中国大陆被屏蔽了,所以,不使用。但是,如果你不在中国大陆,那么我们建议你优先考虑使用 proxy.golang.org,毕竟它看起来更加官方。一旦你进入了中国大陆,我们希望你能在第一时间想到 Goproxy.cn,这也是我们选择 .cn 作为域名后缀的主要原因



AI 助手全套开源解决方案,自带运营管理后台,开箱即用

点击进入源码页

本项目已经正式更名为 GeekAI,请大家及时更新代码克隆地址。

GeekAI 基于 AI 大语言模型 API 实现的 AI 助手全套开源解决方案,自带运营管理后台,开箱即用。集成了 OpenAI, Azure, ChatGLM,讯飞星火,文心一言等多个平台的大语言模型。集成了 MidJourney 和 Stable Diffusion AI绘画功能。


主要特性:

完整的开源系统,前端应用和后台管理系统皆可开箱即用。

基于 Websocket 实现,完美的打字机体验。

内置了各种预训练好的角色应用,比如小红书写手,英语翻译大师,苏格拉底,孔子,乔布斯,周报助手等。轻松满足你的各种聊天和应用需求。

支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。

支持 Suno 文生音乐

支持 MidJourney / Stable Diffusion AI 绘画集成,文生图,图生图,换脸,融图。开箱即用。

支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。

已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。

集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件,已内置实现了微博热搜,今日头条,今日早报和 AI 绘画函数插件。



frp端口映射工具

点击查看源码页

配置例子:

服务端配置

frps.ini


[common]

bind_port = 7000 ;要绑定的端口


dashboard_user = admin ;控制台的用户名(http管理服务端)

dashboard_pwd = password ;控制台的密码

dashboard_port = 7500 ;控制台的端口


 


客户端配置

frpc.ini


[common]

server_addr = 1.2.3.4 ;服务器的 IP

server_port = 7000 ;服务器上设置的服务绑定端口


[RDP] ;这个是反向代理的名称,可以随意设置

type = tcp ;RDP 是 TCP 协议的

local_ip = 127.0.0.1 ;本机 IP

local_port = 3389 ;远程桌面的默认端口

remote_port = 7001 ;外网访问的端口


 

去访问用1.2.3.4:7001





Go硬件操作库

串口操作库:https://github.com/bugst/go-serial



go 使用webview作界面的详细过程和例子包含UI交互

这个库是 webview 的一个 Go 封装,专门针对 Windows 平台上的 WebView2 控件。

首先,让我们看看如何开始使用这个库:

安装:

go get github.com/jchv/go-webview2


基本使用: 这里是一个简单的例子,展示了如何创建一个基本的 webview 窗口:

package main


import "github.com/jchv/go-webview2"


func main() {

    w := webview2.NewWithOptions(webview2.WebViewOptions{

        Debug:     true,

        AutoFocus: true,

        WindowOptions: webview2.WindowOptions{

            Title:  "My WebView2 App",

            Width:  800,

            Height: 600,

        },

    })

    defer w.Destroy()


    w.Navigate("https://example.com")

    w.Run()

}

这个例子创建了一个标题为 "My WebView2 App" 的窗口,大小为 800x600,并导航到 example.com。


加载本地 HTML: 你可以加载本地的 HTML 内容,而不是导航到一个 URL:

w.SetHTML(`

<!DOCTYPE html>

<html>

<head>

    <title>Local HTML</title>

</head>

<body>

    <h1>Hello from local HTML!</h1>

</body>

</html>

`)



与 JavaScript 交互: go-webview2 允许你在 Go 和 JavaScript 之间进行交互。这里是一个更复杂的例子,展示了如何绑定 Go 函数到 JavaScript 并处理事件:


package main


import (

    "fmt"

    "github.com/jchv/go-webview2"

)


func main() {

    w := webview2.NewWithOptions(webview2.WebViewOptions{

        Debug: true,

        WindowOptions: webview2.WindowOptions{

            Title:  "Interactive WebView2 App",

            Width:  800,

            Height: 600,

        },

    })

    defer w.Destroy()


    // 绑定 Go 函数到 JavaScript

    w.Bind("greet", func(name string) string {

        return fmt.Sprintf("Hello, %s!", name)

    })


    w.Bind("add", func(a, b int) int {

        return a + b

    })


    // 设置 HTML 内容

    w.SetHTML(`

    <!DOCTYPE html>

    <html>

    <head>

        <title>Interactive WebView2 Example</title>

        <style>

            body { font-family: Arial, sans-serif; padding: 20px; }

            button { margin: 5px; }

            #result { margin-top: 20px; font-weight: bold; }

        </style>

    </head>

    <body>

        <h1>Interactive WebView2 Example</h1>

        <input type="text" id="nameInput" placeholder="Enter your name">

        <button onclick="sayHello()">Say Hello</button>

        <br><br>

        <input type="number" id="num1" placeholder="Enter number 1">

        <input type="number" id="num2" placeholder="Enter number 2">

        <button onclick="addNumbers()">Add Numbers</button>

        <div id="result"></div>


        <script>

            function sayHello() {

                var name = document.getElementById('nameInput').value;

                window.greet(name).then(function(result) {

                    document.getElementById('result').innerHTML = result;

                });

            }


            function addNumbers() {

                var a = parseInt(document.getElementById('num1').value);

                var b = parseInt(document.getElementById('num2').value);

                window.add(a, b).then(function(result) {

                    document.getElementById('result').innerHTML = "Sum: " + result;

                });

            }

        </script>

    </body>

    </html>

    `)


    w.Run()

}

这个例子展示了:

如何创建一个带有自定义标题和大小的窗口

如何将 Go 函数绑定到 JavaScript

如何在 HTML 中创建用户界面元素

如何在 JavaScript 中调用绑定的 Go 函数

如何在 Go 和 JavaScript 之间传递数据


处理导航事件: 你可以监听和控制导航事件:

w.SetNavigationHandler(func(url string) bool {

    fmt.Printf("Navigating to: %s\n", url)

    // 返回 true 允许导航,返回 false 阻止导航

    return true

})


执行 JavaScript: 你可以从 Go 代码中执行 JavaScript:

w.Dispatch(func() {

    w.Eval(`

        document.body.style.backgroundColor = 'lightblue';

        console.log('Background color changed');

    `)

})


文件对话框: go-webview2 还提供了打开文件对话框的功能:

w.Bind("openFile", func() string {

    file, err := w.OpenFile("Select a file", "")

    if err != nil {

        return "Error: " + err.Error()

    }

    return "Selected file: " + file

})


// 在 HTML 中:

// <button onclick="openFile().then(result => alert(result))">Open File</button>

这些例子展示了 go-webview2 的主要功能。使用这个库,你可以创建功能丰富的桌面应用程序,结合了 Web 技术的灵活性和 Go 的强大功能。记住,这个库专门用于 Windows 平台,如果你需要跨平台支持,可能需要考虑其他选项或在不同平台使用不同的实现。


注意:确保你的系统上安装了适当的依赖。在Windows上,你可能需要安装WebView2运行时。在Linux上,你可能需要安装webkit2gtk-4.0



windows上安装webview2运行时

在 Windows 上安装 WebView2 运行时有几种方法。我将为您详细介绍这些方法:

自动安装(推荐):

大多数现代 Windows 系统已经预装了 WebView2 运行时。如果没有,许多应用程序会在需要时自动下载并安装它。然而,如果你想确保它已安装或需要手动安装,可以使用以下方法。

手动下载安装:

a. 访问 Microsoft 的 WebView2 下载页面: https://developer.microsoft.com/en-us/microsoft-edge/webview2/

b. 点击 "Evergreen Standalone Installer" 下的 "x64" 或 "x86"(取决于你的系统)来下载安装程序。

c. 下载完成后,运行安装程序并按照提示进行安装。

使用 Windows 包管理器(winget):

如果你的 Windows 系统支持 winget,可以使用以下命令安装:

winget install Microsoft.EdgeWebView2Runtime

通过 Visual Studio 安装:

如果你使用 Visual Studio 进行开发,可以通过 Visual Studio Installer 安装 WebView2:

a. 打开 Visual Studio Installer b. 选择 "修改" c. 在 "单个组件" 选项卡中,搜索 "WebView2" d. 选中 "Microsoft Edge WebView2 运行时" 并安装

检查是否已安装:

你可以通过以下步骤检查 WebView2 是否已安装:

a. 打开 Windows 设置 b. 进入 "应用" > "已安装的应用" c. 在搜索框中输入 "WebView2" d. 如果已安装,你应该能看到 "Microsoft Edge WebView2 Runtime"


对于开发者:

如果你正在开发使用 WebView2 的应用程序,你可以考虑使用 "固定版本" 分发方式。这种方式允许你将 WebView2 运行时打包到你的应用程序中,确保兼容性并减少对用户系统的依赖。

a. 访问 WebView2 下载页面 b. 下载 "Fixed Version" 包 c. 将其解压到你的项目目录中 d. 在你的应用程序中引用这个本地版本的 WebView2


注意事项:

安装 WebView2 运行时通常需要管理员权限。

某些旧版 Windows(如 Windows 7)可能需要额外的步骤或可能不支持最新版本的 WebView2。

对于企业环境,IT 管理员可能会使用组策略或其他部署工具来管理 WebView2 的安装。

通过以上方法,你应该能够在 Windows 系统上成功安装 WebView2 运行时。安装完成后,使用 WebView2 的应用程序(包括你之前提到的 Go 程序)就应该能够正常运行了。




Linux上如何安装webkit2gtk-4.0给出详细步骤

在 Linux 上安装 webkit2gtk-4.0 的步骤可能会因不同的发行版而略有不同。我会为您提供几个主要 Linux 发行版的详细安装步骤。

Ubuntu 或 Debian:

打开终端。

更新包列表:

sudo apt update


安装 webkit2gtk-4.0:

sudo apt install libwebkit2gtk-4.0-dev

验证安装:

pkg-config --modversion webkit2gtk-4.0

这应该会显示已安装的 webkit2gtk-4.0 版本。


Fedora:

打开终端。

使用 DNF 安装 webkit2gtk-4.0:

sudo dnf install webkit2gtk3-devel

验证安装:

pkg-config --modversion webkit2gtk-4.0


Arch Linux:

打开终端。

使用 pacman 安装 webkit2gtk:

sudo pacman -S webkit2gtk

验证安装:

pkg-config --modversion webkit2gtk-4.0


openSUSE:

打开终端。

使用 zypper 安装 webkit2gtk-4.0:

sudo zypper install webkit2gtk3-devel

验证安装:

pkg-config --modversion webkit2gtk-4.0



通用步骤(从源码编译):

如果你的发行版没有提供 webkit2gtk-4.0 的预编译包,或者你需要特定版本,你可以从源码编译:


1.安装必要的依赖:

sudo apt install build-essential cmake libatk1.0-dev libglib2.0-dev libgtk-3-dev libwebkit2gtk-4.0-dev

(注意:包名可能因发行版而异)


2.下载 WebKit 源码:

git clone https://github.com/WebKit/webkit.git

cd webkit


3.配置构建:

mkdir BuildWebKit

cd BuildWebKit

cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=Release ..


4.编译(这可能需要很长时间):

make


5.安装:

sudo make install


注意事项:

确保你的系统是最新的。在安装之前运行系统更新可能会有帮助。

某些发行版可能需要启用额外的存储库来获取最新版本的 webkit2gtk-4.0。

如果你在编译过程中遇到问题,可能需要安装额外的开发库。错误消息通常会指出缺少哪些依赖。

从源码编译可能需要大量的磁盘空间和编译时间,特别是对于 WebKit 这样的大型项目。

如果你正在开发一个使用 webkit2gtk-4.0 的应用程序,记得在你的构建系统中包含适当的 pkg-config 命令,以确保正确链接库文件。

安装完成后,你应该能够在你的 Linux 系统上使用 webkit2gtk-4.0 了,包括运行之前讨论的 Go webview 示例。



免费使用192种AI大模型的方法,每天20-30美金的额度

点击查看源码

申请API Key的地址:https://demo.voapi.top/

另一个开源工具:https://github.com/Dooy/chatgpt-web-midjourney-proxy


















上一篇:Go开发基础技术笔记

下一篇:Go同行者

Top