-
在 M1/M2 MacOS 上使用 Diffusers 运行 Stable Diffusion 模型
最近 AI 大热,从 ChatGPT 到 Stable Diffusion,各种 AI 生成模型层出不穷,作为凑热闹爱好者,也在不停尝试玩一玩各种模型。近期对于 Stable Diffusion 模型比较感兴趣,之前也看到了很多在苹果电脑上运行 St... -
Go 接口兼容性实践
之前我们讨论了在 Go 模块开发中,对于公开的函数和结构体在修改时如果需要保证向后兼容性,需要注意到的问题。那么在模块开发中,还有一种我们很常用的类型,就是接口类型,那么在对于接口类型修改的时候,同样会遇到兼容性问题,那么本文主要讨论 Go 模块中接... -
Go 结构体兼容性实践
在上一篇文章中,我们针对 Go 模块开发时对于函数的兼容性问题进行了讨论。那么在实际的开发中,处理函数之外,结构体类型也是使用十分频繁的类型,那么对于模块公开的结构体类型在修改的时候,也需要考虑兼容性的问题。那么本文就针对模块中修改公开结构体类型对兼... -
Go 模块开发函数兼容性保证
在平时开发中,尤其是在开发 Go 模块的时候,我们需要对于已经公开的结构体,变量,函数,接口等类型进行兼容性的考虑,我们要给函数增加参数时,如果我们直接在原有方法中增加参数,这样会有什么问题吗?这样修改本身并没有什么问题,但是如果这样修改的话,如果调... -
Unleash 入门
最近由于需要对项目内的功能启用进行动态控制,所以了解到了 Feature Toggle,由于之前并没有想过的使用经验,所以进行了一些调研,并且最终选定使用开源方案 Unleash。本文将针对 Feature Toggle 的思想、基本原理和对于 Un... -
Go Slice 深入浅出
今天我们来聊一聊 Go 语言中最常用的类型之一,切片类型 Slice。对于切片类型,有很多人会把切片和数组混淆在一起,甚至有人认为切片就是数组类型,毕竟在 Go 的开发中,数组相比于切片类型,出场率可太低了。虽然切片和数组是两个不同的类型,但是它们之... -
Golang 操作 HTTP Header 的一个小细节
在平时开发中发送 HTTP 请求是非常频繁的操作,对于 HTTP Header 的操作也是很常用的操作。今天在 Review 一段代码的时候,发现了一个小问题,事后想想其实是很小的问题,很可能都不会影响运行结果,但是都是如果没有遇到过很可能就不会注意... -
Go 实现基于内存的 LRU 缓存
缓存是在平时开发中最常用的中间件之一,尤其是在 WEB 开发中更为常见,大家最常用的肯定还是 Redis 或者 Memcached 之类的中间件。所以对于自己实现一个 Cache 可能并没有那么熟悉,但是在很多场景下,我们使用一些网络缓存会遇到一些瓶... -
Git 中 rebase 和 merge 用法经验谈
Git 作为一个开发的基础工具,使用方法应该是每一个开发者必备的技能。由于 Git 的功能过于强大,导致很多人的使用方法都不是一样的,而且每个公司或者每个团队都有可能在日常工作中形成自己特有的 Git 管理流程,这些都是根据自己团队的特点和工作方式制... -
从源码分析 Redis 事务原理
之前的一篇文章对 Redis 事务的使用和特性进行了分析和总结。为了更好的理解 Redis 事务,本文将从 Redis 源码的角度来分析下 Redis 事务的原理。由于 Redis 源码是使用 C 语言写的,而本人的 C 语言功底最多价值五毛钱,所以...
一个有思想的程序员,玩游戏,玩音乐,读历史