自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿渌的博客札记

Studies serve for delight,for ornament and for ability.

  • 博客(68)
  • 收藏
  • 关注

原创 C++ 编译错误:fatal error:Killedsignalterminatedprogram cc1plus

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u0AWiSaI-1677635658750)(https://qiniu.sodalu.top/uPic/2023-03-01-09-48-29-image-20230301094813525.png)]使用 Colcon 在编译 ROS2 源码时,编译到 rosbag2_transport 时报错。使用*度查找后,发现是虚拟机内存不足的原因,需要创建 swap 分区。

2023-03-01 09:54:35 1248 3

原创 字符串之 KMP 匹配算法

kmp 算法是匹配一个字符串 str 包含的字串 substr 的开始索引的算法(成功返回开始索引,失败返回 -1),时间复杂度为 O(N),N为str的长度。

2023-02-25 22:58:37 475

原创 C++ 字符串大小写转化

【代码】C++ 字符串大小写转化。

2023-02-23 22:07:06 399

原创 C++ 获取当前时间

主要是 tm 结构,和时间格式的输出。获取时间的过程很单,调用 api 两三行就搞定了。如,我需要的时间日期格式为。,根据以下代码即可获得。

2023-02-23 22:04:09 265

原创 C++ 获取当前用户的家目录

根据传入的用户 id,在系统记录 password 的文件(如:/etc/passwd)中查找相关用户信息,存入准备好的 buffer 数组中。成功后,result 指向存储数据的缓冲,passwd 结构中的指针变量指向缓冲(如 pw_name 等值存放在 buffer 数组中),整形变量直接存储相关信息。可以通过在获取用户信息成功后,清空 buffer ,并在清空 buffer 前后打印 passwd 变量和 result 的值,来判断 buffer 中存放的值。先获取所需缓冲区的大小,并声明缓冲区。

2023-02-23 22:03:23 888

原创 C++获取文件大小

所以,很显然我们再通过返回值的判断,即可确定文件是否为空。主要就是通过 lseek 的返回来确定文件的大小。

2023-02-23 22:00:19 316

原创 Mac外接 Windows 键盘映射修改

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qvhyh6BV-1677003854958)(.gitbook/mac-keyboard-map-win/image-20221215221104974.png)]官方网址:https://karabiner-elements.pqrs.org。

2023-02-22 02:25:40 1085

原创 Typora for Mac

可以打开 Typora。使其生效,然后就可以通过。在 mac 中,使用。

2023-02-22 02:16:37 993

原创 Mac 安装包管理工具 brew

回车后根据提示操作即可,中途需要使用 git 下载一些资源,如果没有下载 git,会提示安装,git 安装完,重新执行上述命令即可。mac 貌似并没有打开终端的快捷键,不过我们可以借助第三方软件实现,在这里我们使用的是。,在 app store 搜索即可下载,打开之后添加终端,设置快捷键即可。值得注意的是,如果正常显示版本,却还有其他异常信息,根据提示操作即可。此外,上述命令的默认安装路径为。

2023-02-22 02:15:19 419

原创 Mac 安装软件常见问题

*常见报错四:**更新了13系统Ventura后,打开应用还是提示“已损坏无法打开”!任何来源也打开了, 包里已损坏修复,修复发现提示 “Operation not permitted”安装Pkg包的应用也是一样,提示失败!**常见报错一:**无法打开xxx.因为他不是从App Store 下载。

2023-02-22 02:14:44 512

原创 Mac(M2) 安装 Ubuntu Arm

但我安装的时候会弹出 `` 警告。所以我只能另辟蹊径,最终找到了 open-vm-tools。这里下载的是 vmware fusion 的个人免费版:https://www.vmware.com/products/fusion.html。open-vm-tools github 地址: https://github.com/vmware/open-vm-tools。目前,我发现的是,在 Arm 的处理器下,不是所有版本都能成功安装。过程非常简单,注册,下载,安装,填写激活码(在注册完后软件下载链接上面)

2023-02-22 02:08:53 3022

原创 Mac 更新后 git clone 报错

安装弹出的插件即可。

2023-02-22 01:57:15 170

原创 图床(Typora + uPic/PicGo +七牛云)

对于下面的上传设置,我们也完全可以选择其他的方式,点击下拉框也可以看到里面的可选项:iPic、uPic等。同样,Gitee 也是免费的,服务器也在国内,但是之前有出现过 Gitee 添加防盗链,导致很多博主的博客内的图片全部变成了 Gitee 的 logo,直接造成了一些经济损失和影响。其他国内的云服务器其实也是类似的,都是可以的,比如腾讯云、阿里云等。笔者选择七牛云的原因是,自己本身有购买一个域名,然后七牛云免费的 10G 内存,也完全够目前的需求。其实 GitHub 可以是一个不错的选择,毕竟免费。

2023-02-21 18:54:56 692

原创 链表学习之复制含随机指针的链表

将每一个新节点放在原来节点的后面,并连接上下一个节点的方式,这样通过next就能够定位到新节点,通过next的next就能找到原来的下一个节点。要求:时间复杂度O(N),空间复杂度O(1);时间复杂度O(N),空间复杂度O(N);时间复杂度O(N),空间复杂度O(1);

2023-02-18 17:56:14 770

原创 链表学习之找到两个链表相交的第一个节点

如果有环,快慢指针一定会在环内相遇,当相遇发生之后,快指针回到头节点,慢指针不动,快慢指针同时一次一步的移动,直至相遇,相遇的位置即为入环的第一个节点。最好理解和想到的方法就是,遍历两个链表,计算出两个链表的长度差值,让长链表先移动差值步,接着继续同时遍历,直到相遇或都为nullptr。给定两个链表,这两个链表可能有环,可能无环。判断这两个链表是否相交,相交则返回第一个相交的节点,不相交则返回nullptr。或者使用交换遍历的方式,因为无论如何两个链表都遍历的话,最后要不就相交,要不就都为nullptr。

2023-02-18 17:55:54 639

原创 链表学习之判断链表是否回文

如果要满足,奇数时到达中间位置,偶数时向上取整的位置。我们应该在快指针遍历完之后,判断是否为偶数,可以通过快指针是否为nullptr判断,然后偶数情况下慢指针先往后移动一步,然后在开始遍历剩下部分入栈。其中,反转后半部分链表的函数,即为上文的反转单链表算法。再返回之前需要把链表复原。相对于方法1节省一半的空间,但时间复杂度和空间复杂度不变。该方法,时间复杂度仍为O(N),空间复杂度降低为O(1)。要求:时间辅助度O(N),空间复杂度O(1)特别注意,奇数和偶数情况下的指针定位。

2023-02-18 17:54:17 896

原创 链表学习之链表划分

整体思路就是,遍历一遍链表,把节点存入数组,对数组快排,然后再遍历数组,生成将节点重新连接。要求:调整之后节点的相对次序不变,时间复杂度不高于O(N),空间复杂度不高于O(1)。将单向链表值划分为左边小、中间相等、右边大的形式。中间值为pivot划分值。注意处理,小于部分、等于部分、大于部分有缺失的情况。主要是使用6个指针记录3个部分的头、尾位置。但最容易想到和实现。

2023-02-18 17:54:02 755

原创 链表学习之反转链表

要求:长度为N的链表,时间复杂度为O(N),额外空间复杂度为O(1)。分别实现单向链表和双向链表的反转。

2023-02-18 17:52:14 802

原创 链表学习之基础概念

/ DATATYPE 可以是任意存放数据的类型,如int, string等 DATATYPE val;} };链表在插入和删除上的时间复杂度为 O(1),在查询上的时间复杂度为 O(n)。适用于数据量不固定,频繁增删,少量查询的场景。

2023-02-18 17:49:49 544

原创 C++ 中的引用(&)

C++ 中的引用(&)两个变量共用一块地址空间(就像给一个变量起了别名或是浅拷贝)

2023-02-10 00:55:49 186

原创 C/C++ 判断文件是否存在

C/C++ 判断文件是否存在

2023-02-10 00:40:50 201

原创 为什么需要内存对齐

如果将多个变量连续分配在内存中而不做对齐处理,会造成 CPU 读取数据出现“半包”的情况,此时,需要再进行一次内存访问才能获取该变量数据。在内存对齐的情况下,CPU 读取 int 类型的 b,仅需一次内存寻址即可完成。而对于非内存对齐,第一次寻址只能获得 b 的前 3 个字节数据,要获取完整的数据还需要再进行一次内存寻址,以获得第 4 个字节的数据。内存对齐的情况下,结构体 st 总共占 8 字节,其中 a 与 b 之间空余的 3 字节用于补齐缺少的字节(如果是 8 字节对齐,则需要补齐 8 字节)。

2023-02-10 00:30:51 1263

原创 ROS第一个程序(HelloWorld)

ROS第一个程序(HelloWorld)一、创建工作空间在home目录下创建工作空间mkdir -p ros_learning_ws/src # mkdir 可选参数 自定义工作空间名称/srccd ros_learning_ws # cd 自定义工作空间名称catkin_make # 编译命令二、创建功能包catkin_create_pkg helloworld # catkin_create_pkg 自定义功能包名三、编写源文件先切换到功能包下的src目录cd ~/ros_lea

2022-03-31 21:57:55 334

原创 Ubuntu16安装ROS Kinetic Kame(内含Gazebo)

Ubuntu16安装ROS Kinetic Kame一、ROS安装1. 添加下载源2. 设置密钥3. 更新源4. 安装完整安装包(时间较长耐心等待...)二、初始化和环境配置1. 初始化rosdep错误及解决错误信息方法一(推荐)第1步第2步:第3步第4步第5步最后方法二(B站赵老师方法)方法三(亲测有效):鱼香ROS自己写的rosdepc2. 环境配置(修改~/.bashrc文件)3. 安装rosinstall三、小海龟测试程序1. 启动ROS Master(节点管理器):打开一个终端(ctrl+alt+

2022-03-27 07:22:11 525

原创 kali安装配置snort实现简单的入侵检测

kali安装配置snort实现简单的入侵检测参考kali上安装配置snort以及简单实验(这篇是我安装过程中最为简洁的,也是错误较少的);Ubuntu 16.04安装snort含问题解决(示例代码)(这篇里面包含常见错误,虽然我出现的错误并没有解决);前言snort这个东西真的是魔鬼,前前后后在四个系统上安装了不知道多少次,最后终于在搭载了Ubuntu18的云服务器勉强安装完成。安装失败的主要原因网络不顺畅(这个也是以下很多原因出现的主要原因);依赖环境安装不全;配置失败的主要原因

2021-11-28 12:53:39 7049 6

原创 sizeof 和 strlen 的区别

sizeof 和 strlen 的区别1. sizeof 编译时计算长度,strlen 运行时计算;2. sizeof 为关键字,strlen 为函数;3. sizeof 可以计算所有类型长度,strlen 只能是字符指针(char*);4. sizeof 计算字节长度,strlen 计算实际字符长度;5. sizeof 在同一编译环境下计算结果固定,strlen 结果不定,其计算长度到'\0'为止(不包括'\0');

2021-11-26 22:20:10 537

转载 VIM常用快捷键(转)

VIM常用快捷键一、移动光标h,j,k,l 上,下,左,右ctrl-e 移动页面ctrl-f 上翻一页ctrl-b 下翻一页ctrl-u 上翻半页ctrl-d 下翻半页w 跳到下一个字首,按标点或单词分割W 跳到下一个字首,长跳,如end-of-line被认为是一个字e 跳到下一个字尾E 跳到下一个字尾,长跳b 跳到上一个字B 跳到上一个字,长跳0 跳至行首,不管有无缩进,就是跳到第0个字符^ 跳至行首的第一个字符$ 跳至行尾gg 跳至文首G 调至文尾5gg/5G 调至

2021-11-26 18:49:05 257

原创 Ubuntu安装man手册中文版

Ubuntu安装man手册中文版1 命令行安装merlotliu@linux:~$ sudo apt-get install manpages-zh2 查看安装路径merlotliu@linux:~$ dpkg -L manpages-zh | less输出/./usr/usr/share/usr/share/doc/usr/share/doc/manpages-zh/usr/share/doc/manpages-zh/FAQ.gz/usr/share/doc/manpages-

2021-11-25 15:58:46 1186

原创 Ubuntu18和Nvidia显卡驱动不兼容造成开机闪烁

Ubuntu18和Nvidia显卡驱动不兼容造成开机闪烁问题出现题主用的是Ubuntu18,显卡是Nvidia1050,开机发现,外接显示器一片黑,就开始百度,发现是驱动没装,然后用命令装驱动,结果出现【安全启动配置】的警告,然后开始重启,卡机一直闪烁进不去。解决首先先进去【Bios】禁用【安全启动】(保存后会提示输入一串数字和回车保存设置);进入Ubuntu引导界面选择【Ubuntu高级选项】;选择最上面的【recovery mode】(多个是因为安装多次不成功产生的);进入Rec

2021-11-24 23:01:59 1072 1

原创 Ubuntu 18首次连接外接显示器

Ubuntu 18首次连接外接显示器首先打开==【软件和更新(software & updates)】---->【附加驱动(Additional Drivers)】==;从中选择含有==【 … NVIDIA driver … 】==即可,系统默认为最后一个选项;【应用更改(Apply Changes)】;【重启】;重启后依次打开【设置(settings)】---->【== 】---->【 】 ---->【 ==】...

2021-11-24 22:36:25 2007 1

原创 Ubuntu将Dock栏设置成Mac样式

Ubuntu将Dock栏设置成Mac样式打开命令窗口输入:$root@linux:sudo apt install gnome-tweak-tool$root@linux:sudo apt install gnome-shell-extension-dashtodock重启电脑;打开【Tweaks】;设置【 Dash to dock】;最终效果:ps:完整图片太大,这是裁剪后的结果;...

2021-11-24 22:15:53 1235 2

原创 QT 获取当前项目可执行文件路径

#include <QCoreApplication>QString strDirPath = QCoreApplication::applicationDirPath();QString strFilePath = QCoreApplication::applicationFilePath();Tips:QCoreApplication::applicationDirPath()Returns the directory that contains the applicati

2021-07-29 23:23:30 2360

原创 零长数组(柔性数组)

1 零长数组定义struct ZeroArr{ int iLen; TYPE data[0];};2 内存空间的申请ZeroArr *zeroArr = ( ZeroArr* )malloc( sizeof( ZeroArr ) + sizeof( TYPE ) * MAXLEN );if( zeroArr != nullptr ){ zeroArr->iLen = MAXLEN;}注:MAXLEN为最大长度;3 赋值、使用for( int i = 0; i < z

2021-07-29 23:07:38 518

原创 markdown文件生成目录

markdown文件生成目录输入==[toc]==命令即可快速生成文章目录,自动捕获各级别标题,下面的目录就是该命令自动生成的。文章目录markdown文件生成目录一级标题二级标题三级标题四级标题五级标题六级标题一级标题二级标题三级标题四级标题五级标题六级标题...

2021-04-23 17:57:02 214

原创 char* 转 wchar_t*

char* 转wchar_t *mbstowcs:const char *str = "D:/Program Files/anaconda3";/* 固定长度 */wchar_t pyHome[128];mbstowcs(pyHome, str, strlen(str) + 1);/* 不定长, 但要注意释放空间,不然就是内存泄漏*/const size_t strSize = strlen(str) + 1;wchar_t pyHome = new wchar(strSize);mbst

2021-04-23 17:45:20 330

原创 windows下Qt5调用含三方库的python文件

windows下Qt5调用含三方库的python文件前言:再经过几天的失败后,终于解决这一问题,虽然这几天的大多操作几乎一样,就是不行,可能这就是细节决定成败吧。主要环境:Qt5(Cpp)MSVC2017(64bit)Python38(64bit);基本步骤1. 创建项目新建一个项目(随便什么项目,不重要,Qt c++的就行),我在这里建立的是Widgets;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1r8rlQO9-16191681

2021-04-23 16:56:43 2121 2

原创 虚函数和纯虚函数几个注意点

虚函数和纯虚函数几个注意点虚函数的默认参数虚函数默认参数的值,与当前指针类型有关,指针类型是啥,参数的值为哪个类中的值;例如:class A{public : virtual play(int arg = 1){ cout << arg << endl; }};class B : public A{public : virtual play(int arg = 2){ cout << arg << endl; }};int

2020-09-03 10:43:18 194

原创 C++多态实现——虚函数

C++多态实现——虚函数参考文章:虚函数–https://blog.csdn.net/LC98123456/article/details/81143102C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数,当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数。我们先来看一

2020-09-02 18:33:03 329

原创 NER 实体识别 字符串(含汉字)解析 2021届 58笔试

NER 实体识别 字符串(含汉字)解析问题描述(非完整版)输入样例time:月,time:日,loc:小区,loc:超市;5月1号在新龙城或浩客见;月 月 日 日 O 小区 小区 小区 O 超市 超市 O解答本题主要还是解析字符串,搞清楚汉字和英文等其他字符的存储方式不同,其实题目就简单了。1. 判断一个字符是否为汉字的起始汉字根据编码的不同,可能占两个字节也可能是 三个,这个可以通过strlen(“中”)计算出其大小;然后,汉字的每个字节的最高位都是1,故:/*判断一个字符是否为汉字

2020-09-01 13:38:21 264

原创 Linux 进程 fork、exec、wait练习

fork、exec、wait练习父进程 fork 3 个子进程,三个子进程一个调用 ps 命令,一个调用自定义程序 1(正常),一个调用自定义程序 2(会出段错误)。父进程使用 waitpid 对其子进程进行回收;#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <unistd.h>#include <sys/wait.h>int main(int arg

2020-08-26 19:38:58 499

空空如也

空空如也

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

TA关注的人

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