[计算机知识] 各种小问题思考

哈希算法以及哈希冲突

哈希算法:将任何长度的输入通过散列函数转换成固定长度的字符串

哈希冲突:不同的输入经过哈希函数处理后得到相同的哈希值

        因为哈希函数的输出域是有限的

解决哈希冲突:

1. 开放寻址:产生哈希冲突后,寻找一个空闲位置存储新的元素

2. 链地址法:哈希表的每个槽位是一个链表,新元素与现有元素发生冲突,可以存储在同一个槽位的链表中

Python 和 Cpp的区别

python是脚本语言,解释执行;cpp是编译语言,编译后在特定平台运行

python用缩进来区分不同的代码块;cpp用花括号进行区分

cpp需要事先定义变量类型;python不需要

python的库函数比cpp多,调用更方便

Linux的kill和kill -9的命令区别

kill是发送TERM信号,kill -9是发送KILL信号

kill是软终止信号,告诉进程尽快停止运行,允许进程进行清理动作

kill -9是硬终止信号,立刻停止运行,不做清理和恢复资源机会

TCP粘包的问题和解决方案

粘包:TCP为了保证效率,将发送端的数据粘合在一起,作为一个整体发送,接收端需要进行拆分;如果应用层不处理粘包,会导致无法解析出正确消息

解决方案:

1. 固定长度:每个消息都是固定长度,但浪费带宽

2. 定界符:在消息尾部加上特殊符号

3. 长度字段:在消息的头部加上数据长度的字段,根据长度来读取数据

用户态和内核态

处理器运行在不同的权限级别,定义CPU访问资源的权限级别

用户态:用户运行的应用程序(文本编辑器、游戏);防止直接操作硬件;通过系统调用的方式向操作系统请求服务(读写文件、请求网络资源)

内核态:CPU可以执行任何指令并访问所有资源;负责系统任务,如管理内存、处理中断和异常、输入输出;用户发起请求,CPU进行切换态

例子:

用户进行读取文件、网络通信、设备访问,通过系统调用接口来请求内核服务,从而涉及到用户态到内核态的上下文切换

  1. 应用程序执行系统调用。
  2. CPU 从用户态切换到内核态。
  3. 内核执行所请求的任务。
  4. 任务完成后,内核返回结果,并将 CPU 切回用户态。
  5. 应用程序继续执行。

相关推荐

  1. Kylin系统下Qt的各种中文问题解决思路

    2024-04-04 19:12:02       61 阅读
  2. 计算机各种转换

    2024-04-04 19:12:02       22 阅读
  3. C#各种知识

    2024-04-04 19:12:02       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 19:12:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 19:12:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 19:12:02       82 阅读
  4. Python语言-面向对象

    2024-04-04 19:12:02       91 阅读

热门阅读

  1. 视觉和热成像技术在反无人机中应用

    2024-04-04 19:12:02       40 阅读
  2. RESTfull接口访问Elasticsearch

    2024-04-04 19:12:02       35 阅读
  3. python作用域

    2024-04-04 19:12:02       27 阅读
  4. Spring如何解决循环依赖

    2024-04-04 19:12:02       41 阅读
  5. spark单机版安装

    2024-04-04 19:12:02       36 阅读
  6. 网络安全系统之——PKI体系

    2024-04-04 19:12:02       30 阅读
  7. 查找

    2024-04-04 19:12:02       39 阅读