自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 【剑指offr--C/C++】JZ32 从上往下打印二叉树

总结:一般深度遍历用递归,层次遍历用队列辅助:从队首取出一个节点,就将它的左右孩子放到队尾,这样依次进行下去,知道最后一个节点被取出来就完成了一次遍历。

2024-07-20 18:15:15 90

原创 【剑指offr--C/C++】JZ26 树的子结构

第一个:确定一个根节点,A树中任意一个节点都有可能是子树的根节点,若当前节点不是,那么就要将其左右子树分别作为根节点走相同的判断流程;第二个:选择一个节点之后,将以这个节点为根的整棵树取出来与B进行比较,比较时根节点与左右子节点比较的方式是相同的。要判断一个树是不是另一个树的子树,这里边存在两个递归–所以我们要写两个函数,来完成两个递归。

2024-07-20 16:32:08 142

原创 【jenkins+cmake+svn管理c++项目】msbuild: command not found

“Execute Shell” 与 “Execute Windows batch command”`Execute shell`:这个步骤类型是为Unix/Linux/macOS环境设计的,它会在这些系统的shell(如bash、sh等)中执行我提供的命令。由于这些系统默认不包含MSBuild(因为它是Windows的一部分),所以当你尝试在这个步骤中执行msbuild命令时,它会找不到该命令。

2024-07-18 18:04:43 432

原创 sizeof()

链接:https://www.nowcoder.com/questionTerminal/1fc1fe1663f345659c28c59a47a85ca1?examPageSource=%E5%85%AC%E5%8F%B8%E7%9C%9F%E9%A2%98%E7%AD%94%E6%A1%88#jsEditorModuleBody来源:牛客网1. p是一个指针,指针在32位机器上是4字节,在64位机器上是8字节,所以sizeof(p)=8;2. int占用4个字节,float占用4个字节,double

2024-07-11 17:14:01 151

原创 Android Studio开发之路(十四)自定义Titlebar以及设置顶部状态栏颜色

项目需求,我要做一个下图这样的titlebar,包括一个返回按钮,一个关闭按钮,一个文本框。默认的titlebar按钮设计不太满足我的需求,于是我打算自定义一个titlebar组件,应用到我的每一个页面。由于我直接在res/Themes中设置主题为白色后,状态栏的文字也变成了白色,于是我手动设置状态栏的背景和文字颜色,设置方法参见上边一段代码。在res/layout下创建一个mytitlebar.xml。

2024-05-27 01:38:19 519

原创 Android Studio开发之路(十三)主题影响Button颜色问题解决及button自定义样式

在开发过程中发现安卓的默认主题色是紫色,并且会导致button也是紫色,有时直接在xml布局文件中直接设置button的背景色或者设置背景图片不起效果。在上述方案二中res/drawle/btn_style.xml设置了按钮的圆角和背景色,这里再补充一下button的边框样式设置方法。②跟上述方案二一样,在style.xml中添加一个style,然后在布局文件button组件设置style.,并且设置button的颜色时尽量通过设置style的方式,而不是直接在布局文件中设置背景色。

2024-05-27 01:13:13 857

原创 Android Studio开发之路(十二)image、byte[]、mat、Bitmap几种格式互转合集

【代码】Android Studio开发之路(十二)image、byte[]、mat、Bitmap几种格式互转合集。

2024-05-14 17:08:50 446

原创 Android Studio开发之路(十)app中使用aar以及报错记录

我要使用camerax创建相机,于是我首先在module的build.gradle中添加了camerax相关依赖,然后在layout里边创建了一个previewview用于显示预览,(我直接copy我之前在别的app里边做的camerax+opencv的一套相机处理代码)如下图。所以,熟练的话可以不操作上一步,直接将这一行语句写到这个位置,效果是一样的。另外,除了外部依赖,权限申请也是一样的,比如我的aar中申请了相机权限,那么使用它的app也要在androidmanifast.xml中申请相机权限。

2024-05-13 18:04:24 875

原创 Android Studio开发之路(十一)values-v34.xml:error: resource android:color/system_background_dark not found.

之前创建的几个项目都没有报错这个错,今天新建了一个项目突然就不行了,查了一下values-v34.xml 是在Android 项目中用于存储特定 API 级别(在这种情况下是 API 级别 34)资源值的文件。凡是我的编译version是33,按说应该不会用到34的版本。跟其他的project对比之后发现,是build.gradle中自动设置的一些依赖 的版本变大了,方法一、如下图是旧的不报错的依赖版本,我用这些替换掉新生成的高版本就不报错了。

2024-05-13 18:03:44 248

原创 Android Studio开发之路(九)创建android library以及生成aar文件

首先,提供给外部的aar文件应该是release格式,所以要先设置生成release模式的aar文件。生成之后就可以看到如下图的目录结构,app是这个项目创建的主app程序,下边两个是library.library基本上相对于app是独立的,它有自己的manifast.xml和build.gradle,也可以独立运行。然后,点击左上角File->new->new module,进入下图页面,选择android Library,填写相应的包名,点击finish。aar: 包括界面和资源)

2024-05-13 17:36:35 659

原创 Android Studio开发之路(八)Spinner样式设置

直接进行Spinner的样式修改总是背景和下拉按钮不能共存,于是决定修改背景后在Spinner的上面叠加一个下拉图标,图标我就用的方法一中提到的image asset制作的图标

2024-04-23 20:45:44 1779 2

原创 【剑指offr--C/C++】JZ7 重建二叉树

我们可以根据二者的特点结合一下:对于前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}, 根据前序可知1是树的根节点,那么再看中序就可以用1分成左子树{4,7,2}和右子树{5,3,8,6}。再看前序的第二个元素是2,2就是左子树的根节点,于是{4,7}是2的左子树,2没有右子树。以此类推就可以得到一颗完整的树。前序遍历:中、左、右。所以前序遍历的第一个节点是树的根节点,第二个节点是左子树的根节点。中序遍历:左、中、右。树的根节点在中间某处。

2024-04-05 19:29:17 342

原创 【剑指offr--C/C++】JZ54 二叉搜索树的第k个节点

/取出栈顶元素,计数器+1,若==k,则返回该节点值。//否则,进入该节点的右子树并重复上述压栈取值操作。//借助辅助栈,依次读取左值并压入栈中,知道最左。//若没有右子树则会继续取出栈顶元素。

2024-04-05 17:55:45 393

原创 【剑指offr--C/C++】JZ55 二叉树的深度

每一个节点的深度都=max{左子树深度,右子树深度}+1。//先将root放进去,记录当前这一层的节点个数,//然后依次取出这一层节点并将其左右子节点放进去。求二叉树深度两个思路:递归、层次遍历。//重复上述步骤直到节点遍历完成。//层次遍历:用队列辅助。三、层次遍历思路及代码。

2024-04-05 17:06:36 206

原创 【剑指offr--C/C++】JZ59 滑动窗口的最大值

我这里考虑:窗口每次往后移动一位,那么如果当前窗口的最大值max在窗口内部,那么再滑动到下一个窗口的时候,窗口内只有最新进来的一个元素没有跟max做过比较,只需要让他俩比较一下即可。通过这种方式能比暴力比较节省一点时间。暴力解法是依次往后滑动一位,然后比较窗口内的值。

2024-04-04 19:17:09 342

原创 【剑指offr--C/C++】JZ73 翻转单词序列

①遍历字符串,通过空格来确定单词。③依次出栈组成新的字符串。②将单词和空格依次入栈。

2024-04-04 18:24:40 185

原创 【剑指offr--C/C++】JZ31 栈的压入、弹出序列

③如果相同就不用入栈了(不入栈=出栈),然后再依次取出栈的栈顶元素看是否与出栈数组当前值相同,相同的话就依次出栈,知道不再相等或者全部出栈;①在入栈之前先判断当前要入栈的元素是否与出栈数组当前元素相同,④若入栈元素还没有遍历完,就继续重复前三个步骤。借助一个辅助栈来模拟入栈过程,② 如果不相同就入栈;

2024-04-04 17:58:00 317

原创 【剑指offr--C/C++】JZ30 包含min函数的栈

step 3:每次push元素的时候与第二个栈的栈顶元素比较,若是较小,则进入第二个栈,若是较大,则第二个栈的栈顶元素再次入栈,因为即便加了一个元素,它依然是最小值。于是,每次访问最小值即访问第二个栈的栈顶。可以利用双栈来完成寻找最小值的操作,从stack1中依次取出元素放到stack2并记录最小值,这样元素全部取出后最小值旧得到了,再把元素依次放回到stack1中即可。step 1:使用一个栈记录进入栈的元素,正常进行push、pop、top操作。step 2:使用另一个栈记录每次push进入的最小值。

2024-04-04 16:36:38 311

原创 【剑指offr--C/C++】JZ9 用两个栈实现队列

栈是先进后出,队列是先进先出,也就是说从push角度来说二者顺序相同,而从pop的角度来说二者顺序正好是相反的,那我们就可以一个栈中push,一个栈中pop。在一个stack1中进行push,然后每当需要pop的时候就将stack1中的元素依次取出放到stack2中,那么正好stack2的顺序就与队列相同了,从stack2取出栈顶元素,取完以后再把元素都放回stack1。

2024-04-04 16:16:17 289

原创 创建一个maven项目以及Sonatype Nexus私服使用

1.下载nexus软件(官网太慢,csdn找的)并解压,nexus-3.45.1-01-win64\nexus-3.45.1-01\bin目录中的nexus.exe就是启动器。在项目的pom.xml中添加私服的上传路径(这里的id应该与上述setting.xml中的id保持一致,name可以随便取)若私服不允许匿名访问,则需要在setting.xml中再添加一下用户登录信息(这里的id需要跟上面截图中的保持一致)在setting.xml中添加私服路径(id和name可以随便取,url从私服获取)

2024-03-28 15:25:18 705

原创 【jenkins+cmake+svn管理c++项目】jenkins回传文件到svn(windows)

在经过cmake+msbuild顺利生成动态库之后,考虑到我一个项目可能会生成多个动态库,它们分散在build内的不同文件夹,我希望能将它们收拢到一个文件夹下,并将其回传到svn。

2024-03-27 19:19:43 1458

原创 【剑指offr--C/C++】JZ22 链表中倒数最后k个结点

法2:设置前后两个指针,先让一个指针走k步的距离为k(如果这个过程中已经走到链表末尾,那么直接返回空),然后同步进行遍历,这样等前面的指针走到结尾的时候,后面的指针正好是倒数第k个节点。法1:先遍历一遍获取size ,在遍历一遍获取第(size-k)个节点返回。遍历链表并存入vector容器,通过下标取出对应位置元素或者返回空。

2024-03-26 22:03:45 253

原创 【剑指offr--C/C++】JZ23 链表中环的入口结点 与哈希表

unordered_set是一种无序的数据集合容器,元素和键同时存在,元素没有按任何特定的顺序排序,而是根据它们的散列(hash)值组织成桶,以允许直接通过值快速访问各个元素(平均时间复杂度是O(1))。一、哈希表(unordered_set)知识点。

2024-03-26 21:40:37 330

原创 【jenkins+cmake+svn管理c++项目】创建一个项目

我是第二种其效果,修改之后记得运行jenkins.exe stop 、jenkins.exe start 命令重新启动一下服务。点击保存之后,在左侧点击Build now, 然后在下边构建过程进度条那里点击“×”或“√”图标可以查看控制台信息。工作台点击"新建item",进入下图,选择Freestyle project,并输入项目名称,点击确定之后进入项目配置页面,填写描述,然后在下边源码管理部分选择svn, 填写代码的url。然后继续,选择构建环境,和编译步骤。

2024-03-26 16:48:43 552

原创 【jenkins+cmake+svn管理c++项目】windows修改jenkins的工作目录

由于jenkins会拉取大量的源代码以及编译生成一些文件,我希望我能自己指定目录作为它的工作空间,放在这里显然不太合适。

2024-03-26 16:10:07 445

原创 【jenkins+cmake+svn管理c++项目】Windows环境安装以及工具配置

从官网下载适合windows系统的安装包,我下载的是最新版的2.426.3 msi文件,这个版本支持的JDK版本是11/17。另外,如果编译完成之后要将内容回传到SVN,需要SVN Publisher plugin插件,这个插件可能在jenkins的插件管理里边找不到,找不到的话就需要自己去找资源下载,是一个。这里有一点问题:我使用先stop再start的方式配置生效,直接restart反而不生效,甚至之前生效的配置也报错了。部分,在其中的部署插件部分,选择你下载好的hpi文件上传就可以了。

2024-03-26 15:34:46 1742

原创 windows系统通过命令行调用cmake和vs编译c++项目

一般我们在`linux`使用:`cmake..;make;`命令调用gcc来编译程序,在`windows`上使用cmake的客户端生成`sln`,再启动VS读取sln编译程序。但是我要用jenkins来管理c++构建,那么就需要在windows环境也能通过命令行来调用cmake。环境: win10虚拟机, VS2017, cmake3.19.4。

2024-03-25 17:49:14 648

原创 cmake与交叉编译(x86 to arm)过程和问题全记录

can’t find “/lib64/libharfbuzz.so” basic_ostringstream未定义的引用 libc.so 未定义的引用 listdc++.so可以直接通过替换动态库文件来升级版本;但是libc.so不能简单替换,由交叉编译工具的制作过程可知,gcc与glibc是强关联的。

2024-03-20 16:47:06 1804

原创 【剑指offer--C/C++】JZ25 合并两个排序的链表

我这里是设置将两个链表拆开组成一个新的链表,这样不需要占用新的空间。两个指针对应节点的值进行比较,那个节点值较小,就将这个节点拿下来放到新链表的末尾(想象拆两条手链),另一个链表不动,这样一轮下来就能按大小顺序将节点依次拆开组成一个新的链表。我上面的pHead3==NULL部分的逻辑是为了通过比较来获取链表的第一个元素,因为第一个元素跟后面的不一样,不能统一用next。只需要返回的时候再把添加的这个表头去掉就可以了,很妙,记录一下。

2024-03-17 18:20:39 742

原创 【剑指offer--C/C++】JZ24 反转链表

三个指针,分别指向:当前节点、前一个节点、后一个节点。通过指针的辅助使得当前节点的next指向前一个节点,这样遍历完一遍之后所有的next全部翻转指向其前一个节点。遍历一轮,将节点依次压入栈,然后从栈顶依次取出节点,并另上一次取出节点的next指向当前取出的节点,最后记得将最后一个节点的nxet指向NULL。

2024-03-17 17:07:44 568

原创 【剑指offer--C/C++】JZ6 从尾到头打印链表

先遍历链表,以此存到vector中,然后定义两个指针,分别从头部和尾部同时往中间遍历,并将相应的位置进行交换,直到两个指针相等或后面的指针小于前面的。例如{1,2,3,4,5} --> 1和5交换,2和4交换。在函数外部声明, 即把ret声明为Solution类的一个公有变量. 从而函数每次直接调用ret执行操作即可, 不需要在每一层递归都声明一个新的ret.先遍历链表,以此存到vector中,然后再从后往前遍历这vector,存入到一个新的vector,就完成了翻转操作。

2024-03-07 20:04:19 422

原创 【剑指offer--C/C++】JZ3 数组中重复的数字

这道题目它要求的时间空间利用率都是n,那么可以考虑创建一个长度为n的数组repeat初始化为0,下标代码出现的数字,下标对应的数组内容代表该下标数字出现的次数。然后遍历提供的数组,每出现一个数字,就去repeat数组下标对应位置内容+1,然后判断如果已经>1了,那说明重复了,直接返回这个下标数字即可。编译报错说是numbersLen是一个会变的数字,不能用它作为数组长度,可是,当运行到这个子函数内部并创建数组的时候,numbersLen不是一个已知的且在子函数退出之前固定不变的数吗?

2024-03-03 22:22:37 404

原创 Android Studio开发之路(七)CameraX&&Opencv的使用

我需要将每一帧处理后的图像想普通相机那样再显示在界面上,但是CameraX的分析用例没有提供返回,而且要将mat再转回也比较麻烦,所以普遍的方式是在预览界面的上面再叠放一个ImageView,每处理一帧就用ImageView显示出来。(根据我的目标,我只要显示处理之后的帧,所以我干脆没有使用预览用例)。原本是调用opencv-android里边的JavaCamera2View来实现,这个用起来比较方便,它提供了集成好的相机预览界面,并且提供了帧处理函数。这里还要注意显示的大小。:提供每一帧图像用于处理。

2024-01-17 11:27:46 1462

原创 Android Studio开发之路(六)(合集)界面优化以及启动图标等

android提供的ActionBar文字偏左,想要居中,于是自定义一个标题栏。自定义标题栏。

2023-12-20 12:06:42 1356

原创 C++ STL 迭代器失效

上面这段代码就是在下标为4的位置插入一个元素8,插入之后vA内部就应该是{0,10,22,33,8,40},迭代器的位置没有发生变化,那它指向的位置就是元素8所在的位置,以上逻辑看似没什么问题,但是在有些编译器里是编译不通过的,这是为什么呢?如上述代码,当使用vA[6]的方式出现访问越界时,依然能得到一个结果,而使用at(6)的方式时程序就会抛出一个数组越界的异常,所以为了及时发现程序错误,访问容器内容时推荐使用at()的方式。【注:无论是插入和删除,it指向的位置始终没变,只是相应位置的元素发生了变化】

2023-11-05 14:39:50 206

原创 UOS QTextEdit设置换行和滚动条(bug自动换行时右侧个别字符被遮盖)

这个问题也好解决,设置一下滚动条的样式就可以,不过不知道为什么我在ui界面上修改样式表不起作用,最后是通过代码修改成功的。

2023-09-21 17:21:49 1197

原创 Android Studio开发之路 (五)导入OpenCV以及报错解决

这里一个简单的解决办法是:将:app的build.gradle中的namespace 语句复制到opencv的build.gradle中。不过需要注意的是,我是重新建了一个项目,修改了这两个参数之后再重新引入opencv才成功的,在上面报错的时候直接修改是不行的。4.加载完成之后看下图,需要修改加载进来的openCV文件夹下面的build.gradle中的一些内容,首先。这个真的折磨了我很久,按别的博主说的org.opencv.engine路径配置不对啥的,完全不解决问题。二、过程中报错以及修改。

2023-08-25 09:52:13 2538 6

原创 multiple definition of......first defined here

原本在centos6-x86-gcc7.5.0上面进行编译非常的顺利,但是拿到麒麟arm上面编译就提示了这个错误:这个报错的意思就是说: opencv中有一些变量和函数多次定义,第一次是出现在freeimage里面。仔细想想,这两个系统编译的差别,很明显的一个就是gcc的版本不一样,7.5版本通过了,7.4版本没通过。查了一些资料,大多是说变量和函数被重复定义了,或者说没有添加条件编译的代码,但是这些显然不匹配我的报错,因为我的是两个流传甚广的第三方库,也已经在环境里使用了挺长时间了。

2023-08-16 17:45:12 427

原创 gcc 命令添加第三方依赖库

要编译一个小的测试程序,其中用到了boost库,编译时需要添加上依赖。报错如下

2023-08-16 16:26:24 486

原创 linux c++ 根据进程名杀死一个进程

目前我查到的信息来看,没找到一个封装好的c++函数可以让我们方便得得到一个进程得运行时长,linux中普遍是通过ps命令来获取到进程的开始时间和运行时长。所以在c++中通过代码来启动命令行来得到结果并将获取到的时间变成总秒数。(所谓的进程名就是执行的程序的名字,一个程序可以同时有多个进程去运行,所以一个名字可能对应多个进程pid)所以可以通过遍历/proc/下所有文件夹中的status的方式获取到该进程名对应的所有进程pid。:文件中第一行标明了该进程对应的进程名。exe:是该进程所运行的程序的软连接;

2023-07-17 17:01:21 1252

空空如也

空空如也

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

TA关注的人

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