原创 利用 AES256 算法加解密文件(by Java)

本文要介紹的是基於 Java 語言實現 AES256 加解密文件功能,主要流程包括 讀取文件明文數據,通過 AES256 加密算法進行加密,將加密後的數據寫回文件 讀取文件密文數據,通過 AES256 解密算法進行解密,將解密後的數據寫

原创 MySQL InnnoDB 存儲引擎事務

事務(Transaction)是數據庫區別於文件系統的重要特性之一。事務會把數據庫從一種一致狀態轉換爲另一種一致狀態。 事務可由一條非常簡單的 SQL 語句組成,也可以由一組複雜的 SQL 語句組成。事務是訪問並更新數據庫中各種數據項的一個

原创 MySQL InnoDB 存儲引擎中的鎖

爲什麼數據庫中需要鎖? 對於數據庫這種基礎應用,開發者當然是希望通過最大程度地利用數據庫的併發訪問從而帶來性能上的提升;但是併發就會帶來數據一致性、隔離性等問題。 數據庫使用鎖的目的就是爲了支持對共享資源進行併發訪問,提供數據的完整性和一致

原创 分佈式唯一 ID

在分佈式系統中,有些場景需要使用全局唯一 ID,一來作爲業務標識,一來爲了滿足接口的冪等性設計。例如我們文件系統中的 fid。 單表情況下我們可以直接使用數據庫的自增id,但是分庫分表後就無法滿足需求了,需要想辦法通過其他手段來實現。 對於

原创 謹慎使用 Arrays.asList() 和 Collections.singletonList()

Arrays.asList() 和 Collections.singletonList() 創建的 List 集合均不能調用其 add 方法(不可變列表),否則會導致 UnsupportedOperationException 報錯。 報錯

原创 記一次 JVM 線程 TIMED_WAITING 解決過程

問題描述 最近線上服務出現了大量的慢 sql,但是服務已經半個月沒有部署過了,不應該是上新功能導致的。於是就直接查看機器的 jvm 監控,發現單臺機器 TIMED_WAITING 狀態的線程已經超過了 2k,其中一定有貓膩,那麼問題大概就出

原创 自己動手編譯一個HEIF圖片轉jpeg工具(Mac平臺)

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"typ

原创 內向高敏者:如何在外向的世界自在生活

生活是世上最罕見的事--大部分人知識存在着而已。——奧斯卡·王爾德 如何獲得幸福人生? - 這裏只是一些研究而已,並不適用於所有人,不過可以用來參考 特爾曼研究 要堅韌不拔 要謹慎 要認真負責 要培養良好的生活管理習慣 格蘭特研究

原创 過濾視頻中的黑幀(生成視頻thumbnail時,跳過黑幀)

一般我們在生成視頻的 thumbnail 時,會直接截取首幀圖片,當碰到視頻首幀爲黑幀的情況,導致 thumbnail 爲一張全黑的圖片,體驗極差。 如何過濾掉視頻中的黑幀,取得正常的視頻幀。下面的 ffmpeg 語句可以幫助我們做到這件事

原创 檢測 Android 是否支持硬件編解碼

Android 系統中編解碼器的命名方式,軟編解碼器通常是以 OMX.google 開頭,硬編解碼器通常是以 OMX.[hardware_vendor] 開頭的。但是還有一些不遵守這個命名規範的,不以 OMX. 開頭的情況,它們也會被認爲

原创 iOS降低輸出視頻幀率的方式

AVVideoExpectedSourceFrameRateKey 原打算使用 AVAssetWriterInput 的 outputSettings 參數中的 AVVideoExpectedSourceFrameRateKey 設置輸出幀

原创 視頻轉 webp 動圖

視頻轉 webp 動圖 準備工作 編譯支持 webp 的 ffmpeg 庫 下載 webp 源碼進行編譯 ./configure --prefix=${INSTALL_DIR} --enable-

原创 利用 MediaCodec 進行轉碼

前面的文章簡單介紹了 MediaCodec 的使用說明,這篇文章會說明如何使用 MediaCodec 進行視頻轉碼。 首先關於轉碼的流程: 視頻文件 ——> 解封裝 ——> 解碼 ——> 編碼 ——> 封裝 ——> 轉碼後的視頻文件 那

原创 Android MediaCodec 使用說明

最近公司要求提供一個支持 Android 硬件轉碼的底層庫,所以自己從頭去看了 MediaCodec 相關的知識,費了老大的勁終於完成了。目前的硬件轉碼使用 MediaCodec 進行解碼和編碼,然後使用 FFmpeg 進行文件封裝(爲了支

原创 MediaCodec 編碼後的數據使用 FFmpeg 進行封裝

由於使用 MediaMuxer 進行文件封裝不支持邊轉碼邊分塊,所以選擇通過使用 FFmpeg muxer 進行文件封裝, 在封裝過程中完成文件的分塊。 FFmpeg 音視頻複用器(Muxer) 音視頻封裝 - 將視頻壓縮數據(例如H