安全相关的开发工作不可避免的会碰到“数字签名”,“数字证书”等概念,无论是数字签名还是数字证书都跟openssl这个超级厉害开源软件有着千丝万缕的联系。笔者在研究安全启动的过程成中被数字证书这套技术折腾得焦头烂额,本文打算从非对称加密算法说起,分析数字签名、数字证书的来龙去脉,同时会介绍一些Openssl关于证书管理等方面的命令。Read More »

Learn Algorithm

Data Structures and Algorithms (DSA for short) is an implementation based course. Many companies stress heavily on concepts from this course in their interviews. In order to master this course, you need to be strong with both the theory and implementation of various Data Structures and Algorithms.

  1. Read. You should start reading Introduction to Algorithms by Cormen et. all. This book is said to be the best for DSA but it can become a bit difficult to read it while working with your course load. You can instead use this as a reference book supplementing your recommended course book.
  2. Implement the Data Structures you read about. While reading about them might give you a fair idea of they work, it is different from actual implementation where you will need to take care of boundary cases. There will be cases where you forget null checks and mess up your entire code.
  3. Understand complexity. You need to be able to calculate the space complexity of various data structures, the time complexity of their operations and the time and space complexities of various algorithms. You should be able to judge which algorithm works better under various conditions.
  4. Practice. Solve problems from various online judges like codechef, hackerrank, topcoder and spoj. This will help you choose the optimal data structure or algo for a particular problem. You can even search for problems specific to the data structure or algo you want but where’s the fun in that?

Read More »