摘要: 本文对qemu支持的镜像文件进行简单的介绍。 qemu-img支持非常多种的文件格式,可以通过“qemu-img -h”查看其命令帮助得到,它支持20多种格式:file,quorum,blkverify,luks,dmg,sheepdog,parallels,nbd,vpc,bochs,blkdeb 阅读全文
posted @ 2025-01-01 19:28 main_c 阅读(1) 评论(0) 推荐(0)
摘要: EPT(Extended Page Tables,扩展页表),属于Intel的第二代硬件虚拟化技术,它是针对内存管理单元(MMU)的虚拟化扩展。EPT降低了内存虚拟化的难度(与影子页表相比),也提升了内存虚拟化的性能。从基于Intel的Nehalem架构的平台开始,EPT就作为CPU的一个特性加入C 阅读全文
posted @ 2025-01-01 19:20 main_c 阅读(2) 评论(0) 推荐(0)
摘要: 本文目的是尽量对CPU虚拟化做一个全面的介绍,并在不断完善中。 简介 在KVM打开的情况下,客户机中CPU指令的执行由硬件处理器的虚拟化功能(如Intel VT-x和AMD AMD-V)来辅助执行,具有非常高的执行效率。 QEMU/KVM为客户机提供一套完整的硬件系统环境,在客户机看来,其所拥有的C 阅读全文
posted @ 2025-01-01 19:05 main_c 阅读(6) 评论(0) 推荐(0)
摘要: 目录libvirt 简介节点、Hypervisor和域libvirt 安装和配置libvirt的XML配置文件libvirt APIMain libvirt APIsError handlingSpecial specific APIs建立到Hypervisor的连接libvirt API使用编译l 阅读全文
posted @ 2024-12-31 19:27 main_c 阅读(6) 评论(0) 推荐(0)
摘要: 背景 实现一个qt程序,保证其运行时单例,即在该程序运行时无法再次启动该程序。 qtsingleapplication项目是qt-solutions仓库的一个子项目,它提供了一个基于QT的支持应用单例的框架。 原理 根据是否是GUI程序,提供了QtSingleCoreApplication和QtSi 阅读全文
posted @ 2024-12-26 00:36 main_c 阅读(2) 评论(0) 推荐(0)
摘要: 目录背景简单使用源码分析参考 背景 ivshmem是QEMU提供的一种宿主机与虚拟机之间或多个虚拟机之间共享内存的特殊设备。它有两种形式: ivshmem-plain: 简单的共享内存区域 ivshmem-doorbel: 除了共享内存,还能提供基于中断的通信机制 这种设备在虚拟机内部表现为PCI设 阅读全文
posted @ 2024-12-24 17:14 main_c 阅读(1) 评论(0) 推荐(0)
摘要: 目录通过打开input设备来读取输入通过第三方程序获取xevxinputevtest参考 本文简单介绍几种在linux下查看键鼠输入的方法 通过打开input设备来读取输入 程序如下,使用时需要看情况修改input设备路径 #include <fcntl.h> #include <linux/inp 阅读全文
posted @ 2024-12-22 23:02 main_c 阅读(2) 评论(0) 推荐(0)
摘要: 本文拟对qcow2进行压缩进行简单介绍 背景 qcow2镜像在使用一段时间后,总是会不断膨胀变大,所以在导出分享时一般都需要进行压缩以缩减占用空间。 清除空洞 qcow2方式也有稀疏的问题,在磁盘级别上看,镜像会有大量连续的相同空洞,比如刚创建的镜像的swap分区,通过virt-sparsify 我 阅读全文
posted @ 2024-12-22 22:39 main_c 阅读(8) 评论(0) 推荐(0)
摘要: 本文拟对压缩qcow2镜像所带来的虚拟机性能损失进行简单分析 背景 生产中发现使用压缩镜像启动的虚拟机开机总是会慢一些。 qcow2镜像的压缩方式为:qemu-img convert -p -c -O qcow2 zero_disk.qcow2 compress_disk.qcow2 分析 qemu 阅读全文
posted @ 2024-12-22 22:31 main_c 阅读(4) 评论(0) 推荐(0)
摘要: @目录简介核心结构扫描设备原理scan_abiscan_burnerscan_cdromscan_cpufreqscan_cpuidscan_cpuinfoscan_device_treescan_diskscan_displayscan_dmiscan_fatscan_fbscan_graphic 阅读全文
posted @ 2024-12-19 00:59 main_c 阅读(1) 评论(0) 推荐(0)
摘要: Linux命令——grep grep是Linux中用于文本处理的最有用和功能最强大的命令之一。grep在一个或多个输入文件中搜索与正则表达式匹配的行,并将每条匹配的行写入到标准输出。 正则表达式是与一组字符串匹配的模式。模式由运算符,文字字符和元字符组成,它们具有特殊的含义。GNU grep支持三种 阅读全文
posted @ 2024-12-17 23:58 main_c 阅读(10) 评论(0) 推荐(0)
摘要: 目录简介官网源码目录结构构建 简介 BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。 官网 http 阅读全文
posted @ 2024-12-17 23:57 main_c 阅读(22) 评论(0) 推荐(0)
摘要: 本文拟总结shell使用的一些经验 背景 使用shell的目的: 管理Linux系统 快速实现功能 环境 任意Linux环境 每个Linux环境提供的默认shell不同,比较常见的是bash、sh、zsh,他们之间有细微差别需要在编写脚本时注意 工具 shell脚本检查工具:ShellCheck 可 阅读全文
posted @ 2024-12-17 23:54 main_c 阅读(3) 评论(0) 推荐(0)
摘要: 目录隐藏、显示任务栏原理实现隐藏、显示桌面图标原理实现隐藏、显示桌面原理实现其他参考 隐藏、显示任务栏 原理 使用spy++查看下任务栏属性 这就是整个任务栏的属性,包括开始按钮和通知区域。 我们要做的就是找到这个窗口,然后隐藏它。 实现 void HideTaskBar() { //Shell_T 阅读全文
posted @ 2024-10-18 14:45 main_c 阅读(2) 评论(0) 推荐(0)
摘要: 背景 在Windows中,获取当前鼠标拖动的窗口 Windows API BOOL GetGUIThreadInfo( [in] DWORD idThread, [in, out] PGUITHREADINFO pgui ); https://learn.microsoft.com/zh-cn/wi 阅读全文
posted @ 2024-10-17 14:17 main_c 阅读(0) 评论(0) 推荐(0)
摘要: 背景 获取当前鼠标所在的窗口 Windows实现 windows API HWND WindowFromPoint( [in] POINT Point ); https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser- 阅读全文
posted @ 2024-10-17 13:23 main_c 阅读(1) 评论(0) 推荐(0)
摘要: 目录背景环境准备安装依赖编译配置使用发行版提供的配置使用自定义配置编译安装 Linux 内核参考 背景 记录下在debian上编译Linux最新内核的过程。 环境准备 $ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" 阅读全文
posted @ 2024-09-14 00:20 main_c 阅读(15) 评论(0) 推荐(0)
摘要: gcc编译过程简介 目录gcc编译过程简介预编译编译语法分析语法分析语义分析中间语言生成目标代码生成和优化汇编链接 GCC编译程序的过程可以分为以下四个步骤: 预处理(preprocessing) 编译(compilation) 汇编(assembly) 链接(linking) graph A(he 阅读全文
posted @ 2024-06-30 21:55 main_c 阅读(2) 评论(0) 推荐(0)
摘要: 目录背景目的实现加载测试数据结构设备号的管理设备节点字符设备的操作方法集合misc设备 背景 目的 编写简单的字符设备驱动,实现基本的open、read和write方法 编写相应的用户空间测试程序,调用read函数,并能看到对应的驱动程序执行日志 实现 代码: #include <linux/mod 阅读全文
posted @ 2024-06-20 00:27 main_c 阅读(5) 评论(0) 推荐(0)
摘要: 目录常见指标分类(USE法)常见性能工具CPU性能工具内存性能工具文件系统和磁盘I/O性能工具网络性能工具根据指标找工具CPU性能内存性能文件系统和磁盘I/O网络性能根据工具找指标CPU性能内存性能文件系统和磁盘I/O网络性能CPU性能分析一般步骤内存性能分析一般步骤I/O性能分析一般步骤网络性能分 阅读全文
posted @ 2024-06-07 00:24 main_c 阅读(1) 评论(0) 推荐(0)
摘要: inotify介绍 从 Linux 2.6.13 内核开始,Linux 引入了 inotify,可以通过该机制监控文件或目录的一组指定事件,例如打开、关闭、移动/重命名、删除 、创建或更改属性。 inotify提供以下几个API: inotify_init #include <sys/inotify 阅读全文
posted @ 2024-03-28 00:56 main_c 阅读(5) 评论(0) 推荐(0)
摘要: 介绍 https://github.com/gabime/spdlog.git spdlog is a header only library. Just copy the files under include to your build tree and use a C++11 compiler 阅读全文
posted @ 2024-01-14 21:23 main_c 阅读(1) 评论(0) 推荐(0)
摘要: 背景 添加了一张无线网卡,上面带的蓝牙无法连接蓝牙耳机,经过一番尝试,发现将默认的pulseaudio替换为pipewire可以解决。 步骤 安装pipewire sudo apt install pipewire pipewire-audio pipewire-pulse wireplumber 阅读全文
posted @ 2024-01-07 11:25 main_c 阅读(0) 评论(0) 推荐(0)
摘要: 利用程序名用做参数 背景 无意中发现Linux中的关机重启等程序都是systemctl的软连接: lrwxrwxrwx 1 root root 14 11月10日 08:25 halt -> /bin/systemctl lrwxrwxrwx 1 root root 14 11月10日 08:25 阅读全文
posted @ 2023-12-16 16:26 main_c 阅读(0) 评论(0) 推荐(0)
摘要: 目录nlohmann/jsonjson介绍使用例子从文件中导入json对象使用json字面量创建json对象直接创建并操作json对象创建json arrayjson对象转stringstring转json对象像stl容器一样使用jsonstl容器转json arraystl容器转json obje 阅读全文
posted @ 2023-12-16 15:59 main_c 阅读(8) 评论(0) 推荐(0)
摘要: LTP 测试 LTP套件是由 Linux Test Project 所开发的一套系统测试套件。它基于系统资源的利用率统计开发了一个测试的组合,为系统提供足够的压力。通过压力测试来判断系统的稳定性和可靠性。压力测试是一种破坏性的测试,即系统在非正常的、超负荷的条件下的运行情况 。用来评估在超越最大负载 阅读全文
posted @ 2023-12-10 21:11 main_c 阅读(2) 评论(0) 推荐(0)
摘要: 根据视频重定向技术解析中的 截获解码视频流的思路,首先需要解决如何输出视频码流的问题。 目前只针对h264码流进行获取,步骤如下: 打开mp4文件并创建一个空文件用于存储H264数据 提取一路视频流资源 循环读取流中所有的包(AVPacket),为每个包添加特征码和sps/pps等数据(只有关键帧前 阅读全文
posted @ 2023-12-10 16:08 main_c 阅读(2) 评论(0) 推荐(0)
摘要: 复制粘贴——QT实现原理 QT 剪贴板相关类 QClipboard 对外通用的剪贴板类,一般通过QGuiApplication::clipboard() 来获取对应的剪贴板实例。 // qtbase/src/gui/kernel/qclipboard.h class Q_GUI_EXPORT QCl 阅读全文
posted @ 2023-12-10 16:01 main_c 阅读(0) 评论(0) 推荐(0)
摘要: Linux命令——nc 目录Linux命令——nc例子客户端/服务端模型数据传输与服务端交互端口扫描使用代理发送文件聊天工具一次性 Web Server文件夹传输远程克隆磁盘shell反向 shell参考 netcat,简写为 nc,是 unix 系统下一个强大的命令行网络通信工具,用于在两台主机之 阅读全文
posted @ 2023-12-10 14:15 main_c 阅读(2) 评论(0) 推荐(0)
摘要: watch是周期性的执行下个程序,并全屏显示执行结果 用法: vm@fedora:~$ watch --help Usage: watch [options] command Options: -b, --beep beep if command has a non-zero exit -c, -- 阅读全文
posted @ 2023-12-01 23:10 main_c 阅读(1) 评论(0) 推荐(0)
摘要: CppCheck 一. cppcheck介绍 cppcheck 是一个静态代码检查工具,支持c, c++ 代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。 执行的检查包括: 自动变量检查 数组的边界检查 class类检查 过期的函数,废弃函数调用检查 异常内存使用, 阅读全文
posted @ 2023-11-17 00:01 main_c 阅读(1) 评论(0) 推荐(0)
摘要: INI 文件 INI 文件的格式 “.ini” 是英文 “initialization” 的头三个字母的缩写,INI 文件的后缀名也不一定是".ini"也可以是".cfg",".conf ”或者是".txt"。 一个常见的ini文件: ; Test config file for ini_examp 阅读全文
posted @ 2023-11-16 23:51 main_c 阅读(3) 评论(0) 推荐(0)
摘要: linux查看端口被哪个进程占用 1、lsof -i:端口号 sudo lsof -i :22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 661 root 3u IPv4 13882 0t0 TCP *:ssh (LISTEN) 阅读全文
posted @ 2023-11-14 23:11 main_c 阅读(2) 评论(0) 推荐(0)
摘要: 云计算的三种服务模式:IaaS,PaaS和SaaS 任何一个在互联网上提供其服务的公司都可以叫做云计算公司。其实云计算分几层的,分别是Infrastructure(基础设施)-as-a-Service,Platform(平台)-as-a-Service,Software(软件)-as-a-Servi 阅读全文
posted @ 2023-11-14 00:24 main_c 阅读(6) 评论(0) 推荐(0)
摘要: C标准库函数——printf[1] 描述 C 库函数 int printf(const char *format, ...) 发送格式化输出到标准输出 stdout。 printf()函数的调用格式为: printf("<格式化字符串>", <参量表>); 声明 下面是 printf() 函数的声明 阅读全文
posted @ 2023-11-14 00:20 main_c 阅读(3) 评论(0) 推荐(0)
摘要: netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。 从整体上看,netstat的输出结果可以分为两个部分:一个是Active Inter 阅读全文
posted @ 2023-11-14 00:14 main_c 阅读(1) 评论(0) 推荐(0)
摘要: Linux命令——telnet 执行telnet指令开启终端机阶段作业,并登入远端主机。 telnet命令可以帮助你从这台路由器远程登陆到远端开启了telnet服务的设备,包括路由器、交换机、linux服务器等,并且配置当前路由器的telnet服务。 格式 telnet [OPTION...] [H 阅读全文
posted @ 2023-11-14 00:10 main_c 阅读(1) 评论(0) 推荐(0)
摘要: ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。 格式 ss [参数] 常用参数: -n 不解析服务名称 阅读全文
posted @ 2023-11-14 00:07 main_c 阅读(0) 评论(0) 推荐(0)
摘要: Linux命令——ssh 背景 SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。 历史上,网络主机之间的通信是不加密的,属于明文通信。这使得通信很不安全,一个典型的例子就是服务器登录。登录远程服务器的时候,需要将用户输入的密码传给服务 阅读全文
posted @ 2023-11-14 00:02 main_c 阅读(1) 评论(0) 推荐(0)
摘要: Linux 命令——modprobe modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。 modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块 阅读全文
posted @ 2023-11-12 20:08 main_c 阅读(1) 评论(0) 推荐(0)