关键字:FreeRTOS,STM32,GD32 FreeRTOS 介绍 为什么要用实时操作系统? 软件中的数据交互只有 2 种,一种是轮询,一种是通知。...我们把必须的文件加到我们的工程中,长这样: FreeRTOS移植目录结构 其中,FreeRTOSConfig.h 是配置头文件,几个.c 是核心文件。...还有一个配置是:configSYSTICK_CLOCK_HZ,一般跟 configCPU_CLOCK_HZ 一样就行了,我们可以不管它,在 port.c 中有描述: #ifndef configSYSTICK_CLOCK_HZ...NVIC 的全称是 Nested Vectored Interrupt Control,即嵌套向量中断控制器,在 Cortex M3 和 M4 内核的 MCU 中,每个中断的优先级都是 8 bit 的寄存器来表示...什么意思呢? 当调用了 FreeRTOS 的关中断后,优先级比这个定义低的中断都会被关闭。
我们再面试中,总是各种的会提到关于 Java 的八股文,看各类博主总是提及 Java 的八股文,今天我们也来说说关于八股文中的面试题中的 MVCC 到底是个什么意思?...MVCC 在JAVA中,MVCC(Multi-Version Concurrency Control,多版本并发控制)是一个并发控制的方法,它允许读和写操作无锁地并发执行。...相反,一些JAVA数据库连接库(如JDBC)或特定的数据库产品(如PostgreSQL)可能使用了MVCC技术。 在MVCC中,每个数据项可以有多个版本,每个版本都与一个特定的事务相关联。...具体来说,MVCC通过为数据项保留多个版本来实现以下目标: 1.无锁读操作:在MVCC中,读操作不需要获取锁,因为它们可以读取数据的一个一致的快照(即某个时间点的数据版本)。...6.Undo日志:在实现MVCC时,通常会使用Undo日志来存储旧版本的数据。当数据被修改时,原始数据会被存储在Undo日志中,以便在需要时能够回滚到之前的状态或构造出数据的早期版本。
就是使用信号量等rtos自带特性的时候,务必先初始化然后在发生信号量或接收。...而且在中断中发送信号量或队列的时候,务必把使能中断的语句放在初始化freertos之后,尤其是cubemx生成的代码,默认是把中断初始化放在freertos初始化之前,如果这个时候,外部有中断触发,就立刻发送信号量...,但是此时却未初始化信号量,导致系统死机在configASSERT( xQueue );
为了描述一个算法的效率,就用到了这个大O,包括: O(n) 线性时间操作 O(1) 常数时间操作 O(log n) 对数时间操作 例如在 Redis 的文档中,对每个命令都会给出复杂度描述 ? ?...明白大O的作用有助于我们提高程序的效率,下面看看他们的具体含义 O(n) 线性时间操作 假设有一个盒子,其中有多个印着数字的卡片(例如 1, 2, 3, 4, … 16) 现在我们被要求找出数字6的卡片...(1, 2, 3, 4, … 16),在盒子外面写上盒子中有16个数字 当有人问我们盒子里有多少个数字的时候,我们看一眼盒子上的标记就可以马上告诉他有16个 这就是常数操作,记为 O(1) O(log...16=2的4次方 ? 在比如有 64 个数字,找到 64 需要 6 步 ?...很不错 知道了大O的含义,我们也就可以更好的选择算法,例如 redis 中的 keys命令,他的复杂度是 O(n),我们就要慎用了
在计算机领域,dump一般译作转储,有动词和名词两种场景 1 为什么dump 一般指将数据导出、转存成文件或静态形式。比如可以理解成:把内存某一时刻的内容,dump(转存,导出,保存)成文件....因为程序在计算机中运行时,在内存、CPU、I/O等设备上的数据都是动态的(或者说是易失的),也就是说数据使用完或者发生异常就会丢掉。...2 dump转储的什么 就是将动态(易失)的数据,保存为静态的数据(持久数据)。像程序这种本来就保存在存储介质(如硬盘)中的数据,也就没有必要dump。...现在,dump作为名词也很好理解了,一般特指上述过程中所得到的文件或者静态形式。就是指dump(动词)的结果文件。...常出现dump的场景:Unix/Linux中的coredump,Java中的headdump和threaddump,还有就是tcpdump工具。
大家好,又见面了,我是你们的朋友全栈君。 部分编程的初学者都会问”void是什么意思”,”为什么很多函数前都要加个void”.实际上,void最简单的解释就是把0转换成空类型的意思。...下面用各个开发语言来详解void 1.C语言中的void 表示空类型,它跟int,float是同地位的,一般用在没有返回值的函数中,比如你写void main (),主函数完了不用写return 语句,...但是如果是int main ()或者是main (),你不写return 语句它就会有错误 2.Java语言中的void void是无返回值的意思。...} 原因就是因为上面 的返回类型必须是String型 如果写的是void意思就是不需要返回类型。...所以就没必要写return 了 如果方法上面写了某种返回类型 就必须写return后面跟 相应的类型值。
下面需要移植FreeRTOS了,将FreeRTOS的源码文件复制到工程文件夹中,一些用不到的文件可删除(哪些文件需要用到可参考上一篇的源码结构分析部分),然后在Keil中也创建一个FreeRTOS目录,...Build Time Elapsed: 00:00:23 有一个错误,找不到"FreeRTOSConfig.h",这个文件在FreeRTOS源码的Demo文件中, 将Demo中的"FreeRTOSConfig.h...来标记MCU的频率, 在"FreeRTOSConfig.h" :的87~95行: #ifdef __ICCARM__ #include extern uint32_...中的SVC_Handler() PendSV_Handler() SysTick_Handler()即可 修改后的stm32f4xx_it.c的110~145行: /** \* @brief This...又提示4个hook函数未定义, 这是因为在"FreeRTOSConfig.h"中定义了这些钩子函数,但未找到函数定义,我们先注释掉这些定义, 就是将configUSE_IDLE_HOOK之类的宏定义定义为
题目部分 在Oracle中,请简单描述DG的架构。...若不配置传输进程和模式的话,在Oracle 11g下则默认为LGWR ASYNC方式,在Oracle 10g下则默认为ARCH模式。下表列出了DG传输进程及其模式的关系。...③ 备库的RFS进程把接收到的日志写入到Standby Redo Log日志中。...在日志接收中归档日志会被放在LOG_ARCHIVE_DEST_n指定的位置。 3、日志应用(Redo Apply) 日志应用服务,就是在备库上重演主库的日志,从而实现两个数据库的数据同步。...另一种是归档应用,这种方式在主库上发生日志切换,会触发备库的归档操作,归档完成后触发恢复。这也是默认的恢复方式。
开始是自己移植的freertos,后面看到可以在软件上面直接搞,熟悉了还是很方便的。...双击Freertos选择 6....双击OSs下的Freertos,出现Component Inspector - FreeRTOS ,这里面可以配置一些freertos的选项 配置在FreeRTOSConfig.h也可以修改 #define...configUSE_PREEMPTION 1 #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 #define configCPU_CLOCK_HZ...点击生成代码 生成代码完成之后,可以看到工程中SDK下已经有rtos了 后面的操作就是移植几个任务就行了,可以参考我之前的freertos系列文章。
大家好,又见面了,我是你们的朋友全栈君。...展开全部 1、在JAVA程序中由String和“+”参与的运算变量都会被转为字符类型,可以理解为先把32313133353236313431303231363533e4b893e5b19e31333335313237...变量转为字符型然后在进行字符拼接。...System.out.println(“str is “+str); System.out.println(“booleanstr is “+booleanstr); } } 2、多个变量参与运算时JAVA程序每行的执行顺序是从左到右
♣ 题目部分 在Oracle中,请简单描述DG的架构。 ♣ 答案部分 DG架构图如下所示: ?...若不配置传输进程和模式的话,在Oracle 11g下则默认为LGWR ASYNC方式,在Oracle 10g下则默认为ARCH模式。下表列出了DG传输进程及其模式的关系。...③ 备库的RFS进程把接收到的日志写入到Standby Redo Log日志中。...在日志接收中归档日志会被放在LOG_ARCHIVE_DEST_n指定的位置。 3、日志应用(Redo Apply) 日志应用服务,就是在备库上重演主库的日志,从而实现两个数据库的数据同步。...另一种是归档应用,这种方式在主库上发生日志切换,会触发备库的归档操作,归档完成后触发恢复。这也是默认的恢复方式。
芯片是stm32f103zet6,(freertos代码风格是在是比较差,尤其是名称,看ucos爽多了) /* FreeRTOS V9.0.0 - Copyright (C) 2016 Real... ( 7 ) 这个宏定义的意思是任务中,只能使用0 1 2 3 4 5 6的优先级7个优先级不包括7,这里之所以是7,是因为mdk的cmsis_os.h文件里面有一个枚举...,当然如果没有CMSIS-RTOS API的话,可以定义自己的优先级数量,在官方提供的demo中通常是5. /* Cortex-M specific definitions. */ #ifdef __NVIC_PRIO_BITS...:在nvic中的外设中断的优先级一般来讲,如果在中断函数中要使用freertos的api就只能将优先级设置为5-15,0-4是不允许的,除非0-4的中断优先级的中断函数中不适用任何freertos的api...:接通将pendsv systick的优先级设置为最低,在stm32f103中就是15. configPRIO_BITS这个值是4,因为stm32F1只是用了高四位的。
刚刚在论坛里有人“问怎么样把添加文章时的所填的“文章摘要”的内容变为该文章的描述(即description) ”,以下是解决方法: 1、在根目录include/model/log_model.php(大概在...124行)找到 'template' => $row['template'], 在后面加入 'excerpt' => $row['excerpt'], 2、然后在echo_log.php中你需要调用的地方加入...> 另一种方法实现文章页描述调用摘要的方法:1不变,找到根目录include/controller中的(大概86行) $site_description = extractHtmlData($log_content..., 90); 把其中的log_content改为excerpt即可,其中的90为字符数,如果不需要截取和清除格式,请直接把上的代码改为 $site_description = $excerpt;
通常情况下,FreeRTOS回调空闲任务钩子函数(需要设计者自己实现),在空闲任务钩子函数中设置微处理器进入低功耗模式来达到省电的目的。...替代API在queue.h头文件中有详细描述。 注:“替代”队列函数已经被弃用,在新的设计中不要使用它!...详细描述见FreeRTOS software timers。...注意下面的描述中,在中断服务例程中仅可以调用以“FromISR”结尾的API函数。...优先级小于等于这个宏所代表的优先级时,程序可以在中断服务程序中安全的调用FreeRTOS API函数;如果优先级大于这个宏所代表的优先级,表示FreeRTOS无法禁止这个中断,在这个中断服务程序中绝不可以调用任何
首先,谈到身份,我们主要关注两个问题: 你如何建立或者说描述你的身份? 你如何证明你描述的身份就是你? 在现实世界和 Web2 中,我们描述身份的方式是大致相同的。...现实世界和 Web2 中描述身份 现实生活中,你描述身份的方式可能是认识新朋友时的自我介绍,也可能是一张名片、一份简历,更正式的方式则是展示自己的身份证、护照。...可以发现,无论在现实生活,还是在 Web2 中,描述身份的方式更多以主观性描述为主。...无论是在现实生活还是 Web2 中,描述身份和证明身份的时候都会遇到同样的问题——你在描述自己,写简历或者想自我介绍时,需要绞尽脑汁,如何更好地证明“最好”的自己;当你描述身份之后,其他人还需要通过背景调查或查看证明文件等方式来验证你的身份...在 Web3 上描述身份 因为区块链的存在、分布式账本的应用,在 Web3 中,参与者的行为将被永久且真实的记录,其真实性无法被篡改。
无论采用哪种寄宿方式,在为某个服务创建ServiceHost的过程中,WCF框架内部会执行一系列的操作,其中最重要的步骤就是为服务创建服务描述(Service Description)。...在本篇文章中,我们将对服务描述进行全面的介绍。...: Behaviors:服务行为(Service Behavior)的集合 ConfigurationName:服务的在配置文件中的名称,默认为服务类型的全名(命名空间+类型名称) Name:...service>的Name属性更改了,在服务定义中需要通过ServiceBehaviorAttribute对ConfigurationName进行相应的修正,如下面的代码所示。...四、 OperationDescription和OperationBehavior System.ServiceModel.Description.OperationDescription定义了一系列的属性用以描述定义在服务契约中操作契约
A 扫描上下文描述符 这里介绍一种新的空间描述符,名为扫描上下文描述符(SCD),该方法从分割原始测量数据开始,并使用鸟瞰图(BEV)将其投影到离散化的容器中,在划分BEV bin时,考虑了两种类型的垂直基座...在(b)中,每个箱子颜色表示箱子中的最大高度;红色为高(例如10米),蓝色为低(例如0米) 图4,顶行中的三个白点表示地面真相轨迹中的三个样本节点。车辆在变道时曾三次驶过该地。...比较三个样本CCs,内容保留在每个列中,而节点之间只移动列顺序,描述符中由运动引起的变化在描述符空间中显示为SCD列顺序偏移 B 三阶段位置识别 我们的位置识别算法由三部分组成:(i)使用检索键进行位置检索...(c) 上下文增强由简单的顺序翻转组成。类似地,在PC中,增广描述符显示出比原始描述符更接近地图的距离。 图6 数据集轨迹覆盖在每个航空地图上。...右边的洋红色方框显示了NAVER LABS数据集Pangyo序列中的宽阔道路。 实验 我们在各种数据集上验证了我们的空间描述符和位置识别算法。
♣ 题目部分 在Oracle中,请简单描述一下OGG的体系结构。 ♣ 答案部分 下图为OGG进程结构图: ?...在初始数据装载阶段,Extract进程直接从源端的数据表中抽取数据;在初始数据同步完成以后,Extract进程负责捕获源端数据的变化(包括DML和DDL)。...直通模式提高了Data Pump的效率,因为生成后的对象不需要继续进行检索。 在OGG的生产环境中,一般都要配置Pump进程。...与Pump进程对应的叫Server Collector进程,不过对于这个进程不需要特别地关注,因为在实际操作过程中,无需DBA对其进行任何配置即可自动运行。...RAC下的OGG 对于RAC环境,OGG的相关软件和工作目录需要配置在共享磁盘(Shared Disk)环境中,从而保证对RAC的所有节点都是可用的,从任何一个节点都可以启动OGG的进程。
简述 文章 记录了 FreeRTOS 中任务切换的过程, 提到触发任务切换的两种情况 : 高优先级任务就绪抢占和同优先级任务时间共享(包括提前挂起)。...通过设置文件 FreeRTOSConfig.h 中 configTICK_RATE_HZ 设置任务节拍中断频率, 在启动任务调度器时,系统会根据另一个变量, CPU 的频率 configCPU_CLOCK_HZ...系统在每一次节拍计数器中断服务程序xPortSysTickHandler(平台实现 port.c 中) 中调用处理函数 xTaskIncrementTick, 依据该函数返回值判断是否需要触发 PendSV...节拍计数器溢出 涉及的变量, 定义在 task.c开头。...FreeRTOS 提供两种类型的延时函数 普通延时函数 vTaskDelay 一般情况下,需要延时一定时间,就调用此函数,将需要的延时时间转换为对应系统节拍数传递(如宏pdMS_TO_TICKS()),
于是又讨论到了varchar在MySQL中的存储方式。,以证明增加长度所占用的空间并不大。那么我们就看看varchar在mysql中到底是如何存储的。 ?...varchar类型在mysql中是如何定义的? 先看看官方文档: ? ?...为此相比CHAR字符数据而言,其能够比固定长度类型占用更少的存储空间。不过在实际工作中,由于某系特殊的原因,会在这里设置例外。...我们在评估到底是使用VARCHAR数据类型还是采用CHAR数据类型时,就需要进行均衡。在实际项目中,我们会考量如下情况。 是根据字符的长度来判断。如某个字段,像人的名字,其最长的长度也是有限的。...这是什么意思呢?如现在用户需要存储一个地址信息。根据评估,只要使用100个字符就可以了。但是有些数据库管理员会认为,反正Varchar数据类型是根据实际的需要来分配长度的。还不如给其大一点的呢。
领取专属 10元无门槛券
手把手带您无忧上云