![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux应用开发
zhangsan_3
这个作者很懒,什么都没留下…
展开
-
什么是死锁,产生的原因,如何避免死锁
死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用这些进程将永远不可能向前推进。原因:竞争资源,进程推进顺序非法。必要条件:互斥条件,请求和保持条件,不剥夺条件,环路等待条件。处理死锁:预防死锁,避免死锁,检测死锁,解除死锁如何避免:如果所有并发事务按同一顺序访问对象,则发生死锁的可能性会降低;避免事务中的用户交互;保持事务简短并在一个批处理中。原创 2016-12-07 16:56:11 · 691 阅读 · 0 评论 -
查询字符串中字母和数字的个数
***************判断ASCII的方式,查询字符串中字母、数字的个数*****************int i,zm=0,sz=0;char s[200];gets(s);for(i=0;s[i];i++){ if(s[i]>='A'&&s[i]='a'&&s[i]='z') zm++; else if(s[i]>='0'&&s[i]='9原创 2016-12-07 22:15:13 · 1153 阅读 · 1 评论 -
运算符优先级
优先级 运算符及其含义 1 [] () . -> 后缀++ 后缀-- 2 前缀++ 前缀-- sizeof & ^ + - ~ ! 3 强制类型转换原创 2016-11-27 10:58:29 · 231 阅读 · 0 评论 -
gcc编译过程
/******************************gcc编译与调试******************************/【25】C程序#include //包含头文件,stdio.h 标准输入输出头文件 // 表示这个头文件是系统提供的,"*.原创 2016-11-27 19:27:31 · 260 阅读 · 0 评论 -
Linux进程的5个数据区域---》bss段、数据段、代码段、堆、栈
其实在程序运行时,由于内存的管理方式是以页为单位的,而且程序使用的地址都是虚拟地址,当程序要使用内存时,操作系统再把虚拟地址映射到真实的物理内存的地址上。所以在程序中,以虚拟地址来看,数据或代码是一块块地存在于内存中的,通常我们称其为一个段。而且代码和数据是分开存放的,即不储存于同于一个段中,而且各种数据也是分开存放在不同的段中的。5个段进程(执行的程序)会占用一定数量的内原创 2016-11-28 16:22:11 · 3635 阅读 · 0 评论 -
文件IO - O_DIRECT和O_SYNC详解
O_DIRECT和O_SYNC是系统调用open的flag参数。通过指定open的flag参数,以特定的文件描述符打开某一文件。这两个flag会对写盘的性能有很大的影响,因此对这两个flag做一些详细的了解。先看一个open函数的使用例子.123456/* Open new or转载 2016-12-09 10:41:29 · 8386 阅读 · 0 评论 -
链表翻转/逆序
// 链表翻转// 整个过程即:对开始为第一个的元素(固定,地址不变)之后的元素 断链、头插的过程;void list_reversal1(linknode *H) // 从第二个元素(第三个节点)开始,依次头插 {linknode *p = H->next,*q = NULL; // p-开始时第一个元素的地址 , q- p下一个元素的地址whi原创 2017-03-17 13:45:21 · 319 阅读 · 0 评论 -
TCP/IP协议传输中的三次握手和四次挥手
*******************TCP/IP协议中的三次握手和四次挥手**********************1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。 (2)服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志S原创 2016-12-07 21:53:05 · 303 阅读 · 0 评论 -
strcmp的实现
int mystrcmp(char *s1,char *s2){while(*s1 == *s2 && *s1 != '\0' && *s2 != '\0'){s1++;s2++;}if(*s1 return -1;else if(*s1 > *s2)return 1;elsereturn 0;}原创 2016-12-07 19:46:31 · 273 阅读 · 0 评论 -
epoll脚本
epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合。原创 2016-12-07 21:19:30 · 202 阅读 · 0 评论 -
进程、线程的区别
面试题常常会出现的一道题: 一个程序至少有一个进程,一个进程至少有一个线程; 进程在执行过程中拥有独立的内存单元,而多个线程共享内存; 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。进程和线程的主要差别在原创 2016-12-07 21:08:59 · 187 阅读 · 0 评论 -
什么是大端什么是小端字节序?网络字节序是大端还是小端的?
小端:低地址存放低字节,高地址存放高字节; 大端:高地址存放低字节,低地址存放高字节;网络字节序是:大端。原创 2016-12-07 16:57:26 · 7417 阅读 · 0 评论 -
哈希表原理
根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中某一个位置来访问记录,以加快查找的速度;这个映射函数叫做散列函数,存放记录的数组叫做散列表。哈希表是一个以空间换取时间的数据结构,理想情况下的时间复杂度为O(1)。 散列函数的构造方法:(1)直接定址法 取关键字或关键字的某个线性函数值为散列地址;即H(key)=key或H(key) = a•key原创 2016-12-07 16:59:14 · 290 阅读 · 0 评论 -
assert();宏的使用
这是个定义在 中的宏, 用来测试断言。一个断言本质上是写下程序员的假设, 如果假设被违反, 那表明有个严重的程序错误。例如, 一个假设只接受非空指针的函数, 可以写: assert(p != NULL);一个失败的断言会中断程序。断言不应该用来捕捉意料中的错误, 例如 malloc() 或 fopen() 的失败。原创 2016-12-07 17:10:03 · 260 阅读 · 0 评论 -
函数memset的实现
原型: void *memset(void *buffer, int c, int count);功能:把buffer所指内存区域的前count个字节设置成字符c。void *memset(void *src, intc, size_t count){ assert(src!=NULL); char *tmpsrc=(char*)src; while(count--原创 2016-12-07 17:01:01 · 746 阅读 · 0 评论 -
C语言——字符串翻转
一、指针的方式实现char* strrev2(const char* str){ char* tmp = new char[strlen(str) + 1]; strcpy(tmp,str); char* ret = tmp; char* p = tmp + strlen(str) - 1; while原创 2016-12-07 18:20:06 · 296 阅读 · 0 评论 -
strcpy的实现
char * mystrcpy(char *dst,char *src){char * p = dst;while(*src != '\0'){*dst = *src;src++;dst++;}*dst = '\0';return p;}原创 2016-12-07 19:56:13 · 224 阅读 · 0 评论 -
strcat的实现
#include "stdio.h" char *strcat(char *str1, char *str2) { assert((str1==NULL)||(str2==NULL)) ; char *pt = str1; while(*str1!='\0') str1++; while(*str2!='\0') *str1+原创 2016-12-07 20:24:23 · 326 阅读 · 0 评论 -
static关键字的作用
**********static关键字作用总结**************一.最重要的一个作用:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。static修饰的全局变量和函数只能在本文件内使用,外部文件不可调用二.第二个作用:保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也原创 2016-11-27 21:47:43 · 297 阅读 · 0 评论 -
Ubuntu 中断操作快捷键、指令
/******************************linux环境下的工作路径******************************/【1】打开/退出一个终端Ctrl + Alt + texit【2】调整终端字体Ctrl + +/-【3】显示当前路径pwd【4】清屏clear / Ctrl + l【5】原创 2016-11-26 14:28:18 · 5440 阅读 · 0 评论