FunCoder

FunCoder

今天无意打开了Github主页翻到了2015年9月的第一个commit,突然意识到我的“计算机”转行之旅就是在那段时间正式开始的。(那年,Github还没被微软收购呢)

赖的朋友直接看这里,如何自学计算机?

  • 先学一门语言,啥基础没有就Python
  • Github是最好的资源,学习、接受、贡献
  • 经典书籍要读,练习要做,亲手编码
    • CSAPP
    • SICP
    • CS3110
  • 注重基础,练习要做,亲手编码
    • 操作系统
    • 数据结构
    • 数据库
    • 计算机网络
    • 计算机语言原理(编译原理)
  • 寻找自己的业务知识专精,围绕它展开计算机学习
  • 在灵魂语言后,探索多种语言,注意是探索不是精通。
    • Python
    • C
    • Ocaml/F#
    • Clojure
    • Haskell
    • Erlang
    • Go
    • Rust
    • Java (我真的爱不起来Java,太啰嗦了。。。。)
    • C++ (我真的爱不起来C++,太复杂了。。。。)
  • 无他,唯手熟尔

2015

2015年的Github主页

Read more »

Python的视角
转载请注明出处。
代码见:https://github.com/wangzhe3224/Python-zhifou/tree/master/src/todo/design_pattern

引言

面向对象设计模式就是一系列的组织类和对象的方法,这些方法的目的就是产生更加清晰,且容易拓展和
修改的代码。但是,如果我们翻开设计模式的教科书,我们会发现很多的名词,但是这其中很多的模式仅仅
是由于语言的限制所产生的的。因为有些语言缺乏函数一等公民或者属于静态类型等等。

尽管如此,学习设计模式仍然非常有用,只不过我们可能需要换一种角度重新审视这些设计模式,去思考
这些模式背后的原则:

  • 面对接口编程,而不是面对实现
  • 延迟执行,即不到不得不实例化的时候,选择延迟
Read more »

树莓派搭建流计算集群

生活扇了我一巴掌,我能怎么办?擦擦脸,接着与生活同行。:-1

无名 2021

本篇介绍如何利用(闲置的)树莓派搭设流处理集群。

原材料:树莓派若干。(我有两个ARMv7的树莓派4)

主要用到的技术和软件:

Read more »

关于动态内存分配

动态内存分配通常是指堆内存(Heap,不是数据结构背景下的堆结构)的动态分配和收回。
动态内存分配与程序的性能和内存使用情况息息相关。对于性能主要涉及两个方面:
分配和释放内存的性能,即吞吐;内存的局部性(与缓存相关),即缓存友好。
对于内存的利用率,主要是关于内存碎片的优化。

Mental Model (心智模型)

A mental model is an explanation of someone’s thought process
about how something works in the real world.
– wiki

在现代操作系统中,每一个进程都具有自己的独立虚拟内存空间。虚拟内存是一个抽象:
它隐藏了硬件存储系统的复杂度。存储系统包括:内存、硬盘、网络上其他计算机的存储系统。
进程对存储系统的操作就建立在这个抽象上:每个进程(同一个机器或者不同机器)看到的
内存地址空间都是一样的!

Read more »

Bomb Lab 解析

Bomb Lab 实际就是通过反汇编和GDB对一个二进制文件行进分析,寻找每一个阶段需要输入的特定字符串。主要考察对汇编代码、栈帧、寄存器的熟悉程度以及使用GDB的能力。

环境设置

推荐大家使用docker构建一个环境方便省时:

1
2
3
4
5
6
7
8
9
10
image = "zwang/csapp"
path="/xxx/xxx" # 这里修改成你自己的lab目录

if ! docker container rm csapp_env; then
echo "remove old container."
else
echo "no old container exist. Create a new one"
fi

docker container run -it -v ${path}:/projects -p 8080:8080 --name=csapp_env --net host wangzhe3224/csapp /bin/bash
Read more »

高性能Python编程(2)Profiling寻找性能瓶颈

相关源代码:https://github.com/wangzhe3224/high_performance_python
更多学习资源:微信搜索 泛程序员 并添加关注,点击资源按钮。
更多学习视频:微信视频号 Python知否

上一篇我们分析了计算机的三个组成部分,以及对应到Python程序的意义,这一篇我们从比较概括的角度介绍高性能编程的第一步:Profiling。(这个词我也不知道该怎么翻译,程序侧写?)

Read more »

转行程序员的精雕细选、诚心推荐。

文末付下载链接和课程链接。

自学计算机书籍和课程推荐

⚠️ 切记不要只读书、看视频,不动手做练习、写程序。

⚠️ 切记不要求速度,不做练习、不写程序

这些课程和书籍是我食用后觉得良心且有帮助的资源,他们不仅仅可以帮助你学习计算机科学,也会帮助你领略一点点计算机的优雅和美丽。这些主题可能听起来没有大数据、云计算那么华丽,但却道出了真正理解这些技术的真正要素。计算机科学太年轻了(不到100年历史),学习技术的收益远没有学习基础高

计算机基础

Read more »

系统化程序设计 - 函数式

  1. 从问题分析到数据定义
  2. 签名、目的和头文件
  3. 函数例子
  4. 函数模板
  5. 函数定义
  6. 测试

从问题分析到数据定义

确定哪些信息需要表达,明确在某个计算机语言中如何表达。确定数据结构后,写出实例。

签名、目的和头文件

Read more »

10年自学编程

Teach Yourself Programming in Ten Years

By Peter Norvig (真*大神,不认识的可以自行“Google”)

原文链接:http://norvig.com/21-days.html

为什么大家都很心急?

如果你走进书店,你就会看到这样的书:Java自学一日通或者C、SQL、Ruby、算法自学三月通。如果去Amazon搜索title: teach, youself, hours, since: 2000,你会发现512本书。前10本书中,有9本是编程书籍,还有一个本是关于书籍管理的。如果把自学替换成学习,小时换成天,会得到类似的结果。

结论是:要么人们很急切的想要学习编程,要么学习编程比学习其他技能更加容易。《How to design programs》的作者们“认可”了这个说法,书中提到:“差劲的编程很简单,傻子都能在21天内学会编程,即使他们是傻子”。Abtruse Goose的搞笑漫画持类似观点

Read more »
0%