安卓开发工程师-Java 常用数据结构
1. Java 中的数组和集合有什么区别?
数组:
- 长度固定:一旦声明,长度不能改变。
- 类型单一:只能存储相同类型的元素。
- 存储效率高:底层是连续的内存空间,访问速度快。
- 示例代码:
int[] arr = new int[5]; // 声明一个长度为5的整型数组
arr[0] = 10;
arr[1] = 20;
System.out.println(arr[0]); // 输出10
集合:
- 长度可变:可以根据需要动态调整大小。
- 类型灵活:可以存储不同类型的对象(通过泛型可以限制类型)。
- 功能丰富:提供了许多操作元素的方法,如添加、删除、查找等。
- 示例代码:
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<Integer> list = new ArrayList<>(); // 创建一个ArrayList集合list.add(10); // 添加元素list.add(20);System.out.println(list.get(0)); // 输出10list.remove(0); // 删除元素System.out.println(list.size()); // 输出集合大小}
}
总结:数组适合存储固定数量的同类型数据,集合适合存储动态数量的灵活类型数据。
2. 介绍 Java 中的 List 接口及其常用实现类
List 接口:
- 是一个有序的集合,可以存储重复的元素。
- 提供了按索引访问、添加、删除等操作。
常用实现类:
- ArrayList:基于动态数组实现,随机访问速度快,增删操作较慢。
- LinkedList:基于双向链表实现,增删操作快,随机访问较慢。
- Vector:与 ArrayList 类似,但是线程安全的,性能稍差。
示例代码:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;public class Main {public static void main(String[] args) {// ArrayList示例List<String> arrayList = new ArrayList<>();arrayList.add("Java");arrayList.add("Python");System.out.println(arrayList.get(0)); // 输出Java// LinkedList示例List<String> linkedList = new LinkedList<>();linkedList.add("Java");linkedList.add("Python");linkedList.addFirst("C++"); // 在头部添加元素System.out.println(linkedList.get(0)); // 输出C++}
}
3. Set 接口和 Map 接口的区别是什么?
Set 接口:
- 是一个不包含重复元素的集合。
- 不保证元素的顺序,可以使用
LinkedHashSet
保证插入顺序。
Map 接口:
- 是一个键值对的集合,键是唯一的,值可以重复。
- 根据键快速查找对应的值。
区别:
- Set 存储单个元素,Map 存储键值对。
- Set 不能有重复元素,Map 的键不能重复。
示例代码:
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;public class Main {public static void main(String[] args) {// Set示例Set<String> set = new HashSet<>();set.add("Java");set.add("Python");set.add("Java"); // 重复元素不会被添加System.out.println(set.size()); // 输出2// Map示例Map<String, Integer> map = new HashMap<>();map.put("Java", 1);map.put("Python", 2);map.put("Java", 3); // 键重复,值会被覆盖System.out.println(map.get("Java")); // 输出3}
}
4. 如何实现一个自定义的集合类?
可以通过实现 Collection
或 List
等接口来实现自定义集合类。以下是一个简单的自定义集合类示例,实现 List
接口:
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;public class MyArrayList<T> implements List<T> {private Object[] elements;private int size;public MyArrayList() {elements = new Object[10]; // 初始容量size = 0;}@Overridepublic int size() {return size;}@Overridepublic boolean isEmpty() {return size == 0;}@Overridepublic boolean contains(Object o) {for (int i = 0; i < size; i++) {if (elements[i].equals(o)) {return true;}}return false;}@Overridepublic Iterator<T> iterator() {return new Iterator<T>() {private int currentIndex = 0;@Overridepublic boolean hasNext() {return currentIndex < size;}@Overridepublic T next() {if (!hasNext()) {throw new NoSuchElementException();}return (T) elements[currentIndex++];}};}@Overridepublic Object[] toArray() {return new Object[0];}@Overridepublic <T1> T1[] toArray(T1[] a) {return null;}@Overridepublic boolean add(T t) {if (size == elements.length) {resize();}elements[size++] = t;return true;}private void resize() {Object[] newElements = new Object[elements.length * 2];System.arraycopy(elements, 0, newElements, 0, elements.length);elements = newElements;}@Overridepublic boolean remove(Object o) {for (int i = 0; i < size; i++) {if (elements[i].equals(o)) {System.arraycopy(elements, i + 1, elements, i, size - i - 1);elements[--size] = null;return true;}}return false;}@Overridepublic boolean containsAll(Collection<?> c) {return false;}@Overridepublic boolean addAll(Collection<? extends T> c) {return false;}@Overridepublic boolean addAll(int index, Collection<? extends T> c) {return false;}@Overridepublic boolean removeAll(Collection<?> c) {return false;}@Overridepublic boolean retainAll(Collection<?> c) {return false;}@Overridepublic void clear() {for (int i = 0; i < size; i++) {elements[i] = null;}size = 0;}@Overridepublic T get(int index) {if (index < 0 || index >= size) {throw new IndexOutOfBoundsException();}return (T) elements[index];}@Overridepublic T set(int index, T element) {if (index < 0 || index >= size) {throw new IndexOutOfBoundsException();}T oldElement = (T) elements[index];elements[index] = element;return oldElement;}@Overridepublic void add(int index, T element) {if (index < 0 || index > size) {throw new IndexOutOfBoundsException();}if (size == elements.length) {resize();}System.arraycopy(elements, index, elements, index + 1, size - index);elements[index] = element;size++;}@Overridepublic T remove(int index) {if (index < 0 || index >= size) {throw new IndexOutOfBoundsException();}T removedElement = (T) elements[index];System.arraycopy(elements, index + 1, elements, index, size - index - 1);elements[--size] = null;return removedElement;}@Overridepublic int indexOf(Object o) {for (int i = 0; i < size; i++) {if (elements[i].equals(o)) {return i;}}return -1;}@Overridepublic int lastIndexOf(Object o) {for (int i = size - 1; i >= 0; i--) {if (elements[i].equals(o)) {return i;}}return -1;}@Overridepublic ListIterator<T> listIterator() {return null;}@Overridepublic ListIterator<T> listIterator(int index) {return null;}@Overridepublic List<T> subList(int fromIndex, int toIndex) {return null;}
}
5. Java 中的队列和栈是如何实现的?
队列:
- 是一种先进先出(FIFO)的数据结构。
- Java 中的
Queue
接口提供了队列的基本操作,如add
、remove
、peek
等。 - 常用实现类有
LinkedList
(实现了Queue
接口)、ArrayDeque
等。
栈:
- 是一种后进先出(LIFO)的数据结构。
- Java 中的
Stack
类提供了栈的基本操作,如push
、pop
、peek
等。 - 也可以使用
Deque
接口的实现类(如ArrayDeque
)来模拟栈。
示例代码:
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;public class Main {public static void main(String[] args) {// 队列示例Queue<String> queue = new LinkedList<>();queue.add("Java");queue.add("Python");System.out.println(queue.poll()); // 输出JavaSystem.out.println(queue.peek()); // 输出Python// 栈示例Deque<String> stack = new ArrayDeque<>();stack.push("Java");stack.push("Python");System.out.println(stack.pop()); // 输出PythonSystem.out.println(stack.peek()); // 输出Java}
}
6. 什么是二叉树,Java 中如何实现一个二叉树?
二叉树:
- 是一种树形数据结构,每个节点最多有两个子节点,通常称为左子节点和右子节点。
- 常见的二叉树有二叉查找树、平衡二叉树、红黑树等。
Java 实现:
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val) {this.val = val;}
}public class BinaryTree {private TreeNode root;public BinaryTree() {root = null;}public void insert(int val) {root = insertRecursive(root, val);}private TreeNode insertRecursive(TreeNode root, int val) {if (root == null) {return new TreeNode(val);}if (val < root.val) {root.left = insertRecursive(root.left, val);} else if (val > root.val) {root.right = insertRecursive(root.right, val);}return root;}public void inorderTraversal() {inorderRecursive(root);}private void inorderRecursive(TreeNode root) {if (root != null) {inorderRecursive(root.left);System.out.print(root.val + " ");inorderRecursive(root.right);}}public static void main(String[] args) {BinaryTree tree = new BinaryTree();tree.insert(5);tree.insert(3);tree.insert(7);tree.insert(2);tree.insert(4);tree.insert(6);tree.insert(8);System.out.println("中序遍历结果:");tree.inorderTraversal(); // 输出2 3 4 5 6 7 8}
}
7. 如何实现一个哈希表?
哈希表是一种通过哈希函数将键映射到值的数据结构。以下是简单的哈希表实现:
import java.util.LinkedList;
import java.util.List;public class SimpleHashTable<K, V> {private static final int DEFAULT_CAPACITY = 16;private List<Entry<K, V>>[] table;public SimpleHashTable() {table = new List[DEFAULT_CAPACITY];for (int i = 0; i < DEFAULT_CAPACITY; i++) {table[i] = new LinkedList<>();}}public void put(K key, V value) {int index = key.hashCode() % table.length;List<Entry<K, V>> bucket = table[index];for (Entry<K, V> entry : bucket) {if (entry.getKey().equals(key)) {entry.setValue(value);return;}}bucket.add(new Entry<>(key, value));}public V get(K key) {int index = key.hashCode() % table.length;List<Entry<K, V>> bucket = table[index];for (Entry<K, V> entry : bucket) {if (entry.getKey().equals(key)) {return entry.getValue();}}return null;}private static class Entry<K, V> {private K key;private V value;public Entry(K key, V value) {this.key = key;this.value = value;}public K getKey() {return key;}public V getValue() {return value;}public void setValue(V value) {this.value = value;}}public static void main(String[] args) {SimpleHashTable<String, Integer> hashTable = new SimpleHashTable<>();hashTable.put("Java", 1);hashTable.put("Python", 2);System.out.println(hashTable.get("Java")); // 输出1System.out.println(hashTable.get("Python")); // 输出2}
}
8. 介绍 Java 中的排序算法,如冒泡排序、快速排序等
冒泡排序:
- 通过相邻元素的比较和交换,将较大的元素“冒泡”到数组的末尾。
- 时间复杂度:O(n²)。
示例代码:
public class BubbleSort {public static void bubbleSort(int[] arr) {int n = arr.length;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - 1 - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}public static void main(String[] args) {int[] arr = {64, 34, 25, 12, 22, 11, 90};bubbleSort(arr);for (int i : arr) {System.out.print(i + " ");} // 输出11 12 22 25 34 64 90}
}
快速排序:
- 通过分治法,选择一个基准元素,将数组分为小于基准和大于基准的两部分,递归排序。
- 时间复杂度:平均 O(nlogn),最坏 O(n²)。
示例代码:
public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {int pivotIndex = partition(arr, low, high);quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex + 1, high);}}private static int partition(int[] arr, int low, int high) {int pivot = arr[high];int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] <= pivot) {i++;int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}int temp = arr[i + 1];arr[i + 1] = arr[high];arr[high] = temp;return i + 1;}public static void main(String[] args) {int[] arr = {10, 7, 8, 9, 1, 5};quickSort(arr, 0, arr.length - 1);for (int i : arr) {System.out.print(i + " ");} // 输出1 5 7 8 9 10}
}
9. 如何实现一个链表?
链表是一种线性数据结构,由节点组成,每个节点包含数据部分和指向下一个节点的指针。
单链表实现:
class Node {int data;Node next;Node(int data) {this.data = data;this.next = null;}
}public class LinkedList {private Node head;public LinkedList() {head = null;}public void add(int data) {Node newNode = new Node(data);if (head == null) {head = newNode;} else {Node current = head;while (current.next != null) {current = current.next;}current.next = newNode;}}public void display() {Node current = head;while (current != null) {System.out.print(current.data + " ");current = current.next;}System.out.println();}public static void main(String[] args) {LinkedList list = new LinkedList();list.add(10);list.add(20);list.add(30);list.display(); // 输出10 20 30}
}
10. Java 中的字符串是如何存储和操作的?
存储:
- Java 中的字符串是不可变的(immutable),一旦创建,内容不能修改。
- 字符串底层是通过字符数组
char[]
存储的。 - 使用
String
类表示字符串,String
是一个final
类,不能被继承。
操作:
- 常见操作包括拼接、查找、替换、比较等。
- 示例代码:
public class StringExample {public static void main(String[] args) {String str1 = "Hello";String str2 = "World";String str3 = str1 + " " + str2; // 拼接System.out.println(str3); // 输出Hello WorldSystem.out.println(str3.length()); // 输出11System.out.println(str3.charAt(0)); // 输出HSystem.out.println(str3.indexOf("World")); // 输出6System.out.println(str3.replace("World", "Java")); // 输出Hello JavaSystem.out.println(str3.equals("Hello World")); // 输出true}
}
如果需要频繁修改字符串,建议使用 StringBuilder
或 StringBuffer
,因为它们是可变的,性能更好。
相关文章:
安卓开发工程师-Java 常用数据结构
1. Java 中的数组和集合有什么区别? 数组: 长度固定:一旦声明,长度不能改变。类型单一:只能存储相同类型的元素。存储效率高:底层是连续的内存空间,访问速度快。示例代码: int[] …...
thinkphp8.0上传图片到阿里云对象存储(oss)
1、开通oss,并获取accessKeyId、accessKeySecret <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><tit…...
Angular 2 模板语法详解
Angular 2 模板语法详解 引言 Angular 2 作为一款强大的前端框架,以其组件化的开发模式和高效的性能被众多开发者所青睐。模板语法是Angular 2中用于定义组件UI的关键部分。本文将详细介绍Angular 2的模板语法,帮助开发者更好地理解和运用这一功能。 模板语法概述 Angula…...
进行性核上性麻痹护理攻略:多维度守护健康
日常起居护理 保证患者居住环境安全,清除地面障碍物,避免患者跌倒。家具摆放固定且合理,方便患者活动。为患者准备宽松、舒适、易于穿脱的衣物,减轻穿衣时的困难。在饮食上,提供富含营养、易于吞咽的食物,…...
MessageQueue --- RabbitMQ WorkQueue
MessageQueue --- RabbitMQ WorkQueue 什么是WorkQueue如何分发RoundRobinFair dispatch (Prefetch) --- 能者多劳 什么是WorkQueue Work queues,任务模型。简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息。当消息处理比较耗时的时候&…...
Redis内存碎片详解!
目录 一、 什么是内存碎片?🤔二、 为什么 Redis 会有内存碎片呢?🤷♀️三、 如何查看 Redis 内存碎片的信息?🔍四、 如何清理 Redis 内存碎片?🧹五、总结📝 dz…...
如何使用 Nginx 代理 Easysearch 服务
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、缓存、SSL 终端和服务代理等场景。本篇将尝试使用 Nginx 代理 Easysearch 服务,方法同样适用于 Elasticsearch 和 Opensearch。 测试环境 Easysearch 集群版本为 1.10.0ÿ…...
用python输出OLED字模库的符号
提示:博主是小白,如有不足,望海涵和指出 在单片机上练习使用OLED显示屏时,可以看到有个OLED字模库 本文用python将这些字符打印出来,代码如下(本文只适用与128*64的OLED,如果是其它OLED…...
【java】Class.newInstance()
在 Java 中,Class.newInstance()是一个用于创建类的新实例的方法。它调用类的无参构造函数来创建对象。然而,从 Java 9 开始,Class.newInstance()方法已经被标记为废弃,推荐使用其他替代方法。 Class.newInstance()的使用 Class.…...
Apache Arrow 使用
下述操作参考 Building Arrow C — Apache Arrow v20.0.0.dev267 安装依赖组件 sudo apt-get install \build-essential \ninja-build \cmake 下载源码 git clone --recursive --shallow-submodules gitgithub.com:apache/arrow.git 配置 创建build目录并且进入 mkdir a…...
第二届图像处理与人工智能国际学术会议(ICIPAI2025)
重要信息 时间:2025年4月18日-20日 地点:吉林-长春(线上线下结合) 官网:www.icipai.org 简介(部分) 主题 其他 图像处理与人工智能(Image Processing & Artificial Intell…...
Kafka 消息堆积的原因有哪些?
Kafka 产生消息堆积的本质原因是: ⚠️ “消费速度 < 生产速度”,也就是:写入太快,处理太慢。 下面我从实际场景出发,帮你梳理出常见的几种堆积情况,结合原因和例子,便于你对号入座排查问题 …...
解决cline等免费使用deepseek模型的问题
OpenAI、OpenRouter、Claude等都无法在国内免费正常使用,cline作为在vscode中应对cursor比较好的替代方案,怎么使用免费Deepseek,最核心的是在点击模型名称打开配置以下几项: 1、打开VSCode左侧的Cline\Roo Cline插件面板 2、点…...
ROS多设备交互
ROS多设备连接同一个Master:ROS Master多设备连接-CSDN博客 在多个PC端连接同一个ROS Master后,接下来就可以实现不同设备之间的话题交流,Master主机端启动不同PC端的功能包等功能了 尽管多个PC端拥有不同的ROS工作空间,但是只要…...
浅谈 MVVM 模式
MVVM(Model-View-ViewModel) 是一种软件架构设计模式,旨在将用户界面(UI)与业务逻辑分离,从而提高代码的可维护性和可测试性。它在现代前端开发和桌面应用开发中得到了广泛应用,尤其是在构建复杂…...
flutter点击事件教程
在 Flutter 中,处理点击事件是非常常见的操作。Flutter 提供了多种方式来实现用户交互,比如按钮点击、手势检测等。下面是一个详细的教程,帮助你理解如何在 Flutter 中实现点击事件。 一、使用 onPressed 实现按钮点击事件 Flutter 提供了 E…...
[SAP SD] 常用事务码
在SAP系统中,事务码(Transaction Code)是一个具有特定功能的代码标识符,用于快速调用和执行SAP系统内的各种业务模块的功能 /NT-code: 关闭当前业务窗口,退回到SAP初始界面,进入对应的T-Code窗口 /OT-code: 新建SAP GUI窗口&…...
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的未来:从微服务到云原生的演进
<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、引子&…...
保留格式地一键翻译英文ppt
我手头上有一个贝叶斯推断的英文ppt,假如我想翻译成中文,整合起来进行pre,你会怎么做? 1,复制粘贴型: 在翻译软件与源文件ppt之间不断流转,效率太低 2,office ppt自带翻译插入整合…...
晶晨S905L3S/S905L3SB_安卓9.0_10秒开机_通刷-线刷固件包
晶晨S905L3S/S905L3SB_安卓9.0_10秒开机_通刷-线刷固件包 线刷方法:(新手参考借鉴一下) 使用晶晨刷机工具USB_Burning_Tool进行刷机;请使用Amlogic USB Burning Tool v2.2.5或v2.2.7(晶晨线刷烧录工具v2.2…...
Android Transition转场动效使用全解析
Transition的使用和原理 项目效果 1. 简述 Android 4.4.2 中引入了 Transition 过渡动画,不过功能比较简单。在 Android 5.0 的 Material Design 中引入更完整和强大的 Transition 框架。通过Transition可以实现: 同一个页面中的场景过渡动画Activit…...
第九章Python语言高阶加强-面向对象篇
目录 一.初始对象 二.成员方法 1.成员变量和成员方法 三.类和对象 四.构造方法 五.其他内置方法(魔术方法) 1.__str__字符串方法 2.__lt__小于符号比较方法 3.__le__小于等于比较符号方法 4.__eq__比较运算符实现方法 六.封装 七.继承 1.继承…...
AI重构SEO关键词智能布局
内容概要 随着人工智能技术在搜索引擎优化领域的深入发展,AI驱动的关键词智能布局正在重塑传统SEO策略的核心逻辑。通过整合自然语言处理、深度学习与语义分析技术,现代SEO系统已形成包含智能分词、意图解码、动态优化的三维技术框架,使关键…...
言同数字:法新社AFP海外新闻媒体发稿成功案例——出海品牌背书必备
作者:言同数字全球传播团队 一、品牌困境:当中国技术遇上海外认知壁垒 案例背景: 某中国光伏储能企业(应保密要求匿名,代号"GreenTech"),其家用储能系统在欧洲市场遭遇࿱…...
第三章 react redux的学习之redux和react-redux,@reduxjs/toolkit依赖结合使用
redux系列文章目录 第一章 简单学习redux,单个reducer 第二章 简单学习redux,多个reducer 第四章 react-redux,reduxjs/toolkit依赖,学习 第五章 两张图告诉你redux常使用的api有哪些 前言 前面两章,我们是只使用的redux的依赖。 本章…...
【HTML】纯前端网页小游戏-戳破彩泡
分享一个简单有趣的网页小游戏 - 彩色泡泡爆破。玩家需要点击屏幕上随机出现的彩色泡泡来得分。 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…...
【Python使用】嘿马云课堂web完整实战项目第3篇:增加数据,修改数据【附代码文档】
教程总体简介:项目概述 项目背景 项目的功能构架 项目的技术架构 CMS 什么是CMS CMS需求分析与工程搭建 静态门户工程搭建 SSI服务端包含技术 页面预览开发 4 添加“页面预览”链接 页面发布 需求分析 技术方案 测试 环境搭建 数据字典 服务端 前端 数据模型 页面原…...
数据结构【栈和队列附顺序表应用算法】
栈和队列和顺序表应用算法练习 1.栈1.1概念与结构1.2栈的实现 2.队列2.1概念与结构2.2队列的实现 3.附(顺序表应用算法)3.1移除元素3.2删除有序数组中的重复项3.3合并两个有序数组 1.栈 1.1概念与结构 栈:⼀种特殊的线性表,其只…...
Redis数据结构之String
目录 1.概述2.常见操作2.1 SET/GET2.2 MSET/MGET/MSETNX2.3 GETRANGE/SETRANGE2.4 INCR(BY)/DECR(BY)2.5 STRLEN2.6 APPEND2.7 GETSET 3.小结 1.概述 String是最常用的数据类型,一个key对应一个value。String是二进制安全的,可以包含任何数据࿰…...
Maven 远程仓库推送方法
步骤 1:配置 pom.xml 中的远程仓库地址 在项目的 pom.xml 文件中添加 distributionManagement 配置,指定远程仓库的 URL。 xml 复制 <project>...<distributionManagement><!-- 快照版本仓库 --><snapshotRepository><id…...
uname
在 C 语言中,uname 函数用于获取当前操作系统的相关信息。 它是 POSIX 标准的一部分,定义在 <sys/utsname.h> 头文件中。 通过调用 uname 函数,可以获取系统名称、节点名称(主机名)、操作系统版本、机器硬件架构…...
【无标题】object,wait,notifyAll
在 Java 中,Object类提供了wait()方法,用于线程间的协作和同步。wait()方法使得当前线程暂停执行,并释放当前对象的锁,直到其他线程调用该对象的notify()或notifyAll()方法将其唤醒。这是实现线程间通信和同步的重要机制之一。 w…...
【Vue】 核心特性实战解析:computed、watch、条件渲染与列表渲染
目录 一、计算属性(computed) ✅ 示例: 计算属性-methods实现:在插值模块里,实现函数的调用功能 计算属性-computed的实现: 计算属性-简写: ✅ 特点: ⚠️ 与 methods 的区别…...
精品可编辑PPT | 基于湖仓一体构建数据中台架构大数据湖数据仓库一体化中台解决方案
本文介绍了基于湖仓一体构建数据中台架构的技术创新与实践。它详细阐述了数据湖、数据仓库和数据中台的概念,分析了三者的区别与协作关系,指出数据湖可存储大规模结构化和非结构化数据,数据仓库用于高效存储和快速查询以支持决策,…...
基于Python网络爬虫的智能音乐可视化系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,智能音乐可视化系统当然不能排除在外。我本次开发的基于网络爬虫的智能音乐可视化系统是在实际应用和软件工程的开发原理之上,…...
基于STM32与应变片的协作机械臂力反馈控制系统设计与实现----2.2 机械臂控制系统硬件架构设计
2.2 机械臂控制系统硬件架构设计 一、总体架构拓扑 1.1 典型三级硬件架构 #mermaid-svg-MWmxD3zX6bu4iFCv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MWmxD3zX6bu4iFCv .error-icon{fill:#552222;}#mermaid-s…...
在线记事本——支持Markdown
项目地址 https://github.com/Anyuersuper/CloudNotebook 百度网盘 通过网盘分享的文件:CloudNotebook-master.zip 链接: https://pan.baidu.com/s/1kd2qNvm0eXc6_7oYDR769A?pwdyuer 提取码: yuer 📝 云笔记 (Cloud Notebook) 云笔记是一个简洁、安全…...
DDPM 做了什么
本博客主要侧重点在于HOW也就是DDPM怎么做的而不是WHY为什么要这样做 那么第一个问题DDPM做了一件什么事:这个算法通过逐渐向原图像添加噪声来破坏图像,然后再学习如何从噪声成恢复图像。 第二件事如何做到的:通过训练一个网络,…...
Redis数据结构之List
目录 1.概述2.常见操作2.1 LPUSH/RPUSH/LRANGE2.2 LPOP/RPOP2.3 LINDEX2.4 LLEN2.5 LREM2.6 LTRIM2.7 RPOPLPUSH2.8 LSET2.9 LINSERT 1.概述 List是简单的字符串列表,单key多个value,按照插入顺序排序。 支持添加一个元素到列表的头部(左边)或者尾部(右…...
L2-023 图着色问题 #DFS C++邻接矩阵存图
文章目录 题目解读输入格式输出格式 思路Ac CODE 参考 题目解读 给定一个无向图V,询问是否可以用K种颜色为V中每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色 输入格式 第一行给出V,E,K, 分别代表无向图的顶点,…...
架构下的按钮效果设置
以下是一个完整的跨QML/Qt Widgets的主题方案实现,包含对按钮阴影的统一管理: 一、项目结构 Project/ ├── core/ │ ├── thememanager.h │ └── thememanager.cpp ├── widgets/ │ ├── mainwindow.h │ ├── mainwindow.cpp …...
Unhandled exception: org.apache.poi.openxml4j.exceptions.InvalidFormatException
代码在main方法里面没有报错,在Controller里面就报错了。 原来Controller类里面少了行代码 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 加上去就解决了。...
Vue2_Vue.js教程
目录 一、Vue.js安装 1、独立版本 2、CDN 方法 3、npm 方法 二、Vue Al编程助手 三、Vue.js目录结构 目录解析 四、Vue.js 起步 1.如何定义数据对象和方法并渲染进页面 五、Vue.js 模板语法 插值 文本_{{}} Html_v-html 指令 属性_v-bind (数据传输工具)指令 表…...
2025/4/2 心得
第一题 题目描述 给定1001个范围在[1,1000]的数字,保证只有1个数字重复出现2次,其余数字只出现1次。试用O(n)时间复杂度来求出出现2次的这个数字。 不允许用数组 输入格式 第一行:一个整数1001; 第二行:1001个用…...
Deep Reinforcement Learning for Robotics翻译解读
a. 机器人能力 1 单机器人能力(Single-robot competencies) 运动能力(Mobility) 行走(Locomotion)导航(Navigation) 操作能力(Manipulation) 静态操作&…...
【Linux】日志模块实现详解
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
AT_abc212_d [ABC212D] Querying Multiset
链接:AT_abc212_d [ABC212D] Querying Multiset - 洛谷 题目描述 高橋君は何も書かれていないたくさんのボールと 1 つの袋を持っています。 最初、袋は空で、高橋君は Q 回の操作を行います。 それぞれの操作は以下の 3 種類のうちのいずれかです。 操作 1 : ま…...
Android使用OpenGL和MediaCodec录制
目录 一,什么是opengl 二,什么是Android OpenGL ES 三, OpenGL 绘制流程 四, OpenGL坐标系 五, OpenGL 着色器 六, GLSL编程语言 七,使用MediaCodec录制在Opengl中渲染架构 八,代码实现 8.1 自定义渲染view继承GLSurfaceView 8.2 自定义渲染器TigerRender 8.3 创建编…...
Java 实现插入排序:[通俗易懂的排序算法系列之三]
引言 大家好!欢迎继续关注我的排序算法系列。今天,我们要学习的是另一种非常基础且重要的排序算法——插入排序 (Insertion Sort)。 插入排序的思路非常贴近我们日常整理扑克牌的方式,理解起来相对自然。虽然它在最坏情况下的效率不高&…...
HarmonyOS:WebView 控制及 H5 原生交互实现
一、效果展示 二、技术栈 技术栈: 编程语言:使用 TypeScript 进行开发,借助其类型系统提升代码的可读性与稳定性。 框架与库:基于鸿蒙系统相关框架(如kit.ArkWeb、hadss/hmrouter)…...