由於Java較爲容易被反編譯,因此把一些重要代碼放在so文件中成爲了一個代價不太高的選擇。雖然so文件依舊可以反編譯,但對so進行逆向分析的門檻則要比分析Java字節碼的門檻高出不少。很多安全相關的代碼都依賴OpenSSL,然而網絡上在NDK中使用OpenSSL的教程並不多見,經過一天的探索,我終於可以成功在NDK中調用OpenSSL了。本文將以調用OpenSSL中的HMAC算法爲例,介紹如何在NDK中使用OpenSSL。
由於Java較爲容易被反編譯,因此把一些重要代碼放在so文件中成爲了一個代價不太高的選擇。雖然so文件依舊可以反編譯,但對so進行逆向分析的門檻則要比分析Java字節碼的門檻高出不少。很多安全相關的代碼都依賴OpenSSL,然而網絡上在NDK中使用OpenSSL的教程並不多見,經過一天的探索,我終於可以成功在NDK中調用OpenSSL了。本文將以調用OpenSSL中的HMAC算法爲例,介紹如何在NDK中使用OpenSSL。
通過半個多學期的實踐,我發現,想用好數據庫真的是沒那麼容易。
之前有兩篇文章來敘述千尋的數據庫設計,但在實踐中,千尋並沒有按照之前設計的方式來使用數據庫。最主要的原因是,數據在MongoDB和redis中重複出現,這個冗餘帶來的一致性問題比較難以解決,雖然在寫代碼的時候已經通過code review來儘量避免數據的不一致,但一致性的bug還是難以避免。
這兩天在做高級數據結構(ADS)課程的大作業,內容是做一個推薦系統。我們選取的是C. Wang and D. Blei. Collaborative topic modeling for recommending scientific articles.一文中描述的模型。文章的作者C. Wang在個人主頁上發佈了論文中使用系統的部分代碼,代碼使用C++語言完成的。而我們的系統是用Java搭建的,因此我們需要將C++代碼移植到Java中。
本以爲這是一個簡單的工作,只需要簡單的改寫即可,但沒想到第一次移植的版本跑出來的結果的準確率只有作者程序的1/10。於是我意識到程序改錯了。經過漫長的人工靜態debug,終於把程序改對了。
I recently used APIs from several websites. However, I found it difficult to manipulate them. So I wrote this article for reference.
本文節譯自Shahin Farahani所作的ZigBee Wireless Networks and Transceivers(ISBN:978-0-7506-8393-7)第一章,原文版權歸作者所有。譯文版權歸本人所有。本譯文亦用作本人本科綜合論文訓練的文獻翻譯部分。