JAVA基础:集合 (习题笔记)

news2024/10/29 1:12:19

写完一定记得 Ctrl+Alt+L 让代码格式标准

1.使用List和Map存放多个图书信息,遍历并输出。其中商品属性:编号,名称,单价,出版社;使用商品编号作为Map中的key。

  • Books类

    package set.saturdayPlan;
    
    public class Books {
        private Integer id;//编号
        private String name;//名称
        private Double price;//价格
        private String publishingHouse;//出版社
    
        //无参构造
        public Books() {
        }
    
        //有参构造
        public Books(Integer id, String name, Double price, String publishingHouse) {
            this.id = id;
            this.name = name;
            this.price = price;
            this.publishingHouse = publishingHouse;
        }
    
        //get , set 方法
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Double getPrice() {
            return price;
        }
    
        public void setPrice(Double price) {
            this.price = price;
        }
    
        public String getPublishingHouse() {
            return publishingHouse;
        }
    
        public void setPublishingHouse(String publishingHouse) {
            this.publishingHouse = publishingHouse;
        }
    
        //重写toString
        @Override
        public String toString() {
            return "Books{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", price=" + price +
                    ", publishingHouse='" + publishingHouse + '\'' +
                    '}';
        }
    
    }
    
  • List  

    package set.saturdayPlan;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class BooksTextList {
        //程序入口
        public static void main(String[] args) {
            //创建List集合对象
            List<Books> books = new ArrayList<>();
            //添加图书信息
            books.add(new Books(123, "西游记", 60.5, "清华出版社"));
            books.add(new Books(124, "红楼梦", 70.5, "北京出版社"));
            books.add(new Books(126, "水浒传", 70.2, "南京出版社"));
            books.add(new Books(125, "三国演义", 80.9, "山东出版社"));
            //遍历List
            System.out.println("===============================================================");
            //方法一 for
            for (int i = 0; i < books.size(); i++) {
                System.out.println(books.get(i));
            }
            System.out.println("===============================================================");
            //方法二 增强for
            for (Books book : books) {
                System.out.println(book);
            }
            System.out.println("===============================================================");
            //方法三 迭代器
            Iterator<Books> iterator = books.iterator();
            while (iterator.hasNext()) {
                Books books1 = iterator.next();
                System.out.println(books1);
            }
    
    
        }
    }
    

    正常写一个遍历就可以。

  • Map

  1. 直接使用Map  
    package set.saturdayPlan;
    
    import java.util.*;
    
    public class BooksTextMap {
        //程序入口
        public static void main(String[] args) {
            //创建Map集合对象
            Map<Integer, Books> map = new TreeMap<>();
            //输入图书信息
            Books boo1 = new Books(123, "西游记", 60.5, "清华出版社");
            Books boo2 = new Books(124, "红楼梦", 70.5, "北京出版社");
            Books boo3 = new Books(126, "水浒传", 70.2, "南京出版社");
            Books boo4 = new Books(125, "三国演义", 80.9, "山东出版社");
            //存储到Map集合 使用商品编号作为Map中的key
            map.put(boo1.getId(), boo1);
            map.put(boo2.getId(), boo2);
            map.put(boo3.getId(), boo3);
            map.put(boo4.getId(), boo4);
            //遍历Map
            System.out.println("=======================================================================");
            //方法一 keySet() 增强for
            Set<Integer> set = map.keySet();
            for (Integer integer : set) {
                System.out.println(map.get(integer));
            }
            System.out.println("=======================================================================");
            //方法二 keySet() 迭代器
            Iterator<Integer> iterator = map.keySet().iterator();
            while (iterator.hasNext()) {
                Integer integer = iterator.next();
                System.out.println(map.get(integer));
            }
            System.out.println("=======================================================================");
            //方法三 values() 增强for
            Collection<Books> values = map.values();
            for (Books value : values) {
                System.out.println(value);
            }
            System.out.println("=======================================================================");
            //方法四 values() 迭代器
            Iterator<Books> iterator1 = map.values().iterator();
            while (iterator1.hasNext()) {
                Books value = iterator1.next();
                System.out.println(value);
            }
            System.out.println("=======================================================================");
            //方法五 entrySet() 增强for
            Set<Map.Entry<Integer, Books>> entries = map.entrySet();
            for (Map.Entry<Integer, Books> entry : entries) {
                System.out.println(entry.getValue());
            }
            System.out.println("=======================================================================");
            //方法六 迭代器
            Iterator<Map.Entry<Integer, Books>> iterator2 = map.entrySet().iterator();
            while (iterator2.hasNext()) {
                Map.Entry<Integer, Books> entry = iterator2.next();
                System.out.println(entry.getValue());
            }
    
        }
    }
    

    正常写一个遍历就可以。

  2. LIst   To  Map
    //List To Map
            Map<Integer, Books> map = new TreeMap<>();
            Iterator<Books> iterator1 = books.iterator();
            while (iterator1.hasNext()) {
                Books books1 = iterator1.next();
                map.put(books1.getId(), books1);//使用商品编号作为Map中的key
            }
            //遍历Map
            System.out.println("==================================================================");
            //方法一  keySet()增强for
            Set<Integer> set = map.keySet();
            for (Integer integer : set) {
                System.out.println(map.get(integer));
            }
            System.out.println("==================================================================");
            //方法二 keySet()迭代器
            Iterator<Integer> iterator2 = map.keySet().iterator();
            while (iterator2.hasNext()) {
                Integer ks2 = iterator2.next();
                System.out.println(map.get(ks2));
            }
            System.out.println("==================================================================");
            //方法三 values()增强for
            Collection<Books> values = map.values();
            for (Books value : values) {
                System.out.println(value);
            }
            System.out.println("==================================================================");
            //方法四 values()迭代器
            Iterator<Books> iterator3 = map.values().iterator();
            while (iterator3.hasNext()) {
                Books value2 = iterator3.next();
                System.out.println(value2);
            }
            System.out.println("==================================================================");
            //方法五 entrySet()增强for
            Set<Map.Entry<Integer, Books>> entries = map.entrySet();
            for (Map.Entry<Integer, Books> entry : entries) {
                System.out.println(entry.getValue());
            }
            System.out.println("==================================================================");
            //方法六 entrySet()迭代器
            Iterator<Map.Entry<Integer, Books>> iterator4 = map.entrySet().iterator();
            while (iterator4.hasNext()) {
                Map.Entry<Integer, Books> entry2 = iterator4.next();
                System.out.println(entry2.getValue());
            }

    在List类的基础上,不对List集合进行遍历,将List集合中的存储到Map集合中,对Map集合进行遍历,正常写一个遍历就可以。

 2.使用HashSet和TreeSet存储多个商品信息,遍历并输出;其中商品属性:编号,名称,单价,出版社;要求向其中添加多个相同的商品,验证集合中元素的唯一性。

  提示:向HashSet中添加自定义类的对象信息,需要重写hashCode和equals( )

             向TreeSet中添加自定义类的对象信息,需要实现Comparable接口,指定比较规则

  • HashSet----Books类

      //重写equals()和hashCode()
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Books books = (Books) o;
            return Objects.equals(id, books.id) && Objects.equals(name, books.name) && Objects.equals(price, books.price) && Objects.equals(publishingHouse, books.publishingHouse);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(id, name, price, publishingHouse);
        }

    与上一题所需属性相同,沿用上一题的Books类进行修改,重写hashCode和equals( )

  • HashSet

    package set.saturdayPlan;
    
    import com.jr.demo1.Book;
    
    import java.util.*;
    
    public class BooksTextHashSet {
        //程序入口
        public static void main(String[] args) {
            //创建HashSet集合对象
            HashSet<Books> books = new HashSet<>();
            //输入商品信息
            books.add(new Books(123, "西游记", 60.5, "清华出版社"));
            books.add(new Books(124, "红楼梦", 70.5, "北京出版社"));
            books.add(new Books(126, "水浒传", 70.2, "南京出版社"));
            books.add(new Books(125, "三国演义", 80.9, "山东出版社"));
            //遍历Set
            //方法一 增强for
            for (Books book : books) {
                System.out.println(book);
            }
            System.out.println("=================================================================");
            //方法二 迭代器
            Iterator<Books> iterator = books.iterator();
            while (iterator.hasNext()) {
                Books books1 = iterator.next();
                System.out.println(books1);
            }
    
        }
    }
    

    正常写一个遍历就可以。

  • TreeSet----Books类    【方法一】

      //内部比较器
    
        @Override
        public int compareTo(Books o) {
            return this.id-o.id;//根据编号排序
        }
    

    与上一题所需属性相同,沿用上一题的Books类进行修改,重写内部比较器comparaTo方法,调用内部比较器Comparable接口。

  • TreeSet   【方法一】

    package set.saturdayPlan;
    
    import java.util.*;
    
    public class BooksTextTreeSet {
        //程序入口
        public static void main(String[] args) {
            //创建TreeSet集合对象
            TreeSet<Books> books = new TreeSet<>();
            //输入商品信息
            books.add(new Books(123, "西游记", 60.5, "清华出版社"));
            books.add(new Books(124, "红楼梦", 70.5, "北京出版社"));
            books.add(new Books(126, "水浒传", 70.2, "南京出版社"));
            books.add(new Books(125, "三国演义", 80.9, "山东出版社"));
            //遍历Set
            //方法一 增强for
            for (Books book : books) {
                System.out.println(book);
            }
            System.out.println("=================================================================");
            //方法二 迭代器
            Iterator<Books> iterator = books.iterator();
            while (iterator.hasNext()) {
                Books books1 = iterator.next();
                System.out.println(books1);
            }
    
        }
    }
    
  • TreeSet----Books类 【方法二】

沿用上一题Books类,不需要做任何改变。

  • TreeSet----外部比较器Comparator   【方法二】

    package set.saturdayPlan;
    
    import java.util.Comparator;
    
    public class BooksComparator implements Comparator<Books> {
        //方法重写
        @Override
        public int compare(Books o1, Books o2) {
            /* return o1.getId()-o2.getId();*/  //更简单
            if (o1.getId().equals(o2.getId())) {  //更严谨
                return 0;
            } else {
                return o1.getId() - o2.getId();
            }
        }
    }
    
  • TreeSet  【方法二】

 //创建TreeSet集合对象
 TreeSet<Books> books = new TreeSet<>(new BooksComparator());//外部比较器

与方法一TreeSet相同,只在创建集合对象时,加入外部比较器Comparator。

3.实现List和Map数据的转换。具体要求如下:

功能1:定义方法public void listToMap( )将List中Student元素封装到Map中

  1. 使用构造方法Student(int id,String name,int age,String sex )创建多个学生信息并加入List

  2. 遍历List,输出每个Student信息

  3. 遍历Map,输出每个Entry的key和value

  4. 将List中数据放入Map,使用Student的id属性作为key,使用Student对象信息作为value

          (1)StudentLTM类
package set.listToMap;

public class StudentLTM {
   
    private Integer id;
    private String name;
    private Integer age;
    private String sex;

    //构造方法
    public StudentLTM() {
    }

    public StudentLTM(Integer id, String name, Integer age, String sex) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    //get  set

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
    //重写toString

    @Override
    public String toString() {
        return "StudentLTM{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
}
          (2) FunctionOne类
package set.listToMap;

import com.sun.javafx.binding.ListExpressionHelper;
import set.homework.Student;

import java.util.*;

public class FunctionOne {

    //程序入口
    public static void main(String[] args) {
        //创建对象
        FunctionOne functionOne = new FunctionOne();
        //调用方法
        functionOne.listToMap();
    }

    public void listToMap() {
        //创建集合对象
        List<StudentLTM> list = new ArrayList<>();
        //创建学生信息并加入List
        list.add(new StudentLTM(10, "莉莉", 23, "女"));
        list.add(new StudentLTM(12, "等等", 21, "男"));
        list.add(new StudentLTM(16, "娜娜", 35, "女"));
        list.add(new StudentLTM(11, "威威", 42, "男"));
        //遍历List,输出每个学生的信息  增强for
        for (StudentLTM studentLTM : list) {
            System.out.println(studentLTM);
        }
        //创建Map集合对象
        Map<Integer, StudentLTM> map = new TreeMap<>();
        //将List中数据放入Map,使用Student的id属性作为key,使用Student对象信息作为value
        Iterator<StudentLTM> iterator = list.iterator();
        while (iterator.hasNext()) {
            StudentLTM ltm = iterator.next();
            map.put(ltm.getId(), ltm);
        }
        //遍历Map,输出每个Entry的key和value
        //方法一,entrySet() 迭代器
        System.out.println("=================================================");
        Iterator<Map.Entry<Integer, StudentLTM>> iterator1 = map.entrySet().iterator();
        while (iterator1.hasNext()) {
            Map.Entry<Integer, StudentLTM> entry = iterator1.next();
            System.out.println(entry.getKey() + "---" + entry.getValue());
        }
        System.out.println("===============================================");
        //方法二,entrySet() 增强for
        Set<Map.Entry<Integer, StudentLTM>> entries = map.entrySet();
        for (Map.Entry<Integer, StudentLTM> entry : entries) {
            System.out.println(entry.getKey() + "---" + entry.getValue());
        }

    }
}

正常写一个遍历就可以。 

功能2:定义方法public void mapToList( )将Map中Value值Student信息封装到 List

  1. 创建实体类StudentEntry,可以存储Map中每个Entry的信息

  2. 使用构造方法Student(int id,String name,int age,String sex )创建多个学生信息,并使用Student的id属性作为key,存入Map

  3. 创建List对象,每个元素类型是StudentEntry

  4. 将Map中每个Entry信息放入List对象

          (1) StudentLTM类

                                        与功能1相同

          (2) StudentEntryLTM类
package set.listToMap;

public class StudentEntryMTL {
    private Integer key;
    private StudentLTM stu;
    //构造方法

    public StudentEntryMTL() {
    }

    public StudentEntryMTL(Integer key, StudentLTM stu) {
        this.key = key;
        this.stu = stu;
    }
    //setter and getter

    public Integer getKey() {
        return key;
    }

    public void setKey(Integer key) {
        this.key = key;
    }

    public StudentLTM getStu() {
        return stu;
    }

    public void setStu(StudentLTM stu) {
        this.stu = stu;
    }

    @Override
    public String toString() {
        return "StudentEntryMTL{" +
                "key=" + key +
                ", stu=" + stu +
                '}';
    }
}
          (2) FunctionTwo类
package set.listToMap;

import java.util.*;

public class FuntionTwo {
  
    //程序入口
    public static void main(String[] args) {
        //创建集合对象
        Map<Integer, StudentLTM> map = new TreeMap<Integer, StudentLTM>();
        //创建多个学生信息,并使用Student的id属性作为key,存入Map
        StudentLTM stu1 = new StudentLTM(10, "莉莉", 23, "女");
        StudentLTM stu2 = new StudentLTM(12, "等等", 21, "男");
        StudentLTM stu3 = new StudentLTM(16, "娜娜", 35, "女");
        StudentLTM stu4 = new StudentLTM(11, "威威", 42, "男");
        //使用Student的id属性作为key,存入Map
        map.put(stu1.getId(), stu1);
        map.put(stu2.getId(), stu2);
        map.put(stu3.getId(), stu3);
        map.put(stu4.getId(), stu4);
        //创建List对象
        List<StudentEntryMTL> list = new ArrayList<>();
        //将Map中每个Entry信息放入List对象
        for (Map.Entry<Integer, StudentLTM> ise : map.entrySet()) {
            StudentEntryMTL stu = new StudentEntryMTL();
            stu.setKey(ise.getKey());
            stu.setStu(ise.getValue());
            list.add(stu);
        }
        //遍历list
        //方法一
        for (StudentEntryMTL student : list) {
            System.out.println(student);
        }
        System.out.println("======================================================");
        //方法二
        Iterator<StudentEntryMTL> iterator = list.iterator();
        while (iterator.hasNext()) {
            StudentEntryMTL ss = iterator.next();
            System.out.println(ss);
        }
        System.out.println("======================================================");
        //方法三
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }
}

正常写一个遍历就可以。 

功能3:说明Comparable接口的作用,并通过分数来对学生进行排序。

实现Comparable接口的类需要实现compareTo方法,根据该方法可以根据具体的排序规则对容器中的对象进行排序。

@Override
    public int compareTo(Books o) {
        return this.score-o.score;//根据学生成绩排序
    }

在StudentLTM类中,增加属性--分数score,【增加完--记得对构造方法,Getter and Seetter 以及toString方法进行修】对上面的代码的compareTo方法进行重写即可。

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

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

相关文章

经纬恒润AUTOSAR成功适配芯钛科技Alioth TTA8车规级芯片

在汽车电子领域&#xff0c;功能安全扮演着守护者的角色&#xff0c;它确保了车辆在复杂多变的情况下保持稳定可靠的运行。随着汽车电子的复杂性增加&#xff0c;市场对产品功能安全的要求也日益提高。基于此背景&#xff0c;经纬恒润AUTOSAR基础软件产品INTEWORK-EAS-CP成功适…

STL-常用容器-list

1list基本概念 **功能&#xff1a;**将数据进行链式存储 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a;链表由一系列结点组成 结点的组成&#xff1a;一个是存储…

如何将 PDF 转换成JPG图片?这里有4个详细指南

通常情况下&#xff0c;图片文件比 PDF 文件加载速度更快&#xff0c;所以如果将PDF转换成图片的格式&#xff0c;或更容易分享以及浏览。所以&#xff0c;今天就教大家4个方法&#xff0c;帮助大家快速的进行PDF和JPG图片之间的转换。 1、PDF转换大师 直通车&#xff1a;www.…

深度学习超参数调优指南

文章目录 深度学习超参数调优指南一、超参数相关基础知识1. 神经网络中包含哪些超参数2. 超参数的重要性顺序3. 部分超参数如何影响模型性能4. 部分超参数合适的范围 二、超参数调整技巧1. 如何选择激活函数2. 如何调整 Batch Size3. 如何调整学习率 三、自动调参方法1. 网格搜…

【JIT/极态云】技术文档--函数设计

一、简介 函数是计算机编程中非常重要的概念。它是一段代码&#xff0c;可以在程序中多次调用&#xff0c;用于完成特定的任务。 函数通常接受输入参数&#xff0c;执行特定的操作&#xff0c;并返回一个结果。这个结果可以被程序中的其他代码使用。 二、新建函数 在函数列表…

Ubuntu下Mysql修改默认存储路径

首先声明&#xff0c;亲身经验&#xff0c;自己实践&#xff0c;网上百度了好几个帖子&#xff0c;全是坑&#xff0c;都TMD的不行&#xff0c;修改各种配置文件&#xff0c;就是服务起不来&#xff0c;有以下几种配置文件需要修改 第一个文件/etc/mysql/my.cnf 这个文件是存…

【论文阅读】FUNNELRAG:一个从粗到精的逐级检索范式

论文地址&#xff1a;https://arxiv.org/abs/2410.10293 github&#xff1a; 研究背景 现有的检索范式存在两个主要问题&#xff1a;一是平铺检索(flat retrieval)对单个检索器造成巨大负担&#xff1b;二是恒定粒度(constant granularity)限制了检索性能的上限。研究难点在于…

map 和 set 的使用

文章目录 一.序列式容器和关联式容器二. set 系列的使用1. set 和 multiset 参考文档2. set 类介绍3. set 的构造和迭代器4. set 的增删查5. insert 和迭代器遍历使用样例6. find 和 erase 使用样例7. multiset 和 set 的差异 三. map 系列的使用1. map 和 multimap参考文档2. …

11张思维导图带你快速学习java

简介 Java是一种跨平台的编程语言&#xff0c;广泛应用于开发各种类型的应用程序。从零开始学习Java可能会感到困惑&#xff0c;因为Java拥有广泛的功能和概念。为了更好地学习和理解Java&#xff0c;可以使用思维导图来整理和归纳Java的主要概念和特点。思维导图可以帮助学习…

iOS 18.2开发者预览版 Beta 1版本发布,欧盟允许卸载应用商店

苹果今天为开发人员推送了iOS 18.2开发者预览版 Beta 1版本 更新&#xff08;内部版本号&#xff1a;22C5109p&#xff09;&#xff0c;本次更新距离上次发布 Beta / RC 间隔 2 天。该版本仅适用于支持Apple Intelligence的设备&#xff0c;包括iPhone 15 Pro系列和iPhone 16系…

算法通关--单调栈

单调栈 单调栈是在栈的先进后出的规则基础上&#xff0c;要求从栈底到栈顶的元素满足单调的关系。如果是大压小&#xff0c;那么从栈顶观察是递减栈&#xff0c;如果是小压大&#xff0c;那么从栈顶观察使递减栈 经典用法&#xff1a; 判断一个数组每个位置都求&#xff1a;…

性价比高的宠物空气净化器选购指南,双十一有哪几款值得购买?

养猫家庭注意养猫家庭注意&#xff0c;换毛季它又来啦&#xff01;不管你家猫是多么瘦小&#xff0c;这个时候都会变成一年两次限定的蒲公英小猫。这都是因为它在疯狂的掉毛&#xff0c;没来得及清理的毛发就留在身上&#xff0c;不断堆积&#xff0c;家里也到处都是它掉落的猫…

医学影像学基础:理解CT、MRI、X射线和超声等医学影像设备的基本工作原理和成像技术

目录 医学影像学基础 1. X射线成像 2. 计算机断层扫描&#xff08;CT&#xff09; 3. 磁共振成像&#xff08;MRI&#xff09; 4. 超声成像 综合对比 1、成像原理对比 2、安全性对比 3、应用领域对比 4、设备特点对比 总结 医学影像学基础 在医学影像学中&#xff0…

TCP simultaneous open测试

源代码 /*************************************************************************> File Name: common.h> Author: hsz> Brief:> Created Time: 2024年10月23日 星期三 09时47分51秒**********************************************************************…

windows录屏软件工具推荐!!

如今&#xff0c;科技的进步&#xff0c;互联网的普及&#xff0c;使我们的生活越来越便利&#xff0c;录屏工具的出现&#xff0c;大大提高我们的工作效率。如果你经常需要录制屏幕上的内容&#xff0c;比如制作教学视频、游戏实况记录、演示文稿等等&#xff0c;那这几款软件…

“令牌化”革命:数据货币化如何重塑企业竞争格局

在科技日新月异的今天&#xff0c;英伟达CEO黄仁勋在Gartner IT研讨会/XPO大会上的主题演讲无疑为企业创业者们提供了一场思想的盛宴。作为科技行业的领军企业&#xff0c;英伟达不仅在图形处理器&#xff08;GPU&#xff09;领域取得了巨大成功&#xff0c;更在人工智能&#…

前端新人手册:入职第一天的环境配置秘籍

在前端开发的世界里&#xff0c;一个高效、稳定的开发环境是高效工作的基石。它不仅能够提升你的工作效率&#xff0c;还能帮助你更快地适应团队的工作节奏。本文将详细介绍前端开发需要具备的环境及工具。 开发环境 Node.js 通常我们的前端项目都是依赖Node.js环境的&#…

JavaScript入门中-流程控制语句

本文转载自&#xff1a;https://fangcaicoding.cn/article/52 大家好&#xff01;我是方才&#xff0c;目前是8人后端研发团队的负责人&#xff0c;拥有6年后端经验&3年团队管理经验&#xff0c;截止目前面试过近200位候选人&#xff0c;主导过单表上10亿、累计上100亿数据…

C++ 日志管理 spdlog 使用笔记

文章目录 Part.I IntroductionChap.I 预备知识Chap.II 常用语句 Part.II 使用Chap.I 简单使用Chap.II 自定义日志格式 Part.III 问题&解决方案Chap.I 如果文件存在则删除 Reference Part.I Introduction spdlog 是一个开源的 C 日志管理工具&#xff0c;Git 上面的地址为 …

Ovis原理解读: 多模态大语言模型的结构嵌入对齐

论文&#xff1a;https://arxiv.org/pdf/2405.20797 github:https://github.com/AIDC-AI/Ovis 在多模态大语言模型 (MLLM) 中&#xff0c;不同的嵌入策略有显著的区别。以下是使用基于连接器的方法与 Ovis 方法的比较&#xff1a; 基于连接器的方法-优缺点(connector-based …