由于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,终于把程序改对了。
这两天陆续使用了好几个网站的API,很是不爽,所以写一个简单的小结在这里,仅供参考。
本文节译自 Shahin Farahani 所作的 ZigBee Wireless Networks and Transceivers(ISBN:978-0-7506-8393-7)第一章,原文版权归作者所有。译文版权归本人所有。本译文亦用作本人本科综合论文训练的文献翻译部分。