文章目录

  • 前言
  • JavaWeb
    • Servlet
      • 关于系统架构
        • 1.系统架构包括什么形式
        • 2.C/S架构
        • 3.B/S架构
        • 4.C/S和B/S架构的系统,那个好
        • 5.开发B/S架构的系统
      • B/S架构的系统通信原理
        • 1.WEB系统的访问过程
        • 2.WEB系统的通信原理,通信过程
        • 3.域名
        • 4.IP地址
        • 5.端口号
        • 6.请求与响应
      • WEB服务器软件
        • 1.WEB服务器软件有哪些
        • 2.应用服务器和WEB服务器的关系
        • 3.Tomcat下载
        • 4.关于Tomcat服务器的目录
        • 5.在IDEA当中启动Tomcat服务器
      • Servlet对象的生命周期
        • 1.生命周期的概念
        • 2.Servlet对象的维护
        • 3.Servlet对象生命周期中的重要方法
        • 4.演示Servlet生命周期
      • HTTP协议
        • 1.什么是协议
        • 2.什么是HTTP协议
        • 3.HTTP请求协议
        • 4.HTTP的响应协议
        • 5.HTTP和HTTPS
        • 6.GET和POST的区别与选择以及两者的安全性
      • Servlet注解
        • Servlet注解中属性
      • 转发和重定向
        • 转发和重定向区别
        • 转发和重定向的选择
      • Session
        • Session保存会话状态
        • Session实现原理
      • Cookie
        • Cookie和Session
        • Cookie有效时间

前言

当你将被动学习变成主动学习的时候,那一定不是低谷,在学习上一定要缺乏满足感。在2022年的暑假中,通过B站学习动力节点JavaWeb编程,丰富了自己的技术栈,以下是关于JavaWeb一些知识点总结,如有不实之处,还请个位小伙伴指正。

JavaWeb

Java Web,是用Java技术来解决相关web互联网领域的技术栈。
web包括:web服务端和web客户端两部分。Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

Servlet

关于系统架构

1.系统架构包括什么形式

  • C/S架构
  • B/S架构

2.C/S架构

  • Client/Server(客户端/服务器)
  • C/S结构的软件
    • QQ…
  • C/S架构的特点
    • 需要安装特定的客户端软件
  • C/S系统架构的优点和缺点
    • 优点

      • 体验好,界面炫酷:软件中展示给用户的界面样式都是UI设计师精心设计的
      • 服务器压力小:大量的数据都是集成在客户端软件当中的,服务器只需要传送很少的数据量,服务器的压力很小
      • 速度快:软件中的数据大部分都是集成到客户端软件当中的,很少量的数据从服务器端传过来,所以C/S系统架构的速度快
      • 安全:大量的数据都是集成在客户端软件当中的,并且客户端有很多个,服务器虽然有一个,就算受损,大量的数据在多个客户端上有缓存,所以从这个方面来说,C/S结构的系统比较安全
    • 缺点
      • 升级维护比较差劲:升级维护麻烦,成本比较高。

3.B/S架构

  • Browser/Server(浏览器/服务器)
  • B/S系统架构还是一个C/S系统,只不过这个C比较特殊,Client是一个固定不变的浏览器软件
  • B/S系统架构的优点和缺点
    • 优点

      • 升级维护方便,成本比较低:只需要升级服务器端即可
      • 不需要安装特定的客户端软件,用户操作方便:只需要打开浏览器,搜索即可
    • 缺点
      • 体验差:界面不炫酷,浏览器只支持三个语言html,css,JavaScript
      • 速度慢:所有的数据都是在服务器上,用户发送的每一个请求都是需要服务器做出响应,B/S架构的系统在网络中传送的数据量比较大
      • 不安全:所有的数据都在服务器上,只要服务器发生损坏,最终数据全部丢失

4.C/S和B/S架构的系统,那个好

  • 不同架构的系统在不同的业务场景下有不同的使用场景

5.开发B/S架构的系统

开发B/S架构的系统,就是在开发网站,开发一个WEB系统

  • 需要用到的技术

    • WEB前端

      • HTML
      • CSS
      • JavaScript
    • WEB后端
      • Java
      • C
      • C++
      • Python
      • Golang
      • PHP

      • 使用Java做WEB开发我们称为JavaWeb开发,最核心的规范:Servlet规范

B/S架构的系统通信原理

1.WEB系统的访问过程

  • 打开浏览器
  • 找到地址栏
  • 输入一个合法的网站
  • 确认(回车)
  • 在浏览器上会显示响应的结果

2.WEB系统的通信原理,通信过程

  • 用户输入网址(URL)
  • 域名解析器进行域名解析:http://110.242.68.3:80/index.html
  • 浏览器软件在网络中搜索110.242.68.3:80这一台主机
  • 定位110.242.68.3:80这台主机上80端口对应的服务器软件
  • 80端口对应的服务器软件找到资源名是index.html的资源
  • 服务器软件找到index.html文件,并且将文件中的内容直接输出响应到浏览器上
  • 浏览器接收到来自服务器的文件,并将其解析到浏览器上
  • 浏览器渲染,执行HTML、CSS、JavaScript代码,展示效果

3.域名

官方定义:是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)

  • http://www.baidu.com/(网址)
  • www.baidu.com是一个域名
  • 在浏览器地址栏上输入域名,回车之后,域名解析器会将域名解析出来一个具体的IP地址和端口号等

4.IP地址

官方定义:IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异

  • 类似于一个人的身份证号,IP地址是计算机在网络中的一个身份证号,在同一个网络中,IP地址是唯一的。
  • A计算机想要和B计算机通信,首先要知道B计算机的IP地址,有了IP地址才能建立连接

5.端口号

官方定义:所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号

  • 一个端口代表一个软件
  • 一个计算机当中有很多软件,每一个软件启动之后都有一个端口号
  • 在同一个计算机上,端口号具有唯一性

6.请求与响应

  • 请求和响应的数据流向是不同的
  • 从Browser端发送数据到Server端,称为请求(request)
  • 从Server端向浏览器Browser端发送数据,称为响应(response)

WEB服务器软件

1.WEB服务器软件有哪些

  • Tomcat(WEB服务器)
  • jetty(WEB服务器)
  • JBOSS(应用服务器)

2.应用服务器和WEB服务器的关系

  • 应用服务器实现了JavaEE的所有规范(一共13个)
  • WEB服务器只实现了JavaEE中的Servlet和JSP规范
  • 应用服务器是包含WEB服务器的

3.Tomcat下载

  • Apache官网:https://tomcat.apache.org/
  • Tomcat开源免费的轻量级WEB服务器,使用Java语言开发
  • 要想运行Tomcat服务器,需要先有jre,安装JDK,配置Java运行环境

4.关于Tomcat服务器的目录

  • bin:Tomcat服务器的命令文件存放的目录,比如:打开Tomcat、关闭Tomcat
  • conf:Tomcat服务器的配置文件存放目录
  • lib:Tomcat服务器的核心程序目录,这里的jar包全是class文件
  • logs:Tomcat服务器的日志目录,Tomcat服务器启动等信息都会在这个目录下生成日志文件
  • temp:Tomcat服务器的临时目录,存储临时文件
  • webapps:用来存放大量的webapp
  • work:用来存放JSP文件翻译之后的java文件以及编译之后的class文件

5.在IDEA当中启动Tomcat服务器

新建一个模块

点击Next

起一个模块名,然后点击Finish

给模块添加Web框架支持


勾选Web Application(4.0),点击ok

在test文件下生成以下目录


index.jsp代码(内容已修改)


部署服务器,点击Tomcat 10.0.22下的Edit Configurations…


在Deployment中点加号(IDEA版本不同,加号位置不同),点击Artifact…

找到test:war exploded点击OK添加成功


修改下面路径为/test(不是固定的),点击Apply,OK

在Server中配置,点击Apply,OK


启动服务器,出现Artifact is deployed successfully表示启动成功


然后,在浏览器地址栏中输入localhost:8080/test,回车

Servlet对象的生命周期

1.生命周期的概念

Servlet对象的生命周期表示:一个Servlet对象从出生到最后的死亡的整个过程

  • 执行实现类空参的构造器
  • Servlet初始化后调用init() 方法
  • Servlet调用service() 方法来处理客户端的请求
  • Servlet销毁前调用destroy() 方法
  • Servlet由JVM的垃圾回收器进行垃圾回收

2.Servlet对象的维护

Servlet对象的生命周期是由Tomcat服务器(WEB Server)全权负责,在此过程中,JavaWeb程序员无权干涉

3.Servlet对象生命周期中的重要方法

  • init()方法:init()方法在用户发送第一次请求时,创建Servlet时只被调用一次,用于一次性初始化。
  • service()方法:在用户发送第二次、第三次…请求的时候,Servlet对象并没有新建,直接调用之前的Servlet对象的service()方法,只要用户发送一次请求,service()方法就会被Tomcat服务器调用一次。
  • destroy()方法:destroy()方法在服务器关闭的时候被调用,只会被调用一次,执行结束之后,Servlet对象的内存被Tomcat释放。

4.演示Servlet生命周期

在之前的基础上添加jar包依赖,点击Open Module Settings

在Modules中找到test文件,点击加号(IDEA版本不同加号位置不同)

在电脑中找到Tomcat文件中两个jar包,点击OK

在src目录下创建Servlet01类

import jakarta.servlet.*;
import jakarta.servlet.http.HttpServlet;import java.io.IOException;public class Servlet01 extends HttpServlet {//构造器public Servlet01(){System.out.println("Servlet01构造器被执行了");}@Overridepublic void init() throws ServletException {System.out.println("init()方法被执行了");}@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {System.out.println("service()方法被执行了");}@Overridepublic void destroy() {System.out.println("destroy()方法被执行了");}
}

在web/WEB-INF/web.xml中配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>Servlet</servlet-name><servlet-class>Servlet01</servlet-class></servlet><servlet-mapping><servlet-name>Servlet</servlet-name><url-pattern>/servlet</url-pattern></servlet-mapping>
</web-app>

在浏览器地址栏中输入路径,

查看控制台的输出

多次刷新页面之后,查看控制台的输出

然后停止服务器之后,查看控制台的输出

HTTP协议

1.什么是协议

协议是由其他人或其他组织制定的一套规范、一套标准

2.什么是HTTP协议

  • W3C指定的一种超文本传输协议
  • HTTP协议不但支持传送普通文本,同样支持传送声音、视频、图片等
  • HTTP协议包括请求协议和响应协议
    • 请求协议:浏览器向WEB服务器发送请求的时候需要遵循的一套标准
    • 响应协议:WEB服务器向浏览器发送数据的时候需要遵循的一套标准

3.HTTP请求协议

HTTP的请求协议包括4部分:请求行、请求头、空白行、请求体

GET /servlet05/getServlet?username=jack123&userpwd=100 HTTP/1.1                                请求行
Accept:                                                                                     请求头
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Host: localhost:8080
Referer: http://localhost:8080/servlet05/index.html
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"空白行请求体
  • 请求行:请求方法 + URL + 版本号

    • 方法 说明
      GET 获取资源
      POST 传输文件
      PUT 传输文件
      HEAD 获得报文首部
      DELETE 删除文件
      OPTIONS 询问支持的方法
      TRACE 追踪路径
      CONNECT 要求用隧道协议链接代理
      LINK 建立和资源之间的联系
      UNLINE 断开连接关系
    • URL:协议 + 域名 + 端口号 +[路径&key = value]
    • 版本号:HTTP版本号
  • 请求头:请求头由若干个键值对的结构组成的,每个键值对独占一行,使用冒号分割键与值,遇到空行表示header部分结束。

  • 空白行:用来区分“请求头”和“请求体”

  • 请求体:向服务器发送的具体数据

4.HTTP的响应协议

HTTP的响应协议包括4部分:状态行、响应头、空白行、响应体

HTTP/1.1 200 ok                                      状态行
Content-Type: text/html;charset=UTF-8              响应头
Content-Length: 128
Date: Tue, 28 Jun 2022 08:46:04 GMT
Keep-Alive: timeout=20
Connection: keep-alive空白行
<!doctype html>                                       响应体
<html><head><title>from get servlet</title></head><body><h1>from get servlet</h1></body>
</html>
  • 状态行:版本号 + 状态码 + 状态的描述信息

    • 版本号:HTTP协议版本号
    • 状态码:HTTP协议中规定的响应状态号,不同的响应结果对应不同的号码
      • 状态号 说明
        200 请求响应成功,正常结束
        404 访问的资源不存在,通常是因为路径写错
        405 前端发送的请求和后端请求的处理方式不一致
        500 服务器的程序出现异常
    • 状态的描述信息:ok表示正常结束,not found表示资源找不到
  • 响应头:类似于请求消息中的请求头,其格式和请求头信息格式一样
  • 空白行:用来区分“请求头”和“请求体”
  • 响应体:一个html文档,浏览器可以直接识别这个html文件

5.HTTP和HTTPS

HTTPS使用安全套接字层(SSL)进行信息传递,简单来说它是HTTP的安全版

两者的区别

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

6.GET和POST的区别与选择以及两者的安全性

GET和POST的区别与选择以及两者的安全性

Servlet注解

在Servlet中,web.xml扮演的角色十分重要,它可以将所有的Servlet的配置集中进行管理,但是项目中Servlet数量较多时,web.xml的配置会变得十分的冗长,此时,注解就是一种更好的选择
注解不需要依赖配置文件,它可以直接在类中使用,其配置只对当前类有效

import jakarta.servlet.*;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;import java.io.IOException;
@WebServlet({"/servlet"})
public class Servlet01 extends HttpServlet {public Servlet01(){System.out.println("Servlet01构造器被执行了");}@Overridepublic void init() throws ServletException {System.out.println("init()方法被执行了");}@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {System.out.println("service()方法被执行了");}@Overridepublic void destroy() {System.out.println("destroy()方法被执行了");}
}

Servlet注解中属性

  • name:用来指定Servlet的名字,等同于 <servlet-name>
  • urlPatterns:用来指定Servlet的映射路径,可以指定多个路径,需要使用{},等同于<utl-pattern>
  • loadOnStartUp:用来指定服务器启动阶段是否加载该Servlet,等同于<locd-on-startup>
  • value:当注解的属性名是value,使用注解的时候,value属性名可以省略
  • 以上的属性名是可以省略的,不是必须全写的

转发和重定向

在一个web应用中实现资源的跳转,有两种方式:转发和重定向

转发和重定向区别

代码上

//转发
request.getRequestDispatcher("路径").forward(request,response);
//重定向
response.sendRedirect("项目名/路径");

形式上

  • 转发是一次请求,请求结束之后,浏览器地址栏上的路径没有发生变化
  • 重定向是两次请求,重定向之后,浏览器地址栏上的路径发生变化
  • 转发是由WEB服务器来控制的,重定向是由浏览器完成的
  • 转发只能跳转到该服务器当中的资源,重定向可以跳转到任何资源

转发和重定向的选择

  • 如果在上一个Servlet当中向request域当中绑定数据,希望从下一个Servlet当中把request域当中的数据取出来,使用转发机制
  • 其余情况均可使用重定向

Session

session机制实际上是一个规范,不同的语言对这种会话机制都有实现,session对象最主要的作用是保存会话状态,一个会话包含多次请求

Session保存会话状态

Session为什么要保存会话状态?

HTTP协议是一种无状态协议,这种无状态使得在用户发送请求接受之后,浏览器和服务器之间的连接断开,这种无状态协议,可以减轻服务器的压力。但是用户关闭浏览器的这个动作,服务器是不知道,所以需要使用Session保存会话状态

Session实现原理

1.session对象是存储在服务器端的
2. 一个session对象对应一个会话,一个会话中包含多次请求
3. HttpSession session = request.getSession();从服务器中获取当前的session对象,没有则新建
4. 在web服务器中有一个session列表,存储这sessionid和session对象,用户第一次发送请求的时候,服务器创建一个新的session对象和sessionid,web服务器会将sessionid发送给浏览器,然后保存在浏览器的缓存中。用户第二次发送请求的时候,自动将浏览器缓存中的sessionid发送给服务器,服务器从session列表中查找对应的session对象
5.关闭浏览器之后,浏览器中保存的sessionid消失,会话结束
6.浏览器关闭的时候,服务器无法检测到浏览器关闭了,session的销毁主要依靠session超时机制
7.session对象销毁:超时销毁、手动销毁session.setMaxInactiveInterval(5);//5秒后自动销毁session.invalidate(); //立即销毁

Cookie

Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息

Cookie和Session

  • 因为http是无状态协议,cookie和session机制其实都是为了保存会话的状态
  • cookie是将会话的状态保存在浏览器客户端上。
  • session是将会话的状态保存在服务器端上。

Cookie有效时间

  • cookie.setMaxAge(60*60);设置cookie在一小时之后失效
  • 没有设置cookie的有效时间:默认保存在浏览器的运行内存中,浏览器关闭则cookie消失
  • 设置cookie的有效时间大于0,该cookie被存储到硬盘文件当中
  • 设置cookie的有效时间等于0,该cookie被删除
  • 设置cookie的有效时间小于0,该cookie不会被存储,和不设置同一个效果

JavaWeb是什么?关于JavaWeb的那些知识点,一文带你复盘那些你应该知道的JavaWeb知识点相关推荐

  1. 计算机毕业设计-ssm智能小区管理系统(源码+数据库+文档)社区维修管理系统-小区缴费管理系统javaweb项目

    计算机毕业设计-ssm智能小区管理系统(源码+数据库+文档)社区维修管理系统-小区缴费管理系统javaweb项目 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 ...

  2. 基于JAVAWeb产品管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVAWeb产品管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVAWeb产品管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开 ...

  3. 计算机毕业设计Javaweb家教管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Javaweb家教管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Javaweb家教管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S ...

  4. servlet后台如何接受multpartfile_Servlet进阶教程(你不得不知道的Servlet知识点)

    " 人生的游戏不在于拿了一副好牌,而在于怎样去打好坏牌,世上没有常胜将军,勇于超越自我者才能得到最后的奖杯." 你好,我是梦阳辰!快和我一起学习吧! 精彩回放: Servlet入门 ...

  5. css按钮居中_你不一定知道的CSS最小和最大(宽度/高度)知识点及优缺点

    通常,我们希望限制元素相对于其父元素的宽度,同时使其具有动态性.因此,有一个基础宽度或高度的能力,使其扩展的基础上,可用的空间.比如说,我们有一个按钮,它的宽度应该是最小的,不应该低于它的宽度.这就是 ...

  6. 自学平面设计,不能不知道的基础知识点是什么?

    以下,是我总结的:学习平面设计不得不知道的基础知识点.也简要概括我对平面设计学习的理解,相信大家在看完下述分析后,都会有更加明确的学习思路. 1.什么是平面设计? 平面设计(graphic desig ...

  7. 嵌入式从业者应知应会知识点 - 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是嵌入式从业者应知应会知识点. 嵌入式开发需要掌握的知识点非常多,不同的技术方向有不同的知识侧重点,本系列试图整理总结嵌入式开发(尤其是 ...

  8. HTTP应知应会知识点复习手册(下)

    前言 本文快速回顾了常考的的知识点,用作面试复习,事半功倍. 面试知识点复习手册 全复习手册文章导航 Csdn全复习手册文章导航: https://blog.csdn.net/qqxx6661/art ...

  9. iOS 开发者一定要知道的 14 个知识点

    本文讲的是iOS 开发者一定要知道的 14 个知识点, 作为一个 iOS 开发者(现在对 Swift 中毒颇深 ).我从零开始创建应用.维护应用,并且在很多团队待过.在我的职业生涯中,一句话一直响彻耳 ...

最新文章

  1. 打造属于自己的underscore系列(五)- 偏函数和函数柯里化
  2. 用jsp实现右导航窗格_不想升级操作系统,可以用这三种方法阻止Windows10更新
  3. mysql aa复制_MySQL主从复制实现
  4. 派生类的构造复制与析构
  5. python_激光点云变换到图像平面
  6. 《物流与供应链管理》课程论文
  7. 【图像加密】基于matlab GUI彩色图像加密解密(带面板)【含Matlab源码 1231期】
  8. 东方欲晓,莫道君行早。踏遍青山人未老,风景这边独好。
  9. 可口又可乐的鬼马小精灵杨若兮
  10. 应该将composer.lock致力于版本控制吗?
  11. 黄油刀的配置与使用——个人学习记录
  12. 前端常见面试题 - JS篇
  13. 2021了,为什么说音视频技术是技术风口?Android音视频开发这么吃香
  14. python-turtle 小发现
  15. hash算法原理详解
  16. 待业一年多,我终于找到工作啦,月薪1.5万,双休不加班
  17. 【HUAWEI】华为机试试题-105
  18. android 识别中文字体,在 Android 上高效准确的进行 OCR 识别,白描帮你实现
  19. Configure文件学习
  20. GPL与BSD许可证的区别

热门文章

  1. linux更换文件夹底色,ubuntu18.04系统修改登录背景详细教程
  2. 计算机组成原理-处理器
  3. C# | WriteLine写入.txt 文件
  4. 我的世界java版建绿宝石农场_我的世界:你会用新版手动绿宝石农场吗?灾厄巡逻队搭配地狱门!...
  5. 拍全景为什么会需要全景云台?云台是怎么安装的?
  6. python 同花顺thstrader_Easytrader踩坑记(一)
  7. 乖离水机器人攻略_乖离性百万亚瑟王超弩复刻水机器人攻略及卡组介绍
  8. 拍结婚登记照有什么要求?注意这几点让你拍出好看照片
  9. java双引号之方法引用
  10. 讲述非科班的面试过程:阿里三面+交叉面试+技术面试+HR面试,一路艰难,中拿下了字节跳动的offer!