做一个网站要多长时间微网站开发微网站建设

web/2025/9/27 2:07:45/文章来源:
做一个网站要多长时间,微网站开发微网站建设,wordpress如何做优化,wordpress编辑富文简介 在嵌入式开发中#xff0c;经常有需要用到RingBuffer的概念#xff0c;在RingBuffer中经常遇到一个Buffer满和Buffer空的判断的问题#xff0c;一般的做法是留一个单位的buffer不用#xff0c;这样做最省事#xff0c;但是当RingBuffer单位是一个结构体时#xff0…简介 在嵌入式开发中经常有需要用到RingBuffer的概念在RingBuffer中经常遇到一个Buffer满和Buffer空的判断的问题一般的做法是留一个单位的buffer不用这样做最省事但是当RingBuffer单位是一个结构体时这个浪费就不能接受了市面上大多数解决办法是镜像指示位办法但是具体实现上又有各种设计但是并不是满足的开发需要所以有本项目。 本项目地址bobwenstudy/simple_ringbuffer: 一种基于镜像指示位办法的RingBuffer实现解决Mirror和2的幂个数限制 (github.com)参考资料有环形缓冲器 - 维基百科自由的百科全书 (wikipedia.org)ring buffer一篇文章讲透它 - 知乎 (zhihu.com)。 对比现有的实现本项目的特点是。 类别simple_ringbufferkfifo(linux)ringbuffer (rt-thread)需要mirror位多进程风险否否是需要个数为2的幂否是否支持结构体成员是是linux5.7否 mirror位 多了Mirror位就会有一个多进程操作的风险除非Mirror位和数值同时写入。所以最好不要有Mirror位。 个数为2的幂 Linux的kfifo解决了Mirror位的问题因为其用到了uint32_t回环的特性需要个数为2个幂。虽然这样大大减少了算法工作量也可以用位运算来优化取余预算的计算效率。但是使用起来多少不是很舒适尤其设计到对结构体成员操作时一不注意又要浪费Buffer。 支持结构体成员 其实如果RingBuffer成员的单位为1个字节的话其实没必要在乎1个字节的损失只是使用时需要多申请1个字节多少看起来不是很清爽。 但是当RingBuffer的成员的单位为很大的值时1个成员的损失才至关重要。 现有的项目考虑灵活性RingBuffer需要支持各种字节操作效率并不高本项目针对结构体操作需要专门设计了Data_RingBuffer工具来对多字节场景进行处理操作效率更高并提供了2种操作接口以满足不同业务操作的需要。 镜像指示位-本项目实现 本项目不想有Mirror的操作问题也不想有个数2的幂的限制。处理上做了一些特殊的处理严格区分index和ptr的概念。 index的取值范围为[0~2n-1]并不像Linux取到最大值解决了个数2的幂的限制。 write_index ringbuf-write_index len; if (write_index (ringbuf-total_size 1)) {write_index - (ringbuf-total_size 1); } ringbuf-write_index write_index;其中ptr的获取考虑效率使用减法不使用取余运算。 #define RINGBUFFER_INDEX_TO_PTR(_index, _total_size) \((_index _total_size) ? (_index - _total_size) : (_index)) uint32_t wptr RINGBUFFER_INDEX_TO_PTR(ringbuf-write_index, ringbuf-total_size);代码结构 代码结构如下所示 simple_ringbufferRingbuffer实现包含结构体操作实现simple_data_ringbuffer和缓冲池操作实现simple_data_ringbuffer。test_0.c和test_1.c和test_2.c测试例程。main.c测试例程。build.mk和MakefileMakefile编译环境。README.md说明文档 simple_ringbuffer├── simple_ringbuffer│ ├── simple_data_ringbuffer.c│ ├── simple_data_ringbuffer.h│ ├── simple_ringbuffer.c│ └── simple_ringbuffer.h├── build.mk├── code_format.py├── LICENSE├── main.c├── Makefile├── README.md├── test_0.c└── test_1.c使用说明 具体如何使用直接看例程就行非常简单看函数名和变量名即可。 单字节操作 使用提供simple_ringbuffer.h接口操作即可。 // Define ringbuf. SIMPLE_RINGBUFFER_DEFINE(test_ringbuf, 0x100);// Put data to ringbuf. uint8_t data[0x10]; simple_ringbuffer_put(test_ringbuf, data, sizeof(data));// Get data from ringbuf. uint8_t rdata[0x10]; simple_ringbuffer_get(test_ringbuf, rdata, sizeof(rdata));结构体操作 使用提供simple_data_ringbuffer.h接口操作即可。提供了两种接口按需使用。 struct test_user_data {uint8_t data[0x10]; };// Define ringbuf. SIMPLE_DATA_RINGBUFFER_DEFINE(test_ringbuf, 0x100, sizeof(struct test_user_data));// API1 // Put data to ringbuf. struct test_user_data data; simple_ringbuffer_put(test_ringbuf, data);// Get data to ringbuf. struct test_user_data rdata; simple_ringbuffer_get(test_ringbuf, rdata);// API2 // Enqueue data to ringbuf. struct test_user_data *data NULL; uint16_t index simple_data_ringbuffer_enqueue_get(test_ringbuf, (void **)data); // enqueue getsimple_data_ringbuffer_enqueue(test_ringbuf, index); // real enqueue// Dequeue data from ringbuf. struct test_user_data *data; data simple_data_ringbuffer_dequeue_peek(test_ringbuf); // dequeue peeksimple_data_ringbuffer_dequeue(test_ringbuf); // real dequeue缓存池操作 ringbuffer必须先入先出在部分不是先入先出场景下又想用RingBuffer读写线程独立的特性本项目提供了一个简易数据缓存池实现方案通过只保存数据指针的方式来实现非先入先出的数据缓冲池。 其结构体如下。simple_pool_t用于缓冲池管理由于RingBuffer存储的是指针所以需要通过item_size记录每个成员的实际大小。定义一个Pool时需要指针数组_name##_fifo_storage[_num]其用于存储实际存放数据的指针用RingBuffer管理。真实存数据的区域为_name##_data_storage[_num][MROUND(_data_size)]。 typedef struct simple_pool {simple_data_ringbuffer_t ringbuf;uint16_t item_size; } simple_pool_t;#define SIMPLE_POOL_DEFINE(_name, _num, _data_size) \static simple_pool_t _name; \static void *_name##_fifo_storage[_num]; \static uint8_t _name##_data_storage[_num][MROUND(_data_size)];使用操作如下 struct test_user_data {uint8_t data[0x100]; };// Define pool. SIMPLE_POOL_DEFINE(test_pool, 0x10, sizeof(struct test_user_data));// Init pool. SIMPLE_POOL_INIT(test_pool, 0x10, sizeof(struct test_user_data));// Get data from pool. struct test_user_data *data; SIMPLE_POOL_DEQUEUE(test_pool, data);// Put data to pool. SIMPLE_POOL_ENQUEUE(test_pool, data);测试说明 环境搭建 本项目支持Windows和Linux编译同时支持Code Space在线编译如果不想搭建环境可以直接CodeSpace编译。 Windows编译 目前需要安装如下环境 GCC环境笔者用的msys64mingw用于编译生成exe参考这个文章安装即可。Win7下msys64安装mingw工具链 - Milton - 博客园 (cnblogs.com)。 GitHub-CodeSpace编译 直接在线编译即可。 编译说明 本项目都是由makefile组织编译的编译整个项目只需要执行make all即可。 也就是可以通过如下指令来编译工程 make all而后运行执行make run即可运行例程例程中实现了上述文档说明的问题和API的基本测试。 PS D:\workspace\github\simple_ringbuffer make run Compiling : test_0.c Compiling : test_1.c Linking : output/main.exe Building : output/main.exe Start Build Image. objcopy -v -O binary output/main.exe output/main.bin copy from output/main.exe [pei-i386] to output/main.bin [binary] objdump --source --all-headers --demangle --line-numbers --wide output/main.exe output/main.lst Print Sizetext data bss dec hex filename118200 265384 2644 386228 5e4b4 output/main.exe ./output/main.exe Testing test_work .......................................................... pass Testing test_work_insuff ................................................... pass Testing test_work_invalid .................................................. pass Testing test_work_full ..................................................... pass Testing test_work_full_define .............................................. pass Testing test_work_read_index_big_to_write_index ............................ pass Testing test_work_read_index_big_to_write_index ............................ pass Testing test_work_odd ...................................................... pass Testing test_work_insuff_odd ............................................... pass Testing test_work_invalid_odd .............................................. pass Testing test_work_full_odd ................................................. pass Testing test_work_read_index_big_to_write_index_odd ........................ pass Testing test_data_work ..................................................... pass Testing test_data_work_full ................................................ pass Testing test_data_work_full_define ......................................... pass Testing test_data_work_full_define_enqueue ................................. pass Testing test_data_work_odd ................................................. pass Testing test_data_work_full_odd ............................................ pass Executing run: all complete!可以看到所有涉及到测试都通过。

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

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

相关文章

校园网站建设总结石家庄商城网站建设

Windows MySQL服务安装及问题解决方案 安装及配置步骤一:官网下网MySQL安装包步骤二:设置环境变量步骤仨:配置MySQL,ini配置文件步骤四:初始化MySQL步骤五:开启MySQL服务步骤六:测试是否安装成功步骤七&…

做化学科普网站的目的如何让网站火起来

代码下载 打包发布服务代码下载 项目优化 生成打包报告,根据报告优化项目第三方库启用CDNElement-UI组件按需加载路由懒加载首页内容定制 添加进度条 给项目添加进度条效果,先打开项目控制台,打开依赖,安装 nprogress 打开ma…

广州做外贸网站的公司简介看车二手车网站源码

介绍 定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有相同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被称为静态工厂方法模式,属于类创建型模式 实现 class Pr…

网站运营 策划 推广 维护成都公众号小程序开发

linux上静态库和动态库的编译和使用(附外部符号错误浅谈) 这就是静态库和动态库的显著区别,静态库是编译期间由链接器通过include目录找到并链接到到可执行文件中,而动态库则是运行期间动态调用,只有运行时找不到对应动…

上海开本建设工程有限公司玉林网站seo

紧接前文,本文是农田场景下庄稼作物、杂草检测识别的第二篇文章,前文是基于YOLOv3这一网络模型实现的目标检测,v3相对来说比较早期的网络模型了,本文是基于最为经典的YOLOv5来开发不同参数量级的检测端模型。 首先看下实例效果&a…

网站数据丢失了做数据恢复需多久转发 wordpress 奖励

插值算法简介 数据分析是在大数据时代下不可获取的一环,合理、全面地分析数据,能够使得决策者在决策时作出最为明智的决定。在数据分析过程中,常常可以使用插值算法来根据已知的数据估算出未知的数据,从而模拟产生一些新的值来满…

觅图网免费素材图库深圳网站优化页面

like查询是区分大小写的转载于:https://blog.51cto.com/cyxinda/1226040

东莞网站seo网站网络

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&…

石家庄哪里能制作网站wordpress linux下载

传送门:异步编程系列目录…… 最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习…

宿迁哪里有做网站开发的wordpress去掉模板登录

定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 思考题: 请同时实现迭代版本和递归版本。 数据范围 链表长度 [0,30] 。 样例 输入:1->2->3->4->5->NULL 输出:5->4->3->2->1->N…

建设网站的企业邮箱网站建设服务python做问卷调查的网站

SineSurface直译为正弦曲面.这有可能和你想象的正弦曲线不一样.如果把正弦曲线绕Y轴旋转,得到的该是正弦波曲面.这个曲面与上一节中的罗马曲面有些相似,那个是被捏过的正四面体,这个则是个被捏过正方体. 本文将展示SineSurface与粽子曲面的生成算法和切图,使用自己定义语法的脚…

公司网站建设北京商业计划的网站建设费用

文章目录 1.视频输出模块1.1 视频输出初始化1.1.1 视频输出初始化主要流程1.1.2 calculate_display_rect初始化显示窗口大小 1.2 视频输出逻辑1.2.1 event_loop开始处理SDL事件1.2.2 video_refresh1.2.2.1 计算上一帧显示时长,判断是否还要继续上一帧1.2.2.2 估算当前帧显示时长…

网站不会更新文章网站资讯建设

可以用C语言中的system()函数来实现系统的自动关机程序,可以设置多长时间后将自动关机。当然马上关机也是可以的,我们就可以恶搞别人计算机了(你事先得知道怎么解),将写好的自动关机程序复制到别人电脑,然后将可执行的文件设为开机…

公司网站自己创建凡科快速建站

这篇文章我们来讲解一下数据结构中非常重要的B-树。 目录 1.B树的相关介绍 1.1、B树的介绍 1.2、B树的特点 2.B树的节点类 3.小结 1.B树的相关介绍 1.1、B树的介绍 在介绍B树之前,我们回顾一下我们学的树。 首先是二叉树,这个不用多说&#xff…

网站付费推广有哪些wordpress space

!!!注意!!! 看本篇之前,一定要先看笔者上一篇的LPA*讲解,笔者统一了符号看起来过渡会更加好理解! 到目前为止,我们学习了广度优先搜索Dijkstra算法、能够计…

网站后台传不了图片中山精品网站建设案例

这个专题学习了两种算法 1.稳定婚姻匹配问题 2.最大团问题 稳定婚姻匹配问题: 1.Stable Match 关于信号站匹配 多了一个容量的权值 如果距离相同看容量大小 数据处理较麻烦! 2.marriage 稳定婚姻匹配问题入门题 3.The Stable Marriage problem 和入门题…

静态购物网站模版图片高清处理在线

1、定义 多元有序逻辑回归用于分析有序分类因变量与一个或多个自变量之间的关系。有序逻辑回归适用于因变量具有自然排序但没有固定间距的类别,例如疾病严重程度(轻度、中度、重度)或调查问卷中的满意度评分(非常不满意、不满意、…

网站建设成立领导小组创意网店店铺名字大全

我们经常会遇到表被锁的情况,这可能会严重影响数据库的性能和可用性。我将与大家分享如何识别、分析和解决这些问题,以及如何使用特定的 SQL 查询来执行解锁操作。 了解表锁的原因 首先,让我们来了解一下导致表被锁的常见原因。长时间运行的…

优化网站排名软件织梦网站wap

文章目录 Rosenblatt感知器基础收敛算法算法概述算法步骤关键点说明总结 C实现要点代码 参考文献 Rosenblatt感知器 基础 感知器,也可翻译为感知机,是一种人工神经网络。它可以被视为一种最简单形式的前馈式人工神经网络,是一种二元线性分类…

wordpress企业站被黑网站活动专题页面设计

在Python项目中,通常会有一个名为 requirements.txt 的文件,其中列出了项目所需的所有依赖包及其版本。 1. 使用freeze 如果你的项目中没有 requirements.txt 文件,你可以通过下面的命令创建一个当前项目所在环境下已安装的包及其版本的 re…