学习《码农翻身》之精进

学习《码农翻身》之精进

局部性原理

在一段时间内,整个程序的执行仅限于程序的某一部分,相应的,程序访问的存储空间也局限于某个内存区域。

  • 时间局部性:如果程序中的某条指令一旦执行,则不久后该指令可能被再次执行;如果某数据被访问,则不久后该数据可能再次被访问。
  • 空间局部性:一旦程序访问了某个存储单元,不久之后,其附近的存储单元也将被访问。

缓存(cache)

  • 根据局部性原理,操作系统会把经常用到的数据从硬盘取到内存中,CPU会把经常用到的数据从内存取到自己的缓存中。
  • 采用这种方法,等待的问题能得到极大的缓解。
  • Web开发中,由于数据库太慢,大部分Web系统会把最常用的业务数据放到内存中缓存起来,以此加快访问速度。

抽象

计算机系统层抽象
  • 指令集是对CPU的抽象
  • 文件是对输入/输出的抽象
  • 虚拟存储器是对程序存储的抽象
  • 进程是对一个正在运行的的程序的抽象
  • 虚拟机是对整个计算机(操作系统、处理器和程序)的抽象
应用层抽象
  • Model-View-Control
日志工具
  • Logger、Formatter、Appender

分层

网络协议分层
  • 应用层
    • 两个应用是如何交互的,如HTTP、SMTP、FTP
  • 传输层
    • 为应用程序建立连接,可靠地传递,如TCP
  • 网络层
    • 把一个分组从源主机移动到目标主机,跨越各个子网
  • 链路层
    • 将分组从一个节点移到下一个节点
  • 物理层
    • 传输介质:双绞线、同轴电缆、光纤

Web开发分层

  • 表示层
  • 业务逻辑层
  • 数据访问层
  • 数据库
分层的好处就是隔离变化,在接口不变的情况下,某一层的变化只局限于本层次内。

异步调用

  • 我不及了,先去做别的事情,你做完了告诉我一声
    • Node.js和Web服务器Nginx也是这样,一个或若干个线程处理所有的请求,遇到耗时操作,绝不等待,马上去做别的事情,等到耗时操作完成后,再来通知这些干活的线程。
    • AJAX,当浏览器中的JavaScript发出一个HTTP请求的时候,也不会等待从服务器端返回数据,只是设置一个回调函数,服务器响应数据返回的时候调用一下就行了。

分而治之

  • 将一个规模较大的问题分解为多个规模较小的子问题,这些子问题相互独立且与原问题性质相同,求出子问题的解,最后组合起来就可能得到原问题的解。
  • 由于子问题和原问题的性质相同,所以很多时候可以用递归。
  • 归并排序就是一个经典的例子。
  • 在软件设计领域,可以认为是把一个大问题逐步分解的过程。

写作:

  • 为什么要有这门技术,这门技术解决了什么问题,然后才是这门技术是怎么使用的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值