自己做的网站邮箱更改密码程序为什么总出错兰州网络推广做啥的

news/2025/9/22 22:54:10/文章来源:
自己做的网站邮箱更改密码程序为什么总出错,兰州网络推广做啥的,郑州膏药网站建设,家居网站建设基本流程目录 一、事件 1、文件事件 读事件 写事件 2、 时间事件 3、时间事件应用实例:服务器常规操作 4、事件的执行与调度 5、事件是否有重要性级别或优先级#xff1f;需要立即处理还是可以延迟处理#xff1f; 6、事件的类型是什么#xff1f;是针对键的操作#xff0…目录 一、事件 1、文件事件 读事件 写事件 2、 时间事件 3、时间事件应用实例:服务器常规操作 4、事件的执行与调度 5、事件是否有重要性级别或优先级需要立即处理还是可以延迟处理 6、事件的类型是什么是针对键的操作还是集群的状态变化 二、小结 一、事件 事件是 Redis 服务器的核心它处理两项重要的任务: 处理文件事件:在多个客户端中实现多路复用接受它们发来的命令请求并将命令的执行结果返回给客户端。 时间事件:实现服务器常规操作(server cron job)。 本文以下内容就来介绍这两种事件以及它们背后的运作模式。 1、文件事件 Redis 服务器通过在多个客户端之间进行多路复用从而实现高效的命令请求处理:多个客户 端通过套接字连接到 Redis 服务器中但只有在套接字可以无阻塞地进行读或者写时服务器 才会和这些客户端进行交互。 Redis 将这类因为对套接字进行多路复用而产生的事件称为文件事件(file event)文件事件可 以分为读事件和写事件两类。 读事件 读事件标志着客户端命令请求的发送状态。 当一个新的客户端连接到服务器时服务器会给为该客户端绑定读事件直到客户端断开连接 之后这个读事件才会被移除。读事件在整个网络连接的生命期内都会在等待和就绪两种状态之间切换: • 当客户端只是连接到服务器但并没有向服务器发送命令时该客户端的读事件就处于 等待状态。 • 当客户端给服务器发送命令请求并且请求已到达时(相应的套接字可以无阻塞地执行读 操作)该客户端的读事件处于就绪状态。作为例子下图展示了三个已连接到服务器、但并没有发送命令的客户端: 这三个客户端的状态如下表: 之后当客户端 X 向服务器发送命令请求并且命令请求已到达时客户端 X 的读事件状态 变为就绪: 这时三个客户端的状态如下表(只有客户端 X 的状态被更新了): 当事件处理器被执行时就绪的文件事件会被识别到相应的命令请求会被发送到命令执行 器并对命令进行求值。 写事件 写事件标志着客户端对命令结果的接收状态。 和客户端自始至终都关联着读事件不同服务器只会在有命令结果要传回给客户端时才会为 客户端关联写事件并且在命令结果传送完毕之后客户端和写事件的关联就会被移除。 一个写事件会在两种状态之间切换: • 当服务器有命令结果需要返回给客户端但客户端还未能执行无阻塞写那么写事件处 于等待状态。 • 当服务器有命令结果需要返回给客户端并且客户端可以进行无阻塞写那么写事件处 于就绪状态。 当客户端向服务器发送命令请求并且请求被接受并执行之后服务器就需要将保存在缓存内 的命令执行结果返回给客户端这时服务器就会为客户端关联写事件。 作为例子下图展示了三个连接到服务器的客户端其中服务器正等待客户端 X 变得可写从 而将命令的执行结果返回给它: 此时三个客户端的事件状态分别如下表: 当客户端 X 的套接字可以进行无阻塞写操作时写事件就绪服务器将保存在缓存内的命令执 行结果返回给客户端: 此时三个客户端的事件状态分别如下表(只有客户端 X 的状态被更新了): 当命令执行结果被传送回客户端之后客户端和写事件之间的关联会被解除(只剩下读事件) 至此返回命令执行结果的动作执行完毕:  Note: 同时关联写事件和读事件 前面提到过读事件只有在客户端断开和服务器的连接时才会被移除。 这也就是说当客户端关联写事件的时候实际上它在同时关联读/写两种事件。 因为在同一次文件事件处理器的调用中单个客户端只能执行其中一种事件(要么读要么写 但不能又读又写)当出现读事件和写事件同时就绪的情况时事件处理器优先处理读事件。 这也就是说当服务器有命令结果要返回客户端而客户端又有新命令请求进入时服务器先 处理新命令请求。 2、 时间事件 时间事件记录着那些要在指定时间点运行的事件多个时间事件以无序链表的形式保存在服务器状态中。 每个时间事件主要由三个属性组成: • when :以毫秒格式的 UNIX 时间戳为单位记录了应该在什么时间点执行事件处理函数。 • timeProc :事件处理函数。 • next 指向下一个时间事件形成链表。 根据 timeProc 函数的返回值可以将时间事件划分为两类: 如果事件处理函数返回ae.h/AE_NOMORE那么这个事件为单次执行事件:该事件会在指 定的时间被处理一次之后该事件就会被删除不再执行。 如果事件处理函数返回一个非AE_NOMORE的整数值那么这个事件为循环执行事件:该 事件会在指定的时间被处理之后它会按照事件处理函数的返回值更新事件的 when 属 性让这个事件在之后的某个时间点再次运行并以这种方式一直更新并运行下去。可以用伪代码来表示这两种事件的处理方式: def handle_time_event(server, time_event):# 执行事件处理器并获取返回值# 返回值可以是 AE_NOMORE 或者一个表示毫秒数的非符整数值 retval time_event.timeProc()if retval AE_NOMORE:# 如果返回 AE_NOMORE 那么将事件从链表中删除不再执行server.time_event_linked_list.delete(time_event) else:# 否则更新事件的 when 属性# 让它在当前时间之后的 retval 毫秒之后再次运行 time_event.when unix_ts_in_ms() retval 当时间事件处理器被执行时它遍历所有链表中的时间事件检查它们的到达事件(when 属 性)并执行其中的已到达事件: def process_time_event(server): # 遍历时间事件链表for time_event in server.time_event_linked_list: # 检查事件是否已经到达if time_event.when unix_ts_in_ms():# 处理已到达事件 handle_time_event(server, time_event) Note: 无序链表并不影响时间事件处理器的性能 在目前的版本中正常模式下的 Redis 只带有 serverCron 一个时间事件而在 benchmark 模式下Redis 也只使用两个时间事件。 在这种情况下程序几乎是将无序链表退化成一个指针来使用所以使用无序链表来保存时间事件并不影响事件处理器的性能。 3、时间事件应用实例:服务器常规操作 对于持续运行的服务器来说服务器需要定期对自身的资源和状态进行必要的检查和整理从而让服务器维持在一个健康稳定的状态这类操作被统称为常规操作(cron job)。 在 Redis 中常规操作由 redis.c/serverCron 实现它主要执行以下操作: • 更新服务器的各类统计信息比如时间、内存占用、数据库占用情况等。 • 清理数据库中的过期键值对。 • 对不合理的数据库进行大小调整。 • 关闭和清理连接失效的客户端。 • 尝试进行 AOF 或 RDB 持久化操作。 • 如果服务器是主节点的话对附属节点进行定期同步。 • 如果处于集群模式的话对集群进行定期同步和连接测试。 Redis 将 serverCron 作为时间事件来运行从而确保它每隔一段时间就会自动运行一次又 因为 serverCron 需要在 Redis 服务器运行期间一直定期运行所以它是一个循环时间事件: serverCron 会一直定期执行直到服务器关闭为止。 在 Redis 2.6 版本中程序规定 serverCron 每隔 10 毫秒就会被运行一次。从 Redis 2.8 开始 10 毫秒是 serverCron 运行的默认间隔而具体的间隔可以由用户自己调整。 4、事件的执行与调度 既然 Redis 里面既有文件事件又有时间事件那么如何调度这两种事件就成了一个关键问题。 简单地说Redis 里面的两种事件呈合作关系它们之间包含以下三种属性: 一种事件会等待另一种事件执行完毕之后才开始执行事件之间不会出现抢占。 事件处理器先处理文件事件(处理命令请求)再执行时间事件(调用serverCron) 文件事件的等待时间(类poll函数的最大阻塞时间)由距离到达时间最短的时间事件 决定。 这些属性表明实际处理时间事件的时间通常会比时间事件所预定的时间要晚至于延迟的 时间有多长取决于时间事件执行之前执行文件事件所消耗的时间。 比如说以下图表就展示了虽然时间事件 TE 1 预定在 t1 时间执行但因为文件事件 FE 1 正在运行所以 TE 1 的执行被延迟了: 另外对于像 serverCron 这类循环执行的时间事件来说如果事件处理器的返回值是 t 那 么 Redis 只保证: 如果两次执行时间事件处理器之间的时间间隔大于等于t那么这个时间事件至少会被 处理一次。 而并不是说每隔 t 时间就一定要执行一次事件——这对于不使用抢占调度的 Redis 事件处理器来说也是不可能做到的 举个例子虽然 serverCron (sC)设定的间隔为 10 毫秒但它并不是像如下那样每隔 10 毫 秒就运行一次: 在实际中serverCron 的运行方式更可能是这样子的:  根据情况如果处理文件事件耗费了非常多的时间serverCron 被推迟到一两秒之后才能执 行也是有可能的。整个事件处理器程序可以用以下伪代码描述: def process_event():# 获取执行时间最接近现在的一个时间事件te get_nearest_time_event(server.time_event_linked_list)# 检查该事件的执行时间和现在时间之差# 如果值 0 那么说明至少有一个时间事件已到达 # 如果值 0 那么说明目前没有任何时间事件到达 nearest_te_remaind_ms te.when - now_in_ms()if nearest_te_remaind_ms 0:# 如果有时间事件已经到达# 那么调用不阻塞的文件事件等待函数 poll(timeoutNone)else:# 如果时间事件还没到达# 那么阻塞的最大时间不超过 te 的到达时间 poll(timeoutnearest_te_remaind_ms)# 处理已就绪文件事件 process_file_events()# 处理已到达时间事件 process_time_event() 通过这段代码可以清晰地看出: • 到达时间最近的时间事件决定了poll的最大阻塞时长。 • 文件事件先于时间事件处理。 将这个事件处理函数置于一个循环中加上初始化和清理函数这就构成了 Redis 服务器的主 函数调用: def redis_main(): # 初始化服务器init_server()# 一直处理事件直到服务器关闭为止 while server_is_not_shutdown():process_event()# 清理服务器 clean_server() 5、事件是否有重要性级别或优先级需要立即处理还是可以延迟处理 Redis事件没有定义重要性级别或优先级。所有的事件都会按照发生的顺序进行处理没有特定的顺序要求。因此Redis事件可以根据需要进行立即处理也可以延迟处理。 6、事件的类型是什么是针对键的操作还是集群的状态变化 Redis事件的类型有两种分别是针对键的操作事件和集群的状态变化事件。 针对键的操作事件Key Event这些事件与键的操作相关包括以下几种类型 SET当一个键被设置或修改时触发。GET当一个键被获取时触发。DEL当一个键被删除时触发。EXPIRE当一个键的过期时间被设置时触发。EXPIRED当一个键的过期时间到达时触发。RENAME当一个键被重命名时触发。PERSIST当一个键的过期时间被移除时触发。... 集群的状态变化事件Cluster Event这些事件与Redis集群的状态变化相关包括以下几种类型 NODE ADDED当一个新的节点加入集群时触发。NODE REMOVED当一个节点被移除集群时触发。NODE UPDATED当一个节点的状态或信息发生变化时触发。SLOT ASSIGNED当一个槽位被指派给一个节点时触发。SLOT UNASSIGNED当一个槽位从一个节点上移除时触发。...  二、小结 Redis 的事件分为时间事件和文件事件两类。 文件事件分为读事件和写事件两类:读事件实现了命令请求的接收写事件实现了命令 结果的返回。 时间事件分为单次执行事件和循环执行事件服务器常规操作serverCron就是循环事 件。 文件事件和时间事件之间是合作关系:一种事件会等待另一种事件完成之后再执行不 会出现抢占情况。 时间事件的实际执行时间通常会比预定时间晚一些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iis 怎么绑定网站二级目录添加qq好友的超链接做网站

刷了国际版miui12.5.2各种问题: 0、不能双SIM卡 解决:无法解决,rom限制 1,小米笔记APP超级稍微有点长的文档出现卡顿 解决:更新为最新版 2,下载各种常用APP问题, 解决:不要下载…

犀牛云做网站做网站需要多钱建筑工程项目信息查询

地址 https://chat.openai.com/g/g-zHErU9z9m-versatile-writer https://poe.com/VersatileWriterGPT 测试 翻译:要求将给定的英语语句翻译成中文。 总结:给出一段文本,要求进行概括和总结。 问答:根据给定段落,提出相关问题并给出答案。 推理:给出前提,进行多步推理并得…

广州网站建设的公司东营 网站 建设

事情要从今年三月份说起,一位爱尔兰的同事在6月份结婚,团队同事准备了中国风的丝绸画轴、领带、丝巾作为礼物。3月份开始邮寄,4月初爱尔兰方面收件,5月份因为文件不足、不完整、不正确等原因被取消进口,7月份退回到大连…

响应式企业展示型网站郓城建设局网站

《VBA之Word应用》(版权10178982),是我推出第八套教程,教程是专门讲解VBA在Word中的应用,围绕“面向对象编程”讲解,首先让大家认识Word中VBA的对象,以及对象的属性、方法,然后通过实…

电商网站建设最好的公司10种禁用免费app

11月17日至19日,2023中国创新创业成果交易会(简称:创交会)在广州市广交会展馆圆满举行。英码科技受邀参加本届创交会,并在会场展示了创新性的AIoT产品、深元AI引擎和行业热门解决方案。 据介绍,本届创交会由…

兰州公司做网站的价格软件开发软件定制

在寒冷的冬季,没有什么比一棵亮丽的圣诞树更能带给我们温暖和快乐。而现在,我们将使用Python编程语言来绘制这样一棵美丽的圣诞树。 首先,我们需要导入Python的turtle模块,它可以帮助我们绘制图形。然后,我们可以定义一…

点餐系统网站建设怎么看网站是用什么系统做的

概率分布之间的距离,顾名思义,度量两组样本分布之间的距离 。 1、卡方检验 统计学上的χ2统计量,由于它最初是由英国统计学家Karl Pearson在1900年首次提出的,因此也称之为Pearson χ2,其计算公式为 (i1,2&…

使用try-finally结构执行状态重置

原代码const commitForm = async () => {btnLoading.value = true;isCommitted.value = true;//过滤出显示字段的列表let showFieldsList = [];for (let comp of compList.value) {if (comp.isShow) {showFieldsLis…

MCGS(Monitor and Control Generated System)组态软件

MCGS(Monitor and Control Generated System)组态软件MCGS(Monitor and Control Generated System)组态软件 MCGS(Monitor and Control Generated System)组态软件 MCGS(Monitor and Control Generated System)…

java03预习

课前问题列表什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?用static修饰:工具类方法,不依赖对象状态,只执行特定功能的方法;工厂方法,创建对象的静…

x6831卡顿分析

问题描述 射击游戏卡顿的问题(freefire)【2023/5/13】 FAE复现 手机已被恢复出厂设置或升级过软件 默认关闭游戏模式下抓取卡顿trace,装sim卡4G网络,游戏(free fire)内开启高帧率,画面内容变丰富后会出现卡顿,游…

实测对比:权威榜单之微信排版软件Top5(含详细测评)

在新媒体运营的日常工作中,大家常常会遇到写作慢、排版耗时、跨平台排版不统一、跨平台发文琐碎、热点跟不动不及时、配图难/侵权风险等痛点。为了帮大家找到一款合适的微信排版软件,我亲测了多款不同的编辑器。在本…

网站前台做哪些工作内容网站注册费用

团队成员 郑西坤 031602542 (队长) 陈俊杰 031602504陈顺兴 031602505张胜男 031602540廖钰萍 031602323雷光游 031602319吴志鸿 0316206341.昨天的困难 陈顺兴:无 廖钰萍:无 吴志鸿:没有 雷光游:无 郑西坤…

一个公司是否能备案多个网站做家教中介网站赚钱吗

Python开发软件可根据其用途不同分为两种,Python代码编辑器和Python集成开发工具,两者配合使用极大的提高Python开发人员的编程效率。掌握调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等操作。 Python常用工具&…

网站建设参考的文献做网站公司找哪家

Vue 音频制作指的是使用 Vue.js 框架开发音频制作相关的 Web 应用程序。Vue.js 是一种现代化的 JavaScript 框架,它可以帮助开发者更快速、更高效地构建交互式的 Web 应用程序。 音频制作在 Vue.js 中的实现可以通过使用一些开源音频库和插件来实现,如 …

在哪几个网站里可以做淘客安阳县交易中心网站建设招标

1正常set(get)storage都是可以正常使用的 2.但对属性进行赋值的时候,却发现this.name并没有发生变化 3. 在里面打印this发现,在set*getStorage中并不能拿到this. 4.优化代码 这样就可以给this.name成功赋值

电子商务网站开发教程蓝色科技网站建设

Allegro层叠中的介电常数如何填写指导说明 在用Allegro进行PCB设计的时候,需要在cross-section中设置好每个层的信息,包括层命名,每层的厚度等等信息。如下图 一般来说,这些信息就足够了 但是对于有仿真需求或者等长设计需要使用ps作为延时单位的设计的时候,需要额外在层…

建网站的地址学生作业做网站需要

问题描述:RBF神经网络中的RBF的英文全称是什么,是用来干什么的? 问题解答: RBF神经网络中的RBF是径向基函数(Radial Basis Function)的缩写。径向基函数是一种在机器学习和模式识别中常用的函数类型&…

详细介绍:华为MindIE 推理引擎:架构解析

详细介绍:华为MindIE 推理引擎:架构解析2025-09-22 22:42 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bloc…

【F#学习】布尔运算优先级

在 F# 中,布尔逻辑运算符的优先级从高到低如下(括号可显式改变优先级): 优先级顺序(高 → 低)not一元逻辑非运算符(最高优先级) 示例:not true → false&&逻辑与运算符(短路求值) 示例:true &…