(1-6-1)Java 集合

news2025/7/25 9:49:10

目录

0.知识概述:

1.集合

1.1 集合继承关系类图

1.2 集合遍历的三种方式

1.3 集合排序

 1.3.1 Collections实现

1.3.2 自定义排序类

2 List 集合概述

2.1 ArrayList 

(1)特点

(2)常用方法

2.2 LinkedList

3. Set集合

3.1 概述

(1)特点

(2)重要方法

(3)Set集合的唯一性(hashCode() -> equals())

3.2 HashSet

3.3 LinkedHashSet

3.4 TreeSet

4.Map

4.1 概述

4.1.1 特点 & 继承关系

4.1.2 遍历集合的三种方式

4.2 HashMap

4.3 LinkedHashMap

4.4 TreeMap


0.知识概述:



1.集合

1.1 集合继承关系类图

1.2 集合遍历的三种方式

/*  遍历集合的三种方式:
    01 -> for 循环遍历
    02 -> forEach  方法遍历
    03 -> Iterator  迭代器遍历
 */

代码实现:

System.out.println(dmList);     //[斗罗, 沧源图, 仙逆, 凡人, 斗破, 吞噬星空]

        /*  遍历集合的三种方式:
            01 -> for 循环遍历
            02 -> forEach  方法遍历
            03 -> Iterator  迭代器遍历
         */

        // 法1:
        for(String dm: dmList){
            System.out.print(dm+" ");
        }                                 //斗罗 沧源图 仙逆 凡人 斗破 吞噬星空
        System.out.println();

        // 法2:
        dmList.forEach(dm->{
            System.out.print(dm + " ");   //斗罗 沧源图 仙逆 凡人 斗破 吞噬星空
        });
        System.out.println();

        // 法3:
        Iterator<String> itr = dmList.iterator();
        while(itr.hasNext()){
            String dm = itr.next();   // 提取下一个元素, 同时指针向后移动
            System.out.print(dm);
        }                             // 斗罗沧源图仙逆凡人斗破吞噬星空
        System.out.println();

1.3 集合排序

 1.3.1 Collections实现
方式1: Collections.sort(list);
方式2: 创建一个内部类继承Comparator, 实现其compare

code:

public class ListSorter {
    // 方式1: Collections.sort(list);
    public static List<Integer> sort1(List<Integer> list){
        Collections.sort(list);
        System.out.println(list);         //[18, 25, 45, 49]
        return list;
    }


    // 方式2: 创建一个内部类继承Comparator, 实现其compare
    class CompareDemo implements Comparator<Integer> {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    }
    public  List<Integer> sort2(List<Integer> list){
        Collections.sort(list, new CompareDemo());
        System.out.println(list);              // [49, 45, 25, 18]
        return list;
    }



    public static void main(String[] args) {
        List<Integer> alist = new ArrayList<>();

        alist.add(25);
        alist.add(45);
        alist.add(49);
        alist.add(18);

        System.out.println(alist);            //[25, 45, 49, 18]
        System.out.println(alist.toString()); //[25, 45, 49, 18]

        System.out.println(ListSorter.sort1(alist));  //[18, 25, 45, 49]
        ListSorter ls = new ListSorter();
        System.out.println(ls.sort2(alist));  //[49, 45, 25, 18]
    }
}
1.3.2 自定义排序类
public class TestSort {
    class CarSortDemo implements Comparator<Car> {
        // 01 比较car 对象
//        @Override
//        public int compare(Car o1, Car o2) {
//            return o1.equals(o2) ? 0 : 1;
//        }

        // 02 比较car 对象的  sn属性值
//        @Override
//        public int compare(Car o1, Car o2) {
//            return o1.getSn().compareTo(o2.getSn());
//        }

        // 03 比较car 对象的  brand 属性值
        public int compare(Car o1, Car o2){
            return o2.getModel().compareTo(o1.getModel());
        }
    }

    public List<Car> sort(List<Car> list){
        Collections.sort(list, new CarSortDemo());
        return list;
    }

    public static void main(String[] args) {
        List<Car> carsList = new ArrayList<>();

        carsList.add(new Car("217893","baoma"));
        carsList.add(new Car("689326","su7"));
        carsList.add(new Car("859032","aodi"));
        carsList.add(new Car("785932","benchi"));
        carsList.add(new Car("238979","biyadi"));

        System.out.println(carsList);
//[Car{sn='217893', model='baoma'}, Car{sn='689326', model='su7'}, Car{sn='859032', model='aodi'}, Car{sn='785932', model='benchi'}, Car{sn='238979', model='biyadi'}]

        System.out.println(new TestSort().sort(carsList));
        // 01 比较car 对象
//[Car{sn='217893', model='baoma'}, Car{sn='689326', model='su7'}, Car{sn='859032', model='aodi'}, Car{sn='785932', model='benchi'}, Car{sn='238979', model='biyadi'}]
        // 02 比较car 对象的  sn属性值
//[Car{sn='217893', model='baoma'}, Car{sn='238979', model='biyadi'}, Car{sn='689326', model='su7'}, Car{sn='785932', model='benchi'}, Car{sn='859032', model='aodi'}]
        // 03 比较car 对象的  brand 属性值
//[Car{sn='689326', model='su7'}, Car{sn='238979', model='biyadi'}, Car{sn='785932', model='benchi'}, Car{sn='217893', model='baoma'}, Car{sn='859032', model='aodi'}]
    }
}


2 List 集合概述

有关List的相关继承关系:


2.1 ArrayList 

(1)特点

(2)常用方法
/**
 * ArrayList   ->
 * 01. ArrayList<String> nickList = new ArrayList<String>();
 * 02. nickList.add("phdvb");
 *     nickList.add(1,"pxq");
 *     nickList.get(2)
 * 03. nickList.set(2, "drl");
 * 04. nickList.remove("phdvc");
 *     remove(listSize-1);
 *     nickList.size();
 */
public class ArrayListDemo {
    public static void main(String[] args) {
        /**
         * ArrayList   ->
         * 01. ArrayList<String> nickList = new ArrayList<String>();
         * 02. nickList.add("phdvb");
         *     nickList.add(1,"pxq");
         *     nickList.get(2)
         * 03. nickList.set(2, "drl");
         * 04. nickList.remove("phdvc");
         *     remove(listSize-1);
         *     nickList.size();
         */
        //01 创建ArrayList对象
        ArrayList<String> nickList = new ArrayList<String>();

        //02 往ArrayList中添加数据
        nickList.add("phdvb");
        nickList.add("phdva");
        boolean isChange = nickList.add("phdvb");
        System.out.println("ArrayList是否发生变化?"+ isChange); //ArrayList是否发生变化?true
        System.out.println(nickList);   //[phdvb, phdva, phdvb]
        System.out.println(nickList.get(2));  //phdvb
        nickList.add(1,"pxq");
        System.out.println(nickList);   //[phdvb, pxq, phdva, phdvb]
        nickList.add("phdvb");
        nickList.add("phdvc");
        nickList.add("phdvc");
        nickList.add("phdvd");

        //03 更新ArrayList中的元素
        String beforeNick = nickList.set(2, "drl");
        System.out.println(beforeNick); //phdva
        System.out.println(nickList);   //[phdvb, pxq, drl, phdvb, phdvb, phdvb, phdvc, phdvd]

        //04 删除ArrayList中的元素
        boolean isRemove = nickList.remove("phdvc");
        System.out.println(isRemove);   //true
        System.out.println(nickList);   //仅删除了一个元素,[phdvb, pxq, drl, phdvb, phdvb, phdvc, phdvd]
        int listSize = nickList.size();
        System.out.println(listSize);   //7
        nickList.remove(listSize-1);
        System.out.println(nickList);   //[phdvb, pxq, drl, phdvb, phdvb, phdvc]
        nickList.set(nickList.size()-2, "vb");
        System.out.println(nickList);   //[phdvb, pxq, drl, phdvb, vb, phdvc]
    }
}

2.2 LinkedList

代码实现:

public class LinkedListDemo {

    public static void main(String[] args) {
        LinkedList<String> dmList = new LinkedList<String>();

        dmList.add("仙逆");
        dmList.add("凡人");
        dmList.add("斗破");

        System.out.println(dmList);     //[仙逆, 凡人, 斗破]

        dmList.add(0, "沧源图");

        System.out.println(dmList);     //[沧源图, 仙逆, 凡人, 斗破]


        // 实现的是 Deque接口 中的方法
        dmList.addFirst("斗罗");
        dmList.addLast("吞噬星空");

        System.out.println(dmList);     //[斗罗, 沧源图, 仙逆, 凡人, 斗破, 吞噬星空]
    }
}

3. Set集合

3.1 概述

(1)特点

 Set集合接口间的实现关系:

(2)重要方法

代码实现:

public class HashSetDemo {
    public static void main(String[] args) {
        // 实例化一个 Set集合
        Set<String> gameSet = new HashSet<String>();
        gameSet.add("夏洛特");
        gameSet.add("貂蝉");
        gameSet.add("戈雅");
        gameSet.add("不知火舞");

        System.out.println(gameSet);       //[不知火舞, 戈雅, 夏洛特, 貂蝉]

        // add()返回值代表是否真正在集合中插入元素
        boolean isChanged = gameSet.add("米莱迪");
        System.out.println(gameSet);       //[不知火舞, 戈雅, 夏洛特, 貂蝉, 米莱迪]
        System.out.println(isChanged);     //true

        isChanged = gameSet.add("貂蝉");
        System.out.println(gameSet);       // [不知火舞, 戈雅, 夏洛特, 貂蝉, 米莱迪]
        System.out.println(isChanged);     // false

        // Set 可以 使用所有 Collection 接口定义方法
        int size = gameSet.size();
        System.out.println(size);          // 5
        boolean isContain = gameSet.contains("夏洛特");
        System.out.println(isContain);     // true
    }
}
(3)Set集合的唯一性(hashCode() -> equals())
/**
 * Q1 : Set集合如何确保数据的  唯一性
 */

/**
 * A1 : Set集合在新增数据时, 先会判断hashCode() 是否已存在
 *      若新增的hashCode() 在Set集合中存在, 在调用equals () 进行 值比较;
 *      新增的hashCode() 与 equals() 都存在的情况下
 *      Set集合认为数据已存在,不予新增
 */

/**
 * Q2: 直接使用equals()判断不行吗?
 */

/**
 * A2: 出于执行效率老驴
 *     hashCode() 返回的整数结果  决定了其将Set集合中的存放位置
 *     由于相比于Equals()方法hashCode()计算速度会很快,  但是有可能发生哈希碰撞
 *     所以equals再次会发生哈希碰撞的值进行比较
 */

School类(重写了hashCode()、equals()、toString())

public class School {
    private String name;
    private String addr;

    public School(String name, String addr) {
        setAddr(addr);
        setName(name);
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    // 重写Object类的 toString()方法
    @Override
    public String toString() {
        return this.hashCode() + "= School{" +
                "name='" + name + '\'' +
                "addr='" + addr + '\'' +
                "}";
    }

    @Override
    public int hashCode() {
//        return super.hashCode();

        return this.name.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
//        return super.equals(obj);

        if(obj instanceof School){
            School school = (School)obj;
            if(this.name.equals(((School)obj).getName())){
                return true;
            }else{
                return false;
            }
        }else{
            return false;
        }
    }

}

Test类

public class SetConsistent {
    public static void main(String[] args) {

        String sa = "西交大";
        String sb = "西工大";

        System.out.println("sa.hashCode():" + sa.hashCode() +
                ",sa.hashCode():" + sb.hashCode());
        //  sa.hashCode():34473154,sa.hashCode():34594209

        HashSet<School> schoolHashSet = new HashSet<School>();
        schoolHashSet.add(new School(sa,"西安"));
        schoolHashSet.add(new School(sb,"西安"));
        schoolHashSet.add(new School("克职","克拉玛依"));
        schoolHashSet.add(new School("克职","克拉玛依"));

        System.out.println(schoolHashSet);
        //[1956725890= School{name='克职'addr='克拉玛依'},
        // 1163157884= School{name='西工大'addr='西安'},
        // 460141958= School{name='西交大'addr='西安'}]

    }
}

3.2 HashSet

数据存放实例:


3.3 LinkedHashSet

数据存放示例:

代码演示:

public class LinkedHashSetDemo {
    public static void main(String[] args) {
        Set<String> langSet= new LinkedHashSet<String>();

        langSet.add("Java");
        langSet.add("Python");
        langSet.add("C#");
        langSet.add("C++");
        System.out.println(langSet);    //[Java, Python, C#, C++]

    }
}

3.4 TreeSet

code01:

public class TreeSetDemo {
    public static void main(String[] args) {
        Set<Integer> tSet = new TreeSet<Integer>();
        tSet.add(108);
        tSet.add(139);
        tSet.add(75);
        tSet.add(64);
        tSet.add(225);

        System.out.println(tSet);   //[64, 75, 108, 139, 225]

        TreeSetDemo td = new TreeSetDemo();
        td.sort();                  //[226, 140, 109, 76, 65]
    }
    
    // 重写Comparator接口中的compare方法,  实现自定义比较逻辑
    class IntegerComparator implements Comparator<Integer> {
        public int compare(Integer o1, Integer o2) {
            return o2 -o1;
        }
    }

    public void sort(){
        Set<Integer> tSet = new TreeSet<Integer>(new IntegerComparator());
        tSet.add(109);
        tSet.add(140);
        tSet.add(76);
        tSet.add(65);
        tSet.add(226);

        System.out.println(tSet);       //[226, 140, 109, 76, 65]
    }
}

4.Map

4.1 概述

4.1.1 特点 & 继承关系

4.1.2 遍历集合的三种方式
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

public class LoopMapThreeWays {
    // 遍历集合

    //方式1: 增强for循环
    public void doForLoop(Map map){
        Set<String> keys = map.keySet();

        for(String key : keys){
            System.out.println(key + ":" + map.get(key));
        }
    }

    // 方式2: lambda 表达式
    public void doForLoop2(Map map){
        map.forEach((key, value) ->{
            System.out.println(key + ":" + value);
        });
    }

    // 方式3: 使用迭代器
    public void doForLoop3(Map map){
        Iterator<Map.Entry<String, Object>> itr = map.entrySet().iterator();
        while(itr.hasNext()){
            Map.Entry<String, Object> entry = itr.next();
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }



    public static void main(String[] args) {
        Map<String, Object> xlt = new LinkedHashMap<>();
        xlt.put("name", "夏洛特");
        xlt.put("nick", "玫瑰剑士");
        xlt.put("技能", "七星光芒剑");
        xlt.put("技能", "七星光芒斩");
        xlt.put("皮肤1", "浮生王");
        xlt.put("皮肤2", "金色皮");
        System.out.println(xlt);
//{name=夏洛特, nick=玫瑰剑士, 技能=七星光芒斩, 皮肤1=浮生王, 皮肤2=金色皮}

        LoopMapThreeWays lm = new LoopMapThreeWays();
        lm.doForLoop(xlt);
        System.out.println("——————————————————————————————————————————");
        lm.doForLoop2(xlt);
        System.out.println("——————————————————————————————————————————");
        lm.doForLoop3(xlt);
        /*
            name:夏洛特
            nick:玫瑰剑士
            技能:七星光芒斩
            皮肤1:浮生王
            皮肤2:金色皮
         */
    }
}

4.2 HashMap

code:

import java.util.HashMap;
import java.util.Map;

public class HashMapDemo {
    public static void main(String[] args) {
        Map<String, Object> xlt = new HashMap<String, Object>();

        xlt.put("name", "夏洛特");
        xlt.put("nick", "玫瑰剑士");
        xlt.put("技能", "七星光芒剑");
        xlt.put("技能", "七星光芒斩");

        System.out.println(xlt);        //{nick=玫瑰剑士, 技能=七星光芒斩, name=夏洛特}

        String heroNick = (String) xlt.get("nick");
        System.out.println(heroNick);   //玫瑰剑士

        System.out.println(xlt.containsKey("技能"));    //true
        System.out.println(xlt.containsKey("皮肤"));    //false


        xlt.put("皮肤1", "浮生王");

        int count = xlt.size();
        System.out.println(count);         //4

        xlt.put("皮肤2", "金色皮");
        System.out.println(xlt);           //{nick=玫瑰剑士, 技能=七星光芒斩, 皮肤2=金色皮, 皮肤1=浮生王, name=夏洛特}

        String removeValur = (String)xlt.remove("皮肤2");
        System.out.println(removeValur);   //金色皮
    }
}

4.3 LinkedHashMap

public class LinkedHashMapDemo {
    public static void main(String[] args) {
        Map<String, Object> xlt = new LinkedHashMap<>();

        xlt.put("name", "夏洛特");
        xlt.put("nick", "玫瑰剑士");
        xlt.put("技能", "七星光芒剑");
        xlt.put("技能", "七星光芒斩");
        xlt.put("皮肤1", "浮生王");

        xlt.put("皮肤2", "金色皮");
        System.out.println(xlt);
//{name=夏洛特, nick=玫瑰剑士, 技能=七星光芒斩, 皮肤1=浮生王, 皮肤2=金色皮}
    }
}

4.4 TreeMap


import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;

public class TreeMapDemo {
    public static void main(String[] args) {
        /*
           正常需求测试1:
         */
        Map<Object, Object> tMap = new TreeMap<Object, Object>();
        tMap.put("a2", 589);
        tMap.put("a1", "vb");

        tMap.put("b4", "运还是重要的");
        tMap.put("b5", "自信也重要");

        tMap.put("b2", 3.5);
        System.out.println(tMap);
//{a1=vb, a2=589, b2=3.5, b4=运还是重要的, b5=自信也重要}

        /*
            比较方法重写测试2:
         */
        TreeMapDemo td = new TreeMapDemo();
        td.sort();   //{b5=自信也重要, b4=运还是重要的, b2=3.5, a2=589, a1=vb}

    }

    class tMapComparator implements Comparator<String> {

        @Override
        public int compare(String o1, String o2) {
            return o2.compareTo(o1);
        }
    }

    public void sort(){
        Map<String, Object> t2Map = new TreeMap<>(new tMapComparator());
        t2Map.put("a2", 589);
        t2Map.put("a1", "vb");

        t2Map.put("b4", "运还是重要的");
        t2Map.put("b5", "自信也重要");

        t2Map.put("b2", 3.5);
        System.out.println(t2Map);
    }
}

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

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

相关文章

spring5-配外部文件-spEL-工厂bean-FactoryBean-注解配bean

spring配外部文件 我们先在Spring里配置一个数据源 1.导c3p0包,这里我们先学一下hibernate持久化框架&#xff0c;以后用mybites. <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.2.…

安卓开发用到的设计模式(2)结构型模式

安卓开发用到的设计模式&#xff08;2&#xff09;结构型模式 文章目录 安卓开发用到的设计模式&#xff08;2&#xff09;结构型模式1. 适配器模式&#xff08;Adapter Pattern&#xff09;2. 装饰器模式&#xff08;Decorator Pattern&#xff09;3. 代理模式&#xff08;Pro…

JavaWeb:SpringBoot配置优先级详解

3种配置 打包插件 命令行 优先级 SpringBoot的配置优先级决定了不同配置源之间的覆盖关系&#xff0c;遵循高优先级配置覆盖低优先级的原则。以下是详细的优先级排序及配置方法说明&#xff1a; 一、配置优先级从高到低排序 1.命令行参数 优先级最高&#xff0c;通过keyvalu…

故障率预测:基于LSTM的GPU集群硬件健康监测系统(附Prometheus监控模板)

一、GPU集群健康监测的挑战与价值 在大规模深度学习训练场景下&#xff0c;GPU集群的硬件故障率显著高于传统计算设备。根据2023年MLCommons统计&#xff0c;配备8卡A100的服务器平均故障间隔时间&#xff08;MTBF&#xff09;仅为1426小时&#xff0c;其中显存故障占比达38%&…

【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 -1 项目功能描述

1 项目功能描述 # 智慧社区-小程序-1 欢迎页-加载后端&#xff1a;动态变化-2 首页-轮播图&#xff1a;动态-公共栏&#xff1a;动态-信息采集&#xff0c;社区活动&#xff0c;人脸检测&#xff0c;语音识别&#xff0c;心率检测&#xff0c;积分商城-3 信息采集页面-采集人数…

FFmpeg 安装包全攻略:gpl、lgpl、shared、master 区别详解

这些 FFmpeg 安装包有很多版本和变种&#xff0c;主要区别在于以下几个方面&#xff1a; ✅ 一、从名称中看出的关键参数&#xff1a; 1. 版本号 master&#xff1a;开发版&#xff0c;最新功能&#xff0c;但可能不稳定。n6.1 / n7.1&#xff1a;正式版本&#xff0c;更稳定…

AI浪潮下,媒体内容运营的五重变奏

算法驱动的个性化推荐 在信息爆炸的时代,用户面临着海量的内容选择,如何让用户快速找到感兴趣的人工智能内容,成为媒体运营的关键。算法驱动的个性化推荐模式应运而生,它通过分析用户的行为数据,如浏览历史、点赞、评论、搜索关键词等,构建用户兴趣画像 ,再依据画像为用…

WindTerm 以 SSH 协议的方式通过安恒明御堡垒机间接访问服务器

1. 配置堡垒机秘钥 创建公私钥ssh-keygen -t rsa -b 4096执行完该命令后按照提示一路回车就能够创建出公私钥注意&#xff1a;在创建过程中会让你指定秘钥的存储位置以及对应的密码&#xff0c;最好自行指定一下 id_rsa 是私钥id_rsa.pub 是公钥 在堡垒机中指定创建好的私钥 …

通过现代数学语言重构《道德经》核心概念体系,形成一个兼具形式化与启发性的理论框架

以下是对《道德经》的数学转述尝试&#xff0c;通过现代数学语言重构其核心概念&#xff0c;形成一个兼具形式化与启发性的理论框架&#xff1a; 0. 基础公理体系 定义&#xff1a; 《道德经》是一个动态宇宙模型 U(D,V,Φ)&#xff0c;其中&#xff1a; D 为“道”的无限维…

邂逅Node.js

首先先要来学习一下nodejs的基础&#xff08;和后端开发有联系的&#xff09; 再然后的学习路线是学习npm&#xff0c;yarn&#xff0c;cnpm&#xff0c;npx&#xff0c;pnpm等包管理工具 然后进行模块化的使用&#xff0c;再去学习webpack和git&#xff08;版本控制工具&…

【慧游鲁博】【8】前后端用户信息管理:用户基本信息在小程序端的持久化与随时获取

文章目录 本次更新整体流程概述1. 用户登录流程前端登录处理 (login.vue)后端登录处理 (AuthServiceImpl.java) 2. 用户信息存储机制前端状态管理 (member.js) 3. 后续请求的身份验证登录拦截器 (LoginInterceptor.java)前端请求携带token 4. 获取用户信息获取用户信息接口 (Us…

SpringBoot返回xml

默认情况下引入web依赖后自带了JackJson 返回JSON数据 你也可以引入fastJSON 那么方便使用可以用JSON.xxx 如果希望Boot默认返回xml数据 <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml<…

【案例篇】 实现简单SSM工程-后端

简介 本篇文章将带你从0到1的实现一个SSM项目&#xff0c;通过此案例可以让你在项目中对SpringBoot的使用有一个更加详细的认识&#xff0c;希望这个简单的案例能够帮到你。文章内容若存在错误或需改进的地方&#xff0c;欢迎大家指正&#xff01;若对操作有任何疑问欢迎留言&a…

零基础学习计算机网络编程----网络基本知识

目录 1. 计算机网络发展 1.1 网络发展 1.2 媒介 2 认识协议 2.1 为什么要有协议 2.2 协议的本质 3 网络协议的初识 3.1 什么是协议分层 3.2 为什么会有 4. OSI七层模型 4.1 定义 5. TCP/IP五层(或四层)模型 5.1 有什么 6. 网络传输基本流程 6.1 网络传输流程图…

Zynq和Microblaze的区别和优势

Zynq芯片包含了一颗双核ARM Cortex-A9处理器&#xff0c;这是一颗“硬”处理器---它是芯片上专用 而且优化过的硅片原件。 MicroBlaze为“软”处理器&#xff0c;它是由可编程逻辑部分的单元组合而成的&#xff0c; 也就是说&#xff0c;一个 软处理器的实现和部署在FPGA的逻…

FastAPI 支持文件下载

FastAPI 支持文件下载 FastAPI 支持文件上传 Python 获取文件类型 mimetype 文章目录 1. 服务端处理1.1. 下载小文件1.2. 下载大文件&#xff08;yield 支持预览的&#xff09;1.3. 下载大文件&#xff08;bytes&#xff09;1.4. 提供静态文件服务 2. 客户端处理2.1. 普通下载2…

CNN卷积神经网络到底卷了啥?

参考视频&#xff1a;卷积神经网络&#xff08;CNN&#xff09;到底卷了啥&#xff1f;8分钟带你快速了解&#xff01; 我们知道&#xff1a; 图片是由像素点构成&#xff0c;即最终的成像效果是由背后像素的颜色数值所决定 在Excel中&#xff1a;有这样一个由数值0和1组成的66…

MIT 6.S081 2020Lab5 lazy page allocation 个人全流程

文章目录 零、写在前面一、Eliminate allocation from sbrk()1.1 说明1.2 实现 二、Lazy allocation2.1 说明2.2 实现 三、Lazytests and Usertests3.1 说明3.2 实现3.2.1 lazytests3.2.2 usertests 零、写在前面 可以阅读下4.6页面错误异常 像应用程序申请内存&#xff0c;内…

C++初阶-list的使用2

目录 1.std::list::splice的使用 2.std::list::remove和std::list::remove_if的使用 2.1remove_if函数的简单介绍 基本用法 函数原型 使用函数对象作为谓词 使用普通函数作为谓词 注意事项 复杂对象示例 2.2remove与remove_if的简单使用 3.std::list::unique的使用 …

如何优化 MySQL 存储过程的性能?

文章目录 1. 优化 SQL 语句避免全表扫描减少子查询&#xff0c;改用 JOIN避免 SELECT 2. 合理使用索引3. 优化存储过程结构减少循环和临时变量避免重复计算 4. 使用临时表和缓存5. 优化事务处理6. 分析和监控性能7. 优化数据库配置8. 避免用户自定义函数&#xff08;UDF&#…