自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JM-Nie的博客

做一个乐于分享的programmer!

  • 博客(42)
  • 资源 (4)
  • 收藏
  • 关注

原创 size_t和int比较时注意符号问题!

今天在写kmp算法时出现了一个奇怪的问题:#include<iostream>#include<string>#include<vector>using namespace std;void getNextVal(vector<int>& next,string& t){ next[0] = -1; int i = 0; int j = -1; while (i < int(t.size()) - 1) { i

2021-03-06 09:50:06 484 1

原创 二分查找算法详解(经典二分和左右边界查找)

这篇文章主要讲解经典的二分查找算法以及二分查找算法的变种(左右边界的查找)。二分查找算法的基本思想:在有序表中,每次都取中间记录作为比较对象,若给定值与中间记录的关键字相等则查找成功,返回该关键字的索引;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上诉过程,直到查找成功,或者所有查找区域无记录,查找失败为止,返回一个值代表没有找到。

2021-02-09 11:12:18 4565 4

原创 多数投票算法(Boyer-Moore Algorithm)详解

多数投票算法(Boyer-Moore Algorithm)给定一个无序数组,有n个元素,找出其中的一个多数元素,多数元素出现的次数大于一半,注意数组中也可能不存在多数元素,如果存在多数元素则返回该多数元素,否则返回-1。

2021-01-29 21:54:49 1228 2

原创 模板参数为函数时的模板函数怎么写

我们知道模板加强了代码的复用性,那么模板参数为函数时的模板函数怎么写呢,下面介绍了普通函数为模板参数以及lambda函数为模板参数的模板的写法。#include<iostream>#include<vector>using namespace std;//普通函数int sum(const vector<int>& vec){ int ret = 0; for (int i = 0; i < vec.size(); i++) { re

2021-01-19 11:46:52 958

原创 MySQL数据库基础--排序检索数据

目录排序数据本文将讲授如何使用SELECT语句的ORDER BY子句,根据需要排序检索出的数据。如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义。为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。排序又分为升序排序(关键字ASC)和降序排序(关键字DESC)。排序数据...

2021-01-02 22:07:50 102

转载 vs里32位项目和64位项目的区别

由于操作系统内存分配的不同,导致软件开发过程中,需要编译不同版本的软件。1。编译程序根据需要选择不同的编译环境。x86和win32为32位程序,x64为64位程序,可以选择不同的编译条件形成不同位的软件。2。代码中的基本数据类型,会根据操作系统的位数来分类内存大小。如int型在32位操作系统下为4字节,在64位系统下为8字节。因此在64位上对int型数据操作,编译生成32位的程序,有可能导致int型越界,软件出现问题。3。32位的程序在64位操作系统上运行,由于64位操作系统的寻址和偏移问题,也

2020-12-30 20:35:20 1720

原创 H.265/HEVC视频编解码中的预测编码--帧内预测和帧间预测

H.265/HEVC视频编解码中主要分为预测编码和变换编码两个大类。这篇文章主要介绍H.265/HEVC视频编解码中的预测编码部分的基本原理。

2020-12-30 20:21:17 1413

原创 MySQL数据库基础--select简单检索数据

上节介绍了如何连接和登录MySQL,如何执行MySQL语言,获取数据库和表的信息。这节将介绍MySQL中最重要的部分,检索数据,可以说MySQL中select关键字的用的比例占90%以上,所以说学习好select关键字是非常重要的。它的用途是从一个或多个表中检索信息。检索单个列SELECT prod_nameFROM products;例:上述语句利用SELECT 语句从products 表中检索一个名为prod_name的列。所需的列名在SELECT关键字之后给出,FROM关键字指出从其中检索数

2020-12-30 00:10:55 268

原创 MySQL数据库基础--使用MySQL

上节介绍了数据库的一些基本概念,这节将主要介绍如何连接和登录MySQL,如何执行MySQL语言,获取数据库和表的信息。连接选择数据库我们可以通过USE来选择我们需要使用的数据库,或者通过双击选择数据库。比如要使用student这个数据库,可以使用:输入:USE student;运行完student数据库字体变为粗体。了解数据库和表显示数据库show database...

2020-12-28 22:11:15 111

原创 MySQL数据库基础--基本术语和概念

1、SQL:Structure Query Language,即结构化查询语言,是目前广泛使用的关系数据库标准语言。2、DDL:Data Definition Language,即数据定义语言,定义数据库涉及的各种对象,定义数据的完整性约束、保密限制等约束。3、DML:Data Manipulation Language,即数据操作语言,实现对数据的操作,数据基本操作有两类,检索(查询)和更新(插入、删除和更新)。4、DCL:Data Control Language,即数据控制语言,实现对数据库的控

2020-12-28 20:03:43 475

原创 VS2017代码在debug模式下正常运行,但是release模式崩溃

今天在vs2017上调试代码发现一个令人疑惑的bug,代码在debug模式下能完美运行,但是release模式下崩溃,令人费解,最后通过不断的调试发现是debug模式和release模式下变量的默认初始化不同造成的,bool型变量在release模式下是默认初始化为true,debug模式下是默认初始化为false。导致了最后的bug,这种bug难以发现,但是我们可以不让其默认初始化,最好的方式就是对每一个类都自己写构造函数,每一个变量都进行人为初始化。为了防止再遇到类似的问题特别记录一下。...

2020-10-21 15:04:46 1467

原创 常见排序算法之归并排序原理及递归非递归版本代码

归并排序主要思想是分治,先将要排序的元素分成两个子集,先将这两个子集排列成有序,然后将这两个有序的序列归并为一个有序的序列。

2020-10-20 21:24:13 195

原创 常见排序算法之快速排序原理及递归非递归版本代码

目录快速排序原理复杂度分析选择排序代码1.递归版本2.非递归版本测试及结果测试结果快速排序原理之前介绍过三种基础的排序算法以及它们之间的比较:冒泡排序,选择排序和直接插入排序,我们知道它们的时间复杂度都是O(n2),那是不是所有的算法的时间复杂度都是O(n2)呢?当然不是!下面我们介绍的快速排序之所以叫快速排序就是因为目前已有的排序算法中,快速排序的时间复杂度是最小的。快速排序的基本思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分小,则可以分别对这两部分记录继续进行排

2020-10-19 20:11:08 471

原创 排列组合之子集及其变形题--字节跳动原题

字节跳动在2020年8月的一道原题:在n个正整数中,任意挑选k个(不可重复挑选,0<=k<=n)数字的和记为sum,另有一个正整数m,请问sum%m最大是多少?输入输出#include <iostream>#include <vector>using namespace std;int n;vector<vector<int>> ans;void backtrack(int first, vector<int>&

2020-10-10 20:47:01 167

原创 点云压缩——点云压缩相关知识介绍

点云压缩——点云压缩相关知识介绍1.什么是点云2.点云的分类3.点云可以做什么4.为什么要压缩点云接下来的时间主要是想记录一下自己学习点云的知识点,一方面是分享自己所学习到的点云相关知识,一方面是备忘。难免有遗漏以及理解错误的地方,还望大家不吝赐教。1.什么是点云点云 是指海量三维点的几何,这些点除了几何坐标还包括了一些附加属性,比如颜色,反射率等等。根据激光测量原理得到的点云,包括三维坐标(XYZ)和激光反射强度(reflectance)。根据摄影测量原理得到的点云,包括三维坐标(XYZ)和颜色

2020-10-10 20:36:11 6686 1

原创 视频编解码之熵编码简介

这篇博客首先介绍一下熵编码的基本原理,然后介绍一些常见的熵编码方式,最后介绍不同规律的编码符号一般使用什么样的熵编码器。

2020-10-08 22:36:05 1893

原创 fatal error LNK1169: 找到一个或多个多重定义的符号的解决方案

因为编译器是源文件和头文件分离编译的,实际上,源文件由于包含了头文件,而头文件中包含了构造函数的实现,于是源文件生成目标文件的时候,包含了构造函数的实现。而main.cpp也包含了头文件,同样编译生成目标文件的时候,也会包含构造函数的实现。这样二者在链接阶段就会发现有两个一模一样的函数,出现了重定义的问题。比较好的解决方法是在源文件中实现头文件中已经声明的函数。参考博客...

2020-09-19 10:55:21 402

原创 用python实现多帧点云文件的播放

我们可以通过meshlab去打开单帧的点云文件,但是不能播放多帧的点云,因此通过python库进行播放,下面是详细代码。python代码#引入python库numpy和open3d,可以通过pip install命令安装import osimport numpy as npimport open3d as o3d#打开文件路径files = os.listdir("F:\\pointcloud\\DataSet\\GPCC_DataSet\\Cat3_Frame-Based\\Ford_01_

2020-09-18 20:05:48 1821 3

原创 由二叉树的前序遍历和中序遍历得到叶子节点的个数--字节跳动原题

由二叉树的前序遍历和中序遍历得到叶子节点的个数题目第一行输入节点数量,第二行输入二叉树前序遍历的结果,第三行输入二叉树中序遍历的结果,要求输出叶子节点的数量输入31 2 32 1 3输出2思路分析可以先由二叉树的前序遍历和中序遍历构建出一棵二叉树,然后在遍历二叉树得到叶子节点的数量!源码#include <fstream>#include <iostream>#include <algorithm>#include <vector&

2020-08-22 21:16:11 681

原创 利用python删除指定文件或文件夹

如果你跑了很多数据,需要删除一些文件或者文件夹,那么你可以使用python来帮忙。下面提供两个版本的代码,分别对应删除文件或者文件夹的版本。记录一下代码顺便分享一波。代码中有详细的解释:删除指定后缀的文件版本import osimport shutil# GetFilePath函数是用来递归遍历文件夹里面所有内容,包括文件夹和文件,将它们分开放到两个列表# 两个列表:fileList 是放文件,dirList 是放文件夹def GetFilePath(rootPath, fileList,

2020-08-14 16:47:58 3116

原创 回溯法之迷宫问题(华为笔试题)

目录回溯法原理回溯法之迷宫问题代码回溯法原理可以参考我的另一篇博客。回溯法之迷宫问题2020/8/12日的华为笔试出了一道笔试迷宫问题的改版,题目大致的意思如下:有一条刚贴地砖的路,强迫症小明走路每次走的步长一样,并且只走贴了地砖的地方,如果用1代表贴了地砖,用0代表没有地砖,问小明能否从左上角出发走到终点右下角。例题:输入23 51 0 1 0 00 0 0 1 00 0 1 0 1输出true其中2是步长,即小明一次走两步,3和5分别代表行数和列数。下面3行5列是代表有

2020-08-13 21:54:17 492

原创 回溯法之N皇后问题--得到多解以及只得到一个合适解

目录回溯法原理回溯法之N皇后问题代码(C++实现)结果回溯法原理具体的原理可以看这篇博客。写的非常好,这里引用一下原文。回溯法有通用解法的美称,对于很多问题,如迷宫等都有很好的效果。回溯算法实际上一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回(也就是递归返回),尝试别的路径。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。回溯法说白了就是穷举法。回溯法一般用递归来解决。回溯法一般都用在要给出多个可以实现最终条件

2020-08-13 21:30:40 1344

原创 python的格式化输出

在python中格式化输出字符,不足位数的在前面补零。方法一、类似C语言的格式化输出比如用4位表示一个整数数字,不足四位的在前面补零。i = 23stringI = "%04d" % iprint(stringI)输出0023方法二、python中的zfill方法n = "123"stringN = n.zfill(5)print(stringN)输出00123也可以给负数补零n = "-123"stringN = n.zfill(5)print(stringN)

2020-08-13 21:07:49 162

原创 C++中的运算符重载--重载输出操作符、算术运算符、关系运算符、自加运算符、下标运算符

C++中的运算符重载输出操作符重载、算术运算符重载、关系运算符重载、自加运算符重载、下标运算符重载

2020-08-04 21:54:32 389

原创 常见排序算法之直接插入排序及三种基础算法对比

目录直接插入排序算法思想时间复杂度直接插入排序代码直接插入排序测试结果直接插入排序与冒泡排序、选择排序对比测试代码对比结果完整代码mysort.hmysort.cppprint_data.hprint_data.cppmain.cpp直接插入排序直接插入排序和冒泡排序、选择排序是3种基础排序算法。前面已经介绍了冒泡排序以及选择排序,下面介绍一下直接插入排序。3种排序方式的时间复杂度都是O(n2),但是直接插入排序相比前两种排序方式性能更好,直接插入排序更加适合于已经基本有序和数据量较少的情况。插入排序的

2020-08-04 15:03:40 535

原创 常见排序算法之选择排序及算法对比

目录选择排序算法思想时间复杂度选择排序代码选择排序测试结果选择排序与冒泡排序对比测试代码对比结果完整代码mysort.hmysort.cppprint_data.hprint_data.cppmain.cpp之前已经写过一篇关于冒泡排序及其改进的文章,参考博客。现在介绍一下简单选择排序。选择排序算法思想选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。相比于冒泡排序,交换的次数更少,性能优于冒泡排序。时间复杂度最坏时

2020-08-04 11:20:13 263

原创 常见排序算法之冒泡排序及其改进

目录冒泡排序算法思想时间复杂度经典冒泡排序代码测试结果冒泡排序算法的改进代码测试结果改进算法与经典算法的比较测试结果完整代码mysort.hmysort.cppprint_data.hprint_data.cppmain.cpp冒泡排序冒泡排序(BubbleSort)以其“在排序过程中相邻元素不断交换,一些元素慢慢被换到最后,看起来就像是元素在冒泡一样”而得名,是一种简单的基于关键词比较的排序算法。算法思想假设有n个数据,依次比较相邻两个元素,如果反序则交换位置,直到没有反序为止。以递增序为例,每

2020-08-04 09:35:55 1874

原创 Git仓库搭建与TortoiseGit使用--手把手教学

目录一.背景知识1.Git是什么版本控制系统仓库常用Git服务器Git的一些基本概念Git管理文件的三种状态2.TortoiseGit二.软件安装三.TortoiseGit的简单使用1.本地仓库基本操作新建仓库将文件提交到本地仓库比较差异版本回退还原操作2.远程仓库操作todo当你需要经常修改代码时,你会发现版本控制软件是多么的优秀,感谢实验室师弟的教程简单的学习了Git版本控制,从此再也不用担心之前修改过的代码找不到了!用这个博客记录一下过程防止以后忘记。如果你通过这篇文章学会了版本控制,能给我个赞吗?

2020-07-30 22:22:15 1047

原创 Github上如何设置个人头像

1、打开GitHub首页,点击setting2、点击上传图片,选择你喜欢的照片作为头像3、更新你的改动

2020-07-30 20:02:42 1929

原创 大话数据结构之栈与队列

目录数据结构之栈与队列todo数据结构之栈与队列todo

2020-07-30 08:48:09 87

原创 大话数据结构之串

目录数据结构之串Todo数据结构之串Todo

2020-07-30 08:45:37 125

原创 大话数据结构之线性表--链式存储结构单链表的c++实现

目录数据结构之链表数据结构之链表

2020-07-30 08:43:58 362

原创 C++中fstream、ofstream、ifstream的使用--将数据重定向输出到文本文件

C++中fstream、ofstream、ifstream的使用--将数据重定向输出到文本文件。源文件讲解。

2020-07-29 11:43:38 1559

原创 python实现数据抓取--xlwt和xlrd库的使用

python实现数据抓取--xlwt和xlrd库的使用1.python打开一个文件2.python将数据写入excel中3.AVS_PCC抓取数据代码

2020-07-28 22:44:00 142

原创 python实现批处理--subprocess模块的使用

python实现批处理subprocess模块的使用python调用exe文件

2020-07-28 22:35:42 2195 3

原创 LeetCode刷题笔记(2)——外观数列、连续子数组的最大和等

LeetCode刷题笔记(2)1.外观数列

2020-07-19 16:07:13 114

原创 LeetCode刷题笔记(1)——两数之和、仅仅反转字母、奇偶链表等

LeetCode刷题笔记1.两数之和2.仅仅反转字母3.奇偶链表

2020-07-18 22:46:00 162

原创 C++知识点的查漏补缺--常见的函数集合

C++知识点的查漏补缺C++中判别字符是什么类型的函数C++中判别字符是什么类型的函数包含在头文件<ctype.h>中isalpha();//是否为字母isdigit();//是否为数字isupper();//是否为大写字母islower();//是否为大写字母...

2020-07-18 22:15:28 139

原创 图像连通域分析及相关算法研究——很详细的原理以及简单的代码

图像连通域分析1、连通域的基本概念(1)两步法图解两步法的matlab代码如下function [ outImg, labels ] = MyBwLabel( inputImg )%MyBwLabel 自制的连通区域分析函数% [ outImg, labels ] = MyBwLabel( inputImg )% inputImg: 输入的图像,要求是二值化图像,且最大值为...

2019-11-21 23:27:17 15117 8

原创 H.265/HEVC视频编解码学习笔记

H.265/HEVC视频编解码学习笔记视频编码又被称为视频压缩,主要目的是去冗余。要想人眼对视频有连续的感受,帧率必须在25~30fps以上。视频压缩分为有损压缩和无损压缩。有损压缩:视频压缩通常采用有损压缩。无损压缩:常用于文本文件、程序文件等进行压缩(5:1以下,图像3:1左右)。有损压缩通常是忽略掉一些人眼或人耳难以察觉的高频信息。有损压缩算法性能与码率和失真有关,在损失一定的...

2019-09-19 10:53:35 1218 3

单链表的C++实现.zip

单链表的C++实现.zip 链式存储结构单链表的C++实现 单链表的存储结构 判断链表是否为空链表 返回链表的长度 寻找元素 获取元素 插入节点 删除节点 头插法创建单链表 尾插法创建单链表 单链表的整表删除 打印单链表

2020-08-06

二维otsu代码(最大类间方差法)

二维最大类间方差法相比一维otsu算法抗噪声能力更强,基本原理可以参考代码,也可以找相关论文进行学习,这里用matlab实现了快速二维最大类间方差法。二维otsu实现的效果相比一维otsu以及matlab自带的阈值分割函数graythresh来说效果更好。

2019-11-22

seedFilling.m

种子填充法(seed-filling算法)matlab代码 连通域一般是指图像中具有相同像素值且位置相邻的像素点组成的图像区域。连通域分析是指将图像中的各个连通区域找出并标记。连通区域分析在图像分析处理的众多应用领域非常常用。连通区域分析处理的对象一般是一张二值化后的图像。像素邻域关系一般有四邻域和八邻域两种。选取一个前景像素点作为种子,然后根据连通区域的两个基本条件(像素值相同、位置相邻)将与种子相邻的前景像素合并到同一个像素集合中,最后得到的该像素集合则为一个连通区域。

2019-11-22

基于matlab的布莱克曼窗函数法设计的低通滤波器

基于matlab的布莱克曼窗函数法设计的低通滤波器 基于matlab的布莱克曼窗函数法设计的低通滤波器 基于matlab的布莱克曼窗函数法设计的低通滤波器

2018-10-14

空空如也

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

TA关注的人

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