Saki's 研究记录

10个令人惊叹的Go语言技巧,让你的代码更加优雅
简介在开发生产项目的过程中,我注意到经常会发现自己在重复编写代码,使用某些技巧时没有意识到,直到后来回顾工作时才意识到。为了解决这个问题,我开发了一种解决方案,对我来说非常有帮助,我觉得对其他人也可能有用。以下是一些从我的实用程序库中随机挑选的有用且多功能的代码片段,没有特定的分类或特定于系统的技巧。 1. 追踪执行时间的技巧如果你想追踪 Go 中函数的执行时间,有一个简单高效的技巧可以用一行代码实现,使用 defer 关键字即可。你只需要一个 TrackTime 函数: 12345678910111213141516// Utilityfunc TrackTime(pre time.T...
golang使用github上fork出来的package
背景最近开发个APP项目用到了Github上的Golang开源的第三方库。虽然项目有一直有在更新,但是提交审核时,系统提示说引用了苹果未公开(私有)或者已经废弃的API)。 Guideline 2.5.1 - Performance - Software RequirementsYour app uses or references the following non-public or deprecated APIs:… 打开项目工程,全局搜索了关键字,结果什么都没有搜到 XD系统也很贴心,不但帮你找出了问题还教你怎么去解决这个问题,上述提到了两个命令工具: strings 检测...
强袭 Blind 75
第 1 周 - 序列在第一周,将通过做一些关于数组和字符串的简单和中等问题来热身。数组和字符串是最常见的问题类型;熟悉它们将有助于奠定坚实的基础,以更好地处理更棘手的问题。 Question Difficulty LeetCode ☑ Two Sum Easy Link ☑ Contains Duplicate Easy Link ☑ Best Time to Buy and Sell Stock Easy Link ☑ Valid Anagram Easy Link ☑ Valid Parenthe...
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,依旧占据桌面应用开发的绝对主导...
快速搭建本地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/...
Zinc 全文索引的搜索引擎 —— 部署[1]
简介 官网: zincsearch项目地址: zinc,该项目开源目前 Star数 9.7k+。开源协议:Apache 2.0 Zinc 是一个进行全文索引的开源搜索引擎,企业内部搭建搜索引擎常用 Solr、Elasticsearch,它们都是使用 Java实现的,底层依赖 Lucene,Java相对来说占用较多内存。 Zinc目标就是作为 Elasticsearch的轻量级替代品。 Zinc运行所需的内存不到 100 MB,使用 bluge(bulge是 Golang实现的全文检索库,功能上类似 lucene)作为底层索引库。与 elasticsearch相比,它非常简单且易于操作。...
Parsing a Redis connection string
背景最近在工作中需要访问redis,为了方便使用,将redis的地址、端口、密码等写到配置中读取。例如: 12345# redis configurationredis: db: 0 addr: 'redis-ip:10086' password: '******' 这样配置是没问题的,但计划赶不上变化,当需求改成写个命令行工具来读访问 redis时,就用不上配置文件了。redis的配置需要从命令行的参数传入,例如: 1cmd subcmd --redis_addr 'redis-ip:10086' --redis_pw...
实时性能分析工具Pyroscope
背景当服务上线后,流量增加或短暂功能故障,都会造成用户体验变差,而这时怎样才能快速找到性能瓶颈呢?这次将会介绍一套实时性能分析工具——pyroscope,让开发者可以快速定位到造成性能瓶颈的代码,而且目前还支持在 Python、Rust 或 Go 的环境。下面将主要针对 Go 环境做介绍。 什么是 Pyroscope ?Pyroscope 是一套开源的实时性能监控平台,简单的 Agent-Server 框架,让开发者可以轻松监控服务的性能,不管是要找10秒还或是多年的性能数据,都可以快速的实时呈现。由于采样分析技术,CPU 开销较低,开发者用不用在意安装此监控会不会造成任何性能上的负担...