8 无鞋童鞋

尚未进行身份认证

我要认证

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

等级
TA的排名 2k+

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

Go语言变量的生命周期

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

2017-11-02 09:53:00

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

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

2017-09-19 16:30:30

【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

缺页中断与页面置换算法

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

2017-09-09 21:41:24

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

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

2017-09-09 14:45:57

有序数组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

LRU原理与实现

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

2017-08-31 23:46:13

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

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

2017-08-30 23:04:48

例说数据结构&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

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

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

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

2017-08-13 23:08:50

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

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

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

2017-08-13 22:28:10

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

经典算法之回溯法

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

2017-08-12 10:16:53

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

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

2017-08-06 18:20:36

MySQL中的事务

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

2017-08-06 13:53:58

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

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

2017-08-06 10:24:13

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

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

2017-08-05 14:26:53

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!