什么都来点
文章平均质量分 60
_
tuuzkiii_Tuu
这个作者很懒,什么都没留下…
展开
-
常识 | drm kms 详解
可以使用pci_map_rom()调用来映射BIOS,这是一个方便的函数,它负责映射实际的ROM,不管它是否已经被隐藏到内存中(通常在地址0xc0000),还是存在于ROM BAR中的PCI设备上。相反,它遵循Unix“一切都是文件”的原则,通过文件系统名称空间公开gpu,使用/dev层次结构下的设备文件。通过使用辅助函数drm_gem_prime_export和drm_gem_prime_import,驱动程序可以在更简单的api中实现gem_prime_export和gem_prime_import。原创 2022-10-26 15:26:04 · 2690 阅读 · 1 评论 -
常识 | zmq通信
一对一:REP-REQ是阻塞式的,必须要client先发送请求给server,然后server才可以返回一个response给client,否则server不会主动发消息一对多:PUB-SUB服务端会管自己pub,接收端能不能收到不关服务端的事情。数据单向流通一对多对一:PUSH-PULL中间的多称为一组worker,负责接收上端任务、(并行)处理、并均匀分配给下端...原创 2022-01-13 16:39:15 · 1793 阅读 · 0 评论 -
常识 | 进程间通信
管道单向的,相当于是内核的一个缓冲区消息队列和管道相比,接收的时候不用按顺序一个一个收,可以自定义顺序套接字客户端和服务端要分别建立一对套接字,客户端进行监听 常识 | zmq通信_tuuzkiii_Tuu的博客-CSDN博客zmq算是一种封装好的套接字,本质上又是一种消息队列信号量就是semaphore共享内存...原创 2022-01-13 16:40:44 · 933 阅读 · 0 评论 -
常识 | b/b+/b-
b/b- 数据分布在整棵树树的高度和每个节点存放的关键字个数决定了搜索效率。b+ 数据都在叶子结点、关键字有序。内部结点因为少了指向关键字的指针,相对B 树更小,节点能容纳的索引更多。因此查询的时候,一次读入内存能查找到更多的信息,可以减少io消耗。每个关键字查询的次数一样。便于遍历,只需要遍历叶子节点就可以获取所有关键字。...原创 2022-03-01 18:04:16 · 82 阅读 · 0 评论 -
Linux | 中断的上下部分
目的中断中可能没办法很快的处理完需要做的事,导致关中断时间过长,cpu效率下降,因此,引入中断的上下部分。上部分处理紧急事务(负责响应中断),其余的(中断服务程序)交给中断下半部。上半部分主要负责响应中断,这个part的关中断是关闭整个cpu的中断,即这个part是不会被任何打断的,因此它处理起来很快。具体:把剩下的、复杂的服务程序挂到下半部的队列上去,让下半部分慢慢处理。下半部分这个part可以被中断,即不需要关整个cpu的中断。具体实现方法:软中断、tasklet和等待队列。ta原创 2022-03-10 21:15:41 · 521 阅读 · 0 评论 -
常识 | 线程池
优势:通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗当任务到达时,任务可以不需要等到线程创建就能立即执行提高线程的可管理性关键点在于,线程都有keepAliveTime,即线程空闲时的存活时间工作流程(一些关键参数):corePoolSize 线程池中的核心线程数当提交一个任务时,线程池创建一个新线程执行任务,直到当前线程数等于corePoolSize;如果当前线程数为corePoolSize,继续提交的任务被保存到阻塞队列中,等待被执行maximumPoolSize原创 2022-02-28 14:53:33 · 54 阅读 · 0 评论 -
Linux | 锁
spinlock定义:一个线程获取了一个自旋锁后,另外一个线程期望获取该自旋锁,获取不到,只能够原地spin(忙等待,浪费cpu)。因此,自旋锁不应该被长时间的持有。可能存在的问题:线程自身线程A获取了一个锁,被中断处理程序打断,中断处理程序也要获取这个锁但不行,开始spin,中断无法退出,导致线程A中后面释放锁的代码无法被执行,死锁。解决方法让中断和线程不要访问同一个锁可能存在的问题:线程与线程线程A和B访问共享资源。A获取了一个锁,访问时被中断,唤醒了优先级更高的B(内核cpu的抢占)原创 2022-03-11 14:31:27 · 195 阅读 · 0 评论 -
刷题 | 设计模式
工厂模式:一个抽象类+多个具体的实现类+一个工厂类// 抽象类class Shape {public: virtual void GetShape() = 0;};// 具体实现类class Circle :public Shape { public: void GetShape() { cout << "A circle" << endl; } };class Square :public Shap原创 2022-02-20 20:30:20 · 329 阅读 · 0 评论 -
常识 | hashset去重
关键点: 存储数据 /** * Implements Map.put and related methods * * @param hash hash for key * @param key the key * @param value the value to put * @param onlyIfAbsent if true, don't change existing value * @param evict if f原创 2022-03-12 14:56:55 · 100 阅读 · 0 评论 -
Linux | grep seq awk
待续。原创 2022-04-18 16:19:50 · 429 阅读 · 0 评论 -
shell | 基基基础
1. 变量赋值不可以有空格2. 变量赋值不加$, 使用变量的时候才加$3. 字符串变量:一般用双引号str=“aaa”;获取字符串长度:# (数组也是len=${#str};提取子串, 从第二个位置开始 取2个字符s=${str:1:2};4. 数组变量用()表示,并用空格分开arr=(1 2 3);获取数组的所有元素:@或者*echo ${arr[@]}获取数组长度len=${#arr[@]}; // 注意要加[@],否则#arr会输出15. 运算算术表...原创 2022-04-15 19:45:50 · 77 阅读 · 0 评论 -
常识 | 虚拟化
VM(virtual machine)虚拟机; VMM(virtual machine monitor)提供虚拟化的平台;在VMM上运行的虚拟机称为geust VM。主流的虚拟化技术架构:hypervisor:VMM是一个完备的OS,包含物理资源和虚拟化功能,虚拟机的cpu、内存、io等都归VMM所有。比较高级,需要开发大量的io驱动。host:物理资源由传统的OS提供,VMM是作为OS中的一个模块(进程),专门提供虚拟化功能,通过调用OS服务来获得资源。可以充分利用已有的驱动。混合模型:VMM拥有物理原创 2022-03-24 15:08:42 · 1219 阅读 · 0 评论 -
常识 | 基础正则
字符分为普通字符(以下用ab表示)和元字符(含特殊意义的字符)基础正则:a 匹配a本身 . 匹配任意一个字符 c.t cat cbt c1t a* 匹配任意n个字符(包括0) ab* ab abb abcde [ab] 匹配a或b [^ab] 匹配除了a,b以外任意一个 [A-Z] 匹配一个大写字符 ^ 匹配行首 ^$ 一个空行 $原创 2022-04-24 23:44:37 · 63 阅读 · 0 评论 -
Linux | 常用命令
find path -option [ -print ] [ -exec -ok command ] {} \;path为空时默认当前路径;option为空时则使用-print;[执行command]为可选项,-exec 就是直接执行,-ok为执行前询问;{} \查找指定名字的文件find -name"xxxxx"-name 通过名字查找,-iname也是,但不分大小写找到/usr 目录下找出大小超过 10MB 的文件find /usr -type f -size +10240k-t...原创 2022-04-15 15:14:40 · 1130 阅读 · 0 评论 -
常识 | x86与ARM
x86最早是英特尔推出的cpu架构,后被IBM PC选用,成为PC的标准平台。AMD后来获得了x86的授权,成为64位x86的开拓者。x86基于CISC,在性能方面要快得多、强得多,容易进行性能扩展,如增加内存、硬盘等,在兼容性方面具有无可比拟的优势,有大量的第三方软件可供选择。但是系统的续航能力弱、体积无法缩小、稳定性差。ARM早期采用的是出售许可证的方法,厂商可以更改core配置,但不能修改core本身的设计。后来ARM公司又推出了架构授权,允许芯片厂自行设计ARM架构的core,目前获得这种授原创 2022-03-23 17:58:55 · 3169 阅读 · 0 评论 -
常识 | 动态库与静态库
.a是静态链接,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件。特点:静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。编译之后程序文件大,但加载快,隔离性也好。.so是动态链接,将库函数的链接载入推迟到程序运行(runtime)的时期特点:动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。多个应用程序可原创 2022-03-16 14:53:55 · 350 阅读 · 0 评论 -
常识 | 蓝牙相关 BT/BLE
BLE协议详细 --- 全称Bluetooth Low Energy,即蓝牙低功耗。1. 在预定的物理信道上,发送方发送某个代表连接的包,接收方就在该信道上直接回应。借用了wifi的phy和mac层(简称AMP) -- 50+Mbps。选择具体的通信命令,如读/写/notify/indicate。选择射频通道、数据过滤、完整性检查、重传、链路管理、流量控制。指定物理信道,增加头部标识、消息长度、CRC、目标地址。蓝牙初始阶段用的就是BR -- 700+Kbps。定义用户命令及命令操作的数据。原创 2022-10-18 12:48:28 · 1857 阅读 · 0 评论 -
Intel64和IA-32架构软件开发者手册第1卷:基本架构
第1章-关于本手册。给出了英特尔®64和IA-32架构软件开发者手册的所有五卷的概述。它还描述了这些手册中的符号约定,并列出了程序员和硬件设计人员感兴趣的相关Intel手册和文档。第2章- Intel®64和IA-32架构。介绍Intel 64和IA-32架构以及基于这些架构的Intel处理器系列。它还概述了这些处理器的常见特性,以及Intel 64和IA-32架构的简要历史。第3章-基本执行环境。介绍了内存组织的模型,并描述了应用程序使用的寄存器集。第4章-数据类型。描述处理器识别的数据类型和寻址模原创 2022-05-30 11:33:31 · 2048 阅读 · 0 评论 -
常识 | GPU相关
既可以利用线程间通讯做一些复杂的应用和算法加速,又可以在Block的粒度上自由调度计算任务,在不同计算能力的硬件平台上自适应的调整任务安排。每个核都在执行单指令多线程的程序(SIMT)。GPU相比CPU提供更高的指令吞吐量和内存带宽,GPU和CPU在功能上的差异是因为它们的设计目标不同,GPU 专门用于高度并行计算,因此设计时更多的晶体管用于数据处理,而不是数据缓存和流量控制。比如卷积计算其实是重复相同的动作,即使计算中数据之间的相互影响也具有“局域性”,一个数据单元上的计算最多需要它某个邻域上的数据。原创 2022-10-14 17:46:47 · 646 阅读 · 0 评论 -
常识 | 负载均衡、容灾设计、高可用
第二层,服务器池:群集所提供的应用服务(如,HTTP FTP)由服务器池承担,其中的每个节点具有独立的RIP(Real IP,真实IP)地址,只处理调度器分发过来的客户机请求。第一层,负载调度器:这是访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP(Virtual IP,虚拟IP)地址,也称为群集IP地址。节点故障也可用同样的思想,某个节点故障,系统将它的副本提升为主节点,然后将原节点宕机时丢失的数据同步过去。负载均衡主要分为四层和七层负载均衡,对应网络七层模型的第四层和第七层。原创 2022-10-11 20:36:03 · 544 阅读 · 0 评论 -
移动通信 | 5G | 基基基础
1G--模拟通信 AMPS 高级电话系统 TACS 全球接入系统 NMT2G--数字通信 GSM 全球移动通信系统 改进--GPRS 通用分组无线业务 EDGE 增强了数据速率 CDMA 码分多址3G--移动多媒体 TD-SCDMA 时分双工 WCDMA CDMA20004G--移动宽带 TD-LTE ...原创 2022-05-22 16:47:16 · 286 阅读 · 0 评论 -
常识 | 数据库相关
一致性,规定了事务提交前后,永远只可能存在事务提交前的状态和事务提交后的状态,从一个一致性的状态到另一个一致性状态,而不可能出现中间的过程态。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。原子性,指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。持续性,一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。原创 2022-10-11 21:35:54 · 385 阅读 · 0 评论 -
3GPP | 基础
3GPP包括项目合作组 PCG 和技术规范组 TSG其中TSG包括三大业务:RAN无线接入网 Radio Access NetworksCT核心网&终端 Core Network & TerminalsSA业务&系统 Services & Systems Aspects各自包含了一些工作组WG,如RAN分为WG 1-6,1负责物理层,2负责层2和层3、4是射频性能等工作组WG提供技术规范TS(Technical Specifications)和技术报告T...原创 2022-05-22 20:09:12 · 827 阅读 · 0 评论 -
常识 | dds通信
DDS实现的数据共享可以理解成一个抽象的“全局数据空间”,就好像访问本地的存储空间一样。在系统运行时,数据是按需传输或存储的,数据的发布者仅仅发送对方需要的数据,而订阅者仅接收并存储本地应用程序当前需要的数据。,简单来说就是应用程序调用DataWriter对象提供的write方法,把数据传递给Publisher对象,而Publisher负责将数据在网络上发送出去。DDS在诸多方面提供了更丰富的特性,这自然就导致了在资源需求上,比如内存占用,比SOME/IP要大得多。DDS实时传输协议——原创 2022-09-14 18:26:12 · 2306 阅读 · 0 评论 -
常识 | 关于驱动....待续
PCI有设备树,用于描述硬件的信息,包含节点各类属性,在dts文件中定义,最终会被编译成dtb文件加载到内存中;Linux内核建立了一个统一的设备模型,分别采用总线、设备、驱动三者进行抽象,其中设备与驱动都挂在总线上,当有新的设备注册或者新的驱动注册时,总线会去进行匹配操作(初始化包括:数据结构的初始化以及设备的初始化等,设备的初始化则需要获取硬件的信息(比如寄存器基地址,长度,中断号等),这些信息都从DTS而来;注册操作主要是包含中断处理函数的注册,以及通常的设备文件注册等;PCI接口到中断号的映射。原创 2022-10-10 11:54:13 · 254 阅读 · 0 评论 -
常识 | 一些总线 spi i2c uart
UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多(单片机的书上有介绍的,其实也算不上复杂),一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡。,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种。...原创 2022-08-25 20:20:35 · 595 阅读 · 0 评论