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

JAVA中常用类型

一、包装类

1.1 包装类简介

java是面向对象的语言,但是八大基本数据类型不符合面向对象的特征。因此为了弥补这种缺点,为这八中基本数据类型专门设计了八中符合面向面向对象的特征的类型,这八种具有面向对象特征的类型,就叫做包装类,英文:wrapper class。

所有的基本数据类型和包装类型的对比如下图:

1.2 装箱和拆箱

  • 装箱boxing : 由基本数据类型转型为包装类型。

    • 调用包装类的构造器,进行装箱

    • 调用valueOf()静态方法,进行装箱

  • 拆箱 unboxing: 由包装类型转型为基本数据类型。

    • 调用xxxValue()非静态方法,进行拆箱

public class Demo01 {public static void main(String[] args) {int age = 10;Integer a1 = new Integer(age);//用第一种方式进行装箱操作,由值转为了对象Integer a2 = Integer.valueOf(100);//用第二种方式进项装箱操作int s = a1.intValue();//拆箱操作,由对象转为了值int s1=a2.intValue();System.out.println(a1);System.out.println(a2);System.out.println(s+1);//打印结果是11,证明已经变回了值System.out.println(s1+1);//打印结果是101,证明已经变回了值}
}

 

1.3 自动装箱和拆箱

为了方便获取包装类对象,从jdk1.5以后,提供了一个自动装箱的操作,也提供了一个包装类到基本数据类的自动拆箱操作。

自动装箱 : 直接使用一个基本数据类型的变量或字面值给一个包装类型的引用进行赋值即可;  省略掉的是  valueOf 方法
自动拆箱 : 直接使用一个包装类型的引用给一个基本数据类型的变量进行赋值即可;省略掉的是  xxValue 方法

Integer b=66;//实际上,底层直接帮我们调用了工具方法valueof()方法进行装箱
Short b1=new Short("20");
short b2=b1;//底层自动调用Shortvalue()自动拆箱

1.4 包装类的常量池

对于装箱操作后的包装类的对象,jvm在堆中,维护了一个常量池,该常量池适用于调用了valueOf()方法产生的包装类对象,以及自动装箱的包装类对象。不适用于new关键字创建的包装类对象。

Byte, Short, Integer, Long :创建了数值范围为[-127,128]的相应类型的缓存数据

Character :创建了数值在 [0, 127] 范围的缓存数据

Boolean 直接返回 true 或 false

两种浮点数类型的包装类 Float, Double 并没有实现常量池技术。

Integer b3=new Integer(11);
Integer b4=Integer.valueOf(11);
System.out.println(b3==b4);

证明b3和b4不是同一个对象,一个在包装常量池,一个在堆中

 double d1 = 3.14;
 Double d2 = Double.valueOf(d1);
 Double d3 = Double.valueOf(d1);
 System.out.println(d2==d3); 

如何有常量池,那么d2和d3应该指向同一个地址,结果是true,但结果是false,证明没有常量池

1.5 包装类其他常用方法

工具方法:

static WrapperClassName valueOf(xxx value)

static WrapperClassName valueOf(String value)

static xxx parseXXX(String value)

static String toBinaryString();  转成二进制

static String toHexString();    转成16进制

 static String toOctalString()   转成8进制

String line="123456";
int i=Integer.parseInt(line);
System.out.println(i+1);//结果为123457,证明把字符串line转成了int类型的数字
int num = 1001;
System.out.println(Integer.toBinaryString(num)); //1111101001
System.out.println(Integer.toOctalString(num));  //  1751
System.out.println(Integer.toHexString(num));    //    3e9

二、BigDecimal

提供该类的意图:就是为了更精确的运算。(double和float在运算时,有精度损失,科研中一般不用)

1.1 常用构造器

BigDecimal(String s):  推荐使用

BigDecimal(int v):

BigDecimal(long v):

BigDecimal(double v):

1.2 常用方法

BigDecimal add(BigDecimal other);

BigDecimal subtract(BigDecimal other);

BigDecimal multiply(BigDecimal other);

BigDecimal divide(BigDecimal other):  做除法时要注意,除数不能是0, 还有不能出现除不尽的情况,不然都会报异常。

public class Demo02 {public static void main(String[] args) {BigDecimal m =new BigDecimal("10");BigDecimal n =new BigDecimal("20");BigDecimal sum=m.add(n);System.out.println(sum);//调用了重写的toString,返回字符串样子。BigDecimal c=n.subtract(m);System.out.println(c);BigDecimal c1=n.multiply(m);System.out.println(c1);BigDecimal c2=n.divide(m);System.out.println(c2);}
}

1.3 常用的舍入模式

BigDecimal.setScale()方法用于格式化小数点
setScale(1)表示保留一位小数,默认用四舍五入方式     

setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入
setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和ROUND_UP作用一样,数字<0和ROUND_DOWN作用一样
setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。

1、ROUND_UP,向远离0的方向舍入,在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。
注意,此舍入模式始终不会减少计算值的大小。
eg: 保留1位小数 1.60->1.6 1.61->1.7 1.66->1.7 , -1.62->-1.7

2、ROUND_DOWN,向接近0的方向舍入,在丢弃某部分之前,始终不增加数据(即,截断),该方式是只减不加。
eg: 保留1位小数 1.60->1.6 1.61->1.6 1.66->1.6 , -1.62->-1.6

3、ROUND_CEILING,向正无穷方向舍入,如果数值为正,舍入方式与ROUND_UP一致,如果为负,舍入方式与ROUND_DOWN一致,该模式始终不会减少计算数值。
eg: 保留1位小数 1.60->1.6 1.61->1.7 1.66->1.7 , -1.62->-1.6

4、ROUND_FLOOR,向负无穷方向舍入,如果数值为正,舍入行为与 ROUND_DOWN 相同;如果为负,则舍入行为与 ROUND_UP 相同。该模式始终不会增加计算数值。
eg: 保留1位小数 1.60->1.6 1.61->1.6 1.66->1.6 , -1.62->-1.7

5、ROUND_HALF_UP,向“最接近的”数字舍入,也就是四舍五入。
eg: 保留1位小数 1.61->1.6 1.65->1.7 1.66->1.7 , -1.62->-1.6

6、ROUND_HALF_DOWN,向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式,也就是五舍六入。
eg: 保留1位小数 1.61->1.6 1.65->1.6 1.66->1.7 , -1.62->-1.6

7、ROUND_HALF_EVEN,向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。

eg. 1.15->1.2, 1.25->1.2

8、ROUND_UNNECESSARY,计算结果是精确的,不需要舍入模式。如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。

1.4  BigDecimal常见问题

1、创建 BigDecimal精度丢失

在BigDecimal 中提供了多种创建方式,可以通过new 直接创建,也可以通过 BigDecimal.valueOf 创建。这两种方式使用不当,也会导致精度问题。

public static void main(String[] args) throws Exception {
   BigDecimal b1= new BigDecimal(0.1);
   System.out.println(b1);
   BigDecimal b2= BigDecimal.valueOf(0.1);
   System.out.println(b2);
   BigDecimal b3= BigDecimal.valueOf(0.111111111111111111111111111234);
   System.out.println(b3);

}

 上面示例中两个方法都传入了double类型的参数0.1但是 b1 还是出现了精度的问题。造成这种问题的原因是 0.1 这个数字计算机是无法精确表示的,送给 BigDecimal 的时候就已经丢精度了。

结论:

第一,在使用BigDecimal构造函数时,尽量传递字符串而非浮点类型;

第二,如果无法满足第一条,则可采用BigDecimal.valueOf方法来构造初始化值。但是valueOf受double类型精度影响,当传入参数小数点后的位数超过double允许的16位精度还是可能会出现问题的

2、等值比较的坑

一般在比较两个值是否相等时,都是用equals 方法,但是,在BigDecimal 中使用equals可能会导致结果错误,BigDecimal 中提供了 compareTo 方法,在很多时候需要使用compareTo 比较两个值。

public static void main(String[] args){
    BigDecimal b1 = new BigDecimal("1.0");
    BigDecimal b2 = new BigDecimal("1.00");
    System.out.println(b1.equals(b2));
    System.out.println(b1.compareTo(b2));
}

 出现此种结果的原因是,equals不仅比较了值是否相等,还比较了精度是否相同。示例中,由于两个值的精度不同,所有结果也就不相同。而 compareTo 是只比较值的大小。返回的值为-1(小于),0(等于),1(大于)。

3、无限精度的坑

BigDecimal 并不代表无限精度,当在两个数除不尽的时候,就会出现无限精度的坑,此种情况,只需要在使用 divide方法时指定结果的精度即可:

BigDecimal b3 = new BigDecimal("1");
BigDecimal b4 = new BigDecimal("3");
System.out.println(b3.divide(b4,2, RoundingMode.HALF_UP));//结果为0.33

 在使用BigDecimal进行(所有)运算时,尽量指定精度和舍入模式。

三、Date日期类型

3.1 简介

1、是一个用来表示时间、日期的类,这个类在 java.util 包中,在使用 Date的时候,一定要注意 : 在 java.sql 包中,也有一个Date,千万不要导错包了。

2、 Date对象,用来表示一个时间点。是距离纪元时间点的总毫秒数。

3、纪元时间点:  1970年1月1日00:00:00(本初子午线处的时间点)

3.2 常用API

1)构造器

  • Date() :获取当前系统时间

  • Date(long time):设置一个距离固定点的指定毫秒数的时间点。

2)方法

  • long getTime()

  • void setTime(long time)

  • String toString() 格式: Thu May 24 19:32:14 CST 2018

Date now = new Date();
System.out.println(now);
Date d = new Date(24*60*60*1000*2);//使用有参构造器,来获取距离纪元的2天后的时间
System.out.println(d);

四、SimpleDateFormat类型

4.1 简介

java.text.SimpleDateFormat是一个用来格式化和解析日期的具体类,它允许进行格式化(日期 ->文本)、解析(文本 -> 日期)和规范化

  • 将一个Date对象转成一个指定格式的字符串

  • 将一个自定格式的字符串转成一个Date对象

4.2 常用构造器和方法

1)构造器

- SimpleDateFormat()

- SimpleDateFormat(String pattern):指定一个日期格式符号来构造对象

2)方法

- final String format(Date date) Date

- Date parse(String source) throws ParseException String

3)日期模式匹配字符

字符含义案例
yyyyy年—2018年;yy-18年
MMM月—05月;M月—5月
ddd日—06日;d日—6日
E星期E-星期日(Sun)
a上下午(AM、PM)a—下午(PM)
H24小时制a h时--------下午 10时HH:mm:ss------12:21:34hh(a):mm:ss------12(PM):21:34
h12小时制
m分钟
s
public class Date01 {public static void main(String[] args) throws ParseException {Date now = new Date();System.out.println(now);Date d = new Date(24*60*60*1000*2);//使用有参构造器,来获取距离纪元的2天后的时间System.out.println(d);//进行格式化SimpleDateFormat a =new SimpleDateFormat("yyyy.MM.dd HH.mm.ss");String str=a.format(now);System.out.println(str);String s1="2002年11月09日";//字符串转日期时,SimpleDateFormat里的格式按照字符串来写SimpleDateFormat date=new SimpleDateFormat("yyyy年MM月dd日");Date date1=date.parse(s1);System.out.println(date1);}

 

五、Calendar类型

5.1 简介

1、日历类型,位于java.util包下,封装了日历信息,包括年月日时分秒这些时间分量。

2、Calendar是抽象类,有很多子类型,比如格力高日历类型。该格力高日历类型正是大多数国家通用的日历类型,即阳历。

3、 程序员不需要直接调用子类型的构造器来获取日历对象,Calendar类型里封装了一个工具方法getInstance(),来获取该地区的子类型对象。

5.2 常用方法

1)getInstance方法

Calendar提供了一个类方法getInstance,以获取此类型的一个通用的对象
此方法返回一个Calendar对象,其日历字段已经由当前日期和时间初始化

2)getActualMaximum方法

作用:指定一个时间常量,返回指定日历分量可能拥有的最大值

Date getTime();

get(int Field)

5.3 时间常量

Calendar.YEAR:   年

Calendar.MONTH:  月    注意 该值的范围是0~11,分别表示1月~12月。 因此表示月份时,要+1操作。

Calendar.DAY_OF_MONTH   日

Calendar.DATE           日

Calendar.HOUR_OF_DAY   24小时制的时

Calendar.HOUR         12小时制的时

Calendar.MINUTE      分钟

Calendar.SECOND      秒钟

Calendar.DAY_OF_WEEK:   星期几     范围1~7,  1表示周日, 7表示周六,  显示时要-1操作

Calendar.DAY_OF_YEAR:   一年中的第几天。

public class Calendar01 {public static void main(String[] args) {//想要获取一个日历对象Calendar cal = Calendar.getInstance();System.out.println(cal);Date time = cal.getTime();System.out.println(time);System.out.println("------------设置时间分量------------------");// 修改成北京奥运时间: 2008-8-8日 20:08:00cal.set(Calendar.YEAR,2008);System.out.println(cal.getTime());cal.set(Calendar.MONTH,8-1);cal.set(Calendar.DAY_OF_MONTH,8);cal.set(Calendar.HOUR_OF_DAY,20);cal.set(Calendar.MINUTE,8);System.out.println(cal.getTime());}
}

相关文章:

JAVA中常用类型

一、包装类 1.1 包装类简介 java是面向对象的语言&#xff0c;但是八大基本数据类型不符合面向对象的特征。因此为了弥补这种缺点&#xff0c;为这八中基本数据类型专门设计了八中符合面向面向对象的特征的类型&#xff0c;这八种具有面向对象特征的类型&#xff0c;就叫做包…...

【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)(基础列表采用读取WORD表格单元格数据,非采用切片组合)

背景需求&#xff1a; 做了中班的四类活动安排表&#xff0c;我顺便给大班做一套 【办公类-90-01】】20250213中班周计划四类活动的写法&#xff08;分散运动、户外游戏、个别化&#xff08;美工室图书吧探索室&#xff09;&#xff09;-CSDN博客文章浏览阅读874次&#xff0…...

求矩阵对角线元素的最大值

求主对角线元素的最大值时&#xff0c;让指针指向A[N-1][N-1]&#xff0c;指针以(N1)为单位递增&#xff0c;就可以指向对角线每个元素&#xff1b; 求次对角线元素的最大值时&#xff0c;让指针指向A[0][N-1]&#xff0c;指针以(N-1)为单位递增&#xff0c;就可以指向副对角线…...

NoSQL之redis数据库

案例知识 关系与分关系型数据库 关系型数据库&#xff1a;Oracle&#xff0c;MySQL&#xff0c;SQL Server 非关系型数据库&#xff1a;Redis&#xff0c;MongDB Redis文件路径 配置文件&#xff1a;/etc/redis/6379.conf 日志文件&#xff1a;/var/log/redis_6379.log 数据文…...

【R语言】非参数检验

一、Mann-Whitney检验 在R语言中&#xff0c;Mann-Whitney U检验&#xff08;也称为Wilcoxon秩和检验&#xff09;用于比较两个独立样本的中位数是否存在显著差异。它是一种非参数检验&#xff0c;适用于数据不满足正态分布假设的情况。 1、独立样本 # 创建两个独立样本数据…...

【力扣Hot 100】栈

1. 有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应…...

HTTP 与 HTTPS:协议详解与对比

文章目录 概要 一. HTTP 协议 1.1 概述 1.2 工作原理 1.3 请求方法 1.4 状态码 二. HTTPS 协议 2.1 概述 2.2 工作原理 2.3 SSL/TLS 协议 2.4 证书 三. HTTP 与 HTTPS 的区别 四. 应用场景 4.1 HTTP 的应用场景 4.2 HTTPS 的应用场景 概要 HTTP&#xff08;Hy…...

C++编程语言:抽象机制:模板和层级结构(Bjarne Stroustrup)

目录 27.1 引言(Introduction) 27.2 参数化和层级结构(Parameterization and Hierarchy) 27.2.1 生成类型(Generated Types) 27.2.2 模板转换(Template Conversions) 27.3 类模板层级结构(Hierarchies of Class Templates) 27.3.1 模板对比接口(Templates as Interf…...

建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11

这次我们继续解读代码&#xff0c;我们主要来看下面两个部分&#xff1b; 至于人脸识别成功的要点我们在最后总结~ 具体代码学习&#xff1a; #定义人脸名称 def name():#预学习照片存放位置path M:/python/workspace/PythonProject/face/imagePaths[os.path.join(path,f) f…...

在使用export default 导出时,使用的components属性的作用?

文章目录 析与思考回答 析与思考 在 Vue.js 中&#xff0c;使用 export default 导出组件时&#xff0c;通常会通过 components 选项将子组件也导出出来&#xff08;其实是将子组件进行局部注册&#xff09; 。这涉及到 Vue.js 组件的注册机制。为了更清晰地理解这个问题&…...

以太网交换基础(涵盖二层转发原理和MAC表的学习)

在当今的网络世界中&#xff0c;以太网交换技术是局域网&#xff08;LAN&#xff09;的核心组成部分。无论是企业网络、学校网络还是家庭网络&#xff0c;以太网交换机都扮演着至关重要的角色。本文将详细介绍以太网交换的基础知识&#xff0c;包括以太网协议、帧格式、MAC地址…...

Vue 实现通过URL浏览器本地下载 PDF 和 图片

1、代码实现如下&#xff1a; 根据自己场景判断 PDF 和 图片&#xff0c;下载功能可按下面代码逻辑执行 const downloadFile async (item: any) > {try {let blobUrl: any;// PDF本地下载if (item.format pdf) {const response await fetch(item.url); // URL传递进入i…...

【2025最新计算机毕业设计】基于SpringBoot+Vue非遗传承与保护研究系统【提供源码+答辩PPT+文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...

组合总和力扣--39

目录 题目 思路 剪枝优化 代码 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的…...

echarts tooltip高亮某个值,某一项选中高亮状态

需求&#xff1a; 当有多组数据的时候&#xff0c;常常需要对比同一x轴的不同线上的点的数据&#xff0c;并且当数据组过多的时候&#xff0c;也就是线过多的时候&#xff0c;需要明确知道我们当前选中的线是哪条。 解决方案&#xff1a; 通过设置显示x轴的tooltip可以显示同…...

Vue 3:基于按钮切换动态图片展示(附Demo)

目录 前言1. Demo2. 升级Demo3. 终极Demo 前言 原先写过类似的知识点&#xff1a; 详细分析el-breadcrumb 面包屑的基本知识&#xff08;附Demo&#xff09;详细分析el-card中的基本知识&#xff08;附Demo&#xff09; 本篇博客将介绍如何通过点击按钮切换不同的图片&#…...

【Java】泛型与集合篇 —— 泛型

目录 泛型泛型的核心作用泛型类型(类)定义与使用类型参数命名约定泛型方法定义与调用与泛型类的区别通配符上界通配符下界通配符有界类型参数类型擦除类型擦除过程影响好处泛型 泛型的核心作用 泛型是 Java 实现代码复用和类型安全的重要机制。它允许在类、接口和方法中定义…...

【JAVA:list中再定义一个list对象,循环赋值不同的list数据,出现追加重复数据问题】

问题描述&#xff1a; list中再定义一个list对象&#xff0c;循环赋值不同的list数据&#xff0c;结果全部都累加到每条数据中了&#xff0c;每条数据中都出现重复数据。 问题解决&#xff1a; 1.创建树结构方法信息 2.创建一个新的 List 对象&#xff0c;避免引用问题 3.使…...

为什么外贸办公需要跨境专线网络?

你好&#xff0c;今天我们来聊聊SD-WAN技术在出海企业办公中的应用以及其带来的诸多优势。当今出海企业在与海外分支机构或合作伙伴开展高效的网络通讯和数据传输时&#xff0c;面临着许多挑战。此时&#xff0c;SD-WAN作为一种新兴的网络优化技术&#xff0c;正在改变这些企业…...

帆软报表FineReport入门:简单报表制作[扩展|左父格|上父格]

FineReport帮助文档 - 全面的报表使用教程和学习资料 数据库连接 点击号>>JDBC 选择要连接的数据库>>填写信息>>点击测试连接 数据库SQLite是帆软的内置数据库, 里面有练习数据 选择此数据库后,点击测试连接即可 数据库查询 方法一: 在左下角的模板数据集…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...