- 博客(166)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注

原创 C语言:高级IO
man手册7章是在将机制。------- EINTR:(error interrupt)是阻塞的系统调用,动作非常的慢,这个过程被信号打断了,但并不是操作失败,故是个假错。----------EAGAIN.(error again) 是非堵塞的调用,表示,尝试去做了,但是现在没有数据,并不是真的出错了(并不是当前系统调用函数的问题)。
2024-08-10 14:30:17
801
2

原创 C语言:高级并发操作(线程 史上最强教程)
线程:进程中的一个实体,是CPU调度和分派的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器、一组寄存器和栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。线程在运行中呈现间断性。(以上来自《计算机四级教程——操作系统原理》)谈到线程,就有必要说说进程的定义:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
2024-07-11 21:53:47
1537
原创 嵌入式学习前要了解的基础知识
单片机是一种集成电路,它集成了处理器核心CPU、内存、输入/输出(I/O)端口、串行通讯接口、定时器、模拟/数字转换器(ADC/DAC)等多种功能。单片机通常用于控制应用,能够执行简单的程序来管理设备的操作。它们可以是通用的,也可以是为特定应用定制的。也叫(Micro Controller Unit )MCU。
2025-03-03 21:32:24
807
原创 QT(5.15)之QGC(4.4)安装教程
下载需求:需要QT版本为5.15,QGC版本为4.4,必须使用MSVC编译器,不能用Mingw编译器。1. 下载QGroundControl源码QGroundControl 的源代码https://github.com/mavlink/qgroundcontrol。当前示例release版本为4.4稳定版推荐使用git下载源码。直接下载zip 文件不包含相应的子模块源代码。git如果下载过程中失败,需要开梯子。。。。①首先,克隆存储源码库,包括子模块:② 然后进入源码。
2025-02-22 20:47:31
1066
原创 C++数据传输Protobuf使用
从官网下载protobuf-3.21.12版本进行使用,这个版本支持最好,其他的特别麻烦。直接用QtCreator打开CMakeLists.txt文件,然后修改配置里的这几个参数,在执行编译即可。编译完成后即可看到这三个文件。
2025-01-23 21:09:59
399
原创 手写SOCKET进行HTTP通信
默认情况下,Flask会将’Connection: close’头部设置为响应中,这意味着每个请求后都会关闭连接。这是因为Flask采用了短连接的方式,即每个请求都使用一个新的TCP连接。这样做的好处是可以更好地控制资源,并在每次请求之间隔离状态。所以我们在发送请求过程中发过去的数据是keep-alive但是接受到的是clsoe,所以每次发数据都需要重新建立连接发送数据,不能够复用之前的请求。暂时没有找到如何设置Flask的Connection为keep-alive。
2025-01-22 19:48:02
685
原创 C++并发与多线程(高级函数大全)
在 C++ 中,async关键字用于实现异步编程,它允许你定义异步操作,这些操作可以在后台执行,而不会阻塞当前线程。这是 C++11 引入的特性,与std::async函数和类一起使用。与thread函数模板的区别在于async可以有返回值,thread无返回值。
2024-12-18 22:24:38
330
原创 C++11并发与多线程(条件变量)
5. **`wait_for` 和 `wait_until`**:这两个函数允许你指定一个时间段,在这段时间内等待条件变量。- **使用 `unique_lock` 而不是 `lock_guard`**:在等待时,管理 `mutex` 使用的是 `unique_lock` 而不是 `lock_guard`,因为等待时不持有锁。4. **`notify_one` 和 `notify_all`**:`notify_one` 唤醒一个等待的线程,而 `notify_all` 唤醒所有等待的线程。
2024-12-18 22:24:11
408
原创 C++并发与多线程(锁的使用)
它确保所有提供的互斥锁都被锁定,或者在遇到异常时,已经锁定的互斥锁会被解锁,这通过 RAII(资源获取即初始化)风格保证。在构造时不要尝试去锁定传入的互斥锁(mutex),因为互斥锁已经被当前线程锁定。可以在构造时选择是否锁定互斥量,支持手动锁定和解锁,允许条件变量的等待,以及在等待条件变量时自动解锁和重新锁定。会尝试锁定互斥锁,如果互斥锁已经被其他线程锁定,则不会阻塞调用线程,而是立即返回。之前,互斥锁已经被当前线程锁定。这通常用于避免在已经手动锁定互斥锁的情况下,再次尝试锁定互斥锁,从而提高效率。
2024-12-16 21:42:15
813
原创 C++11并发与多线程(线程传参详解)
问题:C++ 线程detach之后 程序退出后子线程还会执行嘛在linux上和windows上?答案:C++线程detach之后,主程序退出子线程也会退出,不会继续执行。但是注意:如果你是对main线程使用了 (pthread_exit(NULL))C语言的线程退出函数,那么主程序退出后,子线程还是会执行的。如果在子线程调用了pthread_exit会对子线程做退出操作,不会对主线程做退出操作。默认的main函数返回的return 0 其实相当于调用了exit(0)代表程序的正常退出。
2024-12-16 21:42:09
626
原创 QT之QML从入门到精通(第十章)完结
qmlplugindump工具 使用qmlplugindump 组件名称 版本号 模块父路径 > 重定向的路径。创建项目选择这个,然后choose ,一直下一步就好。本人这个创建项目后,编译提示报错,暂时没有解决。一般需要release版本的插件去使用。提示:只有注册了才有提示信息,不注册是灭有的。pro文件中设置QML_IMPORT_PATH 指定模块的路径,模块的父路径。
2024-12-14 16:26:54
439
原创 QT之QML从入门到精通(第九章)
/加载之前注册函数。在加载qml之前注册// 是一个用于将 C++ 对象或值暴露给 QML 环境的方法。通过这个方法,你可以在 QML 中直接访问和操作 C++ 对象的属性和方法,实现 C++ 与//本人这里没有这个类型//通过模板创建if (!
2024-11-22 21:08:12
306
原创 QT之QML从入门到精通(第八章)
height: 5Rectangle{id:retradius: 10Rectangle{id:bor_retradius: 10// OpacityMask:{ //制作阴影效果,12版本没有,哭了,这qml真难学// }Button{id:btnx:100width: 50。
2024-11-22 21:07:56
474
原创 QT之QML从入门到精通(第五章)
y:100delegate: ItemDelegate { //针对model每一个项的具体绘制"red":"blue" //下拉框每一个项为红色// indicator: Canvas { //右侧的下拉箭头绘制,使用画布,也可以之间使用image控件// }// }// }contentItem: Text { //控制当前控件的显示内容"red" : "blue" //不安下是蓝色,按下红色。
2024-11-10 14:18:42
491
原创 Linux:C字符串拷贝中的陷阱(strncpy,snprintf)
使用strncpystrncpy(target,source,n)把source中的n个字符或空字符之前的字符(先满足哪个条件就拷贝到何处)拷贝到target中。因此,如果source中的字符数小于n,则拷贝整个字符串,包括空字符。但是,strncpy()拷贝字符串的长度不会超过n,如果拷贝到第n个字符时还未拷贝完整个源字符串,就不会拷贝空字符。所以,拷贝的副本中不一定有空字符。鉴于此,该程序把n设置为比目标数组大小少1(TARGSIZE-1),然后把数组最后一个元素设置为空字符。//只能存放4个数据。
2024-10-18 09:18:02
500
原创 QT日志库:log4Qt及Qt自带日志库使用
Log4Qt是使用Trolltech Qt Framework的Apache Software Foundation Log4j包的C ++端口。它旨在供开源和商业Qt项目使用。所以 Log4Qt 是Apache Log4J 的Qt移植版,所以看Log4J的资料应该是最直接有效的(因为 Log4Qt的直接资料太少了)。Log4Qt主要是用来记录日志(有助于程序调试)。有3个主要的组件:1、Logger提供日志记录服务,可以有多个Logger存在,每个有它们自己的名字。
2024-10-18 09:17:34
1589
原创 QT之QML从入门到精通(第三章)
Button{id:btnwidth: 150"blue":"black" //选中或者按下就走三目运算符Button{id:btnwidth: 150contentItem: Text{ //内容重新绘制import QtQuick.Controls 2.12 //可以引入别的控件Window{width:500height:500Button{id:btnwidth: 150contentItem: Rectangle{ //内容重新绘制Text{id:txt。
2024-09-18 20:11:48
649
原创 QT之QML从入门到精通(第一章)
Window{ //root控件 主界面//自定义一个信号onMySig: { //触发信号所执行的函数,信号名加on,并且第一个字母大写onWidthChanged: { //窗口的宽度改变时会触发这个函数console.log("width change ",width) //打印语句,打印宽度property int myValue: 0 // 创建一个int类型的属性,他也会自动生成信号和槽width: 640x:500;
2024-09-08 14:32:30
8795
原创 C项目实战:基于IPV4流媒体广播系统
目前需要实现基于客户机和服务器模型的网络音频广播/点播系统。本音频可以广泛应用在语音教室和公共广播等多种场景。该软件分为客户端和服务器两个部分,服务器运行在PC机上,客户机可以在PC机或者嵌入式设备上,服务以多播的形式向局域网中所有的客户机发送消息,客户机可以根据自己的选择来决定要接受的数据。
2024-08-10 14:29:11
416
原创 ulimit设置:生成core文件
注意:/proc/sys/下面的文件为内存镜像文件,不能用vi修改。3. echo './core' > /proc/sys/kernel/core_pattern 修改生成core文件的路径,文件,可以将进程的id作为作为扩展名,文件内容为1表示使用扩展名,默认为0;%E:与%e相同,但文件名被转义,以便在shell中安全使用。%%:输出一个单一的 % 字符。%u:被转储进程的实际用户ID。
2024-07-07 12:43:55
538
原创 C语言:流量控制
可以让发送端根据接收端的实际接受能力控制发送的数据量。它的具体操作是,接收端主机向发送端主机通知自己可以接收数据的大小,于是发送端会发送不会超过该大小的数据,该限制大小即为窗口大小,即窗口大小由接收端主机决定。如播放视频,音频文件时,需要对发送的数据进行流控。
2024-06-26 20:27:58
687
1
原创 C实现linux下自己的shell
strsep是 C 标准库字符串实用程序的一部分,定义在<string.h>头文件中。它可以用来从字符串对象中提取被给定定界符包围的标记。strsep需要两个参数-指向char*的指针和指向char的指针。第一个参数用于传递需要搜索的字符字符串的地址。第二个参数指定了一组定界符,用来标记提取的标记的开始和结束。请注意,在提取的标记字符串中,定界符会被丢弃。当找到第一个标记时,第一个参数被修改为存储指向下一个定界符的指针。
2024-06-26 20:27:27
285
原创 C语言:文件系统
在当前目录下使用touch 创建一个名为 -a的文件:touch -a;// 错误,touch -- -a//正确touch ./-a 正确ls -n可以看到对象的用户id,可以在/etc/passwd中查看,/etc/group可以看到组号。
2024-06-16 17:54:33
1376
pyqt写的一个基于当地经济分析的毕业设计项目
2023-02-12
基于PyQt开发的网络测试工具,可直接运行
2023-01-06
没有编译的Qwt文件包
2022-08-31
Qt中的Qwt绘图工具编译后的文件(下载可直接使用)
2022-08-31
geopandas安装包资料
2022-03-30
linux环境疑难求解惑
2024-06-22
Linux环境C未结谜团
2024-06-08
pyqt中pyqtgraph中的BUG
2022-11-07
如何在MySQL中的数据库下删除所有的表
2022-07-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人