蚌埠网站关键词优化阿里巴巴企业网站怎么做

pingmian/2026/1/17 8:59:26/文章来源:
蚌埠网站关键词优化,阿里巴巴企业网站怎么做,wordpress能建论坛么,那种网站怎么搜关键词之前写的环行缓冲区文章柔性数组和环形队列之间的故事C语言#xff0c;环形队列循环缓冲区是嵌入式软件工程师在日常开发过程中的关键组件。多年来#xff0c;互联网上出现了许多不同的循环缓冲区实现和示例。我非常喜欢这个模块#xff0c;可以GitHub上找到这个开源的 CBUF… 之前写的环行缓冲区文章柔性数组和环形队列之间的故事C语言环形队列循环缓冲区是嵌入式软件工程师在日常开发过程中的关键组件。多年来互联网上出现了许多不同的循环缓冲区实现和示例。我非常喜欢这个模块可以GitHub上找到这个开源的 CBUF.h 模块。地址https://github.com/barraq/BRBrain/blob/master/firmware/CBUF.hCBUF.h 模块使用宏实现循环缓冲区具体源码如下所示#if !defined( CBUF_H ) #define CBUF_H       /** Include Guard                          *//* ---- Include Files ---------------------------------------------------- *//* ---- Constants and Types ---------------------------------------------- *//** *   Initializes the circular buffer for use. */ #define CBUF_Init( cbuf )       cbuf.m_getIdx  cbuf.m_putIdx  0/** *   Returns the number of elements which are currently contained in the *  circular buffer. */#define CBUF_Len( cbuf )        ((typeof( cbuf.m_putIdx ))(( cbuf.m_putIdx ) - ( cbuf.m_getIdx )))/** *   Appends an element to the end of the circular buffer */#define CBUF_Push( cbuf, elem ) (cbuf.m_entry)[ cbuf.m_putIdx  (( cbuf##_SIZE ) - 1 )]  (elem)/** *   Retrieves an element from the beginning of the circular buffer */#define CBUF_Pop( cbuf )        (cbuf.m_entry)[ cbuf.m_getIdx  (( cbuf##_SIZE ) - 1 )]/** *   Retrieves the ith element from the beginning of the circular buffer */#define CBUF_Get( cbuf, idx )        (cbuf.m_entry)[( cbuf.m_getIdx  idx )  (( cbuf##_SIZE ) - 1 )]/** *   Retrieves the ith element from the end of the circular buffer */#define CBUF_GetEnd( cbuf, idx )        (cbuf.m_entry)[( cbuf.m_putIdx - idx - 1 )  (( cbuf##_SIZE ) - 1 )]/** *   Determines if the circular buffer is empty */#define CBUF_IsEmpty( cbuf )    ( CBUF_Len( cbuf )  0 )/** *   Determines if the circular buffer is full. */#define CBUF_IsFull( cbuf )     ( CBUF_Len( cbuf )  ( cbuf##_SIZE ))/** *   Determines if the circular buffer is currenly overflowed or underflowed. */#define CBUF_Error( cbuf )      ( CBUF_Len( cbuf )  cbuf##_SIZE )#if defined( __cplusplus )template  class IndexType, unsigned Size, class EntryType  class CBUF { public:CBUF(){m_getIdx  m_putIdx  0;}IndexType Len() const   { return m_putIdx - m_getIdx; }bool IsEmpty() const    { return Len()  0; }bool IsFull() const     { return Len()  Size; }bool Error() const      { return Len()  Size; }void Push( EntryType val )   {m_entry[ m_putIdx  ( Size - 1 )]  val;}EntryType Pop(){return m_entry[ m_getIdx  ( Size - 1 )];}private:volatile IndexType  m_getIdx;volatile IndexType  m_putIdx;EntryType           m_entry[ Size ];};#endif  // __cplusplus/* ---- Variable Externs ------------------------------------------------- */ /* ---- Function Prototypes ---------------------------------------------- *//** } */#endif // CBUF_H现在一般我不喜欢以这种方式使用宏但实现已被证明是快速、高效且工作相对良好的这是很难争论的。循环缓冲区的设置非常简单。首先需要定义循环缓冲区的大小。这是通过定义宏 myQ_SIZE 来完成的同时记住缓冲区大小需要是 2 的幂。然后通过创建一个 myQ 类型的变量来声明循环缓冲区。例如如果 myQ_SIZE 定义为 64 字节则可以定义 UART 的发送和接收缓冲区如下面的图 1 所示。图 1 – 定义循环缓冲区在此示例中myQ 被定义为静态以限制缓冲区的范围并声明为易失性因为它们在中断内被修改。定义循环缓冲区只是第一步。为了分配缓冲区必须将这些变量传递给 CBUF_INIT 宏如下图 2 所示。图 2 – 缓冲区初始化除了这个初始设置之外缓冲区相当简单且易于使用。例如可以使用 CBUF_PUSH 将通过串行接口接收 UART接收的字符推送到循环缓冲区如图 3 所示。图 3 – 推入缓冲区开发人员不仅希望将数据推送到循环缓冲区上还希望从缓冲区弹出或获取数据。看到这一点的一个简单示例是需要获取字符并通过 UART 传输的串行发送器。图 4 中可以看到一个示例传输函数。图 4 – 从缓冲区弹出数据在健壮的应用程序中还应检查循环缓冲区长度和溢出状态。CBUF 模块确实提供了能够检查这些重要指标的宏。要记住的一个重要问题是如果需要对 CBUF 本身进行任何调试这是不可能的。无法为宏设置断点因此如果出现问题则需要对模块进行功能化以逐步执行和调试。多年来使用这个模块虽然我没有发现任何问题。循环缓冲区是在嵌入式系统中与串行设备通信的一个重要方面。循环缓冲区也很好理解应该创建它们以便它们可以模块化并从一个应用程序到下一个应用程序重复使用。到目前为止CBUF 模块已被证明是这样一个模块所以在这里我强烈推荐一下这个模块。好了今天的文章就到这里我们下期再见。再贴上代码的注释部分/**************************************************************************** * *   Since this code originated from code which is public domain, I *   hereby declare this code to be public domain as well. * ****************************************************************************/ /** * *   file   CBUF.h * *   brief  This file contains global definitions for circular buffer *           manipulation. * *   These macros implement a circular buffer which employs get and put *   pointers, in such a way that mutual exclusion is not required *   (assumes one reader  one writer). * *   It requires that the circular buffer size be a power of two, and the *   size of the buffer needs to smaller than the index. So an 8 bit index *   supports a circular buffer upto ( 1  7 )  128 entries, and a 16 bit index *   supports a circular buffer upto ( 1  15 )  32768 entries. * *   The basis for these routines came from an article in Jack Ganssles *   Embedded Muse: http://www.ganssle.com/tem/tem110.pdf * *   In order to offer the most amount of flexibility for embedded environments *   you need to define a macro for the size. * *   First, you need to name your circular buffer. For this example, well *   call it myQ. * *   The size macro that needs to be defined will be the name of the *   circular buffer followed by _SIZE. The size must be a power of two *   and it needs to fit in the get/put indicies. i.e. if you use an *   8 bit index, then the maximum supported size would be 128. * *   The structure which defines the circular buffer needs to have 3 members *   m_getIdx, m_putIdx, and m_entry. * *   m_getIdx and m_putIdx need to be unsigned integers of the same size. * *   m_entry needs to be an array of xxx_SIZE entries, or a pointer to an *   array of xxx_SIZE entries. The type of each entry is entirely up to the *   caller. * *   #define myQ_SIZE    64 *    *   volatile struct *   { *       uint8_t     m_getIdx; *       uint8_t     m_putIdx; *       uint8_t     m_entry[ myQ_SIZE ]; * *   } myQ; * *   You could then use * *       CBUF_Push( myQ, x ); * *   to add a character to the circular buffer, or * *       ch  CBUF_Pop( myQ ); * *   to retrieve an element from the buffer. * *   If you happen to prefer to use C instead, there is a templatized *   version which requires no macros. You just declare 3 template parameters: * *       - The type that should be used for the index *       - The size of the circular buffer *       - The type that should be used for the entry * *   For example: * *       CBUF uint8_t, 64, char    myQ; * ****************************************************************************/推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈关注公众号后台回复「1024」获取学习资料网盘链接。欢迎点赞关注转发在看您的每一次鼓励我都将铭记于心~

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

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

相关文章

唐山企业网站建设公司个人网站开发技术

题干: 单测试点时限: 2.0 秒 内存限制: 1024 MB “我把房门上锁,并非为了不让她进去,而是为了防止自己逃到她身边”。 她又被数学难住了。QQ 小方当然是不会对女生说”不”的。 她的数学题是这样的,她得到了一个十进制大整数…

如何做淘宝网网站域名域名跳转wordpress

1. 对分布式事务的了解 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西, 特别是在微服务架构中,几乎可以说是无法避免。 首先要搞清楚:ACID、CAP、BASE理论。 ACID 指数据库事务正确执行…

网站建设中所涉及的所有链接建设北京同仁医院眼科医生免费咨询

C语言,用函数封装:16进制打印unsigned char *p指向的内存,长度为int l。16个字节,换一次行。16个字节用一个字符串缓存,一次打印。 以下是一个使用函数封装的C语言代码,用于以16进制格式打印unsigned char …

江苏网站建站系统哪家好宁波网站建设运营

拥有一部适合办公的笔记本电脑,可以成为商务人士忙碌工作中强有力的支持。联想旗下的ThinkPad 系列笔记本电脑,一直秉持为高端商务人士服务的理念,以稳定、流畅、安全的使用体验得到广泛认可。其中的ThinkPad T14 锐龙版,更是有着…

网站理念中文企业网站设计欣赏

不良事件和条件可能会中断系统,导致系统无法提供必要的功能和服务。正如我在本系列的前几篇文章中所概述的那样,韧性是大多数系统的一个基本质量属性,因为它们提供了关键的能力和服务,尽管存在着不可避免的困难,但这些…

phpcms 适合什么的网站导购类网站如何做会员互动

“ Advanced ”选项卡 “ Advanced ” ( 高级 ) 选项卡如下图所示。 在“ Advanced ”选项卡中提供了以下字段 : • “ Report ” ( 报告 ): 选中“ Advanced ”选项卡中的“ Cells to Analyze ” &…

运城做网站哪家好深圳专业网站建设定制

Android11适配已安装应用列表 之前做过已安装应用列表的适配,最近国内版SDK升级到33和隐私合规遇到很多问题,于是把已安装应用列表记录一下: 1、在Android11及以上的适配: package com.example.requestinsttallapplistdemoimpo…

站内seo优化发布页全部页面设计

目录 解法: 官方解法: 方法一:深度优先搜索 复杂度分析 时间复杂度: 空间复杂度: 方法二:广度优先搜索 复杂度分析 时间复杂度: 空间复杂度: 给你两棵二叉树的根节点 p 和…

wap网站的未来郴州旅游

文章目录一:AQS简介二:了解AQS 上锁和释放锁的原理1:前言2:上锁(非公平锁)(1):我们从main主函数中点进去(2):从lock进入(3):找到非公平锁中的lock(4):查看acquire()方法(5):查看tryAcquire(arg)方法a:前言介绍b:进入ReentrantLock类中的nonfairTryAcquire方法(6):addWaiter(Nod…

建网站大公司搜索引擎优化的内容有哪些

后退N帧协议(GBN)一、后退N帧协议中的滑动窗口二、GBN发送方必须响应的三件事三、GBN接收方要做的事四、滑动窗口长度一、后退N帧协议中的滑动窗口 发送窗口:发送方维持一组连续的允许发送的帧的序号。 接收窗口:接收方维持一组连…

wnmp搭建后怎么做网站小程序游戏排名

文章目录 1. 介绍2. 使用2-1. 单击双击和长按2-2. 拖动和滑动2-3. 缩放 3. 注意点 1. 介绍 在 flutter 中,GestureDetector 是手势识别的组件,可以识别点击、双击、长按、拖动、缩放等手势事件,并且可以与子组件进行交互,构造函数…

设备建设网站永久免费网站建设系统

Vue 中简易封装网络请求(Axios),包含请求拦截器和响应拦截器 axios简介 Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js Axios官方中文文档 特性 从浏览器创建 XMLHttpRequests从 node.js 创建 http 请求支…

大型网站如何优化湖南省专业建设公司网站

FixedThreadPool 由Executors的newFixedThreadPool方法创建。它是一种线程数量固定的线程池,当线程处于空闲状态时,他们并不会被回收,除非线程池被关闭。当所有的线程都处于活动状态时,新的任务都会处于等待状态,直到有…

手机网站框架黄冈做网站的公司哪家好

今天主要学习了列表渲染和key的作用和原理,先来说说列表渲染,顾名思义想要渲染列表最快的方式就是使用for循环,我们要学习的就是Vue中对标签实现for循环的语法,它和我们传统的js语法有些不同,它是先要有Vue实例中data的…

视频网站大数据建设建设网站的基本知识

基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于模拟退火优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

东莞网站设计出名 乐云践新网站备案收费幕布

2019独角兽企业重金招聘Python工程师标准>>> 跟风学Docker之四:Docker网络解决方案 博客分类: docker 前言:前面的部分一直都是单机跑docker,但实际生产环境不可能只用一台来跑。肯定会用到多台,因为他们都…

网站建设设计图广告公司的经营范围有哪些

postman使用 开发中经常用postman来测试接口,一个简单的注册接口用postman测试: 接口正常工作只是最基本的要求,经常要评估接口性能,进行压力测试。 postman进行简单压力测试 下面是压测数据源,支持json和csv两个格…

贵州新站优化重庆制作网站开发app开发公司

站群服务器"通常指一组被单个实体或组织控制的网络站点,用于提高特定站点在搜索引擎中的排名。在讨论站群服务器与普通服务器的区别时,可能涉及到以下方面: 1. IP地址: 站群服务器: 站群服务器可能涉及多个站点&a…

深圳做手机网站设计推广公司业务话术

文章目录 前言技术资料 前言 随着物联网、大数据、智能制造技术的不断发展,越来越多的企业正在进行工厂的智能化转型升级。转型升级第一步往往是设备的智能化改造,助力设备数据快速上云,实现设备数据共享和场景互联。然而,在生产…