【Java基础】——集合篇
目标:
1.每个集合用的场景
2.每个集合的底层
一.概述
二.
三.Collection
1.通用方法
其中,contains方法,它的底层一定调用了equals方法进行比对,而且一定重写了equals方法,如果不重写equals方法,就是调用的老祖宗的equals方法,比的是对象(存放的地址)而不是值本身。同样remove也调用了equals方法,完成删除。
2.Collection的遍历(迭代)(子类型均可以使用)
四.泛型
1.为什么要使用泛型
当前程序先不使用泛型,分析存在什么缺点?
不好看,代码写的比较多。每一次从集合中取出的元素要想访间子类中特有的方法,必须向下转型大部分都是要写向下转型的。因为0bject类中的方法肯定是不够用的。一定会调用子类方法。可是obj类型调不了子类的方法。
2.泛型的擦除与补偿
3.自定义泛型
1.类上定义
直接加在类后面即可
2.接口上定义
与在类上定义相似,加在接口名后面。但
3.方法上定义
格式:修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }
/**
*
* @param t 传入泛型的参数
* @param <T> 泛型的类型
* @return T 返回值为T类型
* 说明:
* 1)public 与 返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。
* 2)只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并不是泛型方法。
* 3)<T>表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T。
* 4)与泛型类的定义一样,此处T可以随便写为任意标识,常见的如T、E等形式的参数常用于表示泛型。
*/
public <T> T genercMethod(T t){System.out.println(t.getClass());System.out.println(t);return t;
}//定义一个泛型方法,不返回内容
public <T> void print(T t){System.out.println(t);
}//定义一个泛型方法,传入多个泛型
public <T,F> void query(T t,List<F> f){System.out.println(t);
}//传入T, F 返回T
public <T,F> T query1(T t,F f){
}//静态的泛型方法 需要在static后用<>声明泛型类型参数
public static <E> void swap(E[] array, int i, int j) {E t = array[i];array[i] = array[j];array[j] = t;
}
4.泛型的通配符
五.集合的并发问题
1.案例
你是使用的迭代器去遍历,但用的另一种方式(集合的方法)去删除,虽然并没有开启多线程去做这件事,但会判定(感觉)你为并发修改异常
2.fail-fast机制
3.fail-safe机制
在fail-safe机制中,遍历的是一个数组,添加元素的是另一个数组。它牺牲了一致性。
六.List集合(有序,可重复)
1.介绍
2.特有的迭代方式
3.使用sort方法排序
1.回顾数组是如何排序的
2.List集合中的sort方法
在上面数组中,是写在实体类中的,让想要排序的类去实现了comparable接口,并在该类中规定了比较规则,这种方法有些侵入式的,毕竟修改了类。但list集合中的方法则不同。新建了一个类(当然也可以用匿名内部类的方式更简单,总之就是一个新类)去实现comparator接口
七.***ArrayList****
1.优缺点
重点在于随机的增删,而不是增删数组尾的元素。
2.扩容机制
3.ArrayList与LinkedList对比
八.Map集合
1.继承结构
2.常用方法
3.
4.
5.LinkedHashMap
有序指的是有下标。
6.HashTable下的properties属性类的使用(IO流)
与配置文件联合使用,属性配置文件的扩展名:xxxx.properties
key和value都是string类型
7.TreeMap
key可排序,但不可重复
key不能为null
key需要重写hashcode和equals
底层数据结构采用红黑树
1.自定义类型的排序(两种方式)
1.实现comparable接口,然后重写compareTo,person implement comparable<person>
侵入式的编程
2.多写一个comparator比较器(独立的一个类)
总结:如果比较规则经常不变,比如说你按照int string类型的比较,就用第一种
如果经常变,比如你自定义的类型,有时按年龄比有时按名字比等等,就用第二种比较器。
put的源码就是看你new Treemap的时候传没传比较器,传了就走比较器,没传就走comparable。
九.哪些集合的key不能为null
十.****HashMap****
1.数据结构
2.链表过长如何解决?
1.扩容
初始化容量是16,一次扩容2倍。扩容后,所有的元素需要重新计算,得到桶下标,所以扩容的成本非常大,所以在创建时,就要确定好初始化容量,避免扩容。
2.树化
退化成链表
1.扩容时
2.remove树节点时,根节点,根节点的左右孩子,和左孙子,在移除前都还存在,就不会退化成链表,若不存在则会退化为链表。注意:是移除前检查那几个节点。
3.索引的计算
1.索引是如何计算的?
任何一个对象都有一个hashcode方法得到原始hash,hashmap中还有一个hash()方法得到这个对象的二次hash值,然后这个hash值再和数组的容量进行一个取模运算得到一个余数,就是桶下标的位置。
取模运算其实可以优化,变成一个按位与(数组长度-1),这里要求数组长度必须是2的n次幂。
2.hashcode都有了,为何还要提供hash()方法?
hash方法,先拿到原始的hash值,然后右移16位,再与原始的hash值做一个异或运算得到二次hash值。有时在低位数字一样,模一个相同的数组长度就得到了相同的桶下标,二次hash可以让高位的数字参与进来。本质就是为了让hash分布更加均匀,避免链表过长。
3.数组的容量为何是2的n次幂?不是可不可以?
数组的容量是2的n次幂的话可以进行优化
1.扩容的时候,更加方便
2.计算桶下标位置的时候更快
那不用可以吗?
数组长度用2的n次幂时有一定的缺点。比如说如果选择的数字都是偶数,那么就会导致分布不均匀。
如果选择选择一个质数,甚至都不用二次hash了。就可以得到一个不错的分布性。
看追求的是什么,追求效率就选2的n次幂。追求更好的分布性,则选择一个不错的质数。
4.put的流程
添加元素时,是先把元素放进去,再检查是否需要扩容。
5.扩容因子为什么是0.75f
6.多线程下的问题
1. 数据错乱(1.7,1.8)
两个线程都检查到同一个桶下标没有元素,都往这个位置添加元素,导致后一个把前一个覆盖了,明明那个下标应该有2个元素,而现在就只有一个了。
2.并发死链(1.7)头插法和扩容时迁移导致
7.key的要求
而且key必须唯一,不可重复,如果key重复,value就会覆盖。
如果是自定义类型,必须同时重写equals和hashcode方法。
8.对象的hashcode是如何设计的?
十一.Set集合
本质上就是map集合然后取出key的部分,不要value就是set集合。
1.Hashset
1.特点
无序不可重复
2.面试题:
首先有一个student类,并且重写了hashcode方法,通过年龄和名字。现在是把张三的名字变成王五了。
问题1.set.remove(stu)能不能被删除?答:不能被删除
虽然将张三的名字改成了王五,但是它所在的位置并没有变,也就是说那个位置其实是张三和他的年龄18通过hashcode计算出来的下标。
remove方法:remove(stu),现在stu变成王五,remove方法先要找到数组下标,知道要删除的元素在哪,那就是通过hashcode方法来得到下标,但是王五和年龄18计算出来的下标有可能不是张三原来待的那个下标了,会是其他下标,所以当然就删不掉了。
2.问题2:set.add(new Student("王五",18))能不能添加成功?答:可以添加成功
本质和上一个其实是一样,添加王五这个对象到哈希表中,是通过王五和年龄18 hashcode方法计算出来得到的下标,和张三那个计算出来的下标当然不一样。所以可以添加成功。
3.问题3:set.add(new Student("张三",18))能不能添加成功?答:可以添加成功
因为虽然通过张三和18算出来的下标,与王五那个相同,这时就发生了哈希碰撞,会进行equals的比对,王五和张三并不同,所以添加成功。
2.LinkedHashMap
有序不可重复
有序:插入顺序有保障,放的什么顺序取出来就是什么顺序
3.TreeSet
不能存null
有序不可重复
有序:是可排序,实现方式与TreeMap相同,两种方式
十二.Collections工具类(操作集合的工具类)
1.collections.sort
专门针对List集合提供的排序方法。对于JDK内置的可以直接排序,如果是自定义类型的就得实现comparable接口,再用sorts排序。
当然还有sort的重载方法。就不用实现comparable接口了
相关文章:
【Java基础】——集合篇
目标: 1.每个集合用的场景 2.每个集合的底层 一.概述 二. 三.Collection 1.通用方法 其中,contains方法,它的底层一定调用了equals方法进行比对,而且一定重写了equals方法,如果不重写equals方法,就是调用…...
小红书视频无水印下载方法
下载小红书(RED/Xiaohongshu)视频并去除水印可以通过以下几种方法实现,但请注意尊重原创作者版权,下载内容仅限个人使用,避免侵权行为。 方法一:使用在线解析工具(推荐) 复制视频链…...
代发考试战报:思科华为HCIP HCSE CCNP 考试通过
CCNP 300-410考试通过战报,HCIP云计算通过,HCIP数通 H12-821考试通过,H12-831考试通过,HCSP金融 H19-611考试通过,HCSE金融 H21-293 考试通过 报名考试一定要找正规报名,避免后续考试成绩被取消࿰…...
辉芒微离线烧录器“文件格式错误”问题解决
最近在使用辉芒微离线烧录器烧录程序时,提示“文件格式错误”,记录一下解决方法。 一、问题现象 经过多次尝试和排查,发现以下几种情况: 情况一:使用离线烧录器导入固件1(boot程序),…...
系统的从零开始学习电子的相关知识,该如何规划?
一、基础理论奠基(6-12个月) 1.1 数学与物理基础 核心内容: 微积分与线性代数(高频电路建模必备)复变函数与概率论(信号处理与通信系统基础)电磁场基础(麦克斯韦方程组的物理意义&…...
网络研讨会开发注册中, 5月15日特励达力科,“了解以太网”
在线研讨会主题 Understanding Ethernet - from basics to testing & optimization 了解以太网 - 从基础知识到测试和优化 注册链接# https://register.gotowebinar.com/register/2823468241337063262 时间 北京时间 2025 年 5 月 15 日 星期四 下午 3:30 - 4:30 适宜…...
LSTM的简单模型
好的,我来用通俗易懂的语言解释一下这个 LSTMTagger 类是如何工作的。 1️⃣ 类的目的 这个 LSTMTagger 类是一个用于自然语言处理(NLP)任务的模型,目的是标注输入的句子,通常用于词性标注(例如ÿ…...
聊聊Spring AI autoconfigure模块的拆分
序 本文主要研究一下Spring AI autoconfigure模块的拆分 v1.0.0-M6版本 (base) ➜ spring-ai-spring-boot-autoconfigure git:(v1.0.0-M6) tree -L 9 . ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── org │ │ │ └…...
LVGL源码学习之渲染、更新过程(3)---绘制和刷写
LVGL版本:8.1 往期回顾: LVGL源码学习之渲染、更新过程(1)---标记和激活 LVGL源码学习之渲染、更新过程(2)---无效区域的处理 前文提到,在处理完无效区域后,会得到一个个需要重新绘制的对象,这些对象将在DRAW事件中…...
CTF-DAY11
[NSSRound#16 Basic]了解过PHP特性吗 题目: <?php error_reporting(0); highlight_file(__FILE__); include("rce.php"); $checker_1 FALSE; $checker_2 FALSE; $checker_3 FALSE; $checker_4 FALSE; $num $_GET[num]; if (preg_match("/…...
手动修改uart16550的FIFO深度?
参考:修改AXI UART D16550 FIFO深度的过程记录 - lmore - 博客园...
Unity按钮事件冒泡
今天unity写程序时,我做了一个透明按钮,没图片,只绑了点击事件,把子对象文字组件也删了,空留一个透明按钮,此时运行时点击按钮是没有反应的,网上的教程说必须指定target graphic(目标…...
基于Llama3的开发应用(一):Llama模型的简单部署
Llama模型的简单部署 0 前言1 环境准备1.1 硬件环境1.2 软件环境 2 Meta-Llama-3-8B-Instruct 模型简介2.1 Instruct含义2.2 模型下载 3 简单调用4 FastAPI 部署4.1 通过FastAPI简单部署4.2 测试 5 使用 streamlit 构建简易聊天界面6 总结 0 前言 本系列文章是基于Meta-Llama-…...
人工智能 机器学习期末考试题
自测试卷2 一、选择题 1.下面哪个属性不是NumPy中数组的属性( )。 A.ndim B.size C.shape D.add 2.一个简单的Series是由( )的数据组成的。 A.两…...
修改docker为国内源
一、编辑docker配置文件 vi /etc/docker/daemon.json二、配置国内源和修改docker数据目录 {"registry-mirrors":["http://hub-mirror.c.163.com","https://mirrors.tuna.tsinghua.edu.cn","http://mirrors.sohu.com","https://u…...
C++八股 —— vector底层
vector底层为动态数组 类构成 class vector : protected _Vector_base_Vector_base: _M_start:容器元素开始的位置_M_finish:容器元素结束的位置_M_end_of_storage:动态内存最后一个元素的下一个位置 构造函数 无参构造 根据性能优先规则&a…...
postgresql 参数wal_level
wal_level决定多少信息写入到 WAL 中。默认值是replica,它会写入足够的数据以支持WAL归档和复制,包括在后备服务器上运行只读查询。minimal会去掉除从崩溃或者立即关机中进行恢复所需的信息之外的所有记录。最后,logical会增加支持逻辑解码所…...
Lightweight App Alternatives
The tech industry’s business model thrives on constant churn: new features, fancier designs, and heavier apps — not because they’re essential, but because they keep consumers upgrading. Stripping your phone back to basics is an act of tech self-defense.…...
SpringAI--基于MySQL的持久化对话记忆实现
SpringAI–基于MySQL的持久化对话记忆实现 项目源码 对话记忆官方介绍 SpringAI目前提供了一些将对话保存到不同数据源中的实现,比如: InMemoryChatMemory 基于内存存储CassandraChatMemory 在Cassandra中带有过期时间的持久化存储。Neo4jChatMemory 在Neo4j中没…...
【教学类-34-12】20250509(通义万相)4*3蝴蝶拼图(圆形、三角、正方、半圆的凹凸小块+数字提示+参考图灰色)
背景介绍 制作了四款异形角拼图,初步实现效果 【教学类-34-10】20250503(通义万相)4*3蝴蝶拼图(圆形、三角、正方、半圆的凹凸小块+参考图灰色)-CSDN博客文章浏览阅读1.4k次,点赞46次,收藏15次。【教学类-34-10】20250503(通义万相)4*3蝴蝶拼图(圆形、三角、正方、…...
C++编程语言:标准库:标准库概观(Bjarne Stroustrup)
第30章 标准库概观(Standard-Library Overview) 目录 30.1 引言 30.1.1 标准库设施 30.1.2 设计约束 30.1.3 描述风格 30.2 头文件 30.3 语言支持 30.3.1 对initializer_list的支持 30.3.2 对范围for的支持 30.4 异常处理 30.4.1 异常 30.4.1…...
Springboot+Vue+Mybatis-plus-Maven-Mysql项目部署
目录 VScode 1插件 2快捷键修改 3图标主题设置 4常用设置1 5设置自动换行 6颜色主题 7创建站点 8新建一个html文件 window系统设置 ps 1取色 2测量 3修改单位为像素 4放大图片 5拖动放大之后的图片 6文字大小测量 7测量文字的行高 8矩形选框切图1 9矩形选框…...
【C/C++】C++中noexcept的妙用与性能提升
文章目录 C中noexcept的妙用与性能提升1 什么情况下会抛出异常2 标记noexcept作用3 何时使用noexcept4 无异常行为标记场景5 一句话总结 C中noexcept的妙用与性能提升 在C中,noexcept修饰符用于指示函数不会抛出异常 1 什么情况下会抛出异常 在 C 中,异…...
增强学习(Reinforcement Learning)简介
增强学习(Reinforcement Learning)简介 增强学习是机器学习的一种范式,其核心目标是让智能体(Agent)通过与环境的交互,基于试错机制和延迟奖励反馈,学习如何选择最优动作以最大化长期累积回报。…...
如何优化系统启动时间--基于米尔瑞萨MYD-YG2LX开发板
1.概述 MYD-YG2LX采用瑞萨RZ/G2L作为核心处理器,该处理器搭载双核Cortex-A551.2GHzCortex-M33200MHz处理器,其内部集成高性能3D加速引擎Mail-G31 GPU(500MHz)和视频处理单元(支持H.264硬件编解码),16位的DDR4-1600 / DDR3L-1333内…...
.Net HttpClient 概述
HttpClient 概述 作用 HttpClient是一个用于发送HTTP请求和接收HTTP响应的类。它提供了一种现代化、灵活和强大的方式来与Web服务进行通信。HttpClient类位于System.Net.Http命名空间下,可以通过NuGet包管理器进行安装。 整体理解 HttpClient是应用程序进程中&am…...
明远智睿SSD2351开发板:仪器仪表与智慧农业的创新利器
在仪器仪表和智慧农业领域,对设备的精度、稳定性和智能化程度有着较高的要求。明远智睿的SSD2351开发板以其独特的优势,成为这两个领域的创新利器。 在仪器仪表方面,SSD2351开发板的四核1.4GHz处理器能够快速处理仪器仪表采集到的各种数据&am…...
VBA -- 学习Day4
数组 创建数组: Dim 数组名(数组元素上下角标)[As 元素类型] eg. Dim MyArray (1 To 3) As Integer 注意:1.如果不指定元素类型,则是Variant类型 向数组赋值: eg. MyArray(1) 100 MyArray(2) 200…...
Nacos源码—7.Nacos升级gRPC分析四
大纲 5.服务变动时如何通知订阅的客户端 6.微服务实例信息如何同步集群节点 6.微服务实例信息如何同步集群节点 (1)服务端处理服务注册时会发布一个ClientChangedEvent事件 (2)ClientChangedEvent事件的处理源码 (3)集群节点处理数据同步请求的源码 (1)服务端处理服务注册…...
Linux 学习笔记2
Linux 学习笔记2 一、定时任务调度操作流程注意事项 二、磁盘分区与管理添加新硬盘流程磁盘管理命令 三、进程管理进程操作命令服务管理(Ubuntu) 四、注意事项 一、定时任务调度 操作流程 创建脚本 vim /path/to/script.sh # 编写脚本内容设置可执行权…...
一、每日Github软件分享----QuickGo外链直达工具
QuickGo 是一款专注于提升网页浏览效率的浏览器扩展工具,其核心功能是自动绕过网站的安全跳转限制,让用户点击外链时无需手动确认,直接跳转至目标页面。以下是详细功能介绍与分析: 一、核心功能与亮点 极速跳转 通过优化浏览器 AP…...
【软件测试】软件缺陷(Bug)的详细描述
目录 一、软件缺陷(Bug) 1.1 缺陷的判定标准 1.2 缺陷的生命周期 1.3 软件缺陷的描述 1.3.1 提交缺陷的要素 1.3.2 Bug 的级别 1.4 如何发现更多的 Bug? 1.5 缺陷的有效管理 1.5.1 缺陷的编写 1.5.2 缺陷管理工具 1.5.2.1 缺陷管理 1.5.2.2 用例管理 一、软件缺陷…...
C++ stl中的list的相关函数用法
文章目录 list的介绍list的使用定义方式 插入和删除迭代器的使用获取元素容器中元素个数和容量的控制其它操作函数 list的使用,首先要包含头文件 #include <list>list的介绍 1.list是一种可以在常数范围内在链表中的任意位置进行插入和删除的序列式容器&…...
Cmd命令大全,从入门到放弃
1、文件和目录操作 dir /p:分页显示目录内容。 dir /w:以单行显示目录内容。 dir /s:显示指定目录及子目录下的所有文件。 dir /b:仅显示文件和目录名称。 dir /a:显示具有特定属性的文件和目录。 cd /d:改变当前驱动器。 pushd:将当前目录压入堆栈,并切换到指定…...
数据同步选择推Push还是拉Pull
数据同步选择“推”(Push)还是“拉”(Pull”,要根据实际场景、系统架构和对实时性、资源消耗、安全性的需求来决定。下面是两种方式的对比分析,帮你更好地判断: 文章目录 推模式(Pushÿ…...
Kafka集群加入新Broker节点会发生什么
Kafka集群加入新Broker节点会发生什么 当向现有的Kafka集群添加新的Broker节点时,会触发一系列自动和手动的过程。以下是详细的流程和影响: 自动发生的流程 集群发现与注册 新Broker启动时会向ZooKeeper注册自己加入集群的/brokers/ids路径下其他Broke…...
【LeetCode Solutions】LeetCode 176 ~ 180 题解
CONTENTS LeetCode 176. 第二高的薪水(SQL 中等)LeetCode 177. 第 N 高的薪水(SQL 中等)LeetCode 178. 分数排名(SQL 中等)LeetCode 179. 最大数(中等)LeetCode 180. 连续出现的数字…...
Sourcetree安装使用的详细教程
Sourcetree 是由 Atlassian 推出的 免费 Git 图形化客户端,支持 Git 和 Mercurial 仓库管理,适用于 Windows 和 macOS。 一、安装教程 1. 下载 官网地址:Sourcetree | Free Git GUI for Mac and Windows 选择你的平台下载安装包࿰…...
对比学习入门
Yann Lecun在NIPS 2016上提出了著名的“蛋糕比喻”:如果智能是一个蛋糕,蛋糕上的大部分是无监督学习(unsupervised learning),蛋糕上的糖霜是监督学习(supervised learning),而蛋糕上…...
Starrocks 的 ShortCircuit短路径
背景 本文基于 Starrocks 3.3.5 本文主要来探索一下Starrocks在FE端怎么实现 短路径,从而加速点查查询速度。 在用户层级需要设置 enable_short_circuit 为true 分析 数据流: 直接到StatementPlanner.createQueryPlan方法: ... OptExpres…...
Windows远程访问Ubuntu的方法
要在Windows上远程访问Ubuntu系统,以下是几种常见的方法: SSH (Secure Shell):通过Windows命令行远程连接到Ubuntu。 在Ubuntu上,确保安装并启用了SSH服务(通常可以通过sudo apt update && sudo apt install openssh-serv…...
23种设计模式-行为型模式之模板方法模式(Java版本)
Java 模板方法模式(Template Method Pattern)详解 🧠 什么是模板方法模式? 模板方法模式是一种行为型设计模式,定义了一个操作中的算法骨架,将一些步骤的实现延迟到子类中。通过模板方法模式,…...
(undone) MIT6.S081 Lec17 VM for APP 学习笔记
url: https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/lec17-virtual-memory-for-applications-frans/17.1-ying-yong-cheng-xu-shi-yong-xu-ni-nei-cun-suo-xu-yao-de-te-xing 17.1 应用程序使用虚拟内存所需要的特性 今天的话题是用户应用程序使用的虚拟内存…...
值拷贝、浅拷贝和深拷贝
✅ 一、基本概念 1. 值拷贝(Value Copy) 含义:将一个变量的值完整复制到另一个变量中。 对象级别表现:调用的是拷贝构造函数(copy constructor)。 特点:对基本类型或不含动态资源的对象&…...
JWT原理及工作流程详解
JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在各方之间安全传输信息。其核心原理是通过结构化、签名或加密的JSON对象实现无状态身份验证和授权。以下是JWT的工作原理和关键组成部分: 1. JWT结构 J…...
广西某建筑用花岗岩矿自动化监测
1. 项目简介 某矿业有限公司成立于2021年,是由某建筑材料有限公司与个人共同出资成立,矿区面积0.4069平方公里,可开采筑用花岗岩、建筑用砂岩。建筑用花岗岩、建筑用砂岩可利用资源量分别为6338.69万吨、303.39万吨,设计生产规模…...
100个思维模型系列更新完毕!
giszz的粉丝们,到今天为止,思维模型专栏已经更新了100期,正式告一段落了。 以下是为你列出的100个思维模型名字(部分思维模型可能存在多种表述方式,但核心概念一致,这里尽量涵盖不同领域常见的思维模型&am…...
Bitcoin跨链协议Clementine的技术解析:重构DeFi生态的信任边界
2025年5月2日,比特币Rollup项目Citrea在测试网正式推出跨链协议Clementine,其基于BitVM2编程语言构建的信任最小化桥接技术,被视为解决比特币与DeFi生态融合难题的关键突破。本文从技术背景、核心机制、安全模型、应用场景四大维度࿰…...
北斗导航 | RTKLib中重难点技术,公式,代码
Rtklib 一、抗差自适应卡尔曼滤波1. **核心难点**2. **公式与代码实现**二、模糊度固定与LAMBDA算法1. **核心难点**2. **LAMBDA算法实现**3. **部分模糊度固定技术**三、伪距单点定位与误差修正1. **多系统多频点修正**2. **接收机钟差与系统间偏差**四、动态模型与周跳处理1.…...
C++学习之类和对象_1
1. 面向过程与面向对象 C语言是面向过程的,注重过程,通过调用函数解决问题。 比如做番茄炒蛋:买番茄和鸡蛋->洗番茄和打鸡蛋->先炒蛋->把蛋放碟子上->炒番茄->再把蛋倒回锅里->加调料->出锅 而C是面向对象的ÿ…...