自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 ubuntu firefox 不能启用java

1. 安装 jdk2. ln -s /usr/java/jre1.7.0_17/lib/i386/libnpjp2.so  /usr/lib/mozilla/plugins3. 重启firefox

2016-07-05 19:16:07 970

原创 ubuntu 解决无线不能连接的问题

ubuntu在开机的时候会自动执行脚本/etc/rc.local,在该文件中加入:sudo rmmod acer-wmi

2016-07-05 11:07:15 535

原创 (caffe)common.cpp_hpp

common.cpp_hppcommon.hpp定义了常用的宏定义单例类Caffe常用的宏不能赋值不能拷贝:将拷贝构造函数和赋值函数声明为private,无需定义。NOT_IMPLEMENTED: 定义为LOG(FATAL)定义单例Caffe单例模式的实现方法有很多种,这里的实现方法如下。定义一个static 全局指针(boost::thread_speci

2016-06-02 12:45:37 774

原创 Makefile

Makefile.PHONY:将伪文件目标写在.PHONY:后面。自动依赖生成:通过编译器的选项,生成自动依赖的文件,主要解决.o文件依赖.h文件的问题。生成.d依赖文件:gcc采用的编译选项是:-MMD -MPnvcc采用的编译选项是(单独生成.d文件):-MMakefile如何使用.d文件:-include $(DEPS)在include前

2016-06-01 16:07:36 223

原创 linux socket

linux下的,socket 有两个属性: 地址域,类型。地址域有两种:unix domain(使用同一个文件系统的进程通信); Internet domain,通过网络通信。类型分为两种: stream(TCP) 和 datagram(UDP)

2016-05-26 18:57:38 198

原创 c++ template实例化

class template 实例化实例化包括两种类型,隐式实例化,显示实例化template的定义是什么template的定义在编译过程中什么都不会生成,既不是类型,也不是对象,仅仅是声明。显示实例化语法:template class name ;这样的实例化,仅仅是定义了class,class的成员函数,以及函数的定义都没有实例化。隐式实例化只有在用到该

2016-05-24 10:53:24 523

原创 c++ 多继承

多继承多继承的内存结构。继承图A内存结构没有虚表指针: C的内存结构为:先是A,然后是B有虚表指针: 与没有虚表指针一样,只是A保存一个虚表指针,B也保存一个虚表指针。在实际的函数调用过程中,两个虚表指针,都可能会用到,至于用哪个虚表指针,就要看需要哪个虚表指针。

2016-05-23 15:09:29 199

原创 c++ 默认构造函数

默认构造函数两个问题c++什么时候合成默认构造函数?c++合成的默认构造函数都做些什么?c++什么时候合成默认构造函数以下三个条件同时满足:源程序中没有声明任何构造函数编译器需要该类有默认构造函数程序中需要调用默认构造函数(默认构造函数是以编译单元为单位生成的)什么时候编译器需要默认构造函数该类中有(有默认构造函数)的成员对象该类继承一个有默认构造函数的类该

2016-05-22 11:38:12 338

原创 c++前向声明

前向声明的几种方式前向声明 class A: A f();详细类型声明 class A f();两种方式的区别前向声明 struct s { int a; }; struct s; // does nothing (s already defined in this scope) void g() { struct

2016-05-19 13:46:27 256

原创 c++ 依赖参数的函数查找

依赖参数的函数查找依赖参数的函数查找(Argument dependent lookup),(ADL)是用于查找非限制函数名查找的一系列规则。这些函数名在参数的命名空间,再加上没有限制的名字查找的作用域和命名空间,查找。这一特性的用处可以将非类成员函数和非类成员操作符定义在与类在同一个命名空间的地方,作为该类的共有接口。例如:using std::swap;swap(obj1,o

2016-05-19 10:12:50 691

原创 c++ inline 函数

inline functioninline 限定符,仅仅是对编译器的建议,建议编译器不实行调用,而是,将函数插入进去。对于没有声明为inline的函数,编译器可能优化函数,不实现调用,而是实现将函数插入进去。虽然编译器有足够的自主性,但是,终究,它还是要满足c++标准。标准中,指出在每个translation unit,都必须定义inline函数,而不仅仅是声明;对于多个tra

2016-05-17 16:52:44 312

原创 c++ decltype

decltype语法decltype ( entity ) (1) (since C++11)decltype ( expression ) (2) (since C++11)如果entity是没有用括号包起来的(id-expression或者class member),则返回的类型是对应entity声明的类型。如果expression 为普通的表达式:左值,返回类型为: T&

2016-05-16 19:29:37 291

原创 c++ 间接方式改变const变量

indirect change const variable使用const_castc++ 标准里说,通过这种方式改变变量的值,将会产生undefined的结果。所以,对于不同的编译器,往往有不同的实现方法。本文分析的是gcc的实现,其实,大多数编译器都是以这种方式实现的。how do?我们知道,const变量的初始化可能发生在两个阶段,编译时刻,运行时刻。

2016-05-16 18:18:19 382

原创 c++非局部的静态存储期变量的初始化

非局部的静态存储期变量的初始化constant初始化: 对于用constexpr 初始化的变量,在编译时,即初始化这些对象,写入可执行映像文件中。zero初始化: 对于不能constant初始化的变量,进行zero初始化,也是在编译时刻发生的,但是,不会再可执行映像文件中占据任何空间。只有到加载程序的时候,才在内存里分配空间。动态初始化: 在main函数

2016-05-15 16:57:34 468

原创 c++ linkage and storage

存储声明符在变量的定义或声明中,存储声明符控制了变量的两个属性:1. 存储期(storage duration) 2. linkage存储声明符有:auto----automic storage durationregister----automic storage duration,storage in registerstatic ----static or thread st

2016-05-15 14:45:01 563

原创 c++引用

引用引用是对已经存在的对象或函数取别名引用的类型左值引用:the declaration S& D; declares D as an lvalue reference to the type determined by decl-specifier-seq S.右值引用:the declaration S&& D; declares D as an rvalue referenc

2016-05-14 22:16:15 313

原创 c++ const_cast and reinterpret_cast

const_cast and reinterpret_cast这两种转换是在编译时刻完成的。但是,不会编译生成任何转换指令,仅仅指导比编译器对待某一变量按照新的类型对待。const_cast最常用的地方是将const 指针或引用转换为volatile指针或引用。对于如果指向的对象本来就是const的,会产生undefine行为reinterpret_cast将A类型,按B类型对

2016-05-14 16:43:07 191

原创 c++_static_cast and dynamic_cast

static_cast and dynamic_caststatic_cast 是在编译时刻,转换; dynamic_cast 是在运行时刻转换。dynamic_cast 限制转换的目的类型只能是指针或引用对于相互转换的类型,要有继承关系如果子类向父类转换,没有任何要求如果父类向子类转换,需要父类是多态类型(即实现了虚函数,因为,在具体实现上,要使用虚表指针)如果转换的是引用,

2016-05-14 15:42:37 190

原创 c++运算符重载

运算符重载对于自定义的类型,自定义c++运算符的行为。语法运算符重载与函数重载一样,只是运算符有特殊的函数名。operator op (1) operator type (2) operator new operator new [] (3) operator delete operator delete [] (4) 重载运算符重载运算符可以通过函数调用

2016-05-14 13:57:56 260

原创 c++ 内存申请释放,构造函数,析构函数,执行顺序

内存释放,申请与析构,构造函数这几个函数的执行顺序是什么,我们已经知道对于普通的对象,会先执行内存申请函数,然后执行构造函数,然后执行析构函数,最后执行内存释放函数。但是,对于有继承关系的对象,他们的执行顺序是什么呢?下面以一个例子说明:#include class A{public: int a; void *operator new(std::size_t si

2016-05-14 09:48:33 2011

原创 c++ new 运算符做了什么

new 运算符创建并且初始化具有动态存储期的对象。Explanationnew所做的工作:分配内存空间在分配的内存空间里,构造和初始化一个没有名字的对象,或者一个没有名字的对象数组。new表达式返回的是一个右值指针,指针指向的是分配空间的其实地址。对于创建数组类型,所有的维度(除了第一个维度)必须是正的,类型std::size_t 的converted constant e

2016-05-13 19:37:50 1464

原创 c++ 赋值操作符

赋值运算符赋值运算符改变了对象的值。所有的build-in operator 都返回*this;user定义的重载函数,通常也返回*this,为了保证与Build-in的行为相同。但是,用户自定义的赋值运算符重载函数可以返回任何类型。Explanationcopy assignment,将对象B的内容Copy到对象A上(B不会改变)。对于类类型,这一操作是一个特殊的成员函数,cop

2016-05-13 14:38:38 240

原创 c++ 常量表达式

const expression任何表达式都有一种属性,类型。常量表达式即是表达式的一种类型。常量表达式指这种表达式能够在编译时刻被计算。这种表达式,能被用到non-type模板参数,array sizes, 和其他需要const expression的地方。int n = 1;std::array a1; // error, n is not a constant expressi

2016-05-13 13:20:50 1580

原创 c++ 表达式执行顺序

计算顺序在c++中,任何表达式(函数参数,子表达式)中的运算元的计算顺序都是不固定的。对于相同的表达式,编译器可能生成不同计算顺序的指令。同时,在c++中,没有像从左到右,或从右到左的计算规则(刚接触c++的人,容易将计算顺序与运算符的结合性混淆)。比如表达式:f1()+f2()+f3()按加法从左向右的结合性,可以转换为:(f1() + f2()) + f3()结合性

2016-05-12 23:38:39 3267

原创 c++ 表达式,值的种类

Value 种类每个c++表达式都有两个重要属性,一个是类型;一个就是值的种类。基本种类每种值的类型对应两种属性:有身份表示:能够判断该表达式与另一个表示式是不是指向同一个对象(或函数等)能够move from值的种类有身份表示能够move fromlvaluetruefalsexvaluetruetrue

2016-05-12 22:42:03 875

原创 c++ 左值与右值

左值和右值任何一个表达式,都有一个属性,值的类型,一个表达式要么是左值,要么是右值。左值:左值所存的对象,有一个有标识的内存地址,在定义它的表达式结束之后,仍然有效。右值:右值所存的对象,通常为临时对象,在定义它的表达式结束之后,它的生存期也结束了。*可以将表达式理解为一个函数,左值,返回的是引用;右值,返回的是值。

2016-05-12 21:10:51 208

原创 c++ 预处理和预处理命令

预处理器预处理发生在编译之前,预处理输出的是一个单一的文件,这个文件被送到编译器,进行编译。预处理命令每条预处理命令都控制预处理器的行为。每条预处理命令占据一行,有以下的格式:* # character* 预处理命令(one of define, undef, include, if, ifdef, ifndef, else, elif, endif, line, error,

2016-05-12 14:25:47 1852

原创 C++ main 函数

Main函数一个程序需要有且只有一个main函数,这个函数是程序开始执行的地方。Main函数的形式int main(){body}int main(int argc, char *argv[]){body}body: 函数体; argc:传入函数的参数个数; argv:传入的参数的字符串数组main函数中argc,argv这两个变量的名称是可以自由变化的,char * ar

2016-05-11 20:51:24 388

原创 C++源程序到可执行文件的过程

C++源程序到可执行文件的过程编译器将C++源文件编译成目标文件,主要包括以下9个阶段。Phase 1源文件读入内存中,源文件的所有字节对应到“基本的源代码字符集”中。另外,与操作系统相关的换行符被替换为标准的newline字符。“基本的源代码字符集”包含96个字符: a) 5 whitespace characters (space, horizontal tab, ve

2016-05-11 20:05:03 744

原创 c++ 名字查找

名字查找有限制的名字查找有限制的名字查找是指名字出现在“::”(作用域解析符)的右面。有限制的名字可能包括以下几种:类成员名字空间成员(可能包括另一个空间)enumerator如果“::”左面什么都没有,查找会从全局命名空间查找(或者通过使用using 加入的命名空间)。#include int main(){ class std{ public:

2016-05-11 16:35:42 2104

原创 C++ 声明和定义

定义和声明定义,声明定义:完全定义声明中的实体,往往需要分配内存空间声明:简单声明实体。大部分声明都是定义,除了下面几种情况。extern修饰的,并且没有初始化的变量 extern const int a; // declares, but doesn't define a extern const int b = 1; // defines b没有

2016-05-10 22:15:31 809

原创 C++ 生存期

c++ 生存期 作用域

2016-05-10 15:33:37 1879

原创 c++ 作用域

C++ 作用域

2016-05-10 11:48:00 950

原创 javaScript this 详解

javascript(JS) this

2016-05-08 22:01:23 520

原创 JS(javascript) delete 详解

js delete javascript

2016-05-08 19:04:36 7668

原创 动态库和静态库

简单的说,使用动态库就是在链接的时候,不会将动态库的代码链接到可执行文件中,而是采用symbol的方式。使用静态库,生成可执行文件的时候,会将静态库的代码链接到可执行文件中。这样,动态库体积会很小,并且可以,依赖于更新的动态库,但是,缺点是不稳定。静态库会更加稳定,但是体积会很大。===============静态库 : 就是多个目标文件的合并;动态库:  生成和run t

2016-04-22 15:22:49 335

原创 glog学习

glog

2016-04-18 19:56:03 700

原创 c++ 字符串连接问题

多行字符串书写

2016-04-18 16:12:50 920

原创 gflags学习

gflags

2016-04-18 14:23:32 1043

原创 c++ 开发常用开源库

1、google/protobuf:用于序列化的工具2、google/glogGoogle Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。3、google/gflagsgflags是google的一个开源的处理命令行参数的库,使用c++开发,具备python接口

2016-04-16 10:52:16 395

合成孔径雷达(SAR)的点目标仿真SAR点目标仿真

合成孔径雷达(Synthetic Aperture Radar ,简称SAR)是一种高分辨率成像雷达技术。它利用脉冲压缩技术获得高的距离向分辨率,利用合成孔径原理获得高的方位向分辨率,从而获得大面积高分辨率雷达图像。

2019-01-07

空空如也

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

TA关注的人

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