Spring概述 什么是Spring Spring是一个生态,可以构建Java应用所需的一切基础设施,通常Spring是指Spring Framework Spring是一个轻量级、非入侵式的控制反转(IoC)和面向切面(AOP)的开源容器框架 容器:包含并管理应用对象的生命周期 Spring框架的好处 轻量:Spring是轻量的,基本的版本大约2MB 控制反转:Spring通过控制反转实现了松散耦合,集中管理对象,方便维护 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 ...
Socket 网络编程对应 TCP 三次握手的环节 服务端和客户端初始化 socket,得到文件描述符; 服务端首先会通过 bind函数给 socket 绑定端口和IP地址,然后调用 listen函数,进行监听,然后调用 accpet 函数等待客户端建立连接。 当客户端调用 connect 函数的时候,...
DNS劫持是什么? 当我们访问网站的时候,实际上是会先进行域名解析得到网站服务器的IP地址,然后才进行后续的访问。DNS劫持利用了这个过程中的漏洞,攻击者在DNS服务器上算改DNS解析结果,将域名解析到攻击者控制的恶意服务器上,这时候我们访问的域名就被重定向到恶意网站上。 解决办法:手动更换公共DNS服务器,绕过被劫特的DNS服务器。 DNS污染是什么? DNS污染就是得到了一个虚假的结果,攻击者监听DNS查询,一旦发现查询的域名与自己是匹配的,就把自己伪装成目标域名服务器,然后返回虚假的结果给用户,这样用户域名解析的结果就是错误的,无法和正确的目标服务器IP进行通信。...
ping的工作原理说一下 ping是通过ICMP协议来实现的,ping的时候,会发送类型为回送请求的ICMP报文,对方接收到之后,就会回复类型为回送响应的ICMP报文。 交换机和路由器有什么区别 交换机工作在MAC层,称为二层网络设备,主要处理数据帧的转发和交换,交换机会根据MAC地址来转发数据包,实现局域网内设备之间的通信。 路由器工作在IP层,称为三层网络设备,主要负责IP数据包的转发和路由选择,路由器会根据IP地址来转发数据包,实现不同网络之间的通信。 IP地址和MAC地址有什么区别 IP地址用于在网络中唯一标识和定位设备,它是在网络层使用...
TCP三次握手 TCP头部有哪些字段 TCP头部字段主要有源端口号、目的端口号、序列号、确认应答号、控制位:SYN、ACK、FIN、RST、头部长度、窗口大小,校验和、紧急指针、可扩展的选项这些。 源端口号和目的端口号是16位大小,源端口是发送方使用的端口号,目的端口是接收方使用的端口号,端口的作用是标识TCP连接是哪个进程...
HTTP HTTP协议的特点是什么? HTTP具有简单、灵活可扩展、无状态等特点,是一种广泛应用于Web通信的协议。 基于文本:HTTP的消息是以文本形式传输,易于阅读和调试。 可扩展性:HTTP协议本身不限制数据的内容和格式,可以通过扩展头部、方法等来支持新的功能。 灵活性:HTTP支持不同的数据格式(如HTML、JSON、XML等),适用于多种应用场景。 请求应答模式:HTTP协议使用的是请求-应答通信模式,请求方先发起连接和请求,是主动的,而应答方只有在收到请求后才能答复,是被动的,如果没有请求时不会有任何动作。 无状态...
网络分层模型 OSI模型和TCP/IP模型 OSI模型 物理层 负责传输比特流,定义物理介质的传输方式、电气特性等(集线器) 数据链路层 负责通过物理连接传输数据帧,提供数据的可靠传输和错误检测(网桥、交换机) 网络层与数据链路层都是基于目标地址将数据发送给接收端的,但是网络层负责将整个数据,而数据链路层则只负责发送一个分段内的数据。 网络层 数据包的路由和转发(路由器,网络层协议包括IP, 互联网控制消息协议(ICMP)) 传输层 提供端到端的数据传输服务,确保数据的可靠传输和流量控制(TCP、U...
类的生命周期 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。 在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。 另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完...
引用 对象的访问方式有哪些? Java程序会通过栈上的reference引用操作堆对象,访问方式由虚拟机决定,主流访问方式主要有句柄和直接指针。 句柄:堆会划分出一块内存作为句柄池,reference中存储对象的句柄地址,句柄包含对象实例数据与类型数据的地址信息。 优点是reference中存储的是稳定句柄地址,在GC过程中对象被移动时只会改变句柄的实例数据指针,而reference本身不需要修改。 直接指针:堆中对象的内存布局就必须考虑如何放置访问类型数据的相关信息,reference存储对象地址,如果只是访问对象本身就不需要多一次间接访问的开...
运行时数据区 运行时数据区是什么 虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区,这些区域有各自的用途、创建和销毁时间。 线程私有:程序计数器、Java虚拟机栈、本地方法栈 线程共享:Java堆、方法区 运行时数据区 程序计数器 是什么:程序计数器是一块较小的内存空间,可以看作当前线程所执...