快捷键
mac键盘映射windows键盘
ctrl 和 command 互换:https://zhuanlan.zhihu.com/p/542689596
Marscode
https://docs.marscode.cn/docs/extension-keyboard-shortcuts
行为
快捷键(VSCode)
快捷键(JetBrains)
采用行内自动补全的代码
Tab
Tab
逐字采用行内自动补全的代码
macOS:Command + → Windows:Ctrl + →
macOS:Command + → Windows:Ctrl + →
舍弃代码建议
Esc
Esc
打开侧边 AI 对话框
macOS:Command + U Windows:Ctrl + U
Ctrl + U
展示下一行自动补全的代码
macOS:opt + ] Windows:alt + ]
macOS:opt + ] Windows:alt + ]
展示前一行自动补全的代码
macOS:opt + [ Windows:alt + [
macOS:opt + [ W ...
cron jobs (go)
一、下载
1go get github.com/robfig/cron/v3
二、使用
2.1 创建和添加任务
首先创建一个 cron.Cron 对象,用于管理定时任务。
12345// 创建对象c := cron.New()// 创建对象并指定配置,多个配置在参数列表中并列c := cron.New(cron.WithSeconds())
支持的选项有:
WithSeconds:让时间格式支持秒
WithLocation:指定时区
WithParser:使用自定义的解析器
WithLogger:自定义Logger
WithChain:Job 包装器
然后通过 AddFunc 方法向其添加任务函数和执行的时间,这里的执行时间格式比较灵活,在下面详细介绍。
1234567// 定义任务函数func F() { fmt.Println("exec func F")}// 设置任务函数及其执行时间c.AddFunc("30 * * * *", F)
启动定时执行。
12345// 在当前协程启动定时任务c.Run()/ ...
viper
Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。
一、安装
1go get github.com/spf13/viper
二、介绍
2.1 什么是Viper?
Viper是适用于Go应用程序(包括Twelve-Factor App)的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。它支持以下特性:
设置默认值
从JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置信息
实时监控和重新读取配置文件(可选)
从环境变量中读取
从远程配置系统(etcd或Consul)读取并监控配置变化
从命令行参数读取配置
从buffer读取配置
显式配置值
2.2 为什么选择Viper?
在构建现代应用程序时,你无需担心配置文件格式;你想要专注于构建出色的软件。Viper的出现就是为了在这方面帮助你的。
Viper能够为你执行下列操作:
查找、加载和反序列化JSON、TOML、YAML、HCL、INI、envfile和Java ...
docker基础学习
黑马:https://www.bilibili.com/video/BV1HP4118797/?spm_id_from=333.337.search-card.all.click&vd_source=eca8bef44f4d5efc79f226fa688a5064
一、docker安装
1.1 安装
(一)安装命令:
Ubuntu:
1sudo apt install docker.io
(二)检查安装:
1docker -v
查看示例 12SDE@test-sg90-seatalk-10-136-185-3:~$ docker -vDocker version 26.1.3, build 26.1.3-0ubuntu1~24.04.1
1.2 启动和校验
(一)启动docker
1systemctl start docker
查看示例 1234SDE@test-sg90-seatalk-10-136-185-3:~$ sudo systemctl start dockerSDE@test-sg90-seatalk-10-136-185-3:~$ ps aux | ...
golang日志库 —— zap
摘抄自:https://www.cnblogs.com/jiujuan/p/17304844.html
一、介绍
zap的特性
高性能:zap 对日志输出进行了多项优化以提高它的性能
日志分级:有 Debug,Info,Warn,Error,DPanic,Panic,Fatal 等
日志记录结构化:日志内容记录是结构化的,比如 json 格式输出
自定义格式:用户可以自定义输出的日志格式
自定义公共字段:用户可以自定义公共字段,大家输出的日志内容就共同拥有了这些字段
调试:可以打印文件名、函数名、行号、日志时间等,便于调试程序
自定义调用栈级别:可以根据日志级别输出它的调用栈信息
Namespace:日志命名空间。定义命名空间后,所有日志内容就在这个命名空间下。命名空间相当于一个文件夹
支持 hook 操作
做了哪些优化
基于反射的序列化和字符串格式化,它们都是 CPU 密集型计算且分配很多小的内存。具体到 Go 语言中,使用 encoding/json 和 fmt.Fprintf 格式化 interface{} 会使程序性能降低。
Zap 咋解决呢?Zap 使用一个无反射、 ...
go包目录
markdown
Package github.com/gomarkdown/markdown is a Go library for parsing Markdown text and rendering as HTML.
安装:
1go get github.com/gomarkdown/markdown
灵活用法:实现接口(文档中皆有例子)
12345type Renderer interface { RenderNode(w io.Writer, node ast.Node, entering bool) ast.WalkStatus RenderHeader(w io.Writer, ast ast.Node) RenderFooter(w io.Writer, ast ast.Node)}
可以自定义渲染效果。
灵活用法:自定义语法解析(使用包提供的hook函数)
可以自定义hook函数挂上去
12ps := parser.NewWithExtensions(formatted.Extensions)ps.Opts.Parser ...
solidity
https://solidity-cn.readthedocs.io/zh/develop/index.html
live reloading go with air
Golang应用实时重新加载利器: Air工具指南
使用Air实现Go程序实时热重载
一、简介
Live reloading(实时重载)和 Hot-reload(热重载)并非完全同义,它们都与开发过程中的代码更新反馈机制有关,但在实现方式和效果上存在差异。
Live reloading(实时重载)
原理:当监测到代码发生变化后,它会直接刷新整个应用程序页面或重新启动应用。就好比在开发网页时,一旦保存了修改后的代码,浏览器会自动刷新页面,从而展示最新的效果;在开发桌面应用或者移动应用时,应用程序会被重新启动。
效果:因为是整体刷新或重启,这就会使得之前在应用中的操作状态丢失。比如在网页表单里填写了部分内容,页面刷新后,填写的内容就没了;在游戏应用中玩到一半,重新启动应用后就得从头开始。
使用场景:对于那些对状态保存要求不高,或者页面结构、样式、整体逻辑改动较大的情况比较适用。像静态网站开发、样式文件修改等场景,使用实时重载就能快速看到修改后的效果。
Hot-reload(热重载)
原理:当代码改变时,它不会重新启动整个应用程序,而是仅替换发生改变的那部分代码模块。在运行时动 ...
go编程规范
项目目录结构
Go 官网并没有给出一个目录结构的标准模板,但是 golang-standards 倒是给出了一个。
中文readme
在此基础上,我的项目目录结构具体使用如下:【持续更新!!!】
https://github.com/gw-gong/template_project
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172.├── api│ ├── router│ │ ├── service01.go│ │ └── service02.go│ └── rpc│ ├── <service_name>.pb.go│ ├── <service_name>.proto│ └── makefile├── cmd│ ├── service01│ │ └── main.go│ ...
.ini
INI 文件(Initialization file)的出现和发展与计算机早期操作系统及软件的配置需求紧密相关,以下介绍它的由来:
起源背景
在计算机发展早期,软件的配置管理是一项具有挑战性的任务。随着计算机软件功能逐渐增多,需要对各种参数进行设置和调整,例如硬件设备的参数、软件的运行选项等。为了方便用户和开发者对软件进行配置,一种简单、易读的配置文件格式就应运而生,这就是 INI 文件。
诞生与发展
早期操作系统的应用:20 世纪 80 年代,微软的 MS - DOS 和 Windows 3.x 等操作系统广泛使用 INI 文件。在 MS - DOS 时代,许多应用程序需要对硬件设备(如显示器、打印机等)进行配置,INI 文件提供了一种方便的方式来存储这些配置信息。例如,用户可以通过修改 INI 文件来设置显示器的分辨率、颜色模式等。
Windows 系统的推广:Windows 3.x 系统进一步推广了 INI 文件的使用。系统本身和许多应用程序都依赖 INI 文件进行配置。例如,Windows 的系统配置文件system.ini和用户配置文件win.ini,分别存储了系统级 ...