【青训营】1月21日总结

133 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第6天

Go调用ffmpeg实现选取视频第一帧作为封面:

  1. 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()
      

DB的连接类型

  1. 直接连接/Conn
  2. 预编译/Stmt
    • 之后执行同样的sql时可以直接传递sql的id,减少带宽使用和解析时间等
  3. 事务/Tx

DB返回数据的处理方法

  1. Exec/ExecContext -> Result
    • 对结果感兴趣(比如操作是否成功)
  2. Query/QueryContext ->Rows(Columns)
    • 操作成功后返回的模型数据
  3. QueryRow/QueryRowContext ->Row(Rows简化)
    • 对rows的简化,取其中一条,使用完自动丢弃

业务优化流程

  • 建立服务性能评估手段
  • 分析性能数据,定位性能瓶颈
  • 重点优化项改造
  • 优化效果验证

Thread.sleep(0)的妙用:

Thread.Sleep(0) 并非是真的要线程挂起0毫秒,意义在于这次调用Thread.Sleep(0)的当前线程确实的被冻结了一下,让其他线程有机会优先执行。Thread.Sleep(0) 是你的线程暂时放弃cpu,也就是释放一些未用的时间片给其他线程或进程使用,就相当于一个让位动作。在线程中,调用sleep(0)可以释放cpu时间,让线程马上重新回到就绪队列而非等待队列,sleep(0)释放当前线程所剩余的时间片(如果有剩余的话),这样可以让操作系统切换其他线程来执行,提升效率。