记录学习
后端技术38讲
专栏重要知识点。
一、程序如何运行和如何崩溃
1.如何运行
程序: 代码+算法
进程: 运行起来的程序
1.可执行代码
2.堆内存控件
3.栈内存控件
4.进程数据结构
在申请
堆空间
,会把内存首地址,记录到栈
同时运行多程序
1.运行 数目小于CPU数目
2.就绪 除CPU外,一切就绪
3.阻塞 例如:等I/O,等待锁
线程
为解决
进程
在CPU上切换,代价大。使用更小的单位
系统变慢、崩溃
多任务处理
操作系统将硬件分时(CPU)分片(内存)管理,虚拟化成一个独享资源,让JVM进程在其上运行
1 | 物理服务器 |
例: key=”abc” value=”hello”
1.计算key的HashCode
“abc”.hashcode = 101
2.计算HashCode对应的hash表索引
101 % 8 = 5
3.则5就是下标
1 | ## hash冲突 |
答案:
计算2个链表的长度,谁长,谁先往前走。
待长链表
未查看长度等于短链表
时,
两两元素比较,
如果相等,则合并,此元素为X元素。
如果比较完,没有相等,则没有合并。
# 三、Java虚拟机原理
> java是一门跨平台语言。
> 可以运行在Windows、Linux等。
> 可在运行在X86、ARM架构的CPU上。
> 因为有JVM(Java Virtual Machine)
## JVM的组成构造
# 四、网络编程原理
Tomcat: web容器管理网络通信
Dubbo : 分布式服务框架完成网络通信
## DNS
> IP协议: InternetProtocol
为方便编程,一般都用域名,DNS负责解析域名
## CDN
> 内容分发网络 Content Delivery Network
为提高访问速度,在运营商接入缓存服务器,缓存静态资源(图片、资源)
> 一般通过二级域名区分 例:image.taobao.com
## 应用层 HTTP
==应用层协议== 主要约定如何编码协议。
### 请求头
HTTP请求头里包含了信息:GET/POST/DELETE/PUT/HEAD/TRACE等、缓存控制Cache-Control、响应过期时间Expires、Cookie等
Post方法的还包含body部分,会在请求头里Content-Length里声明body长度。
![](Reading-后端技术38讲-李智慧/15750299309589.png)
### 响应头
包含各种参数:状态码status、
==200:成功==
==3XX:请求被重定向==
302: 被临时重定向到新的URL
==4XX: 客户端错误==
403:请求为授权,被禁止访问
404:请求页面不存在
==5XX:服务器异常==
500:请求为完成
502:请求处理超时
503:服务器过载
### 响应体
body:
浏览器: HTML
App: JSON
## 传输层 TCP
==传输层协议== 建立稳定通信连接。
为全球范围提供,所以统一应用层协议,使用==HTTP协议==
socket编程
## 网络层 IP协议
IP协议不可靠。所以需要TCP三次握手
头部添加IP地址
## 数据链路层
将数据封装:==数据帧== 以此为单位进行通信,此层定义帧的大小,称为==最大传输单元==
==帧头:== 发送者和接受者的mac地址,是网卡的设备标识符。唯一的
## 物理层
处理不同设备、光纤、电缆等信号
## OSI七层网络协议
应用层: 应用层/表示层/会话层
TCP/IP协议将OSI顶部三层合并为一个应用层。
HTTP协议就是TCP/IP协议中的应用层协议。
![](Reading-后端技术38讲-李智慧/15750304989573.png)
## 总结
每一层都添加一个头,不超过链路层最大传输单元的前提。
每层协议在上一层基础上,添加一个头,最后封装成一个==数据帧==
收到请求后,进行校验检查,准确后,删除头部信息。交给上一层协议处理。
## LB(负责均衡)
==Load balancing==
解决高并发问题
DNS解析出来的是LB的IP地址
淘宝的解决方案:Linux内核的链路层负载均衡,也叫(直接路由模式)
例:LB拿到数据包后,直接修改数据帧的mac地址,然后将数据重新发送给服务器集群所在的局域网。
这个数据帧就会被真实的服务器收到。
LB和真实的配置相同IP地址。所以响应的就直接发给App了,不经过LB。
# 七、面向对象编程