- 博客(170)
- 收藏
- 关注
原创 docker “no space left on device” 解决方案
docker “no space left on device” 问题原因:出现此问题一般是 docker 根目录空间不足导致。修改ExecStart=/usr/bin/dockerd-current下行后面加。解决方案:修改 Docker Root Dir 的值,指向一个更大空间的目录.默认目录为/var/lib/docker。
2025-01-14 14:51:11
988
原创 KMP算法
next数组中存储的是位置,该位置是当文本串和模式串不匹配时,模式串应该重新回到的位置,以再次进行匹配。next数组是通过计算最长相等前后缀得到。KMP是以三个人的名字缩写命名的。此处使用前缀表统一减一实现。
2025-01-05 01:47:37
150
原创 todesk远程连接zorin(linux)无法通过Win+P切换屏幕,使用命令控制两个屏幕显示变成一个屏幕显示
问题记录:使用todesk在寝室连接实验室电脑,实验室电脑是双屏幕,无法看到部分应用。xrandr具有查看显示器状态、设置使用屏幕、设置主显示器、更改显示器位置、恢复默认等功能。然后点击是没有反映的,需要断开todesk重新连接 一下,就可以了。
2024-12-22 17:21:57
311
原创 qqmusic for linux 启动闪退解决办法
安装了双系统之后,想在linux物理机上安装qq音乐之后,但是启动发现闪退。具体修改:更改Exec开头的一行,%U删去,并添加 --no-sandbox。我的系统是Zorin,基于Ubuntu的linux系统。重启计算机就好使了。
2024-12-18 23:17:00
449
原创 Linux中的service命令
在Linux系统中,service命令是用来启动、停止、重启以及查看系统服务状态的一个常用命令。服务,或称为守护进程,是在后台运行的进程,它们通常会监听某个端口,等待其他程序的请求。例如,MySQL、SSH、Docker和防火墙等都是作为服务运行的。
2024-12-16 20:12:52
647
原创 argv溢出
这种kv格式的数据,基本就是环境变量。从进程内存布局空间来看,也可以解释得通。《UNIX环境高级编程》中的内存模型图展示了进程空间最上方的存储是命令行和环境变量。此技术可以应用在修改进程名称上:先将环境变量等信息拷贝一份,然后全局变量重新指向,最后覆盖这块区域内容为自定义名称。因为修改了argv边界元素,使循环无法在原来的边界停止,而继续输出。argc和argv是主函数运行的input。
2024-08-30 11:35:55
1052
原创 C++ lambda表达式
Lambda 表达式可以捕获外部作用域的变量,也可以作为参数传给函数或变量。Lambda 表达式是 C++11 的新特性,一种定义匿名函数的简洁方式。Lambda 表达式可以捕获外部作用域中的变量。Lambda 表达式作为比较器传递给函数,例如。Lambda 表达式的参数列表和返回类型。捕获所有外部变量的副本,或使用。捕获所有外部变量的引用。
2024-08-29 17:05:47
355
原创 常量指针与指针常量
先指针int* 后常量const,常量const修饰的是后边ptr(指针),所以p不可修改,*ptr无限制可以修改。先常量 const ,后指针 int*,常量修饰的是。即,ptr = &b不可行,*ptr = b 可行。指针常量 是 int* const ptr。即*ptr = b不可行,ptr=&b可行。常量指针 const int * p;p不可修改,p无限制可修改。
2024-08-28 15:09:52
200
原创 C语言setenv()原理
setenv()是通过修改进程内存空间的形式来修改环境变量,一般不会影响其他的进程,不过子进程除外。此处空间一般是固定大小,无法修改,如果有新的环境变量加入,会在堆上申请空间并存储。所以,对于测试或者其它的一些依赖修改环境变量的程序,可以在其内部调用setenv这类函数进行动态修改,不会影响系统配置文件,很友好。由于之前开发过程是通过修改~/.bashrc文件,控制环境变量,所以对于setenv()做一个学习研究。C/C++内存模型如下。setenv()定义在,设置或者更新环境变量。
2024-08-26 16:19:05
687
原创 syslog vsyslog的源码分析
syslog 和vsyslog是系统日志函数。ubuntu20.04系统下,其产生的日志会存储到/var/log/syslog文件中。
2024-08-21 17:59:10
1207
原创 阻塞IO 非阻塞IO 异步IO 同步IO
阻塞和非阻塞主要是指调用某个系统函数时,这个函数是否会导致进程进入阻塞状态而言的;a)调用一个函数,这个函数就卡在在这里,整个程序流程不往下走了,该函数卡在这里等待一个事情发生,这种情况下,操作系统会将该线程或进程挂起,不会消耗 CPU 资源,只有这个事情发生了,这个函数才会往下走,继续执行。这种函数,就认为是阻塞函数;accept();这种阻塞,并不好,效率很低;一般我们不会用阻塞方式来写服务器程序,效率低;b):不会卡住,充分利用时间片,执行更高;
2024-08-21 13:26:24
433
原创 linux信号集
信号可以由系统发送,也可以由其他进程或应用程序自身发送。Linux支持多种信号,每种信号都有一个唯一的整数编号和一个默认的动作。函数,进程可以指定对特定信号的处理方式,例如忽略信号、执行自定义的信号处理函数或执行默认动作。函数,进程可以创建一个信号掩码,用于暂时阻止某些信号的交付。等函数来初始化、填充、添加、删除信号或等待信号集中的信号。)是一个数据结构,用于表示信号集,即一组信号。函数,进程可以等待信号集中的任一信号的到来。类型的信号集来操作。函数,可以向进程或线程发送信号。Linux系统中,信号是。
2024-08-14 14:18:14
468
原创 _attribute__((visibility(“hidden“)))和符号可见性
通过配置符号的可见性,可以控制哪些符号在不同模块间可见,从而优化库的结构和提高安全性。是GCC/Clang提供的一种机制,用于控制符号的可见性,以。以下是一个简单示例,展示了如何使用。在C和C++中,符号可见性是指。提高代码安全性和优化链接性能。是实现这一目标的有效手段。不会出现在符号表中,而。
2024-08-14 10:31:04
893
原创 #define _UNUSED __attribute__((unused))有什么作用?__attribute__是什么?
在需要保留函数参数情况下,保持函数接口的稳定性。即使这些参数在某个版本中未被使用,未来可能会使用,使用。:在开发过程中,可能会有一些变量或参数在某些条件下并没有被使用。正常情况下,编译器会发出警告,使用。是一个强大的工具,可以来优化程序、控制警告和影响代码生成,但在使用时需要注意跨平台的兼容性。是一个宏定义,在 C/C++ 语言中用于标记未使用的变量、函数或参数。被标记为未使用,这样编译器就不会发出相关的警告。是一种 GCC 和 Clang 等编译器提供的。可以保持代码的整洁性。
2024-08-14 10:18:49
1016
原创 Google Mock 和 Google Test编写单元测试入门(环境配置、执行)
Google Mock 和 Google Test环境配置。从环境配置到项目创建演示一个gtest完整流程。通俗易懂
2024-08-08 10:45:43
949
原创 【ps命令】查看进程状态信息
ps命令 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到。解析:从当前运行的进程中筛选出包含特定关键字的进程信息。
2024-08-07 11:30:16
610
原创 为什么使用宏定义日志接口?
使用宏定义,可以在不同的编译条件下选择不同的日志函数实现。也能够做到可以在调试版本中使用更详细的日志输出,而在发布版本中只输出错误日志。:宏定义在预处理阶段进行替换,因此编译器将宏定义的日志函数直接替换为实际的日志函数调用,从而避免了函数调用的开销。:由于宏定义是预处理器指令,因此可以在不修改源代码的情况下修改日志函数的行为。日志宏的实现可以在多个模块中共享,从而提高了代码的复用性。:宏定义可以接受可变参数,这使得日志函数可以接受不同数量的参数,从而提供了更大的灵活性。风格的格式字符串来格式化日志消息。
2024-07-30 11:06:25
494
原创 Jenkins中使用环境变量
Console Output:通过environment间接使用在environment中定义新的全局的环境变量,在后文中使用。亦可以将参数化构建的参数在environment中赋值给新的环境变量,然后后文中同样可以使用。Console Output:一个好的教程链接
2024-07-26 18:59:55
926
原创 jenkins中shell脚本中使用构建参数化Groovy变量的四种方式
【代码】jenkins中shell脚本中使用构建参数化Groovy变量的四种方式。
2024-07-26 15:54:20
633
原创 不知道服务器jenkins账户密码,利用自己账户和sudo登录jenkins账户
在服务器上不知道jenkins账户密码,只知道自己账户密码,如何登录jenkins账户。
2024-07-26 14:26:27
447
原创 如何自定义环境变量
至此,就成功了向环境变量中添加NMEDIA_LOG_METHOD,并设置为PRINT。本文简述向Linux系统中添加环境变量的方法。首先,比如环境变量的名字叫。输出应该显示为PRINT。
2024-07-22 15:45:30
215
原创 C++容器之vector
vector是可变数组。容纳元素个数可以在运行期间变化。std::vector 是 C++ 标准库中的动态数组容器,它提供了可变大小的数组功能,具有灵活性和多种强大的功能。
2024-07-20 00:17:39
530
原创 C++容器之array
array是固定大小数组。C++中,array是一个模板类,提供了数组的功能,在许多方面比原始的 C 风格数组更为强大和灵活。主要特点。
2024-07-19 23:33:24
418
原创 /usr/bin/ld: ../src/libnmedia.so.1.0.1: undefined reference to `g_strsplit_set‘ /usr/bin/ld: ../src/
完成后,重新运行 CMake 和 Make 来重新配置和构建项目,以确保编译和链接选项生效。可执行文件的相关指令。您可以将编译和链接选项添加到该文件中。通过添加以上代码到适当的位置,您就可以将编译和链接选项添加到。记得根据您的项目结构和实际情况做出相应的调整。通常,编译选项会添加到包含编译指令的源文件。开头的是链接部分,用来指定需要链接的库文件。是的,需要将编译和链接选项添加到对应的。中,而链接选项会添加到包含链接指令的。开头的编译选项添加到包含编译指令的。开头的链接选项添加到包含链接指令的。
2024-07-12 11:02:11
339
原创 c/c++语言的一种日志的编写办法
的作用是在宏中将可变长度参数的前一个参数和后一个参数连接起来,如果可变长度参数为空,则不产生任何内容。与之对应的区别就是,函数名称的差异取决于调用函数所传入参数的不同。今日分享一下,从某源码中看到这种日志编写方式,很强。确保在参数列表为空时,不会生成多余的逗号或者括号。语法是C/C++语言的变参宏技巧,处理可变参数。这几种日志输出函数,背后都调用了相同的调用。这三个宏的不同,代表不同的日志严重等级。,通过变参的方式传递不定数量的参数。,用于打印日志信息。
2024-07-03 11:00:36
467
原创 git 合并多次commit,提交MR
本文参考大佬的中的第二部分成功解决问题。合并所有历史提交。其方法本质是删除所有的.git提交的记录,用原来的文件新建一个仓库做第一次提交。
2024-06-27 11:34:29
635
原创 Jenkins的一些记录
在 Jenkins 流水线中,取决于使用的是声明式还是脚本式流水线,设置环境变量的方法不同。声明式流水线支持指令,而脚本式流水线的使用者必须使用 withEnv 步骤。
2024-06-26 19:23:17
1189
原创 Jenkins简要说明
当代码被推送到版本控制系统(如Git或SVN)时,Jenkins可以自动检测到变化,拉取最新代码,执行构建脚本,并运行预定义的测试套件,确保每次代码变更都能得到即时反馈。:Jenkins不仅限于构建和测试,还可以配置为自动部署通过测试的软件到生产环境,实现从代码提交到部署的全自动化流程,加速软件交付速度。:Jenkins拥有庞大的插件库,支持与其他工具和服务(如代码质量管理工具、通知服务、容器技术等)集成,几乎可以满足任何CI/CD需求。
2024-06-17 16:46:18
924
原创 docker run的复杂使用
这个命令创建了一个高度交互式的容器,它与主机共享用户主目录、X11 socket以及直接渲染接口设备,具有较高的权限,使用主机网络,并准备运行一个需要图形界面和可能涉及硬件加速图形处理的应用程序。: 这同样是一个卷挂载,用于共享X11 socket文件,使得容器内的应用程序可以通过X11协议访问主机的图形界面。: 使容器使用主机的网络堆栈,意味着容器将直接使用主机的网络设备和配置,而不是隔离的网络环境。: Docker的运行命令,用于创建一个新的容器并运行一个命令。: 为新创建的容器指定一个名字,这里是。
2024-06-11 15:57:37
846
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人