- 博客(22)
- 收藏
- 关注
原创 strcpy sprintf memcpy 区别
strcpy 函数操作的对象是字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。 sprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现 (字符串或基本数据类型)向 字符串 的转换 功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。 memcpy 函数顾名思义就是 内存拷
2016-12-26 21:33:56 461
转载 Linux网络编程 五种I/O 模式及select、epoll理解
五种I/O 模式:【1】 阻塞 I/O (Linux下的I/O操作默认是阻塞I/O,即open和socket创建的I/O都是阻塞I/O)【2】 非阻塞 I/O (可以通过fcntl或者open时使用O_NONBLOCK参数,将fd设置为非阻塞的I/O)【3】 I/O 多路复用 (I/O多路复用,通常需要非阻塞I/O配合使用)【4】 信号驱动 I/O (SIGIO)【5】 异步
2016-12-25 21:55:19 828
原创 双向冒泡排序
以整数升序排序为例来简单说明一下双向冒泡排序的过程:首先从前往后把最大数移到最后,然后反过来从后往前把最小的一个数移动到数组最前面,这一过程就是第一轮,然后重复这一过程,最终就会把整个数组从小到大排列好。双向冒泡排序要稍微优于传统的冒泡排序,因为双向排序时数组的两头都排序好了,我们只需要处理数组的中间部分即可,而单向即传统的冒泡排序只有尾部的元素是排好序的,这时每轮处理都需要从头一直处理到已经排好
2016-12-24 23:56:29 642
原创 指令周期、机器周期、’时钟周期
什么是指令周期?什么是机器周期?什么是时钟周期?三者之间的关系如何?指令周期 :取出并执行一条指令的时间。 机器周期 :又称CPU周期,CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义。//机器周期=1/12·振荡周期时钟周期: 通常称为节拍脉冲或T周期。处理操作的最基本单位,即CPU主频。 三者的关系:指令周期通常用若干
2016-12-22 22:48:44 1066
转载 判断一个数是否为2的N次方问题
对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。void judge(int n) { while(!(n % 2)) { n = n / 2; if(n == 1) { pri
2016-12-21 23:28:21 709
原创 多种排序法间的比较
冒泡排序 冒泡排序重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说排序完成。规模比较小的时候应用冒泡排序,主要应用于教学。。。选择排序--只会移动N次 选择排序的主要思想:首先找到数组中最小的那个元素,其次,将它和第一个元素交换。接下来找第二小
2016-12-20 23:18:02 257
原创 编程-青蛙跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?下面我们有数学归纳法分析一下这个问题: 用Fib(n)表示青蛙跳上n阶台阶的跳法数,青蛙一次性跳上n阶台阶的跳法数1(n阶跳),设定Fib(0) = 1; 当n = 1 时, 只有一种跳法,即1阶跳:Fib(1) = 1;
2016-12-19 22:39:12 814
原创 堆和栈的区别
简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据
2016-12-18 23:22:18 296
转载 C/S和B/S
、C/S和B/S架构和区别和选择区别: 硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行 对安全要求不同 : C/S 一般面向相对固定的用户群
2016-12-17 23:32:08 290
原创 DNS原理
DNS原理及其解析过程为什么需要DNS解析域名为IP地址?网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们
2016-12-16 23:11:52 613
转载 分形几何算法和实现
初识分形1、分形的含义:英文单词Fractal,它是由美籍法国数学家曼德勃罗(Benoit Mandelbrot)创造出来的。其含义是不规则的、破碎的、分数的。曼德勃罗是想用此词来描述自然界中传统欧几里得几何学所不能描述的一大类复杂无规的几何对象。2、分形的几何特征:自相似性:自相似,便是局部与整体的相似。自仿射性:自仿射性是自相似性的一种拓展。如果,将自相
2016-12-15 22:22:53 16150
原创 fork()进阶点
#include int main(int argc, char* argv[]) { fork(); fork() && fork() || fork(); fork(); printf("+/n"); } 答案是总共20个进程,除去main进程,还有19个进程。 我们再来仔细分析一下,为什么是还有19个进程
2016-12-13 22:07:26 244
原创 编程题-最短排序
题目: 对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。 给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例: [1,5,3,4,2,6,7],7 结果:4 思路:在O(n)的时间复杂度中可以完成这道题。当然也有利用快排一次然后比较两个不同的个数来求长度。如果使用快排时间复杂度是O(nlogn)。对于O(n)的解法,举个例子[1,
2016-12-12 22:29:55 413
原创 编程题-实现蛇形输出
实现如下的蛇形输出:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9 具体代码实现:[html] view plain copy #include stdio.h> #include mall
2016-12-11 22:29:04 820
原创 进程与线程
首先来一句概括的总论:进程和线程都是一个时间段的描述,是CPU工作时间段的描述。下面细说背景:CPU+RAM+各种资源(比如显卡,光驱,键盘,GPS, 等等外设)构成我们的电脑,但是电脑的运行,实际就是CPU和相关寄存器以及RAM之间的事情。一个最最基础的事实:CPU太快,太快,太快了,寄存器仅仅能够追的上他的脚步,RAM和别的挂在各总线上的设备完全是望其项背。那当多个
2016-12-08 23:04:56 227
原创 系统调用与库函数
系统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。一般地,操作系统为了考虑实现的难度和管理的方便,它只提供一少部分的系统调用,这些系统调用一般都是由C和汇编混合编写实现的,其接口用C来定义,而具体的实现则是汇编,这样的好处就是执行效率高,而且,极大的方便了上层调
2016-12-07 23:52:36 311
原创 机器大小端的检测
// 解释一下就是将 0x11223344 看作字符串 “0x11223344\0”;尾端:44; // 高端就是 “11 22 33 44” 进行存储;(大端) 地址 0 1 2 3 低地址--->高地
2016-12-06 23:10:11 375
原创 杨辉三角问题
杨辉三角形也叫贾宪三角形,西方叫帕斯卡三角形,其实就是各阶二项式系数排列起来构成的三角形,如下。每行的数字实际上是(a + b) ^ n展开后的结果。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1历史上发现这个三角形的人很多,这里介绍几个主要的,北宋人贾宪约1050年首先使用“贾宪三
2016-12-05 23:32:24 889
原创 I/O多路转接
#include #include #include #include #include #include #include #include #include#include#include/* 宏定义端口号 */#define portnumber 8000#define MAX_LINE 80int main(void){ int lfd;
2016-12-04 23:34:12 299
转载 iic系列问题
面试的时候主要会遇到的IIC问题如下介绍一下你了解的I2C?I2C总线是飞利浦(PHLIPS)公司推出的一种串行总线,用于连接微控制器及其外围设备, I2C串行总线有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 它仅通过两根信号线就可以完成对所有挂载在I2C总线上的从器件进行操作。这样的好处是可以大大的节省我们微处理器的IO口资源。I2C到底可以挂载多少个器件
2016-12-02 23:41:26 431
原创 操作系统-实验2
#include #include struct node{ int pid;//进程id号 int prio;//进程优先级 int runtime;//进程运行的时间 int alltime;//进程还需运行的时间 char state;//进程的状态 运行r,就绪j,阻塞b。 struct node *next;}; typedef struct nod
2016-12-01 22:50:23 258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人