Zsh Blog

只想安安静静写代码

本地编译最新版本ffmpeg,支持CUDA和zscale、libplacebo

背景 最近有一个需求,使用ffmpeg把非yuv420p色彩的视频转换成yuv420p bt709色彩,这个需求的具体解决过程放在下一篇文章,此文仅介绍本地ffmpeg编译内容。 因为在搜索色彩空间转换的过程中,发现了一些需要额外构建的filter,以及需要支持CUDA硬件加速,于是决定自己编译一个最新版本的ffmpeg,同时记录下此次编译的操作过程,希望可以帮到其他有需要的人。 准备...

redis是如何执行set命令的

redis是如何执行set命令的 从最简单的set key value 命令开始挖掘,redis是如何执行set命令的 点开redis源码目录,找到一个最接近set命令的问题,t_string.c 里面有好几个函数,长得都很像 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /* SET key value [NX] [XX]...

Kotlin实体使用JPA的save自动设置id问题

背景 最近打算把公司后端项目从Java迁移到Kotlin,在迁移JPA实体类的时候,用data class代替了Java定义的class,同时用var+默认值的方式改写了id的定义 1 2 3 4 5 data class User( @Id @GenerateStrategy(xxxStrategy.class) var id: String = "" ) 改完后...

npm9.x安装本地文件依赖踩坑

背景 公司项目下有几个submodule的依赖,通过file协议安装,最近在开发新功能时发现本地更改submodule的代码,主项目无法引用到最新的代码, 同时webstorm的代码跳转会进入node_module目录下同名文件夹,而同事表示他们本地没有这种情况。 探寻 经过对比发现我跟同事电脑开发环境只有npm版本不同,我安装的是最新9.2,他们的是8.11,于是我们开始了一番实验。 ...

SpringBoot import config属性加载顺序踩坑

背景 SpringBoot2.4.0添加了spring.config.import配置项,可以在配置文件里导入其他配置文件,通常用来抽取一些所有profile都会使用的配置,比如公共服务器之类的,下面用一个demo项目演示一下。 首先有3个配置文件 1 2 3 # application-base.yml common: name: zsh 1 2 3 4 # applicat...

Git系列(3)合并冲突

合并冲突如何发生 看到合并冲突这4个字,很多人觉得肯定只有合并的时候才会发生。事实上只要你尝试把来自几个不同源的修改同时应用到同一个文件上,都可能发生冲突,这里的应用包括以下几种操作 merge rebase cherry-pick git stash pop 那么为什么会有冲突呢,简单来说就是2个对同一个文件的同一处修改不一致了,Git不知道该用哪一段修改,于是就...

Git系列(2)分支策略

分支约定 Git提供了创建分支的功能,但是没有详细说明如何使用 需要有一个基于团队协作的最佳实践去避免错误和混淆 帮助新成员快速理解协作流程 下面来具体说明。 基于主线分支开发,短时分支策略 只有极少数的分支 分支关联很小的提交 高质量的测试和QA 分支用后即删 基于阶段分支开发,长期存活分支策略 存在不同类型的分支 每个类型的分支有...

Git系列(1)完美的提交

如何创建一个完美的提交 添加正确,合适的更改内容到暂存区 编写易读的提交信息 下面来具体说明。 很多时候我们经常有的一个问题是,更改了许多文件,并且文件之间彼此更改的目的不同,最后提交的时候,一股脑git add . && git commit -m "update",这种方式虽然方便快捷,可带来的后果是无法回溯,在未来的时间看到这段提交记录无法得知当时改动...

接口性能优化

背景 最新公司产品上线,对接口性能有一定的要求,因此需要开展一波接口性能治理 准备工作 压测工具:JMeter或者测试平台 预期目标:期望 X QPS下95%响应时间在Y以下,并且不允许出现大于Z的响应时间 监控工具:Grafana,Prometheus, Arthas 步骤 使用压测工具准备好压测用例和数据 开始释放压测流量 ...

MIT 6.830 实现简易数据库 lab3

exercise 1 实现对某一字段直方图的构建。估计查询计划的代价首先要获得数据的统计数据,本lab采用直方图对数据进行统计。一个直方图代表着一个字段的统计信息, 直方图将字段的值分为多个相同的区间,并统计落于每个区间的记录数。每个区间的记录数是一个bucket,bucket的宽度是区间的大小,bucket的高度是落于该区间的记录的数量。 然后根据构造的直方图,计算某一谓词下某一字段的选择...