这是一篇旧文。
又到周五,公众号也许久未更新了,现在正好来写写,明天周末好好休息,这几天太累了。
此刻正在听喜马拉雅的《晚上十点》直播,直播地址http://liveroom.ximalaya.com/live/10320 我手机上装的 APP 不过 20 个左右,喜马拉雅是我比较喜欢的 APP,每天上班路上会听听。
这次五一回了趟家,火车上无聊看了本书《程序是怎样跑起来的》,从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,还是比较有趣的,原来代码的执行过程是这样的:
程序是指令和数据的组合,如c语言的printf(‘hello world’),printf 是执行,hello world 是数据。
cpu能识别和执行的语言只有机器语言,使用java,Python编写的语言,最后都会转换为机器语言。磁盘上写的程序被复制到内存才能运行,根据程序指令进行数据运算,并控制计算机的就是cpu。
数据是用二进制数表示的,因为集成电路上的电压只有两种状态,正好用0和1来表示,于是有了二进制,位,字节等。
计算机进行小数运算时出错,比如 for 循环 100 次累加 0.1 也得不到 10,这是因,0.1 不能完整用二进制来表示,就像 100 / 3 等于33.333333333…,无限循环个3,所以要避免出错有两个途径:
如果不在乎精度,可以进行截取;
循环 100 次加 1 然后除以 10 就可以了。
javascript 中console.log(0.1+0.2) 不等于0.3,而是 0.30000000000000004,也是基于浮点数不能完整用二进制来表示的缘故,而且大多数语言都是如此,有个网站 0.30000000000000004.com 可以看到。
平常处理支付牵涉钱,数据库一般用 decimal 来存,也可以参考微信支付用分来处理,1 块钱等于 100 分,这样就不用担心编程语言中浮点数精度问题而导致钱数对不上。
这本书还讲了许多,还没看完,不过还是有收获的。这是今年看的第一本书,想起来真是惭愧,互联网时代,真是难得静下心来好好看一本书了,所谓:买书一时爽,看书如抽丝。
这是家里的书,许多书还未翻看,再也找不回当年上大学时看 当年明月 的七部《明朝那些事儿》那种激情。
回家听我爸说老家的地和山都要被征完了,现在都建工业区了,以后可以再建大点的新房子,然后出租给附近工厂上班的,发展真是快啊。卖地的钱有几千万了,按人头来分,每人能分几万吧,钱是不多,不过好多人就开始急着结婚,生孩子了,人多分得多嘛,然后我爸来催我,哎,不说这个了,幸福冷暖自知。
这次又陪小朋友(外甥)看了会《喜洋洋》,每次回去小孩都喜欢看,这就是童年乐趣吧。
每篇文章推荐一个工具:视频下载工具 http://v.atob.site/ ,支持微博,秒拍,腾讯等,bilibili 的话推荐 http://www.jijidown.com 更全的有硕鼠 http://www.flvcd.com/