并发系统数据细节-列队

列队数据结构图形

stC代码实现,PHP程序需要懂C代码这是基础哈

#include<stdio.h>

#include<stdlib.h>

#include<memory.h>

#define N 100 //定义常量N 为10

#define mytype int //定义常量mytype 替换int

struct MyQueue

{

mytype data[N];//数组存储队列

int front;//拉屎  定义队头

int rear;//吃东西 定义队尾

};

typedef struct MyQueue myQ;

/*

代码说明

在我们初始化队列的过程中呢?如果队头和队尾重回就表示队列为空,这里我们设置队头和队尾为0

在初始化内存空间为0

myQ *p 表示INT类型指针

*/

void init(myQ *p)

{

p->front = p->rear = 0;

memset(p->data,0,sizeof(mytype)*N);

}

/*

判断队列是否满,如果队尾等于N 表示空间已经满了,就返回1 如果没满就返回O

C 语言中貌似没有BOOL类型数据,就用1表示真O表示假。其实和PHP中的BOOL类型原理是一样的

*/

int isfull(myQ *p)

{

if(p->rear == N)

{

return 1;

}else

{

return 0;

}

}

/*

如果队头等于队尾就表示列队为空,就返回1 否则返回O

*/

int isempty(myQ *p)

{

if(p->front==p->rear)

{

return 1;

}else{

return 0;

}

}

/*

入队操作

判断队列是否满,如果满了就RETURN,如果没满就把要插入的数据添加到队尾,同时队尾指针往后移动一位

*/

void array_unshift(myQ *p,mytype insertdata)

{

if(isfull(p)==1)

{

return;

}else{

p->data[p->rear] = insertdata;

p->rear+=1;

}

}

/*

出队操作

判断如果队列为空就返回0

*/

void deQ(myQ *p)

{

if(isempty(p)==1)

{

return 0;

}

//因为队尾是不变的,用队头减去队尾就表示

int index = p->rear-p->front;

if(index==1)

{

p->rear = 0;

}else{

int i;

for(i=0;i<index-1;i++)

{

p->data[i] = p->data[i+1];

}

p->rear-=1;

}

}

mytype getlast(myQ *p)

{

if(isempty(p)==1)

{

return 0;

}

else{

mytype data = p->data[p->front];

int i;

int index = p->rear-p->front;

for(i=0;i<index-1;i++)

{

p->data[i] = p->data[i+1];

}

return data;

}

}

mytype array_pop(myQ *p)

{

if(isempty(p)==1)

{

return 0;

}else{

int i;

mytype index = p->rear-p->front;

for(i=index;i>=0;i--)

{

p->data[i] = p->data[i-1];

}

}

return p->data[p->rear];

}

void print(myQ *p)

{

printf("\n");

if(isempty(p)==1)

{

return 0;

}else{

int i;

for(i=p->front;i<p->rear;i++)

{

printf("%d",p->data[i]);

}

}

}

说明:以上代码通过测试可以使用,就不全面做注解了。这里模拟了两个PHP 的系统函数array_shift从头部读取和array_pop从尾部读取函数

使用队列时插入在一端进行而删除在另一端进行,就是一种先进先出的数据结构。在大多数的项目当中呢?队列多半是加上线程一同操作,下一章会讲解多线程与队列。帮助大家理解消息队列。请多多支持博文。重申一遍由于本人技术水平有限,文章有不足或者错误的地方,就多多指正

时间: 2024-11-05 22:52:44

并发系统数据细节-列队的相关文章

高并发系统数据幂等的技术尝试

原文地址:http://iamzhongyong.iteye.com/blog/2218572?utm_source=tuicool&utm_medium=referral 高并发系统数据幂等的技术尝试 前言 在系统开发过程中,经常遇到数据重复插入.重复更新.消息重发发送等等问题,因为应用系统的复杂逻辑以及网络交互存在的不确定性,会导致这一重复现象,但是有些逻辑是需要有幂等特性的,否则造成的后果会比较严重,例如订单重复创建,这时候带来的问题可是非同一般啊. 什么是系统的幂等性 幂等是数据中得一个

关于高并发系统数据幂等的常用技术解决方案

前言介绍 在系统开发过程中,经常遇到数据重复插入.重复更新.消息重发发送等等问题,因为应用系统的复杂逻辑以及网络交互存在的不确定性,会导致这一重复现象,但是有些逻辑是需要有幂等特性的,否则造成的后果会比较严重,例如订单重复创建,这时候带来的问题可是非同一般啊. 什么是系统的幂等性 幂等是数据中得一个概念,表示N次变换和1次变换的结果相同. 高并发的系统如何保证幂等性 查询API 查询的API,可以说是天然的幂等性,因为你查询一次和查询两次,对于系统来讲,没有任何数据的变更,所以,查询一次和查询多

大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)

课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台. 亮点一:真实环境还原,课程采用了VM环境重现大网站集群服务器环境,真实环境还原再现. 亮点二:基础实用,细节决定成败,课程内容在演练过程中重点介绍各种细节,保证初级人员快速入门及高级进阶. 亮点三:讲师丰富的海量平台运作经验 讲师tom5多

大数据高并发系统架构实战方案

大数据高并发系统架构实战方案(LVS负载均衡.Nginx.共享存储.海量数据.队列缓存 ) 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练.通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台,课程涉及内容包括:LVS实现负载均衡.Nginx高级配置实战.共享存储实现动态内容静态化加速实战.缓存平台安装配置使用.mysql主从复制安装配置实战等.课程二十.

大数据高并发系统架构实战方案视频教程

课程下载地址:http://pan.baidu.com/s/1dEyJiWL 密码:8bzy 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练.通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台. 01.大数据高并发架构实战案例分享-概述 02.Piranha安装快速搭建LVS负载均衡集群 03.LVS负载均衡DR模式安装调试介绍 04.LVS负载均衡深入

【转载】聊聊高并发系统之降级特技

原文:聊聊高并发系统之降级特技 在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流.之前已经有一些文章介绍过缓存和限流了.本文将详细聊聊降级.当访问量剧增.服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务.系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级.本文将介绍一些笔者在实际工作中遇到的或见到过的一些降级方案供大家参考. 降级的最终目的是保证核心服务可用,即使是有损的.而且有些服务是无法降级的(如加入购

大并发大数据量请求的处理方法

大并发大数据量请求一般会分为几种情况: 1.大量的用户同时对系统的不同功能页面进行查找,更新操作 2.大量的用户同时对系统的同一个页面,同一个表的大数据量进行查询操作 3.大量的用户同时对系统的同一个页面,同一个表进行更新操作 对于第一种情况一般处理方法如下: 一.对服务器层面的处理 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools > Advanced Settings Queue Length : 6

高性能高并发系统的稳定性保障

小码哥 于 1 月前 发表在 七嘴八舌 作者:肖飞,于2011年8月份加入京东,曾亲身参与到京东的应用性能监控.统一日志.流式计算.内存缓存.四层防攻击等一些基础技术平台的研发和搭建工作,经历了京东的技术系统从简单粗放向复杂精细化的演变过程.目前主要工作为多中心交易项目中的数据复制中间件JingoBUS的研发.平时也会开发一些公共的平台和工具,关注分布式系统的实现.程序设计.性能优化.开发语言等. 本文是2015年肖飞在内部分享的<高性能高并发系统的稳定性保障>PPT内容. 性能.并发.稳定性

atitit.恒朋无纸化彩票系统数据接入通信协议

深圳市恒朋科技开发有限公司 Shenzhen Helper Science & Technology Co., Ltd. 恒朋无纸化彩票系统数据接入通信协议 文档版本历史 内容目录 恒朋无纸化彩票系统数据接入通信协议............................................1 文档版本历史..................................................................2 内容目录..................