摘要: 本文不会直接引入复杂枯燥概念,用形象例子通俗讲解,旨在入门理解。 DNS作用 DNS是用来做域名解析的。 相当于把网址翻译成实际ip地址,供其他设备访问。 一个例子 有一个网站的服务器IP地址为1.1.1.1,用电脑访问该网站的话只需要在浏览器输入1.1.1.1即可进行访问。 但是如果这个网站的服务 阅读全文
posted @ 2023-02-03 15:43 Ethan'Chen 阅读(833) 评论(0) 推荐(0) 编辑
摘要: CAN总线协议 要了解报文数据帧的直接看第三点 1. CAN简介 CAN(controller area network)控制器局域网是用于解决汽车众多控制部件之间的数据交换而开发的一种串行数据通信总线。 其特点有: 总线上节点不分主从 采用载波监听多路访问、逐位仲裁的非破坏性总线仲裁技术。 直接通 阅读全文
posted @ 2022-10-12 00:31 Ethan'Chen 阅读(1144) 评论(0) 推荐(0) 编辑
摘要: I2C协议 物理层 原理 总体特征 电气限制 协议层 起始和停止条件 数据有效性 响应/应答 寻址 读数据 写数据 单片机通讯 软件模拟 硬件外设 (一)物理层 1. 原理 I2C 总线,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。 通信原理是通过对SCL和SDA线高低电平时序的 阅读全文
posted @ 2022-10-12 00:29 Ethan'Chen 阅读(9009) 评论(2) 推荐(1) 编辑
摘要: SPI协议 (一)简介 SPI(Serial Periphera Interface)是串行外设接口的缩写。 特点有: 一种高速的、全双工、同步的串行通信总线; 采用主从方式工作; 一般有一个主设备和一个或者多个从设备; 需要至少4根线:MISO, MOSI, SCLK, CS (二)协议 1. 寻 阅读全文
posted @ 2022-10-12 00:16 Ethan'Chen 阅读(2412) 评论(0) 推荐(0) 编辑
摘要: 缓存一致性问题 问题1:多核CPU与cache的缓存一致性问题 多核CPU在访问内存时,每个核都有自己的cache,由于cache的写回机制,部分数据没有及时更新到内存,那么在不同线程访问同一个变量的时候就会出现不一致的情况 比如核心A访问address1,把address1的数据加载到A的cach 阅读全文
posted @ 2022-09-04 11:30 Ethan'Chen 阅读(709) 评论(0) 推荐(0) 编辑
摘要: 如何实现堆排序 使用 C++ STL派生容器 priority_queue 优先队列 自己写一个小根堆 两种方式各有好处,STL容器的方法用起来方便,而自己写的灵活性更大,可以自定义实现更多操作。 下面介绍一下 priority_queue 在做题的常用方法,以及手撕堆的实现。 优先队列堆排序 优先 阅读全文
posted @ 2022-08-30 17:23 Ethan'Chen 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 在4G主存机器申请8G内存会发生什么 在 32 位操作系统,因为进程最大只能申请 3 GB 大小的虚拟内存,所以直接申请 8G 内存,会申请失败。 在 64 位操作系统,因为进程最大可以申请 128 TB 大小的虚拟内存,即使物理内存只有 4GB,申请 8G 内存也是没问题,因为申请的内存是虚拟内存 阅读全文
posted @ 2022-08-26 15:37 Ethan'Chen 阅读(1429) 评论(0) 推荐(0) 编辑
摘要: 内存回收的方式 前文提到malloc的内存分配方式,malloc申请的是虚拟内存,只有在程序去访问时,才会触发缺页异常进入内核态,在缺页中断函数中建立物理内存映射。 如果物理内存充足,则直接建立页框与页的映射。当物理内存不足时,内核会进行物理内存回收,内存回收的方式主要有: 后台内存回收(kswap 阅读全文
posted @ 2022-08-26 14:41 Ethan'Chen 阅读(3701) 评论(0) 推荐(0) 编辑
摘要: 内核的内存分区 32位机中的虚拟内存大小为4GB,其中0~3GB用于用户空间,3~4GB用于内核空间。 内核的内存空间只有1G,这一部分内存在进程中共享,与用户空间隔离,用户空间不能访问。 内核空间在虚拟内存上分为三个区间:从低到高分别是: ZONE_DMA(16M) ZONE_NORMAL(16~ 阅读全文
posted @ 2022-08-26 09:33 Ethan'Chen 阅读(564) 评论(0) 推荐(0) 编辑
摘要: malloc分配内存的方式 学C语言时我们知道,malloc是动态内存分配,也就是在程序运行执行到malloc函数时才会从堆上分配指定的内存大小。 首先要知道Linux的把内存分为6个区:栈区、文件映射区、堆区、BSS区、数据区、代码区。 分区只在虚拟内存上进行逻辑划分,物理内存上不存在逻辑分区的概 阅读全文
posted @ 2022-08-24 20:08 Ethan'Chen 阅读(4041) 评论(0) 推荐(0) 编辑