文章分类 - 十二、面试问题
摘要:简介: 数据从用户空间到写入计算机磁盘,一般会经过以下几个流程:1.写入用户态的内存空间 2.存储到内核内核Page页中 3.调用底层驱动写入到磁盘中。根据用户态数据写入的方式,通常有以下3种方式:buffer io、mmap和direct io,下图为三种方式的具体写入流程: (1)Buffere
阅读全文
摘要:页面置换算法: 在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
阅读全文
摘要:1、找座位 在一个大型体育场举办的活动,要求至少间隔一个空位才可落座。给出一排观众座位分布图,计算在不移动现有观众座位的情况下,最多还能坐下多少名观众。输入是一个数组,0表示该座位没有坐人,1表示该座位已经坐人。输出是一个整数,表示最多还能坐下多少名观众。 #include <iostream> #
阅读全文
摘要:一、标准库 二、通用框架和库 三、异步事件循环 四、并发执行和多线程 五、容器 六、数据库 七、调试库 八、网络 九、日志 十、脚本 十一、Web应用框架 十二、编译器 十三、调试器 十四、集成开发环境(IDE) 十五、构建系统 十六 静态代码分析
阅读全文
摘要:提高C++程序性能的方法有很多种,下面列举了一些常用的方式: 选择合适的数据结构和算法: 使用适当的数据结构和算法是提高性能的关键。例如,对于需要快速查找的场景,选择使用哈希表而不是线性查找。 避免不必要的拷贝: 在函数参数传递和返回值返回时,尽量使用引用(包括常引用和移动语义)来避免不必要的对象拷
阅读全文
摘要:一、程序运行内存分布图 我们知道一个由我们编写好的程序,运行时,我们的程序中写的代码,定义的变量,写的函数、for 循环等等,这些运行时都分布在内存中的哪里吗?一下是一个程序运行时 内存的各个区域的分布: 详细的每个区域存放的内容如下 二、栈 没错,是不是想到了 数据结构的栈: 栈 遵循后进先出,先
阅读全文
摘要:#include <format> #include <iostream> #include<string> using namespace std; #pragma warning( disable : 4996) typedef struct TreeNode { int data; TreeN
阅读全文
摘要:1 为什么要有DMA技术 没有DMA技术之前读取磁盘文件过程: 整个过程CPU无法处理其他事情!!! 简单的搬运几个字符数据那没问题,但是如果我们用千兆网卡或者硬盘传输大量数据的时候,都用 CPU 来搬运的话,肯定忙不过来。 计算机科学家们发现了事情的严重性后,于是就发明了 DMA 技术,也就是直接
阅读全文
摘要:1、假设一个HTTP请求的数据到达网卡,那数据是如何被层层处理并到达应用呢? 2、网卡 网卡(Network Adapter),也称网络适配器,是一个 硬件设备,有全球唯一的 MAC(Media Access Control)地址,MAC地址在网卡生产时就被烧制在ROM中,网卡初始化时恢复到计算机中
阅读全文
摘要:一、互斥锁 最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠等待锁释放时被唤醒 二、递归锁 严格上讲递归锁只是互斥锁的一个特例,同样只能有一个线程访问该对象,但允许同一个线程在
阅读全文
摘要:一、应用场景 多线程对同一资源的竞争,需要用到锁,例如Java自带的Synchronized、ReentrantLock。但只能用于单机系统中,如果涉及到分布式环境(多机器)的资源竞争,则需要分布式锁。 1、分布式锁的主要作用: (1)保证数据的正确性: 比如:秒杀的时候防止商品超卖,表单重复提交,
阅读全文
摘要:客户端与服务器之间的通信是一个数据传输过程。通信的消息将以数据包形式进行传输。为了更有效地进行通信,TCP 协议在数据进行数据传输时,使用滑动窗口机制来同时发送多个数据包。当数据包丢失时,TCP 协议利用数据重发功能重新发送数据包。因接收端接收数据包的能力不同,TCP 流控制会根据接收端的能力发送适
阅读全文
摘要:一、场景 二、面临问题 三、TCP接收缓冲区进入和读取 四、解决 五、实现技术(捎带技术) 如图,可以看出A往B发送了一条数据,B会收到后会发送B的接收缓冲区的大小,TCP发数据是双向的,B也会给A发送消息,B往A发送的Message和rwnd如果是分开的话,效率很低,所以,会当做一包数据发送过去。
阅读全文
摘要:一、分布式缓存 在高并发的分布式的系统中,缓存是必不可少的一部分。没有缓存对系统的加速和阻挡大量的请求直接落到系统的底层,系统是很难撑住高并发的冲击,所以分布式系统中缓存的设计是很重要的一环。下面就来聊聊分布式系统中关于缓存的设计以及过程中遇到的一些问题。 二、缓存的收益与成本 收益: 加速读写。因
阅读全文
摘要:一、分布式 分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种
阅读全文