欢乐书客,码农何时才干翻身?看看这本书吧!,swag

搞清楚Socket

所谓IP 层,便是把数据分组从一台主机跨过千山万水转移到另一台主机,而且这转移服务都不牢靠,丢包、重复、失序常常发作。

脏活、累活只好让TCP 来做了,在两台主机的运用(进程)之间经过失利重传来完成牢靠性的传输。

Socket 指的是(IP, Port);

指令 -- 也需求在内存中才干被CPU 访问到,CPU 从内存中读取到指令今后,会进行剖析(译码),看看这条指令是干什么的,然后再进行运算。

那内存的数据又是从哪里来的?肯定是硬盘了,咱们写好的程序会放在硬盘上,在运转的时分才会被调入内存。

Java帝国

为了完成跨渠道,咱们在操作体系和运用程序之间,增加了一个笼统层:Java虚拟机。

用Java写的程序都运转在虚拟机上。

日志体系

到了第四代国王(JDK1.4),臣民们总算看到了帝国供给的java.util.logging包,也是用来记载日志的,而且其间的中心概念Logger, Formatter, Handler 和 Log4j十分类似,仅仅为时已晚, Log4j早已家喻户晓了, 不行撼动了。

logback 比log4j 还要快。

这笼统层就叫做Simple Logging Facade for Java,简称SLF4J。

关于Log4j , JDK logging, tinylog 等东西, 需求一个适配层, 把SLF4J 的API转化成详细东西的调用接口。

因为Logback这个东西也是出自小张之手, 直接完成了SLF4J的API,所以连适配层都不需求了, 用起来速度飞快,功率最高,SLFJ4+Logback 成为了很多人的独爱, 大有逾越Apache Common Logging + Log4j 之势。

面向切面编程AOP

切面类Aspect

切入点PointCut

在办法调用之前/之后,需求履行xxx,用另一个时尚的词来描绘,便是告诉Advice。

Web

HTTP的报文,被打包在TCP 报文段中,又被放到 IP 层数据报中,最终构成链路层的帧,经过网卡发出去。

数据库衔接Connection

关于每一个Connection,数据库那里需求拓荒不少缓冲区,用来读取表中的数据,进行join 操作、sort 操作等,既费时又吃力。

状况信息

用户的登录信息、购物车等都是状况信息。

  • 运用服务器能够把状况信息在集群的各台服务器之间仿制,让集群的各台服务器达到共同。
  • 运用session sticky 技能,确保同一个客户端的恳求,一向被转发到同一台server上。
  • 把session 保存到MYSQL中,选用集中式存储。
  • 把session 保存到 Redis 集群中。

数据库的读写别离

在一个分布式的环境中,坚持数据的强共同性是十分难的。

Master库 -- 可读可写;

Slave库 -- 只能读,不能写;

Master库的数据赶快仿制到 Slave 库,让数据坚持共同。

重构

  • 没有人敢重构咱们这些留传代码;
  • 原因是事务这么杂乱,重写怎么能考虑这么多细节,重写出来的代码Bug 会更多;
  • 慢慢地重构代码,让代码的质量朝着更好的方向开展;

分层的优点是阻隔改变

在接口不变的情况下,某一层的改变只局限于本层次内。

分而治之 -- 将一个规划比较大的问题,分解为多个规划比较小的子问题。