初始化 Go 项目 初始化项目初始化一个 Go web 项目的步骤。 首先是创建项目的的文件夹,并初始化 go.mod, 假设项目的远端地址为 github.com/someone/someproject.git 123$ mkdir PROJECT_NAME$ cd PROJECT_NAME$ go mod init github.com/someone/someproject 项目的布局结构可以参考 Stan 2021-11-16 #Go
linux 文件系统层次标准 根据Linux 标准, 记录下 Linux 文件系统下各个目录的作用,起到备忘的作用。 文件属性首先是关于文件属性的说明,一个文件可以具备如下的两个属性,是否为 static 以及是否为 shareable。两个属性都不相同的文件就不应该放在同一个目录下。 Shareable的文件,即可分享的文件,具有这种属性的文件可以被其他的主机使用,例如家目录下的用户文件。 Unshareable的文件,即 2021-11-11 #Linux
多生产者关闭 Goroutine 在本篇文章中,将介绍如何在多个生产者完成生产后关闭 goroutine. 在编程中,我们会遇到多个生产者,单一消费者的场景。 在这种情况下,工作流会分为了两个 stage: Stage 1: 多个生产者并发地计算结果,并将结果传入 channel Stage 2: 消费者从 channel 中读取结果,做下一步的计算 在两个 stage 完成工作后程序自然退出,因此需要在所有生产者完成工作后, 2021-06-25 #Go
为 JWT 生成私钥 今天在写一个登录鉴权的接口,用到了 JWT,JWT 的签名与认证需要用到一对公私钥。所以需要在本地生成一对密钥。 方法很简单,只需要用到 ssh-keygen 和 openssl 即可,如果命令行下没有这两个工具,可以通过 homebrew 来安装。 生成的方法代码如下: 1234# 首先生成私钥文件,在生成过程中不要输入密码ssh-keygen -t rsa -b 4096 -m PEM -f 2021-02-07 #日常
我是如何写程序的 做为一名软件工程师,日常的工作就是去编写程序,写一段程序很简单,就比如 “hello world“。但是如果想要写好一段程序,就不是那么容易的事了,这篇文章主要是记录一下自己在编程时的一般流程。 1. 明确并且理解需求最近在读一本关于微服务架构的书,其中对需求有这样一个定义: 需求是一个必须要解决的问题,以及围绕这个问题的特定上下文环境 将每个开发任务当成需要解决的一道数学题。那么在解题的第一 2021-02-04 #日常
Go append 的小技巧 在开发的过程中,遇到了一个需要将 T 类型切片映射为 F 类型切片的操作,由于 Go 的标准库中并没有内置 Map 函数,于是就写了一个简单的辅助函数。 第一版是这样的 123456789101112131415161718var ts = []struct { Foo int} { { Foo: 1, }, { Foo: 2021-02-04 #Go
Go 函数式选项 在实例化一个含有多个字段的结构体时,往往会封装一个工厂函数,类似于 123456789101112131415// 用于示例,实际情况可能有更多的字端type T struct { A string B int C int D bool}func NewT(a string, b int, c int, d bool) *T { return &T& 2021-01-24 #Go
Goland 远程开发 最近准备写一个简单的容器管理工具,需要运行在 Linux 上。然而开发的机子是 MacBook,于是就想折腾一下自己的 goland,配置一下远程开发。 目标就是在本地编写的代码,一件部署到远程的服务器上并运行。 配置远程的服务器在进行开发之前,首先需要把远程的服务器给配置好。远程服务器的版本为 Ubuntu 20.04 ,准备使用的协议是 SFTP,所以需要在 ubuntu 20.04 上配置一 2020-12-28 #工具
docker 连接远程主机 介绍在某些情况下,需要工作的电脑上 docker CLI 连接到另一台主机上的 docker 服务器。记下具体的配置过程。 配置远程主机首先需要在远程主机上开启监听本地的端口, 修改 docker 的配置文件: 1vim /etc/docker/daemon.json 修改,或增减 hosts 字段 123456{ "hosts": [ "unix:// 2020-10-01 #container
DNS 概述Domain Name System(DNS) 是一个用于计算机,服务以及其他资源连接到 Iternet 的分布式分层系统。DNS 是一个数据库,它保存了域名以及 IP 地址的映射。可以将域名转化成对应的 IP。 用户与互联网上的某台机器进行交互时,需要知道对方机器的 IP 地址,不论是 32 位还是点十分制的 IP 地址都不容易记忆,因此需要有一个容易记住的主机名称(域名),并且有一个对映的 2020-09-07 #Network