《程序员的自我修养》

  首先来大致说一下读这本书的感觉,可以说对于我自己而言,是第一次对于编程有了个纯粹的认识,或者说的更明确一点,是对整个操作系统有了一个大致的感觉。虽然自己这一年也算是写了一些代码,你让我去写个什么小程序也没什么问题,debug也算是用的熟练。但是,每次如果让我换一台新的电脑去编程,心里真的是发怵。一旦什么编译环境,编码之类的出了问题,整个人就可怜又无助了。究其原因,是对于编程一事仅仅掌握了最表层的东西,也就是说,所有都编程都是在照葫芦画瓢而已。而这本书算是解决了一些我在这方面的迷惑。

  操作系统的重要性

  实际上,这学期的另外两门课在这方面给予我了很明显的感受。一个是微机原理,另一个是电设实践。这两门课都有编程,一是最简单的汇编语言,另一个虽然是我熟悉的c语言,但是对于单片机的功能使用方面,尤其是有关中断的,也让我花费了大量的是时间去了解。

  在用惯了高级语言以后,再一次的返回来去写这些最底层的语言,真的是让我倍感难受。尤其是在汇编的编程中,频繁的从存储器和寄存器中存取数据,让人不胜其扰。同时开始无限怀念高级语言,只要设定一个变量,就啥都不用我管了hhh

  而在电设里面,单片机的代码编写让我第一次对于优先级有了一个较为明确的概念,虽然只是一个简单的中断优先级,但根据实际功能的实现,却要谨慎再谨慎的去设定。

  同样,这两方面,一是内存的管理,一是优先级的管理,都被操作系统一个人给解决了。这里插一句题外话,就是曾听说过 linux 系统的源码就是用c写了1w多行,虽然一直没有去读过,但这种操作真的是惊为天人。实际上的实现,采用了线程的方式,就我个人简单的理解,cpu的确每一时间只能解决一件事情,但如果以一个较快的频率去在几件事情之间切换执行,从外部看起来呢,就和同时执行好几件事无异了。如同书中所说“并发实际上是一种模拟出来的情形”

  紧接着,书中提出了一个经典的例子:

  直观来说,执行结束后的 i 毫无疑问是0。但是,计算机在执行这些指令的时候,并不像我们看起来这么直观,因为一切的运算,都要在寄存器里执行,而不能在存储器里面,毕竟他没这个功能。那么,如果两个线程都被巧妙地割裂开来,就会导致问题的出现。

  实际的处理中,很容易想到,就是先强迫线程1中的++i完成,再去执行--i,也就是说,i是一个不可分割的线程,被定义为原子操作。

读书笔记 Week7 2018-4-24的更多相关文章

  1. 读书笔记 Week7 2018-4-19

    <构建之法> 第十二章 用户体验 读书笔记 首先不得不说,现如今大部分的电脑使用者,都被微软的图形化界面把口味养刁了.当然,包括我自己.无论是在微机原理上级的时候使用那些带着浓郁的上世纪八 ...

  2. Python基础教程【读书笔记】 - 2016/7/24

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第九波:第9章  魔法方法.属性和迭代器  在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.已 ...

  3. 读书笔记 effective c++ Item 24 如果函数的所有参数都需要类型转换,将其声明成非成员函数

    1. 将需要隐式类型转换的函数声明为成员函数会出现问题 使类支持隐式转换是一个坏的想法.当然也有例外的情况,最常见的一个例子就是数值类型.举个例子,如果你设计一个表示有理数的类,允许从整型到有理数的隐 ...

  4. 读书笔记-《Maven实战》-关于Maven依赖传递的思考 2018/4/26

    上次读书笔记中,提到了依赖传递.看着依赖传递表,一直在思考为什么会是这样. 先看传递表: compile test provided runtime compile test provided run ...

  5. 【2018.08.13 C与C++基础】C++语言的设计与演化读书笔记

    先占坑 老实说看这本书的时候,有很多地方都很迷糊,但却说不清楚问题到底在哪里,只能和Effective C++联系起来,更深层次的东西就想不到了. 链接: https://blog.csdn.net/ ...

  6. TJI读书笔记17-字符串

    TJI读书笔记17-字符串 不可变的String 重载”+”和StringBuilder toString()方法的一个坑 String上的操作 格式化输出 Formatter类 字符串操作可能是计算 ...

  7. 读书笔记--Android Gradle权威指南(上)

    本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 最近看了一本书<Android Gradle 权威指南>,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所 ...

  8. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  9. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

随机推荐

  1. Appium 定位方法例子(4)

    有朋友留言反应定位不到元素,没错,船长也为这个一直在头疼,我用的App是原生安卓+webService+h5类型的,定位虽然没问题,但是在进行操作的时候各种不通过……真的很头疼啊……我这里说的“操作” ...

  2. Appium + Python App自动化(2)第一个脚本

    [1]打开你的夜神模拟器(或者连接你的手机) [2]打开桌面的Appium [3]下载你要测的App的apk文件,放到桌面 [4]拖动你的apk安装包到夜神模拟器里,然后模拟器会提示你安装.安装.原来 ...

  3. LeetCode 973. K Closest Points to Origin

    原题链接在这里:https://leetcode.com/problems/k-closest-points-to-origin/ 题目: We have a list of points on th ...

  4. 【DUBBO】dubbo架构详解(转载)

    转载地址:http://shiyanjun.cn/archives/325.html Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解 ...

  5. 【spring源码学习】spring集成orm数据框架

    [一]简易的数据源配置 (1)配置文件 <!--springJdbcTemplemate数据操作配置信息 --> <bean id="driver" class= ...

  6. BZOJ3590 [Snoi2013]Quare

    题意 4.20四川芦山地震发生后,抗震救灾委员会接到一个紧急任务,四川省给该委员会发了一份地图,这份地图给出了该省一些城市的情况:任两个城市是用一条或多条公路连接起来的,也可以没有公路连接,但是每个城 ...

  7. Jacoco在eclipse上的集成使用

    随着敏捷开发的流行,编写单元测试已经成为业界共识.但如何来衡量单元测试的质量呢?有些管理者片面追求单元测试的数量,导致底下的开发人员投机取巧,编写出大量的重复测试,数量上去了,质量却依然原地踏步.相比 ...

  8. 【备忘录】yii2高级模板多个应用启用同一个域名多个栏目

    nginx部署方式,两种写法,本人认为第一种写法没有第二种写法优雅 第一种写法配置文件: server { listen ; server_name youban-dev.jqtest.mopon.c ...

  9. Protobuff java 文件生成命令

    protoc.exe -I./proto文件目录 --java_out=java文件目录 proto文件基于文件目录的全路径 protoc.exe -I./protoFolder --java_out ...

  10. JavaScript Promise启示录--(转)

    本博文转至:http://www.csdn.net/article/2014-05-28/2819979-JavaScript-Promise [编者按]JavaScript是一种基于对象和事件驱动并 ...