Java测开面试准备第一天

接口和抽象类:

接口不可以有构造方法,可以多继承,常量都是static final的,方法都是public abstract的,接口中的定义方法需要实现类来实现,如果不能实现接口中的所有方法,则实现类定义为抽象类。

抽象类有构造方法,抽象类的子类需要实现子类的抽象方法(如果不实现,需要定义成抽象的),抽象类中的抽象方法。

抽象方法不能用private、static、synchronized、native访问修饰符修饰,但可以用public、protected、default修饰。

抽象类可以实现接口,抽象类不必实现接口的方法。

在这里插入图片描述

继承:

重写override,核心重写

重载overload,同方法名,不同参数,

super和this关键字:this和super不能同时出现在一个构造函数里面

如果父类只存在有残构造器,不存在无参构造器时,子类需要在无参构造器中加入super()

多态:

编译看左边,运行看右边

A a = new B()//B是A的子类

当a.test(),编译的时候看的时候A的test方法,而运行时运行的是B中的test方法

反射:

对任意一个类,都知道这个类的所有属性和方法;对任意一个对象,都能够调用它的方法和属性。

 

(看得无聊,直接跳到计算机网络了)

forward和redirect:

forward是服务器请求资源,URL不变。转发页面和转发到的页面可以共享request的资源。一般用于登录时候,根据角色转发到相应模块。效率高。

redirect发送一个状态码302,告诉服务器重新去请求新的地址。不能共享request数据。一般用于注销登录,跳转到其他页面。效率低。

URL组成:

<协议>://<主机>:<端口>/<路径>

端口号默认80(可以省略)

IP地址:

ip地址=网络地址+主机地址

子网掩码:

用来判断任意两台计算机的ip地址是否属于同一子网络的根据。

网关(Gateway):

路由器相当于传统的网关。网关能在不同协议间移动数据,而路由器是在不同网络间移动数据。默认网关一般填写192.168.x.1

DNS 服务器:

域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器

MAC地址:

48比特(6个字节)

ARP(地址解析协议)负责将ip地址映射到MAC地址上。

动态IP和静态IP:

动态上网,DHCP上网,自动获取ip;静态ip上网,固定的ip

交换机:工作在OSI的第二层

路由器:工作在网络层

OSI参考模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

四层模型:数据链路层,网络层,传输层,应用层

http协议:

应用层面向对象的协议,是一个客户端和服务器端请求和应答的标准(HTTP协议运行在tcp之上,明文传输,客户端和服务器端都无法验证对方身份)。

支持C/S模式;客户向服务器发送请求方法和路径,请求方法常用的有get,head,post...

每种方法规定了客户和服务器联系的类型不同,由于http协议简单,使得http服务器的程序规模小,通信速度快。

灵活:http允许传输任意类型的的数据对象,正在传输的类型由content-type标记。

无连接:每次连接只处理一个请求,服务器处理完客户的请求,并受到客户的应答,即断开连接。

无状态:http协议无状态协议,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,必须重传,这样导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快。

https协议:

是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入了SSL层,HTTPS的安全基础是SSL。https主要作用:一是建立一个信息安全通道来保证数据传输的安全,另一种是确认网站的真实性。

https是运行在ssl/tls之上的HTTP协议,https是添加了加密和认证机制的http。

http和https的不同:

端口:http是80,https是443

资源消耗:https会加减密处理消耗更多的cpu和内存资源

开销:https通信需要证书,而证书一般需要向认证机构购买

http/1.0、http/1.1、http2:

http:(三次握手四次挥手)

请求阶段:浏览器帮助我们封装请求头和请求体。http规定好的格式。

服务器响应:服务器接收客户端的请求头请求体后

HTTP1.0 和 HTTP1.1 的区别

1.缓存处理,在 HTTP1.0 中主要使用 header 里的 If-Modified-Since,Expires 来做为缓存判断的标准,HTTP1.1 则引入了更多的缓存控制策略例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。

2.带宽优化及网络连接的使用,HTTP1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1 则在请求头引入了 range 头域,它允许只请求资源的某个部分,即返回码是 206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

3.错误通知的管理,在 HTTP1.1 中新增了 24 个错误状态响应码,如 409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

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

5.长连接,HTTP 1.1 支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟,在 HTTP1.1 中默认开启 Connection: keep-alive,一定程度上弥补了 HTTP1.0 每次请求都要创建连接的缺点。

http2.0

使用了多路复用技术,做到同一个连接并发处理多个请求,而且并发请求的数量比http1.1打了搞几个数量级。

当然 HTTP1.1 也可以多建立几个 TCP 连接,来支持处理更多并发的请求,但是创建 TCP 连接本身也是有开销的。

TCP 连接有一个预热和保护的过程,先检查数据是否传送成功,一旦成功过,则慢慢加大传输速度。因此对应瞬时并发的连接,服务器的响应就会变慢。所以最好能使用一个建立好的连接,并且这个连接可以支持瞬时并发的请求。

但由于在信息的封装上还不够成熟,技术成本比较高,已受到攻击,目前普及度不高。

四次挥手:

(1)第一次:主动方发送断开连接请求(Fin报文)给被动方,仅仅代表主动方不会再发送数据报文,但主动发可以接受数据报文。

(2)第二次:被动方此时有可能还有数据报文发送,因此需要先发送ack报文,告诉主动方“我知道了你想断开”。这样主动方就不会因为没收到应答而继续发送断开连难解的请求(fin报文)。

(3)第三次:被动发发送完数据报文后,便发送给主动方fin报文,这样保证数据通信正常可靠地完成,发送完fin报文后,被动方进入last_ack阶段(超时等待)

(4)第四次:主动发发送ack报文,进行连接中断确认,这样被动方释放连接,进入可用状态。

三次握手:

(1)第一次握手,客户端发送syn包(SYN=1,seq=x)到服务器,并进入syn_send状态,等待服务器确认。

(2)第二次握手,服务器确认客服端的包,同时自己也发一个syn包,(SYN=1,seq=y,ACK=1,ack=x+1),进入syn_recv状态。

(3)第三次握手,客户端收到服务器syn+ack包,向服务器发送确认包(ACK=1,ack=y+1),发送完毕后。客户端和服务器进入established状态,完成三次握手。

TCP和UDP的区别:

1.udp是无连接的,不需要建立连接

2.tcp保证数据正确性,udp可能丢包,tcp保证数据顺序,udp不保证,也就是说通过tcp连接传送的数据,无差错,不丢失,不重复,且按序到达,udp尽最大努力交付。tcp通过校验和,重传控制,序号标识,滑动窗口,确认应答实现可靠传输。如果丢时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3.udp具有较好的实时性,工作效率比tcp高,适用于对高速传输和实时性有较高的通信和广播通信。

4.每一条tcp连接只能是点对点的,udp支持一对一、多对一、一对多和多对多的交互通信。

5.tcp对系统资源要求较多,udp对系统资源要求较少。

TCP协议:

流量控制(滑动窗口协议):

TCP流量控制主要使用滑动窗口协议,滑动窗口是接受数据端使用的窗口大小,用来告诉发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量控制的目的。这个窗口大小就是我们一次传输几个数据。对所有数据帧按顺序赋予编号,发送方在发送过程中始终保持着一个发送窗口,只有落在发送窗口内的帧才允许被发送;

同时接收方也维持着一个接收窗口,只有落在接收窗口内的帧才允许接收。这样通过调整发送方窗口和接收方窗口的大小可以实现流量控制。

拥塞控制:慢启动,拥塞避免,快速重传,超时重传

 

 

已标记关键词 清除标记
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页