GO 的 Web 开发系列(二)—— Web 项目的技术框架选择和项目搭建

Web 系统搭建第一步,选择技术框架,完成 Hello World。 小玖用的 Go 版本是 1.21.6 介绍项目的技术选型个结构,不包括代码。 一、技术框架选择 Web 框架: github.com/gin-gonic/gin v1.9.1 调研了 Go 开发者一圈,给小玖推荐这个框架的人最多 主要优点是轻量容易定制。 ORM 框架: xorm.io/xorm v1.3.6 最初小玖选的 gorm,因为网上的评价一致是:gorm 是国人开发,用户更多,文档更完善,更简单好用;xorm 的优点只是性能好点。 但是后面查问题时发现,gorm 网上相关的资料也不是那么多,所以改为了使用 xorm。 (搜索 gorm 的问题,出来了很多 xorm 的相关回答) 主要是这个框架自带缓存功能,想偷懒一下~ 配置文件处理工具: github.com/spf13/viper v1.18.2 这个工具可以同时处理 yaml、json 和命令行参数等多种配置方式,所以选择了它。 以下这些工具包,根据网上使用人数,以及功能是否完善、丰富做的选择。 日志框架: go.uber.org/zap v1.26.0 BCrypt 生成工具: golang.org/x/crypto v0.18.0 JWT 工具: github.com/dgrijalva/jwt-go v3.2.0+incompatible Redis 连接工具: github.com/go-redis/redis/v8 v8.11.5 MySQL 连接工具: github.com/go-sql-driver/mysql v1.7.0 UUID 生成工具: github.com/google/uuid v1.4.0 验证码生成工具: github.com/mojocn/base64Captcha v1.3.6 内存缓存工具: githu...

avatar 玖涯博客 发表于 2024-01-21

GO 的 Web 开发系列(一)—— Java 与 Go 做 Web 程序的区别

小玖是奋斗一线的 Java 开发,准备自己开发一个建站程序,出于某些原因,小玖最终将建站程序的开发语言选择了 Go。 对于 Go 小玖其实之前并没有太多接触过,也只能算是个初学者吧,所以对 Go 的 WEB 开发从初学的角度总结经验,希望日后能对初学 Go 语言的小伙伴有所帮助。但本系列不会从零基础开始介绍,是针对有一定程序开发基础的同学,Go 的一些基础语法就不会详细介绍。 一、为什么选择 Go 可能很多伙伴会有疑问,Java 的 SpringBoot 一整套框架做 Web 开发效率高,技术成熟,文档和解决方案都很成熟,为啥小玖要选择 Go 呢? Go 和 Java 其实差别还是比较大的,这其实是综合考虑的结果,因为 Go 能解决一些小玖认为非常重要的问题,而 Java 却刚好难以解决或者说无法解决。 Java 占用内存高,SpringBoot 框架一启动,直接把内存占满(对小玖的弱鸡服务器跑起来真的非常吃力啦); Java 的虚拟机机制有些鸡肋,无法动态的去调整内存,比如 -Xmx 等虚拟机参数; Java 编译的程序需要依赖 JVM 环境,而 Go 编译后的二进制文件可以直接运行(便于建站程序日后的交付); Java 编译的 Class 容易反编译破解,虽然有一些类似通过自定义 ClassLoader 进行加密的方案,但安全性还是差了很多。小玖了解到的最安全的方案还得是通过 JNI 去调二进制文件做加密和验证,太麻烦了。 基于以上这些问题,小玖找了好久的解决方案,比如 GraalVM 等等的都去了解过,这些方案总是有些局限性,所以,最终选择了 Go。 Go 占用的内存少,而且编译成的二进制文件源码安全性也更有保障。 Go 有以上技术优势,也存在一些劣势,尤其是在生态这块和 Java 差距很大。 二、Java 与 Go 语言上的差异 非 Go 语言专家,只谈谈自己使用以...

avatar 玖涯博客 发表于 2024-01-21

AWS部署Ubuntu,DD成任意系统

文章介绍:本篇文章主要介绍使用AWS免费一年VPS搭建自己需要的系统,官方给的部分免费套餐中可选系统版本镜像不多,基本符合大部分用户使用,但是不排除少部分用户不想用AWS内置的镜像安装系统,那怎么处理这个问题呢,以下内容是个人研究的,可以通过DD命令,把Ubuntu或者Debian重装成任意系统,比如本篇将介绍把Ubuntu系统DD成Vyos软路由。 一、准备工作 1.1、qcow2镜像 这里博主已经转换好了vyos-1.3.5-amd64.iso最新LTS版本的qcow2镜像,市面上官方提供的大部分镜像格式都是iso格式,如果需要了解怎么把iso转换成qcow2或者其他格式镜像,可以在留言区留言,博主有时间会出一版,本篇文章这里不做介绍,需要vyos-1.3.5-amd64.qcow2镜像直接下载博主共享网盘里的即可。vyos-1.3.5-amd64.qcow2 1.2、SSH工具 MobaXterm常规设置指南and激活方法 二、AWS部署Ubuntu 2.1、创建密钥 2.2、启动实例 2.3、端口测试 2.4、创建会话 三、Ubuntu设置 3.1、重置root密码 sudo passwd root 3.2、修改Root权限 sudo vi /etc/ssh/sshd_config PasswordAuthentication yesPermitRootLogin yes 3.3、重启SSH服务 sudo systemctl restart sshd 3.4、用root登录实例 四、DD系统 4.1、上传qcow2镜像到实例 4.2、对比大小 ls -al 4.2、更新软件列表 sudo apt-get update 4.3、安装QEMU sudo apt-get install -y qemu-utils 4.4、qcow2转raw 命令说明:使用QEMU 的 q...

avatar 杨杨得亿 发表于 2024-01-21

AWS部署Ubuntu,DD成任意系统

文章介绍:本篇文章主要介绍使用AWS免费一年VPS搭建自己需要的系统,官方给的部分免费套餐中可选系统版本镜像不多,基本符合大部分用户使用,但是不排除少部分用户不想用AWS内置的镜像安装系统,那怎么处理这个问题呢,以下内容是个人研究的,可以通过DD命令,把Ubuntu或者Debian重装成任意系统,比如本篇将介绍把Ubuntu系统DD成Vyos软路由。 一、准备工作 1.1、qcow2镜像 这里博主已经转换好了vyos-1.3.5-amd64.iso最新LTS版本的qcow2镜像,市面上官方提供的大部分镜像格式都是iso格式,如果需要了解怎么把iso转换成qcow2或者其他格式镜像,可以在留言区留言,博主有时间会出一版,本篇文章这里不做介绍,需要vyos-1.3.5-amd64.qcow2镜像直接下载博主共享网盘里的即可。vyos-1.3.5-amd64.qcow2 1.2、SSH工具 MobaXterm常规设置指南and激活方法 二、AWS部署Ubuntu 2.1、创建密钥 2.2、启动实例 2.3、端口测试 2.4、创建会话 三、Ubuntu设置 3.1、重置root密码 sudo passwd root 3.2、修改Root权限 sudo vi /etc/ssh/sshd_config PasswordAuthentication yesPermitRootLogin yes 3.3、重启SSH服务 sudo systemctl restart sshd 3.4、用root登录实例 四、DD系统 4.1、上传qcow2镜像到实例 4.2、对比大小 ls -al 4.2、更新软件列表 sudo apt-get update 4.3、安装QEMU sudo apt-get install -y qemu-utils 4.4、qcow2转raw 命令说明:使用QEMU 的 q...

avatar 杨杨得亿 发表于 2024-01-21

布丁扫描上手:怎么会有这么好用的扫描软件啊

作为工位旁边就是打印扫描一体机的我来说,我一直对扫描软件都是不屑一顾的。只要我站起身,将文件塞进扫描仪中,然后我在mac里打开“图像捕捉”app,然后就可以直接开扫了。非常方便。

avatar 张洪Heo 发表于 2024-01-19

我逼着轻笑写了个软著代码生成助手

最近涉及到的软著事项比较多,不仅是公司的,还有自己的。申请软著要求也不是很多,一个是用户手册,一个是代码文档。一般用户手册很好写,介绍一下软件的整体功能就可以了。但是代码部分就很麻烦了。像是我用swiftui,一个class就一个文件,一个view就一个文件,我一个view

avatar 张洪Heo 发表于 2024-01-19

qx-tracker

一个前端监控和埋点SDK

avatar 轻笑Chuckle 发表于 2024-01-18

【Vyos-开源篇-4】- vpn for vyos 搭建 VPN 服务

文章说明:介绍在vyos软路由上配置vpn服务,提供用户私有vpn连接,目前vyos内置了如下几种vpn服务。 一、vpn介绍 IPSec(Internet Protocol Security): 描述: IPsec 是一种广泛用于实现虚拟专用网络(VPN)的协议套件。它通过对 IP 数据包进行加密和身份验证来提供网络通信的安全性。 特点: 提供对网络层的安全性,支持加密和身份验证,常用于 site-to-site VPN 或远程访问 VPN。 L2TP(Layer 2 Tunneling Protocol): 描述: L2TP 是一种隧道协议,通常与 IPsec 结合使用,创建安全的 VPN 连接。它允许在公共网络上创建私有连接。 特点: 主要用于远程用户接入 VPN 网络,提供加密和身份验证。 OpenConnect: 描述: OpenConnect 是一个支持 SSL VPN 的客户端,常用于通过 HTTPS 连接到 VPN 服务器。它提供对各种 VPN 协议的支持,包括 Cisco AnyConnect 和 Juniper Pulse Connect Secure。 特点: 能够穿越网络防火墙,并通过 HTTPS 实现安全连接。 PPTP(Point-to-Point Tunneling Protocol): 描述: PPTP 是一种过时的 VPN 协议,通过创建点对点的虚拟专用网络连接来实现安全通信。然而,由于其安全性较差,现在不再推荐使用。 特点: 不太安全,已经被更安全的协议取代,不建议使用。 RSA Keys: 描述: RSA 是一种非对称加密算法,常用于创建公钥和私钥,用于安全通信和身份验证。 特点: 提供了一种强大的加密和身份验证机制,常用于 VPN 连接中的密钥交换和数字签名。 SSTP(Secure Socket Tunneling Protocol...

avatar 杨杨得亿 发表于 2024-01-18

【Vyos-开源篇-4】- vpn for vyos 搭建 VPN 服务

文章说明:介绍在vyos软路由上配置vpn服务,提供用户私有vpn连接,目前vyos内置了如下几种vpn服务。 一、vpn介绍 IPSec(Internet Protocol Security): 描述: IPsec 是一种广泛用于实现虚拟专用网络(VPN)的协议套件。它通过对 IP 数据包进行加密和身份验证来提供网络通信的安全性。 特点: 提供对网络层的安全性,支持加密和身份验证,常用于 site-to-site VPN 或远程访问 VPN。 L2TP(Layer 2 Tunneling Protocol): 描述: L2TP 是一种隧道协议,通常与 IPsec 结合使用,创建安全的 VPN 连接。它允许在公共网络上创建私有连接。 特点: 主要用于远程用户接入 VPN 网络,提供加密和身份验证。 OpenConnect: 描述: OpenConnect 是一个支持 SSL VPN 的客户端,常用于通过 HTTPS 连接到 VPN 服务器。它提供对各种 VPN 协议的支持,包括 Cisco AnyConnect 和 Juniper Pulse Connect Secure。 特点: 能够穿越网络防火墙,并通过 HTTPS 实现安全连接。 PPTP(Point-to-Point Tunneling Protocol): 描述: PPTP 是一种过时的 VPN 协议,通过创建点对点的虚拟专用网络连接来实现安全通信。然而,由于其安全性较差,现在不再推荐使用。 特点: 不太安全,已经被更安全的协议取代,不建议使用。 RSA Keys: 描述: RSA 是一种非对称加密算法,常用于创建公钥和私钥,用于安全通信和身份验证。 特点: 提供了一种强大的加密和身份验证机制,常用于 VPN 连接中的密钥交换和数字签名。 SSTP(Secure Socket Tunneling Protocol...

avatar 杨杨得亿 发表于 2024-01-18

【Vyos-开源篇-3】- container for vyos 搭建 Halo 博客

文章说明:介绍在vyos软路由上配置container容器,vyos最新滚动版1.5已经支持在vyos命令行中启动docker容器,在vyos官网介绍是说1.3版本之后就都有这个功能了,如果你的版本是1.3之后的可以玩container,接下来介绍怎么创建容器,比如搭建一个Halo博客。 一、vyos安装 【Vyos-开源篇-1】- VMware安装vyos虚拟机 二、vyos基本配置 【Vyos-开源篇-2】- vyos软路由基本配置 三、拉取镜像 vyos拉取容器镜像其实跟docker命令的pull原理一样,只不过是换了命令而已,拉取容器镜像的地址一般都是用docker官网的(docker.io)或者github镜像站(ghcr.io),俩个镜像站可能都需要魔法才能正常访问。 3.1、查看镜像命令 可以看到当前没有镜像文件 show container image 3.2、方法一 方法一使用podman方式测试拉取halo-plus:1.1.4版本镜像,拉取镜像前默认你的vyos已经按照第二步基本配置中都设置好了,主要是上网和dns,不然拉取镜像时会报错。 sudo podman image pull docker.io/nineya/halo-plus:1.1.4 查看镜像,可以看到镜像已经拉取成功。 show container image 3.2、方法二 方法二使用vyos内置的命令拉取容器镜像,比如演示拉取halo-plus:1.1.2版本镜像,通过show命令可以看到,拉取成功。 add container image docker.io/nineya/halo-plus:1.1.2 四、删除镜像 比如我们要删除halo-plus:1.1.2镜像,可以使用下面的命令删除,IMAGE ID 需要使用自己的,正常情况我们的都不一样。 delete containe...

avatar 杨杨得亿 发表于 2024-01-17