简述网站设计基本流程外贸建站 台州

news/2025/9/23 4:32:33/文章来源:
简述网站设计基本流程,外贸建站 台州,打码网站怎么做,十堰吧关于自定义循环队列的实现原理和要点可以参见之前的博文系列#xff1a;循环队列及C语言实现。这里主要对JAVA下的具体实现方式与原理进行说明。 一、JAVA 中已经自带了 Queue、DQueue、ArrayList、LinkedList 等常用的数据结构#xff0c;为什么还要单独实现循环队列#…关于自定义循环队列的实现原理和要点可以参见之前的博文系列循环队列及C语言实现。这里主要对JAVA下的具体实现方式与原理进行说明。 一、JAVA 中已经自带了 Queue、DQueue、ArrayList、LinkedList 等常用的数据结构为什么还要单独实现循环队列 之所以使用自定义循环队列出发点还是基于我们在实际应用中对于数据处理各种各样的需求。使用自定义数据结构的好处就在于可以更加灵活的处理各种数据增加自己需要的接口。然而弊端就是你的 code 可能会引入各种未知的 Bug。所以在满足我们使用前提的场景下使用上述已有数据结构等是比较推荐的如果满足不了实际项目需求再通过自定义的方式等实现是我们理想的一种选择。 二、什么场景需要使用自定义循环队列 对于数据的处理要求比较灵活比如我们需要开发一个安卓服务器程序需要不断处理每个客户端的请求以及完成与客户端的交互。发送来的数据需要及时处理但同时数据以自定义格式进行传输包头长度数据包尾校验。如上格式服务器端需要不断将接收的数据进行缓存与解析如果未满一帧那么需要缓存到下次数据接收过来再进行解析。这时我们需要批量从队列读取数据以及如果一帧数据不完全将读取的数据复原到队列中更改队列当前读位置的功能。此时就可以考虑自己实现队列满足这些特殊的需求。 三、循环队列的特点与要素 1、先进先出FIFO 2、队列首尾元素位置 3、常用队列操作初始化、销毁、遍历、读写等 四、源码实现 为便于使用这里将该循环队列以类的方式实现 /** Copyright (c) 2017, SoldierJazz. All rights reserved.* Use is subject to license terms.**/package com.exmple.java.text;/*** DataQueue 类实现为FIFO循环队列** p 使用前需要根据实际需求为队列分配合理的队列空间大小** 创建一个4K空间的队列如下所示** DataQueue mdataqueue new DataQueue(4096);** p 更多使用信息可以参考引用该类的例程有关问题可发送到* SoldierJazz163.com 寻求支持。** author SoldierJazz* version 1.0.0*/public class DataQueue {Queue q null;public class Queue {byte[] data null;int read;int write;int size;int space;}Object mSemaphore new Object();DataQueue(int size) {q new Queue();Queue_Init(q, size);}/*** 返回当前队列可用数据量** param q 目标队列**/int Avail(Queue q) {return q.size - q.space;}/*** 初始化队列** param q 目标队列* * param size 队列分配内存大小**/void Queue_Init(Queue q, int size) {synchronized (mSemaphore) {q.data new byte[size];q.read 0;q.write 0;q.size size;q.space size;}}/*** 销毁队列** param q 目标队列**/void Queue_Destroy(Queue q) {synchronized (mSemaphore) {q.read q.write 0;q.space q.size;}}/*** 判断当前队列是否为空** param q 目标队列** return true表示队列为空brfalse表示队列不为空**/boolean Queue_Empty(Queue q) {return (q.space q.size);}/*** 判断当前队列是否已满** param q 目标队列** return true表示队列已满brfalse表示队列未满**/boolean Queue_Full(Queue q) {return (q.space 0);}/*** 写一个byte到目标队列** param q 目标队列* * param val 写入的byte值** return true表示写入成功brfalse表示写入失败**/boolean AddQueue(Queue q, byte val) {if (!Queue_Full(q)) {q.data[q.write] val;q.write (q.write 1) % q.size;q.space--;return true;} return false;}/*** 从队列中读取一个字节** param q 目标队列* * param data 读取的字节** return true表示读取成功brfalse表示读取失败**/boolean DelQueue(Queue q, Byte data) {if (!Queue_Empty(q)) {data q.data[q.read];q.read (q.read 1) % q.size;q.space;return true;}return false;}/*** 批量写入长度为len的字节到队列** param q 目标队列* * param data 写入的byte数组* * param len 写入的数组长度** return 成功写入的字节数量**/int WriteQueue(Queue q, byte[] data, int len){int ret 0;int rest q.size - q.write;synchronized (mSemaphore) {if (!Queue_Full(q)) {if (q.space len) {ret len;if (rest len) {System.arraycopy(data, 0, q.data, q.write, len);q.write (q.write len) % q.size;q.space - len;} else {System.arraycopy(data, 0, q.data, q.write, rest);q.write 0;System.arraycopy(data, rest, q.data, 0, len - rest);q.write len -rest;q.space - len;}} else {ret q.space;if (rest q.space) {System.arraycopy(data, 0, q.data, q.write, q.space);q.write (q.write q.space) % q.size;q.space 0;} else {System.arraycopy(data, 0, q.data, q.write, rest);q.write 0;System.arraycopy(data, rest, q.data, 0, q.space - rest);q.write q.space -rest;q.space 0;}} }return ret;}}/*** 从队列中恢复长度len个字节的数据** param q 目标队列* * param len 要恢复的长度** return 成功恢复的字节数**/int RecoverReadQueue(Queue q, int len) {int ret 0;int rest q.read;synchronized (mSemaphore) {if (q.space len)ret len;elseret q.space;if (rest ret) {q.read - ret;} else {q.read q.size - (ret - rest);}q.space - ret;return ret;}}/*** 从队列中读取len个字节数据到data数组中** param q 目标队列* * param data 用于存放数据的目标数组* * param start 拷贝至目标数组的起始位置* * param len 读取的长度* * return 成功读取的字节数**/int ReadQueue(Queue q, byte[] data, int start, int len) {int rest q.size - q.read;int ret 0;synchronized (mSemaphore) {if (!Queue_Empty(q)) {if (Avail(q) len) {ret len;if (rest len) {System.arraycopy(q.data, q.read, data, start, len);q.read (q.read len) % q.size;q.space len;} else {System.arraycopy(q.data, q.read, data, start, rest);q.read 0;System.arraycopy(q.data, 0, data, start rest, len - rest);q.read len -rest;q.space len;}return len;} else {ret Avail(q);if (rest Avail(q)) {System.arraycopy(q.data, q.read, data, start, Avail(q));q.read (q.read Avail(q)) % q.size;q.space q.size;} else {System.arraycopy(q.data, q.read, data, start, rest);q.read 0;System.arraycopy(q.data, 0, data, start rest, Avail(q) - rest);q.read Avail(q) -rest;q.space q.size;}}} return ret;}} }以上内容为使用该类及相关方法的定义比较简单看注解即可。下面针对该类做一个使用与测试程序public void TestDataQueue() {DataQueue dataq new DataQueue(100);byte[] a1 {1, 2, 3, 4, 5, 6};byte[] a2 {7, 8, 9, 10};byte[] b new byte[10];int nread 0;dataq.WriteQueue(dataq.q, a1, a1.length);nread dataq.ReadQueue(dataq.q, b, 0, 3);System.out.println(length of queue: dataq.Avail(dataq.q));for (int i 0; i nread; i) {System.out.printf(byte[%d]: %d\n, i, b[i]);}dataq.WriteQueue(dataq.q, a2, a2.length);System.out.println(length of queue: dataq.Avail(dataq.q));nread dataq.ReadQueue(dataq.q, b, 0, dataq.Avail(dataq.q));System.out.println(length of queue: dataq.Avail(dataq.q));for (int i 0; i nread; i) {System.out.printf(byte[%d]: %d\n, i, b[i]);}}public static void main(String args[]) {test t new test();t.TestDataQueue();}运行结果如下所示有疑问或者问题就给我邮件或者评论吧觉得有用就点赞吧~:-D

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

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

相关文章

淄博 网站设计小鸟云WordPress数据库连接

背景:用nohup运行jar包时候,会产生大量的日志文件,影响磁盘存储,生产环境大概1天有30个g 解决方案: 1、用split分割日志,代码在下面(可以先测试一下),然后加入到定时任务…

常德自助建站seo哈尔滨怎样快速建站

现象: 在CodeFirst时,先写字段与表,创建数据库后,再添加内容 但字段与表会变更,比如改名删除增加等 需求: 当表字段变更时,同时变更数据库,执行数据库迁移 核心命令 Add-Migrat…

什么是 网站收录广州申请公司注册网站

738.单调递增的数字 思路:要求一个数字从第一位往后的大小是单调递增的,先把数字转换成字符串,然后从后往前逐位遍历,如果当前位比前一位小,则前一位--,从当前位往后都应该为9,因此记下当前位置…

html做的网页怎么变成网站手机商城网站建设策划方案范文

汇编概述 汇编需要学习的大致框架如下: 汇编中的符号 1.指令;能够北嘁肷梢惶?2bit机器码,并且能够被cpui识别和执行 2.伪指令:本身不是指令,编译器可以将其替换成若干条指令 3.伪操作:不会生成指令…

网站怎么产品做推广做暧暧网站在线看

Python3判断是否为回文数原题 https://leetcode-cn.com/problems/palindrome-number/ 题目: 不允许用str的方法! 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。…

基于 Vite7 与 Vue3 的 WebOS 后台系统架构实践

在数字办公场景日益复杂的今天,企业级后台系统对交互体验与开发效率提出更高要求。我们采用 Vite7+Vue3+ArcoDesign 技术组合,构建出兼具 MacOS 与 Windows 双风格的 WebOS 管理系统模板,为 PC 端后台开发提供全新解…

网站优化流程网站备案幕

代码随想录算法训练营Day47 | 198.打家劫舍 213.打家劫舍II 337.打家劫舍III LeetCode 198.打家劫舍 题目链接&#xff1a;LeetCode 198.打家劫舍 思路&#xff1a; 当前打劫或者不打劫 class Solution { public:int rob(vector<int>& nums) {vector<int>…

网站建设和推广电话销售话术王也图片高清头像

在前几篇笔记之中都是使用的GPIO输出功能&#xff0c;还没有用过GPIO输入功能&#xff0c;本章就来学习一下如果在Linux下编写GPIO输入驱动程序。正点原子STM32MP1开发板上有三个按键&#xff0c;就使用这些按键来完成GPIO输入驱动程序&#xff0c;同时利用原子操作来对按键值进…

广东网站设计公司电话h5应用

图片来源&#xff1a;https://cn.bing.com本文系生物谷原创编译&#xff0c;欢迎分享&#xff0c;转载须授权&#xff01;研究人员发现了一种直接将皮肤细胞重新编程成用于视觉的光敏杆状感光器的技术。实验室制造的杆状体使失明的老鼠能够在细胞移植到眼睛后探测到光线。这项研…

哪里有做旅游包车的网站智慧新零售系统

用一张图详细的描述DNS寻址的过程&#xff0c;是高级前端进阶的网络篇&#xff1a; 主要是第三步要记仔细就行啦&#xff0c;每一步都要详细的记录下来&#xff0c;总结的脉络如下&#xff1a; 本地DNS缓存本地DNS服务器根域名服务器 顶级域名服务器再次顶级域名服务器权威域名…

滨江区高端网站建设优化推广方案

上周我们学习了如何使用元素创建SVG文本。在实例中我们设置了x和y坐标来定位文本&#xff0c;也尝试了给SVG文本中的每个字符定位。关于元素还有很多内容。在处理SVG文本时&#xff0c;不要局限于x和y属性。元素还有几个可以添加的属性&#xff0c;现在我们开始讨论吧。dx和dy属…

重庆有哪些做网站公司做网站怎么样引流

身为一位产品经理或设计师&#xff0c;原型设计工具是必不可少的工作伙伴。但我们难免会遇到预算有限的时候&#xff0c;这时候&#xff0c;去哪里寻找一款好用的免费原型设计工具呢&#xff1f;以下&#xff0c;小编为大家精心挑选了7款免费的原型工具&#xff0c;并对其进行了…

手表 网站策划常德市建设工程造价信息网

前言 在安装好anaconda之后&#xff0c;系统默认就安装好了一个jupyter notebook的工具&#xff0c;该工具可以在网页端运行&#xff0c;类似这样&#xff1a; 提供了一个按行运行的python运行环境&#xff0c;每一步的输出都可以打印到界面&#xff0c;对于我们初学python&am…

爱站关键词挖掘软件wordpress d压缩

引言 在现代应用程序开发中&#xff0c;确保数据库操作的完整性和一致性至关重要。MySQL 提供了强大的事务管理功能&#xff0c;允许开发者以原子性、一致性、隔离性和持久性&#xff08;ACID&#xff09;的方式处理数据。本文将通过详细的解释和实际示例&#xff0c;带你深入…

网站的购物车怎么做检查网站是否做网站地图

杜教筛 1.概述 杜教筛是用以解决积性函数前缀和的算法。 在学习了莫比乌斯反演之后&#xff0c;杜教筛的过程就会显得简单而自然。 2.基本形式 对于积性函数&#xff0c;我们定义如下函数&#xff1a; 构造积性函数 &#xff0c;使得 显然 &#xff1a; 进一步转化&#xf…

青浦做网站价格网站代码500

企业级 文件传输加密应用 简历一直在投&#xff0c;一直无音讯&#xff0c;今天我又从硬盘里翻出一个 好玩的加密软件&#xff0c;这个是 2017年的时候和荷兰某世界500强公司合作的小项目。 今天分享给大家 。 文章目录 企业级 文件传输加密应用1.目的2.软件介绍3.下载好 安装…

房山网站建设公司wordpress管理工具栏

在互联网时代&#xff0c;IP地址的重要性不言而喻。作为网络通信的基础&#xff0c;IP地址用于标识每一台连接到互联网的设备。然而&#xff0c;传统的IP地址定位方式仅能粗略地确定设备的大致位置&#xff0c;无法实现精确定位。那么&#xff0c;IP地址能否实现精确定位呢&…

怎样建设淘客网站app开发流程

chrono是C11中新加入的时间日期操作库&#xff0c;可以方便地进行时间日期操作&#xff0c;主要包含了&#xff1a;duration, time_point, clock。 时钟与时间点 chrono中用time_point模板类表示时间点&#xff0c;其支持基本算术操作&#xff1b;不同时钟clock分别返回其对应…

网站审批号一起做网站女装夏季裙

设计灵感: 1 单线程io多路复用服务端 2 使用poll实现 3 将server_sockfd client_sockfd 设为非阻塞,实现最大io效率 4 使用套接字选项SO_REUSEADDR 用于测试环境调试 5 将server_sockfd 和每一个有效的client_sockfd 都设为poll的监控事件 6 有客户端关闭连接时,自动从数…

深圳做网站公司 南山信阳高端网站建设

附:赛制和比赛规则一、赛制1.比赛执行国家体育总局最新审定的《乒乓球竞赛规则》&#xff0c;比赛使用红双喜40毫米白色乒乓球&#xff0c;执行国际乒联关于“11分”制&#xff0c;一分钟暂停&#xff0c;“无遮挡发球”的竞赛规定。2.男子团体比赛采用五场三胜&#xff0c;每盘…