自学计算机的5年
今天无意打开了Github主页翻到了2015年9月的第一个commit,突然意识到我的“计算机”转行之旅就是在那段时间正式开始的。(那年,Github还没被微软收购呢)
赖的朋友直接看这里,如何自学计算机?
- 先学一门语言,啥基础没有就Python
- Github是最好的资源,学习、接受、贡献
- 经典书籍要读,练习要做,亲手编码
- CSAPP
- SICP
- CS3110
- 注重基础,练习要做,亲手编码
- 操作系统
- 数据结构
- 数据库
- 计算机网络
- 计算机语言原理(编译原理)
- 寻找自己的业务知识专精,围绕它展开计算机学习
- 在灵魂语言后,探索多种语言,注意是探索不是精通。
- Python
- C
- Ocaml/F#
- Clojure
- Haskell
- Erlang
- Go
- Rust
- Java (我真的爱不起来Java,太啰嗦了。。。。)
- C++ (我真的爱不起来C++,太复杂了。。。。)
- 无他,唯手熟尔
2015
重拾面向对象设计模式
Python的视角
转载请注明出处。
代码见:https://github.com/wangzhe3224/Python-zhifou/tree/master/src/todo/design_pattern
引言
面向对象设计模式就是一系列的组织类和对象的方法,这些方法的目的就是产生更加清晰,且容易拓展和
修改的代码。但是,如果我们翻开设计模式的教科书,我们会发现很多的名词,但是这其中很多的模式仅仅
是由于语言的限制所产生的的。因为有些语言缺乏函数一等公民或者属于静态类型等等。
尽管如此,学习设计模式仍然非常有用,只不过我们可能需要换一种角度重新审视这些设计模式,去思考
这些模式背后的原则:
- 面对接口编程,而不是面对实现
- 延迟执行,即不到不得不实例化的时候,选择延迟
树莓派搭建流计算集群
关于动态内存分配
关于动态内存分配
动态内存分配通常是指堆内存(Heap,不是数据结构背景下的堆结构)的动态分配和收回。
动态内存分配与程序的性能和内存使用情况息息相关。对于性能主要涉及两个方面:
分配和释放内存的性能,即吞吐;内存的局部性(与缓存相关),即缓存友好。
对于内存的利用率,主要是关于内存碎片的优化。
Mental Model (心智模型)
A mental model is an explanation of someone’s thought process
about how something works in the real world.
– wiki
在现代操作系统中,每一个进程都具有自己的独立虚拟内存空间。虚拟内存是一个抽象:
它隐藏了硬件存储系统的复杂度。存储系统包括:内存、硬盘、网络上其他计算机的存储系统。
进程对存储系统的操作就建立在这个抽象上:每个进程(同一个机器或者不同机器)看到的
内存地址空间都是一样的!
Bomb Lab
Bomb Lab 解析
Bomb Lab 实际就是通过反汇编和GDB对一个二进制文件行进分析,寻找每一个阶段需要输入的特定字符串。主要考察对汇编代码、栈帧、寄存器的熟悉程度以及使用GDB的能力。
环境设置
推荐大家使用docker构建一个环境方便省时:
1 | image = "zwang/csapp" |
高性能Python编程(2)Profiling寻找性能瓶颈
高性能Python编程(2)Profiling寻找性能瓶颈
相关源代码:https://github.com/wangzhe3224/high_performance_python
更多学习资源:微信搜索 泛程序员 并添加关注,点击资源按钮。
更多学习视频:微信视频号 Python知否
上一篇我们分析了计算机的三个组成部分,以及对应到Python程序的意义,这一篇我们从比较概括的角度介绍高性能编程的第一步:Profiling。(这个词我也不知道该怎么翻译,程序侧写?)
自学计算机书籍和课程推荐
系统化程序设计 - 函数式
10年自学编程
10年自学编程
Teach Yourself Programming in Ten Years
By Peter Norvig (真*大神,不认识的可以自行“Google”)
为什么大家都很心急?
如果你走进书店,你就会看到这样的书:Java自学一日通或者C、SQL、Ruby、算法自学三月通。如果去Amazon搜索title: teach, youself, hours, since: 2000,你会发现512本书。前10本书中,有9本是编程书籍,还有一个本是关于书籍管理的。如果把自学替换成学习,小时换成天,会得到类似的结果。
结论是:要么人们很急切的想要学习编程,要么学习编程比学习其他技能更加容易。《How to design programs》的作者们“认可”了这个说法,书中提到:“差劲的编程很简单,傻子都能在21天内学会编程,即使他们是傻子”。Abtruse Goose的搞笑漫画持类似观点