自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无鞋童鞋的博客

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

  • 博客(179)
  • 资源 (3)
  • 收藏
  • 关注

原创 C++智能指针

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

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

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

1 说在前面的话   Theron是近些年发展起来的一个非常不错的C++多线程开发框架,最近有详细阅读相关资料,发现它思想非常有条理,结构很明朗,非常适合项目开发。其实Theron国内研究还是非常少的,目前还没有看到什么公开项目使用该框架。但是这并不代表Theron不够优秀,一件新鲜事物要被众人接受自然需要经受一段时间的考验,所以我觉得自己应该尽一点微薄之力来当一名小小的传播者。当然,这点抬手

2017-07-09 23:43:12 9626 3

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

1. Background      这次我来介绍一篇深度网络文章《Dilated Residual Networks》,发表在CVPR 2017会议上。作者是普林斯顿大学的Fisher Yu博士等人。网络简称为DRN。   文章原文可在作者主页阅览:Fisher Yu主页   这篇文章实则是作者将何恺明(Kaiming He)博士残差网络Deep Residual Networks与其之前研

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

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

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

2016-12-16 16:41:31 6605 36

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

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

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

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

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

2016-11-23 13:43:10 125399 27

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

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

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

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

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

2016-10-17 10:00:30 96542 7

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

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

2016-09-30 16:49:24 24077 1

原创 Plackett-Luce模型算法介绍

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

2016-09-23 11:22:19 5613

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

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

2016-09-21 12:26:09 5816

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

1 前言   最近,自己在linux调试matlab的mex的时候,突然发现matlab R2015版本对应的mex适配环境是gcc-4.7,而自己ubuntu的Linux对应版本默认却是gcc-4.8.5,所以涉及到一个版本下调的工作。最后自己在一顿捣鼓后终于解决了这个问题,本着方便大家的修改,这里我详细介绍一下自己的修改方法。   2 修改gcc链接文件   首先,我们自然是需要下载g

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

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

1 变量的生命周期     生命周期是指程序执行过程中变量存在的时间段。下面我们分别来看看包变量(全局变量)和局部变量两种变量的生命周期。   1 包变量一直常驻在内存到程序的结束,然后被系统垃圾回收器回收。也就是说包变量的生命周期是整个程序的执行时间。   2 局部变量,例如一个函数中定义的变量。它有一个动态的生命周期:每次执行生命语句时创建一个新的实体,变量一直生存到它变得不可访问(例

2017-11-02 09:53:00 5451 4

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

1 析构函数中是否可以抛出异常   首先我们看一个常见的问题,析构函数中是否可以抛出异常。答案是C++标准指明析构函数不能、也不应该抛出异常!   C++异常处理模型是为C++语言量身设计的,更进一步的说,它实际上也是为C++语言中面向对象而服务的。C++异常处理模型最大的特点和优势就是对C++中的面向对象提供了最强大的无缝支持。那么如果对象在运行期间出现了异常,C++异常处理模型有责任清除那些

2017-09-19 16:30:30 5900 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 9014

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

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

2017-09-09 21:41:24 10686 1

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

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

2017-09-09 14:45:57 3886

原创 有序数组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 分析:   需要注意二分法查找是根据下标索引来决策的,所以对应的查找过程如下:   起始条件 :left=0, right=8, middle=(0+8)/2=4(对应的数为5);   5>3,所以取

2017-09-09 11:35:18 6549

原创 LRU原理与实现

1 LRU Cache   LRU(Least Recently Used,最近最少使用)是一种Cache替换算法。什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。广义上的Cache指的是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构。除了CPU与主存之间有Cache,内存与硬盘之

2017-08-31 23:46:13 2298

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

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

2017-08-30 23:04:48 10063 8

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

1 pair类型概述   pair的功能就像它的名字一样,pair将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用pair的两个公有函数first和second访问。  1.1 pair类型概述   pair类所在的头文件与命名函数是:#include <utility> 1.2 pair对象基本定义   pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不

2017-08-19 22:06:39 1499

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

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

2017-08-13 23:55:11 605

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

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

2017-08-13 23:08:50 998

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

这里我们来看看具体的一道题: #include <stdio.h> int main() { int i; i = 10; printf("%d\n", i); printf("%d\n", sizeof(i++)); printf("%d\n", i); return 0; }  这三行输出应该是什么?   答案是:   10   4   10

2017-08-13 22:35:16 4787 1

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

sizeof(空类/空结构体) = 1;   空类,没有任何成员变量或函数,即没有存储任何内容;但是由于空类仍然可以实例化,例如:ClassA A; cout<<"sizeof(A): "<<sizeof(A)<<endl;   一个类能够实例化,编译器就需给它分配内存空间,来指示类实例的地址。这里编译器默认分配了一个字节(如:char),以便标记可能初始化的类实例,同时使空类占用的空间也最少

2017-08-13 22:28:10 3840

原创 经典算法之回溯法

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

2017-08-12 10:16:53 1989

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

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

2017-08-06 18:20:36 9100

原创 MySQL中的事务

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

2017-08-06 13:53:58 1713

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

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 1 数据库事务的四大特性   如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:  1.1 原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不

2017-08-06 10:24:13 804

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

1 前言   C++11标准在标准库中为多线程提供了组件,这意味着使用C++编写与平台无关的多线程程序成为可能,而C++程序的可移植性也得到了有力的保证。   在之前我们主要使用的多线程库要么是属于某个单独平台的,例如:POSIX线程库(Linux),Windows线程库(Windows),还有第三方数据库:Boost线程库。但是且不说性能上的不同,它们都有各自缺点,要么受平台限制无法系统间移植

2017-08-05 14:26:53 3844

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

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

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

转载 TCP如何保证可靠性

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

2017-08-03 23:09:17 2553

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

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

2017-08-03 20:11:10 5709 1

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

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

2017-08-02 23:55:57 39761

原创 C++实现工厂模式

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

2017-08-02 23:29:00 384

原创 C++实现单例模式

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

2017-08-01 23:51:54 596

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

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

2017-07-31 23:26:23 6020 1

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

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

2017-07-31 21:37:55 2091

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

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

2017-07-30 23:11:26 4874

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

1 白话迭代器(iterator)   前面其实每个容器介绍的时候都基本解除过迭代器,但是迭代器的使用细节以及不同容器使用条件我觉得还是很有必要好好总结一下,这也就是本文的重点。迭代器在STL中用来将算法和容器联系起来,起着一种胶着剂的作用。   首先我们还是简单回顾下迭代器是什么,迭代器是一种检查容器内元素并遍历元素的数据类型。它是一种行为类似指针的对象,它提供类似指针的功能,对容器的内容进行

2017-07-30 22:11:55 926

源slicomex.c修改后可以windows下matlab正常mex的文件

原始slicmex.c并不能正常在windows下matlab编译mex过去,这是slicomex.c修改后文件,至于slicmex.c文件请在我的另一个下载资源下载http://blog.csdn.net/fx677588/article/details/53694406#reply

2016-12-19

SLIC超像素风格slicmex.c修改后的文件,现可以直接在matlab下mex使用

源程序slicmex.c在windows系统下编译是有错误的,主要提示如下:**slicmex.c(387) : error C2275: “mwSize”:将此类型用作表达式非法.**。本程序是源程序修改后的SLIC超像素分割程序,可直接在windows下mex使用

2016-12-16

不跳线大按键矩阵键盘PCB(原理图+PCB)

这种按键是大按键那种类型,比复位按键做成的矩阵键盘好看的多,也好用的多

2013-09-04

空空如也

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

TA关注的人

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