自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1929)
  • 问答 (2)
  • 收藏
  • 关注

转载 Linux C 获取主机网卡名及 IP 的几种方法

在进行Linux时,经常会需要获取本机IP地址,除了常规的读取配置文件外,本文罗列几种个人所知的编程常用方法,仅供参考,如有错误请指出。

2025-08-21 12:46:17 18

转载 常用希腊字母与英文字母对照表;希腊字母中文发音

工程学中表示直径(大写斜体)磁导系数微(千分子一)放大因数(小写);磁感应强度(大写);介质电通量(静电力线);

2025-08-19 12:51:11 199

转载 linux service 怎么添加新 services

我们在日常使用Linux的过程中经常会用到service XXX start/stop/restart等命令对相关系统服务进行控制。(CentOS在版本7之前,CentOS7以及最新版Ubunt都是用systemctl来对系统服务进行管理,当然原来的还是可以用的=。=)看到公司的产品也是使用service开关系统服务的,查阅了相关资料,特在此总结一下。

2025-08-15 10:01:27 48

转载 linux守护进程之setsid理解

一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。有必要先介绍一下Linux中的进程与控制终端,登录会话和进程组之间的关系:进程属于一个进程组,进程组号(GID)就是进程组长的进程号(PID)。//调用进程必须是非当前进程组组长,调用后,产生一个新的会话期,且该会话期中只有一个进程组,且该进程组组长为调用进程,没有控制终端,新产生的group ID 和 session ID 被设置成调用进程的PID。

2025-08-14 18:11:34 40

转载 【Linux】守护进程( Daemon)的定义,作用,创建流程

因此,通常的做法是让"/"作为守护进程的当前工作目录,这样就可以避免上述的问题,当然,如有特殊需要,也可以把当前工作目录换成其他的路径,如/tmp,改变工作目录的常见函数是chdir。为什么要再次fork呢,假定有这样一种情况,之前的父进程fork出子进程以后还有别的事情要做,在做事情的过程中因为某种原因阻塞了,而此时的子进程因为某些非正常原因要退出的话,就会形成僵尸进程,所以由子进程fork出一个孙进程以后立即退出,孙进程作为守护进程会被init接管,此时无论父进程想做什么都随它了。

2025-08-14 17:30:42 41

转载 Apollo:源码分析之signal.h

然后它还重载了operator()函数,它会调用关联到这个信号对应的所有槽(所有关联的回调函数),其实就是通知所有监听该信号的回调函数。小结:保存了一个信号的指针一个槽的指针,一个Connection实例就代表了一条关联关系。关键函数:关键自傲与重写了operator(),如果满足要求,那么调用了Slot(…用来将标记置为false。connect的断开动作是调用信号signal_的Disconnect实现的。可以看到具体的动作就是slot的operator()来做的。Signal中的函数都是线程安全的。

2025-08-06 12:39:57 104

转载 Linux--信号(万字详解!超完整!)

我们都知道,在管道通信时,读端关闭,写端一直进行,写就没有意义了,这时候操作系统,就会向进程发送SIGPIPE(13号信号),终止进程。

2025-08-06 12:38:33 125

转载 03. 理解文件系统inode,superblock

好了,到现在为止从01. 数据在磁盘中的存储 和 02. 数据在flash的存储,我们理解了说在硬件层面上数据的存储,也理解了为了使得文件系统和底层的物理特性解耦合,我们在文件系统中设定了 "逻辑块" 的概念,并且使用 映射层 来实现从逻辑块和物理地址的映射,不论是基于磁盘还是基于flash。由此我们开始使用逻辑块的概念理解文件系统。基本围绕的话题有通过理解这些问题,基本了解文件系统的读写首先就是文件系统存储的数据实际上是两个部分纯数据区元数据区。

2025-08-01 14:42:57 82

转载 Linux内核之IO2:EXT文件系统详解(案例解析)

一切都是文件,Linux通过VFS中间层,支持多种文件系统,对APP统一接口;文件系统的本质是将用户数据和(管理数据的数据),组织成有序的目录结构。

2025-08-01 14:31:06 55

转载 day026-网络基础-TCP11种状态与网络管理命令、抓包

命令LinuxWindows查询IP地址ip aifconfigipconfig检查端口号ssnetstatlsofnctelnetnmap检查连接情况测速iftopnethogsDNS解析dighostnslookupnslookup路径追踪mtrtracert检查链路是否畅通pingfpingping检查路由表ip roroute -n测试带宽iperf显示详细信息。

2025-07-25 17:10:26 70

转载 C语言网络编程:listen函数详解

根据TCP编程模型中我们可以看到之前的socket和bind接口是tcp服务器在为接收客户端的链接做准备,保证tcp的面向字节流,面向连接的可靠通信服务正常进行。接下来的listen端口则为我们进行三次握手与客户端进行链接的接口。TCP编程模型如下。

2025-07-23 16:24:08 67

转载 STM32G030F6P6 HSE时钟不能使用无源晶振,只能使用有源晶振!

STM32G030F6P6 LSE是可以使用有源。

2025-07-21 17:00:43 64

转载 有源晶振的电路设计

(1)可以减少谐波,有源晶体输出的是方波,这将引起谐波干扰,尤其是阻抗严重不匹配的情况下,加上电阻后,该电阻将与输入电容构成RC积分平滑电路,将方波转换为近似正弦波,虽然信号的完整性受到一定影响,但由于该信号还要经过后级放大、整形后才作为时钟信号,因此,性能并不受影响,该电阻的大小需要根据输入端的阻抗、输入等效电容,有源晶体的输出阻抗等因素选择。2、关于输出端串联的电阻的作用, 串电阻是为了减小反射波,避免反射波叠加引起过冲。有时,不同批次的板子特性不一样,留个电阻位置便于调整板子状态到最佳。

2025-07-21 06:13:50 100

转载 KEIL debug无法进入main函数 或 debug卡死的原因总结

工程上,突然发现debug进不了main函数,debug直接进入SystemInit函数,单步发现循环走汇编指令(如图一),开始时推测是中断引起的,把关联的中断处理屏蔽后,发现还是有问题,费了九牛二虎之力才将问题解决,通过调查,发现能引起此问题的原因不少,简单总结如下,希望大家遇到此类问题能快速解决。在Debug页面,点击“Settings”按钮,打开"Contex-M Target Driver Setup"窗口页面,如下图所示的选项要勾选。这里,我遇到的就是因为没有对printf做重定向导致的。

2025-07-21 06:11:46 198

原创 Ubuntu startx --:1后出现输入正确密码,跳回登录界面无法正常登录的问题

再尝试执行startx --:1开启第二桌面系统时,出现原来桌面系统输入正确密码后会跳回到登录界面,无法正常登录,但是可以通过guest账户登录。原因是startx程序修改了.Xauthority拥有者,导致正常xserver启动的时候无法获取Xauthority信息,导致登录失败。3)通过:sudo chown username:username .Xauthority文件的所有者。1)通过ctrl+alt+F1(不同的系统可能需要通过F2-F6)进入命令行界面。2)cd ~ 进入到用户目录下。

2025-07-09 15:53:19 235

转载 通用 TUN/TAP 设备驱动

另一端的应用程序解压缩并解密接收到的数据,然后将数据包写入 TAP 设备,内核像处理来自真实物理设备的数据包一样处理该数据包。它也不是通过物理介质发送数据包,而是将数据包写入用户空间程序。应该是设备的名称,queues 是要创建的队列的数量,fds 用于存储并将创建的文件描述符(队列)返回给调用者。根据所选设备的类型,用户空间程序必须读取/写入 IP 数据包(使用 tun)或以太网帧(使用 tap)。fd 是我们要启用或禁用的文件描述符(队列),当 enable 为 true 时,我们启用它,否则禁用它。

2025-07-02 16:17:04 117

转载 云原生虚拟化:一文读懂网络虚拟化之 tun/tap 网络设备

从上图可以更直观的看出 tun/tap 设备和物理设备的区别:虽然它们的一端都是连着网络协议栈,但是物理网卡另一端连接的是物理网络,而 tun/tap 设备另一端连接的是一个应用层程序,这样协议栈发送给 tun/tap 的数据包就可以被这个应用程序读取到,此时这个应用程序可以对数据包进行一些自定义的修改(比如封装成 UDP),然后又通过网络协议栈发送出去——其实这就是目前大多数“代理”的工作原理。tun/tap 设备是操作系统内核中的虚拟网络设备,是用软件模拟的网络设备,提供与硬件网络设备完全相同的功能。

2025-07-02 16:16:04 176

转载 Ubuntu轻松安装TUN设备:开启隧道通信的简单指南

通过本文,您已经学会了如何在Ubuntu系统上轻松安装和配置TUN设备。TUN设备是网络隧道通信的基础,可以用于多种网络应用。希望这篇文章能够帮助您开启隧道通信之旅。Ubuntu轻松安装TUN设备:开启隧道通信的简单指南 - 云原生实践。

2025-07-02 16:11:45 149

转载 透视投影(Perspective Projection)变换推导

这个时候的多边形也许会被视锥体裁剪,但在这个不规则的体中进行裁剪并非那么容易的事情,所以经过图形学前辈们的精心分析,裁剪被安排到规则观察体(Canonical View Volume, CVV)中进行,CVV是一个正方体,x, y, z的范围都是[-1,1],多边形裁剪就是用这个规则体完成的。也就是说,D3D 中在近裁剪平面上的点投影之后的点会处于CVV的z=0平面上,而在远裁剪平面上的点投影之后的点会在CVV的z=1平面上。而另外在一些元素的细节上也存在着差异,这是由于D3D的CVV的z范围不同造成的。

2025-06-21 15:50:22 75

转载 有哪些值得推荐的c/c++开源框架与库

c/c++的项目也是各种各样的都有,微电子,物联网,桌面客户端,游戏,服务器开发等等。: 用于创建,读写和操作文件档案(例如zip和 tar)的库,它通过QIODevice的一系列子类,使用gzip格式,提供了透明的压缩和解压缩的数据。: 高效的跨语言IPC/RPC,用于C++,Java,Python,PHP,C#和其它多种语言中,最初由Facebook开发。对于C编程人员,可以考虑node.js。: TinyXML的一个全新的接口,使用了C++的许多许多优势,模板,异常和更好的异常处理。

2025-06-21 15:49:14 116

转载 局部性原理——各类优化的基石

学过计算机底层原理、了解过很多设计或者是做过优化的同学,应该很熟悉局部性原理。即便是非计算机行业的人,在做各种调优、提效时也不得不考虑到局部性,只不过他们不常用局部性一词。如果抽象程度再高一些,甚至可以说地球、生命、万事万物都是局部性的产物,因为这些都是宇宙中熵分布布局、局部的熵低导致的,如果宇宙中处处熵一致,有的只有一篇混沌。所以什么是?这是一个常用的计算机术语,是指处理器在访问某些数据时短时间内存在重复访问,某些数据或者位置访问的概率极大,大多数时间只访问_局部_的数据。

2025-06-21 15:47:41 61

转载 Linux网络编程errno的EAGAIN和EINTR

在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。EAGAIN和 EWOULDBLOCK等效!从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以O_NONBLOCK的标志打开文件/socket/,如果你连续做read操作而没有数据可读。

2025-06-21 15:46:08 76

转载 Linux中让终端输入变为非阻塞的三种方法

特别要注意的一点是,在测试的时候,如果你不知道你的操作会产生什么结果,在下次测试之前一定要重新开一个终端,因为如果终端没有结束的话,就表示文件没有关闭,即使程序退出了,之前的设置也是会保存的。通过这三种方法都实现了设置属性为非阻塞,其实第一和第二种方法是一样的,第三种方法由于禁用了规范输入模式,会带来某些问题。所谓规范输入模式就是对某些特殊的键会产生特殊的效果,比如退格键应该回删一个字符,但通过第三种方法会将退格键也当成一个字符读取进去了。

2025-06-21 15:45:25 58

转载 Linux串口编程详解(阻塞模式、非阻塞模式、select函数)

之前一直觉得串口编程很简单,这两天仔细研究后发现串口里的各种参数还挺复杂,稍不注意就容易出错,这里总结一下网上的各种文章及自己的理解与实践。功能描述:用于打开或创建文件,成功则返回文件描述符,否则返回-1,open返回的文件描述符一定是最小的未被使用的描述符参数flags:一些文件模式选择,有如下几个参数可以设置上面三个参数在设置的时候必须选择其中一个!下面的参数是可选的下面三个常量同样是选用的,他们用于同步输入输出。

2025-06-21 15:44:18 147

转载 Qt坐标系统之窗口/视口变换原理

实际绘制图形时,我们只需指定绘制时的单位,而不需关心物理设备究竟使用什么单位,比如想绘制100毫米长的直线,只需在绘制时直接输入100就能在物理设备上显示100毫米这么长的直线,而不是显示100像素或100点大小这么长的直线,这就是单位转换的问题,使用窗口/视口变换就能实现单位转换。数据的来源:由公式可知,x’,y’,Vex,Vey,Vox,Voy是来自视口的数据,因此这些数据是以设备单位为单位的,x,y,Wex,Wey,Wox,Woy是来自窗口的数据,这些数据是以逻辑单位为单位的。

2025-06-11 15:10:30 62

转载 【C/C++ 关键字 函数说明符 】C/C++ _Noreturn关键字(表明调用完成后函数不返回主调函数)

通常,我们在设计那些不会返回到调用者的函数时使用_Noreturn关键字,例如,终止程序的函数,或者抛出异常的函数。在实际编程中,我们可能会遇到一些特殊的函数,这些函数在被调用后,可能会导致程序终止,或者进入一个无限循环,或者抛出一个异常,这些情况下,函数都不会返回到调用它的地方。在C++的各个版本中,_Noreturn关键字的应用都是一致的,都是用来标记那些不会返回的函数。在这一章节中,我们将深入探讨_Noreturn关键字在元模板编程中的应用,以及它在C++11, 14, 17, 20中的变化和应用。

2025-06-07 15:03:18 102

转载 Qt 出现“undefined reference to `vtable for”原因总结

qmake不会处理.cpp文件里的Q_OBJECT,所以,如果在.cpp文件中有它的话,也会产生undefined reference to vtable for "xxx::xxx". 这时,需要先用moc xxxx.cpp生成相应的moc文件,再包含到.cpp里面去,才能解决这个问题.知道你的问题了, 上面的例子不好, 因为你这个把main和类放在一起了。所以, 我估计你前面提到的问题也是没有链接 moc 文件。qt的make编译是根据Makefile来的,而Makefile是由pro文件来的。

2025-05-29 17:21:33 232

转载 【笔记】QT坐标转换(QTransform 类)

返回此矩阵的逆矩阵,若矩阵是奇异的(非可逆的),则返回的矩阵是单位矩阵,若参数invertible 有效(即不为 0),则若矩阵可逆,则将其设置为 true,否则将其设置为 false。设置世界变换矩阵,若 combine 为 true,则把当前矩阵与 transform 组合,否则 transform会取代当前矩阵。若矩阵表示的是仿射(affine)变换,则返回 true,否则返回 false。把此矩阵作为仿射矩阵返回,注意:若为透视转换,则转换后将导致数据丢失。若矩阵表示缩放变换,则返回 true。

2025-05-29 15:10:03 106

转载 Qt开发技术:Qt绘图系统(二)QPainter详解

QPainter类在窗口和其他绘制设备上执行低级绘制。QPainter提供高度优化的功能来完成大多数图形用户界面程序所需的工作。它能画出从简单线条到复杂形状如饼图和弦等一切图形。它还可以绘制对齐的文本和像素图。通常,它绘制一个“自然”坐标系,但它也可以进行视图和世界变换。QPainter可以对继承QPaintDevice类的任何对象进行操作。QPainter的常见用法是在窗口的绘制事件中:构造和自定义(例如设置笔或画笔)绘制器。然后画。记住在绘制后销毁QPainer对象。

2025-05-29 13:06:34 121

转载 Qt Soem电机控制技术细节:深入代码与硬件交互

随着自动化技术的发展,电机控制在工业领域变得日益重要。本文详细介绍了Qt Soem电机控制技术,从基础理论到实践技巧,再到高级应用和案例分析,系统地阐述了电机控制的关键技术和实施方法。文中首先概述了Qt Soem电机控制技术,随后深入探讨了电机控制的基础理论,包括电机控制原理和控制算法,以及Qt与硬件通信协议,特别是Soem协议的介绍和Qt网络通信机制的实现。实践中,文章提供了硬件接口编程和Qt Soem电机控制代码实现的技巧,并着重于实时性能优化。

2025-05-25 23:32:02 114

转载 Qt/C++ Qt状态机框架(QStateMachine)的简明指南

本篇博文主要参考原文,并增加了自己实践过程中的理解。下面就直奔主题。Qt状态机框架提供了创建和执行状态图的类。概念和符号基于Harel的状态图,这也是UML状态图的基础。状态机执行的语义基于状态图XML (SCXML)。状态图提供了一种图形化的方式来模拟系统对刺激的反应。这是通过定义系统可能处于的状态,以及系统如何从一个状态转移到另一个状态(状态之间的转换)来实现的。事件驱动系统(如Qt应用程序)的一个关键特征是,行为通常不仅依赖于上一个或当前事件,还依赖于之前的事件。有了状态图,这些信息很容易表达。

2025-05-25 23:06:00 265

转载 Qt状态机框架介绍(一)

状态机,简写为FSM(Finite State Machine),状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。简单来说,状态机,就是负责执行各种状态的切换。Qt状态机的使用场景主要针对比较复杂的界面,或者需要切换不同状态的控件,比如三态按钮,每个状态对应不同的样式,如果自己做状态管理,那就比较麻烦了。

2025-05-25 23:02:12 96

转载 Qt状态机框架——如何避免状态爆炸

前几节讲述了如何在Qt状态机框架下如何建立一个状态机,如何迁移状态,如何中断状态机,如何分组状态。考虑这样一个例子:有两个状态迁移能够退出并行状态,当这两个条件同时为真是,这个状态迁移中的第二个将不会起作用,因为第一个条件已经触发退出了并行状态,第二个迁移不会被处理。我们上每个独立的属性单独作为一个状态分组,状态分组维护自己的子状态迁移,这样即使属性增加,状态和状态迁移增加数量也是线性的,不会产生爆炸的结果,状态如类似于下面这样:;然后如果其中一个子状态退出并行状态,那么所有子状态都会退出。

2025-05-25 23:00:42 53

转载 QScrollBar详解

是 Qt 框架中用于实现滚动条功能的控件,分为水平滚动条()和垂直滚动条()。它通常与可滚动区域(如 、 或自定义视图)结合使用,允许用户通过拖动或点击操作滚动内容。以下是 的详细解析: 通过继承 并重写以下方法,可以实现更复杂的自定义: 在自定义滚动区域中,通常通过 的 和 方法管理滚动条,并重写 处理滚动逻辑。通过合理使用 ,可以显著提升用户界面的交互体验。结合样式表和子类化,几乎可以实现任何视觉效果的滚动条设计。 是 Qt 框架中

2025-05-25 22:57:55 196

转载 qt -- QScrollBar滚动条

QScrollBar提供了垂直或水平滚动条。滚动条通常配有其他控件,使导航更加精确。

2025-05-25 22:48:32 59

转载 【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角

在深入探究 Qt 的事件机制之前,了解其基本框架和核心概念至关重要。这不仅有助于我们理解 Qt 应用程序的行为方式,而且能够揭示其背后的设计哲学。正如计算机科学家 Donald Knuth 所指出的,“优良的设计在于深层的理解,而不仅仅是表面的饰物。事件机制(Event Mechanism)在 Qt 中指的是一种处理和响应系统或用户产生事件的方式。这些事件可以是用户的鼠标点击、按键输入,也可以是系统级的信号,比如定时器超时或网络数据到达。

2025-05-25 22:45:42 113

转载 开源项目推荐:OpenGL/Vulkan/Cairo/Skia/angle/VTK/OpenVG/MyPaint/GIMP/Krita/Pencil2D/inkspace/enve等绘图库或画图软件

Windows环境下二维绘图引擎有多种选择:GDI、GDI+、DirectDraw、Qt/QPainter、Agg、Cairo、skia、Direct2D、Direct3D、OpenGL、Vulkan等。GDI:微软原生的二维绘图引擎。优点:微软的全力支持,作为操作系统核心层效率方面不用担心,支持多种开发框架(含语言):WinSDK、MFC、Delphi等。缺点:不是面向C++对象组织的,使用起来较为繁琐;不支持反锯齿,不支持复杂的绘图效果(这个相对于GDI+而言)。

2025-05-25 18:07:02 400

转载 Qt 之图形(QPainterPath)

QPainterPath 类(绘图路径)提供了一个容器,用于绘图操作,可以创建和重用图形形状。绘图路径是由许多图形化的构建块组成的对象,例如:矩形、椭圆、直线和曲线。构建块可以加入在封闭的子路径中,例如:矩形或椭圆。封闭的路径的起点和终点是一致的,或者他们可以作为未封闭的子路径独立存在,如:直线和曲线。QPainterPath 可以被填充、描绘轮廓、裁剪。要为一个指定的绘图路径生成可填充的轮廓,可以使用 QPainterPathStroker 类。

2025-05-25 18:04:33 99

转载 Qt:47---QPainter绘图之坐标转换函数、视口和窗口

当图形移动之后,坐标原点会随着动态变化,见下面的各个案例。

2025-05-25 17:39:35 66

转载 Qt信号与槽使用方法最完整总结

补充一点,信号和槽之间不是一一对应的关系。在Qt 5版本的connect 函数里,信号与槽函数的参数其实都是函数指针,当信号或槽函数有重载时,使用函数指针可以明确告诉编译器使用哪一个重载函数,避免歧义。信号灯就是发送信号的对象,绿灯亮是它发送的信号 (signal),汽车是接收对象,汽车行驶是汽车对信号的响应,也叫槽 (slot)。再举一个例子,比如在一个主窗口内有一个关闭按钮,如果点击这个按钮窗口就会关闭,那么关闭按钮是发送信号的对象,它发送的信号是点击,接收信号的对象是窗口,响应信号的槽是关闭窗口。

2025-05-24 14:23:36 95

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除