Grassto
码龄5年
  • 103,672
    被访问
  • 63
    原创
  • 17,300
    排名
  • 10
    粉丝
  • 0
    铁粉
关注
提问 私信
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2017-08-24
博客简介:

DisMisPres的博客

查看详细资料
  • 3
    领奖
    总分 431 当月 38
个人成就
  • 获得19次点赞
  • 内容获得34次评论
  • 获得82次收藏
创作历程
  • 10篇
    2022年
  • 25篇
    2021年
  • 16篇
    2020年
  • 12篇
    2019年
成就勋章
  • 入选《开发工具领域内容榜》第50名
TA的专栏
  • go
    42篇
  • docker
    1篇
  • 安全
    2篇
  • js
    1篇
  • electron
    1篇
  • KaiOS
    1篇
  • 随笔
    2篇
  • 文件结构
    1篇
  • Android
    3篇
兴趣领域 设置
  • 后端
    架构
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

git 迭代开发分支流程规范

Git的流程设计还是很棒的,熟悉了之后是可以方便的进行联合开发工作,建议多花些时间了解。对于不同规模,不同场景下的项目,Git的工作流是可以自行更改优化的,最终的目的就是方便、快速、准确的构建项目体系。本篇主要讲述了一个迭代过程中,突遇线上紧急bug需要修复时的git工作流的设计,即保证线上的环境用的始终是master从master检出新的分支并进行修改。将修改后的代码合并到master分支,并编译发布,打tag。将修改后的master分支合并到当前开发的develop分支,解决冲突。......
原创
发布博客 2022.08.12 ·
59 阅读 ·
0 点赞 ·
0 评论

docker 的 limits 使用,控制内存,cpu等的最大占用率

最近遇到一个比较尴尬的问题,我有一个服务比较占用内存,做一些分析可能会让内存暴涨至十几个G,但是服务器的内存又比较小,只有4G,导致服务崩溃。最实在的做法就是服务器扩容,但是自己测试的服务,没必要这么奢侈,但又不想一直重启服务器,官网查找发现docker有个limits的属性可以使用,本篇以限制简述下其使用。......
原创
发布博客 2022.08.01 ·
119 阅读 ·
0 点赞 ·
0 评论

浅谈代码数据安全

前段时间的 开源包漏洞为所有人敲响了警钟。企业可以采取一些措施来降低此类风险,例如:代码审查,开源库的敏感信息扫描,构建安全团队进行攻击测试等。自研代码是企业私有的重要数字资产,要全面保障其安全,这里包含了 “代码泄露风险防范” 和 “代码编写风险防范”。缺陷管理成本,开发阶段/测试、发布阶段/交付之后 再进行修复,开发阶段就发现,成本是最低的。企业内部某服务需要对接短信发送平台(这里以阿里云为例),两种方案:代码数据泄露就相当于是淘宝卖家的差评,如果不小心造成了代码数据泄露,轻则降低自己的名声(口碑不好
原创
发布博客 2022.07.05 ·
549 阅读 ·
1 点赞 ·
0 评论

go 服务接入短信验证码功能(对接阿里云平台)

短信验证码还是比较常用的功能,已经有了很成熟的方案,本篇介绍的是对接阿里云的短信服务。
原创
发布博客 2022.07.01 ·
216 阅读 ·
0 点赞 ·
0 评论

go mod tidy 出错:create zip: module source tree too large (max size is 524288000 bytes)

最近做项目,用的公司内部的库,该库主要做一些分析,上传了一些分析源数据,导致代码仓库比较大,于是遇到了一个 很少遇见的问题:看错误返回,是说仓库太大了,已经超过 了。 还有这种限制?果然,删除代码仓库一些数据,将其缩小至 以内,问题解决。 的官方仓库也有人提了 的开源库中给出了答案:https://github.com/golang/mod/blob/89ce4c7ba8043b0e8a8c03f1a266fb0e56637314/zip/zip.go#L28-L30这里看到的确时 限制了。
原创
发布博客 2022.06.17 ·
115 阅读 ·
0 点赞 ·
0 评论

项目开发阶段性总结

项目完成后的阶段性回顾总结
原创
发布博客 2022.06.16 ·
45 阅读 ·
0 点赞 ·
0 评论

go FTP 文件传输

FTP 简介FileZilla 工具go 实现 github.com/jlaffaye/ftp
原创
发布博客 2022.03.28 ·
1045 阅读 ·
0 点赞 ·
4 评论

go 中的死锁检测,第三方工具 go-deadlock

前言最近提交了一份死锁代码,导致某个功能不可用,前端小哥纳闷反馈,这昨天还能用的,今天怎么就不行了?再一看原来是死锁了问题代码没有做自测,认为是很简单的修改,不会出 bug,大锅。git 提交后的 CI 没有做死锁的检查。官方是否提供了死锁检测呢?解决上网搜了一圈,发现官网没有死锁检测,接下来介绍今天的主角:go-deadlock,这是基于运行时的代码检测的。体现在代码中,就是用 deadlock 的同步原语来代替标准库 sync 的同步原语。先来看一个简单使用的例子:// 测试
原创
发布博客 2022.03.11 ·
675 阅读 ·
0 点赞 ·
0 评论

go ioutil.NopCloser 的使用

原理NopCloser 的原理很简单,就是将一个不带 Close 的 Reader 封装成 ReadCloser。以下是源码:// NopCloser returns a ReadCloser with a no-op Close method wrapping// the provided Reader r.func NopCloser(r Reader) ReadCloser { return nopCloser{r}}type nopCloser struct { Reader}
原创
发布博客 2022.03.09 ·
1190 阅读 ·
1 点赞 ·
3 评论

go 随机数 rand 的简单使用,年会活动积分赛程设置,小组赛对战顺序

背景公司年会举办活动,我来组织乒乓球赛,由于人数不是很多而且时间比较紧迫。第一轮采用分组积分赛制,组内人人都会对战一次,程序实现了一下对战顺序。go 的随机数 randgo 的 math/rand 包实现了伪随机数生成器。如下示例,生成 10 以内的随机数 rand.Intn:func tMathRand() { for i := 0; i < 100; i++ { fmt.Println(rand.Intn(10)) }}不管运行几次,生成结果都如下:177918
原创
发布博客 2022.01.06 ·
381 阅读 ·
0 点赞 ·
0 评论

前后端交互,密码加密,RSA 实现前端 js 加密,后端 go 解密

RSA 加密算法简介一种比较常见的非对称加密算法,常用于前后端交互中的密码加密,由于私钥是存放在服务端,外部正常情况下是拿不到解密密钥的。以下为百度百科的部分解释:RSA 公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。在公开密钥密码体制中,加密密钥(即公开密钥)PK 是公开信息,而解密密钥(即秘密密钥)SK 是需要保密的。加密算法E和解密算法 D 也都是公开的。虽然解密密钥SK是由公开密钥 PK 决定的,但却不能根据 PK 计算出 S
原创
发布博客 2021.12.21 ·
1614 阅读 ·
0 点赞 ·
0 评论

go 时间戳转换需注意的坑,int64 -> float64

项目中遇到的一个小问题,做个记录:go 标准库 json.Unmarshal 当使用 interface{} 接收 int 类型的值时,会将其转换为 float64,这样也合理,本篇不深究 json 库的实现。当直接使用 interface{} 来接收参数时,是不会转换其类型的,如下:func tInterfaceTimestamp() { nowTimestamp := time.Now().Unix() fmt.Println("当前时间戳秒:", nowTimestamp) var i i
原创
发布博客 2021.11.11 ·
1423 阅读 ·
0 点赞 ·
0 评论

go 内存对齐

什么是内存对齐内存对齐对程序员来说,一般是“透明的”,它属于编译器行为,编译器会将程序中的每个“数据单元”安排在适当的位置上。为什么要内存对齐CPU 读取数据的时候,不是一个字节一个字节读取的,而是一块一块读取的,具体的块的大小是根据 CPU 的位数来区分的。为了读取更快,减少 CPU 访问内存的次数(典型的空间换时间的做法),所以需要内存对齐。如何查看数据占用内存大小?func main() { // 64位 // bool 1 // int8 1 // int16 2
原创
发布博客 2021.11.09 ·
211 阅读 ·
0 点赞 ·
0 评论

go 导出 html 报告(使用 hero 预编译 html 模板引擎)

前言项目需求,需要将服务器的数据进行导出,方便携带展示,做了一次 html 报告的导出,考虑如何实现。使用 vue 等前端框架,通过读取 js 文件来动态渲染 html 视图直接将数据写入 html 页面,多导出一些 html,通过 iframe 来进行页面的加载这里使用的是第二种方式。本篇主要介绍一下 go 的一个开源库 hero 预编译模板引擎,用于快速的渲染 html。常见的模板引擎一般有两种实现方式,一种是直接解析 HTML 语法树,然后根据一定的规则动态的拼接,另外一种是把模板预先
原创
发布博客 2021.10.27 ·
392 阅读 ·
0 点赞 ·
0 评论

go:embed 的使用

简介go:embed 是 go 1.16版本添加的新特性,可以在 go 生成的应用程序中嵌入静态文件(文件,文件夹)。部署的时候,直接扔一个二进制文件即可,不用再包含一些静态文件,考虑文件相对位置,因为它们已经被打包到生成的应用程序中了。导入 embed 的 go 源文件可以使用 //go:embed 指令在编译时从包目录或子目录中将读取的内容转换成 string, []byte, 或者 embed.FS 类型的变量。基本用法目录层级:下面用到的 hello.txt 的内容:hello wor
原创
发布博客 2021.10.09 ·
1237 阅读 ·
0 点赞 ·
0 评论

go 实现 边导出边计算文件哈希值

导出文件,并计算哈希值(MD5, SHA1, SHA256),简单的封装了一下计算哈希值的 HashWriter。如下:package hashimport ( "crypto/md5" "crypto/sha1" "crypto/sha256" "fmt" "hash" "sync")//#region HashWriter 用 channel 做各哈希的计算type HashWriter struct { md5W hash.Hash md5Chan chan []
原创
发布博客 2021.09.29 ·
223 阅读 ·
0 点赞 ·
0 评论

浅谈 CSRF 攻击(附实例,go 语言服务器)

先提一点,做实例的时候遇到的 cookie 带不上的原因,是谷歌提出的 SameSite Cookies 机制导致的,之前都不知道 cookie 还有这么个属性。趣事2011年12月21日,国内最大的开发者社区 CSDN 被黑客在互联网上公布了600万注册用户的数据。更糟糕的是,CSDN 在数据库中明文保存了用户的密码。当然了,这次事故的原理,肯定不是 CSRF。原理CSRF 是 Cross-Site Request Forgery 的缩写,跨站请求伪造。本篇阐述的是基于浏览器 cookie 机制
原创
发布博客 2021.09.23 ·
241 阅读 ·
0 点赞 ·
0 评论

electron preload

背景最近手头的 electron 项目需要做一个报告导出的功能,导出时要弹出个页面,可让用户自行补全相应的字段。由于公司已有现成的笔录工具,现直接将其集成进来,用 webview 直接展示其笔录页面,将已有的值传给笔录。webview 简介electron 的 webview 标签时基于 Chromium webview ,由于 Chromium 的架构变化巨大,会影响 electron webview 的稳定性,包括呈现、导航和事件路由。所以 electron 团队不建议使用 webview 标
原创
发布博客 2021.09.17 ·
877 阅读 ·
0 点赞 ·
0 评论

go 自定义 tag 的使用(外部服务的结构体数据转换,使用 tag 和 reflect 转成对应的 map)

背景最近做项目时,需要和外部服务进行数据交互,但是双方的数据结构不同(虽然表示的意思相近,例:本系统的 Name 对应其 UserName)。这时访问外部系统时,需要进行数据转换。第一版 直接转换直接提供方法,转成相应的结构,如下:type UserInfo struct { Name string Age int Height int}func (u *UserInfo) ToOutside() map[string]interface{} { res := make(ma
原创
发布博客 2021.09.09 ·
416 阅读 ·
2 点赞 ·
0 评论

go mod 引用出错问题排查(ambiguous import: found github.com/ugorji/go/codec in multiple modules)

问题最近遇到了一个很奇怪的问题,如下:diskimage/image imports fastdev/disk imports github.com/gin-gonic/gin imports github.com/gin-gonic/gin/binding imports github.com/ugorji/go/codec: ambiguous import: found package github.com/ugorji/go/cod
原创
发布博客 2021.09.03 ·
1654 阅读 ·
2 点赞 ·
0 评论
加载更多