《码出高效》读书笔记

第一章

第一章主要是讲了一些计算机的基础知识,发现很多书都是这样,比如说《深入理解操作系统》。可能是因为基础确实重要,或者是作为一个热身。通过学习,我们基本可以解答以下问题:

  • 位移运算可以快速地实现乘除运算 那位移时要注意什么?
  • 浮点数的存储与计算为什么总会产生微小的误差?
  • 乱码产生的根源是什么?
  • 执行时C PU 是如何与内存配合完成程序使命的?
  • ·网络连接资源耗尽的 本质是 么?
  • 黑客攻击的通常套路是什么?如何有效地防止?

计算机是0与1的组合

  1. 计算机就是晶体管、电路板组装起来的电子设备,计算机的一切,包括代码、图像或者是视频,最后都要以0,1形成的二进制的形式存储。
  2. 一个bit就是一位,1B=8bit,1KB = 210Byte,1MB=210KB,1GB=2^10MB
  3. 位移可以用来高效计算乘除,左移相当于*2,右移相当于/2,右移有无符号右移和有符号右移。有符号右移时,高位移位是1,如-35的补码110 11101,>>右移一位之后就是11101110(-18),而无符号右移得到的是01101110也就是110。
  4. 浮点数的标准就是IEEE754,就是将小数转化为科学计数法,比如23.555,表示为2.3555e1。如果是单精度浮点数,那么用第0位存储符号位,1-8存储指数,后面的23位存储有效小数。当然这里都要将10进制转为二进制存储,计算机只能存储二进制!!!所以十进制转换为二进制就是出现不准确的情况,不是所有的十进制小数转化为二进制都是刚刚好的,当转化之时出现了无限循环小数,那么精度九不准了,所以用1.0减去0.9得到的不是意料之中的0.1。所以如果要精确计算,不能用浮点数,可以用整形分别存储小数和整数,比如说涉及到钱,在数据库中用decimal
  5. 字符集与乱码主要是讲解了各个编码方式的形成,在计算机应用中统一编码才可以防止乱码的出现。
  6. CPU和内存之间的矛盾主要来源于速度的冲突,CPU速度已经很快了,但是却被内存所拖累,所以需要使用不同类型的缓存来解决他们之间的差异。
  7. 三次握手的作用主要是信息对等和防止超时;四次挥手主要是为了保证服务端能够正常断开连接以及防止失效请求。


    image.png

    TIME WAIT过长可能导致资源的浪费,无法释放句柄资源,可以通过telsysctl. conf修改其大小

  8. 数据库优化
  • 建主高效且合适的索引。
  • 排查连接资源未显式关闭的情形。
  • 合并短的请求。
  • 合理拆分多个表 join SQL 超过三个表则禁止 join
  • 使用临时表。
  • 应用层优化。
  • 改用其他数据库。

第二章

这一章讲了Java面向对象的知识,封装、继承、多态,一些很杂的知识。

第三章

完全在讲一些编程规范,这种编程规范一般到了公司都会学习的。

你可能感兴趣的:(《码出高效》读书笔记)