【JavaSE-7】方法的使用
1、方法的概念和使用
1.1、什么是方法
方法(method)是程序中最小的执行单元,类似于 C语言中的函数,方法存在的意义:
- 是能够模块化的组织代码(当代码规模比较复杂的时候).
- 做到代码被重复使用, 一份代码可以在多个位置使用.
- 让代码更好理解更简单.
- 直接调用现有方法开发, 不必重复造轮子
注意:
- 方法必须先创建才可以使用,该过程称为方法定义。
- 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程称为方法调用
1.2、方法的定义
方法定义语法格式:
//方法定义
修饰符 返回值类型 方法名称(参数类型1 形参1,参数类型2 形参2...){方法体代码;[return 返回值];
}
类比main
函数:public static void main(String[] args)
,其中void
是返回值类型;main
是方法名称;String[] args
是参数类型和形参。
例子:
判断闰年
1、能被4整除且不能被100整除的是闰年
2、能被400整除的是闰年
//判断闰年方法
public static boolean isLeapYear(int year){if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){System.out.println(year+"是闰年");return true;}else{System.out.println(year+"不是闰年");return false;}
}
【注意事项】
- 修饰符:现阶段直接使用
public static
固定搭配 - 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成
void
- 方法名字:采用小驼峰命名(首字母小写,后续单词首字母大写)
- 参数列表:如果方法没有参数,
()
中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开 - 方法体:方法内部要执行的语句
- 在java当中,方法必须写在类当中
- 在java当中,方法不能嵌套定义
- 在java当中,没有方法声明一说,方法只有先定义,才能调用。
- 方法的返回值类型是
void
时,可以省略return
;但是也可以写,后面不加数据即可。
1.3、方法调用的执行过程
方法的调用方式:
方法名(参数1,参数2,...);
调用过程:
- 调用方法
方法名(参数1,参数2,...);
- 传递参数,注意参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错 。
- 找到方法地址
- 执行被调方法的方法体
- 被调方法结束返回
- 回到主调方法继续往下执行。
例子:
public class Test01 {//判断闰年方法public static boolean isLeapYear(int year){if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){System.out.println(year+"是闰年");return true;}else{System.out.println(year+"不是闰年");return false;}}public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入年份:");int year = scan.nextInt();//方法的调用boolean ret = isLeapYear(year);}
}
在其他函数中去调用方法时的参数称为实际参数(实参)即上述main函数中的boolean ret = isLeapYear(year);
这句代码中year
,在方法定义中的参数称为形式参数(形参)即上述isLeapYear
方法中的public static boolean isLeapYear(int year)
这句代码的year
。
【注意事项】
- 定义方法的时候,不会执行方法的代码,只有调用时才会执行。
- 一个方法可以多次调用。
例子:
计算 1! + 2! + 3! + 4! + 5!
//求阶乘
public static int fac(int n){if(n == 1 || n == 0){return 1;}else {return n * fac(n - 1);}
}
public static void main(String[] args) {//计算 1! + 2! + 3! + 4! + 5!int sum = 0;for (int i = 1; i <= 5 ; i++) {sum += fac(i);}System.out.println(sum);
}
1.4、实参和形参的关系
- 形参:方法定义中的参数
- 等同于规定了变量定义的格式。
- 实参:方法调用中的参数
- 等同于使用变量或常量。
形参只是拿到了实参的值,形参的名字可以随意取,对方法没有影响;形参和实参的名字也可以相同。
方法放在main
前或者后都可以,与 C语言不同(自顶向下编译)。在 java 中,实参的值永远都是赋值到形参中,形参和实参本质是两个实体。
例子1:
//交换两个数值
public static void swap(int x, int y){int tmp =x;x = y;y = tmp;
}public static void main(String[] args) {int a = 10,b = 20;System.out.println("交换前:"+ a +" "+b);swap(a,b);System.out.println("交换后:"+ a +" "+b);
}
【运行结果】
交换前:10 20
交换后:10 20
【分析】
实参a
和b
是main
方法中的两个变量,其分配的内存空间在main
方法的栈(一块特殊的内存空间)中,而形参x
和y
是swap
方法中的两个变量,x
和y
的内存空间在swap
方法运行时的栈中,因此:实参a
和b
与 形参x
和y
是两个没有任何关联性的变量,在swap
方法调用时,只是将实参a
和b
中的值拷贝了一份传递给了形参x
和y
,因此对形参x
和y
操作不会对实参a
和b
产生任何影响。
对于基本数据类型来说,形参相当于实参的拷贝,即传值调用。
【解决办法】
传引用数据类型参数(如数组)因为引用数据类型在内存中存储的是地址值,指向在堆内存中申请的一片内存。
例子2:
public class TestMethod {public static void main(String[] args) {int[] arr = {10, 20};swap(arr);System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);}public static void swap(int[] arr) {int tmp = arr[0];arr[0] = arr[1];arr[1] = tmp;}
}// 运行结果
arr[0] = 20 arr[1] = 10
2、方法重载
2.1、为什么需要方法重载
首先,如果我们定义一个函数add()
实现两个整数的相加,但后面如果想实现两个浮点数的相加时,会因为参数的数据类型的不同导致报错。
例子1:
只有我们重新写一个方法,定义形参的数据类型是double
的方法才能实现,但是这种形式的缺点就是需要命名不同的方法名,并且容易记忆混乱,那么可以直接使用同一个方法名吗?由此引出方法重载。
2.2、方法重载概念
在日常交流中,一个词语如果有多重含义,比如:喜欢,情侣之间说喜欢与子女对父母说喜欢,这个词语的含义是不同的,这个时候我们可以认为该词语含义被重载,具体代表什么意思就需要结合具体的场景。
java 中,如果多个方法的方法名相同,参数列表不同,与返回值无关,则称这几种方法被重载了。
其中参数列表不同包括:个数不同,类型不同,顺序不同。
例子:
之后调用该方法时通过 IDEA 会有提示,根据需要传入的实参类型,选择相应的方法。
【注意事项】
- 方法名必须相同。
- 参数列表必须不同(参数个数/参数类型/参数的次序)。
- 多个方法必须定义在同一个类中。
- 与返回值类型是否相同无关。
- 如果仅仅因为返回值类型不同,是不能构成重载的。
- 编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法。
2.3、方法签名(了解)
在同一个作用域中不能定义两个相同名称的标识符,但是在类中可以定义方法名相同的方法。
是因为有方法签名的存在。
方法签名即是:经过编译器编译修改之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。每一个方法都有签名。
将编写的代码经过编译后,会生成.class
文件,在该文件所在的目录下打开命令行窗口,输入javap -v 字节码文件名
即可
例子:
public class TestMethod {public static int add(int x, int y){return x + y;}public static double add(double x, double y){return x + y;}public static void main(String[] args) {add(1,2);add(1.5, 2.5);}
}
生成的字节码文件:
方法签名中的一些特殊符号说明:
3、递归
3.1、递归的概念
一个方法在执行过程中调用自身,就称为“递归”。递归相当于数学的“数学归纳法”,有一个起始条件,然后有一个递推公式。
递归条件:将原问题划分成其子问题,子问题。
3.2、递归练习
按顺序打印一个数字的每一位(例如 123打印出 1 2 3 )
public class Test03 {//按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)public static void print(int n){if(n > 9){print(n / 10);}System.out.print(n % 10+" ");}public static void main(String[] args) {print(123);}
}
【分析】
递归求 1 + 2 + 3 + … + 10
//递归求 1 + 2 + 3 + ... + 10
public static int fac(int n){if(n == 1){return 1;}else{return n+fac(n-1);}
}
写一个递归方法,输入一个非负整数,返回组成它的数字之和.
例如,输入 1729, 则应该返回1+7+2+9,它的和是19
public static int sum(int n){while(n > 9){return n % 10 + sum(n/10);}return n % 10;
}
求斐波那契数列第 n 项
第一项从 1 开始:1 1 2 3 5 8…
public static int fib(int n){if(n == 1 || n == 2){return 1;}else{return fib(n-1) + fib(n-2);}
}
非递归:
if(n == 1){return 1;
}
if(n == 2){return 1;
}
int n1 = 1;
int n2 = 1;
int n3 = 0;
while(n > 2){n3 = n1 + n2;n1 = n2;n2 = n3;n--;
}
return n3;
第 1 项从 0 开始 :0 1 1 2 3 5 8
public static int fib(int n){if(n == 1){return 0;}if(n == 2){return 1;}return fib(n-1)+fib(n-2);
}
非递归:
if(n == 1){return 0;
}
if(n == 2){return 1;
}
int n1 = 0;
int n2 = 1;
int n3 = 0;
while(n > 2){n3 = n1 + n2;n1 = n2;n2 = n3;n--;
}
return n3;
递归求解汉诺塔问题
有3根柱子,A,B,C;A柱上放N个盘子,上面小,下面大
问题:
把A柱上所有盘子挪到C柱上(可以借助B柱)
过程中:所有柱子上的盘子,也要下面大,上面小,且一次只能移动一个盘子。
// 定义一个方法用于解决汉诺塔问题
public static void hanoi(int n, char source, char auxiliary, char target){// 如果只有一个圆盘,直接将其从源柱移动到目标柱if (n == 1) {System.out.println("Move disk 1 from "+source+" to "+target);return;}// 先将 n - 1 个圆盘从源柱借助目标柱移动到辅助柱hanoi(n - 1, source, target, auxiliary);// 再将第 n 个圆盘从源柱移动到目标柱System.out.println("Move disk "+ n +" from "+source+" to "+target);// 最后将 n - 1 个圆盘从辅助柱借助源柱移动到目标柱hanoi(n - 1, auxiliary, source, target);
}
分析:
- 把
n-1
个盘子从源柱子借助目标柱子移动到辅助柱子。 - 把第
n
个盘子从源柱子移动到目标柱子。 - 把
n-1
个盘子从辅助柱子借助源柱子移动到目标柱子。
时间复杂度:O(2<sup>n</sup>)
如n=4时,
将上面 3 个盘子从源柱 A
借助目标柱 C
移动到辅助柱 B
:
将第 4 个盘子从源柱 A
移动到目标柱 C
:
将辅助柱 B
上的 3 个盘子借助源柱 A
移动到目标柱 C
相关文章:
【JavaSE-7】方法的使用
1、方法的概念和使用 1.1、什么是方法 方法(method)是程序中最小的执行单元,类似于 C语言中的函数,方法存在的意义: 是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置…...
阿里推出全新推理模型(因果语言模型),仅1/20参数媲美DeepSeek R1
阿里Qwen 团队正式发布了他们最新的研究成果——QwQ-32B大语言模型!这款模型不仅名字萌萌哒(QwQ),实力更是不容小觑!😎 QwQ-32B 已在 Hugging Face 和 ModelScope 开源,采用了 Apache 2.0 开源协议。大家可通过 Qwen C…...
C语言笔记(通讯录)
目录 1.通讯录的架构 2.通讯录的功能 3.实现静态通讯录的功能步骤 3.1.创建通讯录数组 3.2.显示功能菜单 3.3.初始化通讯录 3.4.添加联系人的信息 3.5.显示联系人的信息 3.6.查找某个人的信息 3.7.删除某一个联系人信息 3.8.修改某一联系人的信息 3.9.按名字对联系…...
【Manus资料合集】激活码内测渠道+《Manus Al:Agent应用的ChatGPT时刻》(附资源)
DeepSeek 之后,又一个AI沸腾,冲击的不仅仅是通用大模型。 ——全球首款通用AI Agent的破圈启示录 2025年3月6日凌晨,全球AI圈被一款名为Manus的产品彻底点燃。由Monica团队(隶属中国夜莺科技)推出的“全球首款通用AI…...
Python 面向对象高级编程-定制类
目录 __str__ __iter__ __getitem__ __getattr__ __call__ 小结 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。 __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()…...
安装remixd,在VScode创建hardhat
在终端,以管理员身份,cmd 需要科学上网 npm install -g remix-project/remixd 在vscode插件中,安装solidity插件,是暗灰色那款 1.将nodeJs的版本升级至18以上 2.在vscode打开一个新的文件,在终端输入 npx hardhat 3.…...
开发环境搭建-02.后端环境搭建-熟悉项目结构
一.后端环境搭建...
Linux(Centos 7.6)命令详解:vi
1.命令作用 vi/vim 是Linux 系统内置不可或缺的文本编辑命令,vim 是vi 的加强版本,兼容vi 的所有指令,不仅能编辑文本,而且还具有shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性。 2.命令语法 usage: …...
Ubuntu 20.04下配置VSCode以支持Eigen库开发
这里写目录标题 1. 安装Eigen库2. 配置VSCode的C开发环境3. 配置c_cpp_properties.json4. 编写代码并测试5. 配置tasks.json(可选)6. 运行程序总结 在VSCode中配置Eigen库(用于线性代数、矩阵和向量运算的C库)的步骤如下ÿ…...
正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-2.1 uboot简介
前言: 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用: …...
Android14 OTA差分包升级报kPayloadTimestampError (51)
由于VF 架构, 所以镜像的打包时间可能存在偏差, 如 boot.img 和 客制化的一些镜像打包 可能会在 vendor 侧进行打包。 而 与system 侧进行merge 时,时间戳比较乱,为了解决这个问题,让时间戳进行统一。 使用adb方式验证…...
PPT 技能:巧用 “节” 功能,让演示文稿更有序
在制作PPT时,你是否遇到过这样的情况:幻灯片越来越多,内容越来越杂,找某一页内容时翻得眼花缭乱?尤其是在处理大型PPT文件时,如果没有合理的结构,编辑和调整都会变得非常麻烦。这时候࿰…...
Mysql创建库、表练习
创建库 #创建 create database gc_novels default charsetutf8mb4;#default charsetutf8mb4 指定编码为utf-8#使用 use gc_novels#查看当前所在位置 select database(); 结果: 创建表 #创建 create table heros(-> id int,-> name varchar(50),-&…...
【原创】Ollama Test API For Linux/MacOS/Unix
安装Json解析工具 Linux/Unix sudo apt-get install jq -yMacOS brew install jq -y设置环境变量 export IP"192.168.250.229" export PORT"8080" export MODEL"deepseek-r1:7b"检查Ollama版本 curl http://"$IP":"$PORT&qu…...
盛铂科技 SLMF315频率综合器200MHz至15GHz 国产频综模块
在当今科技飞速发展的时代,射频技术在众多领域发挥着关键作用,从通信、雷达系统到科研实验,对频率综合器的性能要求日益严苛。以下是关于盛铂科技的 SLMF315 超低相位噪声频率综合器的介绍: SLMF315超低相位噪声0.2至15GHz频率综合…...
AI-前端开发webcrumbs.ai/frontend-ai,Fitten Code提高开发效率
1.webcrumbs.ai/frontend-ai Frontend AI by Webcrumbshttps://app.webcrumbs.ai/frontend-ai 可选择某一模版进行生成对应版本代码,减少开发量。 2.Fitten Code Vue AI 编程助手 Vue AI 编程助手 | 菜鸟教程https://www.runoob.com/vue2/fitten-code-vue2.htm…...
DeepSeek开源Day4:DualPipeEPLB技术详解
2 月 24 日,DeepSeek 启动 “开源周”,第四个开源的代码库为 DualPipe 与 EPLB(一下发布了两个)。DualPipe 与 EPLB 依然使用了大量与 Hopper 架构绑定的技术。 DualPipe 是由 DeepSeek-AI 团队开发的一种双向流水线并行通信算法&…...
代码随想录算法训练营第22天 | 组合 组合总和 电话号码的字母组合
77. 组合 77. 组合 - 力扣(LeetCode) class Solution {List<Integer> path new ArrayList<>();List<List<Integer>> result new ArrayList<>();public void backTracking(int n,int k,int startIndex){if(path.size() …...
Oracle19c进入EM Express(Oracle企业管理器)详细步骤
以下是使用Oracle 19c进入Oracle Enterprise Manager Database Express(EM Express)的详细步骤: ### **步骤 1:确认EM Express配置状态** 1. **登录数据库服务器** 使用Oracle用户或管理员权限账户登录操作系统。 2. **查看EM…...
Oracle 数据库基础入门(六):视图与索引的深入解析
在 Oracle 数据库的知识体系中,视图与索引是提升数据库操作效率和优化数据管理的重要工具。对于 Java 全栈开发者而言,熟练掌握视图与索引的运用,不仅能够增强数据库查询的性能,还能为构建高效稳定的后端应用提供有力支持。接下来…...
机器学习-随机森林解析
目录 一、.随机森林的思想 二、随机森林构建步骤 1.自助采样 2.特征随机选择 3构建决策树 4.集成预测 三. 随机森林的关键优势 **(1) 减少过拟合** **(2) 高效并行化** **(3) 特征重要性评估** **(4) 耐抗噪声** 四. 随机森林的优缺点 优点 缺点 五.…...
Qt添加MySql数据库驱动
文章目录 一. 安装MySql二.编译mysql动态链接库 Qt版本:5.14.2 MySql版本:8.0.41 一. 安装MySql 参考这里进行安装:https://blog.csdn.net/qq_30150579/article/details/146042922 将mysql安装目录里的bin,include和lib拷贝出来…...
MR的环形缓冲区(底层)
MapReduce的大致流程: 1、HDFS读取数据; 2、按照规则进行分片,形成若干个spilt; 3、进行Map 4、打上分区标签(patition) 5、数据入环形缓冲区(KVbuffer) 6、原地排序ÿ…...
RMAN备份bug-审计日志暴涨(select action from gv$session)
问题概述 /oracle 文件系统使用率过大,经过检查是审计日志过大,/oracle 目录 197G 审计日志占用70G,每6个小时产生大量审计日志,日志内容全是select action from gv$session ,猜测可能跟备份有关, $>df -h /oracle…...
30秒从零搭建机器人管理系统(Trae)
1. 安装 [Trae官网】(https://www.trae.com.cn/) 2. 提示词 创建一个BS架构的机器人远程操控系统,具备机器人状态及位置实时更新,可以实现机器人远程遥控,可以对机器人工作日志进行统计分析,以及其它管理系统的常用功能3. 模型…...
OpenFeign 学习笔记
OpenFeign 学习笔记 一、基础入门 1.1 简介 OpenFeign 是基于声明式的 REST 客户端,用于简化服务间远程调用。(编程式 REST 客户端(RestTemplate)) 通过接口注解方式定义 HTTP 请求,自动实现服务调用。 …...
单例模式(线程案例)
单例模式可以分为两种:1.饿汉模式 2.懒汉模式 一.饿汉模式 //饿汉模式👇 class MySingleTon{//因为这是一个静态成员变量,在类加载的时候,就创建了private static MySingleTon mySingleTon new MySingleTon();//创建一个静…...
HttpServletRequest 和 HttpServletResponse 不同JDK版本的引入
java中,可能会用到JWT令牌校验, 这时,大概率会用到 HttpServletRequest,和 HttpServletResponse。 若为 JDK8,SpringBoot 2.7.3 的版本则引入: import javax.servlet.http.HttpServletRequest; import ja…...
数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南
文章目录 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南ChatGPTKimi腾讯元宝DeepSeek 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南 产品隐私设置操作路径隐私协议ChatGPT…...
【JavaEE】SpringMVC简单练习
目录 一、计算器1.1 接口定义1.2 前端代码1.3 后端代码1.4 运行结果 二、⽤⼾登录2.1 需求2.2 接口定义2.3 前端页面2.4 后端代码2.5 结果 三、留⾔板3.1 需求:3.2 接口3.3 前端代码3.4 后端代码3.5 运行结果 四、图书管理系统4.1 需求4.2 接口定义4.3 后端代码 一、计算器 1.…...
文件上传漏洞:upload-labs靶场11-20
目录 pass-11 pass-12 pass-13 pass-14 pass-15 pass-16 pass-17 pass-18 pass-19 pass-20 pass-11 分析源代码 ,发现上传文件的存放路径可控 if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_ext substr($_FILES[upload_file][name],st…...
苹果Siri升级遇阻,国行iPhone或将引入阿里、百度AI自救
AI整合进展缓慢 苹果正加速将生成式AI技术整合至Siri,但内部消息称其底层技术研发落后于竞争对手,进展未达预期。 国行iPhone将引入双AI模型 苹果计划在2025年中期为国行iPhone引入AI功能,目前已敲定与 阿里巴巴、百度 合作,用户…...
立即释放 Mac 空间!Duplicate File Finder 8 重复文件高速清理工具
Duplicate File Finder 专业的 Mac 重复文件清理工具。查找并删除重复的文件、文件夹,甚至相似的照片。 不要让无用的文件占用磁盘上的宝贵空间。 整理你的 Mac。用最好的重复文件查找器来管理你的文件集合。 扫描任何磁盘或文件夹 主文件夹、照片/音乐库、外部磁…...
ES时序数据库的性能优化
本文主要是讲解了Elasticsearch数据库的优化,大家可以看一下。因为当时实操中涉及了6版本和7版本的一起优化,所以内容上大家自行区分一下。 一、基础设置 1. jvm.options参数详解 不同版本java配置会不一样 -Xms12g -Xmx12g 说明: 将 Xms…...
第3章:启动界面与主界面设计
第3章:启动界面与主界面设计 学习目标 掌握SwiftUI中的启动界面(Splash Screen)设计与实现学习主界面的布局与导航结构设计实现灵感笔记的列表与网格视图掌握SwiftUI中的动画与过渡效果学习如何使用环境对象共享数据理论知识讲解 启动界面设计原则 启动界面(Splash Scre…...
c++ 作用域解析操作符::
目录 什么是 ::? 基本语法 主要用途 1. 访问全局作用域 2. 访问类的静态成员 3. 访问命名空间中的内容 4. 区分嵌套作用域 5. 在类中定义成员函数 注意事项 什么是 ::? 在C中,:: 是作用域解析操作符(Scope Resolution O…...
JavaScript数据类型转换
在JavaScript编程中,由于其动态类型特性,经常需要在不同的数据类型之间进行转换。正确地执行类型转换不仅能够避免潜在的错误,还能提高代码的灵活性和可维护性。本文将探讨JavaScript中的常见数据类型转换方法,并提供一些实用的例…...
css错峰布局/瀑布流样式(类似于快手样式)
当样式一侧比较高的时候会自动换行,尽量保持高度大概一致, 例: 一侧元素为5,另一侧元素为6 当为5的一侧过于高的时候,可能会变为4/7分部dom节点 如果不需要这样的话删除样式 flex-flow:column wrap; 设置父级dom样…...
AI 技术 引入 RTK(实时动态定位)系统,可以实现智能化管理和自动化运行
将 AI 技术 引入 RTK(实时动态定位)系统,可以实现智能化管理和自动化运行,从而提高系统的精度、效率和可靠性。以下是 AI 技术在 RTK 系统中的应用实例: 一、AI 技术在 RTK 系统中的应用场景 1. 整周模糊度快速解算 问题:RTK 的核心是解算载波相位的整周模糊度,传统方法…...
【STM32F103ZET6——库函数】11.捕获红外信号
目录 红外原理 数据码 引导码 连发码 配置捕获引脚 使能引脚时钟 配置定时器 使能定时器时钟 配置输入捕获 中断优先级分组 配置定时器4中断 定时器中断使能 使能定时器 重写定时器中断服务函数 清空定时器中断标志位 例程 例程说明 main.h main.c HongWai…...
江科大51单片机笔记【9】DS1302实时时钟(上)
一、DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。RTC(Real Time Clock):实时时钟,是一种集成电路…...
在Spring Boot + MyBatis中优雅处理多表数据清洗:基于XML的配置化方案
问题背景 在实际业务中,我们常会遇到数据冗余问题。例如,一个公司表(sys_company)中存在多条相同公司名的记录,但只有一条有效(del_flag0),其余需要删除。删除前需将关联表…...
【计网】网络层
网络层 4.1 网络层提供的两种服务(一) 面向连接的虚电路服务(二) 无连接的数据报服务 4.2 IPv44.2.1 IPv4概述4.2.2 分类编址的IPv4地址4.2.3 划分子网的IPv4地址4.2.4 无分类编址的IPv4地址4.2.5 IPv4地址的应用规划(…...
稳定性保障-前端
前端稳定性保障是确保应用在各种环境下都能 高效、稳定、无错误 运行的策略和方法。可以从 监控、测试、容灾、优化 等方面进行保障。 📌 1. 监控 & 报警 实时监控 线上情况,及时发现问题。 ✅ 1.1 前端错误监控 • Sentry、Fundebug:…...
批量给 Word 中的所有图片添加水印
如果要给一个 Word 文档加水印,很多小伙伴都能轻松的完成,因为使用 Office 就能轻松的操作,并且也有很多第三方的工具可以帮我们实现。那假如需要给 Word 中的每一张图片都添加上水印,那有什么比较好的方法实现呢?今天…...
jQuery UI 简介
jQuery UI 简介 引言 随着互联网技术的飞速发展,前端开发已经成为网站和应用程序建设的重要组成部分。jQuery UI 是一个基于 jQuery 的用户界面库,它为开发者提供了丰富的交互组件和视觉效果,使得创建具有吸引力和互动性的网页变得更加简单。本文将为您详细介绍 jQuery UI…...
`label` 标签的 `for` 属性详解
一、基本概念 label 标签的 for 属性用于将标签与表单控件(如 input、select 等)绑定,其值需与目标元素的 id 完全匹配。这种关联允许用户点击标签时触发控件交互(如聚焦输入框或切换复选框),提升操作便捷…...
ArcGIS操作:10 投影坐标系转地理坐标系
应用情景:在计算shp面质心坐标的时,由于需要的坐标是经纬度,所以需要将投影坐标系转化为地理坐标系 1、打开工具箱 2、右侧:数据管理工具 → 投影和变换 → 要素 → 投影 3、选择投影的数据、输出路径、地理坐标系,点…...
【单片机通信技术】串口通信的几种方式与比较,详细解释SPI通信
一、介绍 串口通信是一种通过串行接口逐位传输数据的通信方式,广泛应用于嵌入式系统、工业控制、传感器网络等领域。 二、以下是几种常见的串口通信方式及其对比: 1.UART(Universal Asynchronous Receiver/Transmitter) 特点&am…...
DeepSeek开源Day5:3FSsmallpond技术详解
2 月 24 日,DeepSeek 启动 “开源周”,第四个开源的代码库为 3FS&smallpond(又是一下发布了两个)。 3FS(Fire-Flyer File System)是 DeepSeek 内部开发的一款高性能分布式文件系统,旨在为 A…...