首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

STM32简易多级菜单(数组查表)

1 多级菜单 多级菜单的实现,大体分为两种设计思路: 通过双向链表实现 通过数组查表实现 总体思路都是把菜单的各个界面联系起来,可以从上级菜单跳到下级菜单,也可从下级菜单返回上级菜单。...数组查表的方式比较简单,易于理解,本篇就来使用数组查表发在RVB2601上实现多级菜单的显示。...2 代码实现 2.1 数组查表 首先需要定义一个结构体: typedef struct { uchar current; uchar up;//向上翻索引号 uchar down;//向下翻索引号...,"<--"); } //省略... 2.3 按键切换页面 页面的切换,这里里简单的按钮轮询为例,比如初始显示欢迎界面的状态下,按下不同按键后,通过数组查表...2383685931834179587&format_id=10002&support_redirect=0&mmversion=false 4 总结 本篇介绍了一种简易的多级菜单的显示方法,本质是通过数组查表

2.1K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    三顿的产品六步

    正好,《详谈丛书》来到了三顿创始人吴骏,就买来看了看。 三顿不止做了线上渠道,还有线下咖啡馆。 用吴骏的话说,咖啡缺了线下咖啡馆,就缺少了对于用户体感的触达。...吴骏是做广告出身,所以在最开始做三顿半时,有很多选择是他的专业本能体现,比如切入什么样的品类,有什么样的审美,比如三顿的造型和视觉体系。...三顿的体验包括了视觉体系,还有几十种咖啡豆的供应链,还有要把空杯子回收回来,这些都是这个结构的一部分。 产品,好的产品就是要一件事一件事的做好,一个个细节的抠好,抠到最后一秒。...其实上面六步,不仅仅适用于三顿,或者做一款产品。我们工作、生活中的很多事情都适用,做任何项目,做任何系统,讲任何一个议题都适用。

    17630

    JS算法之回溯

    今天,我们继续探索JS算法相关的知识点。我们来谈谈关于「回溯」的相关知识点和具体的算法。如果,想了解其他数据结构的算法介绍,可以参考我们已经发布的文章。如下是算法系列的往期文章。...你能所学到的知识点❝ 何为回溯集合的组合、排列利用回溯算法解决其他问题 ❞----何为回溯❝ 回溯可以看做「暴力的升级版」,它在解决问题时的每一步都「尝试所有可能的选项」,最终「找出所有可行的解决方案...❞回溯非常适合解决「由多个步骤组成的问题,并且每个步骤都有多个选项」。❝ 用回溯解决问题的过程可以形象的「用一个树形结构表示,求解问题的每个步骤可以看作树中的一个节点」。...❝ 因此,采用回溯解决问题的过程实质上是在树形结构中从根节点开始进行「深度优先遍历」 ❞通常,回溯的深度优先遍历用「递归」代码实现。...----小结❝ 如果解决一个问题需要若干步骤,并且在每一步都面临着若干选项,那么可以尝试用「回溯」解决问题。 ❞应用回溯能够解决「集合的排列、组合」的很多问题。

    1.2K20

    JS生成字节码生成技术,用字节码保护商业NodeJS源码!

    实现原理 nodejs的内核中对于js的解析,使用的是谷歌的v8引擎。v8引擎内置有js虚拟机。通过v8虚拟机,可以将js代码编译为字节码。而v8虚拟机是能够识别和直接运行该字节码的。...因此,以下执行逻辑成为可能: 1、js代码 -> js字节码 2、js字节码 -> nodejs ->运行 实现代码 (例程) 生成字节码文件的部分: var v8 = require('v8...(); //生成字节码 var script = new vm.Script(js_code, {produceCachedData: true}); var byte_code = script.cachedData...,读取、运行字节码。...对于JS代码产品的保护,除了可以使用字节码技术,还可以用代码混淆加密的办法,比如:JShaman(http://www.jshaman.com/)是一款对JS代码进行混淆加密的工具,也适用于nodejs

    3.3K00

    【网络编程系列】一:字节顺序的大端与小端表示

    一、字节字节序,也就是字节的顺序,指的是多字节的数据在内存中的存放顺序。 在几乎所有的机器上,多字节对象都被存储为连续的字节序列。...也就是说: Big Endian 是指低地址端 存放 高位字节。 Little Endian 是指低地址端 存放 低位字节。...另外,网络传输一般采用 Big Endian,也被称之为网络字节序,或网络序。当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。...:TCP/IP各层协议将字节序定义为 Big Endian,因此TCP/IP协议中使用的字节序是大端序。...另外用注意,数字所占位数小于或等于一个字节(8 bits)时,不要用htons转换。这是因为对于主机来说,大小尾端的最小单位为字节(byte)。

    1.7K60

    聊聊字节跳动 Node.js RPC 的设计实现

    背景 大家好,我们是字节跳动 Web Infra 团队,目前团队主要专注的方向包括现代 Web 开发解决方案、低代码搭建、Serverless、跨端解决方案、终端基础体验、ToB 等等。...Node.js 基础设施建设是我们负责的方向之一,包括但不限于: 服务发现:Consul 服务治理:Logger、Metrics、Trace 服务调用:HTTP ( Fetch )、RPC ( Thrift...插件 支持 Node.js、Golang 等后端语言的性能分析平台 维护 Node.js 应用的容器镜像 在 2021 年上半年,由于现有的 Node.js RPC 实现逐渐跟不上字节跳动业务发展节奏...因此,对于想做全栈或者后端 Node.js 的同学来说,早点了解与使用 RPC 是非常有必要的。 既然 RPC 这么重要,那么到底该怎么去理解它呢?...现状 & 需求 在字节跳动内,由于各种原因,存在有多种序列化协议、网络协议,这导致我们没有办法直接使用开源的 Apache Thrift、gRPC,只能选择自建 RPC 实现。

    89730

    聊聊字节跳动 Node.js RPC 的设计实现

    背景 大家好,我们是字节跳动 Web Infra 团队,目前团队主要专注的方向包括现代 Web 开发解决方案、低代码搭建、Serverless、跨端解决方案、终端基础体验、ToB 等等。...Node.js 基础设施建设是我们负责的方向之一,包括但不限于: 服务发现:Consul 服务治理:Logger、Metrics、Trace 服务调用:HTTP ( Fetch )、RPC ( Thrift...插件 支持 Node.js、Golang 等后端语言的性能分析平台 维护 Node.js 应用的容器镜像 在 2021 年上半年,由于现有的 Node.js RPC 实现逐渐跟不上字节跳动业务发展节奏...因此,对于想做全栈或者后端 Node.js 的同学来说,早点了解与使用 RPC 是非常有必要的。 既然 RPC 这么重要,那么到底该怎么去理解它呢?...现状 & 需求 在字节跳动内,由于各种原因,存在有多种序列化协议、网络协议,这导致我们没有办法直接使用开源的 Apache Thrift、gRPC,只能选择自建 RPC 实现。

    1.6K30

    聊聊字节跳动 Node.js RPC 的设计实现

    背景 大家好,我们是字节跳动 Web Infra 团队,目前团队主要专注的方向包括现代 Web 开发解决方案、低代码搭建、Serverless、跨端解决方案、终端基础体验、ToB 等等。...Node.js 基础设施建设是我们负责的方向之一,包括但不限于: 服务发现:Consul 服务治理:Logger、Metrics、Trace 服务调用:HTTP ( Fetch )、RPC ( Thrift...插件 支持 Node.js、Golang 等后端语言的性能分析平台 维护 Node.js 应用的容器镜像 在 2021 年上半年,由于现有的 Node.js RPC 实现逐渐跟不上字节跳动业务发展节奏...因此,对于想做全栈或者后端 Node.js 的同学来说,早点了解与使用 RPC 是非常有必要的。 既然 RPC 这么重要,那么到底该怎么去理解它呢?...现状 & 需求 在字节跳动内,由于各种原因,存在有多种序列化协议、网络协议,这导致我们没有办法直接使用开源的 Apache Thrift、gRPC,只能选择自建 RPC 实现。

    1.8K30

    一次搞透,面试中的数1问题的五种方法!

    总的来说,n的长度是32bit,如果n的值选取完全随机,平均期望由16个1构成,平均下来16次,节省一的计算量。 三、查表。...提前计算好结果数组: result[1]=1; result[2]=1; result[3]=2; … result[58585858]=15; … 伪代码: return result[n]; 查表的好处是...四、二次查表查表,非常快,只查询一次,但消耗内存太大,在工程中几乎不被使用。 算法设计,本身是一个时间复杂度与空间复杂度的折衷,增加计算次数,往往能够减少存储空间。...2次查表),内存空间是不是对应减少一呢?...五、总结 数1,不难;但其思路有优化过程,并不简单: (1)位移,32次计算; (2)n&(n-1),能消除一个1,平均16次计算; (3)查表,1次查表,2.5G内存; (4)二次查表,2次查表

    21510

    【算法随记七】巧用SIMD指令实现急速的字节流按位反转算法。

    在 c语言实现bit反转的最佳算法-从msb-lsb到lsb-msb一文的回复一栏中,我无意看到ytfhwfnh的回复如下:    我觉得查表不错,但是表太大了,建议改为字节为单元的查表。...查表,再翻转高低字节,再翻转一个int32的4个字节。就能搞定了。   ...,高4位 */ u_char ucTmp = (ucBits[i] >> 4) & 0x0F; /* 查表得反转的字节,并转为u_long */ u_long...,低4位 */ ucTmp = ucBits[i] & 0x0F; /* 查表得反转的字节,并转为u_long */ ulTmp = BitReverseTable16...那么仔细的观察上面的代码,除了查表之外,其他的计算太容易用SSE相应的指令实现了,或计算,并计算,注意移位计算SSE指令的_mm_srli_si128 、_mm_slli_si128并不是按位移位的,他是按照字节进行的移位

    1.2K20

    后台开发中的时空转换艺术

    利用这条CPU指令,我们可以用一条指令就直接得到数据的实际有效位长,这比二分确定位长要高效的多,而在GCC里,有对这条CPU指令专门做了内建函数,更方便于我们的使用: 第二步:得到有效位长之后,可以通过位长来进行查表...解码方案 由于前缀必定在第一个字节中,因此我们可以遍历第一个字节的所有情况,进行查表,总共256种可能,全部事先计算出来,解码的时候直接用第一个字节查表,即可得到数据的实际长度,以及需要右移的位数。...特别是在早期的一些定长协议中, 0的出现概率甚至达到了一以上,无论是对于存储,还是对于网络流量都是巨大的浪费。...遍历整个编码树,将每个字符的编码构造成一个编码表,即可通过查表的方式进行编码。不难发现,出现概率越大(权重越大)的值,就自动的离根节点越近,其编码也就越短。...我们把一提取出来作为下标,另一仍然用二分查找。先划分2^16个桶,以UIN的高16位进行分桶。那么显然,同一个桶中的所有UIN的高16就都是相同的,就无需再重复记录了,只需要记录低16位即可。

    58770

    字节大佬带你深入分析Node.js的底层原理

    作者介绍:陈跃标,ByteDance Web Infra 团队成员,目前主要负责 Node.js 基础架构方向的工作 本文内容主要分为两大部分,第一部分是 Node.js 的基础和架构,第二部分是 Node.js...一 Node.js 基础和架构 Node.js 的组成 Node.js 代码架构 Node.js 启动过程 Node.js 事件循环 二 Node.js 核心模块的实现 进程和进程间通信 线程和线程间通信...Node.js代码架构 上图是 Node.js 的代码架构,Node.js的代码主要分为 JS、C++、C 三种: JS 是我们平时使用的那些模块(http/fs)。...3.3 初始化模块加载器 Node.js 首先传入 C++ 模块加载器,执行 loader.js,loader.js 主要是封装了 C++ 模块加载器和原生 JS 模块加载器,并保存到 env 对象中。...接着传入 C++ 和原生 JS 模块加载器,执行 run_main_module.js。 在 run_main_module.js 中传入普通 JS 和原生 JS 模块加载器,执行用户的 JS

    2.3K30

    趣味算法:JS实现红绳算法(匹配合适的另一

    说人话 JS里面实现哈希表,用的是数组形式。通过key计算出hash作为下标,将value作为下标对应在数组中的值。...(一)线性探测 线性探测是最简单的处理冲突的方法。 (1)插入元素:插入元素时,如果发生冲突,算法将从该槽位向后遍历哈希表,直到找到表中的下一个空槽,并将该值放入到空槽当中。...查找元素时,首先散列值所指向的槽,如果没有找到匹配,则继续从该槽向后遍历哈希表,直到:1)找到相应的元素;2)找到一个空槽(指示查找的元素不存在);3)整个哈希表都遍历完毕(指示该元素不存在并且哈希表已满,JS...数组可以动态拓展长度,这个问题不存在) 线性探测存在的缺点: (1)处理溢出需要另编程序。...用JS实现单链表 function LinkedList() { // Node辅助类,表示要加入列表的项,element是即将添加到列表的值,next是指向列表中下一个节点项的指针 let

    69220

    前端秘基础式终章----欢迎来到JS的世界

    " onclick="alert('welcome to js!')"... 通过script标签引入JS代码 3.外部式 通过JS文件引入 需要注意的是css在引入的时候是link标签搭配href属性,而JS在引入的时候则是script标签搭配src属性 三.JS中的变量 1.变量的定义...var a = 0; let a = 0; 上述两种定义变量的方法都行,其中let是在var的基础上做一些优化和改进 2.JS动态类型变量 与Python一样,JS中的变量属于动态类型变量,它的变量类型可以随着数据类型的改变而改变...2.1强类型和弱类型 强类型是指数据类型的转变需要进行强制转换 弱类型是指数据类型转变不需要强转,JS,Python是常见的弱类型语言 3.JS中的变量类型 需要特别注意的是infinity表示正无穷

    9910
    领券