- 博客(221)
- 收藏
- 关注
原创 二叉树的各种操作
二叉树的各种操作1、树的递归遍历2、求二叉树中节点的个数3、求二叉树中叶子节点的个数4、求二叉树的深度5、求第k层节点数6、树的非递归遍历7、求一棵二叉树的镜像8、判断两棵树的结构是否相同9、判断一棵树是否平衡10、将二叉查找树变为有序的双向链表11、判断一棵树是否是另一棵树的子结构12、重建二叉树13、判断是否为二叉搜索树的后序遍历序列14、二叉树中和为某一值的...
2018-04-01 09:31:39 1340
原创 单链表的各种操作
1、从单链表中删除指定元素2、翻转单链表3、求单链表中节点个数4、查找链表中倒数第K个节点5、查找链表中间节点6、倒序打印单链表7、已知两个单链表pHead1 和pHead2 各自有序,把它们合并成一个链表依然有序8、判断一个单链表是否有环9、判断两个单链表是否相交10、求两个单链表相交的第一个节点11、已知一个单链表中存在环,求进入环中的第一个节点12...
2018-03-30 08:41:15 1384
原创 C/C++ 常用内存操作函数的实现
1、函数:memcpy原型:void *memcpy(void *dest,void const *src,size_t length) 功能:memcpy从src的起始位置复制length个字节到dest的内存起始位置说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针void *memcpy(void *dest, void const *src, size_t len...
2018-03-13 14:57:09 1900
原创 C/C++ 常用字符串函数实现
1、函数名: strcpy功 能: 将参数src字符串拷贝至参数dest所指的地址用 法: char *strcpy(char *dest, const char *src);返回值: 返回参数dest的字符串起始地址说 明: 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别留意,或者用strncpy()来取代char *strcpy(char *...
2018-03-11 16:01:09 1919
原创 23种设计模式分类
1.创建型模式1)Factory模式2)AbstactFactory模式3)Singleton模式4)Builder模式5)Prototype模式2.结构型模式1)Bridge模式2)Adapter模式3)Decorator模式4)Composite模式5)Flyweight模式6)Facade模式7)Proxy模式3.行为模式1)Tem...
2019-06-01 21:14:15 386
原创 Opencv surf算法
特征点检测与匹配算法——surf#include <opencv2/opencv.hpp>#include <opencv2/nonfree/nonfree.hpp>#include <sys/time.h>#include <iostream>using namespace std;int main(){ cv::Mat...
2019-05-19 10:33:04 5234 1
原创 Opencv 阈值化处理
阈值化算法(使用滑动条)#include <opencv2/opencv.hpp>using namespace std;using namespace cv;#define WINDOW_NAME "【程序窗口】"int g_nThresholdValue = 100;int g_nThresholdType = 3;Mat g_srcImage, g_gray...
2019-05-18 17:34:27 466
原创 go语言exec包的使用
有时候我们的go程序需要执行外部的命令,比如执行linux shell命令,一个其他语言(比如C语言)编写的二进制文件,我们都可以通过调用go语言exec包的函数来执行。下面将介绍exec包的一些简单使用例子。1. exec.Command执行命令 假设我们要执行调用linux的ping命令,求的5次ping的平均值,可以采用如下方式:package main...
2019-03-10 17:19:11 5981
原创 go 语言中的定时器
在日常的开发过程中,我们免不了与定时器打交道。通常需要定时执行某个程序,可能是每隔一段时间执行一次,也可能是固定的每天在某一个时间点执行一次。总之,定时器的使用是非常频繁的,下面将介绍几种常用定时器。1. 假设每隔三秒,我们打印一段信息,可以采用如下方式。我们将要执行的程序放在一个go协程中去执行。package mainimport ( "fmt" "time...
2019-02-25 23:10:10 4715
原创 redis pipe处理大数据操作
假设我们现在有一个需求,需要往redis中添加1000完条数据。注意这1000万数据是没有重复的,因此我们只需要把这1000万数据添加到redis中的一个集合中。命令行添加方式如下:SADD [集合名称] 成员1,成员2,...例如SADD FRUIT apple banana pear 这样添加的效率低,时间都耗费了网络传输和命令传输的往返时间...
2019-02-24 16:11:38 1968
转载 Linux 去掉^M的方法
转自:http://blog.csdn.net/lhf_tiger/article/details/8203013真恶心,10X流程产生的csv文件的行位居然有^M字符,害我一直在找报错原因,真是坑,还好最后我找出来了。一直在用Python,perl是越来越不熟练了。调试花了好久。替换^M字符在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”...
2018-12-17 10:13:35 1702
原创 centos下perl的升级
1.访问http://www.cpan.org/authors/id/S/SH/SHAY/ 下载perl版本2.将下载下来的安装包放到你的目录里边# 解包 tar -zxvf perl-5.26.1.tar.gz # 进入文件目录 cd perl-5.26.1进入解压目录执行./Configure --help查看过后,使用这个指令来设置源码./Configure -...
2018-12-10 09:56:29 2873
转载 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found问题解决方法
https://pkgs.org/download/libstdc++ centos 7 64位系统,本人在升级完gcc7.3.0之后,发现编译项目工程,结果会出错:libstdc++.so.6: version `GLIBCXX_3.4.20' not found解决方法如下:[root@localhost src]# strings /usr/lib64/libstdc++.so....
2018-12-10 00:07:11 11117 2
原创 Go语言常用字符串操作
1. 去除字符串中多余空白字符package mainimport ( "fmt" "strings")//利用正则表达式压缩字符串,去除空格或制表符func compressStr(str string) string { if str == "" { return "" } //匹配一个或多个空白符的正则表达式 reg ...
2018-11-29 14:04:19 390
原创 go语言解析json字符串
go语言解析json数据主要使用go语言自带的json转换库encoding/json1. json.Marshal函数该函数的作用是主要对象转换为JSON字符串数据,函数原型如下:func Marsha (v interface{})([]byte, error)也就是说,这个函数接收任意类型的数据v,并将其转换为字节数组类型,返回值就是我们想要的json数据和一个错误代码。...
2018-11-29 13:56:33 2793
原创 PTAM在Linux下编译运行
一. 环境搭建配置:Ubuntu14.041. 前期准备(1)更新软件源sudo apt-get update(更新软件列表)sudo apt-get upgrade(更新已安装的软件)(2)安装build工具sudo apt-get install build-essential cmake pkg-config(3)安装C++库sudo apt-get in...
2018-10-31 20:59:18 1011
原创 Opencv Harris和FAST角点检测算法
Harris算法#include<opencv2/opencv.hpp>#include<time.h>#include<sys/time.h>using namespace cv;using namespace std;int thresh = 53;Mat src, dst, norm_dst, gray_img, abs_dst, o...
2018-10-28 14:17:49 792
原创 Go语言并发模型——通道
原子函数和互斥锁都能工作,但是依靠它们都不会让编写并发程序变得更简单,更不容易出错,或者更有趣。在Go语言里,你不仅可以使用原子函数和互斥锁来保证对共享资源的安全访问以及消除竞争状态,还可以使用通道,通过发送和接收需要共享的资源,在goroutine之间做同步。 当一个资源需要在goroutine之间共享时,通道在goroutine之间架起了一个管道,并提供了确保同步交...
2018-10-18 09:17:49 540
原创 Go语言并发模型——竞争状态
如果两个或者多个goroutine在没有互相同步的情况下,访问某个共享的资源,并试图同时读和写这个资源,就处于相互竞争的状态,这种情况被称作竞争状态。对一个共享资源的读和写操作必须是原子化的,换句话说,同一时刻只能有一个goroutine对共享资源进行读和写操作。下面这一个程序将会出现竞争状态:package mainimport ( "fmt" "run...
2018-10-16 14:17:47 388
原创 Go语言并发模型——goroutine
Go语言里的并发指的是能让某个函数独立于其他函数运行的能力。当一个函数创建为goroutine时,Go会将其视为一个独立的工作单元。这个单元会被调度到可用的逻辑处理器上执行。Go语言运行时的调度器是一个复杂的软件,能管理被创建的所有goroutine并为其分配执行时间。这个调度器在操作系统之上,将操作系统的线程与语言运行时的逻辑处理器绑定,并在逻辑处理器上运行goroutine。调度...
2018-10-15 09:01:54 623
原创 Go语言类型系统——接口与嵌入类型
多态是指代码可以根据类型的具体实现采取不同行为的能力。如果一个类型实现了某个接口,所有使用这个接口的地方,都可以支持这种类型的值。例如标准库里io包里实现的流式处理接口。io包提供了一组构造的非常好的接口和函数,来让代码轻松支持流式数据处理。只要实现两个接口,就能利用整个io包背后的所有强大能力。下面是一个示例程序package mainimport ( "fmt...
2018-10-13 08:50:35 474
原创 Go语言类型系统——基本类型
一、用户定义的类型Go语言里声明用户定义的类型有两种方法。最常用的方法是使用关键字struct,它可以让用户创建一个结构类型。结构里每个字段都会用一个已知类型声明。这个已知类型可以是内置类型,也可以是其他用户定义的类型。1. 结构型类型//user 在程序里定义一个用户类型type user struct { name string email ...
2018-10-11 16:49:31 487
原创 Go语言数组、切片和映射
G语言有3种数据结构可以让用户管理集合数据:数组、切片和映射。一、数组 在Go语言里,数组是一个长度固定的数据类型,用于存储一段具有相同类型的元素的连续块。数组存储的类型可以使内置类型,如整型或者字符串,也可以是某种结构类型。1. 声明和初始化声明数组时需要指定内部存储的数据的类型,以及需要存储的元素的数量,这个数量也称为数组的长度。1)声明一个数组,并设置为0值var...
2018-10-08 22:09:10 376
原创 Linux下./configure、make和make install命令
1. ./configure命令 ./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。 这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该...
2018-09-17 10:30:28 606
原创 Ubuntu常用工具安装与设置
1. 初次登录设置root 密码输入命令:sudo passwd2. ubuntu系统安装vim:普通用户下输入命令:sudo apt-get install vim-gtk刚安装的VIM,可能界面并不是十分友好,这就需要我们去更改vim的配置文件,按照我们的需求去修改它。在命令行下,输入命令:sudo vim /etc/vim/vimrc必须加上sudo,否则你是没有权限...
2018-09-16 15:22:52 727
转载 ubuntu12.04 64位安装opencv-2.4.9
本文转载自http://blog.csdn.net/dengshuai_super/article/details/51394118 作者:dengshuai_super准备工作:1. 编译环境sudo apt-get install build-essential2. 安装GTK环境sudo apt-get install libgtk2.0-dev (GTK+...
2018-09-10 08:18:54 641
原创 进制转换
1. 十进制转其他进制1) 十转八进制string l0to8(int a) { string s = ""; while (a) { int res = a % 8; s = to_string(res)+s; a /= 8; } return s;}2)十转二进制 string l0to2(in...
2018-08-28 16:08:31 347
原创 C++实现单例模式
下面是一个简单的单例模式 构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。class singleton{private: singleton(){}private: static singleton*...
2018-08-27 10:28:31 591
原创 学习笔记之动态栈
本博客内容来源自Milo Yip老师的从零开始JSON库教程,中的一个动态栈的实现。下面是链接地址:https://zhuanlan.zhihu.com/p/22566705因为收获颇多,故作此笔记,记录之。一个字节型的动态栈,能够实现两倍空间自动扩展(叶老师是支持1.5倍自动扩展)。下面是相关实现测试代码:#include<iostream>#include<ass...
2018-08-25 16:43:29 241
原创 Patition函数用法
Patition函数 实现快速排序算法的关键在于先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的数字移动到数组的左边,比选择的数字大的数字移动到数组的右边。这个函数可以如下实现:int Parition(int data[ ],int length, int start, int end){ if(data == NULL || length ...
2018-08-24 09:57:48 640
原创 洗牌算法和概率算法
1.洗牌算法假定有个数组,含有n个元素,假定有个方法shuffle(...)对n-1个元素有效,我们用它来打乱n个元素的次序。我们会先打乱前n-1个元素的次序,然后取出地n个元素,将它与数组中的元素随机交换。递归解法的算法如下:int Rand(int low, int high){ return low + rand() % (high - low + 1);}vec...
2018-08-21 18:59:13 626
原创 I/O模型
一、基本概念通常有同步/异步,阻塞/非阻塞四中调用方式:1. 同步和异步主要针对客户端 同步:所谓的同步,就是在客户端发出一个功能调用时,在没有得到结果之前,该调用不返回,也就是说必须一件一件事做,等前一件事完了之后才做后一件事。 如:普通的B/S模式(同步):提交请求->等待服务器处理->处理完毕返回,这期间客户端浏览器不能干任何事异步:与同步相对。当客户端一个异步过程调用发出之...
2018-08-19 20:21:51 239
原创 最长公共子序列与子串问题
1. 最长公共子序列问题题目:给定两个字符串str1和str2,返回两个字符串的最长公共子序列。举例:str1="1A2C3D4B56",str2="B1D23CA45B6A"。"123456"和"12C4B6"都是最长公共子序列,返回哪一个都行。解法vector<vector<int>>getdp(vector<char>str
2018-08-17 20:48:31 311
原创 字符串题目
1. 数串1. 题目描述:设有n个正整数,将他们连接成一排,组成一个最大的多位整数。 如:n=3时,3个整数13,312,343,连成的最大整数为34331213。 如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。输入描述: 有多组测试样例,每组测试样例包含两行,第一行为一个整数...
2018-08-15 08:43:27 375
原创 大数据和空间限制问题
大数据和空间限制问题1. 只用2GB内存在20亿个整数中找到出现次数最多的数2. 40亿个非负整数中找到没出现的数3. 找到100亿个URL中重复的URL以及搜索词汇的top K问题4. 40亿个非负整数中找到出现两次的数和所有数的中位数5. 一致性哈希算法的基本原理6. 统计论坛在线人数分布7. 找到1到10w中没有出现的两个数字8. 判断数字是否出现在40亿个数...
2018-08-10 14:40:28 913
原创 位运算各种操作
1.二进制中1的数2.数组中只出现一次的数字3.不用加减乘除做加法4.不用额外变量交换两个整数的值5.不用比较判断找出两个数中较大的数6.在数组中找到出现奇数次的数 1. 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2。 为了避免死循环,可以不右移输入的数字n。首先把n和...
2018-08-08 19:53:26 382
原创 栈与队列的各种操作
栈与队列的各种操作1.用两个栈实现队列2.包含min函数的栈3.栈的压入、弹出序列4.栈的压入、弹出序列5.仅用递归函数和栈操作逆序一个栈6.用一个栈实现另一个栈的排序7.滑动窗口的最大值1.用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和 deleteHead,分别完成在队列尾部插入节点和在队列头部删除结点的功能。template...
2018-08-06 19:15:31 859
原创 守护进程与孤儿进程
基本定义 守护进程:是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时才终止。因为它们没有控制终端,所以它们是在后台运行的。UNIX系统有很多守护进程,它们执行日常事务活动。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。...
2018-08-04 08:55:42 1424
原创 AVL树
AVL树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持,而且必须保证树的深度为为O(logN)。最简单的方法是要求左右子树具有相同的高度。 另一种平衡条件是要求每个结点都必须要有相同高度的左子树和右子树,这个条件太严格,需要放宽条件。 一棵AVL树是其每个节点的左子树和右子树的高度最多差1的二叉查找树。如下面两棵树,左边的树是AVL树,右边的树不是...
2018-08-02 16:04:35 2731
原创 判断素数
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。定义 质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。解法1对1到n之间的数求余,若余数为0,说明其有因子,它不是一个素数。bool isPrime(int n){ int i; for (i = 2; i < n; i++) {...
2018-07-31 09:19:09 1165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人