- 博客(29)
- 收藏
- 关注
原创 搭建LDD(LINUX设备驱动程序)的学习环境
创建虚拟机–》典型–》选择下载好的iso文件-》然后根据需要设置,下一步,直到出现“已选择好创建虚拟机”这个页面,选择“自定义硬件”,选中“CD/DVD”,点旁边的“高级”,将“虚拟设备节点”改成“IDE”,编辑虚拟机设置, 先删除打印机,修改“选项”中的“共享文件夹”设置,改为“总是启用”,这一步是为了之后安装vmware tools做准备,保存。重启后会自动设置一些内容,然后进入这个设置分辨率的界面,我们不用修改,保持默认直接回车。设置用户名,这里是用户的全名,我这里使用了“jest549”。
2024-09-05 13:42:11
303
原创 Ubuntu1604打包QT的程序
一顿操作,放到没有装qt的ubuntu下还是缺库,有报找不到的xcb什么的,有报nss什么的,有报依赖库找不到什么字符定义的。我是下载source文件编译的,需要先安装patch,github地址:https://github.com/NixOS/patchelf/releases,按照说明可以安装好这两个工具。Ubuntu下打包QT的程序是比较难受的,没有一键打包的软件,经常会出现段错误或找不到库,核心思想就是找依赖库,将所有依赖库都拷贝出来。方法一:基于ldd命令,编写脚本复制依赖库(失败了)
2024-09-05 13:16:46
82
原创 json for modern c++库的简单使用
2.整个代码由一个头文件组成json.hpp,没有子项目,没有依赖关系,没有复杂的构建系统,使用起来非常方便。GitHub开源项的地址:https://github.com/nlohmann/json。使用可以参照github的ReadMe文档。5.STL和json容器之间可以相互转换。4.使用json 像使用STL容器一样。3.使用c++11标准编写。
2024-09-05 11:29:25
89
原创 effective C++
以上例子是说明构造函数调用虚函数或纯虚函数,或者析构函数调用了成员函数,而成员函数又调用了虚函数或纯虚函数,要求使用对象内部未初始化成分,是产生不明确的行为的,在基类构造函数早于派生类,而对象的类型属于基类,则被调用的函数是属于基类的,这都体现在编译和链接阶段。使用工厂模式创建类,当delete返回的堆对象时,基类的析构函数没有声明为virtual,且继承的子类的删除是由基类指针被删除的,则基类调用了析构函数,完全删除了,但未调用子类的析构函数,可能子类部分存在未删除的东西。基类的成员变量先初始化。
2024-09-05 11:28:15
378
原创 字符设备驱动LED(IMX6ULL 测试记录)
注册设备号: int register_chrdev_region(dev_t from, unsigned count, const char *name)宏 MINOR 用于从 dev_t 中获取次设备号,取 dev_t 的低 20 位的值即可。宏 MINOR 用于从 dev_t 中获取次设备号,取 dev_t 的低 20 位的值即可。宏 MKDEV 用于将给定的主设备号和次设备号的值组合成 dev_t 类型的设备号。宏 MKDEV 用于将给定的主设备号和次设备号的值组合成 dev_t 类型的设备号。
2024-09-05 11:20:11
404
原创 Tinylog (一个UNIX环境下轻量级的C/C++高性能异步日志组件)
(转)github地址:https://github.com/pymumu/tinylogTinylog是一个UNIX环境下轻量级的C/C++高性能异步日志组件,其提供了高性能,异步,线程安全,进程安全的日志功能。支持日志归档,支持多线程并发写日志,多进程并发写日志,支持非阻塞日志。日志输出例子归档目录例子特性日志压缩归档。日志级别输出。日志格式定制。异步日志输出。多日志文件支持。printf,vprintf类似接口,易于扩展。非阻塞日志。多线程并发写。多进程并发写。c++流风格日
2024-09-05 11:16:22
234
原创 使用VSCode远程登录开发
生成SSH秘钥对 :window终端打开 (一直回车就可以,自动生成并保存在默认路径c:\user\administrator.ssh)ssh-keygen -t rsa -b 4096。有时候需要在服务器开发代码,常规的方法在服务器使用VIM工具开发,或者将服务器的代码复制一份到本地,修改完了就使用ftp工具替换服务器的文件,这样开发效率比较低。指定秘钥对的ssh连接 : ssh -i parivate-rsa-path username@host -p port。选择Remote-SSH下载即可。
2024-09-05 11:12:51
153
原创 select IO服务端回显耗时测试
使用apachebench进行测试,ubuntu 安装sudo apt-get install apache2-utils ,ab -n 2000000 -c 1000 -s 10 -k http://192.168.88.129:11111/对于传输量大,且客户端数量多的,使用线程池处理更适合。对于客户端数量少,可以不使用select机制,一个客户端对用一条线程。使用ab工具测试结果:ab -n 2000000 -c 1000 -k http://192.168.1.1:11111/
2024-09-05 11:08:54
222
原创 ubuntu下解决高并发socket最大连接数限制,tcp默认1024个连接
第三步,修改/etc/sysctl.conf文件,在文件中(清除文件原始内容(或者在原有的基础上添加,我是这么干的))添加如下行(修改网络内核对TCP连接的有关限制)。打开/etc/pam.d/su,发现是包含/etc/pam.d/common-session这个文件的,所以修改哪个文件都应该是可以的。通过这个命令 ulimit -n 可以看到值改为65535了,也就是说现在最多支持65536个tcp socket连接了。这个觉得修改su这个文件比较好,取消注释就OK了,不容易出错。
2024-09-05 10:34:27
84
原创 poll epoll简单的回显服务器
1.poll io服务器(单线程处理所有请求)1000个客户端连接,每3微秒发100K数据。100个客户端连接,每3微秒发100K数据。2.epoll io 服务器(单线程)
2024-09-05 10:31:51
98
原创 密码学基础知识
单向散列函数:MD4(已经不使用)、MD5(已经被破解)、SHA-1(SHA-160,最大长度:2的64次方-1)、SHA-2(SHA-256、SHA-384、SHA-512,最大长度:2的128次方-1)、SHA-3(Keccak算法,SHA-3-224、SHA-3-256、SHA-3-384、SHA-3-512)。用户1使用根CA证书里的公钥,对根CA平台颁发给B的证书进行验签->用户1使用B的公钥,对CA平台B颁发给C的证书进行验签->用户1使用C的公钥,对CA平台C颁发给用户2的证书进行验签。
2024-09-05 09:48:28
230
原创 openssl的计算MD5、AES、RSA
/userkey:用户指定的密码,可以通过MD5、sha等算法生成,也可以用户自定义(注意:密码长度只能是16、24、32字节,如果密码字符串长度不够,可以在字符串末尾追加一些特定的字符,或者重复密码字符串,直到满足最少的长度。以RSA512 padding为例,包括秘钥生成(PKCS#1/PKCS#8)、秘钥加载、加密解密。主要由以下几个函数计算:MD5、MD5_Init、MD5_Update、MD5_Final。
2024-09-05 09:44:31
45
原创 iperf3局域网测试
windows版本下载:iperf官网下载 https://iperf.fr/iperf-download.php,cmd中直接运行iperf3.exe。iperf3源码下载:https://github.com/esnet/iperf或者http://downloads.es.net/pub/iperf/arm移植,把编译的iperf3和动态库放入开发板运行。
2024-09-01 21:23:57
366
原创 vsomeip的json配置文件介绍
有诊断地址在0x45中,当0x4500中的位8被屏蔽时,客户端ID的起始值为0x4401,这将产生0x4400到0x45ff的客户机ID范围。如果为服务实例指定大于1的值,即相应的eventgroup条目将与指定的因子相乘+示例:收到对所提供服务的远程订阅时,TTL为3秒,TTL系数设置为5。如果未指定,默认值为10ms。如果下面的’ids’标记未用于指定方法ID级别上的允许/拒绝请求,则还可以仅指定一组允许/拒绝请求的实例ID范围,类似于允许/拒绝“报价”部分。如果不指定,允许的有效负载大小是无限的。
2024-09-01 21:21:15
899
原创 Linux iptables使用
1.《计算机网络》把网络分为以下几个层次,实际用的是TCP/IP四层协议,iptables是工作在运输层和网际层,属于网络防火墙配置。filter表主要的功能:禁止/允许 某些IP或IP段访问、端口的访问、协议(TCP/ICMP/IGMP)的访问、限制包数与并发包数。iptables的是作用于内核层,对应ip_tables和Nefilter内核模块。3.iptable的命令,输入iptables -h就有以下的帮助信息。四表包括以下:其中nat表和filter表最常用,其他两个表少用。
2024-09-01 17:29:44
331
原创 VSCode常用插件记录
1.[Deprecated] Bracket Pair Colorizer 2 更新为(Rainbow Brackets 2)
2024-09-01 17:24:33
106
原创 TCP协议-传输数据包分片
需要注意的是,TCP拥塞控制和流量控制都是通过发送方和接收方之间交换信息、相互协作来完成的,以达到合理的发送速率和传输质量,并避免对网络造成额外的压力。它指的是在网络通信中,能够传输的最大数据包的大小。需要注意的是,MTU的大小通常是会限制数据包大小的,如果超过了MTU的大小,数据包就会被分片,这会增加传输的时间和网络负担。如果在TCP链路已经建立完成,修改接收方MTU值(单位Byte),但发送方发来的数据包大于接收方的MTU值,可能会被接收方的网络设备丢弃,接收方上层应用表现为丢包。
2024-09-01 17:23:56
685
原创 定位基础知识-GNSS、惯导、基站、WIFI定位
OSR被应用于实时差分定位(RTK)和网络RTK(NRTK)中,当用户与最近的参考站距离在约30公里以内时,OSR服务的精度能达到厘米级甚至毫米级,但基于OSR的方法需要用户发送大致位置信息给参考站,这就要求用户与校正服务提供商之间能实现高带宽的双向通信并且参考站和用户处理的是相同的信号,如果使用人数众多,移动通信网络几乎很难保持稳定的通信水平,这使得它们难以扩展服务规模,来服务于大众市场应用。注入AGNSS数据,也是有要求,一般要求时间要精确,注入UTC时间误差在3-10s,注入位置一般是几公里内。
2024-09-01 17:16:43
1301
原创 C++11新特性
std::weak_ptr的成员函数: use_count( std::shared_ptr引用个数)、expired(对象是否不存在) 、 reset(重置,弱引用计数减1)、lock(返回std::shared_ptr) =nullptr(弱引用计数减1),全局变量、局部静态变量默认捕捉可用。)std::mutex、std::timed_mutex、std::recursive_mutex与std::recursive_timed_mutex互斥量类。//还有sleep_until。
2024-09-01 17:05:05
1164
原创 使用GDB调试(上篇:配置、分析core文件)
set solib-search-path /lib /usr/lib 允许你设置一个或多个目录路径,告诉 GDB 在这些路径下搜索共享库文件.也可以使用冒号连接/lib:/usr/lib。set auto-load safe-path / 加载自动加载的文件时,只从根目录开始寻找并加载,对于安全性很重要,因为它限制了 GDB 在加载文件时的搜索路径。如果不加-g选项进行编译时,就会提示no debug信息,解开core文件后,看到的信息相对比较少,这里是只有函数信息。
2024-09-01 16:18:52
625
原创 使用GDB调试(下篇:调试应用)
当进行基本的 GDB 调试时,我们可以以一个简单的 C 语言程序为例来演示。在 GDB(GNU Debugger)中,有一些常用的调试命令可以帮助你在调试过程中检查程序的状态、执行程序、设置断点等。
2024-09-01 16:13:10
410
原创 Python3测试mysql插入数据代码(chatgpt生成)
先连接mysql数据库,然后读取某个目录所有以txt文件命名后缀的json内容文件,解析出对应的key和value,然后插入数据到mysql数据库,最后关闭数据库连接。
2024-09-01 16:01:13
468
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人