自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CJson中一个十分有趣的二进制转换

先上代码段static int pow2gt (int x) { --x; x|=x>>1; x|=x>>2; x|=x>>4; x|=x>>8; x|=x>>16; return x+1; }这段代码是取任意一个数字的最小2的N次幂,因为计算机内存是以二进制来存储的,因此在一些内存申请中可以简化,并且可以运用到其他的方面。先看原理介绍。–x 和 末尾的 x+1可以防止溢出(个人认识),x|x>>1;是

2020-05-18 22:24:39 1794 1

原创 数据结构实战(八皇后问题)

笔者用栈的数据结构实现了八皇后问题,这种方法相对比较简单,但是别的方法也可以解出来,这段代码还有很多地方可以优化,有兴趣的读者可以深入研究。#include<iostream>#include<vector>using namespace std;template<typename T>class stack{public: stack() { cur = 0; }; ~stack() {}; T pop(); void traverse();

2021-04-02 11:14:21 287

原创 数据结构随笔(栈的实现C语言)

栈#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOAW -1#define LENGTH 5typedef struct stack{ int* element; int size; int top;}stack;typedef int

2021-02-25 21:51:57 165

原创 ROS配置过程中的一些注意事项

Ubuntu 挂在U盘出错安装exfat-fusesudo apt-get install exfat-fuse出现cannot download dafault surces list from打开terminal 输入 sudo gedit /etc/hosts在打开的文件末尾最后一行添加152.101.84.133 raw.githubusercontent.com保存后退出在终端中输入sudo rosdep init执行完后输入rosdep update即可完了初始化rosde

2021-01-18 10:36:56 381

原创 yolov5conda环境配置

import xml.etree.ElementTree as ETimport pickleimport osfrom os import listdir, getcwdfrom os.path import joinclasses = ['car', 'watcher', 'base','ignore','armor']def convert(size, box): dw = 1./(size[0]) dh = 1./(size[1]) x = (box[0]

2020-10-19 18:58:20 919 1

原创 C++多线程编程(一)

使用C++可以让程序交替运行两个程序,基于进程的多任务处理和同一程序片段的并发执行。此外,笔者在进行多线程编程中使用的是Linux操作系统。首先,可以创建一个线程。#include <pthread.h>pthread_create (thread, attr, start_routine, arg) thread是指向线程标识符的指针。比如线程的tid的地址。attr可以用来设置线程属性,可以指定线程属性对象,也可以使用默认值NULL。start_routine 线程运行函数起

2020-09-17 22:25:00 127

原创 反向传播算法(python实现)

反向传播是利用函数的链式求导来进行推导的,目的是通过不断调整权重和偏置来不断减小误差,最终得到误差最小的神经网络。下面是其python的实现,只是一个3层的全连接网络。import numpy as npdef nonlin(x,deriv = False): if(deriv==True): return x*(1-x) return 1/(1+np.exp(-x))input_layer = np.array([[0.35],[0.9]])print(inp

2020-09-12 10:01:18 808 1

原创 EM算法实现双硬币模型(python实现)

EM(Expectation-Maximization)算法可以对结果进行预测参数的信息,在一些含有隐变量的参数中使用它可以对模型参数进行一定的估计,并且它在机器学习的很多领域都会运用,这里我用python实现双硬币模型。import numpy as npimport mathmp = math.powclass EM: def __init__(self, theta): self.theta_ap,self.theta_bp = theta sel

2020-08-10 20:18:35 1071

原创 使用Node脚本为女朋友发送每日暖心邮件

首先看看效果图:这个是我在github中找到的一个项目,觉得好玩就试着用了用。首先它可以使用qq邮箱,其次配置方法非常简单。1.利用Git将项目克隆到本地git clone https://github.com/Vincedream/NodeMail2.打开main.js,修改配置项,这个配置项在其中注释已经很明确了。//纪念日let startDay = "2016/6/24";//当地拼音,需要在下面的墨迹天气url确认const local = "zhejiang/hangzhou

2020-08-09 09:49:29 383

原创 python中numpy库的使用

numpy支持的数据类型:bool_ 布尔型数据类型(True 或者 False)int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)intc 与 C 的 int 类型一样,一般是 int32 或 int 64intp 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)int8 字节(-128 to 127)int16 整数(-32768 to 32767)int32 整数(-2147483648 to

2020-08-05 23:32:27 257 1

原创 使用MOG2对运动物体进行检测

本篇内容主要是对运动物体进行检测,通过使用MOG2(高斯混合模型建模)来进行物体运动前背景分离,来检测运动的物体,最后对其进行图像处理,再画出其最小外接矩形,达到对运动物体的分割与检测。具体代码如下:#include<opencv.hpp>#include<imgproc.hpp>#include<highgui.hpp>#include<cstdio>#include<vector>#include<iostream>#

2020-08-03 07:58:21 1467

原创 深入理解计算机系统(一)

helllo程序从源文件到目标文件的转化是由编译器驱动程序来完成的:unix> gcc -o hello hello.c在这里,GCC编译器驱动程序读取源文件hello.c,并把它翻译成一个可执行目标文件hello,翻译过程可分为四个阶段来完成,执行这四个阶段的程序(预处理器,编译器,汇编器,链接器)共同构成了编译系统。hello源程序经过预处理器(cpp)处理,生成被修改过的源程序,例如#include<stdio.h>则告诉预处理器读取stdio.h的内容,并将其加入到hello

2020-07-18 22:39:17 306

原创 模拟退火算法求解TSP问题(C++实现)

在机器学习和深度学习中经常需要求解一个最优值,但是很多函数得到的仅仅是局部最优解,在求解全局最优解时,则需要用到一些算法,这里我用模拟退火算法来进行最优解的求解。这个原理网上教程应该很多,我就不赘述了,具体影响到算法解的结果有很多因素,比如初始温度值的设定,退火的速率以及随机数的随机性,都会影响到解的结果,这里我用C++实现了一遍,希望对大家有所帮助:#include<iostream>#include<cmath>#include<cstdlib>#includ

2020-07-16 23:18:27 1026 3

原创 C/C++函数指针(最详细剖析)

创建函数指针:函数指针有两种用途,一是调用函数,二是做函数的参数。这个可以将两个函数绑定在一起,在调用函数指针时可以调用另一个函数。因此可以做成钩子函数,这个在动态编程中有很重要的作用。接下来我用代码来进行示范函数指针的几种创建方法。#include<iostream>using namespace std;int myfunc(int a, char b){ cout << "int myfunc(int a, char b)" << endl; p

2020-07-14 21:34:47 177

原创 python的一些重要特性

python是一门面向对象的动态语言,得益于其简单,优雅与明确的设计哲学。到现在,python已经运用到人工智能,大数据,网页处理领域。在python中,变量与对象的概念分别如下对象:内存中存储数据的实体,有明确的类型,python中一切皆对象,函数也是对象变量,指向对象的指针,对对象的引用。作为弱类型语言,python中变量是没有类型的,不想C/C++中int,float等等类型。python中又可以将对象分为可变对象和不可变对象:不可变对象:对象对应内存中的值不会变,因此如果指向面向对象的变量

2020-07-08 21:42:46 232

原创 机器学习中SVM+HOG实现对饮料瓶的识别

#include<opencv.hpp>#include<iostream>#include<highgui/highgui.hpp>#include<ml/ml.hpp>#include<string>#include<fstream>#include<vector>using namespace std;using namespace cv;void main(){ VideoCapture c

2020-07-07 19:55:08 2020

原创 C/C++二级指针的理解与应用

C/C++中指针是非常重要的,在前面我帮助大家系统的认识了下指针,但是在实际开发中仅仅依靠这些指针知识是远远不够的,这篇文章就带大家来了解了解二级指针的用法以及对其的认识。接下来在这段代码来了解了解二级指针。void printArray(int **arr,int len){ for (int i = 0; i < len; ++i) { printf("%d ",*arr[i]); }}在这里先给大家介绍一下数组指针和指针数组。指针数组就是一个数组中存储的为指针变量或者指针

2020-07-01 21:57:19 740 2

原创 C/C++中利用指针实现字符串的反转

在C/C++中字符串是以指针的形式存储的,因此可以利用指针来进行反转。下面我用代码来进行演示。#include<cstdio>#include<string>#include<iostream>using namespace std;void revstring(char *test){ int length = strlen(test); int step = length - 1; char *s1 = test; char *s2 = te

2020-07-01 16:37:03 3239

原创 C/C++中字符串指针使用的注意事项

C/C++中如果未使用string,则其字符串是以指针的形式来存储的,因此在此过程中有一些注意事项,防止出现意外的状况。接下来我用代码进行演示。#include<cstdio>#include<iostream>using namespace std;int main(){ const char* s = "asdfg"; cout << sizeof(s) << endl; cout << *s << endl

2020-06-19 08:50:47 494

原创 FFT(快速傅里叶变换)的C++实现

笔者最近在研究数学中的一些算法在实际生活中的应用,其中不乏快速傅里叶变换,发现这个算法在实际生活中运用确实很广,而且FFT在多项式相乘的过程中可以减少运算,提高程序的效率,例如求卷积的过程。接下来我用代码来进行解释(借鉴自斯坦福大学):#include <complex>#include <iostream>#include <valarray>const double PI = 3.141592653589793238460;typedef std::

2020-06-18 08:10:03 7833 4

原创 C++中的this指针详解

首先谈谈this的用法:C++中类的this指针不是类的一部分,因此不会影响sizeof的结果。C++中当类自身作为一个参数时,可以利用this来传递参数,this的作用域是在类内部。其次是this的使用:1.当需要返回类自身时,可以使用 return *this;2.当参数与类内的成员函数名称相同时,可以使用: classname->n = n; 这样来修改类内部的成员变量。当this作为参数时,函数内部将其编译为const A* const !这样可以防止改变类的信息。总结:t

2020-06-10 19:02:59 173

原创 C++static关键字的详解

static有两种用法:静态变量:函数中的变量,类中的变量。静态类中的成员:类对象和类中的函数。接下来就这两种用法,我来进行深入的阐述。1,静态变量。(1)函数中的静态变量。static在程序周期中只会分配一次,而且按值传递。通过以下的例子来进行说明:#include<iostream>using namespace std;void fun1(){ static int m = 1; cout<<m<<endl; m++;}int

2020-06-09 09:38:36 159

原创 C++中const的详解

const的含义使用const用来表示程序中不可修改的常量或对象的值。const作用(1)const可以定义常量。例如,const int a = 100;其中定义了a为常量,不可以修改。(2)类型检查。const常量具有类型,编译器可以进行安全检查,#define也存在类型,不过与其表达量有关(整数,浮点数,用户定义以及运算符的结果类型)。const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一..

2020-06-08 23:31:16 692

原创 C++类设计者的核查表(一)

这篇文章是我对C++类设计的一些个人认识,希望对大家有所帮助。

2020-06-05 21:00:57 195

原创 Linux之Shell脚本编程(一)

shell脚本通常是一个以 #! 起始的文本文件,字符#!置于解释器路径之前。例如,最常见的为#!/bin/bash。 /bin/bash是bash的绝对路径有两种运行脚本的方式,一种是将脚本作为sh的命令行参数,另一个是将脚本作为具有执行权限的可执行文件。将脚本作为命令行参数时的运行方式如下:$ sh script.sh #假设该脚本位于该目录下。$ sh /home/path/script.sh #使用script的完整路径为了使shell脚本能够独立运行,需要具备可执行权限。要使

2020-05-30 15:54:56 209

原创 Linux中Vim的常用命令

在vim编辑器中按:会出现命令行,可以操作编辑器,可以实现一下基本的操作h或方向键左右 光标向左移动一个字符j或方向键向下 光标向下移动一个字符k或方向键向上 光标向上移动一个字符l或方向键向右光标向右移动一个字符Ctrl + f 向下翻页 (foreward)Ctrl + b 向上翻页 (foreward)0或功能键Home 移动到该列的最前面字符处$或功能键 End 移动到这一列的最后面字符处G 移动到该文件最后一列nG 移动到该文件的第n列gg 移动到该文件的第一列/word

2020-05-30 00:01:26 151

原创 使用C++写的中国象棋(单机版)

C++在游戏领域应用很广,其最大有点是运行效率高,对内存的操作比较直接,因此,我利用此有点写了中国象棋的简洁版,来进行一些简单的下棋操作。接下来是代码#ifndef PUTTEXT_H_#define PUTTEXT_H_#include <windows.h>#include <string>#include <opencv2/opencv.hpp>using namespace cv;void GetStringSize(HDC hDC, const c

2020-05-28 22:14:42 2510 1

原创 C++覆盖与重载

C++中覆盖和重载经常是初学者感到很困惑的地方。重载是一个编译时的概念。它是用来区别带不同参数(参数的类型,数量,顺序)的同名函数的工具。如果声明了同名函数,编译器会在执行时根据参数来确定调用哪一个。重载不会涉及任何成员的改变。它是一个强大的工具,它允许程序员在输入不同数据的情况下,使用同名的函数来完成类似的任务。而且重载只用于函数,不用于类,大部分使用的重载函数都是成员函数。覆盖是运行时的概念,它在运行时从一组被覆盖的函数中选择一个函数。覆盖允许派生类的实现者所使用的接口与基类的接口一致,但是各自的实

2020-05-28 13:02:43 299

原创 C++类继承方式

私有继承,基类的公有成员和私有成员都将成为派生类的私有成,这意味着基类方法将不会成为派生对象公有接口的一部分,但是可以在派生类中使用它们。即继承后不提供对外接口,只有派生类自身可以访问它。获得实现,但是不获得接口。如果新类需要访问原有类的保护成员,或需要定义虚函数,则应使用私有继承但是使用公有继承,基类的公有方法将成员派生类的公有方法。保护继承使用保护继承时,基类的公有成员和保护成员都成为派生类的保护成员。以上便是我对继承方式的一些理解,希望可以帮到大家,如果有不好的地方欢迎大家批评指正。

2020-05-28 09:22:28 113

原创 C++虚函数的工作原理

这就是我对virtual的一些认识,有时间大家可以看看,万一就对你们有用了呢

2020-05-28 08:43:49 135

原创 关于C++何时使用引用参数

使用引用参数的主要原因有两个:程序员能够修改调用函数中的数据对象。能够传递引用而不是整个数据对象,可以提高程序的运行速度。当数据结构较大时,比如结构和类对象,第二个原因极为重要。那么什么时候使用引用?什么时候使用指针?什么时候应按值传递呢?下面是我的一些认识。对于使用传递的值而不作修改的函数。如果数据对象很小,如内置数据类型或小型结构,比如int,char之类的为内置数据类型。如果数据对象是数组,则使用指针,并将指针声明为指向const的指针。如果数据结构是较大的结构时,则使用const指

2020-05-25 08:32:16 844

原创 数据结构和算法之线性表(C++)

线性表的顺序存储结构的特点是,用物理上的邻接关系表达逻辑上的前驱和后继,因此可以通过简单的公式获取表中的任意元素的地址,但是在插入和删除过程中需要移动大量元素,同时对存储空间的利用不是很合理。接下来我用C++的模板式编程来实现线性表的基本功能template<typename T>class Linearlist{public: Linearlist() {}; virtual bool Isempty()const { return length; }; virtual bool

2020-05-20 16:23:00 278

原创 C++Error2208:...尝试引用已删除的函数

这种情况一般是对>>或者<<运算符重载时,operate前没有加&导致没有正常的重载。比如`ostream operator << (ostream &out,LinearListSqu<T>& b)这样编译就无法通过ostream &operator << (ostream &out,LinearListSqu<T>& b)这样就可以通过...

2020-05-20 13:30:59 816

原创 关于C3861,找不到标识符的解决方案(抽象类的虚继承)

在对抽象类的继承中,需要对其变量也进行重写,如果出现未定义标识符,因为该继承中没有对其成员进行重写,例如下面的继承关系template<typename T>class Linearlist{public: Linearlist() {}; virtual bool Isempty()const { return length; }; virtual bool Find(int k, T &b)const = 0; virtual ~Linearlist() {};pr

2020-05-20 09:23:15 2243

原创 python实战之多态与继承(简单工资管理系统)

python中的继承与多态与C++中的相类似,可以通过抽象来实现多态与继承,但是实现抽象并不是像C++一样拥有内置功能,需要添加一个abc(Abstract Base Class)的模板来进行抽象操作。可以在定义一个类时在其中加入metaclass=ABCMeta来规定这是一个抽象类,以便于后面的操作。并且可以使用装饰器@abstractmethod来进行抽象函数的定义,而且后续的继承中必须重写此函数。而且抽象类不可以实例化,只可以进行继承。接下来就是我的代码了(比较简单,利用了抽象)from abc i

2020-05-19 18:23:36 337

原创 C/C++中的指针(小白都懂)

斜体样式学习C语言一个很重要的事情就是指针和内存管理,但是对于很多人来说这恰恰是最难的部分,我在几个月的折腾后终于搞清楚了一点。接下来就指针和数组发表一下我的看法。指针最常见的就是 * 和 & 这两个而且这两个都是对内存进行操作的,所以初学者可能会对此产生疑惑,刚开始我也是分不清这两个到底什么关系。在这里先声明一下,C语言的函数传递方式是传值,简单来说就是程序内部传递的是一个数值,这个数值可以是字符可以是字符串还可以是数字,因为字符是以ASCII码值存储的。指针变量和普通变量有什么区别呢?其实我

2020-05-18 22:55:52 278

原创 利用python实现简单的井字棋

笔者在最近的python学习中,写了一段五子棋的简单的显示代码(未能进行胜负的判断),但是胜负判断应该实现起来并不难,以前用C语言写过一个完整的五子棋,相信对于很多人来说并不难。 python语言比较精简,相对于C语言和C++来说较为容易上手,下面是我的代码,若有不好的地方欢迎大家批评指正。import osdef print_board(board): print(board[1] + '|' + board[2] + '|' + board[3]) print('-+-+.

2020-05-18 21:57:14 2682 2

空空如也

空空如也

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

TA关注的人

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