自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无鞋童鞋的博客

有远大抱负的人不可忽略眼前的工作

原创 C++智能指针

1 使用智能指针的原因   我们知道C/C++的指传统针可以用来通过指向对象地址来间接访问该对象,但是当某个指针指向人为申请的堆空间,我们时常忘记手动释放该空间从而造成内存泄漏。我们可以看看下面的代码:void outputStr(std::string & str) { std...

2017-08-13 18:55:22 1223 2

原创 C++并发编程框架Theron(1)——Actor模型介绍

1 说在前面的话   Theron是近些年发展起来的一个非常不错的C++多线程开发框架,最近有详细阅读相关资料,发现它思想非常有条理,结构很明朗,非常适合项目开发。其实Theron国内研究还是非常少的,目前还没有看到什么公开项目使用该框架。但是这并不代表Theron不够优秀,一件新鲜事物要被...

2017-07-09 23:43:12 6326 1

翻译 论文笔记——CVPR 2017 Dilated Residual Networks

1. Background      这次我来介绍一篇深度网络文章《Dilated Residual Networks》,发表在CVPR 2017会议上。作者是普林斯顿大学的Fisher Yu博士等人。网络简称为DRN。   文章原文可在作者主页阅览:Fisher Yu主页   这篇文章实则...

2017-05-07 14:27:43 7080 2

原创 SLIC超像素分割slicmex源代码在windows下matlab中mex出错的修正

1. 说明  关于超像素分割的背景不在过多说明,大致作用就是将区域内相似属性的超像素集合到一起,合成一个有更多属性的块区域。其中SLIC算法应用最广泛,现在在图像处理和计算机领域有很广泛的应用。作用如图所示: \quad 2. 下载地址和使用说明  SLIC算法C++/Matlab的dem...

2016-12-16 16:41:31 5773 35

原创 字符串匹配算法KMP详细解释——深入理解

1. 前言  字符串匹配是一个经典算法问题,展开来讲各类问题多达几十种,有名称的算法也不下三十种,所以需要深入学习的东西有很多。这次我们来探讨一个最简单的问题,假设现在随机输入一个长度为m的主串T,另外输入一个长度为n(n≤m)的字符串P,我们来判断字符串P是否是主串T的一个子串(即能否从T中随机...

2016-12-04 16:09:13 11441 8

原创 matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明

1. matlab图像保存说明   matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。   详细来说imread把灰度图...

2016-11-23 13:43:10 76823 18

原创 C/C++笔试必须熟悉掌握的头文件系列(一)——stdio.h/cstdio

“stdio.h”是C语言中标准输入输出 (standard input & output)头文件,而C++语言中以示与传统C语言的区别,名称换为了“cstdio”,实际两个头文件中内容和功能是一样的。所以涉及到标准输入输出的操作时候,都需要包含以上两种头文件之一。

2016-10-28 16:38:56 3404 4

原创 Matlab中save实现保存数据到mat文件的正确使用

主要需要注意save savePath A; 和 save(savePath,'KSD');两种写法的区别。1 . 普通保存在当前文件夹下save matPath.mat A B; % A B都是生成的数据矩阵   需要注意这种方式只能将数据保存在当前文件夹下的第一个参数文...

2016-10-17 10:00:30 71324 6

原创 C/C++输入一行每隔一个空格一个数据

题设让先输入数据个数,再另起一行,每隔一个空格输入一个整数。单如果题设仅让输入一行数据,空格隔开,并不知道数据个数,那怎么编程呢?

2016-09-30 16:49:24 18214 0

原创 Plackett-Luce模型算法介绍

初略介绍一下机器学习上经典排序融合(Rank Aggregation)算法——Plackett-Luce模型。

2016-09-23 11:22:19 3378 0

原创 C/C++编程题开头字符串、数据输入几种写法

1、题设   在IT公司编程题中,往往让你一并写上测试数据输入和结果输出的Demo,这也是程序员基本的功底。想一想如果连自己的测试数据都无法给入,后面的算法写的再好,也无法测试它的准确性和效果。下面分别从c、c++,以及字符串输入和数组输入,来谈谈几种常见写法。 2、程序分析    2.1 正常字...

2016-09-21 12:26:09 4248 0

原创 Linux下修改gcc和g++的版本

1 前言   最近,自己在linux调试matlab的mex的时候,突然发现matlab R2015版本对应的mex适配环境是gcc-4.7,而自己ubuntu的Linux对应版本默认却是gcc-4.8.5,所以涉及到一个版本下调的工作。最后自己在一顿捣鼓后终于解决了这个问题,本着方便大家的修...

2017-11-30 22:03:08 15057 2

原创 Go语言变量的生命周期

1 变量的生命周期     生命周期是指程序执行过程中变量存在的时间段。下面我们分别来看看包变量(全局变量)和局部变量两种变量的生命周期。   1 包变量一直常驻在内存到程序的结束,然后被系统垃圾回收器回收。也就是说包变量的生命周期是整个程序的执行时间。   2 局部变量,例如一个函数中...

2017-11-02 09:53:00 4158 3

原创 C++程序抛出异常后执行顺序

1 析构函数中是否可以抛出异常   首先我们看一个常见的问题,析构函数中是否可以抛出异常。答案是C++标准指明析构函数不能、也不应该抛出异常!   C++异常处理模型是为C++语言量身设计的,更进一步的说,它实际上也是为C++语言中面向对象而服务的。C++异常处理模型最大的特点和优势就是对C+...

2017-09-19 16:30:30 3292 1

原创 【0、2、1、4、3、9、5、8、6、7】是以数组形式存储的最小堆,删除堆顶元素0后的结果是

【题目】【0、2、1、4、3、9、5、8、6、7】是以数组形式存储的最小堆,删除堆顶元素0后的结果是()。  A、【2、1、4、3、9、5、8、6、7】  B、【1、2、5、4、3、9、8、6、7】  C、【2、3、1、4、7、9、5、8、6】  D、【1、2、5、4、3、9、7、8、6】...

2017-09-13 14:25:31 6708 0

原创 缺页中断与页面置换算法

1 缺页中断:   进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现他要访问的页没有在内存中(存在位为0),那么停止该指令的执行,并产生一个页不存在异常,对应的故障处理程序可通过从外存加载该页到内存的方法来排除故障,之后,原先引起的异常的指令就可以继续执行,而不再产生异常。 2...

2017-09-09 21:41:24 6216 0

转载 操作系统常用的调度算法总结

1 常见的批处理作业调度算法   1.1 先来先服务调度算法(FCFS):   就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。   ...

2017-09-09 14:45:57 2479 0

原创 有序数组1 2 3 4 5 6 7 8 9查找3的二分查找序列是

【题目】有序数组1 2 3 4 5 6 7 8 9查找3的二分查找序列是:   A. 1->2->3   B. 5->2->3   C. 9->5->3   D. 5->1->4->3 分析:   需要注意二分法查找是根据下标索引来...

2017-09-09 11:35:18 4297 0

原创 LRU原理与实现

1 LRU Cache   LRU(Least Recently Used,最近最少使用)是一种Cache替换算法。什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。广义上的Cache指的是位于速度相...

2017-08-31 23:46:13 1735 0

原创 C++父类指针指向子类对象的实现原理

1 前言     记得当初阿里面试的时候被问道这个问题,平时自己面对这个方法都习以为常的使用,C++多态和动态绑定不就是这么实现的嘛,但是还真没有刻意去关注其中的原理。今天特意看了相关资料,现在分享给大家。   其实这块我们需要分为两种情况来考虑,第一种是类继承(静态绑定),第二种是父类中包含...

2017-08-30 23:04:48 5546 2

原创 例说数据结构&STL(十三)——pair

1 pair类型概述   pair的功能就像它的名字一样,pair将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用pair的两个公有函数first和second访问。  1.1 pair类型概述   pair类所在的头文件与命名函数是:#include <util...

2017-08-19 22:06:39 995 0

转载 C/C++中volatile关键字详解

1. 为什么用volatile?   C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 “The C++ Programming Language” 对 volatile 修饰词的说明: A v...

2017-08-13 23:55:11 459 0

原创 构造函数与析构函数是否可以抛出异常

1 示例程序   首先我们来看一个简单的在构造函数和析构函数中抛出异常的小程序,如下:#include <iostream> using namespace std;class A { public: A() { cout << "...

2017-08-13 23:08:50 615 0

原创 sizeof(i++)是多少?

这里我们来看看具体的一道题: #include <stdio.h> int main() { int i; i = 10; printf("%d\n", i); printf("%d\n", sizeof(i++)); ...

2017-08-13 22:35:16 2601 0

原创 空结构体sizeof()获取的大小是多少

sizeof(空类/空结构体) = 1;   空类,没有任何成员变量或函数,即没有存储任何内容;但是由于空类仍然可以实例化,例如:ClassA A; cout<<"sizeof(A): "<<sizeof(A)<<endl;   一个类...

2017-08-13 22:28:10 2886 0

原创 经典算法之回溯法

1 说在前面的话   工厂模式可能和单例模式应该是设计模式中最简单的两种模式了,所以在前面介绍完单例模式后,我们再来重点学习一下工厂模式。

2017-08-12 10:16:53 1534 0

转载 数据库索引中包含的数据结构有哪些

1 索引介绍   MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。   我们知道,数据库查询是数据库的最主要功能之一,例如下面的SQL语句: SELECT * FROM my_table WHERE c...

2017-08-06 18:20:36 6264 0

原创 MySQL中的事务

1 事务介绍   本篇文章我们来介绍数据库中事务的概念以及如何使用MySQL命令行窗口来进行数据库的事务操作。事务是联合操作中我们数据库稳定运作和数据不发生不可预知错误的重要依赖。   事务是指数据库中的一组逻辑操作,这个操作的特点就是在该组逻辑中,所有的操作要么全部成功,要么全部失败。在各个...

2017-08-06 13:53:58 1536 0

转载 数据库事务的四大特性以及事务的隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 1 数据库事务的四大特性   如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:  1.1 原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和...

2017-08-06 10:24:13 680 0

原创 C++11并发编程(一)——初始C++11多线程库

1 前言   C++11标准在标准库中为多线程提供了组件,这意味着使用C++编写与平台无关的多线程程序成为可能,而C++程序的可移植性也得到了有力的保证。   在之前我们主要使用的多线程库要么是属于某个单独平台的,例如:POSIX线程库(Linux),Windows线程库(Windows),还...

2017-08-05 14:26:53 2977 0

原创 C/C++实现strcpy和strcat两个功能

strcmp和strcat是string.h头文件中分别实现字符串数组拷贝与拼接功能的函数,详细使用相信大家都了解了,如果还不了解看看实例 C/C++笔试必须熟悉掌握的头文件系列(四)——string.h/cstring就知道怎么使用了。   下面我们直接来看看具体实现:  1 strcpy实...

2017-08-05 10:08:18 5095 2

转载 TCP如何保证可靠性

在TCP的连接中,数据流必须以正确的顺序送达对方。TCP的可靠性是通过顺序编号和确认(ACK)来实现的。TCP在开始传送一个段时,为准备重传而首先将该段插入到发送队列之中,同时启动时钟。其后,如果收到了接受端对该段的ACK信息,就将该段从队列中删去。如果在时钟规定的时间内,ACK未返回,那么就从发...

2017-08-03 23:09:17 2144 0

原创 Linux命令行参数前加双杠--,单杠-和不加杠-的区别

1 双杠与单杠的区别   首先我们来看看一些实例来帮助我们理解,如下:rm -vf ***tar -xzvf ***.tar.gzgcc --versionrm --help  从上面命令我们可以看出,绝大数命令有以下的规则:   ① 参数前单杠的表明后面的参数是字符形式;   ② 参数前...

2017-08-03 20:11:10 3717 0

原创 C/C++枚举enum分别打印输出枚举子和枚举值的方法

关于枚举枚举的基础概念我这里不再介绍,感兴趣的同学可以查阅另一篇博文C/C++中枚举类型enum使用。这里我主要提一下在调试一个大型程序中遇到日志打印中一个关于枚举输出的小错误。   我们知道枚举分为枚举子和枚举值,就相当于键与值的对应关系。例如下面的枚举变量:enum Example {FIR...

2017-08-02 23:55:57 21821 0

原创 C++实现工厂模式

1 说在前面的话   工厂模式可能和单例模式应该是设计模式中最简单的两种模式了,所以在前面介绍完单例模式后,我们再来重点学习一下工厂模式。   工厂模式属于创建型模式,可以分为三类:简单工厂模式、工厂方法模式、抽象工厂模式。它们的区别主要在建立工厂的复杂程度以及产品的复杂程度上。 2 三种模...

2017-08-02 23:29:00 307 0

原创 C++实现单例模式

本篇博文我们来简单学习一下设计模式中最简单的一个模式——单例模式。单例模式我们将构造函数设计成私有化,因此无法通过构造函数实例化,唯一的方法就是通过调用静态函数GetInstance。此外,我们创建一个静态该类的指针,并且仅在静态函数中实例化一次。整个过程的实现就可以让无论多少次调用,类对象仅会构...

2017-08-01 23:51:54 507 0

原创 C++遍历日志log目录,并提取数据进行分析

1 前言   我们经常在编写软件的时候,需要加载log文件来记录程序运行过程中可能会出现的bug,或者记录一些重要的运行信息。一旦一个目录下生成很多log文件后,实际上我们管理与分析还是需要费一些时间的。这其中就需要我们懂得怎样读取log文件,怎样遍历目录,怎样解析数据等等一系列操作。   下...

2017-07-31 23:26:23 3692 0

原创 Notepad++打开VS工程目录

VS工程文件首先Notepad++是打开解析不了的,但是我们可以将整个工程目录加载进来,加载的步骤主要是以下的过程:   1、点击菜单:视图–>工程–>工程面板1/工程面板2/工程面板3,有三个工程面板可用,如下图:   2、打开一个工程面板后出现工作区如下:   3、右击“工作...

2017-07-31 21:37:55 1828 0

原创 C++检测异常assert()函数

1 assert()函数使用   assert()一般用于debug下异常检测的功能函数,例如文件打开是否成功,函数形参传入是否理想,变量定义是否正确等。总的来说其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( i...

2017-07-30 23:11:26 3845 0

原创 例说数据结构&STL(十二)——iterator

1 白话迭代器(iterator)   前面其实每个容器介绍的时候都基本解除过迭代器,但是迭代器的使用细节以及不同容器使用条件我觉得还是很有必要好好总结一下,这也就是本文的重点。迭代器在STL中用来将算法和容器联系起来,起着一种胶着剂的作用。   首先我们还是简单回顾下迭代器是什么,迭代器是一...

2017-07-30 22:11:55 758 0

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