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

Java数组:没错,不装了我就是书架。

在这里插入图片描述

  • 👑专栏内容:Java
  • ⛪个人主页:子夜的星的主页
  • 💕座右铭:前路未远,步履不停

目录

  • 一、数组的概念
    • 1、什么是数组?
    • 2、数组的创建
    • 3、数组的初始化
      • Ⅰ、动态初始化
      • Ⅱ、静态初始化
  • 二、数组的使用
    • 1、数组中元素的访问
    • 2、数组的遍历
      • Ⅰ、`for`循环遍历
      • Ⅱ、`for-each`遍历
    • 3、数组的拷贝
  • 三、数组是引用类型
    • 1、`JVM`的内存分布
    • 2、引用类型
    • 3、引用变量
  • 四、数组的应用
    • 1、存储数据
    • 2、作为函数的参数
      • Ⅰ、参数传数组类型
      • Ⅱ、作函数返回值
  • 五、二维数组

嘿!你家有书架吗?想象一下你的书架上摆放了许多书籍📚,现在你想要整理一组相关的书籍,比如一套百科全书或一组小说。你会为这组书籍在书架上留出一个特定的区域,便于集中管理。在Java中,数组就像书架上的一排书籍一样,数组中的每个元素都有一个唯一的位置,我们可以通过索引或位置来访问它们。下面让我们一起学习数组吧。
在这里插入图片描述


一、数组的概念

1、什么是数组?

数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。

比如:下方的书架,每个区域都有自己的编号。就像下图中连在一起的4个书架

  • 数组中存放的元素其类型相同(每个书架上的书籍类型相同)

  • 数组的空间是连在一起的(每个书架都是挨在一起的)

  • 每个空间有自己的编号,其实位置的编号为0,即数组的下标(每个书架下面都有编号,编号是连续的)

在这里插入图片描述

2、数组的创建

T[] 数组名 = new T[N];

T:表示数组中存放元素的类型
T[]:表示数组的类型
N:表示数组的长度

String[] chineseNovel = new String[4];

例如这段代码,创建了一个数组类型为字符串类型,数组名叫做中国小说,数组(书架)里面有四个格子。

值得注意的是,一旦创建了数组(书架),就不能再改变它的大小!

在 Java中数组是对象,不是基本数据类型(原生类),大小不可变且连续存储,因为是对象所以存储在堆空间中。

数组长度在创建时就确定了,要改变数组长度只能重新创建新的数组,将原有数组复制到新的数组之中。这也是ArrayList扩容时候的效率低于LinkedList的原因。

int[] array1 = new int[10];			// 创建一个可以容纳 10个int类型元素的数组
double[] array2 = new double[5];	// 创建一个可以容纳 5个double类型元素的数组
String[] array3 = new String[3];	// 创建一个可以容纳 3个字符串元素的数组

3、数组的初始化

数组的初始化主要分为动态初始化以及静态初始化

Ⅰ、动态初始化

在这里插入图片描述

数组的动态初始化是指在创建数组时只指定数组的长度而不提供具体的元素值。这意味着数组的元素在创建时会被赋予默认值,对于数值类型,这个默认值通常为0,对于引用类型(如对象数组),默认值为null

数据类型默认值
byte0
short0
int0
long0L
float0.0f
double0.0d
char‘\u0000’
booleanfalse
引用类型null
int[] array = new int[10];

此时,没有给数组赋值,所以开辟的数组空间中的初始值全部为0
image-20230630113314320

Ⅱ、静态初始化

数组的静态初始化是在创建数组时就为数组元素指定具体的初始值。这是通过在声明数组的同时提供数组元素的值的方式来实现的。
在这里插入图片描述
换句话说,静态初始化,就你是在买书架的时候,书架上已经放上了对应的书了。

T[] 数组名称 = {data1, data2, data3, ..., datan};
int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
String[] chineseNovel = new String[]{"三国演义","水浒传","西游记","红楼梦"};

【注意事项】

  • 静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度

  • 静态初始化时, {}中数据类型必须与[]前数据类型一致

  • 静态初始化可以简写,省去后面的new T[]

二、数组的使用

1、数组中元素的访问

数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素。

还记得前面的的书架吗?比如我现在要找水浒传,我就可以说:给我中国小说书架上的01号书。

在这里插入图片描述

    public static void main(String[] args) {String[] chineseNovel = new String[]{"三国演义","水浒传","西游记","红楼梦"};System.out.println(chineseNovel[1]);}

在这里插入图片描述
换成其他的书架也是一样。

    public static void main(String[] args) {int[]array = new int[]{10, 20, 30, 40, 50};System.out.println(array[0]);System.out.println(array[1]);System.out.println(array[2]);System.out.println(array[3]);System.out.println(array[4]);// 也可以通过[]对数组中的元素进行修改array[0] = 100;System.out.println(array[0]);}

在这里插入图片描述
注意事项

  • 数组是一段连续的内存空间,因此支持随机访问,即通过下标访问快速访问数组中任意位置的元素

  • 下标从0开始,介于[0, N)之间不包含N,N为元素个数,不能越界,否则会报出下标越界异常

2、数组的遍历

在这里插入图片描述
“遍历” 是指将数组中的所有元素都访问一遍,访问是指对数组中的元素进行某种操作(比如:打印)

    public static void main(String[] args) {int[]array = new int[]{10, 20, 30, 40, 50};System.out.println(array[0]);System.out.println(array[1]);System.out.println(array[2]);System.out.println(array[3]);System.out.println(array[4]);}

Ⅰ、for循环遍历

前面的代码确实可以起到对数组中元素遍历的目的,但问题是:

  1. 如果数组中增加了一个元素,就需要增加一条打印语句。
  2. 如果输入中有100个元素,就需要写100个打印语句。
  3. 如果现在要把打印修改为给数组中每个元素加1,修改起来非常麻烦。

通过观察代码可以发现,对数组中每个元素的操作都是相同的,则可以使用循环来进行打印。

    public static void main(String[] args) {int[]array = new int[]{10, 20, 30, 40, 50};for(int i = 0; i < 5; i++){System.out.println(array[i]);}}

改成循环之后,上述三个缺陷可以全部2和3问题可以全部解决,但是无法解决问题1。那能否获取到数组的长度呢?

【注意】 在数组中可以通过数组对象.length 来获取数组的长度

    public static void main(String[] args) {int[]array = new int[]{10, 20, 30, 40, 50};for(int i = 0; i < array.length; i++){System.out.println(array[i]);}}

Ⅱ、for-each遍历

    public static void main(String[] args) {int[] array = new int[]{10, 20, 30, 40, 50};for (int x : array) {System.out.println(x);}}

图片描述

for-each循环(也被称为增强型for循环)是一种简化迭代集合(如数组、ListSet等)

for-each循环提供了一种更简洁、易读的方式来遍历集合元素。

for (Type Name : collection) {// 代码块
}

Type:表示集合中元素的类型。
Name:是一个临时变量,用于在每次迭代中存储集合中的当前元素。
collection:要遍历的集合。

如果需要处理一个集合中的所有元素,可以用for each循环语句对传统循环语句进行改进。

3、数组的拷贝

Java 中Arrays.copyOf 可以用于复制原数组,返回一个新的数组,并且这个新数组可以选择一个新的长度。

int new_array = Arrays.copyOf(array,new_length);
  • array:原数组。
  • new_length:新数组的长度。
  • 如果数组元素是数值型,那么多余的元素将被赋值为0;如果数组元素是布尔型,那么多余元素将被赋值为false
    public static void main(String[] args) {int[] array1 = new int[5];for (int i = 0; i < array1.length; i++) {array1[i] = i;}int[] array2 = Arrays.copyOf(array1,array1.length*2);for (int x:array2) {System.out.print(x+" ");}}

三、数组是引用类型

1、JVM的内存分布

内存是一段连续的存储空间,主要用来存储程序运行时数据的。

  • 程序运行时代码需要加载到内存

  • 程序运行产生的中间数据要存放在内存

  • 程序中的常量也要保存

  • 有些数据可能需要长时间存储,而有些数据当方法运行结束后就要被销毁

如果对内存中存储的数据不加区分的随意存储,那对内存管理起来将会非常麻烦。因此JVM也对所使用的内存按照功能的不同进行了划分:
image-20230630115630312
程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址

虚拟机栈(JVM Stack): 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧,栈帧中包含有:局部变量表操作数栈动态链接返回地址以及其他的一些信息,保存的都是与方法执行时相关的一些信息。比如:局部变量。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了

本地方法栈(Native Method Stack): 本地方法栈与虚拟机栈的作用类似. 只不过保存的内容是Native方法的局部变量. 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的。

堆(Heap): JVM所管理的最大内存区域。使用new创建的对象都是在堆上保存堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销毁。

方法区(Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。方法编译出的的字节码就是保存在这个区域。

2、引用类型

基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值。引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址。

public static void func() {int a = 10;int b = 20;int[] arr = new int[]{1,2,3};
}

在上述代码中,a、b、arr,都是函数内部的变量,因此其空间都在main方法对应的栈帧中分配。

a、b是内置类型的变量,因此其空间中保存的就是给该变量初始化的值。

array是数组类型的引用变量,其内部保存的内容可以简单理解成是数组在堆空间中的首地址。

图片描述

从上图可以看到,引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该地址,引用变量便可以去操作对象。这个有点类似C语言中的指针,但是Java中引用要比指针的操作更简单。

3、引用变量

public static void func() {int[] array1 = new int[3];array1[0] = 10;array1[1] = 20;array1[2] = 30;int[] array2 = new int[]{1,2,3,4,5};array2[0] = 100;array2[1] = 200;array1 = array2;array1[2] = 300;array1[3] = 400;array2[4] = 500;for (int i = 0; i < array2.length; i++) {System.out.println(array2[i]);}
}

image-20230630161029934

image-20230630161036099引用变量其实就是一个变量,不过他存储的是一个对象的内存地址。

图片描述

四、数组的应用

1、存储数据

public static void main(String[] args) {int[] array = {1, 2, 3};for(int i = 0; i < array.length; ++i){System.out.println(array[i] + " ");}
}

int[] array = {1, 2, 3}; 代表着array里面存着1,2,3 三条数据。

2、作为函数的参数

Ⅰ、参数传数组类型

 public static void print(int[] array){array[0] = 8;for (int i = 0; i < array.length; i++) {System.out.print(array[i]+" ");}}public static void main(String[] args){int[] array = {1,2,3,4,5};print(array);}

发现在print方法内部修改数组的内容,方法外部的数组内容也发生改变。因为数组是引用类型,按照引用类型来进行传递,是可以修改其中存放的内容的。

总结:所谓的 “引用” 本质上只是存了一个地址。 Java 将数组设定成引用类型,这样的话后续进行数组参数传参,其实只是将数组的地址传入到函数形参中。这样可以避免对整个数组的拷贝(数组可能比较长,那么拷贝开销就会很大)

Ⅱ、作函数返回值

    public static int[] func(){int a = 111;int b = 222;return new int[]{a,b};}public static void main(String[] args){int[] array = func();for (int i = 0; i < array.length; i++) {System.out.print(array[i]+" ");}}

例如:写一个方法myToString,传入一个数组的时候以字符串的方式进行打印

    public static String myToString(int[] array) {if(array==null)return "null";String s = "[";for (int i = 0; i < array.length; i++) {s+=array[i];if(i!= array.length-1)s+=",";}s+="]";return s;}public static void main(String[] args) {int[] array = {1, 2, 3, 4, 5, 6};int[] array2 = null;String ret = myToString(array);String ret2 = myToString(array2);System.out.println(ret);System.out.println(ret2);}

在这里插入图片描述

五、二维数组

二维数组本质上就是一维数组,只不过每个元素又是一个一维数组。这使得我们可以使用行和列的方式来组织和访问数据。

数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };
    public static void main(String[] args) {int[][] arr = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};for (int row = 0; row < arr.length; row++) {for (int col = 0; col < arr[row].length; col++) {System.out.printf("%d\t", arr[row][col]);}System.out.println("");}}

在这里插入图片描述
二维数组的用法和一维数组并没有明显差别。同理, 还存在 “三维数组”, “四维数组” 等更复杂的数组, 只不过出现频率都很低。


今天就先聊到这里啦,希望看完这篇文章,你能学会Java数组。我们下次再见!

在这里插入图片描述

相关文章:

Java数组:没错,不装了我就是书架。

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、数组的概念1、什么是数组&#xff1f;2、数组的创建3、数组的初始化Ⅰ、动态初始化Ⅱ、静态初始化 二、数组的使用1、数组中…...

轻量级接口自动化测试框架

大致思路: jmeter完成接口脚本,Ant完成脚本执行并收集结果生成报告,最后利用jenkins完成脚本的自动集成运行. 环境安装: 1.jdk1.7 配置环境变量(参考前面的分页) 2.jmeter解压到本地,ant解压到本地 3.Ant解压到本地,并配置环境变量 ANT_HOME:D:\jmeter\apache-ant-1.9.6 P…...

.some方法、vh、多列布局、DNS域名解析过程、空页面文字内容渲染

nodeEndTime.some((time) > !!time&#xff09; 这个方法主要用来判断nodeEndTime这个数组中是否有至少一个非假值的元素。它会遍历 nodeEndTime 数组中的每个元素&#xff0c;如果至少有一个元素是真值&#xff08;不是 null、undefined、0、false 或空字符串等假值&#x…...

Eclipse iceoryx™ - 真正的零拷贝进程间通信

1 序言 通过一个快速的背景教程&#xff0c;介绍项目范围和安装所需的所有内容以及第一个运行示例。 首先&#xff1a;什么是冰羚&#xff1f; iceoryx是一个用于各种操作系统的进程间通信&#xff08;IPC&#xff09;中间件&#xff08;目前我们支持Linux、macOS、QNX、FreeBS…...

【C++】面向对象编程(二)面向对象的编程思维:virtual虚拟调用、继承、protected成员、派生类与基类

默认情形下&#xff0c;成员函数的解析都是编译时静态进行。如果要让成员函数的解析在程序运行时动态进行&#xff0c;需要在成员函数的声明前加上关键字virtual&#xff1a; //LibMat声明表示&#xff0c;其析构函数和print()函数皆为虚函数 class LibMat{ public:LibMat(){c…...

【古谷彻】算法模板(更新ing···)

目录 一、数学 1、逆元 (一)费马小定理/欧拉定理(快速幂) 2、组合数 (1)求组合数C(n,m) 方法一:阶乘+逆元+快速幂求组合数 方法二:记忆化搜索 方法三:递推公式 (2)组合数求概率 3、高精度sqrt (1)二分法 (2)递加递减 4、快速幂 5、欧拉函数 方法一:…...

Day-06 基于 Docker 安装 Nginx 镜像

1.去官方公有仓库查询nginx镜像 docker search nginx 2.拉取该镜像 docker pull nginx 3. 启动镜像&#xff0c;使用nginx服务&#xff0c;代理本机8080端口(测试是不是好使) docker run -d -p 8080:80 --name nginx-8080 nginx docker ps curl 127.0.0.1:8080...

k8s集群-7 service

工作负载的应用是如何暴露出去的 解决访问问题 Service可以看作是一组提供相同服务的Pod对外的访问接口。借助Service&#xff0c;应用可以方便地实现服务发现和负载均衡。 service默认只支持4层负载均衡能力&#xff0c;没有7层功能。(可以通过Ingress实现) service的类型: C…...

JS进阶-防抖和节流

防抖&#xff08;debounce&#xff09; 单位时间内&#xff0c;频繁触发事件&#xff0c;只执行最后一次。 例子&#xff1a;王者荣耀回城&#xff0c;只要被打断就需要重新来 使用场景&#xff1a; 1&#xff09;搜索框搜索输入。只需用户最后一次输入完&#xff0c;再发送…...

踩坑日记 uniapp 底部 tabber遮挡住购物车结算

tabbar 被购物车结算遮挡 在小程序上tabbar没有将固定栏遮挡&#xff0c;如果直接调高&#xff0c;浏览器H5页面是对了&#xff0c;但在小程序上面离底部的定位就太高了 原代码 // 底部结算样式.shop-foot {border-top: 2rpx solid #F7F7F7;background-color: #FFF;position: …...

【MySQL】表的约束(一)

文章目录 为什么要有约束一. 空属性二. 默认值三. 列描述四. zerofill结束语 为什么要有约束 数据库是用来存放数据的&#xff0c;所以其需要保证数据的完整性和可靠性 数据类型也算是一种约束&#xff0c;比如&#xff0c;整型的数据无法插入字符型。 通过约束&#xff0c;让…...

Excel宏管理库存清单

1. 开启宏: - 打开 Excel - 选择 “文件” > “选项” > “自定义功能区” > “开发工具” &#xff0c;将其添加到功能区。 - 返回Excel界面&#xff0c;点击 “开发工具” 选项卡。 2.准备你的库存清单&#xff1a; - 在一个新的工作表中创建你的库存清单。…...

C语言练习百题之排序算法

题目:C语言实现排序算法 冒泡排序 思路&#xff1a; 依次比较相邻的元素&#xff0c;如果顺序不对则交换&#xff0c;直到整个数组有序。 实现代码&#xff1a; #include <stdio.h>void bubbleSort(int arr[], int n) {for (int i 0; i < n - 1; i) {for (int j…...

通过ElementUi在Vue搭建的项目中实现CRUD

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这个专栏…...

【CSS如何进行圣杯布局】

圣杯布局是一种经典的三栏布局&#xff0c;其中中间的主栏宽度自适应&#xff0c;两侧的边栏宽度固定。实现圣杯布局可以使用CSS中的浮动、定位、负边距等属性。 以下是一种实现圣杯布局的方法&#xff1a; HTML结构&#xff1a; <div class"container"><…...

flex 实现的圣杯布局

关键点 通过 margin-left 与 left 属性将左右两列放置到准确的位置; 父元素需要设置 padding; margin-left 取值为百分比时,是以其父元素的宽度为基准的;和双飞翼不同的地方 圣杯布局的的左中右三列容器没有多余子容器存在,通过控制父元素的 padding 空出左右两列的宽度。…...

数字人直播软件排名推荐,铭顺科技数字人品牌抢占“日不落”流量新技能

在今年的618中&#xff0c;相信大家能明显感受到&#xff0c;现如今已经有越来越多的品牌商都在使用AI营销工具&#xff0c;如AI营销工具、AI电话、AI虚拟主播。据京东战报显示&#xff0c;在今年的618中&#xff0c;使用AI数字人直播比去年双11增幅近5倍。 7*24小时不间断直播…...

【AI视野·今日Robot 机器人论文速览 第四十五期】Mon, 2 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 2 Oct 2023 Totally 42 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;PONG, Probabilistic Object Normals for Grasping 用于抓取的概率目标归一化&#xff0c;根据目标表面法向量获取的不确定…...

【计算机网络】网络编程接口 Socket API 解读(9)

Socket 是网络协议栈暴露给编程人员的 API&#xff0c;相比复杂的计算机网络协议&#xff0c;API 对关键操作和配置数据进行了抽象&#xff0c;简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍&#xff0c;从而更好的理解 socket 编程。…...

用户端App自动化测试

一、capability 进阶用法 1、 deviceName 只是设备的名字&#xff0c;别名随便起不能锁定唯一一个设备 2、 uid 多设备选择的时候&#xff0c;要指定 uid默认读取设备列表的第一个设备设备列表获取 adb devices 3、 newCommandTimeout appium 程序应等待来自客户端的新命…...

[洛谷]P2697 宝石串(经典好题!)

思路&#xff1a; 对于一个类似的东西进行前缀和&#xff1a; G R G G R G G&#xff1a;1 1 2 3 3 4 R&#xff1a;0 1 1 1 2 2 差&#xff1a;1 0 1 2 1 2 所得关于差的数列&#xff0c;同样的数最左最右的位置差为一个答案&#xff0c;选取最大的答案即为解&#xff0…...

毫米波汽车雷达测试应用指南

汽车毫米波雷达测试背景 车载毫米波雷达通过天线向外发射毫米波&#xff0c;接收目标反射信号&#xff0c;经后方处理后快速准确地获取汽车车身周围的物理环境信息&#xff08;如汽车与其他物体之间的相对距离、相对速度、角度、运动方向等&#xff09;&#xff0c;然后根据所…...

抖音账号矩阵系统开发源码----技术研发

一、技术自研框架开发背景&#xff1a; 抖音账号矩阵系统是一种基于数据分析和管理的全新平台&#xff0c;能够帮助用户更好地管理、扩展和营销抖音账号。 抖音账号矩阵系统开发源码 部分源码分享&#xff1a; ic function indexAction() { //面包屑 $breadc…...

C++ 33.学习C++的意义-狄泰软件学院

一些历史 UNIX操作系统诞生之初是直接用汇编语言编写的随着UNIX系统的发展&#xff0c;汇编语言的开发效率成为瓶颈&#xff0c;所以需要一个新的语言替代汇编语言1971年通过对B语言改良&#xff0c;使其能直接产生机器代码&#xff0c;C语言诞生UNIX使用C语言重写&#xff0c…...

[C++基础]-多态

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 本期学习目标&am…...

【Kubernetes】当K8s出现问题时,我们可以从哪些方面排查出

前言 kubernetes&#xff0c;简称K8s&#xff0c;是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;Kubernetes的目标是让部署容器化的应用简单并且高效&#xff08;powerful&#xff09;,Kub…...

SentenceTransformer 之论文解读

摘要 原文标题&#xff1a;Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks 链接&#xff1a;https://arxiv.org/pdf/1908.10084.pdf 尽管Bert和RoBERTa在句子对回归任务上&#xff0c;例如语义文本相似度&#xff08;Semantic Text Similarity&#xff09;…...

AI发展历史

一、AI的发展历史 二、AI发展的第五阶段 &#xff08;一&#xff09;、第一阶段 1.艾伦图灵与模仿游戏 艾伦•图灵&#xff08;Alan Turing&#xff0c;1912~1954&#xff09;是英国数学家、逻辑学家&#xff0c;被称为计算机科学之父&#xff0c;人工智能之父。二战中协助军…...

想要精通算法和SQL的成长之路 - 简化路径

想要精通算法和SQL的成长之路 - 简化路径 前言一. 简化路径 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 简化路径 原题连接 思路如下&#xff1a; 我们根据 "/" 去拆分字符串&#xff0c;得到每个子目录。这里拿到的子目录可能是空字符串&#xff0c;需要…...

【哈士奇赠书活动 - 41期】- 〖产品设计软技能:创业公司篇〗

文章目录 ⭐️ 赠书 - 《产品设计软技能&#xff1a;创业公司篇》⭐️ 内容简介⭐️ 作者简介⭐️ 编辑推荐⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《产品设计软技能&#xff1a;创业公司篇》 ⭐️ 内容简介 在创业公司设计产品与在成熟公司设计产品存在明显差异。《产品设计软…...

MARS: An Instance-aware, Modular and Realistic Simulator for Autonomous Driving

MARS: An Instance-aware, Modular and Realistic Simulator for Autonomous Driving&#xff08;基于神经辐射场的自动驾驶仿真器&#xff09;https://github.com/OPEN-AIR-SUN/marshttps://arxiv.org/pdf/2307.15058.pdfhttps://mp.weixin.qq.com/s/6Ion_DZGJwzs8JOoWMMbPw …...

关联规则挖掘(上):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…...

centos7 + citus12 + postgresql 14 安装

1 安装及编译 yum install -y centos-release-scl-rh epel-release yum update -y yum groupinstall -y Development Tools yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum install -y postg…...

MySQL、Oracle、SQL Server / MS Access 中的 NULL函数用法

一、MySQL&#xff1a; isnull(exper) 判断exper是否为空&#xff0c;是则返回1&#xff0c;否则返回0 ifnull(exper1,exper2)判断exper1是否为空&#xff0c;是则用exper2代替 nullif(exper1,exper2)如果expr1 expr2 成立&#xff0c;那么返回值为NULL&#xff0c;否则返回值…...

App Store审核被拒原因与解决方案

为了避免不必要的上线延迟及成本增加&#xff0c;了解App Store审核被拒的常见原因以及对应的解决方案是开发人员以及营销人员的必修课。 CSDN相关的解决方案 App Store审核被拒的12个常见原因与快速过审解决方法...

​LeetCode解法汇总121. 买卖股票的最佳时机

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给定一个数…...

【Go】go-es统计接口被刷数和ip访问来源

go-es模块统计日志中接口被刷数和ip访问来源 以下是使用go的web框架gin作为后端&#xff0c;展示的统计页面 背景 上面的数据来自elk日志统计。因为elk通过kibana进行展示&#xff0c;但是kibana有一定学习成本且不太能满足定制化的需求&#xff0c;所以考虑用编程的方式…...

debian 安装 pg --chatGpt

pgt: 要在Debian上安装PostgreSQL (通常缩写为PG) 数据库&#xff0c;您可以使用apt包管理器来执行安装操作。以下是安装PostgreSQL的步骤&#xff1a; 1. 打开终端。 2. 使用sudo权限以管理员身份运行以下命令&#xff0c;以更新包信息并安装PostgreSQL&#xff1a; bash …...

商城小程序代客下单程序开发演示

一款专为传统电商、实体商家开发的商城系统小程序&#xff0c;做私域、做留存、做社交必备功能全都有。 1、丰富的营销玩法&#xff1a;拼团、秒杀、定金预售、分销、社区团购、积分商城、支付有礼等主流获客玩法都有。 2、强大的会员体系&#xff1a;普通会员、付费会员、会…...

SpringBoot 整合 jetcache缓存

目前 jetcache 支持的本地缓存方案有两种&#xff0c;远程缓存支持两种&#xff0c;分别如下&#xff1a; 本地缓存&#xff08;Local&#xff09; LinkedHashMapCaffeine 远程缓存&#xff08;Remote&#xff09; Redis Tair 依赖导入 <dependency><groupId>…...

HTML5+CSS3+移动web 前端开发入门笔记(二)HTML标签详解

HTML标签&#xff1a;排版标签 排版标签用于对网页内容进行布局和样式的调整。下面是对常见排版标签的详细介绍&#xff1a; <h1>: 定义一级标题&#xff0c;通常用于标题栏或页面主要内容的标题。<p>: 定义段落&#xff0c;用于将文字分段展示&#xff0c;段落之…...

Maven 配置阿里云镜像

1. 查找maven setting.xml配置文件 find / -name "setting.xml" 2. 添加阿里云镜像 修改maven根目录下的conf文件夹中的setting.xml文件中的mirrors下添加mirror标签 <settings> <localRepository>E:\Maven\repository</localRepository> <…...

矢量图绘制软件EazyDraw mac中文版软件介绍

EazyDraw mac是一款功能强大且易于使用的矢量绘图软件。 EazyDraw mac软件介绍 矢量绘图工具&#xff1a;EazyDraw 提供了一套全面的矢量绘图工具&#xff0c;包括直线、曲线、多边形、文本框、图形填充等。用户可以使用这些工具创建和编辑精确的矢量图形&#xff0c;无论是简…...

Cocos Creator3.8 项目实战(四)巧用九宫格图像拉伸

一、为什么要使用九宫格图像拉伸 相信做过前端的同学都知道&#xff0c;ui &#xff08;图片&#xff09;资源对包体大小和内存都有非常直接的影响。 通常ui 资源都是图片&#xff0c;也是最占资源量的资源类型&#xff0c;游戏中的ui 资源还是人机交互的最重要的部分&#xff…...

怎么使用jenkins设置web自动打包

在Jenkins中设置Web自动打包需要完成以下步骤&#xff1a; 1.环境基础 安装Jenkins&#xff1a;首先&#xff0c;你需要在服务器上安装Jenkins。 你可以从Jenkins官网下载Jenkins的安装包&#xff0c;并按照官方指导进行安装。 2.使用jenkins设置web自动打包步骤 创建Jenk…...

完美解决 flex 实现一行三个,显示多行,左对齐

效果图 代码 <body><section class"content"><div class"item">元素</div><div class"item">元素</div><div class"item">元素</div><div class"item">元素</di…...

初识Spring

目录 1.Spring 基础 2.传统程序开发 3.IoC程序开发&#xff08;解耦&#xff09; 4.DI 4.1 IoC 和 DI 有什么区别 1.Spring 基础 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;有着活跃⽽庞⼤的社区&…...

Mybatis 使用参数时$与#的区别

之前我们介绍了mybatis中参数的使用&#xff0c;本篇我们在此基础上介绍Mybatis中使用参数时$与#的区别。 如果您对mybatis中参数的使用不太了解&#xff0c;建议您先进行了解后再阅读本篇&#xff0c;可以参考&#xff1a; Mybatis参数(parameterType)https://blog.csdn.net…...

java基本数据类型和包装类型区别

...

解锁Spring Boot的强大配置功能:@ConfigurationProperties与@PropertySources详解

解锁Spring Boot的强大配置功能&#xff1a;ConfigurationProperties与PropertySources详解 前言什么是ConfigurationProperties和PropertySourcesConfigurationProperties的使用步骤 1: 创建 Java POJO 类步骤 2: 配置类步骤 3: 配置文件步骤 4: 注入配置属性 PropertySources…...