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

【C语言的秘密】密探—深究C语言中多组输入的秘密!

场景引入:

         你是否在刷题过程中,经常遇到以下场景呢?

场景一:

场景二:

从这些题上都能看见输入描述中提出了一条多组输入,那啥是多组输入?如何实现它呢?

多组输入:在输入数据时,有多组数据需要分别处理的情况

接下来探究如何利用循环实现它。

如果还有不会循环的小伙伴可以看我之前写的一篇文章:初阶C语言-分支与循环结构-CSDN博客


📚常用的输入函数的介绍

📖字符类

📝getchar(字符输入函数,包含头文件stdio.h即可使用)

getchar
int getchar (void)

可用cplusplus官网查找到函数原型如下:

📌函数讲解

函数名                         getchar

函数的参数                  void

函数的返回类型            int

1.成功读取到字符则返回字符的ASCII码值

2.读取失败则返回EOF(-1)   

选择EOF右击鼠标找到转到定义选项,点击。

可发现,EOF就是#define定义的常量,它的值就是-1,EOF的意思是the end of file,文件末尾标志。

💌举例:

#include <stdio.h>int main()
{int ch;ch = getchar();return 0;
}

☑️getchar函数的作用是从标准输入流读取(获得)一个字符,可以简单的理解为接收键盘输入的一个字符。这里我是从键盘输入字符a,可以看见ch这个变量存储的就是字符a对应的ASCII码值97

💌举例:

☑️这里我输入的是2,但是getchar会默认把我输入的2当做字符,输出字符2对应的ASCII码值50赋值给ch。

🤔如果输入字符串或者多位数的整数会有啥结果?

😶只会取第一个读到的字符。

📝putchar(字符输出函数,包含头文件stdio.h即可使用)

putchar
int putchar (int character)

📌函数讲解

函数名                       putchar

函数的参数                int character

函数的返回类型         int 

1.成功读取到字符则返回字符的ASCII码值,并在屏幕上输出读取到的字符

2.读取失败则返回EOF(-1)

💌举例:

#include <stdio.h>int main()
{int ch;int a;ch = getchar();a = putchar(ch);return 0;
}

☑️第一个a是我输入给getchar函数,第二个a是程序执行到putchar函数,在屏幕上(终端)上打印的字符a。ch接收了getchar函数的返回值,a接受了putchar函数的返回值,这里都是字符a对应的ASCII码值97。

📝字符类的多组输入

💌举例:设置一个程序,只有当输入的字符为数字时才将其输出

#include <stdio.h>int main()
{int ch;while ((ch = getchar()) != EOF){if (ch >= '0' && ch <= '9'){putchar(ch);printf("\n");//单纯打印一个字符换个行,方便观察}}return 0;
}

☑️多组输入按control+z+回车即可退出。

💌举例:场景一

#include <stdio.h>int main()
{int ch;while ((ch = getchar()) != EOF){if (ch >= 'A' && ch <= 'Z')//大写字母putchar(ch + 32);else if (ch >= 'a' && ch <= 'z')//小写字母putchar(ch - 32);printf("\n");//换行方便观察}return 0;
}

☑️大小写字母的ASCII码值之间相差了32。

🤔思考:同样是换行方便观察,为啥输出结果是这样呢?

😶事实上你输入的是字母然后按了个回车(ASCII码值是10),回车是转义字符'\n',等于你输入了两个字符。

☑️细心的你会发现上一个例题是满足条件才printf("\n"),而这次是经过一次循环就会进行一次printf("\n")。

改进:

#include <stdio.h>int main()
{int ch;while ((ch = getchar()) != EOF){if (ch >= 'A' && ch <= 'Z')//大写字母{putchar(ch + 32);printf("\n");}else if (ch >= 'a' && ch <= 'z')//小写字母{putchar(ch - 32);printf("\n");}}return 0;
}

📖万能类

📝scanf(包含头文件stdio.h即可使用)

💌举例:

#include <stdio.h>int main()
{char password[20];printf("请输入密码:");scanf("%s", password);//数组名就是地址,可以不加&printf("请确认你的密码:(Y/N)");int ch = getchar();if (ch == 'Y')printf("确认成功\n");elseprintf("确认失败\n");return 0;
}

🤔思考:为啥都没有让我输入Y/N就确认失败了呢?

😶输入缓冲区的引入

注:因为getchar读到的是缓冲区内的字符'\n'(回车),故出现了bug。

改进:在引入一个getchar读走\n,这个操作叫做清空缓冲区。

#include <stdio.h>int main()
{char password[20];printf("请输入密码:");scanf("%s", password);//数组名就是地址,可以不加&printf("请确认你的密码:(Y/N)");getchar();//处理掉缓冲区的\nint ch = getchar();if (ch == 'Y')printf("确认成功\n");elseprintf("确认失败\n");return 0;
}

其他清理缓存区的办法:

使用gets函数代替scanf函数接收字符串的输入

#include <stdio.h>int main()
{char password[20];printf("请输入密码:");gets(password);printf("请确认你的密码:(Y/N)");int ch = getchar();if (ch == 'Y')printf("确认成功\n");elseprintf("确认失败\n");return 0;
}

gets函数还会顺带把缓冲区的\n一起带走。

🤔思考:若是读取整数的函数需要单独处理掉缓冲区的\n吗?

😶不需要,因为\n不是整数不会被读取。

📝scanf函数的多组输入

#include <stdio.h>int main()
{char arr[20];while (scanf("%s", arr) != EOF){printf("%s\n", arr);}return 0;
}

注:按三次control+z+回车即可退出多组输入。可以思考一下为啥这次不需要清空缓冲区。

可见scanf函数读取时以空格或者回车作为一次读取结束标志,当是循环时,输入空格分隔开的一串字符串会被识别为两串字符串。

若要对scanf输入字符串中就是含有空格可使用以下格式:

scanf("%[^\n]", arr);
#include <stdio.h>int main()
{char arr[20];scanf("%[^\n]", arr);{printf("%s\n", arr);}return 0;
}

#include <stdio.h>int main()
{char arr[20];while (scanf("%[^\n]", arr) != EOF){printf("%s\n", arr);}return 0;
}

比较可惜的是这样会死循环,因为这种格式带不走缓冲区的内容,他只是把\n之前的字符拷贝一份放到了arr中,所以缓冲区一直有abcd abc,所以死循环了。

改进:

#include <stdio.h>int main()
{char arr[20];while (scanf("%[^\n]", arr) != EOF){printf("%s\n", arr);int ch;while ((ch = getchar()) != EOF && ch != '\n')//清空缓冲区{;}}return 0;
}

注:按两次control + z +回车即可退出多组输入。

📚总结

        本节介绍了多组输入以及相关输入函数,如何清空(输入)缓冲区的一些方法。在进行多组输入时,尤其使用能读取字符,字符串的函数时,小心未清理缓冲区而产生bug。

相关文章:

【C语言的秘密】密探—深究C语言中多组输入的秘密!

场景引入&#xff1a; 你是否在刷题过程中&#xff0c;经常遇到以下场景呢&#xff1f; 场景一&#xff1a; 场景二&#xff1a; 从这些题上都能看见输入描述中提出了一条多组输入&#xff0c;那啥是多组输入&#xff1f;如何实现它呢&#xff1f; 多组输入&#xff1a;在输入…...

ClickHouse 语法优化规则

ClickHouse 的 SQL 优化规则是基于RBO(Rule Based Optimization)&#xff0c;下面是一些优化规则 1 准备测试用表 1&#xff09;上传官方的数据集 将visits_v1.tar和hits_v1.tar上传到虚拟机&#xff0c;解压到clickhouse数据路径下 // 解压到clickhouse数据路径 sudo tar -xvf…...

3-运行第一个docker image-hello world

CentOS7.9下安装完成docker后,我们开始部署第一个docker image-hello world 1.以root用户登录CentOS7.9服务器,拉取centos7 images 命令: docker pull hello-world [root@centos79 ~]# docker pull hello-world Using default tag: latest latest: Pulling from library…...

【漏洞复现】泛微e-Weaver SQL注入

漏洞描述 泛微e-Weaver&#xff08;FANWEI e-Weaver&#xff09;是一款广泛应用于企业数字化转型领域的集成协同管理平台。作为中国知名的企业级软件解决方案提供商&#xff0c;泛微软件&#xff08;广州&#xff09;股份有限公司开发和推广了e-Weaver平台。 泛微e-Weaver旨在…...

「git 系列」git 如何存储代码的?

这里写自定义目录标题 git 文件存储位置git 数据模型示例分析分析前准备命令哈希值 具体示例 不同版本的提交&#xff0c;git 做了什么工作&#xff1f;snapshot vs delta-based vs backup参考资料 git 文件存储位置 想要了解如何存储&#xff0c;首先需要知道存储位置。 当我…...

IDEA 集成 Docker 插件一键部署 SpringBoot 应用

目录 前言IDEA 安装 Docker 插件配置 Docker 远程服务器编写 DockerFileSpringBoot 部署配置SpringBoot 项目部署结语 前言 随着容器化技术的崛起&#xff0c;Docker成为了现代软件开发的关键工具。在Java开发中&#xff0c;Spring Boot是一款备受青睐的框架&#xff0c;然而&…...

IDEA无法查看源码是.class,而不是.java解决方案?

问题&#xff1a;在idea中&#xff0c;ctrl鼠标左键进入源码&#xff0c;但是有时候会出现无法查看反编译的源码&#xff0c;如图&#xff01; 而我们需要的是方法1: mvn dependency:resolve -Dclassifiersources 注意&#xff1a;需要该模块的目录下&#xff0c;不是该文件目…...

机器视觉系统选型-定光照强度

同一个外形结构的光源&#xff0c;光照强度受如下影响&#xff1a; 单颗灯珠的亮度灯珠排列的数量和密度漫射板/防护板的材质&#xff08;透明、半透明、全漫射&#xff09; 在合理范围内提升光照强度&#xff0c;可降低对相机曝光时长的要求 外形结构尺寸相同的两款光源&am…...

ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…...

StoneDB顺利通过中科院软件所 2023 开源之夏 结项审核

近日&#xff0c;中科院软件所-开源软件供应链点亮计划-开源之夏2023的结项名单正式出炉&#xff0c;经过三个月的项目开发和一个多月的严格审核&#xff0c;共产生 418个成功结项项目&#xff01;其中&#xff0c;StoneDB 作为本次参与开源社区&#xff0c;社区入选的两个项目…...

Linux本地docker一键部署traefik+内网穿透工具实现远程访问Web UI管理界面

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…...

SpringCloud FeignClient声明式服务调用采坑记录(A调用服务B/C,B/C重启后必须重启A后才能成功调用配置项)

SpringCloud FeignClient声明式服务调用&#xff08;A调用服务B/C&#xff0c;B/C重启后必须重启A后才能成功调用配置项采坑记录&#xff09; 1. 报错&#xff08;info级别的警告信息&#xff09;2. 原因&#xff1a;使用了默认了cache负载均衡&#xff0c;或者禁用了ribbonLoa…...

安装银河麒麟linux系统docker(docker-compose)环境,注意事项(一定能解决,有环境资源)

1&#xff1a;安装docker环境必须使用麒麟的版本如下 2&#xff1a;使用docker-compse up -d启动容器遇到的文件 故障1&#xff1a;如果运行docker-compose up 报“Cannot create redo log files because data files are corrupt or the database was not shut down cleanly a…...

BUG:编写springboot单元测试,自动注入实体类报空指针异常

原因:修饰测试方法的Test注解导入错误 造成错误的原因是 import org.junit.Test;正确的应该是 import org.junit.jupiter.api.Test前者是Junit4,后者是Junit5 junit4的使用似乎要在测试类除了添加SpringbootTest还要添加RunWith(SpringRunner.class) 同时要注意spring-boot-s…...

深度解析 InterpretML:打开机器学习模型的黑箱

深度解析 InterpretML&#xff1a;打开机器学习模型的黑箱 机器学习模型的高性能往往伴随着模型的复杂性&#xff0c;这使得模型的决策过程变得不透明&#xff0c;难以理解。在这个背景下&#xff0c;可解释性机器学习成为了一个备受关注的领域。本文将介绍 InterpretML&#…...

数据结构初阶leetcodeOJ题(二)

目录 第一题 思路&#xff1a; 第二题 思路 第三题 描述 示例1 思路 总结&#xff1a;这种类似的题&#xff0c;都是用快慢指针&#xff0c;相差一定的距离然后输出慢指针。 第一题 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val…...

若依框架数据源切换为pg库

一 切换数据源 在ruoyi-admin项目里引入pg数据库驱动 <dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.18</version> </dependency>修改配置文件里的数据源为pg spring:d…...

java 访问sqlserver 和 此驱动程序不支持jre1.8错误

sqlserver数据如下&#xff1b; TestSQL.java&#xff1b; import java.sql.*;public class TestSQL {public static void main(String[] args) throws ClassNotFoundException, SQLException {String driverName "com.microsoft.sqlserver.jdbc.SQLServerDriver";…...

C/C++字符判断 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C字符判断 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C字符判断 2021年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 对于给定的字符&#xff0c;如果该字符是大小写字母或…...

Kotlin语言实现单击任意TextVIew切换一个新页面,并且实现颜色变换

<LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:orientation"vertical"android:layout_height"match_parent"><!-- 这里放置你的其他视图组件 -->&…...

Flume学习笔记(4)—— Flume数据流监控

前置知识&#xff1a; Flume学习笔记&#xff08;1&#xff09;—— Flume入门-CSDN博客 Flume学习笔记&#xff08;2&#xff09;—— Flume进阶-CSDN博客 Flume 数据流监控 Ganglia 的安装与部署 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 gmond&#xff08;Ganglia …...

使用webhook发送企业微信消息

文章目录 使用webhook发送企业微信消息企业微信群机器人思路实现总结 使用webhook发送企业微信消息 企业微信群机器人思路实现 1&#xff0c;在企业微信中新建一个群 2&#xff0c;在设置里面添加机器人 3&#xff0c;拿到webhook地址 在终端某个群组添加机器人之后&#xf…...

C语言的由来与发展历程

C语言的起源可以追溯到上世纪70年代&#xff0c;由Dennis Ritchie在贝尔实验室开发出来。C语言的设计目标是提供一种简洁、高效、可移植的编程语言&#xff0c;以便于开发底层的系统软件。在那个时代&#xff0c;计算机技术正在迅速发展&#xff0c;出现了多种高级编程语言&…...

python django 小程序博客源码

开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索文章&#xff0c;文章分类&#xf…...

Android并发编程与多线程

一、Android线程基础 1.线程和进程 一个进程最少一个线程&#xff0c;进程可以包含多个线程进程在执行过程中拥有独立的内存空间&#xff0c;而线程运行在进程内 2.线程的创建方式 new Thread&#xff1a; 缺点&#xff1a;缺乏统一管理&#xff0c;可能无限制创建线程&…...

ChatGPT简介及基本概念

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC &#x1f449;关于作者 专…...

学习模拟简明教程【Learning to simulate】

深度神经网络是一项令人惊叹的技术。 有了足够的标记数据&#xff0c;他们可以学习为图像和声音等高维输入生成非常准确的分类器。 近年来&#xff0c;机器学习社区已经能够成功解决诸如对象分类、图像中对象检测和图像分割等问题。 上述声明中的加黑字体警告是有足够的标记数…...

电子学会C/C++编程等级考试2021年12月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:输出整数部分 输入一个双精度浮点数f, 输出其整数部分。 时间限制:1000 内存限制:65536输入 一个双精度浮点数f(0 < f < 100000000)。输出 一个整数,表示浮点数的整数部分。样例输入 3.8889样例输出 3 答案: //参…...

数字游戏

题目描述 小 K 同学向小 P 同学发送了一个长度为 8 的 01 字符串 来玩数字游戏&#xff0c;小 P 同学想要知道字符串中究竟有多少个 1。 注意&#xff1a;01 字符串为每一个字符是 0 或者 1 的字符串&#xff0c;如“101”&#xff08;不含双引号&#xff09;为一个长度为 3 …...

k8s pod 处于Terminating的原因分析和解决处理——筑梦之路

之前整理了一下各种资源长时间无法回收&#xff0c;解决处理的命令行 k8s 各种资源Terminationg状态处理 —— 筑梦之路_k8s自定义资源修改状态-CSDN博客 这里具体整理下pod长时间处于Terminating状态的相关知识&#xff0c;主要是对前面的补充和完善&#xff0c;作为笔记记录…...

西南科技大学814考研二

C语言数据结构与算法 线性表 顺序表(静态分配内存) #include <stdio.h> #include <stdbool.h> //静态顺序表 #define MAX_SIZE 8 //顺序表储存的数据类型 typedef int ElemType; typedef struct {ElemType data[MAX_SIZE];int length; }SeqList; //初始化顺序表…...

oracle21c报错 【ORA-65096: 公用用户名或角色名无效】

1.数据库版本 oracle21c 2.问题提示 创建用户提示【ORA-65096: 公用用户名或角色名无效】 create user 自定义用户名 identified by 密码;--例:用户为test1&#xff0c;密码为123456 create user test1 identified by 123456;三.解决办法及结果 oracle11g之后的版本&#xff…...

C++ 递增/递减运算符重载

作用&#xff1a; 通过重载递增运算符&#xff0c;实现自己的整型数据 总结&#xff1a; 前置递增返回引用&#xff0c;后置递增返回值 递增 #include<iostream> using namespace std;class MyInteger { private:int m_Num 0; public:friend ostream& operator<…...

Android 13.0 无源码app增加授予相关权限

1.概述 在13.0的系统rom产品定制化开发中,对于一些无源码app增加一些权限,比如悬浮窗权限,由于app内部没申请这个权限, 所以需要系统适配默认授予这个权限,就需要在PMS解析安装app的时候 授予悬浮窗权限就可以了 2.无源码app增加授予相关权限的核心类 frameworks/base/cor…...

CI/CD相关概念学习

文章目录 CI/CD相关概念学习前言CI/CD相关概念介绍集成地狱持续集成持续交付持续部署Devops CI/CD相关应用介绍JenkinsTekton PipelinesSpinnakerTravis CIGoCD CI/CD相关概念学习 前言 本文主要是介绍一些 CI/CD 相关的概念&#xff0c;通过阅读本文你将快速了解 CI/CD 是什么…...

一、认识STM32

目录 一、初识STM32 1.1 STM32的命名规则介绍 1.2 STM32F103ZET6资源配置介绍 二、如何识别芯片管脚 2.1 如何寻找 IO 的功能说明 三、构成最小系统的要素 一、初识STM32 1.1 STM32的命名规则介绍 以 STM32F103ZET6 来讲解下 STM32 的命名方法&#xff1a; &…...

vue-router的编程式导航有哪些方法?

Vue Router 提供了几种编程式导航的方法&#xff0c;主要包括以下几种&#xff1a; router.push(location, onComplete?, onAbort?)&#xff1a;跳转到新的 URL&#xff0c;类似于 <router-link> 的 to 属性。可以指定路径或者命名的路由。 router.replace(location, …...

连接服务器上mysql数据库

1. 首先在服务器的安全组上设置开放3306端口&#xff08;默认是这个&#xff0c;有自定义可以酌情更改&#xff09; 2. 更改服务器上的数据库配置文件vi /etc/mysql/my.cnf 增加下面bind- address配置 [mysqld] bind-address0.0.0.0 3. 授予本地IP地址的主机连接权限 - 创建…...

IDEA 中设置 File Header 以及自定义类、方法注释模板的方法

目录 1 设置 File Header2 自定义类、方法注释生成类注解模板生成方法注解模板 1 设置 File Header File -> Settings -> File and Code Templates -> Includes -> File Header -> 编辑 2 自定义类、方法注释 File -> Settings -> Live Templates -&g…...

【数据结构】图的存储结构及实现(邻接表和十字链表)

一.邻接矩阵的空间复杂度 假设图G有n个顶点e条边&#xff0c;则存储该图需要O&#xff08;n^2) 不适用稀疏图的存储 二.邻接表 1.邻接表的存储思想&#xff1a; 对于图的每个顶点vi&#xff0c;将所有邻接于vi的顶点链成一个单链表&#xff0c;称为顶点vi的边表&#xff08…...

ROS Turtlebot3多机器人编队导航仿真

文章目录 前言一、Gzazebo中加载多台Turtlebot3机器人二、RVIZ中加载多个Turtlebot3机器人三.多机器人编队导航总结 前言 前面已经实现了在gazebo仿真环境中机器人一字型编队、三角形编队、N字型编队等仿真&#xff0c;接下来考虑多机器人编队在编队行进过程中的避障问题&…...

端口配置错误,导致RabbitMq启动报错

SpringBoot启动&#xff0c;报错如下&#xff1a; 2023-11-19 01:33:43.030 UID[] [] [AMQP Connection 116.xxx.xx.xxx:15672] ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured java.net.SocketException: Sock…...

<MySQL> 什么是JDBC?如何使用JDBC进行编程?

目录 一、JDBC是什么&#xff1f; 二、JDBC常用接口和类 2.1 DataSource 2.2 Connection 2.3 Statement 2.4 ResultSet 三、JDBC的使用 3.1 获得数据库驱动包 3.2 添加到项目依赖 3.3 描述数据库服务器 3.4 建立数据库连接 3.6 执行SQL语句和接收返回数据 3.7 释放…...

基于安卓android微信小程序的装修家装小程序

项目介绍 巧匠家装小程序的设计主要是对系统所要实现的功能进行详细考虑&#xff0c;确定所要实现的功能后进行界面的设计&#xff0c;在这中间还要考虑如何可以更好的将功能及页面进行很好的结合&#xff0c;方便用户可以很容易明了的找到自己所需要的信息&#xff0c;还有系…...

基于SSM的小区物业管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…...

c语言免杀火绒

文章目录 前记c加载器补充知识 前记 pyinstaller pyinstaller目前已经被杀疯了&#xff0c;简单打包一个hello a"hello" print(a)#pyinstaller -F -w b.py -n HipsMain.exe考虑Nuitka pip uninstall nuitka pip install nuitka pip install nuitka1.8.5 这里最新…...

MyBatis #{} 和 ${} 的区别

前言&#xff1a; #{} 和 ${} 的区别是 MyBatis 中一个常见的面试题&#xff0c;#{} 和 ${} 是MyBatis 中获取参数的两种方式&#xff0c;但我们在项目中大多数使用的都是 #{} 来获取参数&#xff0c;那么它们两个有什么区别呢&#xff1f; 区别 一. #{} 采用预编译 SQL&…...

计算机科学速成课

建议看看计算机科学速成课&#xff0c;一门很全面的计算机原理入门课程&#xff0c;短短10分钟可以把大学老师十几节课讲的东西讲清楚&#xff01;整个系列一共41个视频&#xff0c;B站上有中文字幕版。 每个视频都是一个特定的主题&#xff0c;例如软件工程、人工智能、操作系…...

基于单片机的汽车安全气囊系统故障仿真设计

**单片机设计介绍&#xff0c; 基于单片机微波炉加热箱系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的汽车安全气囊系统的故障检测系统是一种用于检测安全气囊系统故障的智能化设备&#xff0c;通过单片机控…...

JPA整合Sqlite解决Dialect报错问题, 最新版Hibernate6

前言 我个人项目中&#xff0c;不想使用太重的数据库&#xff0c;而内嵌数据库中SQLite又是最受欢迎的&#xff0c; 因此决定采用这个数据库。 可是JPA并不支持Sqlite&#xff0c;这篇文章就是记录如何解决这个问题的。 原因 JPA屏蔽了底层的各个数据库差异&#xff0c; 但是…...