22--Map集合

1、Map集合

· 现实生活与开发中,我们常会看到这样的一类集合:用户ID与账户信息、学生姓名与考试成绩、IP地址与主机名等,这种一一对应的关系,就称作映射。Java提供了专门的集合框架用来存储这种映射关系的对象,即java.util.Map接口。

1.1 Map接口概述

Map与Collection并列存在。用于保存具有映射关系的数据:key-value

  • Collection集合称为单列集合,元素是孤立存在的(理解为单身)。
  • Map集合称为双列集合,元素是成对存在的(理解为夫妻)。

Map 中的 key 和 value 都可以是任何引用类型的数据。但常用String类作为Map的“键”。

Map接口的常用实现类:HashMapLinkedHashMapTreeMap和`Properties。其中,HashMap是 Map 接口使用频率最高的实现类。

1.2 Map中key-value特点

这里主要以HashMap为例说明。HashMap中存储的key、value的特点如下:

Map 中的 key用Set来存放,不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法

key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的、确定的 value,不同key对应的value可以重复。value所在的类要重写equals()方法。

key和value构成一个entry。所有的entry彼此之间是无序的、不可重复的

1.3 Map与Collection集合区别

Collection集合

        单列集合,一次只能添加一个元素

        有的是有索引,有的没有索引

        有的集合可以存储重复的元素,有的则不可以

        有的元素是无序的,有的是有序的

Map集合

        Map集合是双列集合,由Key和Value组成

        Key是不允许重复的,Value是允许重复

        Key允许存null值的,但是只能存储唯一的一个

1.4 Map接口中常用的方法

1.4.1 添加、修改操作

public Object put(Object key,Object value)

        将指定key-value添加到(或修改)当前map对象中

public void putAll(Map m)

        将m中的所有key-value对存放到当前map中

package com.suyv.map;

import org.junit.Test;

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

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 10:26
*@Description: Map接口的添加和修改方法
*/
public class MapDemo01 {

    // put(Object key,Object value)
    @Test
    public void Test01(){
        Map map = new HashMap();
        // 添加数据
        map.put("1","三国演义");
        map.put("2","西游记");

        System.out.println(map);        // {1=三国演义, 2=西游记}

        // 修改数据
        map.put("1","红楼梦");
        System.out.println(map);        // {1=红楼梦, 2=西游记}

    }

    // putAll(Map m)        添加数据
    @Test
    public void Test02(){
        Map map1 = new HashMap();
        // 添加数据
        map1.put("1","三国演义");
        map1.put("2","西游记");

        System.out.println(map1);        // {1=三国演义, 2=西游记}


        Map map2 = new HashMap();
        // 添加数据
        map2.put("3","水浒传");
        map2.put("4","红楼梦");
        System.out.println(map2);       // {3=水浒传, 4=红楼梦}

        map1.putAll(map2);
        System.out.println(map1);       // {1=三国演义, 2=西游记, 3=水浒传, 4=红楼梦}
    }

    // putAll(Map m)        修改数据
    @Test
    public void Test03(){
        Map map1 = new HashMap();
        // 添加数据
        map1.put("1","三国演义");
        map1.put("2","西游记");

        System.out.println(map1);        // {1=三国演义, 2=西游记}


        Map map2 = new HashMap();
        // 添加数据
        map2.put("1","水浒传");
        map2.put("2","红楼梦");
        System.out.println(map2);       // {1=水浒传, 2=红楼梦}

        map1.putAll(map2);
        System.out.println(map1);       // {1=水浒传, 2=红楼梦}
    }
}

1.4.2 删除操作:

public Object remove(Object key)

        移除指定key的key-value对,并返回value

public void clear()

        清空当前map中的所有数据

package com.suyv.map;

import org.junit.Test;

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

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 10:37
*@Description: Map接口的删除方法
*/
public class MapDemo02 {

    /*public Object remove(Object key)
    移除指定key的key-value对,并返回value
    public void clear()
    清空当前map中的所有数据*/

    // remove(Object key)
    // 移除指定key的key-value对,并返回value
    @Test
    public void Test01(){
        Map map = new HashMap();
        // 添加数据
        map.put("1","三国演义");
        map.put("2","西游记");

        System.out.println(map);        // {1=三国演义, 2=西游记}
        System.out.println(map.remove("1"));    // 三国演义
        System.out.println(map);        // {2=西游记}
    }

    // clear()
    // 清空当前map中的所有数据
    @Test
    public void Test02(){
        Map map = new HashMap();
        // 添加数据
        map.put("1","三国演义");
        map.put("2","西游记");

        System.out.println(map);        // {1=三国演义, 2=西游记}
        map.clear();
        System.out.println(map);        // {}
    }
}

1.4.3 元素查询的操作:

public Object get(Object key)

        获取指定key对应的value

public boolean containsKey(Object key)

        是否包含指定的key

public boolean containsValue(Object value)

        是否包含指定的value

public int size()

        返回map中key-value对的个数

public boolean isEmpty()

        判断当前map是否为空

public boolean equals(Object obj)

        判断当前map和参数对象obj是否相等

package com.suyv.map;

import org.junit.Test;

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

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 10:43
*@Description: Map集合中元素查询方法
*/
public class MapDemo03 {

    // get(Object key)
    // 获取指定key对应的value
    @Test
    public void Test01(){
        Map map = new HashMap();
        map.put("1","三国演义");
        map.put("2","西游记");

        System.out.println(map);        // {1=三国演义, 2=西游记}
        System.out.println(map.get("1"));    // 三国演义
    }

    // containsKey(Object key)
    // 是否包含指定的key
    @Test
    public void Test02(){
        Map map = new HashMap();
        map.put("1","三国演义");
        map.put("2","西游记");

        System.out.println(map);        // {1=三国演义, 2=西游记}
        System.out.println(map.containsKey("1"));    // true
        System.out.println(map.containsKey("3"));    // false
    }

    // containsValue(Object value)
    // 是否包含指定的value
    @Test
    public void Test03(){
        Map map = new HashMap();
        map.put("1","三国演义");
        map.put("2","西游记");

        System.out.println(map);        // {1=三国演义, 2=西游记}
        System.out.println(map.containsValue("三国演义"));    // true
        System.out.println(map.containsKey("红楼梦"));    // false
    }

    // size()
    // 返回map中key-value对的个数
    @Test
    public void Test04(){
        Map map = new HashMap();
        map.put("1","三国演义");
        map.put("2","西游记");

        System.out.println(map);        // {1=三国演义, 2=西游记}
        System.out.println(map.size()); // 2
    }

    // isEmpty()
    // 判断当前map是否为空
    @Test
    public void Test05(){
        Map map = new HashMap();

        System.out.println(map.isEmpty());  // true

        map.put("1","三国演义");
        map.put("2","西游记");

        System.out.println(map);        // {1=三国演义, 2=西游记}
        System.out.println(map.isEmpty()); // false
    }

    // equals(Object obj)
    // 判断当前map和参数对象obj是否相等
    @Test
    public void Test06(){
        Map map1 = new HashMap();
        map1.put("1","三国演义");
        map1.put("2","西游记");
        System.out.println(map1);        // {1=三国演义, 2=西游记}


        Map map2 = new HashMap();
        map2.put("1","三国演义");
        map2.put("2","西游记");
        System.out.println(map2);       // {1=三国演义, 2=西游记}

        System.out.println(map1.equals(map2));  // true

        map2.remove("1");
        System.out.println(map1.equals(map2));  // false
    }
}

1.5 Map集合的遍历

Map集合遍历的方法:

public Set keySet()

        返回所有key构成的Set集合

public Collection values()

        返回所有value构成的Collection集合

public Set entrySet()

        返回所有key-value对构成的Set集合

package com.suyv.map;

import org.junit.Test;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 10:54
*@Description: Map集合的遍历
*/
public class MapDemo04 {
    // public Set keySet()
    // 返回所有key构成的Set集合
    @Test
    public void Test01(){
        Map map = new HashMap();
        map.put("1","三国演义");
        map.put("2","西游记");
        map.put("3","水浒传");
        map.put("4","红楼梦");
        System.out.println(map);       // {1=三国演义, 2=西游记, 3=水浒传, 4=红楼梦}

        Set keySet = map.keySet();
        for (Object obj : keySet) {
            System.out.println(obj);    // 1    2   3   4
        }
    }

    // public Collection values()
    // 返回所有value构成的Collection集合
    @Test
    public void Test02(){
        Map map = new HashMap();
        map.put("1","三国演义");
        map.put("2","西游记");
        map.put("3","水浒传");
        map.put("4","红楼梦");
        System.out.println(map);       // {1=三国演义, 2=西游记, 3=水浒传, 4=红楼梦}

        Collection values = map.values();
        for (Object obj : values) {
            System.out.println(obj);    // 三国演义 西游记 水浒传 红楼梦
        }
    }

    // public Set entrySet()
    // 返回所有key-value对构成的Set集合
    @Test
    public void Test03(){
        Map map = new HashMap();
        map.put("1","三国演义");
        map.put("2","西游记");
        map.put("3","水浒传");
        map.put("4","红楼梦");
        System.out.println(map);       // {1=三国演义, 2=西游记, 3=水浒传, 4=红楼梦}

        Set entrySet = map.entrySet();
        for (Object obj : entrySet) {
            System.out.println(obj);    // 1=三国演义   2=西游记   3=水浒传   4=红楼梦
        }
    }

}

1.6 Map存储自定义类型元素

需求

每位学生(姓名,年龄)都有自己的家庭住址。那么,既然有对应关系,则将学生对象和家庭住址存储到map集合中。学生作为键, 家庭住址作为值。

要求: 学生姓名相同并且年龄相同视为同一名学生

编写学生类

package com.suyv.map;

import java.util.Objects;

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 11:35
*@Description: 学生实体类Student
*/
public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
        "name='" + name + '\'' +
        ", age=" + age +
        '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

编写测试类

package com.suyv.map;

import org.junit.Test;

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

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 11:37
*@Description: 自定义实体类的测试类
*/
public class MapDemo05 {

    @Test
    public void Test01(){
        //1、创建Map集合对象
        Map<Student,String> map = new HashMap<Student,String>();

        //2、添加元素
        map.put(new Student("lisi",28), "上海");
        map.put(new Student("wangwu",22), "北京");
        map.put(new Student("zhaoliu",24), "成都");
        map.put(new Student("zhouqi",25), "广州");
        map.put(new Student("wangwu",22), "南京");

        //3、取出元素、键找值方式
        Set<Student> keySet = map.keySet();
        for(Student key: keySet){
            String value = map.get(key);
            System.out.println(key.toString()+"....."+value);
            // Student{name='zhaoliu', age=24}.....成都
            // Student{name='lisi', age=28}.....上海
            // Student{name='wangwu', age=22}.....南京
            // Student{name='zhouqi', age=25}.....广州
        }
    }
}

当给HashMap中存放自定义对象时,如果自定义对象作为key存在,这时要保证对象唯一,必须重写对象的hashCode和equals方法。

如果要保证map中存放的key和取出的顺序一致,可以使用java.util.LinkedHashMap集合来存放。

2、Map的主要实现类:HashMap

2.1 HashMap概述

HashMap是 Map 接口使用频率最高的实现类。

HashMap是线程不安全的。允许添加 null 键和 null 值。

存储数据采用的哈希表结构,底层使用数组+单向链表+红黑树进行key-value数据的存储。与HashSet一样,元素的存取顺序不能保证一致。

HashMap 判断两个key相等的标准是:两个 key 的hashCode值相等,通过 equals() 方法返回 true。

HashMap 判断两个value相等的标准是:两个 value 通过 equals() 方法返回 true。

2.2 练习

2.2.1 练习--二级联动

将省份和城市的名称保存在集合中,当用户选择省份以后,二级联动,显示对应省份的地级市供用户选择。

效果演示:

package com.suyv.hashMap;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 12:08
*@Description: HashMap练习实现二级联动
*/
public class HashMapDemo01 {
    public static void main(String[] args) {
        Map model = new HashMap();

        model.put("北京", new String[] {"北京"});
        model.put("上海", new String[] {"上海"});
        model.put("天津", new String[] {"天津"});
        model.put("重庆", new String[] {"重庆"});
        model.put("黑龙江", new String[] {"哈尔滨","齐齐哈尔","牡丹江","大庆","伊春","双鸭山","绥化"});
        model.put("吉林", new String[] {"长春","延边","吉林","白山","白城","四平","松原"});
        model.put("河北", new String[] {"石家庄","张家口","邯郸","邢台","唐山","保定","秦皇岛"});
        model.put("河南", new String[] {"郑州","开封","洛阳","周口","新乡","驻马店","安阳"});

        Set keySet = model.keySet();
        for(Object s : keySet) {
            System.out.print(s + "\t");
        }
        System.out.println();
        System.out.println("请选择你所在的省份:");
        Scanner scan = new Scanner(System.in);
        String province = scan.next();

        String[] citys = (String[])model.get(province);
        for(String city : citys) {
            System.out.print(city + "\t");
        }
        System.out.println();
        System.out.println("请选择你所在的城市:");
        String city = scan.next();

        System.out.println("信息登记完毕");
    }
}

3、Map实现类之二:LinkedHashMap

LinkedHashMap 是 HashMap 的子类

存储数据采用的哈希表结构+链表结构,在HashMap存储结构的基础上,使用了一对双向链表来记录添加元素的先后顺序,可以保证遍历元素时,与添加的顺序一致。

通过哈希表结构可以保证键的唯一、不重复,需要键所在类重写hashCode()方法、equals()方法。

总结:有序,key唯一

package com.suyv.hashMap;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 12:15
*@Description: LinkedHashMap类的使用
*/
public class LinkedHashMapDemo {
    public static void main(String[] args) {
        LinkedHashMap map = new LinkedHashMap();

        map.put("王五", 13000.0);
        map.put("张三", 10000.0);
        //key相同,新的value会覆盖原来的value
        //因为String重写了hashCode和equals方法

        map.put("张三", 12000.0);
        map.put("李四", 14000.0);
        //HashMap支持key和value为null值

        String name = null;
        Double salary = null;
        map.put(name, salary);

        Set entrySet = map.entrySet();
        for (Object obj : entrySet) {
            Map.Entry entry = (Map.Entry)obj;
            System.out.println(entry);
            // 王五=13000.0
            // 张三=12000.0
            // 李四=14000.0
            // null=null
        }
    }
}

4、Map实现类之三:TreeMap

TreeMap存储 key-value 对时,需要根据 key-value 对进行排序。TreeMap 可以保证所有的 key-value 对处于有序状态。

TreeSet底层使用红黑树结构存储数据

TreeMap 的 Key 的排序:

        自然排序:TreeMap 的所有的 Key 必须实现 Comparable 接口,而且所有的 Key 应该是同一个类的对象,否则将会抛出 ClasssCastException

        定制排序:创建 TreeMap 时,构造器传入一个 Comparator 对象,该对象负责对 TreeMap 中的所有 key 进行排序。此时不需要 Map 的 Key 实现 Comparable 接口

TreeMap判断两个key相等的标准:两个key通过compareTo()方法或者compare()方法返回0

package com.suyv.hashMap;

import org.junit.Test;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 12:21
*@Description: TreeMap的使用
*/
public class TreeMapDemo {

    // 自然排序的使用
    @Test
    public void Test01(){
        TreeMap map = new TreeMap();

        map.put("CC",45);
        map.put("MM",78);
        map.put("DD",56);
        map.put("GG",89);
        map.put("JJ",99);

        Set entrySet = map.entrySet();
        for(Object entry : entrySet){
            System.out.println(entry);
            // CC=45
            // DD=56
            // GG=89
            // JJ=99
            // MM=78
        }
    }

    // 自然排序--自定义类
    @Test
    public void Test02(){
        TreeMap map = new TreeMap();

        map.put(new User("Tom",12),67);
        map.put(new User("Rose",23),"87");
        map.put(new User("Jerry",2),88);
        map.put(new User("Eric",18),45);
        map.put(new User("Tommy",44),77);
        map.put(new User("Jim",23),88);
        map.put(new User("Maria",18),34);

        Set entrySet = map.entrySet();
        for(Object entry : entrySet){
            System.out.println(entry);
            // User{name='Jerry', age=2}=88
            // User{name='Tom', age=12}=67
            // User{name='Maria', age=18}=34
            // User{name='Eric', age=18}=45
            // User{name='Rose', age=23}=87
            // User{name='Jim', age=23}=88
            // User{name='Tommy', age=44}=77
        }
    }

    // 定制排序的使用
    @Test
    public void Test03(){

        //按照User的姓名的从小到大的顺序排列
        TreeMap map = new TreeMap(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                if(o1 instanceof User && o2 instanceof User){
                    User u1 = (User)o1;
                    User u2 = (User)o2;

                    return u1.getName().compareTo(u2.getName());
                }
                throw new RuntimeException("输入的类型不匹配");
            }
        });

        map.put(new User("Tom",12),67);
        map.put(new User("Rose",23),"87");
        map.put(new User("Jerry",2),88);
        map.put(new User("Eric",18),45);
        map.put(new User("Tommy",44),77);
        map.put(new User("Jim",23),88);
        map.put(new User("Maria",18),34);

        Set entrySet = map.entrySet();
        for(Object entry : entrySet){
            System.out.println(entry);
            // User{name='Eric', age=18}=45
            // User{name='Jerry', age=2}=88
            // User{name='Jim', age=23}=88
            // User{name='Maria', age=18}=34
            // User{name='Rose', age=23}=87
            // User{name='Tom', age=12}=67
            // User{name='Tommy', age=44}=77
        }
    }

}

// 定义实体类
class User implements Comparable{
    private String name;
    private int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    // 按照age从小到大的顺序排列,如果age相同,则按照name从大到小的顺序排列
    @Override
    public int compareTo(Object o) {
        if(this == o){
            return 0;
        }

        if(o instanceof User){
            User user = (User)o;
            int value = this.age - user.age;
            if(value != 0){
                return value;
            }
            return -this.name.compareTo(user.name);
        }
        throw new RuntimeException("输入的类型不匹配");
    }
}

5、Map实现类之四:Hashtable

Hashtable是Map接口的古老实现类,JDK1.0就提供了。不同于HashMap,Hashtable是线程安全的

Hashtable实现原理和HashMap相同,功能相同。底层都使用哈希表结构(数组+单向链表),查询速度快。

与HashMap一样,Hashtable 也不能保证其中 Key-Value 对的顺序

Hashtable判断两个key相等、两个value相等的标准,与HashMap一致。

与HashMap不同,Hashtable 不允许使用 null 作为 key 或 value。

面试题:Hashtable和HashMap的区别

HashMap:底层是一个哈希表(jdk7:数组+链表;jdk8:数组+链表+红黑树),是一个线程不安全的集合,执行效率高

Hashtable:底层也是一个哈希表(数组+链表),是一个线程安全的集合,执行效率低

HashMap集合:可以存储null的键、null的值

Hashtable集合,不能存储null的键、null的值

Hashtable和Vector集合一样,在jdk1.2版本之后被更先进的集合(HashMap,ArrayList)取代了。所以HashMap是Map的主要实现类,Hashtable是Map的古老实现类。

Hashtable的子类Properties(配置文件)依然活跃在历史舞台

Properties集合是一个唯一和IO流相结合的集合

6、Map实现类之五:Properties

Properties 类是 Hashtable 的子类,该对象用于处理属性文件

由于属性文件里的 key、value 都是字符串类型,所以 Properties 中要求 key 和 value 都是字符串类型

存取数据时,建议使用setProperty(String key,String value)方法和getProperty(String key)方法

package com.suyv.hashMap;

import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

/**
*@Author: 憨憨浩浩
*@CreateTime: 2023-12-18 13:05
*@Description: Properties类的使用
*/
public class PropertiesDemo {

    @Test
    public void Test01() {
        Properties properties = System.getProperties();
        String fileEncoding = properties.getProperty("file.encoding");//当前源文件字符编码
        System.out.println("fileEncoding = " + fileEncoding);
    }

    @Test
    public void Test02() {
        Properties properties = new Properties();
        properties.setProperty("user","songhk");
        properties.setProperty("password","123456");
        System.out.println(properties);
    }

    @Test
    public void Test03() throws IOException {
        // File file = new File("jdbc.properties");
        // System.out.println(file.getAbsoluteFile());

        Properties pros = new Properties();
        pros.load(new FileInputStream("jdbc.properties"));
        String user = pros.getProperty("user");
        System.out.println(user);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安卓小练习-校园闲置交易APP(SQLite+SimpleCursorAdapter适配器)

环境&#xff1a; SDK&#xff1a;34 JDK&#xff1a;20.0.2 编写工具&#xff1a;Android Studio 2022.3.1 整体效果&#xff08;视频演示&#xff09;&#xff1a; 小练习-闲置社区APP演示视频-CSDN直播 部分效果截图&#xff1a; 整体工作流程&#xff1a; 1.用户登录&…

C语言输出菱形(详解版)

菱形&#xff0c;就是如下所示的图形&#xff0c;总行数与总列数相等&#xff1a; 写一个程序&#xff0c;根据用户输入的总行数&#xff0c;打印出菱形。 这个题目主要是找出规律&#xff0c;考察读者的逻辑思维。 你可以从第一行开始&#xff0c;遍历所有的列&#xff0c;也…

数据可视化---双Y轴折线图比较

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

Pytorch神经网络的参数管理

目录 一、参数访问 1、目标参数 2、一次性访问所有参数 3、从嵌套块收集参数 二、参数初始化 1、内置初始化 2、自定义初始化 3、参数绑定 在选择了架构并设置了超参数后&#xff0c;我们就进入了训练阶段。此时&#xff0c;我们的目标是找到使损失函数最小化的模型参数…

【漏洞复现】华为Auth-Http服务文件读取漏洞

Nx01 产品简介 Huawei Auth-HTTP Server 1.0 可以实现基于角色的访问控制&#xff0c;通过用户的身份认证和权限控制&#xff0c;确保只有经过授权的用户可以访问特定的资源和服务。它支持常见的身份认证协议和技术&#xff0c;如LDAP、RADIUS、TACACS等&#xff0c;能够与企业…

tensorflow入门 自定义模型

前面说了自定义的层&#xff0c;接下来自定义模型&#xff0c;我们以下图为例子 这个模型没啥意义&#xff0c;单纯是为了写代码实现这个模型 首先呢&#xff0c;我们看有几个部分&#xff0c;dense不需要我们实现了&#xff0c;我们就实现Res&#xff0c;为了实现那个*3,我们…

Postman使用总结--参数化

将 测试数据&#xff0c;组织到 数据文件中&#xff0c;通过脚本的反复迭代&#xff0c;使用不同的数据&#xff0c;达到测试不同用例的目标 数据文件有两种&#xff1a; CSV &#xff08;类似于excel&#xff09; 格式简单用这个 文件小 JSON&#xff08;字典列表&#x…

简单几步完成SVN的安装

介绍以及特点 SVN&#xff1a;Subversion&#xff0c;即版本控制系统。 1.代码版本管理工具 2.查看所有的修改记录 3.恢复到任何历史版本和已经删除的文件 4.使用简单上手快&#xff0c;企业安全必备 下载安装 SVN的安装分为两部分&#xff0c;第一部分是服务端安装&…

C# 图解教程 第5版 —— 第19章 枚举器和迭代器

文章目录 19.1 枚举器和可枚举类型19.2 IEnumerator 接口19.3 IEnumerable 接口19.4 泛型枚举接口19.5 迭代器19.5.1 迭代器块19.5.2 使用迭代器来创建枚举器19.5.3 使用迭代器来创建可枚举类型 19.6 常见迭代器模式19.7 产生多个可枚举类型19.8 将迭代器作为属性19.9 迭代器的…

计算机毕业设计—基于Koa+vue的高校宿舍管理系统宿舍可视化系统

项目介绍 项目背景 随着科技的发展&#xff0c;智能化管理越来越重要。大学生在宿舍的时间超过了1/3&#xff0c;因此良好的宿舍管理对学生的生活和学习极为关键。学生宿舍管理系统能够合理安排新生分配宿舍&#xff0c;不浪费公共资源&#xff0c;减轻学校管理压力&#xff…

IDEA运行JSP启动后页面中文乱码

源代码截图&#xff1a; 运行结果截图&#xff1a; 在<head>标签内加入代码 <% page contentType"text/html; charsetgb2312"%> 重启服务器&#xff0c;问题已改善 ————————————————— 该文仅供学习以及参考&#xff0c;可做笔记收藏…

【工具使用-Qt】Qt如何查看帮助文档

一&#xff0c;简介 Qt不需要单独下载帮助文档&#xff0c;在安装的时候&#xff0c;就已经帮你下载好了&#xff0c;在目录&#xff1a;安装目录/Qt5.14.2/Docs/目录下了。 二&#xff0c;查看方法 打开IDE&#xff0c;点击“帮助”&#xff1a; 输入想要查找的内容&…

pytorch文本分类(三)模型框架(DNNtextCNN)

pytorch文本分类&#xff08;三&#xff09;模型框架&#xff08;DNN&textCNN&#xff09; 原任务链接 目录 pytorch文本分类&#xff08;三&#xff09;模型框架&#xff08;DNN&textCNN&#xff09;1. 背景知识深度学习 2. DNN2.1 从感知器到神经网络2.2 DNN的基本…

电脑操作系统深度剖析:Windows、macOS和Linux的独特特性及应用场景

导言 电脑操作系统是计算机硬件和应用软件之间的桥梁&#xff0c;不同的操作系统在用户体验、性能和安全性方面有着独特的特色。电脑操作系统是计算机系统中的核心组件&#xff0c;不同的操作系统在设计理念、用户体验和应用领域上存在显著差异。本文将深入探讨几种常见的电脑操…

智能优化算法应用:基于黑猩猩算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黑猩猩算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黑猩猩算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑猩猩算法4.实验参数设定5.算法结果6.参考文…

Excel小技能:excel如何将数字20231211转化成指定日期格式2023/12/11

给了一串数字20231211&#xff0c;想要转成指定格式的日期格式&#xff0c;发现设置单元格格式为指定日期格式不生效&#xff0c;反而变成很长很长的一串#这个&#xff0c;如图所示&#xff1a; 其实&#xff0c;正确的做法如下&#xff1a; 1&#xff09;打开数据功能界面&am…

Android-高效加载大图

Android 高效加载大图 前言读取位图尺寸和类型将按比例缩小的版本加载到内存中 前言 图片有各种形状和大小。在很多情况下&#xff0c;它们的大小超过了典型应用界面的要求。例如&#xff0c;系统“图库”应用会显示使用 Android 设备的相机拍摄的照片&#xff0c;这些照片的分…

助力智能人群检测计数,基于YOLOv8开发构建通用场景下人群检测计数识别系统

在一些人流量比较大的场合&#xff0c;或者是一些特殊时刻、时段、节假日等特殊时期下&#xff0c;密切关注当前系统所承载的人流量是十分必要的&#xff0c;对于超出系统负荷容量的情况做到及时预警对于管理团队来说是保障人员安全的重要手段&#xff0c;本文的主要目的是想要…

智能手表上的音频(五):录音

上篇讲了语音通话&#xff0c;本篇讲录音。录音功能就是把录到的音频保存成文件。保存文件的格式支持两种&#xff1a;一是PCM(16K采样)的WAV格式&#xff0c;二是AMR-NB&#xff08;8k采样&#xff09;的AMR格式。WAV格式简单&#xff1a;44字节的文件头PCM 数据&#xff0c;示…

关于前端学习的思考-浮动元素嵌套块级元素12.18

1、块级元素嵌套浮动元素 先摆图片&#xff0c;当橘色的盒子高度减少的时候&#xff0c;NK AD TB PK NN并不会减少。如何解决呢&#xff1f; 加一个overflow&#xff1a;clip或者hidden 2、浮动元素嵌套块级元素 加一个overflow&#xff1a;clip或者hidden 综上所述&#xff0…