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

JavaSE第十一天——集合框架Collection

一、List接口

List接口是一个有序的集合,允许元素有重复,它继承了Collection接口,提供了许多额外的功能,比如基于索引的插入、删除和访问元素等。

常见的List接口的实现类有ArrayListLinkedListVector

List接口的实现类

1、ArrayList

  • 底层基于数组实现,查询效率高,增删效率低(因为需要移动元素)。

  • 线程不安全,但性能较高。

  • 适用于需要频繁查询的场景。

2、LinkedList

  • 底层基于双向链表实现,查询效率低(需要从头或尾遍历),增删效率高。

  • 提供了额外的头尾操作方法,如addFirst(), addLast(), getFirst(), getLast(), removeFirst(), removeLast()等。

  • 线程不安全。

  • 适用于需要频繁增删的场景,尤其是首尾操作。

List接口的主要方法

  • void add(int index, E element): 在指定位置插入元素。

  • E get(int index): 返回指定位置的元素。

  • int indexOf(Object o): 返回此列表中指定元素的首次出现的索引,如果此列表不包含该元素,则返回-1。

  • int lastIndexOf(Object o): 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含该元素,则返回-1。

  • E remove(int index): 移除指定位置的元素。

  • boolean contains(Object o): 如果此列表包含指定的元素,则返回true

  • Iterator<E> iterator(): 返回在此列表中的元素上进行迭代的迭代器

 使用注意事项:

使用List集合时,要注意索引越界的问题,即不要访问或操作不存在的索引位置。

在多线程环境下,如果需要对List进行并发操作,需要考虑线程安全的问题,可以选择使用线程安全的实现类。

二、哈希表和Map接口

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构,

它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度

这个映射函数叫做散列函数,存放记录的数组叫做散列表。

  • 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址

  • 则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数

Map接口

在Java的集合框架中,Map接口是一种存储键值对(key-value pair)的数据结构;Map不允许出现重复的键(key),但允许多个键映射到相同的值(value)。

Map接口并不继承自Collection接口,而是与Collection接口并行存在,用于处理键值对映射数据;常见的Map接口实现类有HashMapLinkedHashMapTreeMap等。

Map接口的实现类

1、HashMap

  • 基于哈希表实现,允许null键和null值。

  • 不保证映射的顺序,特别是它不保证该顺序恒久不变。

  • 性能通常优于HashtableTreeMap

2、LinkedHashMap

  • 类似于HashMap,但遍历顺序是按照键值对插入到映射中的顺序(插入顺序)或最近最少使用(LRU)顺序。

  • 提供了按访问顺序(访问顺序)或插入顺序(插入顺序)遍历映射的方法。

3、TreeMap

  • 基于红黑树实现,能够按照键的自然顺序或自定义顺序进行排序。

  • 所有的元素都根据键的自然顺序(或创建TreeMap时提供的Comparator进行排序)。

  • 适用于需要有序遍历的场景。

Map接口的主要方法

  • V put(K key, V value): 将指定的值与此映射中的指定键关联(可选操作)。如果包含一个该键的映射关系,则旧值被替换。

  • V get(Object key): 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null

  • V remove(Object key): 如果存在一个键的映射关系,则从此映射中移除它(可选操作)。

  • boolean containsKey(Object key): 如果此映射包含指定键的映射关系,则返回true

  • boolean containsValue(Object value): 如果此映射将一个或多个键映射到指定值,则返回true

  • int size(): 返回此映射中的键-值映射关系的数量。

  • boolean isEmpty(): 如果此映射不包含键-值映射关系,则返回true

  • Set<K> keySet(): 返回此映射中包含的键的Set视图。

  • Collection<V> values(): 返回此映射中包含的值的Collection视图。

  • Set<Map.Entry<K,V>> entrySet(): 返回此映射中包含的映射关系的Set视图。(每个键值对都是一个 Map.Entry 实例,而 Map.Entry<K,V>Map 接口中的一个静态内部接口。

三、Set接口

Set接口是一个不包含重复元素的集合,它继承自Collection接口,包含了Collection接口的所有方法,如add(), remove(), contains(), size(), isEmpty()

Set集合主要用于存储无序且不重复的元素,不保证集合中元素的顺序,某些Set实现类可能会对元素进行排序)

Set接口的实现类

1、HashSet

  • 基于哈希表实现,不保证元素的迭代顺序,也不保证元素的顺序在长时间内保持不变。

  • 性能通常优于其他Set实现类,因为它提供了常数时间的添加、删除和查找操作。

2、LinkedHashSet

  • 类似于HashSet,但迭代顺序是元素插入到集合中的顺序(插入顺序)。

  • 在需要保持元素插入顺序的场景中很有用。

3、TreeSet

  • 基于红黑树实现,能够对元素进行自然排序或根据创建TreeSet时提供的Comparator进行排序。

  • 适用于需要有序集合的场景。

Set接口的主要方法

  • boolean add(E e): 如果此集合尚未包含指定元素,则添加指定元素。
  • boolean addAll(Collection<? extends E> c): 如果指定集合中的所有元素都尚未添加到此集合中
  • boolean contains(Object o): 如果此集合包含指定的元素,则返回true
  • boolean containsAll(Collection<?> c): 如果此集合包含指定集合中的所有元素,则返回true
  • boolean removeAll(Collection<?> c): 移除此集合中那些也包含在指定集合中的所有元素(可选操作)。
  • boolean retainAll(Collection<?> c): 仅保留此集合中也包含在指定集合中的元素(可选操作)。

注意事项:

1、在使用Set集合时,要注意集合中元素的唯一性,不要添加重复的元素。

2、如果需要在集合中保持元素的插入顺序或进行排序,请选择适当的Set实现类(如LinkedHashSetTreeSet)。

3、在多线程环境下使用Set集合时,需要考虑线程安全的问题。

4、如果需要线程安全的Set集合,可以使用Collections.synchronizedSet()方法

 四、迭代器 Iterator

容器里面很多元素,如果需要遍历里面的元素,应该怎么操作?我们可以使用循环遍历集合:普通for循环 和 增强for循环,也可以使用Iterator来遍历。

Iterator是java中的一个接口,核心作用就是用来遍历容器的元素,当容器实现了Iterator接口后,可以通过调用容器里面的Iterator()方法获取一个 Iterator对象;迭代器本身并不属于集合结构的一部分,而是用于遍历集合的工具。

那为啥是调用容器里面的Iterator方法呢?因为容器的实现有多种,不同的容器遍历规则不一样,比如ArrayList/LinkedList/HashSet/TreeSet等,为了能够顺序地访问一个集合(Collection)的元素,而又不需要知道该集合的底层表示。所以设计了Iterator接口,让容器本身去实现这个接口,实现里面的方法,从而让开发人员不用关系容器的遍历机制,直接使用对应的方法即可。

三个核心方法

  • boolean hashNext() :用于判断iterator内是否有下个元素,如果有则返回true,没有则false

  • Obejct next():返回iterator的下一个元素,同时指针也会向后移动1位

  • void remove():删除指针的上一个元素(容易出问题,删除元素不建议使用容器自己的方法)

使用迭代器的步骤

1、获取迭代器对象 

  • 通过调用集合的iterator()方法,我们可以获取到该集合的迭代器对象。

  • ElementType 是集合中元素的类型,collection 是需要遍历的集合对象。

Iterator<ElementType> iterator = collection.iterator();

2、判断迭代器中是否还有元素

  • 使用iterator.hasNext()方法来判断迭代器中是否还有下一个元素

while (iterator.hasNext()) {  // 迭代器中还有元素  
}

3、访问集合中的元素

  • 使用iterator.next()方法来获取迭代器中的下一个元素。

  • 在调用next()方法之前,必须确保迭代器中还有元素,否则会抛出NoSuchElementException异常

ElementType element = iterator.next();

4、安全地遍历集合

  • 在遍历集合的过程中,如果需要删除某个元素,应该使用迭代器的remove()方法,而不是集合的remove()方法

  • 直接使用集合的remove()方法会导致在并发修改集合的情况下抛出ConcurrentModificationException异常。

if (someCondition) {  iterator.remove(); // 删除当前元素  
}

注意:迭代器遍历集合时,只能单向遍历,无法从后往前遍历。

相关文章:

JavaSE第十一天——集合框架Collection

一、List接口 List接口是一个有序的集合&#xff0c;允许元素有重复&#xff0c;它继承了Collection接口&#xff0c;提供了许多额外的功能&#xff0c;比如基于索引的插入、删除和访问元素等。 常见的List接口的实现类有ArrayList、LinkedList和Vector。 List接口的实现类 …...

Three城市引擎地图插件Geo-3d

一、简介 基于Three开发&#xff0c;为Three 3D场景提供GIS能力和城市底座渲染能力。支持Web墨卡托、WGS84、GCJ02等坐标系&#xff0c;支持坐标转换&#xff0c;支持影像、地形、geojson建筑、道路&#xff0c;植被等渲染。支持自定义主题。 二、效果 三、代码 //插件初始化…...

深度学习|表示学习|卷积神经网络|详细推导每一层的维度变化|14

如是我闻&#xff1a; 一个经典的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;呈现的是输入图像通过多个卷积层、池化层以及全连接层&#xff0c;最终输出分类结果的过程。整个过程的核心是理解输入特征图的尺寸如何在每一层发生变化&#xff0c;我们可以通过卷积…...

多级缓存(亿级并发解决方案)

多级缓存&#xff08;亿级流量&#xff08;并发&#xff09;的缓存方案&#xff09; 传统缓存的问题 传统缓存是请求到达tomcat后&#xff0c;先查询redis&#xff0c;如果未命中则查询数据库&#xff0c;问题如下&#xff1a; &#xff08;1&#xff09;请求要经过tomcat处…...

BOM对象location与数组操作结合——查询串提取案例

BOM对象location与数组操作结合——查询串提取案例 前置知识 1. Location 对象 Location 对象是 JavaScript 提供的内置对象之一&#xff0c;它表示当前窗口或框架的 URL&#xff0c;并允许你通过它操作或获取 URL 的信息。可以通过 window.location 访问。 主要属性&#…...

读书笔记--分布式服务架构对比及优势

本篇是在上一篇的基础上&#xff0c;主要对共享服务平台建设所依赖的分布式服务架构进行学习&#xff0c;主要记录和思考如下&#xff0c;供大家学习参考。随着企业各业务数字化转型工作的推进&#xff0c;之前在传统的单一系统&#xff08;或单体应用&#xff09;模式中&#…...

GOGOGO 枚举

含义&#xff1a;一种类似于类的一种结构 作用&#xff1a;是Java提供的一个数据类型&#xff0c;可以设置值是固定的 【当某一个数据类型受自身限制的时候&#xff0c;使用枚举】 语法格式&#xff1a; public enum 枚举名{…… }有哪些成员&#xff1f; A、对象 public …...

【Linux】Linux基础开发工具

1 Linux 软件包管理器 yum 1.1软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的…...

嵌入式C语言:结构体的多态性之结构体中的void*万能指针

目录 一、void*指针在结构体中的应用 二、实现方式 2.1. 定义通用结构体 2.2. 定义具体结构体 2.3. 初始化和使用 三、应用场景 3.1. 内存管理函数 3.2. 泛型数据结构&#xff08;链表&#xff09; 3.3. 回调函数和函数指针 3.4. 跨语言调用或API接口&#xff08;模拟…...

重构进行时:一秒告别 !=null 判空

重构进行时&#xff1a;一秒告别 !null 判空 空指针异常&#xff08;NullPointerException&#xff09;是Java开发中常见的错误之一。 许多开发者在遇到空指针问题时&#xff0c;往往会习惯性地使用! null来进行判断。 然而&#xff0c;当代码中频繁出现这种判断时&#xff…...

React 中hooks之useSyncExternalStore使用总结

1. 基本概念 useSyncExternalStore 是 React 18 引入的一个 Hook&#xff0c;用于订阅外部数据源&#xff0c;确保在并发渲染下数据的一致性。它主要用于&#xff1a; 订阅浏览器 API&#xff08;如 window.width&#xff09;订阅第三方状态管理库订阅任何外部数据源 1.1 基…...

Semaphore 与 线程池 Executor 有什么区别?

前言&#xff1a;笔者在看Semaphone时 突然脑子宕机&#xff0c;啥啥分不清 Semaphore 和 Executor 的作用&#xff0c;故再次记录。 一、什么是Semaphore&#xff1f; Semaphore 是 Java 并发编程&#xff08;JUC&#xff09;中一个重要的同步工具&#xff0c;它的作用是 控…...

Rust:高性能与安全并行的编程语言

引言 在现代编程世界里&#xff0c;开发者面临的最大挑战之一就是如何平衡性能与安全性。在许多情况下&#xff0c;C/C这样的系统级编程语言虽然性能强大&#xff0c;但其内存管理的复杂性导致了各种安全漏洞。为了解决这些问题&#xff0c;Rust 作为一种新的系统级编程语言进入…...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(六)(完结)

Understanding Diffusion Models: A Unified Perspective&#xff08;六&#xff09;&#xff08;完结&#xff09; 文章概括指导&#xff08;Guidance&#xff09;分类器指导无分类器引导&#xff08;Classifier-Free Guidance&#xff09; 总结 文章概括 引用&#xff1a; …...

Redis --- 分布式锁的使用

我们在上篇博客高并发处理 --- 超卖问题一人一单解决方案讲述了两种锁解决业务的使用方法&#xff0c;但是这样不能让锁跨JVM也就是跨进程去使用&#xff0c;只能适用在单体项目中如下图&#xff1a; 为了解决这种场景&#xff0c;我们就需要用一个锁监视器对全部集群进行监视…...

电脑怎么格式化?格式化详细步骤

格式化是我们在日常使用电脑时可能会用到的一种操作&#xff0c;无论是清理磁盘空间、安装新系统&#xff0c;还是解决磁盘读写错误&#xff0c;都可能需要格式化。不过&#xff0c;对于一些不熟悉电脑操作的用户来说&#xff0c;格式化听起来可能有些复杂。其实&#xff0c;只…...

TikTok广告投放优化策略:提升ROI的核心技巧

在短许多品牌和商家纷纷投入广告营销&#xff0c;争夺这片潜力巨大的市场。然而&#xff0c;在激烈的竞争环境中&#xff0c;如何精准有效地投放广告&#xff0c;优化广告效果&#xff0c;实现更高的投资回报率&#xff08;ROI&#xff09;成为了广告主关注的核心。 一. 精准受…...

视觉语言模型 (VLMs):跨模态智能的探索

文章目录 一. VLMs 的重要性与挑战&#xff1a;连接视觉与语言的桥梁 &#x1f309;二. VLMs 的核心训练范式&#xff1a;四种主流策略 &#x1f5fa;️1. 对比训练 (Contrastive Training)&#xff1a;拉近正例&#xff0c;推远负例 ⚖️2. 掩码方法 (Masking)&#xff1a;重构…...

第05章 08 绘制脑部体绘制图的阈值等值面

绘制脑部体绘制图的阈值等值面&#xff0c;例如肌肉和头骨骼&#xff0c;需要对医学图像数据进行阈值处理&#xff0c;并使用体绘制技术来可视化这些结构。以下是一个基于VTK/C的示例代码&#xff0c;展示如何读取DICOM图像数据&#xff0c;应用阈值过滤器来提取特定组织&#…...

类和对象(4)——多态:方法重写与动态绑定、向上转型和向下转型、多态的实现条件

目录 1. 向上转型和向下转型 1.1 向上转型 1.2 向下转型 1.3 instanceof关键字 2. 重写&#xff08;overidde&#xff09; 2.1 方法重写的规则 2.1.1 基础规则 2.1.2 深层规则 2.2 三种不能重写的方法 final修饰 private修饰 static修饰 3. 动态绑定 3.1 动态绑…...

动态规划<九>两个数组的dp

目录 引例 LeetCode经典OJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 引例 OJ传送门LeetCode<1143>最长公共子序列 画图分析&#xff1a; 使用动态规划解决 1.状态表示 ------经验题目要求 经验为选取第一个字符串的[0,i]区间以及第二个字…...

Go:基于Go实现一个压测工具

文章目录 写在前面整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理 客户端模块Http客户端处理Grpc客户端处理Websocket客户端处理 连接处理模块GrpcHttp 统计数据模块统计原理实现过程 写在前面 本篇主要是基于Go来实现一个压测的工具&#xff0c;关于压测的内…...

2025年数学建模美赛 A题分析(2)楼梯使用频率数学模型

2025年数学建模美赛 A题分析&#xff08;1&#xff09;Testing Time: The Constant Wear On Stairs 2025年数学建模美赛 A题分析&#xff08;2&#xff09;楼梯磨损分析模型 2025年数学建模美赛 A题分析&#xff08;3&#xff09;楼梯使用方向偏好模型 2025年数学建模美赛 A题分…...

在Ubuntu上用Llama Factory命令行微调Qwen2.5的简单过程

半年多之前写过一个教程&#xff1a;在Windows上用Llama Factory微调Llama 3的基本操作_llama-factory windows-CSDN博客 如果用命令行做的话&#xff0c;前面的步骤可以参考上面这个博客。安装好环境后&#xff0c; 用自我认知数据集微调Lora模块&#xff1a;data/identity.j…...

虹科分享 | 汽车NVH小课堂之听音辨故障

随着车主开始关注汽车抖动异响问题&#xff0c;如何根据故障现象快速诊断异响来源&#xff0c;成了汽修人的必修课。 一个比较常用的方法就是靠“听”——“听音辨故障”。那今天&#xff0c;虹科Pico也整理了几个不同类型的异响声音&#xff0c;一起来听听看你能答对几个吧 汽…...

RoboVLM——通用机器人策略的VLA设计哲学:如何选择骨干网络、如何构建VLA架构、何时添加跨本体数据

前言 本博客内解读不少VLA模型了&#xff0c;包括π0等&#xff0c;且如此文的开头所说 前两天又重点看了下openvla&#xff0c;和cogact&#xff0c;发现 目前cogACT把openvla的动作预测换成了dit&#xff0c;在模型架构层面上&#xff0c;逼近了π0​那为了进一步逼近&#…...

【SpringBoot教程】Spring Boot + MySQL + HikariCP 连接池整合教程

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 在前面一篇文章中毛毛张介绍了SpringBoot中数据源与数据库连接池相关概念&#xff0c;今天毛毛张要分享的是关于SpringBoot整合HicariCP连接池相关知识点以及底层源码…...

0.91英寸OLED显示屏一种具有小尺寸、高分辨率、低功耗特性的显示器件

0.91英寸OLED显示屏是一种具有小尺寸、高分辨率、低功耗特性的显示器件。以下是对0.91英寸OLED显示屏的详细介绍&#xff1a; 一、基本参数 尺寸&#xff1a;0.91英寸分辨率&#xff1a;通常为128x32像素&#xff0c;意味着显示屏上有128列和32行的像素点&#xff0c;总共409…...

【insert函数】

在 C 中&#xff0c;std::string::insert 是一个功能强大的成员函数&#xff0c;用于在字符串的指定位置插入内容。它有多个重载版本&#xff0c;支持插入 字符、字符串、子字符串 等。以下是 insert 所有相关函数的详细介绍&#xff1a; 1. 插入字符串 函数签名&#xff1a; …...

Python 如何进行文本匹配:difflib| python 小知识

Python 如何进行文本匹配&#xff1a;difflib| python 小知识 difflib是Python标准库中的一个工具&#xff0c;用于比较和处理文本差异。它提供了一组用于比较和处理文本差异的功能&#xff0c;可以用于比较字符串、文件等。本文将详细介绍difflib模块的用法和实现细节&#x…...

MySQL误删数据怎么办?

文章目录 1. 从备份恢复数据2. 通过二进制日志恢复数据3. 使用数据恢复工具4. 利用事务回滚恢复数据5. 预防误删数据的策略总结 在使用MySQL进行数据管理时&#xff0c;误删数据是一个常见且具有高风险的操作。无论是因为操作失误、系统故障&#xff0c;还是不小心执行了删除命…...

可以称之为“yyds”的物联网开源框架有哪几个?

有了物联网的发展&#xff0c;我们的生活似乎也变得更加“鲜活”、有趣、便捷&#xff0c;包具有科技感的。在物联网&#xff08;IoT&#xff09;领域中&#xff0c;也有许多优秀的开源框架支持设备连接、数据处理、云服务等&#xff0c;成为被用户们广泛认可的存在。以下给大家…...

为AI聊天工具添加一个知识系统 之74 详细设计之15 正则表达式 之2

本文要点 要点 本项目&#xff08;为AI聊天工具添加一个知识系统&#xff09;中的正则表达式。 正则表达式的三“比”。正则表达式被 一、排比为三种符号&#xff08;元符号-圈号&#xff0c;特殊符号-引号&#xff0c;普通符号-括号&#xff09; 引号<<a线性回归bo…...

Java 注解与元数据

Java学习资料 Java学习资料 Java学习资料 一、引言 在 Java 编程中&#xff0c;注解&#xff08;Annotation&#xff09;和元数据&#xff08;Metadata&#xff09;是两个重要的概念。注解为程序提供了一种在代码中嵌入额外信息的方式&#xff0c;这些额外信息就是元数据。元…...

【橘子Kibana】Kibana的分析能力Analytics简易分析

一、kibana是啥&#xff0c;能干嘛 我们经常会用es来实现一些关于检索&#xff0c;关于分析的业务。但是es本身并没有UI,我们只能通过调用api来完成一些能力。而kibana就是他的一个外置UI&#xff0c;你完全可以这么理解。 当我们进入kibana的主页的时候你可以看到这样的布局。…...

度小满前端面试题及参考答案

<form>标签使用过哪些 tag? <form>标签中常使用的标签有很多。 <input>:这是最常用的标签之一,用于创建各种类型的输入字段,如文本框、密码框、单选按钮、复选框、文件上传框等。通过设置type属性来指定输入类型,例如type="text"创建文本输入…...

Padas进行MongoDB数据库CRUD

在数据处理的领域,MongoDB作为一款NoSQL数据库,以其灵活的文档存储结构和高扩展性广泛应用于大规模数据处理场景。Pandas作为Python的核心数据处理库,能够高效处理结构化数据。在MongoDB中,数据以JSON格式存储,这与Pandas的DataFrame结构可以很方便地互相转换。通过这篇教…...

LQ1052 Fibonacci斐波那契数列

题目描述 Fibonacci斐波那契数列也称为兔子数列&#xff0c;它的递推公式为&#xff1a;FnFn-1Fn-2&#xff0c;其中F1F21。 当n比较大时&#xff0c;Fn也非常大&#xff0c;现在小蓝想知道&#xff0c;Fn除以10007的余数是多少&#xff0c;请你编程告诉她。 输入 输入包含一…...

华硕笔记本装win10哪个版本好用分析_华硕笔记本装win10专业版图文教程

华硕笔记本装win10哪个版本好用&#xff1f;华硕笔记本还是建议安装win10专业版。Win分为多个版本&#xff0c;其中家庭版&#xff08;Home&#xff09;和专业版&#xff08;Pro&#xff09;是用户选择最多的两个版本。win10专业版在功能以及安全性方面有着明显的优势&#xff…...

编译器gcc/g++ --【Linux基础开发工具】

文章目录 一、背景知识二、gcc编译选项1、预处理(进行宏替换)2、编译&#xff08;生成汇编&#xff09;3、汇编&#xff08;生成机器可识别代码&#xff09;4、链接&#xff08;生成可执行文件或库文件&#xff09; 三、动态链接和静态链接四、静态库和动态库1、动静态库2、编译…...

八股文 (一)

文章目录 项目地址一、前端1.1 大文件上传,预览1.2 首页性能优化1.2 流量染色,灰度发布1.3 Websock心跳机制,大数据实时数据优化1.4 Gpu 加速 fps优化1.5 echarts包大小优化和组件封装1.6 前端监控系统1.7 超大虚拟列表卡顿1. 实现2. 相关问题(1) 什么是虚拟化列表,为什么要…...

c语言无符号的变量不能和有符号的直接比较,或者使用移项解决符号问题

使用移项解决问题&#xff0c;简单来说就是无符号运行不要有减号&#xff0c;使用移项后的加号代替 if(uEventDirLimitSize > uEventAndNormalDirSize) {if((uEventDirLimitSize - uEventAndNormalDirSize) > pStConfig->stParam.stUserParam.uEventRemain){return O…...

安卓日常问题杂谈(一)

背景 关于安卓开发中&#xff0c;有很多奇奇怪怪的问题&#xff0c;有时候这个控件闪一下&#xff0c;有时候这个页面移动一下&#xff0c;这些对于快速开发中&#xff0c;去查询&#xff0c;都是很耗费时间的&#xff0c;因此&#xff0c;本系列文章&#xff0c;旨在记录安卓…...

电力晶体管(GTR)全控性器件

电力晶体管&#xff08;Giant Transistor&#xff0c;GTR&#xff09;是一种全控性器件&#xff0c;以下是关于它的详细介绍&#xff1a;&#xff08;模电普通晶体管三极管进行对比学习&#xff09; 基本概念 GTR是一种耐高电压、大电流的双极结型晶体管&#xff08;BJT&am…...

【美】Day 1 CPT申请步骤及信息获取指南(Day1 CPT)

参考文章&#xff1a;【美】境外申请Day 1 CPT完整流程&#xff08;境外Day 1 CPT&#xff09; 文章目录 **一、申请前准备&#xff1a;了解Day 1 CPT基本要求****二、选择Day 1 CPT学校****1. 搜索学校****2. 筛选标准** **三、申请流程****1. 提交学校申请****2. 转SEVIS记录…...

梯度下降优化算法-动量法

1. 动量法的数学原理 1.1 标准梯度下降回顾 在标准梯度下降中&#xff0c;参数的更新公式为&#xff1a; θ t 1 θ t − η ⋅ ∇ θ J ( θ t ) \theta_{t1} \theta_t - \eta \cdot \nabla_\theta J(\theta_t) θt1​θt​−η⋅∇θ​J(θt​) 其中&#xff1a; θ t …...

游戏引擎介绍:Game Engine

简介 定义&#xff1a;软件框架&#xff0c;一系列为开发游戏的工具的集合 可协作创意生产工具&#xff0c;复杂性艺术&#xff0c;注重realtime实时 目的 为艺术家&#xff0c;设计师&#xff0c;程序员设计工具链 游戏引擎开发参考书 推荐&#xff1a;Game Engine Archite…...

zookeeper-3.8.3-基于ACL的访问控制

ZooKeeper基于ACL的访问控制 ZooKeeper 用ACL控制对znode的访问&#xff0c;类似UNIX文件权限&#xff0c;但无znode所有者概念&#xff0c;ACL指定ID及对应权限&#xff0c;且仅作用于特定znode&#xff0c;不递归。 ZooKeeper支持可插拔认证方案&#xff0c;ID格式为scheme…...

ResNeSt: Split-Attention Networks 参考论文

参考文献 [1] Tensorflow Efficientnet. https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet. Accessed: 2020-03-04. 中文翻译&#xff1a;[1] TensorFlow EfficientNet. https://github.com/tensorflow/tpu/tree/master/models/official/efficien…...

正反转电路梯形图

1、正转联锁控制。按下正转按钮SB1→梯形图程序中的正转触点X000闭合→线圈Y000得电→Y000自锁触点闭合&#xff0c;Y000联锁触点断开&#xff0c;Y0端子与COM端子间的内部硬触点闭合→Y000自锁触点闭合&#xff0c;使线圈Y000在X000触点断开后仍可得电。 Y000联锁触点断开&…...