自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

街角的、回忆的博客

做最好的自己 hug myself!

  • 博客(20)
  • 收藏
  • 关注

转载 HTML页面加载和解析流程

最近在看前端相关知识,正好想起以前看过的一个web服务器的源码,就放到阿里云跑了一下,把写好的html代码放进去通过浏览器请求。一开始只是一个单独的html文件,后来有附带的css和js文件还有图片什么的,因为这个服务器一次是发送一个文件过去而不是整个文件夹,所以有些疑惑,就来查了一下。HTML页面加载和解析流程用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件。浏览器开始载入html代码,发现标签内有一个标签引用外部CSS文件。浏览器又发出CSS

2020-12-06 14:05:57 286

原创 scanf和gets的区别

关于scanf和gets函数scanf不能接收回车、空格或者TAB,但是gets可以读入空格,输入分隔符只有回车此外,两者对于缓冲区里的回车符的方式也是不同的。scanf在读取非空白符之前会忽略回车符(例如在输入前一直按回车,这时候的回车是被忽略的),读取之后遇到空白字符(空格、回车、TAB)会停止输入,将回车符留在缓冲区;gets只要一遇到回车就输入结束,并把回车从缓冲区里面移走。示例1:根据示例,可以看出直接跳过gets,最后打印可以看出gets里的a是个空白符。因为前面scanf接收输入时

2020-05-19 10:52:17 911

原创 linux多线程编程:创建和取消

线程线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。进程——资源分配的最小单位,线程——程序执行的最小单位"进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程...

2020-04-10 12:21:53 158

原创 排序算法:冒泡排序

冒泡排序思路:对于给定的n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换其位置,进行一轮比较和交换位置后,n个记录中的最大记录将位于第n位;然后对前(n - 1)个记录进行第二轮比较;重复该过程直到进行比较的记录只剩下一个为止。图示:代码:#include <stdio.h>void BubbleSort(int *a, int ...

2020-03-26 15:23:38 130

原创 排序算法:希尔排序

希尔排序基本思路首先将待排序的元素分为多个子序列,使得每个子序的元素个数相对较少,对各个子序分别进行直接插入排序,待整个待排序序列“基本有序后”,再对所有元素进行一次直接插入排序。图示希尔排序实际是基于直接插入排序的,所以在学习希尔排序之前要先掌握直接插入排序。在刚接触希尔排序的时候认知不要有误区:图示的对于序列的分组方式以及步长的取定不是固定的,一般的做法是不断取步长的一半。前面的两部...

2020-03-26 14:50:28 109

原创 排序算法:直接插入排序

直接插入排序基本思路:对于给定的一组记录,初始时假定第一个数是有序序列,其余的按照无序序列;接着从第二个数开始,按照大小插入到之前的有序序列中,直到最后一个数插入到有序序列为止。图示:先假定29这个数是个有序序列,从18往后都是无序的。这样先用18与29比较(18与有序序列的最后一个数比较),比29小,则先让29后移一位,移到18的位置,再把18移到29的位置,这样前两个就排序完毕。我...

2020-03-25 15:41:42 780

原创 《C陷阱与缺陷》记录

(按照书中的章节顺序)词法“缺陷”1、词法分析中的贪心算法:编辑器在读程序时是从左往右一个一个读入字符,如果该字符有可能组成一个符号则继续读下一个判断两个字符能否组成一个符号。 2、整形常量:如果一个整形常量的第一个字符是0,常量被视为八进制,有时为了格式对其在十进制开头写成0,会把十进制数读成八进制数。 3、字符和字符串: 单引号和双引号。单引号引起的一个字符实际代表一个整数,数值...

2020-03-24 12:34:25 119

原创 虚拟内存

虚拟内存技术首先,虚拟地址空间的大小是由处理器的位数决定的。比如32位处理器下的虚拟地址空间大小为4G(2^32=4G),32为地址总线的条数。一般4G中并不是所有空间都可以让用户进程读写或者申请使用。用户进程可以使用的虚拟空间为03G。所有用户的34G的空间映像都是一样的,这块空间映像直接对应物理地址,属于内核态空间,用户不可访问,用于运行一些系统调度的进程。在系统执行或者开启一个进程的时候...

2019-11-07 18:46:10 141

原创 linux 文件编程

1. Linux系统调用及用户编程接口(API)linux中为了保护内核空间,将程序的运行空间分为内核空间和用户空间。我们当然是不希望操作系统的数据被随意的篡改和访问,有可能造成十分严重的后果,所以操作系统对内存做了区分,核心态(0),服务态(1,2),用户态(3),数值越小,级别越高,底级别进程无权访问高级别的内存区域,因此隔离了系统程序和用户程序,提高了操作系统的安全性。系统调用:是用...

2019-08-14 15:45:05 162

转载 链表及其相关函数(理解总结)

链表代码链接int InitLink(pNode *h)函数功能:链表初始化函数参数:头指针的地址函数返回值:成功返回success,失败返回failure链表初始化即为给头结点分配空间并初始化指针域。在定义头指针后它还是个野指针,给它分配空间就会得到一个新地址,所以需要传指针的指针来进行指针值修改。int InsertLink(pNode h, int p, int num)...

2019-08-04 19:54:20 581

原创 链表及其相关函数(理解总结)

链表代码链接int InitLink(pNode *h)函数功能:链表初始化函数参数:头指针的地址函数返回值:成功返回success,失败返回failure链表初始化即为给头结点分配空间并初始化指针域。在定义头指针后它还是个野指针,给它分配空间就会得到一个新地址,所以需要传指针的指针来进行指针值修改。int InsertLink(pNode h, int p, int num)...

2019-08-04 19:50:18 601 1

原创 链表及其相关函数(代码)

LinkList.h#ifndef LINKLIST_H#define LINKLIST_H#include <stdio.h>#include <stdlib.h>#include <time.h>#define SUCCESS 10000#define FAILURE 10001typedef int ElemType;...

2019-08-04 19:44:31 200

原创 linux c总结 指针的理解

指针、指针类型、指针指向的类型指针,也是一种变量类型,存放的数值是一个地址,指针指向的就是这个地址中存放的信息。虽然可以打印出来数值,但和普通整型数值的属性是不同的。指针有指针的类型和指针所指向的类型的区别,只有同类型指针量的值才能进行操作。如int *p 、 int **q 、 int a[5][5]p是一个一级指针,q是二级指针。对与数组,a是一个二级地址,a[0]是一个一级地址,不...

2019-08-01 21:10:21 188

原创 linuxc练习 图书管理系统总结

图书管理系统代码用结构体指针数组存放各个结构体变量的首地址,然后通过结构体指针指向它内部的成员。注意,每一个结构体变量的地址都是初始化的0,每次录入信息都要用malloc函数为结构体变量分配地址。还书模块:先输入学生姓名,查看是否借过书,再要求输入书名,看输入书名是否存在,是否正确。 若都正确,则把这本书的结构体变量中的可接数量加一,然后再把学生的已经借的这本书记录删除。修改模块...

2019-07-31 17:31:53 517

原创 linux c练习 图书管理系统

#include <stdio.h>#include <string.h>#include <stdlib.h>#define BOOKSIZE 2048#define STUSIZE 1024int gBookIndex = 0; //用于书本数组的下标int gStuIndex = 0; //用于学生数组的下标str...

2019-07-29 19:50:27 734

原创 linux c练习 (纠错总结) 编写一个C函数,将一句话,如”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构

初始代码(错误)#include<stdio.h>#include<string.h>main(){ char str[100]={0}; //存放字符串 char *a[32]; /指针数组,用于存放单词的首地址 printf("please input a sentence:\n:"); scanf("%s",str...

2019-07-25 13:33:06 320 1

原创 linux c练习 设计一个洗牌发牌的程序

#include<stdlib.h>#include<time.h> //这两个头文件与随机函数及其设置有关#include <stdio.h>int main (){ int i, n; int count[52]={0}; //数组初始化 srand((unsigned int)time(NULL)); ...

2019-07-23 23:08:12 235

原创 linux c 学习总结2

在32位平台分为有符号型与无符号型。有符号型:short 在内存中占两个字节,范围为-215~(215-1)int 在内存中占四个字节,范围为-231~(231-1)long在内存中占四个字节,范围为-231~231-1无符号型:最高位不表示符号位unsigned short 在内存中占两个字节,范围为0~2^16-1unsigned int 在内存中占四个字节,范围为0~2^32...

2019-07-23 16:52:42 434

原创 linux c练习 有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的哪位. 提示:用数组完成

#include<stdio.h>#define N 5main(){ int a[N]={0}; int i=0,count=0,res=0; //count用于记每个人所报的数,主要关注报3的人;res用于记已经报了3的人,即记下退出循环报数的人 while(1) { if(a[i]!=3) //判断是否为3,若是,跳过 { co...

2019-07-23 15:32:08 1025

原创 linux小白学习总结1

1.vim编辑器基本语法:vim hello.c如果此文件存在,直接进入;若不存在,先创建再进入。vim有三个模式:命令模式、插入模式、低行模式。命令模式:打开文件后就是命令模式 按shift+z+z退出。在命令模式中的功能键:x:删除单个字符nx:删除自光标向下n行dd:剪切一行ndd:剪切自光标向下n行yy:复制nyy:复制自光标向下n行p:粘贴u: 撤销上一...

2019-07-19 22:31:44 181

空空如也

空空如也

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

TA关注的人

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