1、Java学习手册:Java基础知识点
2、Java学习手册:Java面向对象面试问题
3、Java学习手册:Java集合、泛型面试问题
4、Java学习手册:Java并发与多线程面试问题
5、Java学习手册:Java虚拟机面试问题
6、Java学习手册:Java IO面试问题
7、Java学习手册:Java反射机制面试问题
8、Java学习手册:Java网络编程面试问题
9、Java学习手册:Java异常面试问题
10、Java学习手册:Java设计模式面试问题
11、Java学习手册:Java数据库面试问题


一、TCP与UDP的区别

Java学习手册:TCP与UDP

注:TCP和UDP对应的各种应用层协议


二、Java Socket

Java学习手册:Java Socket


三、Java NIO

Java学习手册:Java NIO


四、XML

Java学习手册:XML


五、HTTP响应的结构是怎么样的?

HTTP响应由三个部分组成:

状态码(Status Code):描述了响应的状态。可以⽤来检查是否成功的完成了请求。请求失败的情况下,状态码可⽤来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。

HTTP头部(HTTP Header): 它们包含了更多关于响应的信息。⽐如:头部可以指定认为响应过期的过期⽇期,或者是指定⽤来给⽤⼾安全的传输实体内容的编码格式。

主体(Body):它包含了响应的内容。它可以包含HTML代码,图⽚,等等。主体是由传输在HTTP消息中紧跟在头部后⾯的数据字节组成的。


六、什么是cookie?session和cookie有什么区别?

cookie是Web服务器发送给浏览器的⼀块信息。浏览器会在本地⽂件中给每⼀个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。下⾯列出了session和cookie的区别:

  • ⽆论客⼾端浏览器做怎么样的设置,session都应该能正常⼯作。客⼾端可以选择禁⽤cookie,但是,session仍然是能够⼯作的,因为客⼾端⽆法禁⽤服务端的session。
  • 在存储的数据量⽅⾯session和cookies也是不⼀样的。session能够存储任意的Java对象,cookie只能存储String类型的对象。

七、什么是HTTP隧道?

HTTP隧道是⼀种利⽤HTTP或者是HTTPS把多种⽹络协议封装起来进⾏通信的技术。因此,HTTP协议扮演了⼀个打通⽤于通信的⽹络协议的管道的包装器的⻆⾊。把其他协议的请求掩盖成HTTP的请求就是HTTP隧道。


八、sendRedirect()和forward()⽅法有什么区别?

sendRedirect()⽅法会创建⼀个新的请求,⽽forward()⽅法只是把请求转发到⼀个新的⽬标上。重定向(redirect)以后,之前请求作⽤域范围以内的对象就失效了,因为会产⽣⼀个新的请求,⽽转发(forwarding)以后,之前请求作⽤域范围以内的对象还是能访问的。⼀般认为sendRedirect()⽐forward()要慢。


九、什么是URL编码和URL解码?

URL编码是负责把URL⾥⾯的空格和其他的特殊字符替换成对应的⼗六进制表⽰,反之就是解码。


十、Http的Get和Post的区别

Http是应用层的协议,底层基于TCP/IP协议,所以本质上,get和post请求都是TCP请求。所以二者的区别都是体现在应用层上(HTTP的规定和浏览器/服务器的限制):
1、参数的传输方式:GET参数通过URL传递,POST放在Request body中。
2、GET请求在URL中传送的参数是有长度限制的,而POST没有。
3、对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。不过要注意,并不是所有浏览器都会在POST中发送两次包,比如火狐。
4、对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
5、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
6、GET请求只能进行url编码,而POST支持多种编码方式。
7、GET在浏览器回退时是无害的,而POST会再次提交请求。
8、GET产生的URL地址可以被Bookmark,而POST不可以。
9、GET请求会被浏览器主动cache,而POST不会,除非手动设置。


十一、HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义了数据如何进行包装,在HTTP跟TCP中间加多了一层加密层TLS/SSL,SSL是个加密套件,负责对HTTP的数据进行加密。TLS是SSL的升级版。现在提到HTTPS,加密套件基本指的是TLS。

传输加密的流程:http是应用层将数据直接给到TCP进行传输,Https是应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。

HTTPS加密数据的过程一般来说,分为对称加密、非对称加密。
(1)对称加密
对称加密的意思就是,加密数据用的密钥,跟解密数据用的密钥是一样的。
对称加密的优点在于加密、解密效率通常比较高。缺点在于,数据发送方、数据接收方需要协商、共享同一把密钥,并确保密钥不泄露给其他人。传输过程中容易被截获。
(2)非对称加密
非对称加密的意思就是,加密数据用的密钥(公钥),跟解密数据用的密钥(私钥)是不一样的。


十二、加密算法

1、对称加密算法

(1)Data Encryption Standard(DES)
DES 是一种典型的块加密方法:将固定长度的明文通过一系列复杂的操作变成同样长度的密文,块的长度为64位。同时,DES 使用的密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。 DES 的密钥表面上是64位的,实际有效密钥长度为56位,其余8位可以用于奇偶校验。
DES 现在已经不被视为一种安全的加密算法,主要原因是它使用的56位密钥过短。
为了提供实用所需的安全性,可以使用 DES 的派生算法 3DES 来进行加密 (虽然3DES 也存在理论上的攻击方法)。

(2)Advanced Encryption Standard(AES)
AES 在密码学中又称 Rijndael 加密法,用来替代原先的 DES,已经被多方分析且广泛使用。

(3)DES与AES的对比
自DES 算法公诸于世以来,学术界围绕它的安全性等方面进行了研究并展开了激烈的争论。在技术上,对DES的批评主要集中在以下几个方面:
1、作为分组密码,DES 的加密单位仅有64 位二进制,这对于数据传输来说太小,因为每个分组仅含8个字符,而且其中某些位还要用于奇偶校验或其他通讯开销。
2、DES 的密钥的位数太短,只有56 比特,而且各次迭代中使用的密钥是递推产生的,这种相关必然降低密码体制的安全性,在现有技术下用穷举法寻找密钥已趋于可行。
3、DES 不能对抗差分和线性密码分析。
4、DES 用户实际使用的密钥长度为56bit,理论上最大加密强度为256。DES 算法要提高加密强度(例如增加密钥长度),则系统开销呈指数增长。除采用提高硬件功能和增加并行处理功能外,从算法本身和软件技术方面都无法提高DES 算法的加密强度。

2、 非对称加密算法

(1)RSA
1977年由 MIT 的 Ron Rivest、Adi Shamir 和 Leonard Adleman 一起提出,以他们三人姓氏开头字母命名,是一种获得广泛使用的非对称加密算法。
对极大整数做因数分解的难度 (The Factoring Problem) 决定了 RSA 算法的可靠性。换言之,对一个极大整数做因数分解愈困难,RSA 算法就愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降。目前看来找到这样的算法的可能性非常小。

(2)DES与RSA的比较
RSA算法的密钥很长,具有较好的安全性,但加密的计算量很大,加密速度较慢限制了其应用范围。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。
采用DES与RSA相结合的应用,使它们的优缺点正好互补,即DES加密速度快,适合加密较长的报文,可用其加密明文;RSA加密速度慢,安全性好,应用于DES 密钥的加密,可解决DES 密钥分配的问题。
目前这种RSA和DES结合的方法已成为EMAIL保密通信标准。


十三、HTTP与HTTPS的区别

(1)HTTP(超文本传输协议)
HTTP协议不适合传输一些敏感信息,比如:信用卡号,密码等支付信息。

(2)HTTPS(安全套接字层超文本传输协议)
HTTPS在HTTP基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

(3)区别

  • 1、HTTPS协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
  • 2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
  • 3、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • 4、HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

十四、HTTP1.0和HTTP1.1的区别

1、HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理

HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求
处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

HTTP 1.1则支持持久连接Persistent Connection,并且默认使用persistent connection。在同一个TCP的连接中可以传送多个
HTTP请求和响应。多个请求和响应可以重叠,多个请求和响应可以同时进行更加多的请求头和响应头(比如HTTP1.0没有
host的字段)。

注:
HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服
务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。
HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

2、HTTP 1.1增加host字段

在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随
着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP
地址。
HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad
Request)。此外,服务器应该接受以绝对路径标记的资源请求。

3、100(Continue) Status(节约带宽)

HTTP/1.1加入了一个新的状态码100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请
求,就回送响应码401(Unauthorized);如果服务器接收此请求就回送响应码100,客户端就可以继续发送带实体的完整
请求了。100 (Continue) 状态代码的使用,允许客户端在发request消息body之前先用request header试探一下server,看
server要不要接收request body,再决定要不要发request body。

4、HTTP/1.1中引入了Chunked transfer-coding来解决上面这个问题

发送方将消息分割成若干个任意大小的数据块,每个数据块在发送时都会附上块的长度,最后用一个零长度的块作为消息结束的标志。这种方法允许发送方只缓冲消息的一个片段,避免缓冲整个消息带来的过载。

5、HTTP/1.1在1.0的基础上加入了一些cache的新特性

当缓存对象的Age超过Expire时变为stale对象,cache不需要直接抛弃stale对象,而是与源服务器进行重新激活(revalidation)。


十五、HTTP有哪些请求方法?

  • GET:请求指定的页面信息,并返回实体主体。
  • HEAD:和GET类似,只不过不返回报文主体,只返回响应首部。可用于确认URI的有效性及资源更新的日期时间;
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  • PUT:用来传输文件,要求请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。
  • DELETE:和PUT相反,按请求URI删除指定的资源。
  • OPTIONS:用来查询针对请求URI指定的资源支持的方法。如果请求成功,会有一个Allow的头包含类似“GET,POST”这样的信息
  • TRACE:让服务端将之前的请求通信返回给客户端的方法(因此客户端可以得知请求是怎么一步步到服务端的)。主要用于测试或诊断。
  • CONNECT:使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。

十六、GET和POST的区别?

  • GET用于获取数据,POST用于提交数据。
  • GET的参数长度有限制(不同的浏览器和服务器限制不同),POST没有限制。
  • GET把参数包含在URL中,POST通过封装参数到请求体中发送。
  • GET请求只能进行url编码,而POST支持多种编码方式。
  • GET可以发送的参数只能是ASCII类型,POST没有限制,甚至可以传输二进制。
  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
  • GET刷新无害,而POST会再次提交数据。
  • GET请求会被保存浏览器历史记录,可以被收藏为书签,而POST请求不能。

GET和POST本质都是TCP连接。不过GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200 OK(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 OK(返回数据)。

注:GET参数的长度、类型均有限制。


十七、cookie和session区别和联系?

Session原理:浏览器第一次访问服务器时,服务器会响应一个cookie给浏览器。这个cookie记录的就是sessionId,之后每次访问携带着这个sessionId,服务器里查询该sessionId,便可以识别并跟踪特定的用户了。(服务端要为特定的用户创建特定的Session,用于标识这个用户,并且跟踪用户。)

Cookie原理:第一次访问服务器,服务器响应时,要求浏览器记住一个信息。之后浏览器每次访问服务器时候,携带第一次记住的信息访问。相当于服务器识别客户端的一个通行证。Cookie不可跨域,浏览览器判断一个网站是否能操作另一个网站Cookie的依据是域名。Google与Baidu的域名不一样,因此Google不能操作Baidu的Cookie,换句话说Google只能操作Google的Cookie。

  • Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。
  • Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
  • Session的运行依赖Session id,而Session id是存在Cookie中的,也就是说,如果浏览器禁用了Cookie ,同时Session也会失效(但是可以通过url重写,即在url中传递Session_id)。

十八、网络层和传输层是如何协作的?

网络层是针对主机与主机之间的服务。而传输层针对的是不同主机进程之间的通信。传输层协议将应用进程的消息传送到网络层,但是它并不涉及消息是怎么在网络层之间传送(这部分是由网络层的路由选择完成的)。网络层真正负责将数据包从源IP地址转发到目标IP地址,而传输层负责将数据包再递交给主机中对应端口的进程。


十九、传输层的可靠传输指的是什么?是如何实现的?

可靠传输是指

  • 传输的信道不产生差错。
  • 保证传输数据的正确性,无差错、不丢失、不重复且按顺序到达。

TCP如何实现可靠传输

  • 应用数据被分割成TCP认为最适合发送的块进行传输。
  • 超时重传,TCP发出一个分组后,它启动一个定时器,等接收方确认收到这个分组。如果发送方不能及时收到一个确认,将重传给接收方。
  • 序号,用于检测丢失的分组和冗余的分组。
  • 确认,告知对方已经正确收到的分组以及期望的下一个分组。
  • 校验和,校验数据在传输过程中是否发生改变,如校验有错则丢弃分组。
  • 流量控制,使用滑动窗口,发送窗口的大小由接收窗口和拥塞窗口的的大小决定(取两者中小的那个),当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。
  • 拥塞控制:当网络拥塞时,减少数据的发送。

二十、TCP序号的作用?怎么保证可靠传输的?

序号和确认号是实现可靠传输的关键。

  • 序号:当前数据包的首个字节的顺序号。
  • 确认号:表示下一个想要接收的字节序号,同时确认号表示对发送方的一个确认回应,表示已经正确收到确认号之前的字节了。

通信双方通过序号和确认号,来判断数据是否丢失、是否按顺序到达、是否冗余等,以此决定要不要进行重传丢失的分组或丢弃冗余的分组。换句话说,因为有了序号、确认号和重传机制,保证了数据不丢失、不重复、有序到达。


二十一、浏览器发起HTTP请求后发生了什么?

当在浏览器输入网址www.baidu.com并敲下回车后:

  • DNS域名解析,将域名www.baidu.com解析成IP地址。
  • 发起TCP三次握手,建立TCP连接。浏览器以一个随机端口(1024~65535)向服务器的80端口发起TCP连接。
  • TCP连接建立后,发起HTTP请求。
  • 服务端响应HTTP请求,将html代码返回给浏览器。
  • 浏览器解析html代码,请求html中的资源。
  • 浏览器对页面进行渲染呈现给用户。

    (图片来源于网络,侵删)

二十二、DNS域名解析的请求过程?

  • 先在浏览器自身的DNS缓存中搜索。
  • 如上述步骤未找到,浏览器搜索操作系统本身的DNS缓存。
  • 如果在系统DNS缓存中未找到,则尝试读取hosts文件,寻找有没有该域名对应的IP。
  • 如果hosts文件中没找到,浏览器会向本地配置的首选DNS服务器发起域名解析请求 。运营商的DNS服务器首先查找自身的缓存,若找到对应的条目且没有过期,则解析成功。如果没有找到,运营商的DNS代我们的浏览器,以根域名->顶级域名->二级域名->三级域名这样的顺序发起迭代DNS解析请求。

    (图片来源于网络,侵删)

二十三、HTTP是基于TCP还是UDP的?

HTTP协议是基于TCP协议的,客户端向服务端发送一个HTTP请求时,需要先与服务端建立TCP连接(三次握手),握手成功以后才能进行数据交互。


二十四、HTTP请求和响应的报文结构(格式)?

HTTP请求的报文格式:

  • 请求行:包括请求方法、URL、HTTP协议版本号
  • 请求头:若干键值对组成
  • 请求空行:告诉服务器请求头的键值对已经发送完毕
  • 请求主体

    (图片来源于网络,侵删)

HTTP响应的报文格式:

  • 响应行:HTTP协议版本号、状态码、状态码描述
  • 响应头:若干键值对表示
  • 响应空行:标识响应头的结束
  • 响应主体

    (图片来源于网络,侵删)

二十五、HTTP常见的状态码?

  • 1XX:信息性状态码,表示接收的请求正在处理
  • 2XX:成功状态码,表示请求正常处理完毕
  • 3XX:重定向状态码,表示需要进行附加操作以完成请求
  • 4XX:客户端错误状态码,表示服务器无法处理请求
  • 5XX:服务端错误状态码,表示服务器处理请求出错

常见的状态码有:

  • 200 OK,请求被正常处理
  • 301 Move Permanently,永久性重定向
  • 302 Found,临时性重定向
  • 400 Bad Request,请求报文中存在语法错误
  • 403 Forbidden,对请求资源的访问被服务器拒绝
  • 404 Not Found,在服务器上不能找到请求的资源
  • 500 Internal Server Error,服务器内部错误

Java学习手册:Java网络编程面试问题相关推荐

  1. Java学习——Day14:网络编程

    7.1 网络编程概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程 序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网的 ...

  2. 2019-06-05 Java学习日记 day26 网络编程

    网络编程 *计算机网络 是指将地理位置不同的具有独立性功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 ...

  3. 黑马程序员--Java学习日记之网络编程

     ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.网络编程概述 1.计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及 ...

  4. 【Java学习笔记】 网络编程04 优化字符串拼接:JSON

    学习时间 0731 优化拼接字符串 String : 是复合类型 ,相当于char的数组 是final类,也就是不支持继承 public final class String {private fin ...

  5. Java并发编程实战_阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

    前言 为了帮助初级开发者快速掌握高并发.网络编程.微服务.海量数据的处理这些实用技术,本文以"理论+范例"的形式对各个知识点进行了详细的讲解,力争让读者在实践中快速掌握相关知识. ...

  6. 阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

    前言 有人调侃我们说: 程序员不如送外卖.送外卖是搬运食物,自己是搬运代码,都不产出新的东西-- 透支体力,又消耗健康,可替代性极强,30岁之后就要面临被优化的危险-- 想跳槽,但是更高的平台难进,同 ...

  7. 阿里P8连夜赶出来的5000页Java学习手册及笔记,巴适的很!

    网上的博客知识太碎片化,而看视频学习效率太低,很多人想:如果有完整知识体系 PDF 教程供大家学习,那该多好! 不要慌,成系统的教程和高质量博客,都帮你整理好了! 1. 高质量博客 刚刚整理完毕,专注 ...

  8. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  9. 20165310 Java实验五《网络编程与安全》

    20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表 ...

  10. Java学习资源 | Java编程最新教学视频大全,推荐

    Java资源合集(视频版) 入门 进阶 高级 样样俱全 学习资源很多,学习方法也很多 适合自己才是最好的 可以试听一下,选择最适合的 加油! 众说周知 B站是一个强大的学习网站 视频 韩顺平零基础30 ...

最新文章

  1. 第十二周项目1-阅读程序(三)
  2. [转载]常用正则表达式
  3. ambari 自定义组件安装
  4. 前端学习(3134):react-hello-react之对象相关的性质
  5. 我们的实践: 400万全行业动态事理图谱Demo
  6. linux xguest用户,在/etc/passwd中得到普通用户列表
  7. 解决Python中sum函数出现的TypeError: unsupported operand type(s) for +: 'int' and 'list'错误问题
  8. 微博:冬奥期间累计共清理相关违规内容近31万条
  9. 软件那么多,恢复数据还靠它
  10. 在MinGW中构建GCC交叉编译器和GDB交叉调试器
  11. SpringBoot中调用第三方接口的三种方式
  12. 拔丝芋头的Java学习日记--Day5
  13. 彻底搞懂MySQL的索引
  14. Solved: ERROR: Failed building wheel for hdbscan
  15. 访客模式 无痕模式 区别_旧访客设计模式的新生活
  16. 【Kafka】Docker安装kafka、搭建kafka集群
  17. 入门级运动蓝牙耳机之好评之王!
  18. 搭建高可用的nacos集群
  19. 估值调整 - Quanto 调整
  20. Python_OpenCV调用摄像头完成人脸识别

热门文章

  1. 《3D数学基础:图形与游戏开发 》
  2. python拟合直线的斜率_线性曲线拟合总是得到斜率和y的中间值为1
  3. 尔雅网课鼠标移出停止播放解决办法
  4. java单号生成器_订单号生成工具类 - Yaphis的个人页面 - OSCHINA - 中文开源技术交流社区...
  5. unity3D 移动开发代码优化
  6. 2020杭电多校赛第四场1007 Go Running(hdu6808)
  7. java简单递归算法,Java递归算法简单示例两则
  8. C#+.Net使用RemObjects建立客户端服务端
  9. JavaScript黑魔法:不可阻止的“自动下载”
  10. web用css做网页实验报告,Web实验报告网页设计与制作