Skip to content

Commit 6839d71

Browse files
committed
add OperatingSystem
1 parent 53cb30b commit 6839d71

File tree

10 files changed

+1300
-0
lines changed

10 files changed

+1300
-0
lines changed

Architect/1.架构简介.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
1.系统架构
2+
===
3+
4+
### 架构三要素
5+
6+
#### 构件
7+
8+
构件在软件领域是指可复用的模块,它可以是被封装的对象类、类树、一些功能模块、软件框架(framework)、软件架构(或体系结构Architectural)、文档、分析件、设计模式(Pattern)。但是,操作集合、过程、函数即使可以复用也不能成为一个构件。
9+
10+
##### 构件的属性:
11+
1. 有用性(Usefulness):构件必须提供有用的功能。
12+
2. 可用性(Usability):构件必须易于理解和使用,可以正常运行。
13+
3. 质量(Quality):构件及其变形必须能正确工作,质量好坏与可用性相互补充。
14+
4. 适应性(Adaptability):构件应该易于通过参数化等方式再不同环境中进行配置,比较高端一点的复用性,接收外界各种入参,产生不同的结果,健壮性比较高。
15+
5. 可移植性(Portability):构件应能在不同的硬件运行平台和软件环境中工作,可移植性比较好,跨平台。
16+
17+
18+
#### 模式(Pattern)
19+
20+
其实就是解决某一类问题的方法论,是生产经验和生活经验中经过抽象和升华提炼出来的核心知识体系。 模式就是一个完整的流程闭环,能够解决一些问题的通用方法(比如资本运作、玩家不同的需求等),软件中的模式大多源于生活,是人类智慧的结晶。
21+
22+
#### 规划
23+
24+
规划是系统架构中最重要的组成部分,是个人或者组织制定的比较全民长远的发展计划,是对未来整体性、长期性、基本性问题的思考和考量。设计未来整套行动的方案。很早就有规划这个概念了,例如:国家的十一五规划等。当然软件开发也和生活紧密联系,一个大型的系统也需要良好的规划,规划可以说是基石,是系统架构的前提。
25+
26+
27+
系统架构虽然是软件系统的结构,行为,属性的高级抽象,但其根本就是在需求分析的基础行为下,制定技术框架,对需求的技术实现。
28+
29+
30+
31+
32+
33+
---
34+
- 邮箱 :charon.chui@gmail.com
35+
- Good Luck!
36+
37+

JavaKnowledge/Http与Https的区别.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,14 @@ HTTP与HTTPS的区别
99

1010
- 1997年发布HTTP/1.1: 持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码。
1111

12+
长连接是指的TCP连接,也就是说复用的是TCP连接。即长连接情况下,多个HTTP请求可以复用同一个TCP连接,这就节省了很多TCP连接建立和断开的消耗。
13+
14+
此外,长连接并不是永久连接的。如果一段时间内(具体的时间长短,是可以在header当中进行设置的,也就是所谓的超时时间),这个连接没有HTTP请求发出的话,那么这个长连接就会被断掉。
15+
1216
- 2015年发布HTTP/2:多路复用、服务器推送、头信息压缩、二进制协议等。
1317

18+
19+
1420
![](https://raw.githubusercontent.com/CharonChui/Pictures/master/http1.1vs2.jpg)
1521

1622
多路复用:通过单一的HTTP/2连接请求发起多重的请求-响应消息,多个请求stream共享一个TCP连接,实现多留并行而不是依赖建立多个TCP连接。
@@ -27,6 +33,25 @@ HTTP与HTTPS的区别
2733

2834
- 传输速度快
2935

36+
37+
38+
### HTTP请求响应过程
39+
40+
你是不是很好奇,当你在浏览器中输入网址后,到底发生了什么事情?你想要的内容是如何展现出来的?让我们通过一个例子来探讨一下,我们假设访问的 URL 地址为 `http://www.someSchool.edu/someDepartment/home.index`,当我们输入网址并点击回车时,浏览器内部会进行如下操作
41+
42+
- DNS服务器会首先进行域名的映射,找到访问`www.someSchool.edu`所在的地址,然后HTTP 客户端进程在 80 端口发起一个到服务器 `www.someSchool.edu` 的 TCP 连接(80 端口是 HTTP 的默认端口)。在客户和服务器进程中都会有一个`套接字`与其相连。
43+
- HTTP 客户端通过它的套接字向服务器发送一个 HTTP 请求报文。该报文中包含了路径 `someDepartment/home.index` 的资源,我们后面会详细讨论 HTTP 请求报文。
44+
- HTTP 服务器通过它的套接字接受该报文,进行请求的解析工作,并从其`存储器(RAM 或磁盘)`中检索出对象 [www.someSchool.edu/someDepartment/home.index,然后把检索出来的对象进行封装,封装到](http://www.someSchool.edu/someDepartment/home.index,然后把检索出来的对象进行封装,封装到) HTTP 响应报文中,并通过套接字向客户进行发送。
45+
- HTTP 服务器随即通知 TCP 断开 TCP 连接,实际上是需要等到客户接受完响应报文后才会断开 TCP 连接。
46+
- HTTP 客户端接受完响应报文后,TCP 连接会关闭。HTTP 客户端从响应中提取出报文中是一个 HTML 响应文件,并检查该 HTML 文件,然后循环检查报文中其他内部对象。
47+
- 检查完成后,HTTP 客户端会把对应的资源通过显示器呈现给用户。
48+
49+
至此,键入网址再按下回车的全过程就结束了。上述过程描述的是一种简单的`请求-响应`全过程,真实的请求-响应情况可能要比上面描述的过程复杂很多。
50+
51+
52+
53+
54+
3055
## HTTPS
3156

3257
Https并非是应用层的一种新协议。只是http通信接口部分用SSL(安全套接字层)和TLS(安全传输层协议)代替而已。即添加了加密及认证机制的HTTP称为HTTPS(HTTP Secure).
@@ -135,7 +160,21 @@ HTTP + 加密 + 认证 + 完整性保护 = HTTPS
135160

136161

137162

163+
### Https 请求慢的解决办法
164+
165+
1. 不通过DNS解析,直接访问IP
166+
167+
2. 解决连接无法复用
168+
169+
http/1.0协议头里可以设置Connection:Keep-Alive或者Connection:Close,选择是否允许在一定时间内复用连接(时间可由服务器控制)。但是这对App端的请求成效不大,因为App端的请求比较分散且时间跨度相对较大。
170+
171+
方案1.基于tcp的长连接 (主要) 移动端建立一条自己的长链接通道,通道的实现是基于tcp协议。基于tcp的socket编程技术难度相对复杂很多,而且需要自己定制协议。但信息的上报和推送变得更及时,请求量爆发的时间点还能减轻服务器压力(避免频繁创建和销毁连接)
172+
173+
方案2.http long-polling 客户端在初始状态发送一个polling请求到服务器,服务器并不会马上返回业务数据,而是等待有新的业务数据产生的时候再返回,所以链接会一直被保持。一但结束当前连接,马上又会发送一个新的polling请求,如此反复,保证一个连接被保持。 存在问题: 1)增加了服务器的压力 2)网络环境复杂场景下,需要考虑怎么重建健康的连接通道 3)polling的方式稳定性不好 4)polling的response可能被中间代理cache住 ……
174+
175+
方案3.http streaming 和long-polling不同的是,streaming方式通过再server response的头部增加“Transfer Encoding:chuncked”来告诉客户端后续还有新的数据到来 存在问题: 1)有些代理服务器会等待服务器的response结束之后才将结果推送给请求客户端。streaming不会结束response 2)业务数据无法按照请求分割 ……
138176

177+
方案4.web socket 和传统的tcp socket相似,基于tcp协议,提供双向的数据通道。它的优势是提供了message的概念,比基于字节流的tcp socket使用更简单。技术较新,不是所有浏览器都提供了支持。
139178

140179

141180

0 commit comments

Comments
 (0)