自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 收藏
  • 关注

原创 AI 编程辅助工具介绍

2023 被称为“AI元年”,人工智能、AI大模型概念迅速点燃市场。对程序员来说,如果能让 AI 帮助我们编码,那工作效率不得起飞!本篇简单介绍一下当前主流的 AI 编码工具。目前的 AI 辅助编程工具还在飞速发展,本地部署训练的效果都不如 GitHub Copilot 等大厂的产品好用。短期内建议使用云服务产品来做代码辅助,长期考虑,可以先本地部署了解下其原理(硬件不行的就不要再考虑了),尝试自己生成模型。

2024-04-16 15:46:27 1034

原创 【开发掉坑】go 中 interface 的 nil 判断

今天介绍下 `go` 中的 `interface(any)` 的 `nil` 判断,项目中遇到的一个小问题,知识遗忘了,再做个记录。

2024-01-19 15:27:50 797

原创 go module 名称与 GitHub/Gitlab 地址不同时的引用方式(module declares its path as: github.com/someone/repo )

本篇介绍了go引用第三方库时,当module名称和引入仓库地址不同的情况下的解决方式:使用mod的replace特性。使用replace将替换成网站地址即可。module declares its path as: github.com/someone/repo but was required as: github.com/you/repo 的解决方式

2023-11-06 17:22:09 608

原创 golang 发起 http 请求,获取访问域名的 ip 地址(net, httptrace)

本篇介绍了在go中如何获取访问域名的ip地址,通过go官方net包可获取。如果有记录http请求的域名ip这种需求,可以使用go 1.17后添加的httptrace包来插入钩子获取请求的ip地址。当然了,httptrace的作用不止于此,它可以搜集http客户端请求整个生命周期中的信息,本篇未做详细介绍,感兴趣的可自行探索。

2023-11-02 10:40:15 1762

原创 电子邮件发送接收原理(附 go 语言实现发送邮件)

本文阐述了电子邮件发送接收原理。大体流程:用户A-> 邮箱服务器 (-> 其他邮箱服务器) -> 用户B。最后介绍了下使用golang来发送邮件,配置好服务器后还是很方便的。

2023-10-25 18:42:10 709

原创 adb 获取 Android 设备中已安装的 apk 文件

如何将手机中的安装包导出,可以借助 MT管理器或者 adb 工具。

2023-10-20 19:42:42 2263

原创 docker 已经配置了国内镜像源,但是拉取镜像速度还是很慢(gcr.io、quay.io、ghcr.io)

docker拉取镜像慢,通常配置了国内镜像源后,速度可以得到极大的改善。但若是配置了镜像源后,拉取镜像还是非常慢,那就需要自己想想办法搭个梯子直接从外网拉取镜像。

2023-09-13 11:07:01 8315 1

原创 git submodule 子模块的基本使用

使用了submodule后,若不主动更新,项目会一直使用固定版本的submodule模块,需手动更新(若是在go或者其他有包管理的项目中,建议还是使用开发语言工具去做这种类似的第三方包管理会比较方便。

2023-08-31 16:04:54 883

原创 linux 性能分析之内存分析(free,vmstat,top,ps,pmap等工具使用介绍)

linux 的内存分析工具的简单使用。/proc/meminfo,free,vmstat,top,ps,pmap

2023-08-21 22:58:31 1598

原创 flutter 解压 zip 中文乱码问题处理

很简单的一个zip包解压缩的功能,但是windows平台中文显示乱码,很糟心,搜了一圈没找到现成的方法,在此贴上我的解决方式。

2023-08-11 16:05:53 1012

原创 flutter 初识(开发体验,优缺点)

flutter的上手难度还行,不过我做上述的小应用,还是花了一天的时间(主要还是要熟悉其框架结构以及基础语法,数据请求等),整体开发体验还不错,中文社区也挺强大的,基本上问题一搜都能有解答。这里要吐槽一下,我做的应用有个解压缩的功能,遇到了gbk编码问题,flutter对中国用户真是不怎么友好,这个问题花了好半天才解决(可能是我太菜了 =-=!跨平台提供了便利性,同样也提高了复杂性,对开发者的知识广度还是有需求的。

2023-08-11 15:43:17 1585

原创 低代码平台的使用学习

低代码平台是一种开发工具或环境,它们旨在简化应用程序的开发过程,减少编码量,提高开发效率,同时降低对传统编程知识的依赖。通过低代码平台,开发人员可以使用图形化界面和拖拽功能,而不需要手写大量代码,从而更快地构建应用程序。总的来说,低代码平台在适合的场景下可以显著提高开发效率和降低开发成本,对于快速原型、中小规模项目以及业务人员参与开发的情况非常有用。但对于复杂的、高性能要求以及高度定制化的项目,传统的编程方法可能更为适用。

2023-08-04 11:22:54 509

原创 go 中的代码漏洞检查

govulncheck是go官方提供的一个二进制工具,用于检查go代码或二进制文件是否存在已知的安全漏洞。是go官方提供的一个漏洞检查工具。go团队从多处采集漏洞并存入自己的漏洞库,然后通过工具对代码或二进制文件进行漏洞扫描。很棒的一款工具,建议在日常的开发流程中(CI/CD,代码审查等)引入漏洞检查,能够帮助我们通过go来构建高质量、高安全性的程序。

2023-07-31 11:13:53 476

原创 探索 APK 文件的内部:了解 Android 应用程序的组织结构

APKAndroidpackage) 是构建和发布Android应用程序的关键组成部分,APK文件是应用程序的打包格式,它将应用程序的代码、资源和清单信息组合在一起,以便在设备上进行安装和运行。简称 ”“,其本质上就是一个zip压缩包。

2023-07-20 18:36:39 879

原创 web服务端接收多用户并发上传同一文件,保证文件副本只存在一份(附go语言实现)

本篇只是给个思路,抛砖引玉,介绍了如何实现客户端和服务器端的并发上传控制。通过示例代码,能够确保在并发上传时服务器中只存在一份文件副本。在实际的生产环境中,可能需要进一步优化和增强这些代码,以满足性能、安全性和可靠性方面的需求。

2023-07-05 11:15:51 633 1

原创 go 中的 ~int 类型是什么,怎么在类型前面还有一个波浪线?

本篇介绍泛型中一个小小的特性, 这种类型前添加波浪线的写法,表示的是衍生类型,即使用type自定义的类型也可以被识别到(type MyInt int),底层类型一致即可,主要同泛型一起使用。通常在使用这种需要排序的类型时,直接使用go官方提供的包即可。

2023-05-16 11:22:38 1304 2

原创 实时通信的服务器推送机制 EventSource(SSE) 简介,附 go 实现示例

是HTML5中一个强大的API,提供了简单可靠的服务器推送机制,用于实现实时通信。与WebSocket相比,的优势在于其简单易用、自动重连、轻量级和跨域支持。然而,它也有一些限制,如单向通信和较低的浏览器支持。相比之下,WebSocket适用于双向通信、大规模应用和实时性要求较高的场景,但其复杂性和穿越防火墙的挑战也需要考虑。总的来说,是一种非常有用的API,适用于许多实时应用场景,如实时股票报价、即时聊天、实时通知等。它提供了一种简单而可靠的方式来建立服务器推送连接,并实现实时更新和通知。

2023-05-07 15:18:17 11826 1

原创 go gin 框架设置 header 需要注意的一个坑

`go` 中使用 `c.Header("new-token", "123")` 设置 `http header` 键值的时候,设置的 `new-token` 键会变成 `New-Token` !!!

2023-03-23 17:23:45 2292

原创 前后端数据加密传输(附go语言实现)

这里做的加密传输,仅仅只能添加破解的复杂性,不能真的保证数据不泄露。所以一般的服务在做数据交互时也并不会刻意去做这种前后端的数据加密,一般性的是做服务器的session或者客户端的cookie校验,来保证数据不泄露,不被篡改。但你要是说我做session校验的token在前端泄露了,那这种也是用户自己的问题(进入黑客网站或其他做了鉴权),服务防不了这种,顶多是增加校验复杂性来让其更加繁琐。所以说在类似付款的操作的时候,都会再进行一次校验(输入密码/验证指纹等),来再做一次权限校验。

2023-03-12 14:22:24 3211

原创 go 调试器 delve(dlv) 的使用(附实例及常用命令解释)

delve工具非常强大,本篇介绍了其基础使用,希望在遇到问题的时候可以快速的进行问题排查,如果安装了GoLand,也可以使用Goland进行调试,相对来说更加的快捷,但遇到一些需要查看汇编代码或者其他高阶应用时,我还没发现GoLand如何使用,所以delve的命令使用最好也是要了解的,不会到时候一头雾水。

2023-02-03 15:20:26 5988 2

原创 go module 的本地仓库依赖解决方案(Multi-Module Workspaces)多 module 工作区模式 简介

go在1.18新推出的依赖本地。依赖本地未发布的module。设置了工作区后,所有的配置都会以工作区的配置为最高优先级。go.work文件不需要上传到git仓库,本地使用即可。go.work。

2023-01-17 11:26:37 1707

原创 go channel 基础(如何优雅地关闭 channel)

想必听说过 go 的,应该都知道 go 的最大的特性 goroutine 并发编程,而说到并发编程,使用 channel 进行数据传输是 go 中的必修课。go 的并发哲学:不要通过共享内存来通信,而要通过通信来实现内存共享。channel 的坑不少,本篇简单聊聊关闭 channel 的方法。

2023-01-12 10:35:29 1958 1

原创 WEB 安全,浅谈 XSS 攻击(附简单实例)

为什么说一些网站上的弹出广告(一刀999)不要去点,特别是已经登录过的网站,个人信息的泄露等都很有可能是从这里泄露的。由于XSS这种攻击手法是很常见且基础的方式,目前大多数的web框架都对其做过适配了,我们也不需要太过担心这种安全问题,但是还是要知道有这么回事,并能够有相应的处理方案。现在大多数的项目都是前后端分离的,前后端都要对XSS有所了解,在实际开发中需要多考虑下这类安全问题。

2022-12-29 22:09:05 2005 2

原创 华硕 A550C 安装 CentOS7 后无法连接 wifi 问题排查解决

最近买了个投影仪,发现那些大厂的影音APP,手机上买了会员后,不能和投影仪上的APP共用,就很恶心。这时发现十年前的老笔记本就躺在投影仪下面的柜子上,上面铺满了厚厚的一层灰,心想这老家伙该起来再操练操练了!用其搭建个webdav服务来在投影仪上看云端电影,岂不美哉。由于其年岁已大,跑起windows来太卡了,所以给它换了个心脏,谁知wifi连不上了!!

2022-11-25 16:25:36 865

原创 gitlab-runner 的安装使用(含 .gitlab-ci.yml 的简单使用)

gilab-runner 的简介及安装使用,包含 .gitlab-ci-yml 的语法介绍。ci 变量优先级的介绍,以及实际使用中的一些问题。

2022-11-25 15:34:25 1929

原创 HTTPS/TLS/SSL 都是什么,有什么区别?

SSL是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是的简称。TSL可以看作是SSL的升级,现在用的基本上都是TSL证书,但是由于历史习惯,还是会叫做SSL证书。HTTPS的工作流程还是比较复杂的,为了安全着想,设计者们也是花了大心思的。SSL根证书的颁发机构CA是公认的证书颁发机构,可信度高。证书是链式的,链越多,则认证时间越长,一般证书三四层链。

2022-10-30 15:17:51 1062

原创 git bfg 的使用(删除提交记录中的敏感信息,删除文件等)

bfg主要用途:希望保留提交历史,需删除提交历史记录中的不希望被其他人看到的信息(密钥,个人隐私等)或大文件的移除。环境配置完成后,使用还是比较方便的,软件运行速度也非常快,当遇到类似需求时推荐使用。最后还是祝愿大家不要用到这个工具,尽量提前做好相应的知识储备(git的使用,敏感信息过滤等),以防出现不必要的麻烦。

2022-10-21 14:44:46 2665

原创 go语言实现,用户登录:限制一分钟内密码错误的次数(固定时间窗口限流算法)

本文主要以一个业务来简单的描述了一下限流(固定时间窗口),并附带了一个go版本的实现。限流方式很多,还是要找到最适合本身业务的限流方式,难的不是实现,而是怎么去限流,怎么设计。

2022-10-13 17:59:29 1057

原创 docker 容器访问宿主机服务

docker在安装时会默认创建三个网络,bridge(创建容器默认连接到此网络)、none、host。

2022-10-12 11:36:36 7243

原创 go sync.Map Range 的同时进行 Store,Range 的遍历结果如何?(源码分析)

再详细解释一下开头提出的问题,RangeStore并发的时候,Range的遍历结果如何。Range先开始,并且没有发现dirty中有read为false),则遍历过程中是不能够获取到新添加进Map中的数据的,因为遍历的是之前的副本。Store先开始,Range遍历的时候会发现dirty中有read中不存在的数据,则会去和Store去竞争同一把锁,在Range竞争到锁的时候,会清空dirty同步read然后会拿着当前read的副本进入for去回调,即:遍历过程中可能会读取到Store的一部分的数据。

2022-09-29 11:52:06 1687

原创 es 初识调研,相关知识点汇总

分布式,高性能,高可用,支持restful风格api的搜索和数据分析引擎,它是经过考验的,很多大型项目都在用,很适合做全文搜索、日志分析、监控分析等。

2022-09-27 13:38:43 1722

原创 go pprof 的使用

pprof是go中做性能分析的很强大的一个工具,支持内存,cpu,锁,goroutine等数据采集,本篇主要是做个简单介绍,真正进行分析的时候,需要耐心了解各种图,数据展示的含义,一般来说还是比较好理解的。

2022-09-23 14:26:13 658

原创 git 迭代开发分支流程规范

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

2022-08-12 15:48:00 1404

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

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

2022-08-01 22:05:21 3076

原创 浅谈代码数据安全

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

2022-07-05 15:43:45 921

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

短信验证码还是比较常用的功能,已经有了很成熟的方案,本篇介绍的是对接阿里云的短信服务。

2022-07-01 20:10:31 1686

原创 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 20:18:52 843

原创 项目开发阶段性总结

项目完成后的阶段性回顾总结

2022-06-16 16:27:52 505

原创 go FTP 文件传输

FTP 简介FileZilla 工具go 实现 github.com/jlaffaye/ftp

2022-03-28 22:29:30 4149 6

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

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

2022-03-11 15:54:20 3124 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除