- 博客(60)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 基于C语言文件操作和链表操作完成的文件加密系统
下面是文件加密系统的界面:该文件加密系统共有加密文件、解密文件、查询某文件是否被加密、显示所有的加密文件信息4个功能。大致工作流程:程序启动后,首先打开固定的已加密文件信息保存文件,读取文件信息存在到链表中。然后等待用户输入命令。如果用户输入1:程序请求输入待加密文件文件名,如果用户输入错误的文件名,程序显示提示信息后返回主界面,如果用户输入正确的文件名,打开文件读取内容到缓存进行逐字节加密,加密完成写入到一个临时文件,等待所有的文件内容均被读出加密后再把临时文件内容写回到源文件。加密操作完成,将
2020-07-30 15:37:09
277
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 使用Qt开发的计算器
最近学习了Qt的许多知识,在学习的过程中开发了这个window的计算器软件。界面设计如下:下面是这个计算器的源码链接:链接: https://pan.baidu.com/s/1FlBHxJoHAChMU2aljsZqNQ 提取码: gfcd下面是这个计算器的编译后的程序:链接: https://pan.baidu.com/s/1xv4nSpdvq006RP6TqSIBXg 提取码: 2zqk...
2020-05-11 17:41:21
614
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 基于C语言文件操作的学生信息管理系统
基于C语言文件操作完成的学生信息管理系统student.h#ifndef STUDENT_H#define STUDENT_H#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>#include "tool.h"#include ...
2020-02-06 23:13:25
873
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 基于遗传算法求解多项式最值
#include <stdio.h>#include <math.h>#include <stdlib.h>#include <time.h> #define SUM 20 //种群数目#define MAXloop 400 //最大循环次数#define error 0.00001 //若...
2019-12-15 18:41:47
2221
原创 生产者、消费者问题的互斥锁解决方法
#include <QCoreApplication>#include <QThread>#include <QTime>#include <QMutex>#include <QDebug>class Work : public QObject{protected: enum {WORKMAXSIZE = 1024}; char work[WORKMAXSIZE]; int freeSize; int
2020-10-22 16:58:09
339
原创 进程的状态、切换、调度
进程的状态、切换、调度:进程的唯一表征——进程控制块:标识符:包括此进程的标识符,创建此进程的父进程标识符,用户标识符。用户可见寄存器。控制和状态寄存器:包括程序计数器、条件码(最近的运算的结果)、状态信息(中断允许/禁用标志,异常模式)。栈指针。调度和状态信息:进程状态,优先级,调度相关信息(取决于使用的调度算法),等待的事件标识。数据结构。进程间通信相关联的各种标记、信号和信息。进程特权。存储管理:分配给该进程的虚拟内存空间的段表和页表的指针。资源的所有权和使用情况。进程的六种状
2020-10-19 18:05:37
919
原创 操作系统由哪些组件构成
学习目标:计算机系统由哪些组件构成?计算机系统的组成:计算机硬件:处理器、存储器、I/O设备、系统总线。计算机软件: 操作系统、运行在操作系统上的应用软件。程序的执行流程:程序是由一组保存在存储器的指令组成的。程序的执行就是不停的取指执行的过程。指令的执行是流水线操作。就单条指令而言,一条指令先是地址被存放在PC寄存器,然后被取出存放到指令寄存器,最后被执行。但从总体上看,一条指令被存放在指令寄存器时,它的下一条指令的地址就被保存到了PC寄存器。这个保存地址,取指令存放到指令寄存器,执行
2020-10-19 18:03:41
7701
原创 Qt实现扩展对话框
最近在看C++ GUI Qt编程这个书,按照书中第2章的描述,实现了一个扩展对话框。未展开时的界面:展开后的界面:实现的源码如下:#ifndef __SORTDIALOG_H__#define __SORTDIALOG_H__#include <QDialog>#include "ui_SortDialog.h"class SortDialog : public QDialog, public Ui::SortDialog{ Q_OBJECT protected
2020-10-10 16:25:23
197
原创 一个基于Qt的简单查找对话框
最近学习Qt时设计了一个简单的查找对话框,大致界面如下:当用户输入查找目标,按下查找按钮后,对话框会发射一个信号,信号中包含着查找目标,反向查找标志,匹配大小写标志等关键信息。代码如下://下面是QFindDialog的头文件#ifndef __QFINDDIALOG_H__#define __QFINDDIALOG_H__#include <QDialog>#include <QCheckBox>#include <QLabel>#include
2020-10-09 17:16:43
481
原创 HTTP权威指南学习笔记——第四章:连接管理
学习目标:HTTP是如何使用TCP连接的;TCP连接的时延、瓶颈以及存在的障碍;HTTP的优化,包括并行连接、keep-alive(持久连接)和管道化连接;管理连接时应该以及不应该做的事情。HTTP是如何使用TCP连接的:socket() 创建套接字bind() 向套接字赋一个本地端口号和接口connect() 创建一条连接本地套接字与远程主机及端口的连接listen() 标识一个套接字,使其可以合法接受连接accept() 等待某人建立一条到本地端口的连接read()
2020-09-29 17:10:22
96
原创 HTTP权威指南学习笔记——第三章:HTTP报文
学习目标:报文是如何流动的;HTTP报文的三个组成部分;请求和响应报文之间的区别;请求报文支持的各种功能;响应报文返回的各种状态码;各种各样的HTTP首部都是用来干什么的。报文是如何流动的:请求报文从客户端流向服务器,中间会经过若干代理。应答报文从服务器流向客户端,流动路径一般与请求报文完全相反。HTTP报文的三个组成部分:HTTP报文分为三个部分组成:起始行、包含属性的首部块、可选的主体部分。请求命令的报文格式:请求行: 请求方法|空格|URL|空格|协议版本|回车换行
2020-09-29 11:25:31
167
原创 HTTP权威指南学习笔记——第二章:URL和资源
学习目标:URL语法,以及各种URL组件的含义及其所做的工作;很多Web客户端都支持的URL快捷方式,包括相对URL和自动扩展URL;URL编码和字符规则;支持各种因特网信息系统的常见URL方案;URL的未来,包括URN。URL语法,以及各种URL组件的含义及其所做的工作:HTTP规范将更通用的URI作为资源标识符,但实际上使用的只是URI的子集URL。不同的协议使用的URL并不相同,但都建立在以下9部分构成的通用格式上:<scheme>://<user>:&l
2020-09-28 14:29:08
150
原创 HTTP简述
简介:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。一般使用TCP/IP通信协议来传递数据。HTTP工作原理: (1)客户与服务器建立连接;(2)客户向服务器提出请求;(3)服务器接受请求,并根据请求返回相应的文件作为应答;(4)客户与服务器关闭连接。注意事项:HTTP是无连接的:无连接的含义是限制每次连接只处理一个请求,处理完请求即断开连接。HTTP是媒体独立的:只要客户端和服务器约定
2020-09-28 10:59:41
257
原创 URL保留字符表
字符 意义% 保留作为编码字符的转义字符/ 保留作为路径组件中分隔路径段的定界符. 保留在路径组件中使用… 保留在路径组件中使用#保留作为分段定界符使用? 保留作为查询字符串定界符使用; 保留作为参数定界符使用: 保留作为方案、用户/密码,以及主机/端口组件的定界符使用$ + 保留@ & = 在某些方案中的上下文有特殊的含义{ } | \ ^ ~ [ ] ’ 由于各种传输Agent代理,比如各种网关的不
2020-09-28 10:58:40
1244
原创 HTTP版本
HTTP采用主从(.)数字形式来表示版本。只增加扩展域的值或增加了不影响通讯行为的消息组件都不会导致版本数据的变化。当协议消息的主要解析算法没变,而消息语法及发送方的隐含功能增加了,将会导致从版本号增加。当协议中消息的格式变化了,主版本号也将发生改变。HTTP消息的版本由消息第一行中的HTTP版本域来表示。如果消息中的协议版本没有指定,接收方必须假设它是符合HTTP/0.9的简单标准。HTTP/1.0服务器必须:识别HTTP/0.9及HTTP/1.0请求命令中的请求队列(Request-Line
2020-09-28 10:56:50
133
原创 HTTP权威指南学习笔记——第一章:HTTP概述
学习目标:Web客户端与服务器是如何通信的;(表示Web内容的)资源来自何方;Web事务是怎样工作的;HTTP通信所使用的报文格式;底层TCP网络传输;不同的HTTP协议变体;Internet上安装的大量HTTP架构中的一部分。Web客户端与服务器是如何通信的:HTTP底层使用的是可靠的数据传输协议,保证数据在传输的过程中不会被损坏或产生混乱。Web内容存储在Web服务器上。由客户端向服务器发送HTTP请求,服务器会在HTTP响应中回送所请求的数据。(表示Web内容的)资源来自
2020-09-28 10:51:40
107
原创 HTTP大部分MIME类型
MIME type Extensionsapplication/andrew-inset ezapplication/applixware awapplication/atom+xml atomapplication/atomcat+xml atomcatapplication/atomsvc+xml atomsvcapplication/ccxml+xml ccxmlapplication/cdmi-capability cdmiaapplicat
2020-09-28 10:48:20
2352
1
原创 HTTP大部分状态码
常见的HTTP状态码:200——请求成功301——资源被永久转移到其它URL404——请求的资源不存在500——内部服务器错误HTTP状态码分类:分类 分类描述1** 信息,服务器收到请求,需要请求者继续执行操作2** 成功,操作被成功接收并处理3** 重定向,需要进一步的操作以完成请求4** 客户端错误,请求包含语法错误或无法完成请求5** 服务器错误,服务器在处理请求的过程中发生了错误HTTP状态码列表:状态码 状态码英文名称 状态码描述100 Cont
2020-09-28 10:32:32
91
原创 HTTP请求方法
HTTP1.0定义的请求方法: GET: 请求指定的页面信息,并返回实体主体。 HEAD: 类似于GET请求,但不返回具体的内容,只获取报头。 POST: 向指定资源提交数据进行处理请求。数据被包含在请求体中,可能会导致新的资源的建立或已有资源的修改。 HTTP1.1定义的请求方法: PUT: 从客户端向服务器传送数据取代指定文档的内容。 PUTCH: 对PUT
2020-09-28 10:29:12
238
原创 Makefile常用函数
abspath函数$(abspath _names)abspath函数被用于将_names中的各路径名转换成绝对路径,并将转换后的结果返回。addprefix函数$(addprefix _prefix, _names)addprefix函数被用于给名字列表_names中的每一个名字增加前缀_prefix,并将增加了前缀的名字列表返回。addsuffix函数$(addsuffix _suffix, _names)addsuffix函数被用于给名字列表_names中的每一个名字增加后.
2020-08-13 15:54:59
401
原创 二叉树的C语言实现
今天使用C语言实现通用树结构。下面是Main.c文件:#include <stdio.h>#include "GTree.h"int main(){ GTree *tree = GTreeCreate(); if(tree != NULL) { LinkList* list = NULL; GTreeNode *node = NULL; GTreeInsertValue(tree, 1, node); node = GTreeFindValue(tre
2020-08-13 11:30:20
513
原创 通用树结构的C语言实现
今天使用C语言实现通用树结构。下面是Main.c文件:#include <stdio.h>#include "GTree.h"int main(){ GTree *tree = GTreeCreate(); if(tree != NULL) { LinkList* list = NULL; GTreeNode *node = NULL; GTreeInsertValue(tree, 1, node); node = GTreeFindValue(tre
2020-08-13 11:20:28
596
原创 使用队列实现栈——基于C语言
今天使用之前实现的队列实现栈。下面是Main.c文件;#include "QueueToStack.h"#include <stdio.h>int main(){ QueueToStack* stack = QueueToStackCreate(); if(stack != NULL) { int i, len = -1, data = -1; for(i = 0; i < 100; i++) { QueueToStackPush(stack,
2020-08-13 10:06:28
411
原创 使用栈实现队列——基于C语言
今天使用之前实现的栈实现队列。下面是Main.c文件:#include "StackToQueue.h"#include <stdio.h>int main(){ StackToQueue* queue = StackToQueueCreate(); if(queue != NULL) { int i, len = -1, data = -1; for(i = 0; i < 100; i++) { StackToQueueEnqueue(que
2020-08-13 09:57:40
245
原创 动态栈——基于C语言
使用之前实现了的链表实现了数据结构中的动态栈。下面是Main.c文件:#include "DynamicStack.h"#include <stdio.h>int main(){ DynamicStack* stack = DynamicStackCreate(); if(stack != NULL) { int i, len = -1; for(i = 0; i < 10; i++) { DynamicStackPush(stack, i);
2020-08-13 09:47:13
131
原创 动态队列——基于C语言
使用之前实现了的链表实现了数据结构中的动态队列下面是Main.c文件:#include "DynamicQueue.h"#include <stdio.h>int main(){ DynamicQueue* queue = DynamicQueueCreate(); if(queue != NULL) { int i, len = -1, data = -1; for(i = 0; i < 100; i++) { DynamicQueueEnq
2020-08-13 09:37:32
473
原创 静态栈——基于C语言
最近复习了C语言的相关知识,实现了静态栈。下面是Main.c文件:#include "StaticStack.h"#include <stdio.h>int main(){ StaticStack* stack = StaticStackCreate(); if(stack != NULL) { int i, len = -1, data = -1; for(i = 0; i < StaticStackCapacity(stack); i++)
2020-08-12 15:16:38
301
原创 静态队列——基于C语言
最近复习了C语言的相关知识,实现了数据结构中的静态队列。下面是Main.c文件:#include "StaticQueue.h"#include <stdio.h>int main(){ StaticQueue* queue = StaticQueueCreate(); if(queue != NULL) { int i, len = -1, data = -1; for(i = 0; i < StaticQueueCapacity(queue)
2020-08-12 15:01:35
216
原创 双向循环链表——基于C语言
最近复习了C语言的相关知识,实现了数据结构中的双向循环链表。下面是Main.c文件:#include "DualClcLinkList.h"#include <stdio.h>int main(
2020-08-12 14:15:28
198
原创 双向链表——基于C语言
最近复习了C语言的相关知识,实现了数据结构里面的双向链表。下面是Main.c文件:#include "DualLinkList.h"#include <stdio.h>int main(){ DualLinkList *list = DualLinkListCreate(); if(list != NULL) { int i = 0; printf("此时双向链表长度为:%d\n", DualLinkListLength(list));
2020-08-12 10:59:03
107
原创 链表——基于C语言
最近复习了C语言的一些知识,使用C语言实现了数据结构中的链表。下面是Main.c文件:#include "LinkList.h"#include <stdio.h>int main(){ LinkList *list = LinkListCreate(); if(list != NULL) { int i; printf("len = %d\n\n", LinkListLength(list)); for(i = 0; i < 10;
2020-08-11 18:01:56
128
原创 函数的本质与设计原则
函数的本质函数的本质是一段可以重复使用的代码,这段代码被提前编写好了,放到了指定的文件中,使用时直接调取即可。面向过程是一种以过程为中心的编程思想,它首先将复杂的问题分解为一个个容易解决的问题,分解过后的问题可以按照步骤一步步完成,函数是面向过程在C语言中的体现,解决问题的每个步骤可以用函数来实现。声明的意义在于告诉编译器程序单元的存在,定义则明确指示程序单元的意义。C语言可通过extern进行程序单元的声明。函数参数函数参数本质上是与局部变量相同的栈上变量,初始值是函数调用时的实参值。函数调
2020-07-31 11:07:44
518
原创 指针与数组与函数指针
指针的本质分析变量的本质是一段存储空间的别名,指针的本质是一种特殊类型的变量,这种变量的存储空间中存储的是另一个变量的地址。*号的意义:*号代表所申明的变量是指针;*号表示取指针所指向内存空间的值。该使用传值调用还是传址调用:当函数内部需要改变实参的值,则需要使用传址调用;如果函数需要传入的参数类型复杂,体积巨大,又不希望参数在函数体内部被改变,应该使用const指针。const指针:const datatype* p; //p可以被改变,*p不能改变dataty
2020-07-30 10:17:21
209
原创 C语言宏的使用分析
#define#define定义的宏可以出现在程序的任何位置#define定义之后的代码都可以使用这个宏#define定义的宏常量本质为字面量#define表达式不能出现递归定义C语言中的内置宏ANSI C 规定了以下几个预定义宏,它们在各个编译器下都可以使用:LINE:表示当前源代码的行号;FILE:表示当前源文件的名称;DATE:表示当前的编译日期;TIME:表示当前的编译时间;STDC:当要求程序严格遵循ANSI C标准时该标识被赋值为1;__cplusplus:当编写C++程
2020-07-29 13:47:11
232
原创 交换两个元素值的三种实现方法
//第一种 int fun(a,b){ a=a^b; b=a^b; a=a^b;} //第二种int fun(a,b){ int c=a; a=b; b=c;}//第三种int fun(a,b){ a=a+b; //当a和b都比较大的时候,可能产生数据溢出。 b=a-b; a=a-b;}
2020-07-29 10:35:13
881
原创 goto、void、const、volatile、struct、union、enum、sizeof的一些使用注意事项
gotogoto绝对禁止使用void如果函数没有返回值,应该将其声明为void,如果函数没有参数,应该将其声明为void,void不能定义变量和数组,但能够定义指针。void指针的意义:void指针作为左值时用于“接受”任意类型的指针,void*指针作为右值使用时需要强制类型转换。void*指针接受一个其他类型的指针后自身的类型不会转变。constconst定义一个只读变量。const不能出现在赋值符号的左边,但可以在定义的时候初始化。const只在编译期有用,在运行期无用(我们可以在运行
2020-07-29 10:28:15
249
原创 使用循环与分支结构的一些注意事项
if语句用于根据条件选择执行语句,else不能独立存在且总是跟它最近的if相匹配if语句零值比较的注意点:变量与0值进行比较的时候,0值应该出现在等式的左边;float型变量不能直接与0值进行比较,需要定义精度。switch语句对应单个条件多个分支的情形,case语句分支必须要有break,否则会导致分支重叠,default语句必须要加上,以处理特殊情况case语句中的值必须是整型,字符型,并且只能是常量。break表示终止循环的执行,可跳出一次for循环、while循环、do{..
2020-07-28 11:31:03
611
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人