生产者、消费者问题的互斥锁解决方法 #include <QCoreApplication>#include <QThread>#include <QTime>#include <QMutex>#include <QDebug>class Work : public QObject{protected: enum {WORKMAXSIZE = 1024}; char work[WORKMAXSIZE]; int freeSize; int
进程的状态、切换、调度 进程的状态、切换、调度:进程的唯一表征——进程控制块:标识符:包括此进程的标识符,创建此进程的父进程标识符,用户标识符。用户可见寄存器。控制和状态寄存器:包括程序计数器、条件码(最近的运算的结果)、状态信息(中断允许/禁用标志,异常模式)。栈指针。调度和状态信息:进程状态,优先级,调度相关信息(取决于使用的调度算法),等待的事件标识。数据结构。进程间通信相关联的各种标记、信号和信息。进程特权。存储管理:分配给该进程的虚拟内存空间的段表和页表的指针。资源的所有权和使用情况。进程的六种状
操作系统由哪些组件构成 学习目标:计算机系统由哪些组件构成?计算机系统的组成:计算机硬件:处理器、存储器、I/O设备、系统总线。计算机软件: 操作系统、运行在操作系统上的应用软件。程序的执行流程:程序是由一组保存在存储器的指令组成的。程序的执行就是不停的取指执行的过程。指令的执行是流水线操作。就单条指令而言,一条指令先是地址被存放在PC寄存器,然后被取出存放到指令寄存器,最后被执行。但从总体上看,一条指令被存放在指令寄存器时,它的下一条指令的地址就被保存到了PC寄存器。这个保存地址,取指令存放到指令寄存器,执行
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
一个基于Qt的简单查找对话框 最近学习Qt时设计了一个简单的查找对话框,大致界面如下:当用户输入查找目标,按下查找按钮后,对话框会发射一个信号,信号中包含着查找目标,反向查找标志,匹配大小写标志等关键信息。代码如下://下面是QFindDialog的头文件#ifndef __QFINDDIALOG_H__#define __QFINDDIALOG_H__#include <QDialog>#include <QCheckBox>#include <QLabel>#include
HTTP权威指南学习笔记——第四章:连接管理 学习目标:HTTP是如何使用TCP连接的;TCP连接的时延、瓶颈以及存在的障碍;HTTP的优化,包括并行连接、keep-alive(持久连接)和管道化连接;管理连接时应该以及不应该做的事情。HTTP是如何使用TCP连接的:socket() 创建套接字bind() 向套接字赋一个本地端口号和接口connect() 创建一条连接本地套接字与远程主机及端口的连接listen() 标识一个套接字,使其可以合法接受连接accept() 等待某人建立一条到本地端口的连接read()
HTTP权威指南学习笔记——第三章:HTTP报文 学习目标:报文是如何流动的;HTTP报文的三个组成部分;请求和响应报文之间的区别;请求报文支持的各种功能;响应报文返回的各种状态码;各种各样的HTTP首部都是用来干什么的。报文是如何流动的:请求报文从客户端流向服务器,中间会经过若干代理。应答报文从服务器流向客户端,流动路径一般与请求报文完全相反。HTTP报文的三个组成部分:HTTP报文分为三个部分组成:起始行、包含属性的首部块、可选的主体部分。请求命令的报文格式:请求行: 请求方法|空格|URL|空格|协议版本|回车换行
HTTP权威指南学习笔记——第二章:URL和资源 学习目标:URL语法,以及各种URL组件的含义及其所做的工作;很多Web客户端都支持的URL快捷方式,包括相对URL和自动扩展URL;URL编码和字符规则;支持各种因特网信息系统的常见URL方案;URL的未来,包括URN。URL语法,以及各种URL组件的含义及其所做的工作:HTTP规范将更通用的URI作为资源标识符,但实际上使用的只是URI的子集URL。不同的协议使用的URL并不相同,但都建立在以下9部分构成的通用格式上:<scheme>://<user>:&l
HTTP简述 简介:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。一般使用TCP/IP通信协议来传递数据。HTTP工作原理: (1)客户与服务器建立连接;(2)客户向服务器提出请求;(3)服务器接受请求,并根据请求返回相应的文件作为应答;(4)客户与服务器关闭连接。注意事项:HTTP是无连接的:无连接的含义是限制每次连接只处理一个请求,处理完请求即断开连接。HTTP是媒体独立的:只要客户端和服务器约定
URL保留字符表 字符 意义% 保留作为编码字符的转义字符/ 保留作为路径组件中分隔路径段的定界符. 保留在路径组件中使用… 保留在路径组件中使用#保留作为分段定界符使用? 保留作为查询字符串定界符使用; 保留作为参数定界符使用: 保留作为方案、用户/密码,以及主机/端口组件的定界符使用$ + 保留@ & = 在某些方案中的上下文有特殊的含义{ } | \ ^ ~ [ ] ’ 由于各种传输Agent代理,比如各种网关的不
HTTP版本 HTTP采用主从(.)数字形式来表示版本。只增加扩展域的值或增加了不影响通讯行为的消息组件都不会导致版本数据的变化。当协议消息的主要解析算法没变,而消息语法及发送方的隐含功能增加了,将会导致从版本号增加。当协议中消息的格式变化了,主版本号也将发生改变。HTTP消息的版本由消息第一行中的HTTP版本域来表示。如果消息中的协议版本没有指定,接收方必须假设它是符合HTTP/0.9的简单标准。HTTP/1.0服务器必须:识别HTTP/0.9及HTTP/1.0请求命令中的请求队列(Request-Line
HTTP权威指南学习笔记——第一章:HTTP概述 学习目标:Web客户端与服务器是如何通信的;(表示Web内容的)资源来自何方;Web事务是怎样工作的;HTTP通信所使用的报文格式;底层TCP网络传输;不同的HTTP协议变体;Internet上安装的大量HTTP架构中的一部分。Web客户端与服务器是如何通信的:HTTP底层使用的是可靠的数据传输协议,保证数据在传输的过程中不会被损坏或产生混乱。Web内容存储在Web服务器上。由客户端向服务器发送HTTP请求,服务器会在HTTP响应中回送所请求的数据。(表示Web内容的)资源来自
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
HTTP大部分状态码 常见的HTTP状态码:200——请求成功301——资源被永久转移到其它URL404——请求的资源不存在500——内部服务器错误HTTP状态码分类:分类 分类描述1** 信息,服务器收到请求,需要请求者继续执行操作2** 成功,操作被成功接收并处理3** 重定向,需要进一步的操作以完成请求4** 客户端错误,请求包含语法错误或无法完成请求5** 服务器错误,服务器在处理请求的过程中发生了错误HTTP状态码列表:状态码 状态码英文名称 状态码描述100 Cont
HTTP请求方法 HTTP1.0定义的请求方法: GET: 请求指定的页面信息,并返回实体主体。 HEAD: 类似于GET请求,但不返回具体的内容,只获取报头。 POST: 向指定资源提交数据进行处理请求。数据被包含在请求体中,可能会导致新的资源的建立或已有资源的修改。 HTTP1.1定义的请求方法: PUT: 从客户端向服务器传送数据取代指定文档的内容。 PUTCH: 对PUT
Makefile常用函数 abspath函数$(abspath _names)abspath函数被用于将_names中的各路径名转换成绝对路径,并将转换后的结果返回。addprefix函数$(addprefix _prefix, _names)addprefix函数被用于给名字列表_names中的每一个名字增加前缀_prefix,并将增加了前缀的名字列表返回。addsuffix函数$(addsuffix _suffix, _names)addsuffix函数被用于给名字列表_names中的每一个名字增加后.
二叉树的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
通用树结构的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
使用队列实现栈——基于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,
使用栈实现队列——基于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