修真院Java小课堂——多线程初步了解

时间:2021-02-25 19:36:07


1.背景介绍

先介绍下背景

什么是多线程?

 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)

  线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)

  线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。

  多进程是指操作系统能同时运行多个任务(程序)。

  多线程是指在同一程序中有多个顺序流在执行。

2.知识剖析

http协议特点?

总结:

实现Runnable接口比继承Thread类所具有的优势:

1):适合多个相同的程序代码的线程去处理同一个资源

2):可以避免java中的单继承的限制

3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立

4):线程池只能放入实现Runable或callable类线程,不能直接放入继承Thread的类


3.常见问题

http请求content-Type有几种,有什么区别?

Http Header里的Content-Type一般有这三种:

application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。

multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分。

text/plain: 数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。postman软件里标的是RAW。

3.常见问题

http请求content-Type有几种,有什么区别?

RequestMapping中的Class定义

method: 指定请求的method类型, GET、POST、PUT、DELETE等

consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回

params: 指定request中必须包含某些参数值是,才让该方法处理

headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求

3.常见问题

HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

下面是常见的HTTP状态码:

200 - 请求成功

301 - 资源(网页等)被永久转移到其它URL

404 - 请求的资源(网页等)不存在

500 - 内部服务器错误

4.解决方案

5.编码实战

6.扩展思考

URL

基本格式如下:schema://login@host[:port#]/path/..../[?query-string][#anchor]

/* scheme: 协议名(如http,https,ftp)

login: 登陆信息 host: 服务器IP/域名

6.扩展思考

URL

基本格式如下

port#:HTTP服务的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如http://www.cnblogs.com:8080

path: 资源路径

query-string: 发送给web服务器的数据 anchor: 片段标识符 */

7.参考文献

https://kb.cnblogs.com/page/130970/#httpmeessagestructe

8.更多讨论

HTTP消息结构:

Request 消息的结构