c
神宫桥小霸王
这个作者很懒,什么都没留下…
展开
-
socket套接字
一、套接字 基本特点:socket是一种接口技术,被抽象成一个文件操作,可以让进程之间通信,也可以让不同计算机的进程通信(网络)。 int socket(int domain, int type, int protocol); 功能:创建套接字 domain: AF_UNIX/AF_LOCAL 本地通信,进程间通信 AF_INET 基于IPv4地址通信 AF_INET6 基于IPv6地址通信 type: SOCK_STREAM 数据流协议 SOCK_DGRAM 数据原创 2020-09-01 20:57:03 · 928 阅读 · 3 评论 -
进程与线程
进程基本概念: 1、进程与程序 程序就是存储在磁盘上的可执行文件,程序被加载到内存中开始运行叫进程。一个程序可以被多次加载生成多个进程,进程就是处于活动状态的计算机程序。 2、进程的分类 进程一般分为三种类型:交互进程、批处理进程、守护进程。 守护进程一般都处于活跃状态,运行在后台,由于系统在开机时通过启动脚本自动创建的。 3、查看进程 简单形式:ps 显示当前用户有控制终端的进程信息。 列表形式:ps auxw 显示进程详细信息 a 所有用户的有控制终端的进程 x 无终端控制的进程 u 显示进程的详细信息原创 2020-08-27 20:58:04 · 133 阅读 · 5 评论 -
消息队列
消息队列: 基本特点:是由内核负责维护管理的数据链表,通过消息类型收发数据。 int msgget(key_t key, int msgflg); 功能:创建/获取消息队列 key:IPC键值 msgflg: IPC_CREAT 创建消息队列 IPC_EXCL 如果消息队列已经存在则返回错误 mode_flags:创建消息队列时需要提供权限 返回值:成功返回IPC标识符,错误返回-1。 int msgsnd(int msqid, const void *msgp, size_t msgsz, int msg原创 2020-08-27 20:24:59 · 798 阅读 · 3 评论 -
Linux/Unix 系统简介
UNIX系统介绍: 最早版于1970年问世于贝尔实验室,作者是丹尼斯.里奇和肯.汤普逊。 是最早的多用户、多任务、支持多种CPU架构,高安全性、高稳定性、高可靠性。 既能构架大型关键性业务系统的商用服务器,也能支持嵌入式设备。 MiniX基于微内核加载的类UNIX系统,名为MINIX(即小型的UNIX),并开放全部源代码给大学教学和研究工作,Linux之父林纳克斯,正是在受了MiniX的启发,才开发了Linux系统。 Linux系统介绍: Linux,全称GNU/Linux,其内核由林纳斯・托瓦兹于199原创 2020-08-20 14:50:22 · 1553 阅读 · 6 评论 -
操作系统
一、内存管理 用户层 STL 自动分配/释放内存 调用C++ C++ new/delete 调用C C malloc/free 调用POSIX POSIX brk/sbrk 调用Linux Linux mmap/munmap 调用内核 系统层 kernal kmalloc/vmalloc 调用驱动 driver get_free_page 二、进程映像 程序是存储在磁盘上的可执行文件,当执行程序时,系统会将可执行文件加载到同原创 2020-08-20 14:46:28 · 158 阅读 · 0 评论 -
数组与矩阵
数组与矩阵: 数组:存储空间连接的表结构。 矩阵:带二维信息的数据,一般使用二维数据来存储矩阵。 特殊矩阵: 上三角形矩阵: [0][1][3][6] [ ][2][4][7] [ ][ ][5][8] [ ][ ][ ][9] 压缩方法:用一维数组进行存储 数组的长度:(n+1)*n/2 对应关系:(j+1)*j/2+i i和j要满足:i<=j 下三角形矩阵 [0][ ][ ][ ] [1][2][ ][ ] [3][4][5][ ] [6][7][8][9] 压缩方法:用一维数组进行存储 数组的长原创 2020-08-17 21:45:44 · 393 阅读 · 0 评论 -
树
树型结构: 1、树的基本概念 一种表示层次关系的(一对多)数据结构。 有且仅有一个特定的节点,该节点没有前驱,被称为根节点。 剩余的n个互不相交的子集,其中每个子集也都是一棵树,被称为根节点的子树。 注意:树型结构具有递归性(树中有树)。 2、树的表示方法:倒悬树、嵌套法、凹凸法。 3、树的专业术语: 节点:组成树的基础元素,同时它也是一棵树。 节点的度:该节点子树的数量。 树的度(密度):树中节点的数量。 叶子节点:节点的度为0的节点。 双亲和孩子:节点的子树被称为孩子节点,该节点就是它们的双亲。 兄弟:原创 2020-08-17 21:43:56 · 98 阅读 · 0 评论 -
AVL ,图,查找算法
平衡二叉树: 前提是有序的二叉树,它的左右子树的高相差不超过1,它的所有的子树也要满足这个要求。 如果一个有序二叉树呈单支状(接近单支),它的效率接近链表,因此只有达到平衡时它的效率才最高。 由于节点的位置受值的影响,因此只能进行调整,而不能强行修改。 二叉树不平衡的基础原因: x y / \ / \ y t1 以为轴向右旋转 z x /原创 2020-08-17 21:42:32 · 184 阅读 · 0 评论 -
十大排序算法
算法的时间复杂度并不能代表算法的实际执行时间,有些时候看似复杂度高的速度反面快。 查找算法: 顺序查找: 对待查找的数据没有要求,时间复杂度: O(n) 二分查找: 对待查找的数据必须有序,时间复杂度: O(logn) 块查找: 是一种数据处理的思想,不是特定的算法,当数据量过多时,可以先把数据进行分块处理,然后再进行查找,例如英语词典。 哈希查找: 数据 经过哈希函数 计算出数据在哈希表中的位置,然后标记,方便之后的查找,它的时间复试度最快能达到:O(1)。 但是该算法有很大局限性,不适合浮点型、字符串型原创 2020-08-17 21:40:59 · 172 阅读 · 0 评论 -
Makefile与宏
预处理指令: C代码不能直接被编译器编译,需要一段程序把它翻译一下,负责翻译的程序叫作预处理器,,翻译的过程叫预处理,被翻译的语句叫预处理指令,以#开头都是预处理指令。 gcc -E code.c 查看预处理结果 gcc -E code.c -o code.i 把预处理的结果保存在文件中。 1、文件包含 #include 把一个头文件导入到当前文件中。 #include <> 从系统指定的路径查找并导入头文件。 #include "" 先从当前路径下查找,原创 2020-07-27 20:46:59 · 521 阅读 · 0 评论 -
字符串
字符串: 由字符组成的串型结构,’\0’是它的结束标志。 存在形式: 字符串字面值:存储在代码段 只读 修改会产生段错误 地址 末尾有隐藏的’\0’ const char* str = “hehe”; sizeof(“xixihaha”) 结果是9 字符数组:栈内存 可以修改 要为’\0’预留位置 一般使用字符串字面值初始化字符数组。 char str[4] = “hehe”; // 不建议设置数组长度 输入: char str[255]; scanf("%s",str); 不能输入带空格的字符串 gets原创 2020-07-27 20:45:36 · 94 阅读 · 0 评论 -
内存管理
什么是堆内存: 是进程的一个内存段(text、data、bss、heap、stack),由程序员手动管理, 特点就是足够大,缺点就是使用麻烦。 为什么使用堆内存: 1、随着程序的复杂数量变多。 2、堆内存的申请释放受控制。 如何使用堆内存: 注意:C语言中没控制堆内存的语句,只能使用C标准库提供的函数。 #include <stdlib.h> void *malloc(size_t size); 功能:从堆内存中申请size个字节的内存,申请内存中存储是什么内容不确定。 返回值:成功返回申请到的原创 2020-07-27 20:44:47 · 270 阅读 · 0 评论 -
指针
什么是指针: 指针是一种数据类型,使用它可以用来定义指针变量,指针变量中存储的其实是整数,这种整数代表了内存的编号。 为什么要使用指针: 1、函数之间相独立,但有些时候需要共享变量。 传参是值传递 全局变量容易命名冲突 使用数组还需要传递长度 命名空间是独立的,但地址空间是同一个,所有指针可以解决这个问题。 2、由于函数之间传参是值传递(内存拷贝),对于字节数比较多的变量,值传递效率较低,如果传递变量的地址只需要传递4|8字节。 3、堆内存无法取名字,它不能像data、bss、stack让变量名与内存建立联原创 2020-07-27 20:43:29 · 143 阅读 · 0 评论 -
C语言指针详解(经典,非常详细)
转载:https://blog.csdn.net/liu100m/article/details/90731422 原文不详 前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一步分析.下面让我们先从简单的类型开始慢慢分析吧: int p; //这是一个普通的整型变量 i转载 2020-07-15 20:58:25 · 378 阅读 · 1 评论 -
进程映像以及类型限定符
进程印象 进程映像指的就是函数的分布情况 # 堆heap 由程序员手动管理 特点就是够大 栈stack 函数调用开始到函数执行结束 只能在函数内使用 存储局部变量,块变量等数据 静态数据段bss 存储未初始化过的变量 text代码段 存储是二进制指令,常量数据,权限是只读,强制修改会产生段错误。 data数据段 存储初始化的变量 类型限定符 auto 用于定义自动分配、释放内存的变量(局部变量),不加就代表加。 全局变量不能用它修饰。 extern 声明变量,意思是此变量在别处已经定义,请放心使用。 但只临原创 2020-07-15 20:49:07 · 268 阅读 · 0 评论 -
gcc参数以及c代码的执行过程详解
****有好几个月没有更新了还是很抱歉,接下的更新会稳定下了,一周一篇或者多篇 今天给大家分享一下gcc的相关参数以及c代码变为可执行程序的过程 gcc是GNU社区为了编译Linux代码而开发一款免费的编译器,默认采用C89语法,-std=gnu99可以设置C99语法。 常用的参数: -E 显示预处理结果 -c 只编译不链接 -o 设置编译结果的名字 -I 指定头文件的加载路径 -S 生成汇编代码 -l 指定要使用库,-lm 使用数学库 -Wall 以严格的标准来检查代码,显示更多的警告提醒 -Werro原创 2020-07-07 19:29:54 · 584 阅读 · 0 评论 -
近期题目分享以及疑惑
hello,大家许久不见,这段时间虽然题目写的不少,但是一直都没有机会跟大家一起分享,接下来我给大家分享几题近期写的几道比较有意思的题目吧 题目均引自pat乙级题库 1.1070 结绳 题目思路:这题是一题比较明显的数学题,只要我们把思路搞对,那我们就可以根据题目进行编程。 #include<stdio.h> int main() { int n=0; scanf("%d",&n); int a[n],cnt=0; for(int i=0;i<n;i++) { scanf("%.原创 2020-05-18 18:57:25 · 256 阅读 · 0 评论