- 博客(21)
- 收藏
- 关注
原创 2022/3/9
计算机网络相关知识:如七层结构:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层应用层的协议:域名系统DNS协议、FTP文件传输协议、telnet远程终端协议、HTTP超文本传送协议、SMTP电子邮件协议、POP3邮件读取协议、Telnet远程登录协议、SNMP简单网络管理协议等。表示层提供:Data encryption / decryption 数据加密/解密 Character/string conversion 字符/字符串转换 Data compressi...
2022-03-09 21:12:23
234
原创 2022/3/7
线程:线程的优点: 和进程相比,它是一种非常“节俭”的多任务操作方式.在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。运行于一个进程中的多个线程,它们之间使用相同的地址空间,而且线程间彼此切换所需的时间也远远小于进程间切换所需要的时间.据统计,一个进程的开销大约是一个线程开销的30倍左右线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过进程间通信的方式进行,这种方式
2022-03-07 20:19:50
105
原创 2022/3/5
进程间的通信编程:1.数据传输 :一个进程需要将它的数据发送给另一个进程2.资源共享:多个进程之间共享同样的资源3.通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件4.进程控制 :有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变kill -l 查看kill的用法。现在Linux使用的进程间通信方式包括:1、管道(pip...
2022-03-05 19:18:25
190
原创 2022/3/3
进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元。进程受系统内核管理,线程由进程创建和管理。进程是放到磁盘的可执行文件,进程是指程序执行的实例。进程是动态的,程序是静态的:进程不可复制移动,程序可以进程是暂时的,程序是长久的:程序可以长期保存。进程与程序组成不同:进程的组成包括程序,数据和进程控制块(即进程状态信息)进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。进程的生命周期:创建,运行,撤销。每个进程
2022-03-03 21:12:26
236
原创 2022/2/27
数据库(DataBase,简记为DB):就是一个有结构的、集成的、可共享的统一管理的数据集合。它不仅包括数据本身,而且包括相关数据之间的联系。数据库技术主要研究如何存储、使用和管理数据;数据库管理系统 (DataBase Management System,DBMS)数据管理技术的发展过程:人工管理阶段(40年代中--50年代中)文件系统阶段(50年代末--60年代中)数据库系统阶段(60年代末--现在)关系术语和定义:关系(Relation):一个关系就是一张二...
2022-02-27 21:08:42
536
原创 2022/2/25
linux系统调用及用户编程接口(API):所谓系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务在Linux中,为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间。用户进程通常情况下不允许访问内核数据。系统调用并不是直接与程序员进行交互的,它仅仅是一个通过软中断机制向内核提交请求,以获取内核服务的接口。在实际使用中程序员调用的通常是用户编程接口—API系统命令相对API更高了一层,它实际上一个可执行程序,它的内部引用
2022-02-25 20:05:31
601
原创 2022/2/23
哈希表:通过要查找的K找到对应的位置。在存储位置和关键码之间建立一个确定的对应关系。如图:利用取余也可以构造哈希表(哈希散列)如例题:已知连续的地址区间为0~6,给定关键字k的序列{20,30,70,12,18}。若将k%7的值作为k的存储地址,则可以构造出以下存储结构。上例中k%7为散列(哈希)函数,构造出的存储结构称为散列表。若添加新的关键字“14”,则其散列函数值(14%7=0)将与关键字“70”的存储地址相同,我们称这种关键字不同但是散列函数值相同的现象为冲突。在构造
2022-02-23 21:53:48
205
原创 2022/2/21
结点的平衡因子(balancd factor用bf表示) :二叉树中某结点左子树的高度与右子树的高度之差称为该结点的平衡因子左右子树深度之差的绝对值不大于1 称有这种特性的二叉树为平衡二叉树。LL型:如果在d的下方添加一个,导致二叉树不平衡。调整方法:单向右旋平衡,即将A的左孩子B 向右上旋转代替A成为根结点,将A结点向右下旋转成为B的右子树的根结点,而B的原右子树则作为A结点的左子树。代码实现:lc=p->lchild; /*..
2022-02-21 21:12:16
209
原创 2022/2/19
顺序实现堆栈#include<stdio.h>#include<stdlib.h>#define SIZE 10//差清空,读栈,置空enum ret_val{FULL_OK,FULL_NO,EMPTY_OK,EMPTY_NO,PUSH_OK,PUSH_NO,POP_OK,POP_NO};struct stack1{ int stack1_data[SIZE]; int top;};typedef struct stack1 Stack;v
2022-02-19 21:44:37
299
原创 2022/2/17
#include<stdio.h>#include<stdlib.h>#include<time.h>#define OK 1#define FAIL -1struct hnode{ int num; struct hnode *next;};typedef struct hnode Hnode;typedef Hnode *Hlink;void create_new_node(Hlink *new_node)//创建结点{ .
2022-02-17 21:51:05
404
原创 2022/2/16
#include<stdio.h>#include<stdlib.h>#include <time.h>#define OK 1#define FAIL -1typedef struct node{ int num; struct node *next; }Node,*Link;void creat_link(Link *head){ *head = NULL;}int is_malloc(Link new_node).
2022-02-16 20:20:26
48
原创 树,二叉树的学习笔记
常用数据逻辑结构:集合——数据元素间除“同属于一个集合”外,无其它关系线性结构——一个对一个,如线性表、栈、队列树形结构——一个对多个,如树图形结构——多个对多个,如图树的定义:树(tree)是由n(n≥0)个结点组成的有限集合T。n=0的树称为空树;对n>0的树,有: (1)仅有一个特殊的结点称为根(root)结点,根结点没有前驱结点; (2)当n>1时,除根结点外其余的结点分为m(m>0)个互不相交的有限集合T1,T2,…,Tm,其中每个集合Ti本身又是一棵
2022-02-13 20:09:47
215
原创 2020/2/11
指针变量做函数参数:传递方式:属于赋地址调用,将实元指针传给 虚参,虚参也是一指针。虚参要求:必须是指针变量实参要求:是指针变量、数组名哑实结合:在哑实结合时,实元指针将其地址值 传给哑元指针注意:传地址,由于是地址,所以空间相同,所以参数传递是双向的。都可以互相影响.操作空间是一个,swap可以修改主函数的变量如下:swap函数的错误形式:void swap(int x,int y){ int t; t=x;x=y;y=t;}...
2022-02-11 21:01:16
547
原创 2022/1/29
1.数据结构简介1.1数据结构的基本概念数据:信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。例如在生活中,我们的身份信息、看到的图片、听到的音乐都可以作为数据来进行输入和处理。数据对象:具有相同性质的数据元素的集合,是数据的一个子集。例如所有人的身份信息可以作为-一个数据对象。数据元素:数据的基本单位,通常作为--个整体进行考虑和处理。例如每一一个人的身份信息可能就是一个数据元素。数据...
2022-01-30 20:37:02
839
原创 2022/1/25
数组:由若干个相同类型的相关数据项按顺序存 储在一起,构成数组(array) ;数组实际上 是同种类型、有序的数据的集合。数组名:如果用一个统一的名字标识这组数据, 那么这个名字就称为数组名数组元素:构成数组的每一个数据项称为数组的 元素(element)格式:类型 数组名[下标1][下标2] ……[下标n];其中:类型为数组元素的基类型,即每个 元素的类型。下标值n表示为所在维的数组 元素个数,该维的数组下标的上界是n-1; C语言中数组下标下界始终为0。维数是 下标的个数。一维数组的
2022-01-25 20:43:17
636
原创 01/23
今日代码:输出随机的二维数组,并且按照每一个行中的最小值来对数组的行进行排序,列不可改变#include<stdio.h>#include<time.h>#include<stdlib.h>#define N 5int main(){ int i,j; int arr[N][N]; int min[N] = {0}; int tmp; int k; srand((unsigned)time(NULL)); for (i.
2022-01-23 21:52:39
402
原创 2022/1/21
静态局部变量和动态局部变量区别:1.静态局部变量属于静态存储类别,在静态存储区分配存储单元,在整个运行期间都不释放。程序退出时才由系统回收。2.而(动态局部变量属于动态存储类别,占动态存储空间,函数调用后释放。静态局部变量在编译时赋初值,程序运次时已经有初值,以后每次调用函数不再重新赋初值而只是保留上次函数调用结束时的值。静态局部变量编译时赋初值默认是0;动态局部变量如果不赋初值则它的值是不确定的值。4.静态局部变量在函数调用结束后仍然存在,但其他函数不能引用它。如果用static修饰全局变量,那么
2022-01-21 22:05:59
1119
原创 2022/1/19
数据类型:char:只占一个字节,取值范围为 -128 ~ +127(-2^7~2^7-1)cpu字长是指cpu同时参与运算的二进制位数,现在主流的pc的机器字长都是64位的。机器字长直接决定着机器可寻址的虚拟空间地址大小。指针变量8个字节数组:对数组的操作时对元素的操作,不允许对整体操作。变量是内存空间的映射直接寻址是一种基本的寻址方法,其特点是:在指令格式的地址的字段中直接指出操作数在内存的地址。由于操作数的地址直接给出而不需要经过某种变换,所以称这种寻.
2022-01-19 20:49:15
586
原创 2022/1/17
静态库.a:保存的函数和变量,在编译阶段加载到可执行文件中动态库.so:保存的函数和变量,在执行阶段加载到执行文件中使用静态库和动态库的区别(可执行文件的区别):1.使用静态库编译出来的可执行文件的大小 >使用动态库编译出来的可执行文件大小 影响内存的开销。2.使用静态库编译出来的可执行文件的执行速度>使用动态库编译出来的可执行文件的执行速度3.对功能做升级的时候,动态库优于静态库。4.使用静态库编译出来的可执行文件的部署优于动态库库文件的存放路径:系统运行所需要
2022-01-17 19:43:20
465
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人