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

实现List接口的ArrayList和LinkedList

package study;import java.util.*;public class day01_list {public static void main(String[] args) {// <Integer> 这个尖括号表示的是 Java 的泛型(Generics)// 泛型是 Java 5 引入的一项特性,它允许你在 类、接口和方法 中使用类型参数,从而使代码更具通用性和类型安全性// List 是一个接口,代表一个有序的集合,其中可以包含重复的元素// <Integer> 是泛型参数,指定这个列表只能存储Integer类型的对象/*ArrayList是List接口的一个具体实现类,使用动态数组来存储元素不能使用new List<>(),因为List是一个接口,不能直接实例化,接口只是定义了一组方法,没有具体实现必须实例化一个 List 接口的实现类,比如 ArrayList、LinkedList钻石操作符 <> 是 Java 7 引入的一个简化语法,用于推断泛型参数类型。在右边使用 new ArrayList<>() 时,编译器会自动推断出这个 ArrayList 的类型参数是 Integer,因为左边明确指定了 List<Integer>*//*List 是一个接口,而 ArrayList 是这个接口的一个具体实现类。在编写代码时,使用接口类型来声明变量,而用具体的实现类来实例化对象,这是面向对象编程中的一种最佳实践,称为“接口和实现分离”。多态性:通过使用接口类型,你可以利用多态性来处理对象。例如,你可以编写一个方法,它接收 List 类型的参数,这样这个方法就可以处理任何 List 的实现类(如 ArrayList、LinkedList、Vector 等)public void processList(List<Integer> list) {for (Integer number : list) {System.out.println(number);}}虽然 List 是一个接口,但在 Java 中,接口类型的变量可以引用任何实现这个接口的对象。这是因为接口定义了一组方法,而实现类提供了这些方法的具体实现。*/// 多态性List<Integer> arrayList = new ArrayList<>();List<Integer> linkedList = new LinkedList<>();processList(arrayList);processList(linkedList);/*使用接口类型声明变量的限制当你使用接口类型(例如 List)声明一个变量时,你只能调用接口中定义的方法然而,如果你需要调用实现类特有的方法,例如 ArrayList 的 ensureCapacity 方法,你就不能直接通过 List 类型的引用来调用。以下代码是非法的:*/List<Integer> list = new ArrayList<>();list.add(1);list.add(2);System.out.println(list.size()); // 这行代码是合法的,因为 add 和 size 是 List 接口中的方法// list.ensureCapacity(100); // 编译错误,因为 List 接口中没有 ensureCapacity 方法}public static void processList(List<Integer> list) {for (Integer number : list) {System.out.println(number);}}
}interface Animal {void eat();
}interface jiekou {void t();
}// 一个类只能继承一个父类(单继承),但可以实现多个接口(多实现)
// 一个接口可以继承多个其他接口(多继承)
interface Dog extends Animal, jiekou {}class ArrayList_use {/*Iterable<E> (接口)↑Collection<E> (接口) - 继承自 Iterable<E>↑List<E> (接口) - 继承自 Collection<E>↑AbstractCollection<E> (抽象类) - 部分实现 Collection<E>↑AbstractList<E> (抽象类) - 继承自 AbstractCollection 部分实现 List<E>↑ArrayList<E> (类) - 继承自 AbstractList<E> 并实现 List<E> 和 Collection<E>ArrayList 类除了实现 List 接口的方法外,还提供了一些独有的方法。这些方法在 List<> list 中无法直接使用:clone(): ...trimToSize(): 调整 ArrayList 的容量大小,使其等于当前列表的大小,减少内存使用。ensureCapacity(int minCapacity): 增加 ArrayList 的容量,确保它至少可以容纳指定数量的元素。*/// 数组可以包含基本数据类型和引用类型,ArrayList只能包含引用类型// 数组的大小在定义后不可以调整大小。ArrayList是基于动态数组实现的,可以通过内部扩容自动调整容量public static void main(String[] args) {// 三种构造方法List<Integer> list0 = new ArrayList<>(); // 构造一个初始容量为 10 的空列表list0.add(1);System.out.println(list0.size());List<Integer> list1 = new ArrayList<>(0); // 直接指定初始大小list1.add(1);System.out.println(list1.size());List<Integer> existingList = Arrays.asList(1, 2, 3);  // 返回一个ArrayList对象List<Integer> list2 = new ArrayList<>(existingList);  // 使用现成的list来构建System.out.println(list2.size());Set<Integer> existingSet = new HashSet<>(Arrays.asList(1, 2, 3, 4));List<Integer> list3 = new ArrayList<>(existingSet);  // 使用现成的set来构建System.out.println(list3.size());// 尾插数据时速度是o(1)// 非尾插数据,会涉及元素的移动,在添加元素时会涉及到扩容的问题。// 超出初始长度时,会创建新的数组,将原数组数据赋值到新数组中。扩容:原来数组的大小+原来数组的一半(1.5倍)// ArrayList 是线程不安全的:// 线程不安全表示当多个线程同时访问一个对象时,如果没有适当的同步机制,可能会导致数据不一致或其他错误。// 在 ArrayList 中,多个线程同时修改列表可能会导致未定义的行为,包括但不限于数据丢失、重复或异常// 1. addList<String> list4 = new ArrayList<>(Arrays.asList("A", "B", "C"));list4.add("D");System.out.println(list4);list4.add(1, "X");System.out.println(list4);// 2. addAllList<String> temp = Arrays.asList("A", "B", "C");list4.addAll(temp);System.out.println(list4);list4.addAll(1, temp);System.out.println(list4);// 3. forEachlist4.forEach(System.out::println);// 4. clearlist4.clear();System.out.println(list4);// 5. clone// clone() 方法是 ArrayList 类特有的方法,而不是 List 接口的方法。// 因此,如果你需要克隆一个 ArrayList,你需要确保你的变量类型是 ArrayList 而不是 List。ArrayList<String> existingListTempClone = new ArrayList<>(Arrays.asList("A", "C"));ArrayList<String> clonedArrayList = (ArrayList<String>) existingListTempClone.clone();List<String> cloneList = (List<String>) existingListTempClone.clone();// 修改克隆list的对象看看会不会对原来造成影响// 6. setcloneList.set(0, "xiugai");// 7. getSystem.out.println(cloneList.get(0));System.out.println(existingListTempClone.get(0));// 8.containsSystem.out.println(cloneList.contains("xiugai"));// 9. containsAllList<String> containsList0 = new ArrayList<>(Arrays.asList("xiugai", "C"));List<String> containsList1 = new ArrayList<>(Arrays.asList("xiugai", "X"));System.out.println(cloneList.containsAll(containsList0));System.out.println(cloneList.containsAll(containsList1));// 10. indexOfList<Integer> indexOfList = new ArrayList<>(Arrays.asList(1, 2, 3));System.out.println(indexOfList.indexOf(2));// 11. removeAllList<Integer> removeList = new ArrayList<>(Arrays.asList(2, 3, 2));indexOfList.removeAll(removeList);// 12. removeList<Integer> removeList1 = new ArrayList<>(Arrays.asList(1, 2, 3));removeList1.remove(0);removeList1.remove(Integer.valueOf(2));  // Integer.valueOf(2) 将整数 2 包装为 Integer 对象System.out.println(removeList1);// 13. size// 14. isEmpty// 15. subList// 16. toArray// 17. toString// 18. lastIndexOfList<Double> doubleList = new ArrayList<>(Arrays.asList(1.0, 5.0, 2.0, 2.0));System.out.println(doubleList.size());System.out.println(doubleList.isEmpty());System.out.println(doubleList.subList(1, 2));System.out.println(doubleList.toArray()[2]);System.out.println(doubleList.toString());System.out.println(doubleList.lastIndexOf(Double.valueOf(2.0)));}
}class LinkedList_use {/*Iterable<E> (接口)↑Collection<E> (接口) - 继承自 Iterable<E>↑List<E> (接口) - 继承自 Collection<E>↑AbstractCollection<E> (抽象类) - 部分实现 Collection<E>↑AbstractList<E> (抽象类) - 继承自 AbstractCollection 部分实现 List<E>↑AbstractSequentialList<E> (抽象类) - 继承自 AbstractList<E>↑LinkedList<E> (类) - 继承自 AbstractSequentialList<E> 并实现 List<E>, Deque<E>, Queue<E>, Collection<E>Iterable<E> (接口)↑Collection<E> (接口) - 继承自 Iterable<E>↑Queue<E> (接口) - 继承自 Collection<E>↑Deque<E> (接口) - 继承自 Queue<E>  Double Ended QueueLinkedList 类除了实现 List 接口的方法外,还实现了 Deque 接口,因此提供了一些双端队列(Deque)和队列(Queue)的特有方法。这些方法在 List<> list 中无法直接使用:void addFirst(E e)void addLast(E e)boolean offerFirst(E e)  // 头部插入元素,返回是否成功,成功为 true,失败为 falseboolean offerLast(E e)E removeFirst()E removeLast()E pollFirst()  // 检索并删除此列表的第一个元素,如果此列表为空则返回nullE pollLast()E getFirst()E getLast()E peekFirst()  // 返回头部元素,不删除E peekLast()LinkedList也是多线程环境下不安全*/LinkedList<Integer> list = new LinkedList<>();}/*** ArrayList和LinkedList** 数据结构* ArrayList底层是动态数组,在空间中是一段连续的内存* LinkedList底层是链表,内存不连续,对内存要求低。** 空间利用:* ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间* LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间** 尾插数据:对ArrayList和LinkedList而言,在列表末尾增加一个元素时间复杂度都是 o(1)。* 对ArrayList来说,尾插速度非常快,但是会涉及到一个扩容的问题,会进行大量的复制操作。* 而对LinkedList而言,使用了链表结构,不需要维护大小,但是他每次添加需要新建entry对象,进行赋值操作。* 总得来说如果不涉及到扩容的问题,ArrayList的尾插会更快一些。** 非尾插:* 在ArrayList的中间插入或删除一个元素会导致列表中剩余的元素都会被移动,因此效率较低,插入位置越靠前,需要复制调整的元素也越多,效率也就越慢。* LinkedList的非尾插,首先要通过循环找到需要插入的位置。如果此位置处于前半段,则从前往后找;若其位置处于后半段,则从后往前找。所以在靠前和靠后的位置插入非常高效,但是在拥有大量元素的情况下,在链表的中间插入元素效率很低。(首尾复杂度为o(1),其余为o(n),整体来说还是o(n))** 当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会有更好的性能。* 当操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。*/
class TestArrayListAndLinkedList {public static void main(String[] args) {List<String> arraylist = new ArrayList<>();int listSize = 100;for(int i=0; i<listSize; i++){arraylist.add("初始数据");}System.out.println("ArrayList插数据用时:" + insert(arraylist));List<String> linkedList = new LinkedList<>();for(int i=0; i<listSize; i++){linkedList.add("初始数据");}System.out.println("LinkedList插数据用时:" + insert(linkedList));}// index=10插入:// ArrayList数据用时:3// LinkedList数据用时:0// list.size()/2插入// ArrayList插数据用时:4// LinkedList插数据用时:1// list.size()-10// ArrayList插数据用时:4// LinkedList插数据用时:2// 尾插:// ArrayList插数据用时:3//LinkedList插数据用时:0//插入数据,分别在头部、中间、尾部(四种插入位置:10、list.size()/2、list.size()-10、尾插)public static Long insert(List<String> list){long startTime = System.currentTimeMillis();int insertNum = 500;for (int i=0; i<insertNum; i++){list.add(10,"数据"+i);  // 中间靠前部分插入
//            list.add(list.size()/2,"数据"+i);  //中间插入
//            list.add(list.size()/2+10,"数据"+i);  //中间靠后插入
//            list.add("数据"+i);  // 尾插}long endTime = System.currentTimeMillis();return endTime-startTime;}}

接口和抽象类是 Java 编程语言中用于实现抽象的两种主要机制。它们允许你定义类的骨架和行为规范,而不提供具体的实现。

接口(Interface)

概述
接口是一个完全抽象的类,它只包含方法的声明(没有方法体)和常量。接口用于定义一组方法,这些方法必须由实现接口的类提供具体的实现。

特点

  • 完全抽象:接口中的方法默认是 public 和 abstract,不能有方法体(直到 Java 8 引入默认方法和静态方法)。
  • 多重继承:一个类可以实现多个接口,打破了 Java 单继承的限制。
  • 变量:接口中的变量默认是 public、static 和 final。
  • 默认方法和静态方法:从 Java 8 开始,接口可以包含默认方法(有方法体)和静态方法。
  • 私有方法:从 Java 9 开始,接口可以包含私有方法,这些方法只能在接口中调用。

示例

public interface Animal {void eat();  // 抽象方法,默认是 public abstractvoid sleep();// 默认方法default void breathe() {System.out.println("Breathing...");log("breathe");}// 静态方法static void info() {System.out.println("Animal Interface");logStatic("info");}// 私有方法private void log(String activity) {System.out.println("Logging activity: " + activity);}// 私有静态方法private static void logStatic(String activity) {System.out.println("Logging static activity: " + activity);}
}

抽象类(Abstract Class)

抽象类在 Java 中是用于定义类的骨架的类,包含具体方法(有方法体)和抽象方法(没有方法体)。抽象类不能被实例化,必须被子类继承,并且,如果子类不是抽象类,那么子类必须实现所有抽象方法。

  • 抽象方法和具体方法:抽象类可以包含抽象方法和具体方法。抽象方法没有方法体,具体方法有方法体。子类必须实现抽象方法,或者自身也声明为抽象类。
  • 成员变量:抽象类可以包含成员变量,可以使用各种访问修饰符(public、protected、private)。
  • 构造方法:抽象类可以有构造方法,但不能用来创建对象实例。构造方法通常用于初始化类的成员变量。
  • 继承:一个类只能继承一个抽象类(单继承),但抽象类可以被多个类继承。
  • 实现接口:抽象类可以实现接口,并且不需要实现接口中的所有方法。子类可以选择实现剩余的方法。
public abstract class Animal {private String name;  // 成员变量// 构造方法public Animal(String name) {this.name = name;}// 抽象方法public abstract void eat();public abstract void sleep();// 具体方法public void breathe() {System.out.println(name + " is Breathing...");}// 获取名称的方法public String getName() {return name;}
}

相关文章:

实现List接口的ArrayList和LinkedList

package study;import java.util.*;public class day01_list {public static void main(String[] args) {// <Integer> 这个尖括号表示的是 Java 的泛型&#xff08;Generics&#xff09;// 泛型是 Java 5 引入的一项特性&#xff0c;它允许你在 类、接口和方法 中使用类…...

下拉选择输入框(基于elment-ui)

最近在需求中&#xff0c;需要有一个下拉选择功能&#xff0c;又得可以输入&#xff0c;在 element-ui 官网找了&#xff0c;发现没有适合的&#xff0c;然后在修炼 cv 大法的我&#xff0c;也在网上看了一下&#xff0c;但是也都感觉不合适&#xff0c;所以就自己写了两个&…...

CPP入门:日期类的构建

目录 1.日期类的成员 2.日期类的成员函数 2.1构造和析构函数 2.2检查日期合法 2.3日期的打印 2.4操作符重载 2.4.1小于号 2.4.2等于号 2.4.3小于等于号 2.4.4大于号 2.4.5大于等于号 2.4.6不等号 2.4.7加等的实现 2.4.8加的实现 2.4.9减去一个天数的减等实现 2.4.10…...

springboot学习,如何用redission实现分布式锁

目录 一、springboot框架介绍二、redission是什么三、什么是分布式锁四、如何用redission实现分布式锁 一、springboot框架介绍 Spring Boot是一个开源的Java框架&#xff0c;由Pivotal团队&#xff08;现为VMware的一部分&#xff09;于2013年推出。它旨在简化Spring应用程序…...

【MySQL】如果表被锁可以尝试看一下事务

今天在MySQL中删除表的时候&#xff0c;发现无法删除&#xff0c;一执行drop&#xff0c;navicat就卡死。 通过 SHOW PROCESSLIST显示被锁了 kill掉被锁的进程后依旧被锁 最后发现是由于存在为执行完的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; kill掉这些事务以…...

Datawhale - 角色要素提取竞赛

文章目录 赛题要求一、赛事背景二、赛事任务三、评审规则1.平台说明2.数据说明3.评估指标4.评测及排行 四、作品提交要求五、 运行BaselineStep1&#xff1a;下载相关库Step2&#xff1a;配置导入Step3&#xff1a;模型测试Step4&#xff1a;数据读取Step5&#xff1a;Prompt设…...

【Sql-驯化】sql中对时间的处理方法技巧总结

【Sql-驯化】sql中对时间的处理方法技巧总结 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注&#xff1a;微信公众…...

TFD那智机器人仿真离线程序文本转换为现场机器人程序

TFD式样那智机器人离线程序通过Process Simulation、DELMIA等仿真软件为载体给机器人出离线&#xff0c;下载下来的文本程序&#xff0c;现场机器人一般是无法导入及识别出来的。那么就需要TFD on Desk TFD控制器来进行转换&#xff0c;才能导入现场机器人读取程序。 导入的文…...

贪心+后缀和,CF 1903C - Theofanis‘ Nightmare

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1903C - Theofanis Nightmare 二、解题报告 1、思路分析 我们任意一种分组其实都是若干个后缀和相加 比如我们分成了三组&#xff0c;第一组的数被加了一次&#xff0c;第二组的数被加了两次&#xff0c;第…...

10分钟完成微信JSAPI支付对接过程-JAVA后端接口

引入架包 <dependency><groupId>com.github.javen205</groupId><artifactId>IJPay-WxPay</artifactId><version>${ijapy.version}</version></dependency>配置类 package com.joolun.web.config;import org.springframework.b…...

如何寻找一个领域的顶级会议,并且判断这个会议的影响力?

如何寻找一个领域的顶级会议&#xff0c;并且判断这个会议的影响力&#xff1f; 会议之眼 快讯 很多同学都在问&#xff1a;学术会议不是期刊&#xff0c;即使被SCI检索&#xff0c;也无法查询影响因子。那么如何知道各个领域的顶级会议&#xff0c;并对各个会议有初步了解呢…...

真的假不了,假的真不了

大家好&#xff0c;我是瑶琴呀&#xff0c;拥有一头黑长直秀发的女程序员。 最近&#xff0c;17岁的中专生姜萍参加阿里巴巴 2024 年的全球数学竞赛&#xff0c;取得了 12 名的好成绩&#xff0c;一时间在网上沸腾不止。 从最开始的“数学天才”&#xff0c;到被质疑&#xff…...

看完这篇文章你就知道什么是未来软件开发的方向了!即生成式AI在软件开发领域的革新=CodeFlying

从最早的UGC&#xff08;用户生成内容&#xff09;到PGC&#xff08;专业生成内容&#xff09;再到AIGC&#xff08;人工智能生成内容&#xff09;体现了web1.0→web2.0→web3.0的发展历程。 毫无疑问UGC已经成为了当前拥有群体数量最大的内容生产方式。 同时随着人工智能技术…...

HTML5五十六个民族网站模板源码

文章目录 1.设计来源高山族1.1 登录界面演示1.2 注册界面演示1.3 首页界面演示1.4 中国民族界面演示1.5 关于高山族界面演示1.6 联系我们界面演示 2.效果和源码2.1 动态效果2.2 源代码2.3 源码目录 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.ne…...

Linux_fileio实现copy文件

参考韦东山老师教程&#xff1a;https://www.bilibili.com/video/BV1kk4y117Tu?p12 目录 1. 通过read方式copy文件2. 通过mmap映射方式copy文件 1. 通过read方式copy文件 copy文件代码&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <…...

【JavaEE精炼宝库】多线程进阶(2)synchronized原理、JUC类——深度理解多线程编程

一、synchronized 原理 1.1 基本特点&#xff1a; 结合上面的锁策略&#xff0c;我们就可以总结出&#xff0c;synchronized 具有以下特性(只考虑 JDK 1.8)&#xff1a; 开始时是乐观锁&#xff0c;如果锁冲突频繁&#xff0c;就转换为悲观锁。 开始是轻量级锁实现&#xff…...

【Linux进程通信】使用匿名管道制作一个简单的进程池

进程池是什么呢&#xff1f;我们可以类比内存池的概念来理解进程池。 内存池 内存池是在真正使用内存之前&#xff0c;先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时&#xff0c;就从内存池中分出一部分内存块&#xff0c;若内存块不够再继…...

Django 多对多关系

多对多关系作用 Django 中&#xff0c;多对多关系模型的作用主要是为了表示两个模型之间的多对多关系。具体来说&#xff0c;多对多关系允许一个模型的实例与另一个模型的多个实例相关联&#xff0c;反之亦然。这在很多实际应用场景中非常有用&#xff0c;比如&#xff1a; 博…...

构建 Audio Unit 应用程序

构建 Audio Unit 应用程序 构建 Audio Unit 应用程序从选择设计模式开始I/O Pass ThroughI/O Without a Render Callback FunctionI/O with a Render Callback FunctionOutput-Only with a Render Callback Function其他设计模式 构建应用程序配置 audio session指定 audio uni…...

JavaScript 实用技巧

1. 使用 const 和 let 替代 var 在 ES6 之前&#xff0c;我们通常使用 var 声明变量。但如今&#xff0c;推荐使用 const 和 let&#xff0c;因为它们具有块级作用域&#xff0c;可以避免很多潜在的问题。 const PI 3.14; // 常量&#xff0c;无法重新赋值 let age 25; // …...

Python协作运动机器人刚体力学解耦模型

&#x1f3af;要点 &#x1f3af;腿式或固定式机器人模型 | &#x1f3af;网格、点云和体素网格碰撞检测 | &#x1f3af;正反向运动学和动力学 | &#x1f3af;机器人刚体力学计算 | &#x1f3af;编辑参考系姿势和路径 | &#x1f3af;软件接口实体机器人模拟 | &#x1f3a…...

可重入锁思想,设计MQ迁移方案

如果你的MQ消息要从Kafka切换到RocketMQ且不停机&#xff0c;怎么做&#xff1f;在让这个MQ消息调用第三方发奖接口&#xff0c;但无幂等字段又怎么处理&#xff1f;今天小傅哥就给大家分享一个关于MQ消息在这样的场景中的处理手段。 这是一种比较特例的场景&#xff0c;需要保…...

Redis安装与使用

目录 1、介绍 1、redis的特点: 2、缓存 2、安装Redis 1、安装单机版redis 2、redis-cli命令参数 3、清空数据库的两种方式和作用域&#xff1a; 4、redis的增删查改命令 5、redis的查看所有分类命令 6、redis过期时间与控制键的行为 7、redis的相关工具 1、介绍 r…...

base64字符串空格问题

客户端使用的Content-Type为application/x-www-form-urlencoded时&#xff0c;字符串中出现了空格&#xff0c;base64解码时出错了&#xff0c;因为原来的字符有号&#xff0c; Spring Boot 对于Content-Type为application/x-www-form-urlencoded的HTTP请求&#xff0c;默认情…...

【BES2500x系列 -- RTX5操作系统】深入探索CMSIS-RTOS RTX -- 同步与通信篇 -- 消息队列和邮箱处理 --(四)

&#x1f48c; 所属专栏&#xff1a;【BES2500x系列】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f49…...

电信NR零流量小区处理

【摘要】随着目前网络建设逐步完善&#xff0c;5G用户的不断发展&#xff0c;针对零流量小区的分析及处理存在着必要性&#xff0c;零流量小区的出现既是用户分布及行为的直观体现&#xff0c;也是发展用户的一个指引&#xff0c;同时也能发现设备的一些故障。一个站点的能够带…...

ArcTs布局入门03——层叠布局(Stack)

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01; 扫描下面的二维码关注公众号。 1、概述 叠布局&#xff08;StackLayout&#xff09;用于在屏幕上预留一块区域来显示组件中的元素&#xff0c;提供元素可以重叠的布局。层叠布局通过Stack容器组件实…...

C语言之线程的学习

线程属于某一个进程 共同点&#xff1a;都能并发 线程共享变量&#xff0c;进程不共享。 多线程任务中&#xff0c;其中某一个线程调用了exit了&#xff0c;其他线程会跟着一起退出 如果是特定的线程就调用pthread_exit 失败返回的是错误号 下面也是...

HT8691 内置升压模块的D类音频功率放大器芯片IC

一般描述 HT8691是一款内置升压模块的D类音频功率放大器。内置的升压模块可通过外置电阻调节升压值&#xff0c;即使是锂电池供电&#xff0c;在升压至6.5V时&#xff0c;10%THDN,4Ω负载条件下能连续输出5.5W功率;升压至7V,3Ω负载条件下则能连续输出7.0W功率。其支持外部设置…...

和小红书一起参会! 了解大模型与大数据融合的技术趋势

在过去的两年中&#xff0c;“大模型”无疑成为互联网行业的焦点话题&#xff0c;曾经炙手可热的大数据架构似乎淡出公众视野。然而&#xff0c;大数据领域并未停滞不前&#xff0c;反而快速演进&#xff0c;传统依赖众多开源组件的大数据平台正逐步过渡到以融合与简化为核心特…...

【vocabulary in use (elementary)】7 Feeling

happy 高兴 sad 伤心 angry 生气 upset 丧气 cold 冷 hot 热 thirsty 口渴 hungry 饿 well 很好 ill 生病 tired 累了 surprised 惊讶 关于喜欢的表达&#xff1a; like to do 偶尔一次喜欢 like doing 一直喜欢的 outdoor activities 户外运动 be keep on doing 坚持做 be fo…...

Keil5 ST-LINK setting闪退问题解决

1. 官网下载新版驱动文件 MDK uVision crashes when using ST-Link debugger 2. 解压替换 STLinkUSBDriver6.1.2.0Signed 我的库文件目录&#xff1a; D:\Tool\Keil5\ARM\STLink...

熟练掌握Docker及linux常用命令排查线上问题。熟悉Git, Maven等项目管理及构建工具,熟悉微服务中基于Jenkins的CI/CD

掌握Docker、Linux命令、项目管理及构建工具&#xff0c;以及CI/CD流程是现代软件开发和运维的关键技能。以下是对这些技能的概述和一些实践建议&#xff1a; ### Docker - **概述**&#xff1a;Docker是一个开源的容器化平台&#xff0c;允许开发者打包应用及其依赖到一个可移…...

78.Vue 3 重用性模态框组件

模态框是大多数 Web 应用程序中的基本构建块。虽然最初实现起来可能看起来有点棘手&#xff0c;但实际上&#xff0c;使用 Vue 和一些 Flexbox 技巧&#xff0c;这不仅可行&#xff0c;而且非常简单。 让我们一起实现一个基础的模态框组件。 架构如下&#xff1a; AppModal.vue…...

《昇思25天学习打卡营第9天|onereal》

继续学习昨天的 基于MindNLPMusicGen生成自己的个性化音乐 生成音乐 MusicGen支持两种生成模式&#xff1a;贪心&#xff08;greedy&#xff09;和采样&#xff08;sampling&#xff09;。在实际执行过程中&#xff0c;采样模式得到的结果要显著优于贪心模式。因此我们默认启…...

Wireshark - tshark支持iptables提供数据包

tshark现在的数据包获取方式有两种&#xff0c;分别是读文件、网口监听&#xff08;af-packet原始套接字&#xff09;。两种方式在包获取上&#xff0c;都是通过读文件的形式&#xff1b;存在文件io操作&#xff0c;在专门处理大流量的情境下&#xff0c; 我们复用wireshark去做…...

快团团团长如何批量退款可自定义退款金额(批量退差价)?

快团团团长如何批量退款可自定义退款金额&#xff08;批量退差价&#xff09;&#xff1f; 在售后处理中&#xff0c;经常会出现需要给某一商品退差价的场景&#xff0c;因此在批量退款时需要自定义退款金额。现快团团已支持批量退自定义金额&#xff0c;操作方法和注意事项如…...

MySQL——事务ACID原则、脏读、不可重复读、幻读

什么是事务 要么都成功&#xff0c;要么都失败 一一一一一一一 1. SQL执行&#xff1a;A给B转账 A 1000 ---->200 B 200 2. SQL执行&#xff1a;B收到A的钱 A 800 B 400 一一一一一一一 将一组SQL放在一个批次中去执行~ 事务原则&#xff1a;ACI…...

洗衣机水龙头要买有止逆阀的,多花几十元能省掉几万,值了

问大家一下&#xff0c;你家洗衣机水龙头用的是什么样的&#xff1f;      可能有业主会说我家买的是纯铜的&#xff0c;质量挺好的。      如果你家选的洗衣机水龙头仅仅是纯铜的&#xff0c;并没有其他的功能&#xff0c;你还是选做错了。      因为洗衣机水龙头…...

Android 蓝牙开发全面指南

Android 平台的蓝牙功能提供了丰富的API和工具&#xff0c;使开发者能够轻松实现从基本连接到复杂数据交换的各种蓝牙功能。蓝牙技术已经成为智能手机和其他设备间通信的重要方式&#xff0c;尤其在物联网和智能家居应用中有广泛应用。 关键词总结 Android 蓝牙开发涉及多个关…...

Hadoop3:Yarn框架的三种调度算法

一、概述 目前&#xff0c;Hadoop作业调度器主要有三种&#xff1a;FIFO、容量&#xff08;Capacity Scheduler&#xff09;和公平&#xff08;Fair Scheduler&#xff09;。Apache Hadoop3.1.3默认的资源调度器是Capacity Scheduler。 CDH框架默认调度器是Fair Scheduler。 …...

JDBC链接kerberos认证的impala数据库报错问题解决

先上代码 public static Connection connectToImpala() {try {log.info("ketTabPath:" ketTabPath);log.info("krb5Path:" krb5Path);System.setProperty("java.security.krb5.conf", krb5Path);System.setProperty("sun.security.krb5.…...

firewalld(2)安装、配置文件、规则查询

安装firewalld 我使用的操作系统是debian 12,并没有安装firewalld。 通过apt install firewalld安装firewalld firewalld 本身是一个服务&#xff08;firewalld.service&#xff09;&#xff0c;可以通过 systemctl 进行启动、停止和重启&#xff0c;而iptables 本身并不是一个…...

施耐德全新EtherCAT运动控制器M310介绍

在制造业的蓬勃发展下&#xff0c;高性能运动控制器成为提升生产效率、保障产品质量的关键设备之一。M310是施耐德电气新一代高性能运动控制器&#xff0c;它基于Intel X86硬件平台和Codesys V3.5 SP19软件平台开发&#xff0c;支持EtherCAT总线&#xff0c;拥有强大算力、高易…...

Springboot Mybatis 多数据源配置以及使用

在Spring Boot中配置MyBatis的多数据源是一个常见需求&#xff0c;尤其是在需要连接多个数据库时&#xff0c;下面是详细的步骤指南。 引入依赖 首先&#xff0c;在你的pom.xml文件中添加Spring Boot、MyBatis和数据库连接的相关依赖。例如&#xff0c;如果你使用的是MySQL数…...

Android启动时间分析

在Android启动过程中,“NHLOS” 和 “LK” 是两个与启动时间相关的术语,它们分别指的是: 各阶段时间 I Minidump: Enabled with max number of regions 200 I KPI : Bootloader start count = 59264 I KPI : Bootloader end count = 101746 I KPI : Boo…...

智能洗车管理系统设计

智能洗车管理系统设计的核心在于整合先进的信息技术与自动化设备&#xff0c;以提升洗车服务的效率、降低成本并增强客户体验。以下是一个概括性的设计框架&#xff1a; 1. 系统需求分析 用户需求&#xff1a;了解车主对于快速、便捷、高质量洗车服务的需求。业务需求&#xf…...

vue3弹窗usehook

说明 个人记录保存。 import {ref} from "vue";export default function useDialog(opts) {const visible ref(false)const loading ref(false)const open (v) > {visible.value truetypeof opts.onOpen "function" && opts.onOpen(v)}c…...

上帝之眼(BEVSee):多相机间无需标定,将各自目标统一到同一坐标系下(代码开源,提供数据集)

Abstract 我们解决了一个新的问题&#xff0c;即在鸟瞰视角&#xff08;BEV&#xff09;中无需预先给定相机校准的多视角相机和目标注册问题。这将多视角目标注册问题提升到一个新的无需校准的阶段&#xff0c;从而极大地缓解了许多实际应用中的限制。然而&#xff0c;这是一个…...

imagesc函数 纵坐标翻转 colormap “set” “jet“

纵坐标默认上小下大 翻转&#xff1a; 在Matlab中&#xff0c;使用imagesc函数绘制的图像的纵坐标默认是从上到下递增的&#xff0c;即下面的值较大&#xff0c;上面的值较小。如果想要翻转纵坐标&#xff0c;使之从上到下递增&#xff0c;可以通过设置坐标轴的YDir属性为’n…...

智能生产管理系统设计

智能生产管理系统的设计旨在提升制造业的效率、灵活性和响应速度&#xff0c;通过集成先进的信息技术&#xff08;如物联网IoT、大数据分析、人工智能AI、云计算等&#xff09;实现生产过程的智能化。以下是一些关键设计要素和步骤&#xff0c;用于构建一个高效的智能生产管理系…...

统计学与人工智能:历史渊源与方法比较

统计学与人工智能&#xff1a;历史渊源与方法比较 在当代技术讨论中&#xff0c;统计学和人工智能&#xff08;AI&#xff09;常常被提及&#xff0c;它们各自在数据分析和预测模型中扮演着重要角色。然而&#xff0c;这两种方法是否对立&#xff0c;以及它们之间的关系如何&a…...

Java Nio核心概念理解

nc localhost port Selector 以Mac为例&#xff0c;初始化得到的Selector的实例为KQueueSelectorImpl。 public abstract class SelectorImpl extends AbstractSelector{// The set of keys with data ready for an operationprotected Set<SelectionKey> selectedKeys…...

Linux系统安全加固:无需WAF也能有效防御黑客攻击

Web应用防火墙&#xff08;WAF&#xff09;是现代网络安全架构中的重要组成部分&#xff0c;用于保护Web应用程序免受各种攻击。然而&#xff0c;对于基于Linux的服务器&#xff0c;即使没有部署WAF&#xff0c;通过合理的配置和策略&#xff0c;依然能够构建起坚固的防线。本文…...

TRILL简介

介绍TRILL的定义及目的。 定义 TRILL(Transparent Interconnection of Lots of Links)是一种把三层链路状态路由技术应用于二层网络的协议。TRILL通过扩展IS-IS路由协议实现二层路由&#xff0c;可以很好地满足数据中心大二层组网需求&#xff0c;为数据中心业务提供解决方案…...

【收藏级神丹】Liae384_刘亦菲_直播可用,平衡度最高的原创神丹,独家珍稀资源

Liae384_刘亦菲_DFL神丹&#xff1a;点击下载 此丹较重&#xff0c;小卡可以使用但不能训练&#xff0c;实测复训适合24G卡8G、12G、16G卡下载练好的专丹直接使用即可384的Liae对各类杂论视频兼容比较好&#xff0c;高参也能容忍高分辨率的DST复用方式: 非必要不用删除AB&…...

新款吉利博越即将亮相!外观内饰升级,13.2英寸中控

新款吉利博越要出新款了,车友们知道吗?据念寒目前掌握到的最新消息,新车将会新疆阿勒泰的博越用户草原大会上首发亮相,至于为什么会选择在草原上发布新款车型,我有点儿没看懂。不过话说回来,对于有关注过吉利博越的车友应该知道,在去年4月份的时候,就已经发布过名叫吉利…...

夜读朱大建:海菜花,清水的精灵

海菜花不光美丽,还是美味。去年6月5日世界环境日当天,我写的生态纪实文学《海菜花开》,由上海交通大学出版社召开出版座谈会,全国有十多家媒体刊发报道或书评。当月,该书就印了三次。去年9月,由上海交大创作、学生主演的校园话剧《海菜花开》在闵行校区菁菁堂演出。今年3…...

milvus 中的集合与 database

在Milvus中&#xff0c;集合&#xff08;Collection&#xff09;和数据库&#xff08;Database&#xff09;是两个不同的概念&#xff0c;它们之间存在一定的关系。 1. 数据库&#xff08;Database&#xff09; 数据库是Milvus中的最顶层的组织单位&#xff0c;可以理解为一个…...

网络原理-HTTPS协议

在前面说到HTTP中,我们通过抓包,可以看到许多信息内容,其中往往会包含一些敏感信息,这些都是明文传输,当我们的请求被黑客或者不法分子截获后,那就很危险了,因此衍生出了HTTPS协议来对传输数据进行加密。 一、加密原理 基本原理如下&#xff1a; 明文 密钥 > 密文 密文…...

JAVA学习路线图

计算机网课资料分享群&#xff1a;710895979...

这些趣味科学小故事,让孩子从小爱上数理化,快收藏!

在我们的日常生活中,无论是洗碗时看到的泡沫,还是在公园里看到的彩虹,背后都隐藏着无数的科学奥秘。这些现象虽然看似平常,却都深深扎根于数理化的基本原理中。生活中一些常见的问题,也能通过转化成数理化的问题来解决。那么在现实生活中,数理化是如何帮助我们解决问题的…...