当前位置: 首页 > news >正文

分析rand()和srand()函数的功能

rand()和srand()函数原型:

int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。

void srand(unsigned int seed)用来给rand() 设置随机数发生器,随机数发生器输出不同的数值,rand() 就会生成不同的随机数

1)、在“D:\Keil_v5\ARM\ARMCC\include\stdlib.h”中,有下面的定义:

#ifdef __USE_ANSI_EXAMPLE_RAND

#define srand _ANSI_srand

#define rand _ANSI_rand

#define RAND_MAX 0x7fff

#else

#define RAND_MAX 0x7fffffff  /*MDK-ARM默认使用RAND_MAX0x7fffffff*/

#endif

MDK-ARM默认使用RAND_MAX0x7fffffff

2)、在“D:\Keil_v5\ARM\ARMCC\include\time.h”中,有下面的定义:

extern _ARMABI time_t time(time_t * /*timer*/);

但是time没有具体的函数,因此“srand((unsigned int)time(NULL))”就不能用了。

srand()函数用生成随机数种子。当我们使用相同的种子时,将生成相同的随机数序列。为了能rand()函数生成不同的随机数,可以使用“TIM1的计数器值”作为作为种子值因为“TIM1的计数器值”是不断变化的,这样每次运行rand()函数,就可以生成不同的随机数序列。

3)、测试rand()和srand()函数

void TIM1_Interrupt_Initializtion(u16 arr,u16 psc);//函数声明

//定时器1中断初始化

//APB2时钟为72MHz

//arr:自动重装值。

//psc:时钟预分频数

//TIM_CKD_DIV1:定时器时钟 = 输入频率

//TIM_CKD_DIV2:定时器时钟 = 输入频率/2

//TIM_CKD_DIV4:定时器时钟 = 输入频率/4

//TIM1溢出时间: arr*psc/72000000/TIM_CKD_DIVx

//TIM1_Interrupt_Initializtion(1000,72);

//当arr=1000,psc=72时,则为1ms,误差为1us;

void TIM1_Interrupt_Initializtion(u16 arr,u16 psc)

{

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

//使能定时器TIM1的APB2外设时钟

//定时器TIM1初始化

TIM_TimeBaseStructure.TIM_Period = arr-1;

//设置在下一个更新事件装入活动的自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler =psc-1;

//设置用来作为TIMx时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

//设置时钟分割:TDTS = Tck_tim

//计算公式:arr*psc/72000000/1,当arr=1000,psc=72时,则为1ms,误差为1us;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

//TIM向上计数模式

TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

//根据指定的参数初始化TIMx的时间基数单位

  TIM_SetCounter(TIM1,0);                      //设置TIM1的计数器值为0;

  TIM_ClearFlag(TIM1, TIM_FLAG_Update);        //清除TIM1溢出的待处理标志位

TIM_ClearITPendingBit(TIM1, TIM_IT_Update ); //清除TIM1中断的待处理位

// TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE ); //允许TIM1溢出产生中断

/*中断优先级NVIC设置

NVIC_PriorityGroup_4设置NVIC中断分组4:表示抢占优先级为4位,取值为0~15,没有响应优先级,取值为0

NVIC_PriorityGroup_3设置NVIC中断分组3:表示抢占优先级为3位,取值为0~7,响应优先级只有1位,取值为0~1

NVIC_PriorityGroup_2设置NVIC中断分组3:表示抢占优先级为2位,取值为0~3,响应优先级只有2位,取值为0~3

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4

NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;  //TIM1中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 11;  //设置抢占优先级为11

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //设置响应优先级为0

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;     //IRQ通道被使能

NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化NVIC嵌套向量中断控制寄存器

*/

TIM_Cmd(TIM1, ENABLE);//使能TIM1外设

}

#include "stdlib.h"

//rand()和srand()需要包含stdlib.h头文件

void Test_rand_And_srand(void)

{

unsigned int rand_Value;//声明无符号32位变量rand_Value

unsigned int ms;//声明无符号32位变量ms

srand( TIM_GetCounter(TIM1) );//使用“TIM1的计数器值”作为作为种子值

rand_Value=rand(); //返回一个范围在0到RAND_MAX之间的伪随机数

ms=rand_Value%1000+1;//ms为1到1000之间的数

printf("ms=%u\r\n",ms);

}

int main(void)

{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4

USART1_Serial_Interface_Enable(115200);

printf("\r\nCPU reset\r\n");

    TIM1_Interrupt_Initializtion(1000,72);

//当arr=1000,psc=72时,则为1ms,误差为1us;

  while(1)

  {

Test_rand_And_srand();

  }

}

仿真结果:

注意:如果不初始化T1M1,rand()就会生成相同的随机数,这个不是我们想要的结果。测试如下:

因此,要使用srand()设置种子值,即将“种子值”作为rand()信号源,输入变化,输出也会跟着变化,这个输出值就是随机数。

相关文章:

分析rand()和srand()函数的功能

rand()和srand()函数原型: int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。 void srand(unsigned int seed)用来给rand() 设置随机数发生器,随机数发生器输出不同的数值,rand() 就会生成不同的随机数 1)、在“D:\Keil_v5\AR…...

架构师如何构建个人IP:职业规划与业务战略的双重提升

在数字化时代,软件架构师的角色已从单纯的技术专家转变为兼具技术领导力和业务影响力的复合型人才。如何构建个人IP,提升行业影响力,成为架构师职业发展的关键课题。本文从个人认知、业务战略、架构决策、产品思维四个维度,探讨架…...

CSS知识总结

一、CSS核心概念解析 1.1 选择器体系(重点) 基础选择器: /* ID选择器 */ #header { background: #333; }/* 类选择器 */ .btn-primary { color: white; }/* 属性选择器 */ input[type"text"] { border: 1px solid #ccc; } 组合…...

CRS 16 slot 设备硬件架构

目录 1. 核心组件 1.1 线路卡与物理接口模块 1.2 交换结构与容量 1.3 控制与管理 1.4 风扇与散热 1.5 电源与告警 2. 插槽编号与机箱布局 2.1 前侧(PLIM 面) 2.2 后侧(MSC 面) 2.3 插槽配对 1. 核心组件 1.1 线路卡与物…...

人工智能浪潮中Python的核心作用与重要地位

在人工智能(Artificial Intelligence,AI)蓬勃发展的时代,Python已然成为推动这一技术进步的关键编程语言。从复杂的机器学习算法实现,到前沿的深度学习模型构建,再到智能系统的部署,Python无处不…...

【了解】数字孪生网络(Digital Twin Network,DTN)

目录 一、为什么?二、是什么?三、什么架构?四、如何应用?参考 一、为什么? 一方面,网络负载不断增加,,网络规模持续扩大带来的网络复杂性,使得网络的运行和维护变得越来越复杂。另一…...

[C语言]第一章-初识

目录 一.引言 二.MinGW 下载与安装 1.什么是 MinGW 2.下载 MinGW 3.安装 MinGW 4.配置 MinGW 环境变量 三.VS Code 下载与安装 1.什么是 VS Code 2.下载 VS Code 3.安装 VS Code 4.汉化 5.安装扩展插件 C/C 截图 四.编写并运行 Hello World 程序 代码解释 运行…...

如何用git将项目上传到github

步骤 1.创建仓库 2.记下仓库的url 3.在本地初始化仓库 路径要在项目下 cd /path/to/your/vue-project git init 4.创建touch .gitignore文件 在项目根目录下创建 .gitignore 文件,用于指定 Git 忽略哪些文件或文件夹 5.添加和提交项目文件 将文件提交到版本控…...

C++入门(上)--《Hello C++ World!》(1)(C/C++)

文章目录 前言命名空间域命名空间的用法 C的输入和输出缺省参数函数重载auto关键字(C11)范围for 前言 C不是C# C兼容大部分C的东西,但不是完全(98%的样子,除非遇到了不兼容的,那就记一下,不然就认为自己在C里面写的那些可以写到C里…...

架构思维:构建高并发读服务_基于流量回放实现读服务的自动化测试回归方案

文章目录 引言一、升级读服务架构,为什么需要自动化测试?二、自动化回归测试系统:整体架构概览三、日志收集1. 拦截方式2. 存储与优化策略3. 架构进化 四、数据回放技术实现关键能力 五、差异对比对比方式灵活配置 六、三种回放模式详解1. 离…...

代码随想录第33天:动态规划6(完全背包基础)

一、完全平方数(Leetcode 279) 本题与“零钱兑换”基本一致。 1.确定dp数组以及下标的含义 dp[j]:和为j的完全平方数的最少数量为dp[j] 2.确定递推公式 dp[j] 可以由dp[j - i * i]推出, dp[j - i * i] 1 便可以凑成dp[j]。 …...

Android控件View、ImageView、WebView用法

一 控件清单 View、ImageView、WebView 二 控件UI代码 <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app=&qu…...

关于浏览器页面自动化操作

Selenium 是一个用于自动化浏览器操作的强大框架&#xff0c;广泛应用于Web应用程序的测试自动化。它主要由以下几个核心组件组成&#xff1a; Selenium WebDriver&#xff1a; WebDriver 是 Selenium 的核心组件&#xff0c;它提供了一组API&#xff0c;允许开发者编写程序来…...

P5739 计算阶乘详解

此题目&#xff0c;对于会递归的很简单很简单&#xff0c;但作者是野人不会&#xff0c;只能是边刷边学&#xff0c;且题解比较有意思&#xff0c;所有我这次的重心不是题目&#xff0c;而是题解里面创作者展示的不一样的东西&#xff0c;先看题目 题目要求不用for循环&#xf…...

把Android设备变成“国标摄像头”:GB28181移动终端实战接入指南

把Android设备变成“国标摄像头”&#xff1a;GB28181移动终端实战接入指南 ——执法记录仪、巡检终端、布控球&#xff0c;如何通过大牛直播SDK直接挂到GB28181平台&#xff1f; 在过去&#xff0c;GB28181 通常用于固定摄像头、NVR等“设备端”。但在政务、安防、应急等行业…...

机器学习项目流程极简入门:从数据到部署的完整指南

前言 本文将通过一个简单案例&#xff08;根据水果外观特征判断是否为橘子&#xff09;&#xff0c;逐步拆解机器学习项目的完整流程&#xff0c;帮助读者掌握从数据收集到模型部署的全流程方法论。 通常&#xff0c;一个完整的机器学习项目可以分为以下几个步骤&#xff1a; …...

PrivKV: Key-Value Data Collection with Local Differential Privacy论文阅读

文献阅读课需要制作ppt但是感觉选的这篇论文都是公式&#xff0c;决定做点动画直观展示一下。还没有完成会继续更新这个笔记 manim动画代码 需要下载ffmpeg下载latex https://docs.manim.org.cn/getting_started/installation.html ffmpeg下载教程 texlive官网 但是其实不需要…...

RViz(机器人可视化工具)的配置文件(moveitcpp)

1. Panels&#xff08;面板设置&#xff09; 面板是RViz界面中的各个功能区域&#xff0c;用于显示和操作不同的数据。 Displays&#xff08;显示面板&#xff09; Class: rviz_common/Displays 指定面板的类型&#xff0c;这里是显示面板。 Help Height: 78 帮助区域的高度…...

kotlin 01flow-StateFlow 完整教程

一 Android StateFlow 完整教程&#xff1a;从入门到实战 StateFlow 是 Kotlin 协程库中用于状态管理的响应式流&#xff0c;特别适合在 Android 应用开发中管理 UI 状态。本教程将带全面了解 StateFlow 的使用方法。 1. StateFlow 基础概念 1.1 什么是 StateFlow? StateF…...

OpenGl实战笔记(1)基于qt5.15.2+mingw64+opengl绘制三角形

一、实现效果 二、实现原理 &#xff08;1&#xff09;各函数作用与原理 initialize() 作用&#xff1a; 初始化 OpenGL 函数&#xff08;initializeOpenGLFunctions()&#xff09; 设置背景清除颜色为 rgba(0.2, 0.3, 0.4, 1.0)。 原理&#xff1a; initializeOpenGLFunctio…...

S100平台调试RS485/RS232

提供一个C语言的测试程序Demo #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h>...

蓝桥杯 19. 植树

植树 题目描述 小明和朋友们一起去郊外植树&#xff0c;他们带了一些在实验室中精心研究出的小树苗。 一共有 n 个人&#xff0c;每个人挑选了一个适合植树的位置&#xff0c;一共 n 个位置。每人准备在自己的位置种下一棵树苗。 但他们遇到一个问题&#xff1a;有的树苗比…...

Spring Boot 中 @Bean 注解详解:从入门到实践

在 Spring Boot 开发中&#xff0c;Bean注解是一个非常重要且常用的注解&#xff0c;它能够帮助开发者轻松地将 Java 对象纳入 Spring 容器的管理之下&#xff0c;实现对象的依赖注入和生命周期管理。对于新手来说&#xff0c;理解并掌握Bean注解&#xff0c;是深入学习 Spring…...

git项目迁移,包括所有的提交记录和分支 gitlab迁移到gitblit

之前git都是全新项目上传&#xff0c;没有迁移过&#xff0c;因为迁移的话要考虑已有项目上的分支都要迁移过去&#xff0c;提交记录能迁移就好&#xff1b;分支如果按照全新项目上传的方式需要新git手动创建好老git已有分支&#xff0c;在手动一个一个克隆老项目分支代码依次提…...

前端面试每日三题 - Day 25

这是我为准备前端/全栈开发工程师面试整理的第25天每日三题练习&#xff0c;涵盖了&#xff1a; CSS中如何实现一个保持宽高比的自适应正方形元素Angular的变更检测&#xff08;Change Detection&#xff09;机制项目实战 - 设计一个微前端架构的前端应用。 ✅ 题目1&#xff…...

基于windows安装MySQL8.0.40

基于windows安装MySQL8.0.40 基于windows 安装 MySQL8.0.40&#xff0c;解压文件到D:\mysql-8.0.40-winx64 在D:\mysql-8.0.40-winx64目录下创建my.ini文件&#xff0c;并更新一下内容 [client] #客户端设置&#xff0c;即客户端默认的连接参数 # 设置mysql客户端连接服务…...

基于机器学习算法预测二手车市场数据清洗与分析平台(源码+定制+讲解) 基于Python的数据挖掘与可视化 二手车数据处理与分析系统开发 (机器学习算法预测)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

【神经网络与深度学习】普通自编码器和变分自编码器的区别

引言 自编码器&#xff08;Autoencoder&#xff0c;AE&#xff09;和变分自编码器&#xff08;Variational Autoencoder&#xff0c;VAE&#xff09;是深度学习中广泛应用的两类神经网络结构&#xff0c;主要用于数据的压缩、重构和生成。然而&#xff0c;二者在模型设计、训练…...

【现代深度学习技术】现代循环神经网络07:序列到序列学习(seq2seq)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

【Linux我做主】进度条小程序深度解析

Linux下C语言进度条程序深度解析 进度条小程序GitHub地址 前言前置知识回车换行&#xff08;CR/LF&#xff09;的深度解析历史渊源与技术规范在进度条/倒计时中的应用 缓冲区机制的全面剖析缓冲区引入缓冲类型对比进度条开发中的关键控制 进度条实现以小见大——倒计时倒计时最…...

Vue项目安全实践指南:从输入验证到状态管理的全方位防护

一、项目背景 在Vue2项目开发过程中&#xff0c;我们遇到了一些需要优化的安全实践问题。本文将分享我们在项目中的一些安全优化经验&#xff0c;希望能帮助到其他开发者。 主要优化点&#xff1a; 输入输出安全处理请求安全防护数据存储安全路由访问控制文件上传处理表单数…...

Pinocchio导入URDF关节为continuous的问题及详细解释

视频讲解&#xff1a; Pinocchio导入URDF关节为continuous的问题及详细解释 仓库地址&#xff1a;GitHub - LitchiCheng/mujoco-learning 问题背景&#xff1a;打算测试将之前的panda的urdf换成so-arm100的urdf&#xff0c;发现pinocchio的代码不能用&#xff0c;很奇怪&#…...

《Python星球日记》第30天:Flask数据库集成

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏&#xff1a;《Python星球日记》&#xff0c;限时特价订阅中ing 目录 一、数据库…...

GAF-CNN-SSA-LSSVM故障诊断/分类预测,附带模型研究报告(Matlab)

GAF-CNN-SSA-LSSVM故障诊断/分类预测&#xff0c;附带模型研究报告&#xff08;Matlab&#xff09; 目录 GAF-CNN-SSA-LSSVM故障诊断/分类预测&#xff0c;附带模型研究报告&#xff08;Matlab&#xff09;效果一览基本描述程序设计参考资料 效果一览 基本描述 本研究提出的GA…...

轻松养生:让健康融入生活

养生不是负担&#xff0c;而是可以轻松融入日常的生活方式。掌握以下要点&#xff0c;就能开启健康之旅。 清晨醒来&#xff0c;先喝一杯常温水&#xff0c;唤醒沉睡的肠胃。早餐选择富含膳食纤维的燕麦片搭配新鲜水果&#xff0c;补充能量又促进消化。午餐和晚餐做到荤素搭配&…...

工业主义与民主的兴衰:历史逻辑与未来危机

一、工业主义催生大众民主的机制 经济基础变革 非技术工人崛起&#xff1a;工业革命后&#xff0c;机器生产替代传统手工业&#xff0c;非熟练工人&#xff08;包括妇女、儿童&#xff09;收入提升&#xff0c;财富分配趋于平等&#xff0c;形成新兴中产阶级。 政府财政能力增…...

从代码学习深度学习 - 目标检测前置知识(二) PyTorch版

文章目录 前言一、多尺度目标检测1.1 多尺度锚框1.2 绘图工具函数 (`utils_for_huitu.py`)1.3 可视化多尺度锚框1.4 多尺度检测(理论)二、自定义目标检测数据集2.1 读取数据2.2 创建 Dataset 类2.3 创建 DataLoader2.4 验证数据加载2.5 可视化数据集样本总结前言 大家好!欢…...

什么是“系统调用”

一、什么是“系统调用”&#xff1f;用生活中的比喻理解 可以把“系统调用”比作你&#xff08;用户&#xff09;向“管理员”请求帮助完成某件事情的过程。 举个例子&#xff1a; 你想借书&#xff0c;去图书馆&#xff08;操作系统&#xff09;找管理员&#xff08;内核&a…...

代码异味(Code Smell)识别与重构指南

1、引言:什么是“代码异味”? 在软件开发中,“代码异味(Code Smell)”是指那些虽然不会导致程序编译失败或运行错误,但暗示着潜在设计缺陷或可维护性问题的代码结构。它们是代码演进过程中的“信号灯”,提示我们某段代码可能需要优化。 1.1 ✅ 为什么关注代码异味? 预…...

005-nlohmann/json 基础方法-C++开源库108杰

《二、基础方法》&#xff1a;节点访问、值获取、显式 vs 隐式、异常处理、迭代器、类型检测、异常处理……一节课搞定C处理JSON数据85%的需求…… JSON 字段的简单类型包括&#xff1a;number、boolean、string 和 null&#xff08;即空值&#xff09;&#xff1b;复杂类型则有…...

java学习之数据结构:四、树(代码补充)

这部分主要是用代码实现有序二叉树、树遍历、删除节点 目录 1.构建有序二叉树 1.1原理 1.2插入实现 2.广度优先遍历--队列实现 3.深度优先遍历--递归实现 3.1先序遍历 3.2中序遍历 3.3后序遍历 4.删除 4.1删除叶子节点 4.2删除有一棵子树的节点 4.3删除有两棵子树的节…...

Java面试场景分析:从音视频到安全与风控的技术探讨

Java面试场景分析&#xff1a;从音视频到安全与风控的技术探讨 在一个阳光明媚的早晨&#xff0c;互联网大厂的面试室里&#xff0c;面试官李老师坐在桌前&#xff0c;严肃认真&#xff1b;而程序员小张则显得有些紧张&#xff0c;甚至有些搞笑。 第一轮提问&#xff1a; 李老…...

《OmniMeetProTrack 全维会议链智能追录系统 软件设计文档》

撰稿人&#xff1a;wjz 一、引言 1.1 目的 本软件设计文档详细描述了 OmniMeetProTrack 全维会议链智能追录系统的架构、组件、模块设计及实现细节&#xff0c;旨在为开发人员、利益相关者和维护人员提供系统的全面设计蓝图。本文档基于需求定义文档&#xff0c;确保系统实现…...

C 语言逻辑运算符:组合判断,构建更复杂的条件

各类资料学习下载合集 ​​https://pan.quark.cn/s/8c91ccb5a474​​ 在 C 语言编程中,我们已经学习了如何使用比较运算符(如 ​​==​​​, ​​<​​​, ​​>​​)来判断两个值之间的关系,从而得到“真”或“假”的结果。但很多时候,我们需要根据多个条件的组合…...

大模型推理框架简介

概述 通常需要大量的计算资源&#xff0c;高效运行LLMs仍然是一个挑战&#xff0c; 推理框架作为LLM高效部署的关键组件&#xff0c;直接关系到应用的性能、成本和开发效率。 高性能框架 vLLM GitHub&#xff0c;由SKYPILOT构建的推理优化框架&#xff0c;旨在提高在GPU上…...

《MATLAB实战训练营:从入门到工业级应用》高阶挑战篇-《5G通信速成:MATLAB毫米波信道建模仿真指南》

《MATLAB实战训练营&#xff1a;从入门到工业级应用》高阶挑战篇-5G通信速成&#xff1a;MATLAB毫米波信道建模仿真指南 &#x1f680;&#x1f4e1; 大家好&#xff01;今天我将带大家进入5G通信的奇妙世界&#xff0c;我们一起探索5G通信中最激动人心的部分之一——毫米波信…...

word导出pdf带有目录导航栏-error记

1、打开word文档——>点击"视图"选项卡——>勾选"导航窗格" 2、点击"文件"——>导出——>创建PDF/XPS 3、点击"选项"——>勾选"创建书签时使用(C)" "标题(H)" 4、点击"确定"——>点击…...

word怎么删除空白页?word最后一页删不掉怎么办

在使用word的过程中&#xff0c;有时出现空白页就可能会给大家带来一些困扰。到底怎么样才能把这些空白页删除&#xff0c;又应该如何解决最后也删不掉的问题呢&#xff1f; 要想删除普通的空白页&#xff0c;那就需要将光标直接放在空白页&#xff0c;然后按【Delete】键&…...

虚幻基础:硬件输入

文章目录 triggered&#xff1a;按下一直触发 等于tickcompleted&#xff1a;必须等到triggered结束后 才触发松下triggered结束 默认按键触发顺序按下&#xff1a;触发两个先 Started后 Triggered 松开Completed 触发器&#xff1a;用于修改triggered 触发和结束驱动阈值&…...

【Java ee初阶】多线程(5)

一、wait 和 notify wait notify 是两个用来协调线程执行顺序的关键字&#xff0c;用来避免“线程饿死”的情况。 wait 和 notify 其实都是 Object 这个类的方法&#xff0c;而 Object这个类是所有类的“祖宗类”&#xff0c;也就是说明&#xff0c;任何一个类&#xff0c;都…...