Java 集合、迭代器

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。

序号接口描述
1Collection 

Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

Collection 接口存储一组不唯一,无序的对象。

2List 

List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。

List 接口存储一组不唯一,有序(插入顺序)的对象。

3Set

Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。

Set 接口存储一组唯一,无序的对象。

4SortedSet
继承于Set保存有序的集合。
5Map

Map 接口存储一组键值对象,提供key(键)到value(值)的映射。

6Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。
7SortedMap
继承于 Map,使 Key 保持在升序排列。
8Enumeration
这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

常用集合:

Collection :
-List 接口:元素按进入先后有序保存,可重复,插入删除会引起其他元素位置改变
-----LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素
-----ArrayList 底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素
-----Vector 底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素
------------Stack 是Vector类的实现类
-Set 接口: 仅接收一次,无序不可重复,并做内部排序,插入和删除不会引起元素位置改变 
-----HashSet 使用hash表(数组)存储元素
------------LinkedHashSet 链表维护元素的插入次序
-----TreeSet 底层实现为二叉树,元素排好序

Map :
-----Hashtable 接口实现类, 同步, 线程安全
-----HashMap 接口实现类 ,无同步, 线程不安全
------------LinkedHashMap 双向链表和哈希表实现
------------WeakHashMap
-----TreeMap 红黑树对所有的key进行排序
-----IdentifyHashMap

一、Collection 

1.1 Java List

以下情况使用 ArrayList :

  • 频繁访问列表中的某一个元素。
  • 只需要在列表末尾进行添加和删除元素操作。

以下情况使用 LinkedList :

  • 你需要通过循环迭代来访问列表中的某些元素。
  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

1.1.1 ArrayList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

import java.util.*;public class RunoobTest {public static void main(String[] args) {ArrayList<String> sites = new ArrayList<String>();sites.add("Google");sites.add("Runoob"); //1、添加:元素到sites对象中sites.set(0,"Yahu"); //2、第一个参数为索引位置,第二个为要修改的值、sites.remove(1);     //3、删除第2个元素System.out.println(sites.size());         //4、输出对象长度for (int i = 0; i < sites.size(); i++) {  //5、for循环迭代输出System.out.println(sites.get(i));}for (String i : sites) {    //6、for-each循环迭代输出System.out.println(i);}ArrayList<Integer> li=new ArrayList<>();  //7、存放整数元素Collections.sort(sites);  //8、Collections类中sort() 方法可以对字符或数字列表进行排序排序System.out.println(sites);}
}

常规方法:

方法描述 (arraylist对象:arr
add()将元素插入到指定位置的 arraylist 中 
addAll()添加集合中的所有元素到 arraylist 中 
clear() 删除 arraylist 中的所有元素 
clone()

复制一份 arraylist 

ArrayList<String> arrs = (ArrayList<String>)arr.clone();

contains()判断元素是否在 arraylist 
get()通过索引值获取 arraylist 中的元素 
indexOf()返回 arraylist 中元素的索引值 
removeAll()删除存在于指定集合中的 arraylist里的所有元素 
remove()删除 arraylist 里的单个元素 
size()返回 arraylist 里元素数量 
isEmpty() 判断 arraylist 是否为空 
subList()

截取部分 arraylist 的元素 

sites.subList(1, 3);//截取第一个和第二个元素

set()替换 arraylist 中指定索引的元素 
sort()对 arraylist 元素进行排序 
toArray()将 arraylist 转换为数组 
toString() 将 arraylist 转换为字符串 
lastIndexOf()

返回指定元素在 arraylist 中最后一次出现的位置 

int position = arr.lastIndexOf("YL");

ensureCapacity() 设置指定容量大小的 arraylist 
lastIndexOf() 返回指定元素在 arraylist 中最后一次出现的位置 
retainAll() 

保留 arraylist 中在指定集合中也存在的那些元素 

arr.retainAll(arr2);

containsAll()

查看 arraylist 是否包含指定集合中的所有元素 

boolean result = arr.containsAll(arr2);

trimToSize()

将 arraylist 中的容量调整为数组中的元素个数 

arr.trimToSize();

removeRange()

删除 arraylist 中指定索引之间存在的元素 

arr.removeRange(1, 3);

replaceAll()

将给定的操作内容替换掉数组中每一个元素 

arr.replaceAll(e -> e.toUpperCase());

removeIf() 

删除所有满足特定条件的 arraylist 元素  

arr.removeIf(e -> e.contains("Tao"));

forEach()

遍历 arraylist 中每一个元素并执行特定操作 :将ArrayList对象的表达式作为 forEach() 方法的参数传入,lambda 表达式将动态数组中的每个元素乘以 10,然后输出结果

arr.forEach((e) -> {
    e = e * 10;
    System.out.print(e + " ");  
});
 

实例:

import java.util.*;
//遍历ArrayList
public class Test{public static void main(String[] args) {List<String> list=new ArrayList<String>();list.add("Hello");list.add("World");list.add("HA");//第一种遍历:使用 For-Each 遍历 Listfor (String str : list) {    //也可以改写for(int i=0;i<list.size();i++) 这种形式System.out.println(str);}//第二种遍历:把链表变为数组相关的内容进行遍历String[] strArray=new String[list.size()];list.toArray(strArray);for(int i=0;i<strArray.length;i++) //这里也可以改写为  for(String str:strArray) 这种形式{System.out.println(strArray[i]);}//第三种遍历:使用迭代器进行相关遍历Iterator<String> ite=list.iterator();while(ite.hasNext())//判断下一个元素之后有值{System.out.println(ite.next());}}
}
//[Hello,World,HA]

1.1.2 LinkedList

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。

// 引入 LinkedList 类
import java.util.LinkedList;public class RunoobTest {public static void main(String[] args) {LinkedList<String> sites = new LinkedList<String>();sites.add("Google");//1、添加元素sites.add("Runoob");//2、使用 addFirst() 在头部添加元素sites.addFirst("BaiDu");//3、尾部添加sites.addLast("Wiki");//4、使用 removeFirst() 移除头部元素sites.removeFirst();//5、使用 removeLast() 移除尾部元素sites.removeLast();//6、使用 getFirst() 获取头部元素System.out.println(sites.getFirst());//7、使用 getLast() 获取尾部元素System.out.println(sites.getLast());//9、迭代获取元素for (int size = sites.size(), i = 0; i < size; i++) {System.out.println(sites.get(i));}//10、for-each 迭代for (String i : sites) {System.out.println(i);}//11、foreach遍历方式 sites.forEach(ites->{System.out.println(ites);});System.out.println(sites);}
}
方法描述
public boolean add(E e)链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
public void add(int index, E element)向指定位置插入元素。
public boolean addAll(Collection c)将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。
public boolean addAll(int index, Collection c)将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。
public void addFirst(E e)元素添加到头部。
public void addLast(E e)元素添加到尾部。
public boolean offer(E e)向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
public boolean offerFirst(E e)头部插入元素,返回是否成功,成功为 true,失败为 false。
public boolean offerLast(E e)尾部插入元素,返回是否成功,成功为 true,失败为 false。
public void clear()清空链表。
public E removeFirst()删除并返回第一个元素。
public E removeLast()删除并返回最后一个元素。
public boolean remove(Object o)删除某一元素,返回是否成功,成功为 true,失败为 false。
public E remove(int index)删除指定位置的元素。
public E poll()删除并返回第一个元素。
public E remove()删除并返回第一个元素。
public boolean contains(Object o)判断是否含有某一元素。
public E get(int index)返回指定位置的元素。
public E getFirst()返回第一个元素。
public E getLast()返回最后一个元素。
public int indexOf(Object o)查找指定元素从前往后第一次出现的索引。
public int lastIndexOf(Object o)查找指定元素最后一次出现的索引。
public E peek()返回第一个元素。
public E element()返回第一个元素。
public E peekFirst()返回头部元素。
public E peekLast()返回尾部元素。
public E set(int index, E element)设置指定位置的元素。
public Object clone()克隆该列表。
public Iterator descendingIterator()返回倒序迭代器。
public int size()返回链表元素个数。
public ListIterator listIterator(int index)返回从指定位置开始到末尾的迭代器。
public Object[] toArray()返回一个由链表元素组成的数组。
public T[] toArray(T[] a)返回一个由链表元素转换类型而成的数组。

使用较少,类比ArrayList,不举例。

1.1.3 Vector

Vector是一种老的动态数组,是线程同步的,效率很低,一般不使用。

1.2 Java Set

1.2.1 HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 允许有 null 值,是无序的,即不会记录插入的顺序。HashSet 非线程安全, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的,在多线程访问时必须显式同步对 HashSet 的并发访问。

// 引入 HashSet 类      
import java.util.HashSet;public class RunoobTest {public static void main(String[] args) {HashSet<String> sites = new HashSet<String>();sites.add("Google");sites.add("Runoob");sites.add("Taobao");sites.add("Zhihu");sites.add("Runoob");  //1、重复的元素不会被添加System.out.println(sites.contains("Taobao"));//2、判断元素是否存在于集合当中sites.remove("Taobao"); //3、删除元素,删除成功返回 true,否则为 falsesites.clear();//4、清除全部               for (String i : sites) { //5、for-each 迭代System.out.println(i);}/*6、注意:Set无序,无法使用元素下标输出元素遍历集合for (int size = sites.size(), i = 0; i < size; i++)*///7、foreach遍历方式 sites.forEach(ites->{System.out.println(ites);});System.out.println(sites);}
}

1.2.2 LinkedHashSet 

底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。线程不安全,效率高。

1.2.3 TreeSet 

底层数据结构采用二叉树来实现,元素唯一且已经排好序

二、Map

2.1 Java Map

2.1.1 HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

HashMap 是无序的,即不会记录插入的顺序。HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,也可以是整型(Integer)的 key 和字符串(String)类型的 value。HashMap 中的元素是对象,一些常见的基本类型可以使用它的包装类。

// 引入 HashMap 类      
import java.util.HashMap;public class RunoobTest {public static void main(String[] args) {//1、创建 HashMap 对象 SitesHashMap<Integer, String> Sites = new HashMap<Integer, String>();Sites.put(1, "Google");Sites.put(2, "Runoob");Sites.put(3, "Taobao");Sites.put(4, "Zhihu");System.out.println(Sites);//2、输出元素{1=Google, 2=Runoob, 3=Taobao, 4=Zhihu}System.out.println(Sites.get(3));//输出Taobaofor (Integer i : Sites.keySet()) {System.out.println("key: " + i + " value: " + Sites.get(i));}//3、返回所有 value 值for(String value: Sites.values()) {//4、输出每一个valueSystem.out.print(value + ", ");//5、使用Entry对象遍历Map<String, Integer> map = new HashMap<>();map. put("yly", 177);map. put("yrc" ,176);map. put("zcz" ,175);Set<Map.Entry<String, Integer>> set = map.entrySet();//for迭代遍历for (Map.Entry<String, Integer> entry : set) {System.out.println(entry.getKey()+entry.getValue());}}}}
}
方法

描述

/*HashMap<String, Integer> prices = new HashMap<>();
        prices.put("Shoes", 200);
        prices.put("Bag", 300);
        prices.put("Pant", 150);
        System.out.println("HashMap: " + prices);*/

clear()删除 hashMap 中的所有键/值对
clone()复制一份 hashMap
isEmpty()判断 hashMap 是否为空
size()计算 hashMap 中键/值对的数量
put()将键/值对添加到 hashMap 中
putAll()将所有键/值对添加到 hashMap 中,已存在的将会被替换
putIfAbsent()如果 hashMap 中不存在指定的key键,则将指定的键/值对插入到 hashMap 中
remove()删除 hashMap 中指定键 key 的映射关系
containsKey()检查 hashMap 中是否存在指定的 key 对应的映射关系
containsValue()检查 hashMap 中是否存在指定的 value 对应的映射关系
replace()

替换 hashMap 中指定的 key 对应的 value

        // 替换key为2的映射
        String value = sites.replace(2, "Wiki");

replaceAll()将 hashMap 中的所有映射关系替换成给定的函数所执行的结果
get()获取指定 key 对应的 value
getOrDefault()

获取指定 key 对应的 value,如果找不到 key ,则返回设置的默认值

 // Not Found - 如果 HashMap 中没有该 key,则返回默认值
        String value = sites.getOrDefault(1, "Not Found");
        System.out.println("Value for key 1:  " + value);

forEach()

对 hashMap 中的每个映射执行指定的操作

 prices.forEach((key, value) -> {
            // 所有value 价格减少百分之 10
            value = value - value * 10/100;
            System.out.print(key + "=" + value + " ");
        });

entrySet()

返回 hashMap 中所有映射项的集合集合视图

System.out.println("sites HashMap: " + sites);
// 返回映射关系中 set view
System.out.println("Set View: " + sites.entrySet());

/*sites HashMap: {1=Google, 2=Runoob, 3=Taobao}
Set View: [1=Google, 2=Runoob, 3=Taobao]*/

keySet()返回 hashMap 中所有 key 组成的集合视图
values()返回 hashMap 中存在的所有 value 值
merge()

添加键值对到 hashMap 中,如果原来有那就是更新键值对

    int returnedValue = prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue);
    System.out.println("Price of Shirt: " + returnedValue);

compute()

对 hashMap 中指定 key 的值进行重新计算

int newPrice = prices.compute("Shoes", (key, value) -> value - value * 10/100);
        System.out.println("Discounted Price of Shoes: " + newPrice);

/*HashMap: {Pant=150, Bag=300, Shoes=200}
Discounted Price of Shoes: 180
Updated HashMap: {Pant=150, Bag=300, Shoes=180}
*/

computeIfAbsent()

对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中

  int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100);
        System.out.println("Price of Shoes after VAT: " + shoesPrice);

/*HashMap: {Pant=150, Bag=300, Shoes=200}
Price of Shoes after VAT: 220
Updated HashMap: {Pant=150, Bag=300, Shoes=220}*/

computeIfPresent()

对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中
        System.out.println("HashMap: " + prices);
        // 重新计算鞋加上10%的增值税后的价值
        int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100);
        System.out.println("Price of Shoes after VAT: " + shoesPrice);

/*HashMap: {Pant=150, Bag=300, Shoes=200}
Price of Shirt: 280
Updated HashMap: {Pant=150, Shirt=280, Bag=300, Shoes=200}*/

2.1.2 HashTable(略)

2.1.1 TreeMap(略)

三、迭代器 (Iterator)

Java迭代器是 Java 集合框架中的一种机制,是一种用于遍历集合(如列表、集合和映射等)的接口。它提供了一种统一的方式来访问集合中的元素,而不需要了解底层集合的具体实现细节。迭代器不是一个集合,它是一种用于访问集合的方法。以下图示主要方法。

//主要是作为循环和遍历
import java.util.ArrayList;
import java.util.Iterator;public class RunoobTest {public static void main(String[] args) {// 创建集合ArrayList<Integer> sites = new ArrayList<Integer>();sites.add("1");sites.add("2");sites.add("3");sites.add("4");// 获取迭代器Iterator<Integer> it = sites.iterator();// 输出集合中的第一个元素System.out.println(it.next());//1// 输出集合中的所有元素while(it.hasNext()) {System.out.print(it.next());}//1 2 3 4 for(Integer i:sites){System.out.print(i+" ");}//1 2 3 4while(it.hasNext()) {Integer i = it.next();if(i < 10) {  it.remove();  //删除小于 10 的元素}System.out.println(sites);//[]}
/*注意:Java 迭代器是一种单向遍历机制,即只能从前往后遍历集合中的元素,不能往回遍历。同时,在使用迭代器遍历集合时,不能直接修改集合中的元素,而是需要使用迭代器的 remove() 方法来删除当前元素*/
}
import java.util.ArrayList;
import java.util.Iterator;public class Person(String name) {private String name;public void setName(String name){this.name = name;}public String getName(){return name;}
}
public class test {public static void main(String[] args) {ArrayList<Person> array = new ArrayList<Person>();Person p1 = new Person("Y");Person p2 = new Person("L");Person p3 = new Person("Y");Person p4 = new Person("G");array.add(p1);array.add(p2);array.add(p3);array.add(p4);Iterator<Person> iterator = array.iterator();for (Person pp : array){System.out.print(pp.getName());//Y L Y G }array.forEach(obj -> System.out.print(obj.getName()));//Y L Y G for(Person p : array){p.setName("B");}while(iterator.hasNext()){System.out.print(iterator.next().getName()); //B B B B}}
}

 参考资料:菜鸟教程 - 学的不仅是技术,更是梦想!

参考文献1:详解java集合,Collection,list,set,map汇总 - 知乎 (zhihu.com)

参考文献2:java集合超详解_java集合使用-CSDN博客

参考文献4:Java迭代器(iterator详解以及和for循环的区别)_java里迭代器能在for循环中使用么-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2780102.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

P1028 [NOIP2001 普及组] 数的计算题解

题目 给出正整数n&#xff0c;要求按如下方式构造数列&#xff1a; 只有一个数字n的数列是一个合法的数列。在一个合法的数列的末尾加入一个正整数&#xff0c;但是这个正整数不能超过该数列最后一项的一半&#xff0c;可以得到一个新的合法数列。 请你求出&#xff0c;一共…

vtk三维场景基本要素 灯光、相机、颜色、纹理映射 简介

整理一下VTK 三维场景基本要素&#xff0c;后面会一一进行整理&#xff1b; 1. 灯光 vtkLight 剧场里有各式各样的灯光&#xff0c;三维渲染场景中也一样&#xff0c;可以有多个灯光存在。灯光和相机 是三维渲染场景必备的要素&#xff0c;vtkRenderer会自动创建默认的灯光和…

24个已知403绕过方法的利用脚本

介绍 一个简单的脚本&#xff0c;仅供自用&#xff0c;用于绕过 403 在curl的帮助下使用24个已知的403绕过方法 它还可用于比较各种条件下的响应&#xff0c;如下图所示 用法 ./bypass-403.sh https://example.com admin ./bypass-403.sh website-here path-here 安装 git …

opencv图像像素的读写操作

void QuickDemo::pixel_visit_demo(Mat & image) {int w image.cols;//宽度int h image.rows;//高度int dims image.channels();//通道数 图像为灰度dims等于一 图像为彩色时dims等于三 for (int row 0; row < h; row) {for (int col 0; col < w; col) {if…

[ai笔记1] 借着“ai春晚”开个场

1 文思ai笔记-新的开始 今天是2024年2月29日&#xff0c;也是传统农历的除夕夜。早起在ai圈看到一个比较新奇的消息&#xff0c;ai春晚今日举办&#xff0c;竟然有一点小小的激动。这些年确实好久没看过春晚了&#xff0c;自己对于春晚的映像还停留在“白云黑土”、“今天&…

AI修复历史人物 图像转真人 绝密档案

修复李白 开启control 不要点爆炸小按钮 权重建议&#xff1a;0.7-1.2 采样&#xff1a;DPM SDE Karras 如果人眼不好&#xff0c;开启高清修复&#xff0c;进行2次尝试 高难度 修复张居正 softhed 1 lineart_真实 1 适当调整lineart进入值。 如果效果不好&#xff…

ubuntu中尝试安装ros2

首先&#xff0c;ubuntu打开后有个机器人栏目&#xff0c;打开后&#xff0c;有好多可选的&#xff0c;看了半天 ,好像是博客&#xff0c;算了&#xff0c;没啥关系&#xff0c;再看看其他菜单 这些都不是下载链接。先不管&#xff0c;考虑了一下&#xff0c;问了ai&#xff…

一、西瓜书——绪论

第一章 绪论 1.独立同分布 通常 假设 样本空间 中 全 体样 本 服 从 一 个 未 知 “ 分 布 ” ( d i s t r i b u t i o n ) D , 我们获得的每个样本都是独立地从这个分布上采样获得的&#xff0c; 即 “ 独 立同 分布 ” ( i n d e p e n d e n t a n d i d e n t ic a …

【2024.02.11】定时执行专家 V6.9 龙年春节版 - 下载地址更新日志

目录 ◆ 最新版下载链接 ◆ 软件更新日志 – TimingExecutor Full Change Log ▼2024-02-11 V6.9 ▼2023-06-16 V6.8.2 ▼2023-02-27 V6.7 ▼ 2023-01-23 V6.6 ▼ 2023-01-20 V6.5 ▼ 2022-12-25 V6.4 ▼ 2022-11-15 V6.3 ▼ 2022-10-01 V6.2 ▼ 2022-07-…

寒假作业-day8

代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h>int jiecheng(int n){if(n<1)return 1; return n*jiecheng(n-1); }int sum(int n){if(n<0)return 0;return nsum(n-1); }int feb(int n){if(n<2)return 1;elsereturn fe…

Java图形化界面编程—— LayoutManager布局管理器笔记

2.4 LayoutManager布局管理器 之前&#xff0c;我们介绍了Component中有一个方法 setBounds() 可以设置当前容器的位置和大小&#xff0c;但是我们需要明确一件事&#xff0c;如果我们手动的为组件设置位置和大小的话&#xff0c;就会造成程序的不通用性&#xff0c;例如&…

跟踪分析一款新型Megahorse窃密木马

前言 最近几年黑客组织利用各种不同类型的恶意软件进行的网络犯罪活动越来越多&#xff0c;这些恶意软件包含勒索病毒、挖矿病毒、APT远控后门、银行木马、僵尸网络等&#xff0c;企业的数据一直是企业的核心资产&#xff0c;勒索攻击也由最初始的单纯的通过某个单一漏洞传播勒…

四.Linux实用操作 12-14.环境变量文件的上传和下载压缩和解压

目录 四.Linux实用操作 12.环境变量 环境变量 环境变量--PATH $ 符号 自行设置环境变量 自定义环境变量PATH 总结 四.Linux实用操作 13.文件的上传和下载 上传&#xff0c;下载 rz&#xff0c;sz命令 四.Linux实用操作 14.压缩和解压 压缩格式 tar命令 tar命令压缩…

uniapp微信小程序开发踩坑日记:Pinia持久化

如果你使用过Pinia&#xff0c;那你应该知道Pinia持久化插件&#xff1a;https://prazdevs.github.io/pinia-plugin-persistedstate/zh/ 但由于官方文档提供的说明并不是针对小程序开发&#xff0c;所以我们在使用这个插件实现uniapp小程序开发中Pinia持久化会出现问题 我在C…

Redis.conf 配置文件解读

1、单位 容量单位不区分大小写&#xff0c;G和GB没有区别 配置文件 unit单位 对大小写不敏感 2、组合配置 可以使用 include 组合多个配置问题 3、网络配置 bind 127.0.0.1 # 绑定的ip protected-mode yes # 保护模式 port 6379 # 端口设置4、通用 GENERAL daemoniz…

Arm发布新的人工智能Cortex-M处理器

Arm发布了一款新的Cortex-M处理器&#xff0c;旨在为资源受限的物联网&#xff08;IoT&#xff09;设备提供先进的人工智能功能。这款新的Cortex-M52声称是最小的、面积和成本效率最高的处理器&#xff0c;采用了Arm Helium技术&#xff0c;使开发者能够在单一工具链上使用简化…

吉他学习:C大调第一把位音阶,四四拍曲目练习 小星星,练习的目的

第十三课 C大调第一把位音阶https://m.lizhiweike.com/lecture2/29364198 第十四课 四四拍曲目练习 小星星https://m.lizhiweike.com/lecture2/29364131 C大调第一把位音阶非常重要,可以多练习&#x

华为云ModelBox实战:体感小游戏应用实操

目录 一、VsCode插件注册ModelBox设备二、Windows SDK安装1.安装Git for Windows2.下载ModelBox SDK3.相关插件安装 三、体感小游戏应用开发1.技能模板使用2.AI应用示例3.体感小游戏体验 参与华为云活动【HCSD】ModelBox实战营邀请活动&#xff0c;呼朋唤友学AIoT&#xff0c;完…

《统计学简易速速上手小册》第9章:统计学在现代科技中的应用(2024 最新版)

文章目录 9.1 统计学与大数据9.1.1 基础知识9.1.2 主要案例&#xff1a;社交媒体情感分析9.1.3 拓展案例 1&#xff1a;电商销售预测9.1.4 拓展案例 2&#xff1a;实时交通流量分析 9.2 统计学在机器学习和人工智能中的应用9.2.1 基础知识9.2.2 主要案例&#xff1a;预测客户流…

单片机学习笔记---AT24C02(I2C总线)

目录 有关储存器的介绍 存储器的简介 存储器简化模型 AT24C02介绍 AT24C02引脚及应用电路 I2C总线介绍 I2C电路规范 开漏输出模式和弱上拉模式 其中一个设备的内部结构 I2C通信是怎么实现的 I2C时序结构 起始条件和终止条件 发送一个字节 接收一个字节 发送应答…