如果你想看懂任何代码

哈喽,我是子牙老师。今天咱们聊聊这个话题

你是不是想不通:

  1. 为什么有的人学一门技术那么快,你花了很长时间没学明白的技术,人家一下子就学会了
  2. 为什么有的技术,有的人都没听过,但是你问他,他能给你讲得清清楚楚、明明白白
  3. 为什么有的代码你看不懂,别人不用看就知道脉络
    ……

一切的答案,就在这张图里
在这里插入图片描述

我觉得一个程序员,学会这几个,就能畅行无阻:

  1. C语言,极其重要。在c++没有诞生之前开发的软件,存活至今的,都是用c语言写的,最典型的就是Linux内核。所以Linux环境编程、网络编程相关的API,都是c代码风格。基本上可以说,你不会C语言,底层你一点都玩不了!
  2. C++,挺重要的。今天的很多牛逼的软件是用C++写的,比如Java虚拟机hotspot。但是它没有c那么重要,因为c跟Linux紧密相连。比如Java虚拟机中的线程类OSThread,就是基于c代码风格的API封装出的对象类。你不了解c代码风格的线程API特性,你就无法吃透Java虚拟机的OSThread为什么要那么设计
  3. Linux环境编程、网络编程,极其重要。所有在Linux上运行的商业软件,都是依托这个实现的
  4. 汇编、机器码,重不重要看你做什么。如果你要写操作系统,看Linux内核源码,面向硬件写驱动,写编译器、写运行时,那就非常重要。另外,汇编,对于精通C语言,也非常非常重要。另外,如果你想玩逆向,比如病毒、破解、外挂,这两个也非常重要

对于逆向为什么重要,因为你只能拿到二进制文件,就是exe文件。通过OD进行反汇编,通过看反汇编推断代码逻辑,找你想要的数据基址、行为call

肿么样,你悟了吗?
在这里插入图片描述

分析下上面几个问题

一、为什么有的人学一门技术那么快,你花了很长时间没学明白的技术,人家一下子就学会了。其实这个是看他的内功。如果他掌握了这些,那他学以这些技术为地基的技术,自然是秒懂了
在这里插入图片描述

但是他学这些技术之下的技术,依然要从头来过,比如这些
在这里插入图片描述

这也是我为什么要自己写操作系统的原因,因为把这些玩明白了,再学上层的技术,都是秒懂
在这里插入图片描述

二、为什么有的技术,有的人都没听过,但是你问他,他能给你讲得清清楚楚、明明白白。这个就是触类旁通了。拿线程举例吧,不管是Java的线程机制,还是Python的,亦或是golang的,底层不都是Linux多线程那一套吗?张三童鞋没玩过go,人家Linux多线程玩明白了呀,那你问他,他可不给你讲得头头是道吗。不会学习的人,才会趴在知识的表面学习

三、为什么有的代码你看不懂,别人不用看就知道脉络。这个我想讲得有深度有趣一点。比如静态字符串,在其他语言中叫常量字符串,大家都知道它是只读的。如果有人能让只读的区域变得可读可写,是不是你想问什么他都可以给你讲?

你是不是想说:你就吹牛吧,只读是规范,是约定,谁能改?格局小了,我就可以改
在这里插入图片描述

如果你感兴趣,移步我为此专门写的一篇文章《谁说常量字符串不可修改》

带你精通汇编、C语言

如果你汇编、C语言还不会,或者觉得市面上相关的书、视频,千篇一律,看着没劲,可以看看我讲的,非常硬核,从实战角度告诉你如何精通,天花板级别教学(不信可以发给你身边的大牛评估下)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Linux编程

对于网络协议,我不知道大家是否跟我有同样的感觉:很抽象。什么OSI七层协议、tcp层、ip层、udp层、三次握手、四次挥手、流量窗口……什么鬼!受不了了,我就自己手写了一遍,理解马上丰满了。建议大家写一写。
在这里插入图片描述

劫持Linux数据包、自己解析数据包、自己构造数据包、自己发数据包、处理各种异常……想不透彻理解都做不到啊!

重复发明轮子,是最好的最高级的学习方式!没有之一!

今天就分享到这,下次见

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值