自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 冒泡排序和他的优化

冒泡排序是常常使用的排序,面试中也常常用到。 他的特点是: 1.简单  冒泡排序的逻辑是相邻元素进行比较和交换,经过一轮排序至少可以确定一个有序的元素。 那么可以得出结论:排序n个元素,需要n-1轮排序。 for (x =0 ;x 经过一轮排序,可以把最大或者最小的元素移动到数组的一边,下一轮在排序时,减少排序元素的数目。 for (y = len-1; y > x; --y)

2016-03-20 15:46:57 324

转载 select poll epoll的io模型

针对IO,总是涉及到阻塞、非阻塞、异步、同步以及select/poll和epoll的一些描述,那么这些东西到底是什么,有什么差异?       一般来讲一个IO分为两个阶段:       等待数据到达把数据从内核空间拷贝到用户空间       现在假设一个进程/线程A,试图进行一次IO操作。       A发出IO请求,两种情况:       1)立即返回       2)由于数据未准

2016-02-21 09:42:09 306

原创 异步与同步 阻塞和非阻塞

异步与同步 阻塞和非阻塞 总是让人觉得难以理解 实际上 常用的函数是都是同步的,很多Io函数也是默认的阻塞的。 同步是最常见的,就是一步一步的执行函数,执行完返回。他简单,你不需要额外的去考虑,这是很自然的事情。 阻塞是说当文件描述符不可用的时候,就等待,等到他可用。 对于一个函数来说,非阻塞时可以设置的,但是对于同步来说,好像没有什么可以设置的。 同步是简单、常见、但是效率比较低。

2016-02-20 20:21:17 294

原创 什么时候使用多线程

使用多线程为什么可以提高效率呢? io是关键。很多的应用要使用io,但是cpu是很快的,io往往是很慢的。 看代码 main1.c #include #include #include #include #include #include char *p; void sys_error(int errnum) { perror(strerror(errnum)); ex

2016-02-20 19:45:06 1299

原创 c语言的const的写法

c语言有个const,const修饰的变量表示是一个常量。 但是const一跟指针挨着就感觉有点麻烦。为什么呢,因为指针变量有个特点。 比如普通的int 变量。 const int a = 100; int const int a =100; const的位置无所谓,修饰肯定是a,表示a变量是一个常量。 但是遇到了指针 const int * a = &b; int

2016-02-15 15:09:53 471

原创 extern "c" 什么时候使用

在写c/c++的时候,对于c函数总要来个extern "c"{ func(...)}. 那么到底什么时候需要呢写这个extern "c",不写又有什么后果呢。 demo.cpp #include #include "mystring.h" using namespace std; int myStrlen(int num) { cout<<"num = "<<num<<endl

2016-02-15 10:55:44 2276

原创 斐波那契数列

求取斐波那契数列 常常使用递归方法,但是发现递归其实效率是很低的。 下面的代码fib1是递归的,fib2是非递归的。 #include #include #include long int fib1(int num) { if (num <= 2) return (1); else return (fib1(num-1) + fib1(num-2)); } long

2016-02-14 11:38:01 498

原创 字符串回文判断

字符串回文就是从左到右阅读字符串和从右向左阅读的结果是一样的,就是说字符串是对称的。 #include #include #include int IsReverse(const char *str) { if (str == NULL) return (-1); int left, right; left = 0; right = strlen(str)-1; whi

2016-02-14 10:28:32 429

原创 约瑟夫问题的单向循环链表的代码实现

#include #include #include //链表节点 typedef struct node { int data; struct node *next; }Node; //创建一个单向循环链表 ,n表示创建的节点个数 Node * createList(int n) { int i; Node *head, *cur,

2016-02-13 22:37:58 589

空空如也

空空如也

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

TA关注的人

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