这是我参与「第五届青训营 」笔记创作活动的第6天
Go调用ffmpeg实现选取视频第一帧作为封面:
-
Ffmpeg下载链接:Download FFmpegwindouws共两个版本,分别由BtbN 和 gyan.dev 编译, BtbN 编译的 win64-gpl 版(非 gpl-share)
- 解释一下gpl-share,我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。 2. 草率一些,直接调用本地ffmpeg进行截图
cmd := exec.Command( "ffmpeg", "-i", "./public/"+finalName, "-vf", "select=eq(n\, 10)", "-frames", "1", "./public/image/"+finalName+".jpg", ) cmd.Run()
- 解释一下gpl-share,我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。 2. 草率一些,直接调用本地ffmpeg进行截图
DB的连接类型
- 直接连接/Conn
- 预编译/Stmt
- 之后执行同样的sql时可以直接传递sql的id,减少带宽使用和解析时间等
- 事务/Tx
DB返回数据的处理方法
- Exec/ExecContext -> Result
- 对结果感兴趣(比如操作是否成功)
- Query/QueryContext ->Rows(Columns)
- 操作成功后返回的模型数据
- QueryRow/QueryRowContext ->Row(Rows简化)
- 对rows的简化,取其中一条,使用完自动丢弃
业务优化流程
- 建立服务性能评估手段
- 分析性能数据,定位性能瓶颈
- 重点优化项改造
- 优化效果验证
Thread.sleep(0)的妙用:
Thread.Sleep(0) 并非是真的要线程挂起0毫秒,意义在于这次调用Thread.Sleep(0)的当前线程确实的被冻结了一下,让其他线程有机会优先执行。Thread.Sleep(0) 是你的线程暂时放弃cpu,也就是释放一些未用的时间片给其他线程或进程使用,就相当于一个让位动作。在线程中,调用sleep(0)可以释放cpu时间,让线程马上重新回到就绪队列而非等待队列,sleep(0)释放当前线程所剩余的时间片(如果有剩余的话),这样可以让操作系统切换其他线程来执行,提升效率。