常识
文章平均质量分 54
tuuzkiii_Tuu
这个作者很懒,什么都没留下…
展开
-
常识 | 蓝牙相关 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 · 1831 阅读 · 0 评论 -
常识 | GPU相关
既可以利用线程间通讯做一些复杂的应用和算法加速,又可以在Block的粒度上自由调度计算任务,在不同计算能力的硬件平台上自适应的调整任务安排。每个核都在执行单指令多线程的程序(SIMT)。GPU相比CPU提供更高的指令吞吐量和内存带宽,GPU和CPU在功能上的差异是因为它们的设计目标不同,GPU 专门用于高度并行计算,因此设计时更多的晶体管用于数据处理,而不是数据缓存和流量控制。比如卷积计算其实是重复相同的动作,即使计算中数据之间的相互影响也具有“局域性”,一个数据单元上的计算最多需要它某个邻域上的数据。原创 2022-10-14 17:46:47 · 639 阅读 · 0 评论 -
常识 | 数据库相关
一致性,规定了事务提交前后,永远只可能存在事务提交前的状态和事务提交后的状态,从一个一致性的状态到另一个一致性状态,而不可能出现中间的过程态。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。原子性,指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。持续性,一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。原创 2022-10-11 21:35:54 · 385 阅读 · 0 评论 -
常识 | 负载均衡、容灾设计、高可用
第二层,服务器池:群集所提供的应用服务(如,HTTP FTP)由服务器池承担,其中的每个节点具有独立的RIP(Real IP,真实IP)地址,只处理调度器分发过来的客户机请求。第一层,负载调度器:这是访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP(Virtual IP,虚拟IP)地址,也称为群集IP地址。节点故障也可用同样的思想,某个节点故障,系统将它的副本提升为主节点,然后将原节点宕机时丢失的数据同步过去。负载均衡主要分为四层和七层负载均衡,对应网络七层模型的第四层和第七层。原创 2022-10-11 20:36:03 · 541 阅读 · 0 评论 -
常识 | 关于驱动....待续
PCI有设备树,用于描述硬件的信息,包含节点各类属性,在dts文件中定义,最终会被编译成dtb文件加载到内存中;Linux内核建立了一个统一的设备模型,分别采用总线、设备、驱动三者进行抽象,其中设备与驱动都挂在总线上,当有新的设备注册或者新的驱动注册时,总线会去进行匹配操作(初始化包括:数据结构的初始化以及设备的初始化等,设备的初始化则需要获取硬件的信息(比如寄存器基地址,长度,中断号等),这些信息都从DTS而来;注册操作主要是包含中断处理函数的注册,以及通常的设备文件注册等;PCI接口到中断号的映射。原创 2022-10-10 11:54:13 · 254 阅读 · 0 评论 -
c++ | cast
父转子不安全的原因:子类的成员/方法往往比父类多,假如原父指针指向父类对象,强制转换成子类指针时,调用子类的方法,但父对象中是没有这个方法的,会出问题。1. 用于含虚函数的父类和子类的转换,主要用于父类转子类。但是,对声明为const的变量来说,常量就是常量,任你各种转化,常量的值就是不会变。函数的形参不是const,且函数不会改动参数值,则使用const_cast。原理是,直接把数据类型A的地址解释成另一个数据类型B的地址,逐个比特复制。3. 子类与父类的转换(子类转父类安全,父类转子类不安全)原创 2022-09-27 17:27:22 · 352 阅读 · 0 评论 -
常识 | dds通信
DDS实现的数据共享可以理解成一个抽象的“全局数据空间”,就好像访问本地的存储空间一样。在系统运行时,数据是按需传输或存储的,数据的发布者仅仅发送对方需要的数据,而订阅者仅接收并存储本地应用程序当前需要的数据。,简单来说就是应用程序调用DataWriter对象提供的write方法,把数据传递给Publisher对象,而Publisher负责将数据在网络上发送出去。DDS在诸多方面提供了更丰富的特性,这自然就导致了在资源需求上,比如内存占用,比SOME/IP要大得多。DDS实时传输协议——原创 2022-09-14 18:26:12 · 2296 阅读 · 0 评论 -
常识 | 一些总线 spi i2c uart
UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多(单片机的书上有介绍的,其实也算不上复杂),一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡。,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种。...原创 2022-08-25 20:20:35 · 588 阅读 · 0 评论 -
c++ | 左值引用 & 右值引用
1、替代需要销毁对象的拷贝,提高效率:某些情况下,需要拷贝一个对象然后将其销毁,如:临时类对象的拷贝就要先将旧内存的资源拷贝到新内存,然后释放旧内存,引入右值引用后,就可以让新对象直接使用旧内存并且销毁原对象,这样就减少了内存和运算资源的使用,从而提高了运行效率;注意:c不可以引用 const a*3,const c 可以引用 const a*3,但是有无const的 a 都不行!注意:b不可以引用const a,但const b 可以引用 const a,也可以a*3, 也可以const a*3。....原创 2022-08-09 22:11:04 · 423 阅读 · 0 评论 -
官方链接们(自存)
Technical LibraryIntel x86/x64 编程手册-开发文档查找以下标题:Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4Directory Listing /ftp/3gpp手册原创 2022-05-28 14:31:03 · 123 阅读 · 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 | 线程与进程详解
区别开销指的是什么进程切换包括1. 切换页全局目录以安装一个新的地址空间2. 切换内核态堆栈和硬件上下文3.刷新TLB4.系统调度器的代码执行看看这些步哪一个不大...如果跨CPU的话,以局部性原理保存的cache也没啥用了,io开销更大为什么多线程编程需要设置锁从原理层面上讲,线程具有自己的寄存器和栈空间,因此线程读变量是在自己的栈/寄存器里去读,并不是读系统的寄存器,所以多线程编程需要注意变量的共享安全性...原创 2022-04-19 20:30:46 · 260 阅读 · 0 评论 -
Linux | 用户态与内核态详解
区别用户态:供应用程序运行的空间,只能受限制地访问内存内核态:控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境为什么要划分1. 安全性给不同的操作给与不同的“权限”。有些指令是非常危险的,如果错用,将导致系统崩溃,比如清内存、设置时钟等。如果允许所有的程序都可以使用这些指令,那么系统崩溃的概率将大大增加。2. 稳定性隔离了操作系统代码与应用程序代码。即便是单个应用程序出现错误也不会影响到操作系统的稳定性,其它的程序还可以正常的运行。如何从用户态进入内核态原创 2022-04-19 18:24:32 · 1355 阅读 · 0 评论 -
Linux | grep seq awk
待续。原创 2022-04-18 16:19:50 · 427 阅读 · 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 评论 -
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 · 1121 阅读 · 0 评论 -
c++ | 智能指针
将普通的指针封装为一个栈对象。当栈对象的生存周期结束后,会在析构函数中释放掉申请的内存,从而防止内存泄漏。auto_ptr(已经弃用)auto_ptr<string> p1 (new string ("aaa)); auto_ptr<string> p2; p2 = p1; // 不报错unique_ptr“独占”所指向的对象 是auto的改进unique_ptr<string> p1 (new string ("aaa")); uniqu原创 2022-03-31 20:57:31 · 1059 阅读 · 0 评论 -
常识 | c的一些关键字
inline它的作用是编译的时候将函数展开,把函数的代码复制到每一个调用该函数的地方。这样调用该函数的地方就可以直接执行函数代码,而不发生跳转、压栈(指的就是递归)等一般性函数操作。可以节省时间,也会提高程序的执行速度。最好是加上static然后放在头文件中。在嵌入式开发中,内联函数还是比较重要的,将一些功能简洁的函数定义为内联函数,可以减少代码的跳转和栈空间的使用,RAM在嵌入式系统中还是比较宝贵的。缺点:程序占用的空间会变大,因为会多一个内联函数的拷贝volatile易变的,希望原创 2022-03-31 15:26:52 · 69 阅读 · 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 评论 -
常识 | 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 · 3166 阅读 · 0 评论 -
常识 | 动态库与静态库
.a是静态链接,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件。特点:静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。编译之后程序文件大,但加载快,隔离性也好。.so是动态链接,将库函数的链接载入推迟到程序运行(runtime)的时期特点:动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。多个应用程序可原创 2022-03-16 14:53:55 · 342 阅读 · 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 评论 -
常识 | b/b+/b-
b/b- 数据分布在整棵树树的高度和每个节点存放的关键字个数决定了搜索效率。b+ 数据都在叶子结点、关键字有序。内部结点因为少了指向关键字的指针,相对B 树更小,节点能容纳的索引更多。因此查询的时候,一次读入内存能查找到更多的信息,可以减少io消耗。每个关键字查询的次数一样。便于遍历,只需要遍历叶子节点就可以获取所有关键字。...原创 2022-03-01 18:04:16 · 81 阅读 · 0 评论 -
常识 | 线程池
优势:通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗当任务到达时,任务可以不需要等到线程创建就能立即执行提高线程的可管理性关键点在于,线程都有keepAliveTime,即线程空闲时的存活时间工作流程(一些关键参数):corePoolSize 线程池中的核心线程数当提交一个任务时,线程池创建一个新线程执行任务,直到当前线程数等于corePoolSize;如果当前线程数为corePoolSize,继续提交的任务被保存到阻塞队列中,等待被执行maximumPoolSize原创 2022-02-28 14:53:33 · 54 阅读 · 0 评论 -
常识 | 关于c++内存(堆、栈)
栈:存储的是局部变量、函数的形参等;由编译器自动分配释放;速度较快;连续的空间栈溢出:递归堆:存储的是new的实体;由程序员分配释放或os自己回收;速度较慢;不连续的空间,因为类似链表。堆溢出:数组过大内存除了堆和栈,还存在静态区,static,全局变量和静态变量的存储是放在一块的,程序结束后由系统释放。文字常量区 ,常量字符串就是放在这里的。程序结束后由系统释放。程序代码区,存放函数体的二进制代码。......原创 2022-02-24 15:42:11 · 712 阅读 · 0 评论 -
c++ | 补基础 | static与const
const:常量,即赋值后不可以被改变static:静态xxx1. 修饰全局变量只能在当前文件可见。所以不同文件中可以定义同名的static全局变量2. 修饰局部变量使局部变量的生存周期从函数结束延长到程序结束3. 修饰函数同14.修饰类成员变量使其成为静态成员变量,该类所有对象这个数据成员都只有一个实例5.修饰类成员方法使其为静态成员方法,只能访问它的参数、类的静态数据成员和全局变量呜呜竟......原创 2021-12-22 21:40:19 · 143 阅读 · 0 评论 -
常识 | zmq通信
一对一:REP-REQ是阻塞式的,必须要client先发送请求给server,然后server才可以返回一个response给client,否则server不会主动发消息一对多:PUB-SUB服务端会管自己pub,接收端能不能收到不关服务端的事情。数据单向流通一对多对一:PUSH-PULL中间的多称为一组worker,负责接收上端任务、(并行)处理、并均匀分配给下端...原创 2022-01-13 16:39:15 · 1791 阅读 · 0 评论 -
常识 | 进程间通信
管道单向的,相当于是内核的一个缓冲区消息队列和管道相比,接收的时候不用按顺序一个一个收,可以自定义顺序套接字客户端和服务端要分别建立一对套接字,客户端进行监听 常识 | zmq通信_tuuzkiii_Tuu的博客-CSDN博客zmq算是一种封装好的套接字,本质上又是一种消息队列信号量就是semaphore共享内存...原创 2022-01-13 16:40:44 · 933 阅读 · 0 评论