Blog
Blog copied to clipboard
那些该死的文字呦
读CS书籍的反思
### 之前读书的方式 在阅读为数不多的计算机类书籍时,我总是想方设法的套用《如何阅读一本书》中的方法,先看封面目录前言,然后针对每一个章节细啃。往往一本中等厚度的书,我可以翻来覆去看上好几个月。一来是因为自己懒,看书频率低,二来是因为在每次看书之前想不起来之前说了什么,害怕无法接受接下来的知识,又会回过头去翻一翻前面的内容。好不容易整本书看完了,又感觉看完之后感觉不扎实,脑子有点空,害怕睡一觉就会全部忘记,就后悔没记笔记,好像浪费了阅读的时间。等开始看第二遍准备记笔记的时候,又炸毛了:唉这点我上次看怎么一点印象都没有,唉这里有个大坑我要把这一大段话全部记下来别以后往坑里跳了,唉这章内容我现在根本用不上要不要记啊...?就这样又纠结又费力的过了几个月,终于自我感觉稳妥了,可以把书扔了以后靠笔记过活,然后笔记一存档,再也没回顾过。坑依然踩,踩了坑就google,顺手又把别人的解决方案机械化的记录一下,看起来是又学习到了新东西。 ### 这种方式的弊端所在 总结一下上面出现的问题。 1. 完美主义,总是希望把书中的内容一点不落的掌握,为了一点边缘知识花费更多的时间,没有考虑到边际效益问题(不分轻重的精读所有内容) 2. 学习焦虑,学习效率低下,没有记住自己看过的内容就感觉在浪费时间(看完后脑子空) 3. 害怕遗忘知识,希望能一次性看完书记完笔记就完全掌握(看完一本书害怕遗忘特意看第二遍重新记笔记) 4. 笔记记录的方法错误,不知道要在笔记里记录哪些内容 5. 缺乏回顾,导致花费大量时间的笔记毫无用处 6. 对问题解决方式知其然不知其所以然,只记录操作过程而没有解剖问题产生的原因和解决思路 7. 最重要的,计算机类书籍偏应用,看完书记完笔记不写代码是完全不够的,没有即使的练手项目 列了这么多,其实几个字就能完全概括:**缺乏主动阅读**,这是《如何阅读一本书》中一再强调的方法,我却从来没有应用到自己身上。 哈佛公开课《幸福课》中对积极心理学也提到了类似的问题:概念,或者说解决方法,简而概之就是如此,道理大家都懂,但是真正能应用到自己的生活中去的人,却寥寥无几。 实践,实践,实践。 ### 新的读书方式 是的,我需要重新安排自己的学习方式了。当然我不会按照分析阅读的方式去阅读技术书籍,一来章节太多问题太多规则也太多,没有精力,二来计算机类的书籍如果不写代码等于荒废一半。 对于不需要详读的书,我会利用思维导图梳理书中的内容结构,加上自己阅读时出现的疑点和答案,记录下来,作为读书笔记回顾。 对于需要详读的书,我会利用问题来引导阅读,详细解答自己的问题并记录。减少技术上的细枝末节,简要记录流程、原理,不记录操作、命令、基础代码。 ##### 对整本书...
# 一、体系结构  # 二、物理层 跳过 # 三、链路层 ## 3.1 三个基本问题 ### 封装成帧 将`网络层`的IP数据包拆分,加上**帧首部**和**帧尾部**封装成帧后,再发送出去,一般使用**控制字符**来表示*帧定界符*:  ### 透明传输 `链路层`应该对`网络层`透明,即`网络层`不管给什么数据,`链路层`都是可以发送过去的。但是有这样的情况:`网络层`给的数据中,也包含了跟*帧定界符*一样的字符,该怎么判定这个字符是*要传输的数据*,还是*帧定界符*呢? 下图中出现帧判定错误:  答案是**使用转义字符**,通过**字节填充**的方式,转义掉数据中的控制字符。如果数据中也包括转义字符,则再在前面加一个转义字符:  ### 差错校验: `链路层`在传输数据时,可能会出现两种错误: 1. **传输差错**:在一批数据中会传输多个帧,出现*帧丢失*、*重复*或*顺序错误*等情况 2. **比特差错**:一个帧中的某个比特数据出错,`0`变`1`,`1`变`0` ####...
# 《如何阅读一本书》笔记 Tags: 印象笔记 [toc] ----- ## 1. 阅读的目标 + 为获得资讯 + 增进理解力 ## 2. 阅读的自我要求 ### 2.1 带着问题去阅读 + 四个基本问题: + 整体来说,这本书到底在谈什么? + 作者细部说了什么,怎么说的? + 这本书说得有道理吗?是全部不道理,还是部分有道理? + 这本书跟你有什么关系? +...
# 深入Dockerfile(一): 语法指南 Tags: 印象笔记 Docker docker官方文档[Dockerfile reference](https://docs.docker.com/engine/reference/builder/)的笔记。 [toc] ----- ## 一、机制 ### 1.1 构建 docker构建一个镜像,需要: 1. Dockerfile文件 2. 构建所需的上下文 ```shell $ docker build . ``` 这条命令中,*docker CLI*会: 1. 把当前目录及子目录当做上下文传递给docker服务...
# 在Centos7上部署kubernetes集群 Tags: 印象笔记 [toc] ----- ## 0. 准备工作 + 安装工作需要从google下载docker镜像,所以需要代理或者能够正常访问google的网络环境,参考之前的[《shadowsocks + privoxy代理配置》](https://github.com/qianlei90/Blog/issues/27)。 + 关闭SELinux,kubernetes暂时无法解决SELinux的问题。 + 关闭防火墙和iptables。 ## 1. 配置yum源 docker的yum源: ```shell $ cat > /etc/systemd/system/docker.service.d/http-proxy.conf systemctl daemon-reload # 检查输出...
# shadowsocks + privoxy 代理配置 Tags: 印象笔记 [TOC] ----- 如果apt、yum、brew中有已编译好的,可以直接用。 自用系统是Centos7,只启用了163的源,所以都需要自己编译安装。 ## 1. 准备工作与说明 shadowsocks与privoxy都安装到/opt,为了卸载方便我也保留了源码目录。 ```shell mkdir /opt/shadowsocks-libev mkdir /opt/privoxy ``` ## 2. 安装shadowsocks ```shell yum install gcc autoconf libtool...
# Kubernetes问题集锦 ----- ## 1. Pod无法通过service访问自己的端口 Pod无法通过Service访问自己的端口,但是其他Pod可以通过该Service访问到该Pod的端口 **解决方法**: ```bash ip link set docker0 promisc on ``` **参考**: [github issue](https://github.com/kubernetes/kubernetes/issues/20475#issuecomment-190995739) \- 完 \-
# Docker问题集锦 Tags: 印象笔记 Docker [toc] ----- ## 1. 设置Docker Machine的启动命令 Docker Machine启动后会执行`/var/lib/boot2docker/bootlocal.sh`文件中的命令。 ### 1.1 自动挂载目录 1. 配置docker machine虚拟机,挂在工作目录/work 2. 编辑docker machine中的`/var/lib/boot2docker/bootlocal.sh`文件,内容如下: ```shell mkdir -p /work mount -t vboxsf -o...
# 深入docker存储(二):选择存储驱动 Tags: Docker 印象笔记 docker官方文档[Select a storage driver](https://docs.docker.com/engine/userguide/storagedriver/selectadriver/)的笔记。 [toc] ## 1. 可插拔的存储驱动架构 docker的存储驱动是基于Linux的文件系统的,在此之上,每一种存储驱动都有一套自己的管理镜像图层和容器图层的实现。可以用`docker info`来查看当前所使用的存储驱动。 ```shell $ docker info Containers: 0 Images: 0 Storage Driver: overlay Backing Filesystem: extfs Execution...
# Vim实用小技巧 Tags: 印象笔记 Linux [toc] ----- ## 1. 保存只读文件 `:w !sudo tee%` + `w`:vim中的保存 + `!sudo`:执行外部命令`sudo` + `tee`:从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件 + `%`:在vim中表示当前文件的文件名 ## 2. 插入shell命令的输出结果 `:r ! date` + `r`:`read`的缩写,读取文件或者命令的输出 +...