在线音乐网站源码,西安做网站服务,专业网站营销,安庆网站建设哪家好http和https有那些区别
http是超文本传输协议#xff0c;信息是明文传输#xff0c;存在安全风险的问题#xff0c;https则解决http不安全的缺点#xff0c;在TCP和HTTP网络层之间加入了SSL/TLS安全协议#xff0c;使得报文能够加密传输
http连接建立相对简单#xff0…http和https有那些区别
http是超文本传输协议信息是明文传输存在安全风险的问题https则解决http不安全的缺点在TCP和HTTP网络层之间加入了SSL/TLS安全协议使得报文能够加密传输
http连接建立相对简单tcp三次握手之后便可进行http的报文传输而https在tcp三次握手之后还需进行ssl/tls的握手过程才可进入加密报文传输
sleep()和wait()方法对比
sleep方法没有释放锁而wait方法释放锁wait()通常被用于线程间交互/通信 sleep()通常被用于暂停执行
wait()方法被调用后线程不会自动苏醒需要别的线程调用同一个对象上的notify或者notifyAll
那些对象可以作为GC Root
虚拟机栈中引用的对象
public static void main(String []args){Demo demonew Demo();demonull;
}
方法区中类静态属性引用的对象
public static Demo a;
public static void main(String[]args){Demo bnew Demo();b.anew Demo();bnull;}
方法区中常量引用的对象
public static final Demo anew Demo();
public static void main(String[]args){Demo demonew Demo();demonull;
}
本地方法栈中JNInative方法引用的对象
如何实现可重入锁
synchronized的可重入性通过JVM内部机制实现具体来说每个锁对象都有一个计数器来记录当前持有该锁的线程重入的次数。
当一个线程首次获取锁计数器加1如果同一个线程再次获取锁计数器1再次加1这就是所谓的重入每次线程释放锁计数器会减一只有当计数器减为0时锁才会释放
OSI模型
应用层负责给应用程序提供统一的接口
表示层负责把数据转换成兼容另一个系统的能够识别的格式
会话层负责建立管理终止表示层实体之间的通信方式
传输层负责端到端的数据传输
网络层负责数据的路由转发分片
数据链路层负责数据的封帧和差错检测 以及Mac寻址
物理层负责在物理网络中传输bit流
Read View在MVCC工作模式
m_ids:指的是在创建Read View 时当前数据库中活跃事务的事务id列表
JDK动态代理和CGLib代理区别
JDK动态代理是基于接口的代理只能代理实现了接口的类
CGLIB动态代理是基于继承的代理可以代理没有实现接口的类使用CGLib动态代理时Spring AOP会生成目标类的子类并在方法调用前后插入横切逻辑
String 适用于少量的数据
StringBuilder: 单线程操作字符串缓冲区下操作大量数据
StringBuffer多线程操作字符串缓冲区下操作大量数据
深拷贝和浅拷贝
浅拷贝只复制对象本身和其内部的值类型字段但不会复制对象内部的引用类型字段浅拷贝只是创建一个新的对象然后将源对象的字段值复制到新对象中但如果源对象内部有引用类型字段只是将引用复制到新对象中两个对象指向同一个引用对象
深拷贝指在复制对象的同时将对象内部的所有引用类型字段的内容也复制一份而不是共享引用深拷贝会递归复制对象内部所有引用类型的字段生成一个全新的对象以及其内部的所有对象
BIO 同步阻塞 应用程序发起read调用后会一直阻塞直到内核把数据拷贝到用户空间
NIO 同步非阻塞IO模型中应用程序会一直发起read调用等待数据从内核空间拷贝到用户空间的这段时间里应用程序不断进行I/O系统调用轮询数据是否已经准备好的过程的十分消耗CPU资源
IO多路复用模型线程首先发起select调用询问内核数据是否准备就绪等内核把数据准备好了用户线程read再发起read调用read调用的过程(数据从内核空间-用户空间)还是阻塞的
选择器selector 多路复用器通过它只需要一个线程便可以管理多个客户端连接当客户端数据到了之后才会为其服务。
JVM内存模型里的堆和栈有什么区别
栈主要用于存储局部变量方法调用的参数方法返回地址以及一些临时数据。每当一个被调用一个栈帧就会在栈中创建用于存储该方法的信息当方法执行完毕后栈帧也会被移除堆用于存储对象的实例当你使用new关键字创建一个对象时对象的实例就会在堆上分配空间
生命周期栈中的数据具有确定的生命周期当一个方法调用结束时其对应的栈帧就会被销毁栈中存储的局部变量也会随之消失堆中的对象生命周期不确定对象会在垃圾回收机制检测到对象不再被引用时才被回收
存取速度栈的存取速度比堆快因为栈遵循先进后出的原则操作快速简单堆的存取速度相对较慢
存储空间栈的空间相对较小且固定由操作系统管理当栈溢出时通常是因为递归过深或局部变量过大。堆的空间较大动态扩展由JVM管理。堆溢出通常是由于创建了太多的大对象或未能及时回收不再使用的对象
可见性栈中的数据对线程是私有的每个线程有自己的栈空间堆中的数据对线程是共享的所有线程都可以访问堆上的对象
抽象类和接口区别
实现方式实现接口的关键字为implements 继承抽象类的关键字extends一个类可以实现多个接口但一个类只能继承一个抽象类所以接口可以间接实现多重继承
方法方式接口只有定义不能有方法的实现抽象类可以有定义与实现方法可在抽象类中实现
变量抽象类可以包含实例变量和静态变量而接口只能包含常量
访问修饰符接口成员变量默认为public static final 必须赋初值不能被修改 抽象类中成员变量默认为default可在子类中重新定义也可被重新赋值