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

集合基础知识点

集合基础

1. 集合的由来

当 Java 程序中需要存放数据的时候,通常会定义变量来实现数据的存储,但是,当需要存储大量数据的时候该怎么办呢?这时首先想到的是数组,但是!数组只能存放同一类型的数据,而且其长度是固定的,那怎么办了?集合便应运而生了。

2. 集合是什么

Java 集合类存放在 java.util 包中,是一个用来存放对象的容器。

集合的特点:

  1. 集合只能存放对象。比如将一个 int 型数据存入集合中时,它会自动转换成 Integer 类后存入集合(自动装箱操作),Java 中每一种基本数据类型都有对应的引用类型(封装类)。
  2. 集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。
  3. 集合可以存放不同类型,不限数量的数据类型。

3. Java 集合框架

图片描述

通过上面的图可以发现:

  1. 集合主要分为 Collection 和 Map 两个接口。
  2. Collection 接口依赖了 Iterator 接口。
  3. Collection 又分别被 List 和 Set 继承。
  4. List 被 AbstractList 实现,然后分为 3 个子类,ArrayList,LinkList 和 VectorList。
  5. Set 被 AbstractSet 实现,又分为 2 个子类,HashSet 和 TreeSet。
  6. Map 被 AbstractMap 实现,又分为 2 个子类,HashMap 和 TreeMap。
  7. Map 被 Hashtable 实现。

下面就围绕这些接口、抽象类和实现类来讲解。

4. Iterator 迭代器

  1. Iterator 是一个用来遍历集合中元素的接口,主要有 hashNext(),next(),remove() 三种方法。
  2. 它的子接口 ListIterator 在它的基础上又添加了三种方法,分别是 add(),previous(),hasPrevious()。
  3. 它是 Java 集合的顶层接口(不包括 map 系列的集合,Map 接口是 *Map 系列集合的顶层接口)
    • Object next():返回迭代器刚越过的元素的引用,返回值是 Object,需要强制转换成自己需要的类型。
    • boolean hasNext():判断容器内是否还有可供访问的元素。
    • void remove():删除迭代器刚越过的元素。

总结:除了 Map 系列的集合,我们都能通过迭代器来对集合中的元素进行遍历。

示例代码

Iterator it =  hashSet.iterator();
while(it.hasNext()){int i = (int)it.next();
}

5. Collection 接口介绍

Collection 的作用就是规定了一个集合有哪些基本的操作。

图片描述

  • int size() 获取元素个数

  • boolean isEmpty() 是否个数为零

  • boolean contains(Object element) 是否包含指定元素

  • boolean add(E element) 添加元素,成功时返回 true

  • boolean remove(Object element) 删除元素,成功时返回 true

  • Iterator<E> iterator() 获取迭代器

  • Object[] toArray() 返回一个包含集合中所有元素的数组

  • <T> T[] toArray(T[] a) 返回一个包含集合中所有元素的数组,运行时根据集合元素的类型指定数组的类型

6. List 介绍

Java 的 List 是非常常用的数据类型。List 是有序的 Collection。Java 的 List 有三个常用的实现类:分别是 ArrayList、Vector 和 LinkedList。

public class Test {public static void main(String[] args) {LinkedList<Student> list = new LinkedList<>();list.add(new Student(3,"king"));list.add(new Student(1,"david"));list.add(new Student(2,"tom"));list.add(new Student(3,"king"));for (Student student : list) {System.out.println(student);}list.sort(new StudentComp());for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}
}

6.1 ArrayList(数组)

ArrayList 是最常用的 List 实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从 ArrayList 的中间位置插入或者删除元素时,需要对数组进行复制、移动代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。

6.2 Vector(数组实现、线程同步)

Vector 与 ArrayList 一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写 Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此访问它比访问 ArrayList 慢。

6.3 LinkList(链表)

LinkedList 是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,他还提供了 List 接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。

新添加的方法:

  • addFirst()
  • removeFirst()
  • addLast()
  • removeLast()
  • getFirst()
  • getLast()

7. Set 介绍

Set 注重独一无二的性质,该体系集合用于存储无序 (存入和取出的顺序不一定相同) 元素,值不能重复。对象相等的本质是由对象 hashCode 值(java 是依据对象的内存地址计算出的此序号)判断得出的,如果想要让两个不同的对象视为相等的,就必须覆盖 Object 的 hashCode 方法和 equals 方法。

7.1 HashSet(Hash 表)

哈希表里存放的是哈希值。HashSet 存储元素的顺序并不是按照存入时的顺序(和 List 显然不同) 而是按照哈希值来存的,所以取数据也是按照哈希值获取。

元素的哈希值是通过元素的 hashcode 方法来获取的,HashSet 首先判断两个元素的哈希值,如果哈希值一样,接着会比较 equals 方法,如果 equals 结果为 true ,HashSet 就视为同一个元素;如果 equals 为 false 就不是同一个元素。

哈希值相同 equals 为 false 的元素是怎么存储呢?就是在同样的哈希值下顺延(可以认为哈希值相同的元素放在一个哈希桶中),也就是哈希值一样的存一列。

如图 1 表示 hashCode 值不相同的情况,图 2 则表示 hashCode 值相同,但 equals 不相同的情况。

图片描述

HashSet 通过 hashCode 值来确定元素在内存中的位置。一个 hashCode 位置上可以存放多个元素。

7.2 TreeSet(二叉树)

TreeSet() 是使用二叉树的原理对新 add() 的对象按照指定的顺序排序(升序、降序),每增加一个对象都会进行排序,将对象插入的二叉树指定的位置。

Integer 和 String 对象都可以进行默认的 TreeSet 排序,而自定义类的对象是不可以的,自定义的类必须实现 Comparable 接口。

比较器

  • 当两个对象进行比较的时候,需要定义比较规则。这时候就需要使用比较器。
  • 比较器由两种:内部比较器(Comparable)和外部比较器(Comparator)。

在覆写 compareTo() 函数时,要返回相应的值才能使 TreeSet 按照一定的规则来排序比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

基本类型(不要比较器

Set set = new TreeSet();
set.add(6);
set.add(3);
set.add(5);
set.add(7);
set.add(2);
set.add(9);
for (Object obj : set) {System.out.println((int)obj);
}

注意:基本类型和 String 不需要比较器是因为封装类和 String 类都实现了 Comparable 接口。

自定义类型(需要比较器)

Student 类

public class Student implements Comparable<Student>{private int stuNo;private String stuName;public Student(final int stuNo, final String stuName) {this.stuNo = stuNo;this.stuName = stuName;}@Overridepublic int compareTo(Student student) {return student.stuName.compareTo(this.stuName) ;}@Overridepublic String toString() {return "Student [stuName=" + stuName + ", stuNo=" + stuNo + "]";}public int getStuNo() {return stuNo;}public void setStuNo(int stuNo) {this.stuNo = stuNo;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}}

测试类

public static void main(String[] args) {Set set = new TreeSet();// 声明集合时需要定义比较器set.add(new Student(3,"david"));set.add(new Student(1,"tom"));set.add(new Student(2,"king"));for (Object obj : set) {System.out.println((Student)obj);}
}

7.3 LinkHashSet(HashSet+LinkedHashMap)

对于 LinkedHashSet 而言,它继承于 HashSet、又基于 LinkedHashMap 来实现的。

LinkedHashSet 底层使用 LinkedHashMap 来保存所有元素,它继承于 HashSet,其所有的方法操作上与 HashSet 相同,因此 LinkedHashSet 的实现上非常简单,只提供了四个构造方法,并通过传递一个标识参数,调用父类的构造器。

8. Map 介绍

Map 是一种特殊的集合,它使用键 - 值对的方式存储数据,通常是通过键来获得值。

  • key-value 对应的模式
  • key 不能重复的,value 可以重复的。
  • Map.keySet() 获得 map 中所有的 key。
  • Map.values() 获得 map 中所有的 value。

8.1 HashMap(线程不安全)

HashMap 根据键的 hashCode 值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap 最多只允许一条记录的键为 null,允许多条记录的值为 null。HashMap 非线程安全,即任一时刻可以有多个线程同时写 HashMap,可能会导致数据的不一致。

8.2 HashTable(线程安全)

Hashtable 是遗留类,很多映射的常用功能与 HashMap 类似,不同的是它承自 Dictionary 类,并且是线程安全的,任一时间只有一个线程能写 Hashtable,并发性不如 ConcurrentHashMap,因为 ConcurrentHashMap 引入了分段锁。Hashtable 不建议在新代码中使用,不需要线程安全的场合可以用 HashMap 替换,需要线程安全的场合可以用 ConcurrentHashMap 替换。

8.3 TreeMap(可排序)

TreeMap 实现 SortedMap 接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用 Iterator 遍历 TreeMap 时,得到的记录是排过序的。如果使用排序的映射,建议使用 TreeMap。在使用 TreeMap 时,key 必须实现 Comparable 接口或者在构造 TreeMap 传入自定义的 Comparator,否则会在运行时抛出 java.lang.ClassCastException 类型的异常。

8.4 LinkHashMap(记录插入顺序)

LinkedHashMap 是 HashMap 的一个子类,保存了记录的插入顺序,在用 Iterator 遍历 LinkedHashMap 时,先得到的记录肯定是先插入的,也可以在构造时带参数,按照访问次序排序。

9. 泛型

Java 泛型(generics)是 Java 5 中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型。

众所周知,集合对象中存储的都是 Object 类型的对象,存储元素时,元素类型可以自动转换为 Object。当需要读取元素时则需要强制将 Object 类型转换成对应的子类型,这种操作是不安全的行为。使用泛型可以约束存入数据类型,提高数据的安全性。

泛型的本质是参数化类型,也就是所操作的数据类型被指定为一个参数。

泛型概念

  • 泛型:是一种约束,可以在代码编译阶段对存储于集合的数据进行类型控制。
  • 泛型擦除:泛型是提供给 javac 编译器使用的,它用于限定集合的输入类型,让编译器在源代码级别上。但编译器编译完带有泛形的 Java 程序后,生成的 class 文件中将不再带有泛形信息,以此使程序运行效率不受到影响,这个过程称之为 “擦除”。

集合中使用泛型:

//使用了泛型后,集合中的数据只能存入泛型定义的类型。并且在操作的时候不需要类型转换。
ArrayList<String> stuNameList = new ArrayList<>();
stuNameList.add("david");
stuNameList.add("tom");
stuNameList.add("king");
for (String stuName: stuNameList){System.out.println(stuName);
}

注意:泛型仅在编译中进行类型约束,在编译后的代码中没有泛型,底层还是类型转换的,也就是泛型擦除。

泛型除了在集合中使用外,还有三种常用的使用方式:泛型类泛型接口泛型方法

  • 泛型类
/*1: 把泛型定义在类上2: 类型变量定义在类上, 方法中也可以使用*/
public class ObjectTool<T> {private T obj;public T getObj() {return obj;}public void setObj(T obj) {this.obj = obj;
}

  • 泛型接口
//同泛型类类似
public interface Man<T>{public T getMan();
}

  • 泛型方法
// 定义泛型方法..
public <T> void show(T t) {
System.out.println(t);
}

相关文章:

集合基础知识点

集合基础 1. 集合的由来 当 Java 程序中需要存放数据的时候&#xff0c;通常会定义变量来实现数据的存储&#xff0c;但是&#xff0c;当需要存储大量数据的时候该怎么办呢&#xff1f;这时首先想到的是数组&#xff0c;但是&#xff01;数组只能存放同一类型的数据&#xff…...

最新版付费进群系统源码 /同城定位付费进群源码 /自带定位完整版/后台分销站点

源码介绍&#xff1a; 最新版付费进群系统源码 &#xff0c;它是同城定位付费进群源码&#xff0c;而且自带定位完整版和后台分销站点。 看到有些人分享一些虚假的内容或者缺少文件的内容。现在分享完整给大家&#xff0c;功能是完整的。它是同城定位付费进群源码。 功能&am…...

【论文阅读笔记】医学多模态新数据集-Large-scale Long-tailed Disease Diagnosis on Radiology Images

这是复旦大学2023.12.28开放出来的数据集和论文&#xff0c;感觉很宝藏&#xff0c;稍微将阅读过程记录一下。 Zheng Q, Zhao W, Wu C, et al. Large-scale Long-tailed Disease Diagnosis on Radiology Images[J]. arXiv preprint arXiv:2312.16151, 2023. 项目主页&#xf…...

(C语言)指针的进阶

1.指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块内存空间。 2.指针的大小是固定的4/8个字节(32位平台/64位平台)。 3.指针是有类型&#xff0c;指针的类型决定了指针的-整数的步长&#xff0c;指针解引用操作的时候的权限。 4.指针的运算。 一、关于两…...

【网络面试(5)】收发数据及断开服务器(四次挥手)

前面了解到服务器和客户端在创建套接字&#xff0c;建立连接后&#xff0c;就可以进入到下一步&#xff0c;双发可以互相发送和接收数据&#xff0c;本篇博客就来学习一下这个过程。  我们印象里&#xff0c;发送数据应该是我们在浏览器输入网址&#xff0c;敲击回车的一瞬间&…...

【Maven】下载及配置

文章目录 1. 定义2. 下载3. 解压4. 配置环境变量5. 验证6. 特性 1. 定义 Maven 是一个跨平台的项目管理工具。作为 Apache 组织的一个颇为成功的开源项目&#xff0c;其主要服务于基于 Java 平台的项目创建&#xff0c;依赖管理和项目信息管理&#xff0c;是一个自动化构建工具…...

【方法】PPT设置密码后如何修改?

PowerPoint是我们日常和工作中经常用到的办公软件&#xff0c;有时候为了保护文件&#xff0c;还会设置密码&#xff0c;那设置密码后又想要修改密码&#xff0c;怎么操作呢&#xff1f;下面来看看PPT常用的两种密码是如何修改的。 1. “打开密码” 想要修改PPT的“打开密码”…...

第34期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…...

2023新版edge浏览器页面加载不出来的解决办法

2023新版edge浏览器页面加载不出来的原因有很多&#xff0c;以下是一些可能的解决方法&#xff1a; - 检查网络连接&#xff1a;确保你的设备连接到稳定的网络&#xff0c;尝试重新启动路由器或调制解调器。 - 清除浏览器缓存&#xff1a;打开edge浏览器&#xff0c;点击右上…...

算法基础之二分与前缀和 day 6

文章目录 二分第一类第二类 前缀和原题链接题目描述输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a; 题目分析示例代码 二分 二分法是我们在高中数学就学习过的一种思想&#xff0c;他也是一种效率较高的查找算法&#xff0c;在编写代码的过程中&#xff0…...

github短视频去除水印项目Douyin_TikTok_Download_API介绍

当下正值短视频盛行的时代。在我们浏览短视频的同时&#xff0c;经常能发现一些精美的图片、引人入胜的文案以及吸引眼球的视频&#xff0c;想要将它们保存到本地。然而&#xff0c;保存下来的图片或视频通常伴随着不太愉悦的水印&#xff0c;这显著降低了使用体验。因此&#…...

FindMy技术用于键盘

键盘是我们生活中不可或缺的输入工具&#xff0c;是人与计算机之间沟通的桥梁&#xff0c;无论是编写文档、浏览网页、玩游戏、或是进行复杂的数据分析&#xff0c;键盘都在其中发挥着关键的作用。此外&#xff0c;键盘还是各种软件的快捷键操作的关键。通过熟练地运用快捷键&a…...

认识jmeter接口测试工具!

jmeter简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 下载 下载地址&#xff1a;​​​​​​Apache JMeter - Download Apache JMeter 安装 由于Jmeter…...

强大的按钮类CButtonST

转自&#xff1a;哈哈 强大的CButtonST_cbuttonst demo-CSDN博客 这里给大家介绍强大的按钮类CButtonST&#xff0c;可以使您的程序锦上添花。 CButtonST类主要包括BtnST.h、BtnST.cpp、BCMenu.h和BCMenu.cpp四个文件。先将上述4个文件复制到自己的工程&#xff0c;然后在VC开…...

学习ing

记录 1.光圈的大小由一个称为“F值”的数字表示&#xff0c;这个数字越小&#xff0c;光圈就越大&#xff0c;光线也就越多。一般来说&#xff0c;使用较小的F值可以拍摄出更亮的照片&#xff0c;而使用较大的F值可以拍摄出更暗的照片。 2.光圈可以控制相机的曝光时间&#x…...

linux下数据库定时备份

1.编写shell脚本 #!/bin/bash USER"root" PASSWORD"Root.36#336" DATABASE"backup_test" HOSTNAME"127.0.0.1" DATEdate %Y%m%d_%H%M%S #日期格式&#xff08;作为文件名&#xff09; BACKUP_DIR/home/mysql/DB_backup/ #备份文件存…...

Qt/QML编程学习之心得:QSocketNotifier(二十一)

QSocketNotifier在Qt中怎么使用? QSocketNotifier使Qt的事件循环与其他基于文件描述符的事件循环集成成为可能。在Qt的主事件循环(QCoreApplication::exec())中检测到文件描述符操作。 使用低级(通常是特定于平台的)API打开设备后,可以创建一个套接字通知程序来监视文…...

【linux】lsblk和df -h显示的磁盘信息不同

【问题分析】 lsblk 查看的是block device,也就是逻辑磁盘大小。 df查看的是file system, 也就是文件系统层的磁盘大小。 这种情况应该是block device容量变大&#xff0c;单还没有反映到file system中。 【问题解决】 如果是ext{2,3,4}文件系统的话&#xff0c;可以用res…...

如何开发属于自己的小程序?

随着移动互联网的快速发展&#xff0c;小程序已成为一种不可忽视的力量。对于许多企业和个人而言&#xff0c;拥有一个属于自己的小程序不仅能提高品牌曝光度&#xff0c;还能带来实实在在的收益。那么&#xff0c;如何开发属于自己的小程序呢&#xff1f;本文将为你揭秘这一过…...

湖仓架构的演进

1.数据仓库架构的历史演进 起初&#xff0c;业界数据处理首选方式是数仓架构。通常数据处理的流程是把一些业务数据库&#xff0c;通过ETL的方式加载到Data Warehouse中&#xff0c;再在前端接入一些报表或者BI的工具去展示。 数据仓库概念是 Inmon 于 1990 年提出并给出了完…...

【头歌实训】Spark MLlib ( Python 版 )

文章目录 第1关&#xff1a;基本统计编程要求测试说明答案代码 第2关&#xff1a;回归编程要求测试说明参考资料答案代码 第3关&#xff1a;分类编程要求测试说明参考资料答案代码 第4关&#xff1a;协同过滤编程要求测试说明参考资料答案代码 第5关&#xff1a;聚类编程要求测…...

Java基础进阶(学习笔记)

注&#xff1a;本篇的代码和PPT图片来源于黑马程序员&#xff0c;本篇仅为学习笔记 static static 是静态的意思&#xff0c;可以修饰成员变量&#xff0c;也可以修饰成员方法 修饰成员的特点&#xff1a; 被其修饰的成员, 被该类的所有对象所共享 多了一种调用方式, 可以通过…...

uView NoticeBar 滚动通知

该组件用于滚动通告场景&#xff0c;有多种模式可供选择 #平台差异说明 App&#xff08;vue&#xff09;App&#xff08;nvue&#xff09;H5小程序√√√√ #基本使用 通过text参数设置需要滚动的内容 <template><view><u-notice-bar :text"text1&quo…...

外包干了3个多月,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…...

JSON的一些资源

以下是一些推荐的学习资源&#xff1a; 1. **官方网站**: - JSON.org: 这是一个很好的起点&#xff0c;它提供了JSON的基本介绍和语法规则。 2. **在线教程和课程**: - CSDN全方面学习各种资源。 - W3Schools (w3schools.com): 提供了一个关于JSON的教程&#xff0c;涵…...

最优化理论期末复习笔记 Part 1

数学基础线性代数 从行的角度从列的角度行列式的几何解释向量范数和矩阵范数 向量范数矩阵范数的更强的性质的意义 几种向量范数诱导的矩阵范数 1 范数诱导的矩阵范数无穷范数诱导的矩阵范数2 范数诱导的矩阵范数 各种范数之间的等价性向量与矩阵序列的收敛性 函数的可微性与展…...

鸿蒙应用中的通知

目录 1、通知流程 2、发布通知 2.1、发布基础类型通知 2.1.1、接口说明 2.1.2、普通文本类型通知 2.1.3、长文本类型通知 2.1.4、多行文本类型通知 2.1.5、图片类型通知 2.2、发布进度条类型通知 2.2.1、接口说明 2.2.2、示例 2.3、为通知添加行为意图 2.3.1、接…...

如何停止一个运行中的Docker容器

要停止一个运行中的Docker容器&#xff0c;你可以使用以下命令&#xff1a; docker stop <容器ID或容器名> 将 <容器ID或容器名> 替换为你要停止的具体容器的标识符或名称。你可以使用以下命令查看正在运行的容器&#xff1a;docker ps 这将列出所有正在运行的…...

Linux第19步_安装“Ubutun交叉编译工具链”

由于Ubuntu系统使用的GCC编译器&#xff0c;编译结果是X86文件&#xff0c;只能在X86上运行&#xff0c;不能在ARM上直接运行。因此&#xff0c;还要安装一个“Ubutun交叉编译工具链”&#xff0c;才可以在ARM上运行。 arm-none-linux-gnueabi-gcc是 Codesourcery 公司&#x…...

【论文阅读笔记】 Representation Learning with Contrastive Predictive Coding

Representation Learning with Contrastive Predictive Coding 摘要 这段文字是论文的摘要&#xff0c;作者讨论了监督学习在许多应用中取得的巨大进展&#xff0c;然而无监督学习并没有得到如此广泛的应用&#xff0c;仍然是人工智能中一个重要且具有挑战性的任务。在这项工作…...

顺德手机网站设计价位/菏泽百度推广公司电话

版本控制git之二 分支 有人把 Git 的分支模型称为它的‘必杀技特性’&#xff0c;也正因为这一特性&#xff0c;使得 Git 从众多版本控制系统中脱颖而出。 为何 Git 的分支模型如此出众呢&#xff1f; Git 处理分支的方式可谓是难以置信的轻量&#xff0c;创建新分支这一操作几…...

网站建设与管理总结报告/如何优化关键词

刷题主页 在上次打劫完一条街道之后和一圈房屋后&#xff0c;小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为“根”。 除了“根”之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察之后&#xff0c;聪明的小偷意识到“这个地…...

公众号怎么做网站/策划是做什么的

Flashback QueryFlashback 是ORACLE 自9i 就开始提供的一项特性&#xff0c;在9i 中利用oracle 查询多版本一致的特点&#xff0c;实现从回滚段中读取表一定时间内操作过的数据&#xff0c;可用来进行数据比对&#xff0c;或者修正意外提交造成的错误数据&#xff0c;该项特性也…...

wordpress 下载选择/太原自动seo

睡眠功能本是Windows 10为节能而设的一项人性化体贴功能&#xff0c;有时却也可能会给我们带来麻烦。比如&#xff0c;本来是进入了睡眠状态的电脑&#xff0c;却在人离开后&#xff0c;因为某个软件的唤醒指令发生作用而悄悄被唤醒&#xff0c;白白地在那里浪费能源&#xff1…...

曲靖做网站/优化方案的格式及范文

蒂莫西约翰伯纳斯-李发明了三样东西&#xff1a;URL HTTP HTML&#xff0c;其中HTML为超文本标记语言&#xff0c;就是我们前端编写页面的HTML&#xff0c;HTTP为超文本传输语言(这个会在我之后的博客中写道)&#xff0c;以及我们本次要提到的URL。URL为&#xff1a;Uniform R…...

wordpress 树状目录结构/百度小说排行榜前十名

泰勒公式的通俗理解 1. 泰勒公式在做什么&#xff1f; 泰勒公式在用多项式函数&#xff0c;逼近一个复杂函数 f(x)f(x)f(x) 2. 泰勒公式是如何做的&#xff1f; 多项式中的 aaa 表示泰勒公式的展开位置 若 a2a2a2 则在 x2x2x2 处展开&#xff0c;即这个多项式函数在 x2x2x2 处…...