Saki's 研究记录

Saki's 研究记录

MckeeのClub & SAKI’sブログ

Golang数组与Slice,以及append函数的陷阱
有时候我们会将slice当做参数传递到函数,给这个slice做一些修改的情况。想到slice是引用传递,可以直接传递slice用作修改,于是可能出现下面这种情况: 12345678910111213141516package mainimport "fmt"func main() { arr := []int{1} modifySlice(arr) fmt.Println(arr) // [1]}func modifySlice(arr []int) { a...
Wails
简介 github: wailsapp/wailsC/S模式,一个后端服务,一个前端页面作为UI。前端可以使用 Vue / React / Angular,可以说很适合偏前端的选手。 Go语言的桌面解决方案来了——Wails,一个能让你使用 Go语言创建漂亮桌面应用的项目。从其官网的描述来看,它提供的解决方案如 Tauri类似,只是后端语言换作了 Go语言,前端开发依旧采用 HTML/CSS/Javascript,采用 Web渲染引擎进行界面绘制。桌面级别的应用开发依然是各个语言争相角逐的领域。 C#有微软推出的 MAUI,以及 WinForm和 WPF,依旧占据桌面应用开发的绝对主导...
Mac M1 安装并配置 OpenJDK
安装 Homebrew使用Homebrew安装OpenJDK,方便管理(查看、更新、卸载)在终端中执行安装脚本: 1/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 安装 OpenJDK@201brew install openjdk@20 配置 OpenJDK@20根据输出的安装信息的提示,为了让 Java wrappers 找到 JDK,需要手动建立链接: 12# For the system Java wrappers...
watchdog 机制
看门狗啥意思如果业务代码没执行完,锁却过期了,这时候其他线程又能抢锁了,线程就不安全啦。所以 redisson内部有个 watchdog(看门狗)的自动延期的机制,意思是定时监测业务是否执行结束,没结束的话你这个锁是不是快到期了(超过锁的三分之一时间,比如设置的 30s过期,现在还剩 10s到期),那就自动续期直到任务结束释放锁,大概是这么个意思。这样做可以防止如果业务代码没执行完,锁却过期了所带来的线程不安全问题。 实际开发中: 1234// 具有 Watch Dog 自动延期机制 默认续 30s 每隔 30/3=10 秒续到 30slock.lock();// 尝试拿锁 10s 后停...
快速搭建本地Temporal环境并运行简单demo
1. 运行 Temporal 集群123git clone https://github.com/temporalio/docker-compose.gitcd docker-composedocker-compose up 2. 创建项目创建项目目录: 1mkdir hello-temporal 初始化项目: 1go mod init hello-temporal 下载最新版本的 Go SDK(或者在最后执行go mod tidy): 123go get -u go.temporal.io/sdk@latest# 用于生成唯一 IDgo get github.com/google/...
git fatal: 拒绝合并无关的历史的错误解决[亲测有效]
问题描述旧项目在拉取/推送版本时失败,报错如下: 1234> git pull origin master来自 gitlab.hahaha.com:backend/server * branch master -> FETCH_HEAD致命错误:拒绝合并无关的历史 或 1234567> git push origin masterTo gitlab.hahaha.com:backend/server.git ! [rejected] master -> master (non-fast-forward)错误:无法推送一些...
error: cannot lock ref ‘refs/remotes/origin/release/xxxx‘: ‘refs/remotes/origin/release‘ 已存在,无法创建
问题描述拉取远程镜像时出现报错: 12git pull origin releaseerror: cannot lock ref ‘refs/remotes/origin/release/xxxx‘: ‘refs/remotes/origin/release‘ 已存在,无法创建 git error: cannot lock ref 是一个常见的 Git错误,通常会在尝试进行 Git 操作时出现。这个错误的原因通常是由于 Git 无法锁定引用(ref),例如分支或标签。这可能是因为其他进程正在占用该引用,或者您没有足够的权限来修改它。 解决方案亲测有效的解决方案: 1git updat...
逆向生成 Dockerfile
背景最近有个需求,使用到了一个第三方的docker镜像,但实际使用中发现并不适用,需要进行定制化处理重新生成一个自己的镜像。以下是两种逆向docker镜像的可用方法。 由 docker history 逆向生成 Dockerfile执行命令逆向生成dockerfile,命令格式如下: docker history [OPTIONS] IMAGE OPTIONS说明: -H :以可读的格式打印镜像大小和日期,默认为true; –no-trunc :显示完整的提交记录; -q :仅列出提交记录ID 示例: 12345678910111213141516171819docker his...
在Apple M1电脑中通过helm部署nginx
环境信息 minikube version: v1.26.0docker desktop: 4.16.2 (95914)mac OS: 13.1 简介helm是kubernetes的包管理器,在kubernetes下能够非常方便的完成应用的安装、卸载、升级等,是查看、分享和使用软件构建kubernetes的最优方式,被广泛的使用。helm是基于go语言实现。 Helm 的取名非常有意思,Kubernetes 是希腊语 “舵手” 的意思,而 Helm 是舵手操作的 “船舵”,用来控制船的航行方向。 安装 Helm前提要求 kubernetes 1.5 以上版本 执行 helm 命令...