Java表达式2.0
1 .数据类型转换
自动类型转换的规则
自动类型转换遵循一定的规则,这些规则确保了转换的合理性和安全性。以下是自动类型转换的主要规则:
-
容量小的类型自动转换为容量大的类型
Java中,数据类型的容量从小到大依次为:byte
→short
→int
→long
→float
→double
。当进行算术运算或赋值操作时,如果操作数的类型不同,系统会自动将容量小的类型转换为容量大的类型,以确保运算的正确性和数据的完整性。 -
操作数为
double
型时的转换规则
如果表达式中有一个操作数是double
类型,那么整个表达式的结果会被提升为double
类型。这是因为double
类型具有最高的精度和最大的容量,能够容纳其他类型的数据,从而避免了精度丢失。 -
操作数为
float
型时的转换规则
如果表达式中有一个操作数是float
类型,那么整个表达式的结果会被提升为float
类型。这是因为float
类型比int
、long
等整数类型具有更高的精度,但比double
类型稍低。 -
操作数为
long
型时的转换规则
如果表达式中有一个操作数是long
类型,而没有float
或double
类型的操作数,那么整个表达式的结果会被提升为long
类型。这是因为long
类型比int
类型具有更大的范围,能够容纳更大的整数值。
示例与解释
以下是一些具体的示例,帮助理解自动类型转换的规则:
示例1:操作数为double
型
double result = 10 + 3.5;
-
在这个表达式中,
10
是int
类型,3.5
是double
类型。 -
根据自动类型转换规则,
int
类型的10
会被自动转换为double
类型,然后与3.5
进行加法运算。 -
最终,整个表达式的结果是
13.5
,并且结果的类型是double
。
示例2:操作数为float
型
float result = 10 + 3.5f;
-
在这个表达式中,
10
是int
类型,3.5f
是float
类型。 -
根据自动类型转换规则,
int
类型的10
会被自动转换为float
类型,然后与3.5f
进行加法运算。 -
最终,整个表达式的结果是
13.5f
,并且结果的类型是float
。
示例3:操作数为long
型
long result = 10L + 5;
-
在这个表达式中,
10L
是long
类型,5
是int
类型。 -
根据自动类型转换规则,
int
类型的5
会被自动转换为long
类型,然后与10L
进行加法运算。 -
最终,整个表达式的结果是
15L
,并且结果的类型是long
。
示例4:多个操作数的类型提升
double result = 10 + 5L + 3.5f;
-
在这个表达式中,
10
是int
类型,5L
是long
类型,3.5f
是float
类型。 -
首先,
int
类型的10
会被自动转换为long
类型,与5L
进行加法运算,结果是15L
。 -
然后,
15L
会被自动转换为float
类型,与3.5f
进行加法运算,结果是18.5f
。 -
最后,由于表达式中存在
double
类型的操作数,18.5f
会被自动转换为double
类型,最终结果是18.5
,并且结果的类型是double
。
自动类型转换的意义
自动类型转换在Java中具有重要的意义,它不仅简化了代码的编写,还提高了代码的可读性和可维护性。通过自动类型转换,开发者可以避免显式地进行类型转换,从而减少代码的冗余和出错的可能性。同时,自动类型转换还确保了数据在转换过程中的安全性和准确性,使得开发者可以更加专注于逻辑的实现,而不是类型转换的细节。
注意事项
尽管自动类型转换非常方便,但在某些情况下,开发者仍然需要注意以下几点:
-
精度丢失:虽然自动类型转换会尽量避免精度丢失,但在某些情况下,如将
float
或double
转换为整数类型时,可能会导致精度丢失。 -
范围溢出:如果转换后的类型范围不足以容纳原始数据,可能会导致范围溢出。例如,将一个非常大的
long
值转换为int
类型时,可能会导致数据丢失或错误。 -
显式类型转换:在某些情况下,如果需要将容量大的类型转换为容量小的类型,需要使用显式类型转换(强制类型转换),并注意可能引发的异常。
-
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的 那种数据类型,再进行计算。
byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
boolean类型不能与其它数据类型运算。
-
int a = 100; long b = 200;
-
b = a + b; System.out.println(b); 计算下列结果?
-
int a = 123; double d = a + 123; System.out.println(d);
-
int b = a /300; System.out.println(b);
强制类型转换
-
条件:转换的数据类型必须是兼容的
-
格式:(数据类型) 变量 , (数据类型) 是强制类型转换后的数据类型。例:
double d = 123.456d;System.out.println(d);int i = d;// 编译不通过int i = (int) d;// 截断操作System.out.println(i);;
-
*注意:强制转换有可能造成数据的缺失或者精度的缺失
编码情况1: long l1 = 123; // ok long l1 = 1234567890123456789; // 编译不通过 System.out.println(l1); float f1 = 12.3; // 编译不通过 // float f1 =(float) 12.3; 编码情况2: 整型常量,默认类型为int型 浮点型常量,默认类型为double类型 byte b = 12; byte b1 = b + 1;// 编译不通过 float f1 = b + 12.3;// 编译不通过 // byte b1 = (byte) (b + 1); // float f1 = (float) (b + 12.3);
2. 作用域
-
变量起作用的范围,称为作用域。
-
范围:变量在哪对大括号中声明定义的,范围就是哪对大括号。
-
在同一个作用域中,不能定义重复的变量。
-
3. 运算符
3.1 算数运算符
-
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
-
表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法:相加运算符两侧的值 | A + B 等于 30 |
- | 减法:左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法:相乘操作符两侧的值 | A * B 等于 200 |
7/2 | 除法:左操作数除以右操作数 | B / A 等于 3 |
% | 取余(取模):左操作数除以右操作数的余数 | B % A 等于 0 |
++ | 自增:操作数的值增加1 | B++ 或 ++B 等于 21 |
-- | 自减:操作数的值减少1 | B-- 或 --B 等于 19 |
-
自增自减运算符
-
基本使用
int a = 5; a++; System.out.println(a); // 此时a的值为6 a--; System.out.println(a); // 此时a的值为5
-
a++
和++a
的区别int a = 5; int b = a++; System.out.println(a); // 6 System.out.println(b); // 5 int c = 5; int d = ++c; System.out.println(c); // 6 System.out.println(d); // 6
-
a++
先赋值后自增 -
++a
先自增后赋值int i = 6; int j = i++ + ++i; int k = --j - i-- - j-- + i++;
-
-
3.2 关系运算符
-
下表为Java支持的关系运算符
-
表格中的实例整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B)为真 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A > B)为假 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A < B)为真 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A >= B)为假 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真 |
3.3 逻辑运算符
-
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
运算符 | 说明 |
---|---|
逻辑与 & | 两个条件为true,结果才是true,否则是false |
逻辑或 | | 两个条件有一个是true,结果就是true |
逻辑非 ! | 取反:!false为true,!true为false |
短路与 && | 左侧表达式为false,则直接返回false |
短路或 || | 左侧表达式为true, 则直接返回true |
&”和“&&”的区别
单&时,左边无论真假,右边都进行运算
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。(一假俱假)
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。(一真俱真)
//1>2的结果为false,那么整个表达式的结果即为false,还要计算2>(3/0),因为0不能做除数,所以会输出异常信息 boolean d = 1>2 & 2>(3/0); System.out.println(d); //1>2的结果为false,那么整个表达式的结果即为false,将不再计算2>(3/0) boolean c = 1>2 && 2>(3/0); System.out.println(c);
3.4 赋值运算符
-
下面是Java语言支持的赋值运算符:
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+= | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C += A等价于C = C + A |
-= | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C -= A等价于C = C - A |
*= | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C *= A等价于C = C * A |
/= | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C /= A,C 与 A 同类型时等价于 C = C / A |
3.5 位运算符 (了解)
-
下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13:
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0。 | (A&B),得到12,即 0000 1100 |
| | 如果相对应位都是0,则结果为0,否则为1。 | (A | B)得到61,即 0011 1101 |
^ | 如果相对应位值相同,则结果为0,否则为1。 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即 1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15,即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A >>> 2得到15,即 0000 1111 |
-
注意:
&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是boolean类型,就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符。
-
位运算是直接对整数的二进制进行的运算。
public static void main(String[] args) {int a = 60; // 0011 1100int b = 13; // 0000 1101System.out.println(a&b); // 0000 1100System.out.println(a|b); // 0011 1101} public class JavaDemo {public static void main(String[] args) {/*1.位运算符操作的都是整型的数据2.<<在一定范围内,每向左移一位,相当于*2>>在一定范围内,每向左移一位,相当于/2*/int i = 21;System.out.println("i<<2=" + (i << 2));System.out.println("i<<3=" + (i << 3));System.out.println("i<<27=" + (i << 27));System.out.println("i>>2=" + (i >> 2)); } }
-
java中的进制声明
public static void main(String[] args) {int a = 0b11; //声明二进制变量int b = 011; //声明八进制变量int c = 11; //声明十进制变量int d = 0xaabb; //声明十六进制变量System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);}
3.6 其他运算符
-
条件运算符(x?y:z)
条件运算符也被称为三元运算符。
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
int a = 10; int b = a > 10 ? 10 : 0; class calc {public static void main(String[] arg) {int a = 10;int b = 20;int c = 30;int result = (a > b ? a : b) > c ? (a > b ? a : b) : c;System.out.println(result);} }
-
instanceof 运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类型或接口类型)。
如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。
String name = "James"; boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
如果被比较的对象兼容于右侧类型,该运算符仍然返回true。
字符串类型:String String不是基本数据类型,属于引用数据类型 使用方式与基本数据类型一致。例如:String str = “abcd”; 一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。
字符串连接符(+) “+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
int a=12; System.out.println("a="+ a);//输出结果: a=12 String a = "3"; int b = 4 ; int c = 5 ; System.out.println(a+b+c); System.out.println(b+c+a);
3.7 运算符优先级
-
算术运算符 > 关系运算符 > 逻辑运算符
-
复杂的运算需要用小括号
()
来强制控制运算顺序,可读性强int a = 3;int b = a += a++;int c = b *= a;
相关文章:
Java表达式2.0
1 .数据类型转换 自动类型转换的规则 自动类型转换遵循一定的规则,这些规则确保了转换的合理性和安全性。以下是自动类型转换的主要规则: 容量小的类型自动转换为容量大的类型 Java中,数据类型的容量从小到大依次为:byte → shor…...
【概率论,算法】排列的峰值期望
Surtr1 的珂学难题 题目链接:https://ac.nowcoder.com/acm/contest/107965/E 给定一个长度为 n n n 的排列 p p p,排列中任一位置如果满足以下条件,则称该位置为 峰值: 位置 1:若存在元素,满足 p [ 1 ] > p […...
清理C盘组合拳:最高释放空间80GB+
分享一套系统化的C盘清理方案,涵盖从基础清理到深度优化的8个关键步骤,结合安全性与效率,可快速释放5-50GB空间: 一、精准定位空间占用源(必备工具) 空间可视化分析 使用 TreeSize Free 或 WizTree 扫描C…...
容器中的对象切片问题
C 容器(如 std::vector、std::list 等) 通常存储对象的副本,而非指向对象的指针。因此,当与继承结合使用时,可能导致 切片(Object Slicing) 问题,即仅存储基类部分,丢失派…...
SpringBoot编写单元测试
pom.xml引入单元测试的坐标 <!--单元测试坐标--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>编写单元测试类 测试类…...
二、在springboot 中使用 AIService
在上一篇文章中,我们介绍了如何使用langchain4j实现简单的问答功能,本篇文章我们将介绍如何在springboot中使用AIService。 1.实现原理 先看下AiService注解所在的依赖langchain4j-spring-boot-starter中包含什么内容: 1.1 event.AiServi…...
拼多多面经,暑期实习Java一面
项目中的设计模式 mysql连接过程,索引,分库分表场景,路由策略 redis使用场景,分片集群怎么搭建与路由,数据一致性 分布式锁怎么用的,具体使用参数 线程池怎么用的,过程 sql having 分布式事务 如…...
Function calling LLMs 的 MCP:AI开发的双剑合璧
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创AI未来! 🚀 在 MCPs 成为主流(或者像现在这样火得一塌糊涂)之前,大多数 AI …...
数字系统与编码
1. 数字系统(Number Systems) 1.1 常见数字系统 系统基数符号集示例应用场景二进制20, 11010计算机底层电路、数据存储八进制80-717Unix文件权限(如chmod 755)十进制100-942日常计算十六进制160-9, A-F0x1F内存地址、颜色编码&a…...
Pytorch实战
1、安装 安装 conda, Python工具大全,方便管理多个 Python 环境,必须选择跟自己环境配套的版本。 https://www.anaconda.com 网速慢的,可以参考国内源,也可以去这里看看: torch PyPI Index of /anaconda/miniconda…...
如何高效利用呼叫中心系统和AI语音机器人
要更好地使用呼叫中心系统和语音机器人,需要结合两者的优势,实现自动化、智能化、高效率的客户服务与业务运营。以下是优化策略和具体实践方法: 一、呼叫中心系统优化 1. 智能路由与IVR优化 智能ACD(自动呼叫分配) …...
LeetCode[232]用栈实现队列
思路: 一道很简单的题,就是栈是先进后出,队列是先进先出,用两个栈底相互对着,这样一个队列就产生了,右栈为空的情况,左栈栈底就是队首元素,所以我们需要将左栈全部压入右栈ÿ…...
using用法整理
using 的极简新手教程,用最直白的语言和代码解释: 美图美图 一、核心作用:给类型起别名 目的:让复杂类型名变短、变好记。 例子: // 原名:std::vector<std::string> // 起个别名就叫 StringList…...
《猎豹夕阳》
年少时很喜欢的一篇文章,曾和挚友一遍又一遍的记诵,今天又偶然遇到他,转载如下: 我第一次见到它,是在风雪的夜里。我不会抱怨这种天气,因为我是个优秀的登山探险者,我必须在这种天气下工作。我…...
【AI训练环境搭建】在Windows11上搭建WSL2+Ubuntu22.04+Tensorflow+GPU机器学习训练环境
一、安装Ubuntu 拿到该文件Ubuntu-22.04.tar 通过wsl导入该虚拟机镜像,然后查看wsl虚拟机列表。 wsl --import Ubuntu-22.04-tensorflow D:\wsl-data\Ubuntu-22.04-tensorflow D:\wsl-data\temp\Ubuntu-22.04.tarwsl -l 进入虚拟机 wsl -d Ubuntu-22.04-tensorfl…...
如何轻松实现用户充值系统的API自动化测试
在现代软件开发中,API(应用程序编程接口)作为连接不同系统和模块的关键组件,其重要性日益凸显。随着软件应用的互联性不断增强,API的数量和复杂度也在不断增加。传统的API测试方法面临着诸多挑战: 1.手动测…...
Python 一等函数( 高阶函数)
高阶函数 接受函数为参数,或者把函数作为结果返回的函数是高阶函数(higherorder function)。map 函数就是一例,如示例 5-2 所示。此外,内置函 数 sorted 也是:可选的 key 参数用于提供一个函数,…...
用于手部康复设备的TinyML语音分类嵌入式人工智能模块
论文标题 英文标题:TinyML Speech Classification Embedded AI Module for Hand Rehabilitation Device 中文标题:用于手部康复设备的 TinyML 语音分类嵌入式人工智能模块 作者信息 Arkorn Numsomran:Triam Udom Suksa Pattanakarn Suvarna…...
【HarmonyOS 5】VisionKit人脸活体检测详解
【HarmonyOS 5】VisionKit人脸活体检测详解 一、VisionKit人脸活体检测是什么? VisionKit是HamronyOS提供的场景化视觉服务工具包。 华为将常见的解决方案,通常需要三方应用使用SDK进行集成。华为以Kit的形式集成在HarmoyOS系统中,方便三方…...
Linux操作系统--进程的创建和终止
目录 1.进程创建 1.1fork()函数初识 1.2写时拷贝 1. 提升系统效率 2. 隔离错误影响 3. 支持并行计算 2.进程终止: 2.1进程退出场景: 2.2进程常见退出方法: 2.3_exit()系统调用接口 2.4exit函数 2.5return退出 1.进程创建 1.1for…...
算法分析传输加密数据格式密文存储代码混淆逆向保护
代码混淆 一.基本概念java的bytecode很容易通过JAD等反编译工具还原出源代码。这样势必不满足安全的定义。如何一定程度上保护需要防止被反编译的源代码呢?混淆(obfuscate)技术注意:用obfuscate防盗版是根本不可能,连汇…...
从事计算机视觉需要掌握哪些知识
目录 基础数学知识 计算机科学基础 传统计算机视觉知识 机器学习与深度学习知识 其他知识 计算机视觉是一门让计算机从图像或视频中获取有意义信息的跨学科领域,从事该领域需要掌握多方面的知识,以下详细介绍: 基础数学知识 线性代数 &…...
Android Studio 中 Drawable 详细全解
文章目录 一、Drawable 概述二、Drawable 类型详解1. 位图 Drawable (BitmapDrawable)2. 矢量 Drawable (VectorDrawable)3. 形状 Drawable (ShapeDrawable)4. 图层 Drawable (LayerDrawable)5. 状态列表 Drawable (StateListDrawable)6. 级别列表 Drawable (LevelListDrawable…...
【实战中提升自己】内网安全部署之端口隔离与MAC地址认证
1 1拓扑 「模拟器、工具合集」复制整段内容 链接:https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab7ulgil 1 端口隔离技术部署 [boss]port-group 1 [boss-port-group-1]port-isolate enable 说明:这里有几个地方不需要部署…...
Linux 420 find stat touch tree scp crontab
准备安装CentOSstream https://blog.csdn.net/s_alted/article/details/117739735 官网 CentOS 9 “Couldn’t open file /mnt/repodata/repomd.xml” deepseek 下载成功 树状 另一台虚拟机...
基于 Vue3 + ECharts + GeoJson 实现区域地图钻取功能详解
文章目录 前言一、实现步骤1. 项目初始化2. 准备GeoJson数据3. 创建地图组件4. 创建主页面组件5. 使用组件 二、功能亮点三、性能优化建议四、常见问题解决五、结语六、实战demo七、资源下载 前言 在数据可视化领域,地图展示是一种非常直观的表现形式。而地图钻取&…...
算法题(129):二维前缀和
审题: 本题需要我们将q组矩阵的和打印出来 思路: 方法一:二维前缀和 由于本题使用暴力的模拟方法运行次数高达1e11,会超时,所以我们采用运行次数在1e6的二维前缀和来解题 第一步:前缀和的求法 x i…...
NEAT 算法解决 Lunar Lander 问题:从理论到实践
NEAT 算法解决 Lunar Lander 问题:从理论到实践 0. 前言1. 定义环境2. 配置 NEAT3. 解决 Lunar lander 问题小结系列链接0. 前言 在使用 NEAT 解决强化学习问题一节所用的方法只适用于较简单的强化学习 (reinforcement learning, RL) 环境。在更复杂的环境中使用同样的进化解…...
Arduino示例代码讲解:Project 07 - Keyboard 键盘
Arduino示例代码讲解:Project 07 - Keyboard 键盘 Project 07 - Keyboard 键盘程序功能概述功能:硬件要求:输出:代码结构全局变量`setup()` 函数`loop()` 函数读取电位器值:打印电位器值:播放音调:运行过程注意事项Project 07 - Keyboard 键盘 /*Arduino Starter Kit e…...
4.凸包-Graham Scan
Graham Scan:Algorithm Preprocessing 根据角度进行排序 Graham Scan 例子 例2 Graham Scan:Correctness Left Turn/right Trun 下一个点出现的两种情况:非蓝即绿 Presorting 预排序很重要:否则所有的点都会满足 to-left-test BackTracks算法复杂度 …...
系统架构师2025年论文《论SOA技术的应用》
摘要: 本人于XXXX年XX月参加某市医院《预约挂号系统》的开发工作,在该项目中主要担任系统架构师,主要负责该系统架构和网络安全体系架构设计。经过多年的医院信息化建设,某市医院已经建立了一些应用系统,但是…...
React+TS编写轮播图
当前轮播图存在部分问题,一次循环结束,进入下一次需要点击两次(所以动画效果上点击第二次才出现) 轮播图:实现无限循环轮播图的关键在于"视觉欺骗"——我们在实际数据的前后各添加部分数据副本,当…...
山东大学创新项目实训开发日志(19)之前端知识深度学习
今天晚上在队长的带领下学习了一下前端vue的基础知识 reactive和ref函数 refreactive数据类型原始数据、对象对象操作js中需要添加.value,tamplate中则不用都不用添加.value computed和watch computed 写法 <script setup>const Factorial computed(() &g…...
【C++详解】C++入门(一)
文章目录 一、命名空间命名空间的基本特性命名空间的使用 二、C输入输出用法三、缺省参数(默认参数)定义用法 四、函数重载 一、命名空间 命名空间的基本特性 #include <stdio.h> #include <stdlib.h>int rand 10;int main() {// 编译报错:error C23…...
MAC-从es中抽取数据存入表中怎么实现
使用 Java 从 Elasticsearch 抽取数据并存入数据库表的完整实现方案: 1. Maven 依赖配置 <dependencies><!-- Elasticsearch --><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-c…...
Android串口通信
最近因为需要在Android平台进行电子秤的开发,首先第一步就是需要解决Android串口通信获取电子秤的称重信息。 google官方给我们提供了现成的解决方案,里面有编译好的apk文件还有源代码可以直接参考使用。地址:http://code.google.com/p/andr…...
QT常见输入类控件及其属性
Line Edit QLineEdit用来表示单行输入框,可以输入一段文本,但是不能换行 核心属性: 核心信号 信号 说明 void cursorPositionChanged(int old,int new) 当鼠标移动时发出此型号,old为先前位置,new为新位置 void …...
RAG 与 MCP 如何以不同方式解决大模型的局限性
Claude 和 GPT-4o 等大型语言模型 (LLM) 功能强大,但也面临两个主要限制:它们包含的知识是时效性的(更具体地说,是在训练时点固定的),并且决定它们一次可以处理多少信息的上下文窗口是有限的。 检索增强生…...
[Windows]_[VS2017]_[如何进行远程调试程序]
场景 在开发Windows程序时,有时候在测试机上测试出异常操作的情况,在开发机上就是出现不了。还比如在测试机上能测试到崩溃的情况,在开发机上也是重现不了,怎么办? 说明 这种情况可能是测试机上的系统版本࿰…...
Retinex系列图像/视频增强算法介绍
Retinex 系列原理基础 一、核心原理与理论 Retinex算法基于人类视觉系统特性,认为观测到的图像由光照分量(L)与反射分量( R )乘积构成,即: S ( x , y ) = L ( x , y...
游戏引擎学习第237天:使用 OpenGL 显示图像
win32_game.cpp: 禁用 PFD_DOUBLEBUFFER 我们正在处理一个新的开发阶段,目标是在使用 OpenGL 渲染的同时能正常通过 OBS 进行直播。昨天我们已经尝试了一整天来解决这个问题,希望能找到一种方式让 OBS 能正确地捕捉到 OpenGL 的窗口画面。虽然我们不确定…...
【C++基本算法】背包问题——完全背包
7. 背包问题——完全背包 文章目录 7. 背包问题——完全背包【模板】完全背包零钱兑换零钱兑换∥完全平方数问题解决注意事项 【模板】完全背包 题目链接: 【模板】完全背包 要点: 完全背包核心逻辑:物品无限次选择,状态转移方…...
Spring 01
今天是2025/0420 19:44 day 21 总路线请移步主页Java大纲相关文章 今天进行Spring 1,2,3 个模块的归纳 最近在忙毕设,更新有点慢,见谅 首先是Spring 的相关内容概括的思维导图 一、核心概念详解 1. IoC容器 1.1 工作原理 // 典型使用示例 Applica…...
小迪第10天http/s数据包
HTTP数据包 浏览器请求&请求头&响应头 浏览器访问流程 请求:用户–>web服务器 (Request) 响应:web服务器–> 用户(Response) 加代理后 请求:用户–>代理–>web服务器 (Request) 响应:web服务器–>代理–> 用户(Response) http GET请求头 http post…...
网络设备基础运维全攻略:华为/思科核心操作与巡检指南
一、设备登录与基础操作体系 1. 安全登录策略与环境准备 (1)登录方式深度解析 协议华为/H3C命令思科命令安全性应用场景Telnettelnet 192.168.1.1telnet 192.168.1.1明文传输本地测试(禁止公网使用)SSHssh -l admin 192.168.1.…...
Jsp技术入门指南【八】利用EL表达式开发无脚本的JSP页面
Jsp技术入门指南【八】利用EL表达式开发无脚本的JSP页面 前言一、什么是EL?二、EL如何访问作用域?2.1 对比传统脚本 vs EL2.2 EL的“自动搜索机制” 三、EL运算规则:什么能相加?什么不能?四、EL如何访问集合和数组&…...
MySQL数据库(基础篇)
一:MySQL的概述 1:MySQL数据库的下载地址 MySQL :: 下载 MySQL 安装程序 2:MySQL的客户端连接方式 1:使用Mysql自带的来连接 2:使用windows自带的命令行来来连接(需要配置path环…...
OpenCV 图像调整指南
OpenCV 提供了多种图像调整功能,以下是常见的视觉图片调整方法: 一、基本调整 1. 调整亮度和对比度 import cv2 import numpy as npdef adjust_brightness_contrast(img, brightness0, contrast0):# 亮度和对比度调整# brightness: -100 到 100 (0 表示…...
云效部署实现Java项目自动化部署图解
前言 记录下使用云效部署Java项目,实现java项目一键化自动化部署。 云效流程说明: 1.云效拉取最新git代码后 2.进行maven编译打包后,上传到指定服务器目录 3.通过shell脚本,先kill java项目后,通过java -jar 启动项…...
17.Chromium指纹浏览器开发教程之设备内存和处理器指纹定制
设备内存指纹定制 在 JavaScript 中,可以使用 navigator.deviceMemory 来获取设备的内存信息。它返回一个表示设备的内存大小(以 GB 为单位)的浮点数。具体代码如下: if (navigator.deviceMemory) {// 获取设备内存信息const de…...