Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

常见的系统概念 #51

Open
BruceChen7 opened this issue Mar 10, 2023 · 0 comments
Open

常见的系统概念 #51

BruceChen7 opened this issue Mar 10, 2023 · 0 comments

Comments

@BruceChen7
Copy link
Owner

BruceChen7 commented Mar 10, 2023

参考资料

可重入和线程安全

  • 可重入就是一个执行绪没有离开这个函数的时候允许另一个执行流进入该函数
  • 线程安全强调的是该函数的实现操作
  • 而可重入性则更多的强调该函数的调用规则
  • 函数的可重入性约束要高于线程安全
  • 可重入函数一定是线程安全的
    • 可重入函数除了不能随意无锁操作全局或静态变量外还不能返回它们,因为可重入性是调用相关的,
    • 一个函数的调用有几个方面:调用,实现,参数,返回值。

little's law

  • 在一个稳定的系统中,设长时间观察到的平均顾客数量为 L,长时间观察到的有效到达速率为λ,平均每个顾客在系统中花费的时间是 W,
  • L = λW

理解

  • 假设有一水管,横截面积为 2 平方米,水速为 5 米/秒,即水的流量速度是 10 立方米/秒,很显然: 
    • 在长度 100 米的水管内,水量为 200 立方米,每滴水从流入到流出,耗时 20 秒,而水的流量速度是 10 立方米/秒,
    • 也就是说,在这段水管中:水量= 耗时 * 流量速度

应用

  • 大一新生的招收速度是 5000 人/年,每个学生在大学停留 4 年,因此,整个大学的人数就是 20000.

QPS、耗时、并发数

  • QPS: 请求进入的速度
  • 耗时:请求停留的时间
  • 并发数:系统中同时存在的请求数
  • 根据 Little's Law,能得到如下的关系式:
    • 并发数 = QPS * 耗时
  • 假设在理想情况下,某系统的请求进入速度是 1 亿次/秒,系统处理的时间趋近为 0,那么这个系统的并发量是多少呢?
    • 虽然每秒有 1 亿次请求,但在某一随机时刻观察系统,会发现系统中不存在请求堆积的问题,系统的并发数趋近 0。
    • 这是一个高 QPS、低延时系统,是一个很好的系统,轻轻松松地快速处理各种请求,来一个灭一个。
    • 值得一提的是,此时并发数很低,但这不表明系统实际能够承受的并发数很低,它实际上可能承受很高的并发数

怎么理解数组中的索引

  • 一般这么理解:
    • img
  • 实际上,也可以理解索引值是指对元素间间隔的编号,需要记住 A[i] 现在被定义为索引 i 之后的元素。
    • img
  • 这样理解后,可以带来如下好处

对 (start, end) 标识的 range

  • img
  • 对开始 start = 1, length = 3
    • 用传统的理解方式,你可能需要考虑是索引范围(1, 3)还是 (1, 4)
    • 用对空格进行编号的形式,你可以这样想想要的编号在(1,4)之间

判断范围相邻

  • img
  • 如果 left.end == right.start 两个范围相邻

判断范围子集

  • img

范围包含 end-start 元素

  • img
  • 需要记住 A[i] 现在被定义为索引 i 之后的元素。

什么是标准输入和命令行参数

  • 用于传递数据和信息给命令或程序。
  • 标准输入(stdin):标准输入是一个用于接收输入数据的概念,它通常与键盘输入或通过管道(pipe)传递数据相关联
    • 当在终端输入数据时,这些数据被发送到当前正在运行的命令或程序的标准输入流。
    • 也可以使用重定向来从文件中读取数据,例如 command < input.txt 将文件内容作为标准输入提供给命令。
  • 命令行参数(command-line arguments)
    • 命令行参数是在【运行命令或程序时附加到命令后面的额外参数】。
    • 它们用于向命令或程序传递配置、选项或操作指令。例如,在 ls -l /path/to/directory 命令中,-l 就是一个命令行参数,用于指定输出格式。
  • xargs 它的主要作用是从标准输入或文件中读取数据,并将其作为参数传递给其他命令。
    • 它可以帮助你处理一组输入,并将其分批传递给其他命令以进行处理。

#type/system #type/linux #public

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant