当前位置: 首页 > 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是帆软的内置数据库, 里面有练习数据 选择此数据库后,点击测试连接即可 数据库查询 方法一: 在左下角的模板数据集…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...