自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 linux-网络基础三

网络层负责地址管理与路由选择;在复杂网络通信环境中,为每一条数据选择一条合适路径进行传输;而选择路径是根据每一条数据中的目的端地址决定的并且路由选择也依托于良好的地址管理IP协议IP协议字段:4位协议版本:4位头部长度:以4字节为单位 20~608位服务类型: 4位TOS字段16位数据报长度:包括IP头在内,一个IP报文的长度—一个udp报文的最大数据段大小64k-2...

2019-09-05 20:09:30 394 1

原创 linux-网络基础二

应用层一端发送时构造的数据, 在另一端能够正确的进行解析, 就是ok的. 这种约定, 就是 应用层协议负责程序之间的数据沟通自定制协议:结构化数据的传输序列化:将数据对象按照指定协议组织成为可持久化存储/数据传输的二进制数据串格式反序列化:二进制数据串按照指定的协议解析出数据对象HTTP协议(超文本传输协议)平时我们俗称的 “网址” 其实就是说的 URLURL:统一资源定位符u...

2019-09-04 20:22:42 388 1

原创 项目:图片存储系统(图片服务器)

图片存储系统项目描述:利用 HTTP 服务器,实现使用 url 对图片进行访问, 提供对图片的增删改查能力,同时搭配简单的页面辅助完成图片上传/展示利用 HTTP 服务器来为每个图片提供一个唯一访问的 url使用 Json 封装 http 请求,响应提供上传图片,查看图片信息/内容以及删除图片接口使用 lambda 表达式替换函数使用 md5 校验图片实现环境:Linux My...

2019-09-04 11:44:37 11496 3

原创 项目:超市后台管理系统

超市后台管理系统项目描述:模拟实现超市后台管理系统,对员工以及商品进行管理用户输入名户名以及密码后,根据不同身份,显示不同界面,用户进行其相应操作使用 DuiDesigner(界面布局器)来绘制不同风格登录操作界面对数据库进行封装,便于后续使用用继承多态方法对不同用户对应的操作方法进行重写实现环境:Windows-10 VS2013 MySQL-5.7.27 Duilib 库涉及...

2019-09-04 00:12:53 6815 1

原创 linux-网络编程套接字

linux-网络编程套接字网络通信是两端通信:其中一端叫客户端;另-端叫服务端通信双方中主动发起请求的这一方是客户端-必须知道服务端在哪里通信双方中被动接收请求的这一方是服务端-- 必须告诉客户端自己在哪里(通常都是一个固定地址)传输层有两个协议: TCP/UDP 需要用户告诉操作系统,到底传输层应该用哪个UDP (用户数据报协议) :无连接,不可靠,面向数据报传输性能高...

2019-08-25 19:36:06 446 1

原创 linux-网络基础一

linux-网络基础一网络划分网络的划分:局域网(1000) --> 城域网(10公里) --> 广域网所谓 “局域网” 和 “广域网” 只是一个相对的概念.IP地址IP地址:在网络中唯一标识一台主机—uint32 —无符号32位的整数在网络通信中的每一条数据中都应该包含有目的IP地址 +源IP地址IPV4: IP地址无符号32位的整数决定了IP地址的个数:不到43亿...

2019-08-25 17:46:49 627 1

原创 linux-多线程

linux-多线程1.linux 线程在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流...

2019-08-19 12:30:43 163 1

原创 排序

常见排序算法1 插入排序基本思想:直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i...

2019-07-26 11:08:04 327 2

原创 linux-线程(生产设消费者模型)

生产者消费者模型生产者消费者模型是通过一个容器来解决生产者和消费者的强耦合问题。123原则: 一个场所:阻塞队列 两种角色:生产者、消费者 三种关系:生产者之间是互斥关系      消费者之间是互斥关系      生产者消费者之间是互斥+同步关系#include <iostream>#include <queue>#include <pth...

2019-06-30 14:09:04 282 1

原创 Linux进程信号

Linux进程信号信号概念信号:是进程之间事件异步通知的一种方式   信号是一个软件中断,通知进程发生了某件事情,中断进程   当前操作,让进程去处理信号事件查看信号kill -l //查看系统定义的信号列表其中:  [1-31]信号:非可靠信号(常规信号),易丢失事件,只注册一次,多次注册时会造成信号丢失  [31-64]信号:可靠信号(实时信号),不会丢失信号信...

2019-06-22 19:40:52 324 1

原创 C语言-字符串函数的模拟实现(7个)

字符串函数的模拟实现:strcpy strcat strcmpstrchr strstr以及内存操作函数:memcpy memmovestrcpy :char* my_strcpy(char* dest, const char* src){ assert(dest && src); char* ret = dest; while (*dest+...

2019-06-19 23:13:03 271 1

原创 linux进程间通信-IPC(管道)

1.匿名管道pipe2.命名管道mkfifo1.匿名管道pipe管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中;数据的读出和写入:一...

2019-06-15 13:11:50 413 1

原创 (linux基础IO)编写简单的add/sub/mul/div函数,并打包成动/静态库,并分别使用

编写简单的add/sub/mul/div函数,并打包成动/静态库,并分别使用静态库(.a):在windows下后缀为(.lid),程序在编译链接的时候把库的代码链接到可执行文件里。程序运行的时候将不再需要静态库。动态库(.so):在windows下后缀为(.dll),程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的...

2019-06-09 18:01:02 1013 1

原创 linux基础IO

1. 练习open/read/write/close等文件相关系统调用接口,纵向对比fd与FILE结构体2. 对之前编写的自主shell进行修改,使其支持输入/输出/追加重定向3. 编写简单的add/sub/mul/div函数,并打包成动/静态库,并分别使用。1. 练习open/read/write/close等文件相关系统调用接口,纵向对比fd与FILE结构体#include<s...

2019-06-09 17:58:36 290 1

原创 minishell的重定向实现

minishell的重定向实现Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作,操作句柄为文件描述符,可以将文件描述符想象成两个指针,相当于指针所指的内容变了。常用到的两个输出重定向的符号">" 和 “>>”第一个是清空重定向,会先清空...

2019-06-09 00:45:59 295 1

原创 进程控制

1. 学习进程创建, 等待, 终止. 使用代码实现.2. 编写自主shell.3. 封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数.4. 调研popen/system, 理解这两个函数和fork的区别.1. 学习...

2019-06-09 00:40:11 276 1

原创 C语言思维导图

C语言思维导图

2019-06-05 12:40:29 462 2

原创 C语言-通讯录

C语言-通讯录contactbook.h#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<errno.h>#include<string.h>typedef struct contact{ char _name[20...

2019-06-05 01:11:40 673 1

原创 C语言动态内存管理

动态内存管理#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>int main(){ //int a;//4 //char arr[5];//5 //动态内存开辟...

2019-06-04 15:40:47 227

原创 C语言之自定义类型(结构体,枚举,联合)

自定义类型(结构体,枚举,联合)代码练习#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>//int//float//内置类型//自定义类型:结构体,枚举,联合////结构体的声明struct tag //tag:结构体标签{ member - list; //结构体成员列表}variable...

2019-06-04 00:50:43 234 1

原创 C语言预处理相关代码练习

预处理相关练习代码练习,注释总结#define _CRT_SECURE_NO_WARNINGS 1//#pragma warning(disable: 4996)//和上面的作用相同#include <stdio.h>int main(){ FILE* pf = fopen("log.txt", "w"); int i = 0; if(pf == NULL)...

2019-06-03 12:18:44 300 1

原创 C语言文件操作相关函数

文件操作相关函数#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <errno.h>#include <string.h>#include<stdlib.h>基本操作int main(){ int a = 10000; FILE* pf = fopen("...

2019-06-02 00:48:43 351 1

原创 二叉树的链式存储

1. 分析顺序存储二叉树的优缺点2. 使用孩子表示法实现二叉树的以下操作:typedef char BTDataType; typedef struct BTNode { struct BTNode* _pLeft; struct BTNode* _pRight; BTDataType _data; }BTNode; // 二叉树的创建 BTNode* CreateBinT...

2019-06-01 15:07:47 219

原创 二叉树顺序存储之堆(下)

3. 对上一篇博客的堆进行改造,使用户可以控制创建大堆还是小堆typedef int (*PCOM)(HPDataType, HPDataType); // 堆中元素进行小于比较 int Less(HPDataType left, HPDataType right); // 堆中元素进行大于比较 int Greater(HPDataType left, HPDataType righ...

2019-05-29 22:23:28 148 1

原创 二叉树顺序存储之堆(上)

1. 熟悉堆的概念以及特性2. 实现堆的以下接口:typedef int HPDataType; typedef struct Heap { HPDataType* _array; int _capacity; int _size; }Heap; // 用数组初始化堆 void InitHeap(Heap* hp, HPDataType* array, int size); ...

2019-05-29 22:06:05 183 1

原创 树以及二叉树的基本概念

树以及二叉树的基本概念掌握树的基本概念掌握树的相关概念掌握树的表示方式熟悉二叉树的基本概念以及特性熟悉完全二叉树以及满二叉树的概念熟悉二叉树的性质:1 2 3 4 5熟悉二叉树的存储方式掌握树的基本概念树是一种非线性的数据结构,它是由n(n >= 0) 个有限节点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树,也就是说它是根朝上,而叶朝下的...

2019-05-25 19:37:01 250 1

原创 栈和队列

栈和队列什么是栈,栈有什么特性?用C语言实现一个动态栈栈和程序运行时的栈区有什么区别?为什么将递归程序转化成循环时需要用到栈?什么是队列,队列有什么特性?栈和队列有什么区别?用C语言实现一个队列什么是栈,栈有什么特性?栈:一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO...

2019-05-25 18:26:03 233

原创 linux进程概念

linux进程概念1. 调研进程的调度算法.2. 调研task_struct结构体, 理解结构体中的各个字段的含义.3.使用代码模拟实现僵尸进程, 孤儿进程的场景.1.进程的调度算法(1)时间片轮转调度算法(RR) : 给每个进程固定的执行时间,根据进程到达的先后顺序让进程在单位时间片内执行,执行完成后便调度下一个进程执行,时间片轮转调度不考虑进程等待时间和执行时间,属于抢占式调度。优...

2019-05-24 16:30:33 172 1

原创 链表面试题

链表面试题删除链表中等于给定值 val 的所有节点。反转一个单链表。给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。输入一个链表,输出该链表中倒数第k个结点。将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于...

2019-05-23 12:51:18 180

原创 链表之带头双向循环链表的增删查改实现

带头双向循环链表直接上代码:注释即总结DList.h#pragma once#include<stdio.h>#include<assert.h>#include<malloc.h>#include<stdlib.h>typedef int DLDataType;typedef struct DNode{ DLDataType...

2019-05-21 23:45:07 227 2

原创 冒泡排序(C语言实现)

冒泡排序(C语言实现)直接上代码:(注意理解注释)#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>void my_swap(int* a, int* b)//交换的时候传地址(通过这两个地址去寻找对应变量){ //形参仅仅是实参的一份临时拷贝(如果不传地址的话就仅...

2019-05-21 17:24:23 214 1

原创 链表之单链表

1. 熟悉什么是链表,链表的分类?2. 熟悉链表带头结点和不带头结点的区别?3. 完成单链表的以下基本操作:typedef int SDataType; // 链表的节点 typedef struct SListNode { SDataType _data; struct SListNode* _pNext; }Node, *PNode; // 链表的结构,给一个头指针保...

2019-05-20 16:53:26 189 1

原创 linux常用工具

1 vim自行查找资料, 自行配置插件.2 自行查找资料, 调研除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.3 自行查找资料, 调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).4 为什么调试的时候需要编译选项中添加 -g. 同学们自行调研readelf命令.5 在Linux下实现进度条程序. 通过makefile进行编译...

2019-05-17 23:50:12 359 1

原创 线性结构之顺序表

1. 什么是线性结构?2. 线性结构中都包含什么内容?3. 什么是顺序表?顺序表的分类?4. 完成动态顺序表的以下操作:// 动态的顺序表typedef int DataType;typedef struct SeqList{DataType* _array;int _capacity; // 顺序表的总大小int _size; // 顺序表中有效元素的个数}SeqList...

2019-05-15 23:12:56 250

原创 时间复杂度和空间复杂度

时间复杂度和空间复杂度如何衡量一个算法的好坏?什么是时间复杂度?时间复杂度为什么不使用时间来衡量而使用基本语句的运行次数来衡量?时间复杂度的O渐进表示法时间复杂度的:最优、平均、最差情况,为什么时间复杂度看的是最差情况?如何求解:二分查找、递归求阶乘、递归斐波那契的时间复杂度?什么是空间复杂度?如何求空间复杂度? 普通函数&递归函数分析递归斐波那契数列的:时间、空间复...

2019-05-15 11:38:07 206 1

原创 linux作业1

- 进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.- 查找资料, 了解以下Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp- 查找资料, 了解以下重要命令. du, df, top, free, pstack, su, sudo...

2019-05-14 20:53:30 192

原创 理解 一级指针 二级指针 指针和数组 指针数组

理解一级指针二级指针指针和数组指针数组一级指针指针是编程语言中的一个对象,它的值直接指向存在电脑存储器另一个地方的值,由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”,意思是通过它能找到以它为地址的的内存单元指针是变量,用来存放地址的变量int main(){ int a = 10; int* p = &a;...

2019-05-01 13:11:38 301

原创 4-27 笔记总结(字符指针相关练习1; 字符指针相关练习2;字符指针相关练习3;模拟实现strlen,strcpy,strcat,strcmp)

4-27 笔记总结字符指针相关练习1int main(){ char a[] = { 1, 2, 3 }; char* p = a; printf("%d\n", *p++);//2改为1 先*p后++ 特别注意:后置++,先使用后++,也就是输出的是*p,而不是*p++ (就是说先别管++,执行完这一行的其他所有语句之后再无条件执行++) printf("%d\n", *++p...

2019-04-30 14:50:38 157

原创 练习多层循环结构

练习多层循环结构#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>int main(){ int i = 0; for (; i < 3; i++)//三个“三个正方形矩阵,没在同一水平线”(由循环最里层往外理解容易解读) { for (int j = 0; j...

2019-04-27 11:15:57 190

原创 调整数组使奇数全部都位于偶数前面

调整数组使奇数全部都位于偶数前面调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#define N 10...

2019-04-26 23:16:21 145

空空如也

空空如也

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

TA关注的人

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