新年快乐

新年快乐

还剩几个小时,2017年就要到来了。16年的工作和学习状态不是很满意。新的一年要再接再厉。

  • 原文地址
  • 原文作者: Breaker

这是?

这是我为了从一个网络安全开发者蜕变为资深网络安全(精通计算机网络、linux网络编程、linux内核)开发者的计划,其计划历时数月。

我的目标是找到一种相对比较高效的学习方法。在平时的工作和学习中,每天都要面对大量的需要学习知识和技能。如果纯粹只是为了当时解决工作中遇到的某个问题,而不重视知识的积累,这样造成的结果就是今天查到的东西在未来某一天需要用到的时候还要在查一遍。纯粹是浪费时间。

目录

[TOC]

为何用到它

为了我以后的工作和目标而遵守这份计划。2015年7月以来,我一直从事入侵防御系统系统引擎的开发工作。通过一年多的工作,已经大致掌握了网络安全工作原理。在工作中明显感觉到知识匮乏,这是工作效率不能令我满意的原因。仔细思考了下,在新的一年里需要学习的内容有三方面:计算机网络、 linux网络编程以及linux内核。所以需要一次系统的知识升级。

如何使用它

下面的东西都只是一个概述。因此,你需要自上而下的逐一的处理它。
在学习过程中,用TO DO LIST标记和检查学习进度。

Follow me

我是一个对网络安全很高兴趣的软件工程师,目前就职与NSFOCUS。
为了达到我的目标,每天完成艰辛的工作后,平均学习三小时。
我已经在梦想实现的途中了。
Github: @Breaker
Coding: @Breaker

别认为自己不够聪明

虽然已经下定决心,但是辛苦的工作了一天之后我担心自己是否由能承受高负荷的学习。

加强运动,劳逸结合。

看到砖头厚的书感到力不从心.

想想掌握这么多知识后的喜悦。

关于视频资源

网络上有很多视频资源可以学习,推荐看书疲倦了可以看看视频。

在你开始之前

该列表已经持续更新了很长的一段时间,所以,我们的确很容易会对其失去控制。
这里列出了一些我所犯过的错误,希望您不要重滔覆辙。

0. 保持兴趣

最重要的写在最前面,保持兴趣是最大的动力。所以不要枯燥的看书,可以列出一些很有意思的项目来实现。比如说学习linux编程可以写一个服务器出来。就想我之前学习操作系统写了一个小型操作系统OS One 一样。

1. 你不可能把所有的东西都记住

就算我查看了数小时的视频,并记录了大量的笔记。几个月后的我,仍然会忘却其中大部分的东西。所以,我翻阅了我的笔记,并将可回顾的东西记成笔记,印象笔记博客或者github仓库

2. 记笔记

我习惯使用makedown记笔记,这在开发者中已经非常普遍了。将写完的笔记保存到印象笔记、个人博客或者github仓库中。印象笔记不支持markdown,可以用马克飞象编辑,编辑完后上传到印象笔记,很方便。最主要的是马克飞象的界面很友好,我已经买了一年的马克飞象。相对与博客来说,印象笔记比较私密。普通的github账户和博客差不多,都是完全开放的。但是我的github账户是高级账户,可以创建私有仓库。可以很好的利用这一点。

3.重复、重复再重复

在手机上很方便的看之前的笔记和文章,可以很好的利用空余时间复习。
每编程半个小时就要休息一下,并很轻松的去回顾你的笔记。

4. 专注

在学习的过程中,往往会有许多令人分心的事占据着我们宝贵的时间。因此,专注和集中注意力是非常困难的。

5. 技巧

  • 第一遍学习不要陷入细节,抓住主要知识点,记录笔记
  • 第二遍回看的时候详细思考,不能只记住结果,要思考原因
  • 利用空余时间重复进行第三遍第四遍第五遍学习

日常计划

部分问题可能会花费一天的时间去学习,而部分则会花费多天。当然,有些学习并不需要我们懂得如何实现。
因此,每一天我都会在下面所列出的列表中选择一项,并查看相关的视频。然后,使用以下的一种语言去实现:

C —— 使用结构体和函数,该函数会接受一个结构体指针 * 及其他数据作为参数。
C++ —— 不使用内建的数据类型。
C++ —— 使用内建的数据类型,如使用 STL 的 std::list 来作为链表。
Python —— 使用内建的数据类型(为了持续练习 Python),并编写一些测试去保证自己代码的正确性。有时,只需要使用断言函数 assert() 即可。
此外,你也可以使用 Java 或其他语言。以上只是我的个人偏好而已。

为何要在这些语言上分别实现一次?

因为可以练习,练习,练习,直至我厌倦它,并完美地实现出来。(若有部分边缘条件没想到时,我会用书写的形式记录下来并去记忆)
因为可以在纯原生的条件下工作(不需垃圾回收机制的帮助下,分配/释放内存(除了 Python))
因为可以利用上内建的数据类型,以使得我拥有在现实中使用内建工具的经验(在生产环境中,我不会去实现自己的链表)

就算我没有时间去每一项都这么做,但我也会尽我所能的。

在这里,你可以查看到我的代码:

  • C
  • C++
  • python

你不需要记住每一个算法的内部原理。
在一个白板上写代码,而不要直接在计算机上编写。在测试完部分简单的输入后,到计算机上再测试一遍。

必备知识

计划总共分为三大部分,这些内容直接可以同时进行,不需要掌握前面的知识后再学习后面的。这样才能学的更快。

第一部分 计算机网络

第二部分 linux内核

第三部分 linux网络编程

  • [ ] 项目: 写一个稳定的服务器。

书籍

三大块知识都有相应的权威著作,前两本的作者是一个人w.richard stevens,linux内核的书暂时没有定

其他有意思的知识

纯粹是为了玩,没啥目的。都是大家晚盛夏的。

机器学习

可以试着做出12306验证码识别

大数据

爬一些数据,然后自己分析。