Java 基础--运算符全解析
【Java 基础】Java 运算符全解析:程序世界的“加减乘除”与“是非对错”
作者:IvanCodes
发布时间:2025年4月29日🐣
专栏:Java教程
嗨,各位 Java 探险家们!👋 掌握了变量、数据类型这些基础“积木”之后 🧱,是时候学习如何让这些积木“动”起来了!这就需要用到 Java 世界的“工具箱”—— 运算符 (Operators)!🛠️
一、 算术运算符:数学计算的基础 🧮🔢
这些是最像我们平时数学运算的符号,用来执行基本的算术计算。
- + (加法): 计算两个数的和。也用于字符串连接 🔗。
- - (减法): 计算两个数的差。
- * (乘法): 计算两个数的积。
- / (除法): 计算两个数的商。 注意⚠️:整数除法会舍弃小数部分!
- % (取模/求余): 计算两数相除后的余数。常用来判断奇偶性或倍数关系。
代码示例:
public class ArithmeticDemo {public static void main(String[] args) {int a = 10;int b = 3;double c = 10.0;System.out.println("a + b = " + (a + b)); // 加法: 13System.out.println("a - b = " + (a - b)); // 减法: 7System.out.println("a * b = " + (a * b)); // 乘法: 30// 整数除法,舍弃小数System.out.println("a / b (int division) = " + (a / b)); // 除法: 3// 浮点数除法,保留小数System.out.println("c / b (float division) = " + (c / b)); // 除法: 3.333...// 取模 (求余数)System.out.println("a % b = " + (a % b)); // 取模: 1 (10除以3余1)System.out.println("10 % 2 = " + (10 % 2)); // 取模: 0 (偶数)System.out.println("9 % 2 = " + (9 % 2)); // 取模: 1 (奇数)// 字符串连接String firstName = "Ivan";String lastName = "Codes";System.out.println("Full Name: " + firstName + " " + lastName); // 字符串连接}
}
要点📌:特别留意整数除法 /
和取模 %
的行为,它们在编程中非常有用!
二、 关系运算符:比较大小与相等 🤔✅❌
关系运算符用于比较两个值之间的关系,其结果总是一个**boolean**类型的值 (true 或 false)。它们是构建条件判断的基础。
- == (等于): 判断两个值是否相等。 注意⚠️:比较基本类型时比较值,比较引用类型时比较内存地址!
- != (不等于): 判断两个值是否不相等。
- > (大于): 判断左边的值是否大于右边的值。
- < (小于): 判断左边的值是否小于右边的值。
- >= (大于等于): 判断左边的值是否大于或等于右边的值。
- <= (小于等于): 判断左边的值是否小于或等于右边的值。
代码示例:
public class RelationalDemo {public static void main(String[] args) {int x = 5;int y = 10;int z = 5;System.out.println("x == y : " + (x == y)); // false <❌>System.out.println("x == z : " + (x == z)); // true <✅>System.out.println("x != y : " + (x != y)); // true <✅>System.out.println("x > y : " + (x > y)); // false <❌>System.out.println("x < y : " + (x < y)); // true <✅>System.out.println("x >= z : " + (x >= z)); // true <✅>System.out.println("y <= z : " + (y <= z)); // false <❌>// 引用类型比较 (通常我们更关心内容是否相等,而不是地址)String s1 = new String("Hello");String s2 = new String("Hello");String s3 = s1;System.out.println("s1 == s2 : " + (s1 == s2)); // false <❌> (比较地址)System.out.println("s1 == s3 : " + (s1 == s3)); // true <✅> (指向同一地址)// 要比较字符串内容是否相等,应使用 equals() 方法System.out.println("s1.equals(s2) : " + s1.equals(s2)); // true <✅> (比较内容)}
}
关键🔑:关系运算的结果是布尔值,直接用于 if
, while
等条件语句中!比较引用类型相等性时,优先使用 .equals()
方法(如果该类重写了的话)。
三、 逻辑运算符:组合布尔条件的“与或非” 🤝🤷♀️🙅♂️
逻辑运算符用于组合一个或多个布尔表达式 (true/false),最终得到一个布尔结果。
- && (逻辑与 / AND): “并且”。当 两个 操作数都为 true 时,结果才为 true。 具有短路特性:如果第一个操作数为 false,则不再计算第二个操作数 <⚡️>。
- || (逻辑或 / OR): “或者”。当 至少一个 操作数为 true 时,结果就为 true。 具有短路特性:如果第一个操作数为 true,则不再计算第二个操作数 <⚡️>。
- ! (逻辑非 / NOT): “取反”。如果操作数为 true,结果为 false;如果操作数为 false,结果为 true。
代码示例:
public class LogicalDemo {public static void main(String[] args) {boolean isSunny = true;boolean isWarm = false;int score = 75;// 逻辑与 &&System.out.println("Is it sunny AND warm? " + (isSunny && isWarm)); // false <👎>System.out.println("Is score > 60 AND score < 80? " + (score > 60 && score < 80)); // true <👍>// 逻辑或 ||System.out.println("Is it sunny OR warm? " + (isSunny || isWarm)); // true <👍>System.out.println("Is score < 0 OR score > 100? " + (score < 0 || score > 100)); // false <👎>// 逻辑非 !System.out.println("Is it NOT sunny? " + (!isSunny)); // false <👎>System.out.println("Is the score NOT valid (outside 0-100)? " + !(score >= 0 && score <= 100)); // false <👎>// 短路效果演示int a = 5;// a > 10 是 false, && 后面的 a++ 不会执行boolean result1 = (a > 10) && (++a > 5);System.out.println("Result1: " + result1 + ", a after &&: " + a); // Result1: false, a after &&: 5 <⚡️>// a < 10 是 true, || 后面的 a++ 不会执行boolean result2 = (a < 10) || (++a > 5);System.out.println("Result2: " + result2 + ", a after ||: " + a); // Result2: true, a after ||: 5 <⚡️>}
}
技巧💡:利用 &&<
和 ||
的短路特性可以避免不必要的计算,甚至防止空指针异常!
四、 位运算符:深入底层的二进制魔法 🧠💻👾
位运算符直接操作数据的 二进制位 (0 和 1)。它们在某些特定场景下(如图形处理、加密、底层系统编程、性能优化)非常有用,但对于初学者可能不太常用。
- & (按位与): 两个操作数的对应位都为 1 时,结果位才为 1 <🔦>。
- | (按位或): 两个操作数的对应位至少一个为 1 时,结果位就为 1 <💡>。
- ^ (按位异或): 两个操作数的对应位不同时,结果位为 1;相同时为 0 <❓>。
- ~ (按位取反): 将操作数的所有位反转 (0 变 1,1 变 0) <👻>。
- << (左移): 将操作数的所有位向左移动指定的位数,右边空出的位补 0 <⬅️>。相当于乘以 2 的指定次方。
- >> (带符号右移): 将操作数的所有位向右移动指定的位数。左边空出的位用原符号位填充 (正数补 0,负数补 1) <➡️>。相当于除以 2 的指定次方。
- >>> (无符号右移): 将操作数的所有位向右移动指定的位数。左边空出的位总是补 0 <➡️>。
代码示例 (简单了解):
public class BitwiseDemo {public static void main(String[] args) {int num1 = 5; // 二进制: 0101int num2 = 3; // 二进制: 0011// 按位与 &System.out.println("num1 & num2 = " + (num1 & num2)); // 0001 -> 1// 按位或 |System.out.println("num1 | num2 = " + (num1 | num2)); // 0111 -> 7// 按位异或 ^System.out.println("num1 ^ num2 = " + (num1 ^ num2)); // 0110 -> 6// 按位取反 ~ (结果与数的二进制表示和补码有关)System.out.println("~num1 = " + (~num1)); // -6// 左移 << (相当于乘以 2^1)System.out.println("num1 << 1 = " + (num1 << 1)); // 1010 -> 10// 带符号右移 >> (相当于除以 2^1)System.out.println("num1 >> 1 = " + (num1 >> 1)); // 0010 -> 2int negNum = -5; // 负数的二进制表示复杂些 (补码)// 带符号右移 >> (负数右移,左边补 1)System.out.println("negNum >> 1 = " + (negNum >> 1)); // -3// 无符号右移 >>> (负数右移,左边补 0,结果变为很大的正数)System.out.println("negNum >>> 1 = " + (negNum >>> 1)); // 2147483645}
}
提示🔔:位运算对性能敏感的应用很有价值,但日常开发中逻辑运算符更常用。如果对二进制和补码不熟悉,可以先了解一下再深入研究位运算。
五、 赋值运算符:给变量“装东西” 📦➡️
赋值运算符用于将右侧的值赋给左侧的变量。
- = (简单赋值): 最基本的赋值,将右边的值赋给左边的变量。
- 复合赋值运算符: 这些是算术运算和赋值的快捷方式。
- += (加后赋值):
a += b
等价于a = a + b
<📈> - -= (减后赋值):
a -= b
等价于a = a - b
<📉> - *= (乘后赋值):
a *= b
等价于a = a * b
<✖️=> - /= (除后赋值):
a /= b
等价于a = a / b
<➗=> - %= (取模后赋值):
a %= b
等价于a = a % b
<%= > - (还有位运算的复合赋值:
&=
,|=
,^=
,<<=
,>>=
,>>>=
)
- += (加后赋值):
代码示例:
public class AssignmentDemo {public static void main(String[] args) {int count = 10; // 简单赋值 =int score = 0;// 使用复合赋值运算符score += 50; // score = score + 50; -> score is 50System.out.println("Score after += 50: " + score);count -= 3; // count = count - 3; -> count is 7System.out.println("Count after -= 3: " + count);count *= 2; // count = count * 2; -> count is 14System.out.println("Count after *= 2: " + count);// 注意:复合赋值运算符会进行隐式的强制类型转换short num = 5;// num = num + 10; // 编译错误❌: 10 默认是 int,int 不能直接赋给 shortnum += 10; // 编译通过✅: += 会自动将结果转回 short 类型System.out.println("Short num after += 10: " + num); // 15}
}
优点👍:复合赋值运算符不仅简洁,有时还能提高性能(虽然现代编译器优化得很好),并且处理了隐式类型转换。
六、 三元运算符:简洁的 if-else 选择 🤔❓✅❌
三元运算符(也叫条件运算符)是 Java 中唯一需要三个操作数的运算符。它是 if-else
语句的一种简洁形式,特别适合用于简单的条件赋值。
- 语法:
<font color="orange">条件表达式 ? 表达式1 : 表达式2</font>
- 执行逻辑:
- 计算
条件表达式
(必须是布尔值)。 - 如果条件为 true,则整个表达式的结果是
表达式1
的值 <✅>。 - 如果条件为 false,则整个表达式的结果是
表达式2
的值 <❌>。
- 计算
代码示例:
public class TernaryDemo {public static void main(String[] args) {int score = 85;String result;// 使用 if-elseif (score >= 60) {result = "Pass <✅>";} else {result = "Fail <❌>";}System.out.println("Result (if-else): " + result);// 使用三元运算符实现相同逻辑result = (score >= 60) ? "Pass <✅>" : "Fail <❌>"; // <❓> :System.out.println("Result (ternary): " + result);// 也可以用于直接返回值或更复杂的表达式int age = 17;String access = (age >= 18) ? "Granted" : "Denied";System.out.println("Access Status: " + access); // Deniedint max = (score > 90) ? 100 : score; // 如果分数>90则取100, 否则取原分数System.out.println("Adjusted Max Score: " + max); // 85}
}
适用场景🎯:当 if-else
逻辑非常简单,主要是根据条件给变量赋不同的值时,使用三元运算符可以使代码更紧凑。但不要滥用,如果逻辑过于复杂,嵌套的三元运算符会降低可读性!
七、总结 ✨✅
今天我们学习了 Java 中最常用的一些运算符:
- 算术运算符 🧮:进行数学计算。
- 关系运算符 🤔:进行比较,返回布尔值。
- 逻辑运算符 🤝:组合布尔条件,注意短路。
- 位运算符 🧠:操作二进制位(了解即可,按需深入)。
- 赋值运算符 📦:给变量赋值,复合赋值很方便。
- 三元运算符 ❓:简洁的条件赋值。
熟练掌握这些运算符是编写任何有意义程序的基础。多练习,你就能像指挥官一样,让数据按照你的意愿进行各种运算和判断! 👨💻👩💻
八、练练手,检验成果!✏️🧠
掌握了工具,就来试试看吧!
⭐ 基础计算 ⭐
- 计算
(15 + 5) * 2 / 4 % 3
的结果是多少?写出计算步骤。 - 声明两个
int
变量a = 10
,b = 20
。写代码交换它们的值(不允许使用第三个变量,可以考虑使用算术或位运算符)。
⭐ 逻辑判断 ⭐
- 给定一个年份
year
,写一个布尔表达式判断它是否是闰年。闰年条件:能被 4 整除但不能被 100 整除,或者能被 400 整除。 - 解释
||
和|
作为逻辑运算符时的主要区别,尤其是在效率方面。
⭐ 综合运用 ⭐
- 使用三元运算符,根据一个整数
num
的值,打印输出 “Positive”, “Negative”, 或 “Zero”。
九、参考答案 ✅💡
⭐ 基础计算答案 ⭐
1.计算结果与步骤:
15 + 5
->20
20 * 2
->40
40 / 4
->10
(整数除法)10 % 3
->1
(10 除以 3 余 1)- 最终结果:1
2.交换变量值 (不使用第三个变量):
- 方法一:使用算术运算
int a = 10;
int b = 20;
System.out.println("Before: a=" + a + ", b=" + b);
a = a + b; // a = 30
b = a - b; // b = 30 - 20 = 10
a = a - b; // a = 30 - 10 = 20
System.out.println("After (Arithmetic): a=" + a + ", b=" + b);
- 方法二:使用位运算 (异或) (效率更高)
int a = 10; // 1010
int b = 20; // 10100 (为了对齐写成 01010 和 10100)
System.out.println("Before: a=" + a + ", b=" + b);
a = a ^ b; // a = 10 ^ 20 = (01010 ^ 10100) = 11110 (30)
b = a ^ b; // b = 30 ^ 20 = (11110 ^ 10100) = 01010 (10)
a = a ^ b; // a = 30 ^ 10 = (11110 ^ 01010) = 10100 (20)
System.out.println("After (Bitwise XOR): a=" + a + ", b=" + b);
⭐ 逻辑判断答案 ⭐
3.判断闰年表达式:
int year = 2024; // 示例年份
boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
System.out.println(year + " is leap year? " + isLeapYear); // true
4.||
(逻辑或) vs |
(按位或,也可作逻辑或):
- 主要区别 (作为逻辑运算符时):
<font color="orange">||</font>
具有 短路 效果。如果第一个操作数为true
,它就不会计算第二个操作数,直接返回true
。而<font color="orange">|</font>
总会计算两边的操作数,即使第一个已经是true
。 - 效率方面: 因为
<font color="orange">||</font>
可能避免计算第二个操作数,所以在逻辑运算中通常 效率更高 <⚡️>。因此,进行逻辑判断时强烈推荐使用<font color="orange">||</font>
和<font color="orange">&&</font>
。<font color="orange">|</font>
和<font color="orange">&</font>
主要用于位运算。
⭐ 综合运用答案 ⭐
5.使用三元运算符判断正负零:
int num = -5; // 示例数字
String sign = (num > 0) ? "Positive <+>" : ((num < 0) ? "Negative <->" : "Zero <0>");
System.out.println("The number " + num + " is: " + sign); // The number -5 is: Negative <->num = 0;
sign = (num > 0) ? "Positive <+>" : ((num < 0) ? "Negative <->" : "Zero <0>");
System.out.println("The number " + num + " is: " + sign); // The number 0 is: Zero <0>num = 10;
sign = (num > 0) ? "Positive <+>" : ((num < 0) ? "Negative <->" : "Zero <0>");
System.out.println("The number " + num + " is: " + sign); // The number 10 is: Positive <+>
(这里嵌套了三元运算符,虽然简洁,但也展示了嵌套可能带来的轻微可读性下降,更复杂的判断建议用 if-else if-else
)
觉得这篇运算符笔记对你有帮助吗?点赞👍、收藏⭐、关注 三连击是对我最大的鼓励!💖 有任何疑问,欢迎在评论区提出!👇💬
相关文章:
Java 基础--运算符全解析
【Java 基础】Java 运算符全解析:程序世界的“加减乘除”与“是非对错” 作者:IvanCodes 发布时间:2025年4月29日🐣 专栏:Java教程 嗨,各位 Java 探险家们!👋 掌握了变量、数据类…...
【神经网络与深度学习】改变随机种子可以提升模型性能?
引言 随机种子在机器学习和数据处理领域中至关重要,它决定了模型训练、数据划分以及参数初始化的随机性。虽然固定随机种子能确保实验的可重复性,但改变随机种子有时会意外提升模型性能。本文将探讨这一现象的潜在原因,并揭示随机性如何影响…...
一页概览:统一数据保护方案
2010年左右手绘,用的是公司的信纸,签字笔,马克笔。方案为统一数据保护。其实解释备份软件加备份硬件(支持重复数据删除)的联合解决方案。...
Python中的itertools模块常见函数用法示例
itertools ,迭代工具模块,提供了用于高效处理迭代器和组合问题的工具。 1. itertools.permutations(iterable, rNone) 功能:生成输入迭代器的所有可能排列。 参数: iterable:输入的可迭代对象。r:可选参数…...
微服务学习笔记
1 微服务 微服务:基于业务领域建模的、可独立发布的服务,把业务内聚的功能封装起来,并通过网络供其他服务访问。 好处: 技术异构性,不同服务可以使用不同的技术弹性,可以更好的处理服务不可用的问题扩展…...
实验七:基于89C51和DS18B20的温度采集与显示
一、实验目的 学习使用DS18B20数字温度传感器采集温度数据。使用4位共阳极数码管显示温度数据,显示精度到小数点后两位。熟悉89C51单片机的I/O口操作和位选控制。二、实验器材 89C51单片机开发板DS18B20数字温度传感器4位共阳极数码管三极管8550(用于位选驱动)电阻、电容等辅…...
cmake:基础
本文主要探讨cmake语法相关知识。 cmake(GUI)安装 apt install cmake-curses-gui cmake -y cmake语法 cmake_minimum_required(VERSION 版本号) 设置cmake最低版本 project(工程名) <> PROGECT_NAME/CMAKE_PROJECT_NAME 设置工程名字 add_library(库名 SHARED/STAT…...
1.8 点云数据获取方式——小结
点云,作为三维空间信息的直观载体,在各行各业都得到了广泛应用。而能够获得三维点云数据手段,也是极为丰富。本章节主要介绍了主动式手段(包括激光雷达、ToF相机、结构光相机)和被动式手段(双目立体相机、单…...
超越单体:进入微服务世界与Spring Cloud概述
大家好!欢迎来到我的新系列文章——《微服务架构:Spring Cloud实战指南》。在之前的《Java服务端核心技术》系列中,我们一起深入学习了如何使用Spring Boot构建功能强大、安全可靠的单体应用程序。我们掌握了Spring的核心原理、Web开发、数据…...
深度学习篇---模型权重变化与维度分析
文章目录 前言1. 权重的作用2. 权重的维度全连接层卷积层3. 权重的变化4.实例代码(PyTorch 框架)场景代码解释模型定义数据生成优化设置初始权重设置训练循环前向传播反向传播更新权重结果输出维度与变化总结维度匹配梯度跟新5. 增加网络深度:多层感知机(MLP)代码解释6. 权…...
AtCoder Beginner Contest 403(题解ABCDEF)
A - Odd Position Sum #1.奇数数位和 #include<iostream> #include<vector> #include<stdio.h> #include<map> #include<string> #include<algorithm> #include<queue> #include<cstring> #include<stack> #include&l…...
计算机视觉与深度学习 | 双目立体匹配算法理论+Opencv实践+matlab实践
双目立体匹配 一、双目立体匹配算法理论与OpenCV、matlab实践一、双目立体匹配理论二、OpenCV实践三、优化建议四、算法对比与适用场景二、双目立体匹配算法理论及Matlab实践指南一、双目立体匹配理论二、Matlab实践步骤三、算法对比与优化建议四、完整流程示例五、常见问题与解…...
深挖Java基础之:认识Java(创立空间/先导:Java认识)
今天我要介绍的是在Java中对Java的一些基本语法的认识与他们的运用,以及拟举例子说明和运用场景,优势和劣势, 注:本篇文章是对Java的一些基本的,简单的代码块的一些内容,后续会讲解在Java中的变量类型&…...
springmvc从请求到响应的流程分析
一、创建springmvc项目 通过网盘分享的文件:hello-springmvc.zip 链接: https://pan.baidu.com/s/1VmUHurgph661ND9LWqKhaw 提取码: b36a 二、从请求到响应流程 我们先画一下流程图,如下图所示。 三、源码解析 3.1 HttpServlet接收请求 用户发送htt…...
RabbitMQ 启动报错 “crypto.app“ 的解决方法
RabbitMQ 启动报错 “crypto.app” 的解决方法 在使用 RabbitMQ 时,有时会遇到启动报错的问题,其中一种常见的报错是: {"init terminating in do_boot",{error,{crypto,{"no such file or directory","crypto.app…...
idm 禁止自动更新提示(修改注册表)
目前版本:v 6.42 Bulid 35 运行-regedit- 计算机\HKEY_CURRENT_USER\SOFTWARE\DownloadManager 计算机\HKEY_CURRENT_USER\SOFTWARE\DownloadManagerLstCheck -> 0 重启...
LeetCode - 02.02.返回倒数第 k 个节点
目录 题目 解法一 双指针算法 原理 详细过程 为什么它有效? 时间复杂度与空间复杂度 代码 解法二 递归算法 核心思想 执行流程详解 具体例子 代码 题目 面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode) 解法一 双指针算…...
<c++>使用detectMultiScale的时候出现opencv.dll冲突
最近在试着弄一下opencv,看网上很多人都是的用的python,但是python跑起来没有c快,生成的qt工程也大一些,想着试试c看能不能生成opencv。然后就用到这个函数,detectMultiScale。 出现一个问题,就是我的程序在…...
从实列中学习linux shell脚本2: shell 的变量 方法 命名和使用规则之类 比如拿:获取cpu 负载,以及负载超过2.0 以后就发生邮件为例子
以下是对 Linux Shell 中变量、方法(函数)、命名规则的详细说明,并结合 获取CPU负载并在负载超过2.0时发送邮件 的示例进行演示: 1. Shell 变量 命名规则 命名格式:变量名由字母、数字、下划线组成,不能以…...
Centos Ubuntu RedOS系统类型下查看系统信息
文章目录 一、项目背景二、页面三、说明四、代码1.SysInfo2.EmsSysConfig3.HostInformationController4.HostInfo 一、项目背景 公司项目想展示当前部署系统的:操作系统,软件版本、IP、主机名。 二、页面 三、说明 说明点1:查询系统类型及…...
【Hive入门】Hive高级特性:视图与物化视图
在大数据分析中,Hive作为Hadoop生态系统中的重要组件,提供了强大的数据查询和管理能力。除了基本表的操作,Hive还支持 视图和 物化视图,这两种特性在数据管理和查询优化中扮演着重要角色。本文将深入探讨视图的创建与性能影响&…...
特征工程四-2:使用GridSearchCV 进行超参数网格搜索(Hyperparameter Tuning)的用途
1. GridSearchCV 的作用 GridSearchCV(网格搜索交叉验证)用于: 自动搜索 给定参数范围内的最佳超参数组合。交叉验证评估 每个参数组合的性能,避免过拟合。返回最佳模型,可直接用于预测或分析。 2. 代码逐行解析 (1…...
【Hive入门】Hive函数:内置函数与UDF开发
Apache Hive作为Hadoop生态系统中的重要组件,为大数据分析提供了强大的SQL-like查询能力。Hive不仅支持丰富的内置函数,还允许用户开发自定义函数(UDF)以满足特定需求。本文将深入探讨Hive的内置函数(包括数学函数、字…...
HTML Picture标签详细教程
HTML Picture标签详细教程 简介 <picture>标签是HTML5中引入的一个强大元素,它为开发者提供了更灵活的图像资源管理方式。该标签主要用于让浏览器根据不同条件(如设备屏幕大小、分辨率或支持的图像格式)选择最适合当前显示环境的图像…...
Html1
一,HTML概述 网页开发需要学习的知识: html css javaScript 两个框架 VUE.js ElementUI UI user interface 用户界面 HTML xml 可扩展标记语言-->存储数据 Markup Language标签语言都会提供各种标…...
runpod team 怎么设置自己的ssh key呢?
生成 ed25519 公钥密钥 ssh-keygen -t ed25519 -C "yourqq.com"然后在pod容器配置key以及启动方式 选择edit pod 添加启动代码 启动代码可以参考官方给的内容: https://docs.runpod.io/pods/configuration/use-ssh bash -c apt update;DEBIAN_FRONT…...
Flutter:组件10、倒计时
import dart:async; import package:flutter/material.dart;class CountdownTimer extends StatefulWidget {final int seconds;final double? fontSize;final Color? textColor;final bool showDays;final bool showHours;final bool showMinutes;final bool showSeconds;fi…...
存储器分类
按宏观分类 内部存储:用于临时存储当前程序运行所需要的数据外部存储:指硬盘,用于存储需要保存下的数据 按存储功能分 磁盘存储器(Disk),如机械硬盘非易失性存储器(Flash memory),分为固态硬…...
案例解析:基于量子计算的分子对接-QDOCK(Quantum Docking)
分子对接(Moleculardocking)在药物发现中具有重要意义,但对接的计算速度和准确率始终难以平衡,其巨大解搜索空间对传统计算机来说异常艰巨。 本文通过引入网格点匹配(GPM, Grind point matching)和特征原子…...
人工智能和机器学习在包装仿真中的应用与价值
引言 随着包装成为消费品关键的差异化因素,对智能设计、可持续性和高性能的要求比以往任何时候都更高 。为了满足这些复杂的期望,公司越来越多地采用先进的仿真方法,而现在人工智能 (AI) 和机器学习 (ML) 又极大地增强了这些方法 。本文探讨…...
系统的环境变量
目录 基本概念 用途之一 环境变量表 命令行参数表 理解 更多的环境变量 基本概念 环境变量(environmentvariables)⼀般是指在操作系统中⽤来指定操作系统运⾏环境的⼀些参数。环境变量通常具有某些特殊⽤途,还有在系统当中通常具有全局特性 用途之一 我们看…...
css3伸缩盒模型第一章(主轴以及伸缩盒模型)
css3伸缩盒模型第一章(主轴) 一、伸缩盒模型简介 2009 年, W3C 提出了一种新的盒子模型 —— Flexible Box (伸缩盒模型,又称:弹性盒 子)。它可以轻松的控制:元素分布方式、元素对齐方式、元素视觉顺序 ……...
【MySQL】(9) 视图
一、什么是视图 视图是一张虚拟表,是表、其它视图的查询结果集。它本身不像基础表(物理表)一样存储数据,而是将 SQL 查询语句包装起来,通过执行查询语句动态生成数据。 二、视图的作用 当我们需要频繁使用一条查询语句…...
day10 python机器学习全流程实践
在机器学习的实践中,数据预处理与模型构建是极为关键的环节。本文将回顾数据预处理的全流程,并基于处理后的数据完成简单的机器学习建模与评估,暂不涉及复杂的调参过程。 一、预处理流程回顾 机器学习的成功,很大程度上依赖于高…...
Rust Ubuntu下编译生成环境win程序踩坑指南
前言: 1,公司要给一线搞一个升级程序,需要在win下跑。 之前都是找开发总监帮忙,但是他最近比较忙。就让我自己搞。有了下文.。说来惭愧,之前写过一篇ubuntu下编译windows的文章。里面的demo就一句话 fuck world。依赖…...
2025年- H12-Lc119-56.合并区间(普通数组)---java版
1.题目描述 2.思路 思路参考了代码随想录: 按照左边界从小到大排序之后,如果 intervals[i][0] < intervals[i - 1][1] 即intervals[i]的左边界 < intervals[i - 1]的右边界,则一定有重叠。(本题相邻区间也算重贴ÿ…...
合并两个有序链表
题目:21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入&#x…...
rsync命令详解与实用案例
rsync命令详解与实用案例 rsync是一款功能强大的Linux文件同步工具,通过高效的增量传输算法,能够显著减少数据传输量和时间,是备份、镜像和跨平台文件同步的理想选择。其核心价值在于只传输文件的差异部分,而非全量复制ÿ…...
gitee 如何修改提交代码的邮箱
gitee 如何修改提交代码的邮箱 1. 修改全局提交邮箱2. 修改特定仓库的提交邮箱3. 修改已提交记录的邮箱 4. 可能遇到的问题git filter-repo 拒绝执行解决办法方法一:使用 --force 参数 (亲测有效)方法二:创建一个全新的克隆仓库 注…...
MATLAB画一把伞
% 伞的参数num_ribs 5; % 伞骨数量修改为5R 1; % 伞的半径height 0.5; % 伞的高度handle_length 2; % 伞柄长度semicircle_radius 0.26; % 伞柄末端半圆的半径% 生成伞叶网格theta linspace(0, 2*pi, 100);phi linspace(0, pi/2, 50);[Theta, Phi] meshgrid(theta, phi…...
vue 实现文件流下载功能 前端实现文件流下载
首先场景就是,一般的文件下载是通过后端返回的文件地址下载文件,但当后端返回的是文件流的时候,下载要做特殊处理 案例截图: 下载成功: 代码处理,首先就是要在接口封装的地方加上 在 Vue 前端开发中实现文件流下载与普通文件下载的核心区别在于 数据处理方式。文件流…...
[Android]导航栏中插入电源菜单
1. 新增 frameworks/base/packages/SystemUI/res/layout/power.xml <?xml version"1.0" encoding"utf-8"?> <com.android.systemui.navigationbar.buttons.KeyButtonView xmlns:android"http://schemas.android.com/apk/res/android"…...
VSCode Verilog环境搭建
VSCode Verilog环境搭建 下载Iverilog安装Iverilog验证安装VS Code安装插件 下载Iverilog 官网下载Iverilog 安装Iverilog 一定要勾选这两项 建议勾选这两项 验证安装 运行Windows PowerShell输入命令:iverilog输入命令:Get-Command gtkwave …...
Hadoop 和 Spark 生态系统中的核心组件
通过jps命令,可以看到如下进程名,请解释一下它们各自是哪个命令产生的,有什么作用?一、Worker 1.来源:Spark 集群的 工作节点(Worker Node),由 start-worker.sh 启动 2.作用&#…...
MySQL多表操作
熟能生巧,全部代码在最后!!! 一、多表关系 一对一关系、一对多关系、多对多关系 注意多对多关系必须有中间表进行关联 多对多的关系就相当于是两个一对多关系 二、创建外键约束 专门用于多表操作的一种约束方式 控制的那个表…...
WPF TextBlock控件性能优化指南
WPF TextBlock控件性能优化指南 1. 引言 TextBlock作为WPF中最基础且使用最广泛的文本显示控件,其性能优化对整个应用程序的响应速度和资源占用有着重要影响。尽管TextBlock是一个轻量级控件,但在大型应用或需要显示大量文本的场景中,不恰当…...
DotNet 入门:(一) 环境安装
一、前言 本想用 Go 语言实现一个通过小爱同学操作电脑的,比如我对着手机说打开音乐,或调小音乐,电脑能做相应的处理。奈何我一时间没看懂,就想着用.Net 来试一下,于是就有了下面这篇文章。 二、安装.Net 环境 1. 下…...
初识Redis · 分布式锁
目录 前言: 分布式锁 setnx lua脚本和看门狗 redlock算法 Redlock 的加锁流程(5 步) 前言: 到了分布式锁这一章之后,我们首先能联想到的问题就是线程安全的问题,线程安全指的是多个线程在并发执行的…...
使用 OpenCV 实现图像中心旋转
在图像处理中,围绕中心点旋转图像是一个常见的需求。无论是为了数据增强、视觉效果,还是图像对齐,旋转图像都是一项基础且重要的操作。本文将详细介绍如何使用 OpenCV 实现围绕图像中心旋转的功能,并深入探讨其背后的数学原理。 一…...
云钥科技红外短波工业相机
云钥科技的红外短波相机是一款基于短波红外(SWIR,波长范围约1-3微米)技术的成像设备,专为高精度检测、全天候成像及特殊场景应用设计。以下从核心技术、性能参数、应用场景及产品优势等方面进行详细介绍: 一、核心…...