自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(132)
  • 收藏
  • 关注

转载 教你免费轻松下载百度文库的文件

教你如何免下载券下载百度文库的文件首先,你还是得需要一个基于Chromium的浏览器,比如谷歌浏览器或者360极速浏览器(不是360安全浏览器),鉴于国内用户普遍使用360的习惯,这里我以360为例。相信大家在找资料时,对这种情况,深恶痛绝百度流氓也不是一天两天了,所以这回,我们比他更流氓。网上的一些下载方法,如在文库地址wenku前加wap改成手机格式,或者打开百度快照的方式,经我测试,都只能把...

2018-04-16 19:53:54 22776 2

原创 STL中map使用详解

1.map中的构造函数map(); // 默认构造函数map(const map& m) // 拷贝构造函数map(iterator begin, iterator end ); //区间构造函数2.数据插入  ①insert(pair(key1,value1))  例: Map mapStudent;       mapStudent.

2017-08-17 20:54:20 468

原创 STL中vector使用详解

vector类常用的函数如下所示:     1.构造函数    vector():创建一个空vector    vector(int nSize):创建一个vector,元素个数为nSize    vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t    vector(const vector&):复制构

2017-08-17 20:52:08 466

原创 string类详解

我详细讲解一下string类的方法,便于以后查看!构造函数和析构函数如下:a)    string s;  //生成一个空字符串sb)    string s(str) //拷贝构造函数 生成str的复制品c)    string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值d)    string s(str,stridx

2017-08-16 19:51:08 475

转载 Linux内存映射mmp机制详解

原文地址:http://blog.csdn.net/joejames/article/details/37958017一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。 原理首先,“映射”

2017-08-10 12:14:27 5373

原创 两个栈实现队列

基础知识:1、stackstack 模板类的定义在头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack s1;stack s2;stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();

2017-08-09 16:23:51 390

原创 c++ const 总结

C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用  如下表所示:No.作用说明参考代码

2017-03-29 09:22:01 280

原创 计算机网络知识归纳总结

1.网络结构在OSI参考模型中,物理层的作用是透明的传输比特流。对等实体在一次交互作用中传送的信息单位称为协议数据单元,它包括控制信息和用户数据两部分。上下层实体之间的接口称为服务访问点(SAP),网络层的服务访问点也称为网络地址,通常分为网络号和主机号。OSI参考模型分为:物理层、数据链路层,网络层,传输层,会话层,表示层,应用层。物理层涉及到在信道上传输的原始比特流。数据链路层的主

2017-03-27 07:56:15 1477

原创 Ubuntu14.04 vm tools安装方法

一、在VM虚拟机上方 点击 :虚拟机—–>安装VM tools然后发现桌面会跳出如下问题。客户机操作系统已经将CD-ROM门锁定,并且可能正在使用CD-ROM,这可能会导致客户机无法识别介质的更改。如果可能,请在断开连接之前从客户机内部弹出CD-ROM 选择—->安装 选择—->是(Y)然后点开你的虚拟机坐下角的 CD/DVD光盘驱动图标

2017-03-22 16:28:03 972

原创 vimrc中常见配置和加文件头(适应Ubantu,redhat)

vim是一款功能很强大的编辑器,可能网上的大神们配置的比较复杂。功能也很多。我这里的配置能够满足基本需求。快速且通用,只要大家将自己的vimrc文件打开按照我的截图添加几行代码即可解决.大家直接看我的配置文件吧先讲一下ubuntu与redhat下打开配置文件vimrc的方法 *在redhat下 首先切换到root。然后输入vim /etc/vimrc11在ubunt

2017-03-22 16:26:52 2325

原创 利用栈计算表达式的值

题目:带+-*/()的表达式计算。如:(1+2*3)-4;思想:两个栈,一个用来存放数字,一个用来存放符号,然后比较各个符号优先级,遇到每个符号怎么解决等,考虑要全面。栈的基本操作:#ifndef _STACK_H_#define _STACK_H_template class myStack{public: myStack(int maxSize

2017-03-15 10:38:13 994

原创 c++中虚表指针与虚函数详解

1.c++类中的重载 看看下面的代码:#include using namespace std; class Vehicle { public: Vehicle(float speed,int total) { Vehicle::speed=speed; Veh

2017-03-01 17:07:31 7211 3

原创 c++中sort函数排序自己写的类

定义排序函数:方法1:声明外部比较函数bool Less(const Student& s1, const Student& s2){ return s1.name //从小到大排序}std::sort(sutVector.begin(), stuVector.end(), Less);注意:比较函数必须写在类外部(全局区域)或声明为静态函数 当comp作为类的成员函数时,默认拥有一

2017-02-13 19:56:19 5925 2

原创 assert()函数用法总结

assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#include

2017-02-13 15:31:41 290

原创 cin.get(),cin.getline()

cin.get(array_name, Arsize)是用来读取字符串的,可以接受空格字符,遇到Enter结束输入,按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。程序6:using namespacestd; int main (){ char a[20]; cin.get(a, 10); cout<<a<<e

2017-02-09 19:26:55 324

原创 register关键字

register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。你想想,一个CPU的寄存器也就那么几个或几十个,你要是定义了很多很多register变量,它累死也可能不能全部把这些变量放入寄存器吧,轮也可能轮不到你。一、皇帝身边的小太监----寄存器   不知道什么是寄存器?那见过太监没有?没有?其实我也没有。没见过不

2017-02-09 09:59:41 331

原创 C++中函数调用时的三种参数传递方式

在C++中,参数传递的方式是“实虚结合”。按值传递(pass by value)地址传递(pass by pointer)引用传递(pass by reference)按值传递的过程为:首先计算出实参表达式的值,接着给对应的形参变量分配一个存储空间,该空间的大小等于该形参类型的,然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。

2017-02-08 10:51:51 595

原创 32位操作系统与64位操作系统有区别?

第一,设计初衷不同。64位操作系统的设计初衷是:满足机械设计和分析、三维动画、视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户需求。换句简明的话说就是:它们是高科技人员使用本行业特殊软件的运行平台。而32位操作系统是为普通用户设计的。 第二,要求配置不同。64位操作系统只能安装在64位电脑上(CPU必须是64位的)。同时需要安装64位常用软件以发挥64位(

2017-01-02 09:53:38 485

原创 不使用循环,判断一个数是否是2的N次方

对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。 void judge(int n) { while(!(n % 2)) { n = n / 2; if(n == 1) { printf("yes!\n);

2016-12-25 21:42:39 4185 1

原创 Linux网络B/S和C/S的区别

一、什么是CS和BS结构? 1.C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。客户端需要安装专用的客户端软件。 2.B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或

2016-12-25 21:36:45 1233

原创 带缓冲的I/O操作和不带缓冲的I/O操作

首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用。系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其写数据时,直接调用系统调用,将数据写入到块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘。因此所谓的不带缓冲的I/O是指进程不提供缓冲功能(但内核还是提供缓冲的)。每调用一次write或re

2016-12-21 18:53:53 428

原创 斐波那契数列及青蛙跳台阶问题

都是题目1:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契(Fibonacci)数列定义如下: f(n)=⎧⎩⎨⎪⎪0,1,f(n−1)+f(n−2),n=0n=1n>2效率很低的解法:递归解法(效率很低)long long Fibonacci_Solution1(unsigned int n){ if(n <=

2016-12-19 14:25:46 565

原创 堆(heap)和栈(stack)有什么区别?

简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据

2016-12-19 12:20:47 433

转载 Linux下段错误分析

段错误产生的原因 2.1 访问不存在的内存地址 #include #include void main() { int *ptr = NULL; *ptr = 0; }2.2 访问系统保护的内存地址 #include #include void main() { int ptr = (int )0; *ptr = 100; }2.

2016-12-18 20:59:21 359

原创 linux 下sqlite的 C编程之sqlite3_get_table

{ sqlite3 *db; char *errmsg=NULL; //用来存储错误信息字符串 char ret=0; int my_age=0; //类型根据要提取的数据类型而定 char **dbResult; int nRow=0, nColumn=0; //nRow 查找出的总行数,nColumn 存储列

2016-12-16 18:06:32 1459

原创 网络编程之并发服务器,分布服务器

一、并发服务器,分布式服务器(结构)什么是分布式系统架构分布式系统架构简单的说是运行在多个处理器上的软件构架设计。 分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。 网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。架构,又名软

2016-12-15 22:21:06 343

转载 网络编程的理论知识-五类IP的范围

1、五类IP的范围IP地址分为A,B,C,D,E五类。网络号:用于识别主机所在的网络; 主机号:用于识别该网络中的主机。其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用。这三种是主要的。IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。其中A类、B类、和C类这

2016-12-14 21:40:56 360

原创 网络OSI和TCP/IP参考模型详解

1、四层,七层网络模型(以及每层对应的协议)网络模型 对应协议

2016-12-12 20:04:11 328

原创 约瑟夫环的问题

一、思路分析    (1)可将人的顺序简单编号,从1到N;    (2)构造一个循环链表,可以解决首位相连的问题,同时如果将人的编号改为人名或者其他比较方便         (3)将人的编号插入到结构体的Data域;         (4)遍历人的编号,输出参与的人的编号;         (5)开始报数,从头报数,报到k的人出局(删除次结点),(输出出局的人更人性化)避免浪费

2016-12-11 21:11:01 504

原创 如何让UDP实现可靠传输

如何让UDP实现可靠传输自定义通讯协议,在应用层定义一些可靠的协议,比如检测包的顺序,重复包等问题,如果没有收到对方的ACK,重新发包UDP没有Delievery Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一

2016-12-10 15:39:12 8291

原创 三次握手和四次挥手详解

一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1

2016-12-09 22:46:32 422

原创 数组蛇形矩阵实现

1. 编写一个程序,输出类似的蛇形代码:1  2  3  4  516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9#include #include int main(){int n;int x,y,round;//a[x][y],x是二维数组的第一个下标,y是二维数组的第二个下标,

2016-12-08 13:36:16 1738

原创 几种磁盘调度算法的讲解

一、磁盘调度主要思想设备的动态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。访问磁盘的时间因子由3部分构成,它们是查找(查找磁道)时间

2016-12-07 20:31:29 12132

转载 计算机大小端判别方法

大端字节序:高字节存放在低地址,低字节存放在高低址 小端字节序:低字节存放在高低址,高字节存放在低地址 大小端字节顺序它是CPU的属性,所哟不同的CPU的大小端字节顺序也不同,移植的时候需要先判断当前的CPU是大端还是小端字节序,如果不同则移植需要转移字节序      大端 小端例如 0x1003 78   12   高地址   0x1002 56  34

2016-12-06 20:43:02 376

原创 哈夫曼树详解

二叉树中有一种特别的树——哈夫曼树(最优二叉树),其通过某种规则(权值)来构造出一哈夫曼二叉树,在这个二叉树中,只有叶子节点才是有效的数据节点(很重要),其他的非叶子节点是为了构造出哈夫曼而引入的!哈夫曼编码是一个通过哈夫曼树进行的一种编码,一般情况下,以字符:‘0’与‘1’表示。编码的实现过程很简单,只要实现哈夫曼树,通过遍历哈夫曼树,规定向左子树遍历一个节点编码为“0”,向右遍历一个节

2016-12-05 20:23:55 5313 1

原创 单链表反转/逆序的两种方法

我先画一个单链表,这个单链表有4个元素。我的思路就是,每次把第二个元素提到最前面来。比如下面是第一次交换,我们先让头结点的next域指向结点a2,再让结点a1的next域指向结点a3,最后将结点a2的next域指向结点a1,就完成了第一次交换。第一次交换然后进行相同的交换将结点a3移动到结点a2的前面,然后再将结点a4移动到结点a3的前面就完成了反转。第

2016-12-05 20:20:20 708

原创 文件管理

要求:创建一个新文件,文件内容为本班所有同学的学号、姓名、操作系统课程成绩,要求采用有格式的存储方式;文件建立后,能对文件进行插入、删除、查找等操作。#include #include #include //#include int NUM = 0;struct student{ char num[20];// 学号 char nam[20];// 姓名

2016-12-02 14:59:51 466 1

转载 使用scanf的注意事项

scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好了:)如果你发现文章中有错误,欢迎你不吝赐 教。希望和大家一起学习!曾经错的几个地方:(xpsp2,vc6.0环境下)1.空白符问题#include void main() { int a; printf("input

2016-12-02 14:52:57 575

原创 8位数据越界处理

直奔主题吧!8位有符号数的取值范围是-128~+127,为什么呢?首先我们知道,计算机以补码的形式存储的,正数的补码是原码不变,负数的补码是原码的取反加1。我们先来看+127,原码0111 1111对吧,若+128是多少呢,0111 1111 + 1 = 1000 0000 (原码),然后存储时,计算机一看是最高位为1,就保持符号位不变,后面7位取反加1,然后呢,进位舍弃,还是1000

2016-11-29 20:15:33 1859

原创 谈谈malloc ()和free()

malloc()和free()的基本概念以及基本用法1. 函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用malloc分配的

2016-11-28 21:10:04 450

空空如也

空空如也

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

TA关注的人

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