- 博客(23)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注
原创 【面试题】共用体(联合体)简介及在大小端判断的巧妙运用
共用体union:几个不同类型的变量共享同一段内存的结构,称为共用体(定义是核心)。共用体的定义、声明均与结构体一样,定义共用体类型一般形式为:union 共用体名{成员列表;}变量列表;例如:union Data{ //表示不同类型的变量i、ch、f可以存放到同一段存储单元中。short i; char ch;float f;}a,b,c; /...
2015-10-31 13:17:05 5208
原创 sizeof终极解密
sizeof,在很多招聘笔试或者面试都会提到,它里面到底隐藏着多少陷阱呢?就让我们一探究竟。铭记一个宗旨:sizeof计算的是一种数据类型(可以是结构体、int 、char、类等)所占的内存大小,只与类型有关,我们时刻关注的点应该是变量本身的类型,而不是它的值或指向的内存。注:sizeof是运算符,不是函数。一般可以这样理解:数组——编译时分配的数组空间大小;指针——存储该指针所...
2015-10-29 19:14:19 471
原创 Linux指令_文件处理工具sed
sed (Stream editor)本身是一个管道命令,用于过滤、新增、选取和替换文本。一般使用格式如下:sed [-nefri] [动作]参数:-n:使用安静(silent)模式。在一般的sed用法中,所有来自STDIN的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来;-e:直接在命令行模式上进行sed
2015-10-28 21:38:48 418
原创 进程间通信方法总结
无名管道(或称为管道)具有两个对外端口,一个称为读端,一个称为写端。一个进程在管道的写端写数据,另一个进程从管道的读端读取数据。管道仅局限于父进程与子进程之间的通信。管道通信的特点:1.管道通讯是单向的,有固定的读端和写端。2. 数据被进程从管道读出后,在管道中该数据就不存在了。3. 当进程去读取空管道的时候,进程阻塞。4. 当进程往满管道写数据时,进程阻塞。5
2015-10-28 15:57:50 437
原创 计算机网络常见概念
1、PDU与SDUPDU:对等层之间传送的数据单位称为该层的协议数据单元PDU;SDU:层与层之间交换的数据单位称为服务数据单元SDU;两者的关系:可以是多个SDU合成为一个PDU,也可以是一个SDU划分为几个PDU;2、帧与MTU帧:点对点信道的数据链路层的协议数据单元称为帧;MTU:每一种链路层协议都规定了帧的数据部分的长度上限——最大传送单元MTU。两者的
2015-10-28 10:49:12 1244
原创 http协议简介
万维网WWW(World Wide Web)是一个大规模的、联机式的信息储藏所,英文简称Web。是一个分布式的超媒体系统,是超文本系统的扩充。注:超文本:是包含指向其他文档的链接的文本。超媒体:则除了超文本还包含其他表示方式的信息,如图形、图像、声音、动画、视频等。在一个客户程序主窗口上显示出的万维网文档称为页面。OSI七层模型QA:Q:怎样标志分布在整个因特网上的万维网文档?A:URLQ:用什么...
2015-10-26 21:46:40 798
原创 Linux指令_字段处理工具awk
参开书籍:《鸟哥的私房菜:基础学习篇(第三版)》P363awk 也是一个非常棒的数据处理工具!相较于 sed 常常作用于一整行的处理, awk 则比较倾向于一行当中分成数个『字段』来处理。因此,awk 相当的适合处理小型的数据处理呢!awk 通常运作的模式是这样的:awk '条件类型1 {动作1} 条件类型2{动作类型2} ...' filename示例如下:取出最近
2015-10-26 14:48:24 365
原创 C_运算符优先级
参考文章:http://www.jb51.net/article/37282.htmC语言运算符优先级优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右
2015-10-26 10:55:55 327
原创 DNS解析过程简介
参考书籍:《计算机网络第5版》P224域名系统DNS(Domain Name System):是因特网使用的命名系统,替代人们去记忆繁琐的IP地址。因特网的域名结构:采用层次树状结构, 分为顶级域名、二级域名、三级域名等等。域名解析过程:客户端进程申请解析域名,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器(使用UDP是为了减少开销)。本地
2015-10-24 21:41:17 458
原创 Shell Script_简要总结
Shell Script类似windows下的.bat(批处理文件),简单的可以理解为一大串指令的集合,从而实现自动化的系统管理。示例(脚本基本架构):#!/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesexport PATH
2015-10-24 16:42:37 356
原创 C++_inline函数(内嵌函数)
普通函数调用过程如下:在上下文切换中过程中需要一定的时间和空间开销(保护现场和恢复现场),C++提供了一种更高效的方法,即在编译时将所调用函数的代码直接嵌入到主调函数中,而不是将流程转出去。这种嵌入到主调函数中的函数称为内嵌函数,用inline 声明。如:inline int max(int a, int b);如果在类体中定义的成员函数(注:需在类体中定义函数体)中不包括循
2015-10-23 22:08:48 878
原创 复合赋值运算总结
规律:复合赋值运算的一般形式变量 双目运算符=表达式;等价于:变量=变量 双目运算符 (表达式) (注:即等号右侧表达式为一整体先运算,再与左侧变量相运算)例:#includeint main(){ int a=5,b=4,c=3; a+=b;//等价于 a=a+b printf("a=%d\n",a); a=5; a*=b
2015-10-23 21:30:19 6405
原创 TCP的拥塞控制
拥塞定义在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫做拥塞。∑对资源的需求>可用资源拥塞控制方法常见的有:慢开始、拥塞避免、快重传、快恢复。发送方维持一个拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度,并且动态的变化。发送方让自己
2015-10-22 11:50:03 909
原创 C++_Static成员使用事项
静态数据成员如果希望个对象中的数据成员的值是一样的,就可以把它定义为静态数据成员。1、静态数据成员在内存中只有一份拷贝(而不是每个对象都分别为它保留一份空间),其值对所有对象都是一样的(即所有对象共享静态数据成员)。如果改变它的值,则在各对象中这个数据成员的值都同时改变。2、只要在类中指定了静态数据成员,即使不定义对象,也为静态数据成员分配了空间,它可以被引用。3、静态数据成员可以
2015-10-22 09:42:23 429
原创 C++_面向对象程序设计基本概念
1、继承与派生:都是针对同一种技术现象的不同角度说法(子类继承父类,父类派生出子类)。继承:一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。派生:从已有的类产生一个新的子类(或称为基类和派生类)。多重继承:一个派生类有两个或多个基类。
2015-10-20 21:40:58 542
转载 内存管理算法
在内存管理中存在这两类算法:一类是内存分配算法,一类是页面置换算法 内存分配算法:是指怎么从连续的逻辑地址空间上分配内存地址给进程。常见内存分配算法及优缺点如下: (1)首次适应算法。使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。
2015-10-18 10:20:15 1071
转载 C_malloc、calloc、realloc的区别
参考文章:http://blog.csdn.net/shuaishuai80/article/details/6140979(1)C语言跟内存分配方式从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结
2015-10-17 21:27:18 368
转载 GDB工具使用教程_函数调用栈(call stack)探密
我们知道,通常一个程序的运行,不外乎是A函数调用B,B函数调用C等等,等所有的调用都完成后,整个程序的运行也就ok了。在这个过程中,每当有新的函数调用,系统都会把该函数的一些信息,包括函数的参数,以及一些寄存器的值等,保存到调用栈(call stack)上。等该函数运行完成后,这些信息再从调用栈上弹出(pop)。如下图所示,是一个完整的调用栈:在上图中,整体叫做调用栈(call stack
2015-10-17 19:51:06 2149
原创 常量指针、指针常量、野指针、空指针概念解析
指针常量与常量指针的区别:int a;int * const p = &a //指针常量 *p可以修改*p = 8;(OK) p不可以修改 p++(ERROR)int a,b;const int *p = &a; //常量指针 *p不可修改 *p = 8;(ERROR)
2015-10-15 10:58:43 796
原创 优先级反转、优先级继承
优先级反转:准确来说,指的是一种现象,并非一项任务调度技术,即高优先级任务被低优先级任务阻塞推迟的行为被称为“优先级反转”。这是一种不合理的行为方式,如果把这种行为再进一步放大,当高优先级任务正等待信号量(此信号量被一个低优先级任务拥有着)的时候,一个介于两个任务优先之间的中等优先级任务开始执行——这就会导致一个高优先级任务在等待一个低优先级任务,而低优先级任务却无法执行类似死锁的情形发生。正
2015-10-13 20:23:55 4720
原创 数据结构学习——链表的基本概念和分类
链表由一系列不必在内存中相连的结构组成。每一个结构均含有表元素和指向包含该元素后继元的结构的指针。我们称之为next指针。最后一个单元的next指针指向null(空)。如下图所示为一个单链表:其中,我们认为A1是A2的前驱元,A2是A1的后继元。对于链表删除操作可以通过修改一个指针来实现,free回收所删除节点内存。对于链表的插入操作需要使用malloc调用从系统得到的一个...
2015-10-13 19:43:51 1284
原创 死锁4个充分不必要条件
去ZTE面试,被问到了以上的知识点,之前有涉猎过相关书籍了解过,由于在项目中体现的不多,导致概念理解不清析,回答起来也是模棱两可,太丢人了真是。现特此总结一下。当两个任务都在等待被对方持有的资源时,两个任务都无法再继续执行,这种情况就被称为死锁。死锁发生必须具备4个条件:1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其
2015-10-13 19:32:57 600
原创 GDB工具使用教程_基本调试指令
本文基于国嵌的教程文档,总结一下GDB在Linux下的使用。GDB是GNU发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:1、启动被调试程序。2、让被调试的程序在指定的位置停住。3、当程序被停住时,可以检查程序状态(如变量值)。尽管大多数开发人员熟悉了在windows下使用IDE进行程序调试,殊不知绝大多数的IDE使用的调试工具仍是GDB,不过整合到
2015-10-10 20:13:35 876
基于STM32高精度频率计的设计
2014-08-10
关于C语言OJ的一道题:Time Limit Exceeded
2015-04-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人