- 博客(11)
- 收藏
- 关注
原创 数据结构:堆创建&堆插入&堆删除
一、堆 1.定义 有一个集合,K={K0,K1,K2,……Kn-1},把这些数按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki<=K2*i+1且Ki<=K2*i+2(Ki>=K2*i+1且Ki>=K2*i+2)i=0,1,2……,则称这个堆为最小堆(或最大堆)2.堆结点的特性 堆存储在下标为0开始计数的数组中,因此在堆中给定下标为i的结点...
2018-05-23 16:44:19 1717
原创 linux:读写锁
一、读写锁是什么? 读写锁其实还是一种锁,是给一段临界区代码加锁,但是此加锁是在进行写操作的时候才会互斥,而在进行读的时候是可以共享的进行访问临界区的 ps:读写锁本质上是一种自旋锁二、为什么需要读写锁? 有时候,在多线程中,有一些公共数据修改的机会比较少,而读的机会却是非常多的,此公共数据的操作基本都是读,如果每次操作都给此段代码加锁,太浪费时间了而且也很浪费资源...
2018-05-18 19:51:02 17292 5
原创 linux:套接字编程 (单连接/多进程版本/多线程版本) TCP代码的实现 netstat -anp|grep xxx 命令
1.实现服务器与客户端之间的通信,客户端给服务器发送消息,服务器的作用是把客户端发给自己的消息再给客户端发送回去 服务器端#include&amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;lt;stdlib.h&amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;lt;string.h&am
2018-05-14 22:56:22 617
原创 linux:套接字编程 UDP
套接字编程在TCP/IP协议中,IP地址+端口号—->唯一的标识一个进程 IP地址+端口号就是套接字,套接字编程就是两个进程分别有自己的socket,这两个进程的socket组成一对,就唯一的标识了这两个进程之间的连接,然后就可以进行相互的通信了1.实现一个客户端给服务器发送消息,服务器的作用就是回显客户端发给自己的消息server.c (服务器端)#include...
2018-05-14 22:42:34 752
原创 sockaddr & sockaddr_in & IPV4地址 & IPV6地址 & inet_addr & inet_ntop & inet_pton & inet_aton & inet_ntoa
1.IPV4地址用socket_in结构体表示;2.IPV4和IPV6地址类型分别定义为常数AF_INET、AF_INET6;3.IPV4和IPV6在定义时定义为struct sockaddr_in*结构,但是socket API的接口接受struct sockaddr*结构,故在使用地址的时候需要强转为struct sockaddr*jiegou,这样的好处就是可以提高代码的通用性,...
2018-05-13 22:21:29 3113 2
原创 Linux: listen() & socket() & bind() & accept() & connect() & recvfrom()&sendto() & recv()&send()详解
以下函数的头文件:#incldue&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;netinet/in.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;arpa/inet.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;am
2018-05-11 14:15:23 1681
原创 IP地址&端口号&TCP协议&UDP协议
一、IP地址1.什么是IP地址?IP地址是连接在因特网上的主机的标识符2.IP协议的分类?IP协议有两个版本,分别是IPV4,IPV6ps:基本上提到IP地址时,不特指的话,都是指IPV43.IP地址的大小、格式、分类?(1)IP地址的大小:IP地址是一个4字节,32位的整数(2)IP地址的格式:IP地址是一个32位的整数,但是为了我们便于记忆,通常使用“点分十进制”...
2018-05-11 13:38:40 3187
原创 浅析:B树
1.什么是B树 B树是一种适合外查找的搜索树,是一种平衡的多叉树 2.B树的特点 B树的每个结点包含着结点的值和结点所处的位置 3.一棵M阶(M>2)的B树,是一颗平衡的M路(M数就是孩子的个数,即就是有几路那就有几个孩子)平衡搜索树,可以是空树,或者满足以下的性质: (1)根结点至少有两个孩子; (2)每个非根结点至少有M/2个孩子,至多有M个孩子; (3)每个...
2018-05-06 22:46:28 2306
原创 linux下如何求一个函数的运行时间(C语言实现)
clock()功能:计算某程序从启动到函数调用占用CPU的时间头文件:#include<stdio.h>clock_t clock(void) clock_t:是一种数据类型,是long int类型返回值:该函数返回的是从程序开始运行到调用clock函数时所打的点数 定义两个clock_t变量begin、end,在调用函数之前调用clock函数,在程序...
2018-05-02 20:27:20 6765 9
原创 linux:gcc编译error:“collect2: ld returned 1 exit status” (Undefined reference )
在linux环境下编译一个工程,不管怎样编译,总是出现以下错误:-bash-4.1$ gcc test.c consumers_producers.c/tmp/ccQzS4PV.o: In function `main':test.c:(.text+0x92): undefined reference to `pthread_create'test.c:(.text+0xf2): u...
2018-05-02 17:16:44 73927 2
原创 linux:进程间通信之信号量(semop & semget & semctl & P & V)
1.信号量怎样实现同步互斥? 信号量并不是让进程间能够直接的发送字符串数据,而是通过自身计数器的性质,来完成进程之间的同步互斥(通过使用信号量来完成令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域,临界区域是指执行数据更新的代码需要独占式的执行,而信号量则是让一个临界区同一时间只有一个线程在访问他,即就是说信号量是用来协调进程对共享资源的访问的一种手段)ps:信号量其实就是...
2018-05-01 17:27:17 995
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人