1. 上下文
定义
上下文,上下文代表了程序当下所运行的环境,联系你整个app的生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用。
举例:
- 比如我们在Spring中的数据源,就是存储在上下文中的,这个时候,不论是哪里的代码,都是可以通过上下文获取到数据连接并进行相关的操作,同样的,我们可以在任何地方通过spring中的上下文获取到bean和其他的配置信息,当然,这里的任何地方是我们Spring初始化工作完成之后的地方。
- 再比如我们应用进行线程切换的时候,切换前都会把线程的状态信息暂时储存在寄存器中,这里的上下文就包括了当时寄存器的值,把寄存器的值都保存起来,等下次该线程又得到CPU时间的时候再恢复寄存器的值,这样线程才能正确的运行。
一个简单的概念含义本身是清晰的,一万人看完以后,又给出一万个解释,每个人的解释又不能说是错的。然后新人又不得不把这一万个解释理解了,归纳成自己的理解。什么是上下文,可惜书里从没记载,终于摸出来但岁月却不回来。
参考:
2. SpringBoot项目的ClassPath,什么意思?
SpringBoot项目中的ClassPath
路径指的是哪个路径?
定义
顾名思义,classpath就是class的path,也就是类文件(*.class的路径)。
classpath
指的是src.main.java和src.main.resources路径(class路径)classpath*
除了上面两个路径外,还包含第三方jar包的根路径(包含这三个路径)
参考:
- https://blog.csdn.net/y_chengbo/article/details/110118195
- https://segmentfault.com/a/1190000015802324
- https://cloud.tencent.com/developer/article/1452740
3. 什么是快照?
定义:
个人理解:
快照相当于一张表,记录着地址和数据的映射关系。地址分逻辑地址、快照地址、物理地址。
物理地址是不变的,
- 通过逻辑地址与物理地址的映射关系,可找到已修改后的数据。
- 通过快照地址与物理地址的映射关系,可找到做快照的数据。
举例:
哪里用到了这个名词?
- Redis持久化策略的RDB方式:在指定的时间间隔内,将内存中的数据集的快照写入磁盘。
4. 冷备?热备?
也就是冷备份,热备份
定义
个人理解:
(1)冷备份:数据库关闭时,做的备份。
(2)热备份:数据库正在运行时,做的备份。
举例
- Redis的RDB持久化策略,需要关闭主进程进行备份(无论是save命令方式,还是bgsave命令方式,都需要关闭主进程,后者是又创建了一个子进程,但主进程同样也是关闭了)。
参考:https://www.infocode.com.cn/blog/414.html
5. 字面量?直接量?
- 在java中,字面量literal,又叫直接量literal,你能看到的确切的值就是字面量,看到什么就是什么。(他们的英文都一样)。
var num = 1; // 意思是把字面量1赋值给变量num
const str = "JavaScript"; // 意思是把字面量"JavaScript"赋值给了常量str
参考:https://blog.csdn.net/qq_43738157/article/details/84397637
- 在js中,他们有一点区别:
<!--对象字面量-->
<!--字面量与直接量创建方式例子:-->
var obj = new Object() //对象字面量
var obj = {} //对象直接量
参考:https://blog.csdn.net/qq_42572514/article/details/91391855
6. 套接字socket?
TCP/IP4层模型:*
- 应用层
- 传输层
- 网络层(也叫网络互连层)
- 数据链路层(也叫主机到网络层,网络访问层)
定义
网络应用(应用层)通信的实质是进程之间的通信。应用层接收的是传输层的数据,传输层真正连接的是套接字,通过套接字将数据发送给特定的进程。
如下图:
参考:https://blog.csdn.net/shang_0122/article/details/104273944
7. java环境变量classpath(作用)
定义
我们在安装jdk时,一般都要配置环境变量classpath,这个环境变量classpath的作用是指定在哪里运行class文件,但是有的时候不对这个环境变量做配置,也不会影响程序运行。这是因为在jdk1.5之后,环境变量classpath默认把当前路径设置为classpath指定的路径(在哪里文件夹下,就指定哪个路径为classpath)。当然也可以指定环境变量classpath,但是这样做有很多弊端,无论在哪里运行java程序,都会在classpath指定的路径中去寻找并加载class文件。
作用
classpath环境变量的作用是指定在哪里运行class文件,jdk1.5之后,环境变量classpath默认把当前路径设置为classpath指定的路径(在哪里文件夹下,就指定哪个路径为classpath)。
(这这说明了另一道题——类加载器,启动类加载器默认加载classpath环境变量下路径中的类,也就是说启动类加载器默认加载程序开发者自己编写的java类。)
参考:https://www.bilibili.com/video/BV1SQ4y1K7Cr/?spm_id_from=333.880.my_history.page.click
8. 单工?半双工?全双工通信?
定义
- 单工:只能单向发送数据
- 半双工:半双工通信允许信号(数据)在两个方向上传输,但同一时刻只允许信号在一个信道上单向传输。(因为只有一个信道)
- 全双工通信:全双工通信允许数据同时在两个方向上传输,即有两个信道,因此允许同时进行双向传输。
参考:https://blog.csdn.net/iningwei/article/details/100134783
9. 寄存器
定义
什么是寄存器?
- 寄存器就是你的口袋。身上只有那么几个,只装最常用或者马上要用的东西。
- 内存就是你的背包。有时候拿点什么放到口袋里,有时候从口袋里拿出点东西放在背包里。
- 硬盘就是你家里的抽屉。可以放很多东西,但存取不方便。
或者可以比作:
如果把被储存的东西比作能量:
- 寄存器就是 ATP,可以随时拿来用,性能高,但数量有限;
- 内存就是葡萄糖,性能一般,但是存量可以比较多;
- 外存(比如硬盘)就是脂肪,容量可以非常大,性能很差,要先转化为葡萄糖(存进内存),然后转化为 ATP(放到寄存器)才能直接利用(存取)。
参考:https://www.zhihu.com/question/20539463
感觉这个东西没有必要知道的过于细节,知道干什么就行,日后用到再查。