计算机基础知识复习12.24

ops/2024/12/27 7:24:00/

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?

虚拟机栈中引用的对象

java">public static void main(String []args){Demo demo=new Demo();demo=null;
}

方法区中类静态属性引用的对象

java">public static Demo a;
public static void main(String[]args){Demo b=new Demo();b.a=new Demo();b=null;}

方法区中常量引用的对象

java">public static final Demo a=new Demo();
public static void main(String[]args){Demo demo=new Demo();demo=null;
}

本地方法栈中JNI(native方法)引用的对象

如何实现可重入锁

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,可在子类中重新定义,也可被重新赋值


http://www.ppmy.cn/ops/144913.html

相关文章

windows 钉钉缓存路径不能修改 默认C盘解决方案

1.问题背景 windows系统C盘被钉钉缓存占用大量空间,导致C盘存储严重不足;但钉钉不支持修改缓存路径 2.解决方案 为钉钉缓存路径创建软连接到其他目录 3.解决步骤 a.钉钉设置里找到,钉钉缓存路径 C:\Users\admin\AppData\Roaming\DingTalk …

SSM书影音社区前端设计与实现u15u5--(程序+源码+数据库+调试部署+开发环境)

本系统****(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。**** 系统程序文件列表 开题报告内容 一、项目背景 随着互联网的普及和数字化时代的到来,人们获取信息和娱乐的方式…

Vscode GStreamer插件开发环境配置

概述 本教程使用vscode和Docker搭建Gstreamer2.24的开发环境,可以用于开发调试Gstreamer程序或者自定义插件开发。 1. vscode依赖插件 C/C Extension Pack(ms-vscode.cpptools-extension-pack):该插件包包含一组用于 Visual St…

NGINX常用编译参数

过滤IP组件: –add-module/opt/ngx_http_geoip2_module-3.4 下载地址:ngx_http_geoip2_module 控制heade组件: –add-module/opt/headers-more-nginx-module-0.37 下载地址:headers-more-nginx-module ./configure \--prefix/…

基于Spring Boot的九州美食城商户一体化系统

一、系统背景与目标 随着美食城行业的快速发展,传统的管理方式已经难以满足日益增长的管理需求和用户体验要求。因此,九州美食城商户一体化系统应运而生,旨在通过信息化、智能化的管理方式,实现美食城的商户管理、菜品管理、订单…

verge下最节省gas的智能合约写法

改什么 把map改成array 比如我们现在有三种优先队列的实现. 当前mainet下最节省gas library HeapMapping {using SafeCast for *;struct Uint256Heap {//键是节点在堆中的位置(索引)//值是该位置的父节点的索引。//通过这个映射,可以快速…

电路设计-恒流电路

一、 电路作用 恒流电路是一种能够在一定条件下,使输出电流保持恒定不变的电路。不管负载电阻如何变化或者输入电压如何波动,其输出电流都能维持在一个设定的值。常用于LED驱动和电池充电 二、典型电路 1.三极管恒流电路 图1 …

华为OD E卷(100分)36-补种未成活胡树

前言 工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力…