(顺序表、单链表、双链表)==>一篇解决!(Java版)
文章目录
- 一、线性表
- 二、顺序表
- 三、单链表
- 四、双链表
一、线性表
线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。
线性表的特征:数据元素之间具有一种“一对一”的逻辑关系。
线性表的分类:
线性表中数据存储的方式有两种:顺序存储和链式存储,按照数据的存储方式不同,可以把线性表分为顺序表和链表,链表又有单链表和双链表两种。
二、顺序表
顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素、使得线性表中再逻辑结构上响铃的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。
如图:
我们用代码实现顺序表,我们应要考虑到成员变量、构造方法、成员方法。
一.成员变量:
我们使用数组来实现顺序表,其成员变量就是要有两个,一个是存储元素的数组,一个是记录当前顺序表有效的长度.
二.构造方法:
创建一个有参的构造方法,来初始化数组的容量和其有效长度
三.成员方法:
1.public void clear():清空顺序表
2.publicboolean isEmpty():判断表是否为空,是返回true,否返回false
3.public int length():获取表中元素的个数
4.public T get(int i):获取表中的第i个元素
5.public void insert(int i,T t):在表的第i个元素之前插入一个值为t的数据元素。
6.public void insert(T t):向表中添加一个元素t(尾插)
7.public T remove(int i):删除表中第i个元素。
8.public int indexOf(T t):返回表中首次出行元素t时的下标。
9.public void resize(int newSize): 当数组满了,根据newSize进行扩容。
10.顺序表的遍历,就要实现Iterable接口
接下来就是代码实现:
具体思路都在代码注释中
import java.util.Iterator;public class SequenceList <T> implements Iterable<T>{//存储元素的数组private T[] eles;//顺序表的长度private int N;//构造方法.创建容量为capacity的SequenceList对象public SequenceList(int capacity) {this.eles = (T[]) new Object[capacity];//这里表示的是有效元素数据this.N = 0;}//空置顺序表public void clear() {this.N = 0;}//判断顺序表是否为空,是返回true,反之返回falsepublic boolean isEmpty() {return N == 0;}//获取顺序表中的元素个数public int length() {return N;}//读取并返回顺序表中的第i个元素的值public T get(int i) {return eles[i];}//在第i个元素之前插入一个值为t的数据元素public void insert(int i, T t) {//先判断容量是否足够if (N == eles.length) {//不够则扩容,一般是原数组长度的两倍resize(2 * N);}//需要吧i位置元素向后移动一位即可for (int index = N; index >= i; index--) {eles[index] = eles[index - 1];}//然后把t元素放进来eles[i] = t;//有效元素+1N++;}//向线性表中添加一个元素tpublic void insert(T t) {//先判断容量是否足够if (N == eles.length) {//不够则扩容,一般是原数组长度的两倍resize(2 * N);}eles[N++] = t;}//扩容根据newSize,重置eles的大小public void resize(int newSize) {//定义一个辅助数组,备份elesT[] arr = eles;//创建新数组eles = (T[]) new Object[newSize];//把原数组的值复制过去for (int i = 0; i < N; i++) {eles[i] = arr[i];}}//删除并返回线性表中第i个数据元素public T remove(int i) {//先记录i索引处的值T temp = eles[i];//将i数据后面的数据向前覆盖for (int index = i; index <= N; index++) {eles[i] = eles[i + 1];}//减少有效长度N--;//如果有效长度小于数组长度的四分之一,就要缩值,缩小二分之一if (N < eles.length / 4) {resize(eles.length / 2);}return temp;}//查找t元素第一次出现的位置,没有则返回-1public int indexOf(T t) {//遍历顺序表,依次比对for (int i = 0; i < N; i++) {if (eles[i].equals(t))return i;}return -1;}//打印遍历顺序表
//重写iterator方法@Overridepublic Iterator iterator() {return new SIterator();}//构架一个内部类来实现Iterator接口private class SIterator implements Iterator{private int cur;public SIterator(){this.cur=0;}//是否还有下一个元素@Overridepublic boolean hasNext() {return cur<N;}//下一个元素@Overridepublic T next() {return eles[cur++];}}}
测试一下我们实现的顺序表的功能:
三、单链表
链表是一种物理存储单元上非连续、非顺序的存储结构,其物理结构不能只管的表示数据元素的逻辑顺序,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列的结点(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成。
链表顾名思义我们可以想象一下链子的样子,每一段就是一个节点,没有固定形状比较灵活,我们上图看一下:
像这样每个节点相连接.
我们把它具体的实现一下,更容易理解:
每个节点都是单独的个体,我们可以将其连接起来变为链表,我们先来定义一下节点类:
private class Node {//存储数据T data;//下一个节点Node next;//构造节点public Node(T data, Node next) {this.data = data;this.next = next;}
接着我们还是要对其进行设计:
一、成员变量:
1.private Node head:记录首结点
2.private int N:记录链表的长度
二、构造方法:
LinkList():创建LinkList对象
三、成员方法:
1.public void clear():空置链表
2.publicboolean isEmpty():判断表是否为空,是返回true,否返回false
3.public int length():获取表中元素的个数
4.public T get(int i):读取并返回表中的第i个元素的值
5.public void insert(T t):往表中添加一个元素;
6.public void insert(int i,T t):在表的第i个元素之前插入一个值为t的数据元素。
7.public T remove(int i):删除并返回表中第i个数据元素。
8.public int indexOf(T t):返回表中首次t数据元素的位序号,若不存在,则返回-1
9.链表遍历=>实现Iterator接口
代码实现:
import java.util.Iterator;public class LinkList<T> implements Iterable<T>{//记录首节点private Node head;//记录链表的长度private int N;//节点类private class Node {//存储数据T data;//下一个节点Node next;//构造节点public Node(T data, Node next) {this.data = data;this.next = next;}}public LinkList() {//初始化头结点this.head = new Node(null, null);//初始化元素个数this.N = 0;}//空置链表public void clear() {head.next = null;N = 0;}//判断链表表是否为空public boolean isEmpty() {return N == 0;}//获取元素个数public int length() {return N;}//获取i位置的元素public T get(int i) {//安全检查if (i < 0 || i >= N) {throw new RuntimeException("位置不合法!");}//遍历链表即可Node n = head.next;for (int index = 0; index < i; index++) {n = n.next;}return n.data;}//添加元素(尾插法)public void insert(T t){Node n = head;//循环至尾节点while(n.next != null) {n = n.next;}//此时就是尾节点了,直接插入//构建值为t的节点Node newNode = new Node(t, null);n.next = newNode;//有效长度+1N++;}//在i位置,插入一个值为t的数据元素//1.找到i位置的前一个节点//2.使i-1位置的节点指向新节点,新节点在指向原本i位置的节点即可public void insert(int i, T t) {//安全检查if (i < 0 || i > N){throw new RuntimeException("位置不合法!");}//查找到i - 1位置的节点Node n = head;for (int index = 0; index <= i - 1; i++) {n = n.next;}//创建新节点Node newNode = new Node(t, null);//保留原本i位置处的节点Node cur = n.next;//i - 1位置的节点指向新节点n.next = newNode;//新节点指向原本i位置的节点newNode.next = cur;//有效长度+1N++;}//删除第i个数据元素//将第i - 1位置的元素,指向i + 1位置的节点即可public T remove(int i) {//安全检查if (i < 0 || i >= N){throw new RuntimeException("位置不合法");}//找到第i - 1位置的元素Node n = head;for (int index = 0; index <= i - 1; index++) {n = n.next;}//记录i位置节点的值Node cur = n.next;//i - 1位置的节点指向i + 1位置的节点n.next = cur.next;//有效长度-1N--;//返回被删除的值return cur.data;}//t元素数据首先出现时的位序号,没找到返回-1public int indexOf(T t) {//遍历查找Node n = head;for (int i = 0; i < N; i++) {n = n.next;if (n.data.equals(t)) {return i;}}return -1;}//重写Iterator接口方法@Overridepublic Iterator<T> iterator() {return new LIterator();}//定义内部类,实现遍历private class LIterator implements Iterator<T> {private Node n;public LIterator() {this.n = head;}@Overridepublic boolean hasNext() {return n.next != null;}@Overridepublic T next() {n = n.next;return n.data;}}
}
测试一下:
四、双链表
双向链表也叫双向表,是链表的一种,它由多个结点组成,每个结点都由一个数据域和两个指针域组成,数据域用来存储数据,其中一个指针域用来指向其后继结点,另一个指针域用来指向前驱结点。链表的头结点的数据域不存储数据,指向前驱结点的指针域值为null,指向后继结点的指针域指向第一个真正存储数据的结点。
如图:
接下来我们实现一下双链表:
一、成员变量:
1.private Node first:首结点
2.private Node last:尾节点
2.private int N:记录链表的长度
二、构造方法:
TowWayLinklist():创建TowWayLinklist对象
三、成员方法:
1.public void clear():空置链表
2.publicboolean isEmpty():判断表是否为空,是返回true,否返回false
3.public int length():获取表中元素的个数
4.public T get(int i):读取并返回表中的第i个元素的值
5.public void insert(T t):往表中添加一个元素;
6.public void insert(int i,T t):在表的第i个元素之前插入一个值为t的数据元素。
7.public T remove(int i):删除并返回表中第i个数据元素。
8.public int indexOf(T t):返回表中首次t数据元素的位序号,若不存在,则返回-1
9.public T getFirst():获取第一个元素
10.public T getLast():获取最后一个元素
9.链表遍历=>实现Iterator接口
代码实现:
import java.util.Iterator;public class TowWayLinklist<T> implements Iterable<T> {//首结点private Node head;//最后一个结点private Node last;//链表的长度private int N;//结点类private class Node{public Node(T item, Node pre, Node next) {this.item = item;this.pre = pre;this.next = next;}//存储数据public T item;//指向上一个结点public Node pre;//指向下一个结点public Node next;}public TowWayLinklist() {//初始化头结点和尾结点this.head = new Node(null,null,null);this.last=null;//初始化元素个数this.N=0;}//清空链表public void clear(){this.head.next=null;this.head.pre=null;this.head.item=null;this.last=null;this.N=0;}//获取链表长度public int length(){return N;}//判断链表是否为空public boolean isEmpty(){return N==0;}//获取第一个元素public T getFirst(){if (isEmpty()){return null;}return head.next.item;}//获取最后一个元素public T getLast(){if (isEmpty()){return null;}return last.item;}//插入元素tpublic void insert(T t){if (isEmpty()){//如果链表为空://创建新的结点Node newNode = new Node(t,head, null);//让新结点称为尾结点last=newNode;//让头结点指向尾结点head.next=last;}else {//如果链表不为空Node oldLast = last;//创建新的结点Node newNode = new Node(t, oldLast, null);//让当前的尾结点指向新结点oldLast.next=newNode;//让新结点称为尾结点last = newNode;}//元素个数+1N++;}//向指定位置i处插入元素tpublic void insert(int i,T t){//找到i位置的前一个结点Node pre = head;for(int index=0;index<i;index++){pre=pre.next;}//找到i位置的结点Node curr = pre.next;//创建新结点Node newNode = new Node(t, pre, curr);//让i位置的前一个结点的下一个结点变为新结点pre.next=newNode;//让i位置的前一个结点变为新结点curr.pre=newNode;//元素个数+1N++;}//获取指定位置i处的元素public T get(int i){Node n = head.next;for(int index=0;index<i;index++){n=n.next;}return n.item;}//找到元素t在链表中第一次出现的位置public int indexOf(T t){Node n = head;for(int i=0;n.next!=null;i++){n=n.next;if (n.next.equals(t)){return i;}}return -1;}//删除位置i处的元素,并返回该元素public T remove(int i){//找到i位置的前一个结点Node pre = head;for(int index=0;index<i;index++){pre=pre.next;}//找到i位置的结点Node curr = pre.next;//找到i位置的下一个结点Node nextNode= curr.next;//让i位置的前一个结点的下一个结点变为i位置的下一个结点pre.next=nextNode;//让i位置的下一个结点的上一个结点变为i位置的前一个结点nextNode.pre=pre;//元素的个数-1N--;return curr.item;}@Overridepublic Iterator<T> iterator() {return new TIterator();}private class TIterator implements Iterator{private Node n;public TIterator(){this.n=head;}@Overridepublic boolean hasNext() {return n.next!=null;}@Overridepublic Object next() {n=n.next;return n.item;}}}
测试一下:
相关文章:
(顺序表、单链表、双链表)==>一篇解决!(Java版)
文章目录 一、线性表二、顺序表三、单链表四、双链表 一、线性表 线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。 线性表的特征:数据元素之间具有一种“一对一”的逻辑关系。 线性表的分类: 线…...
大模型常用位置编码方式
深度学习中常见的位置编码方式及其Python实现: 一、固定位置编码(Sinusoidal Positional Encoding) 原理 通过不同频率的正弦和余弦函数生成位置编码,使模型能够捕捉绝对位置和相对位置信息。公式为: 公式标准数学表达…...
【fastadmin开发实战】在前端页面中使用bootstraptable以及表格中实现文件上传
先看效果: 1、前端页面中引入了表格 2、表格中实现文件上传 3、增加截止时间页面 难点在哪呢? 1、这是前端页面,并不支持直接使用btn-dialog的类属性实现弹窗; 2、前端页面一般绑定了layout模板,如何实现某个页面不…...
IO、存储、硬盘、文件系统相关常识
目录 1. IO(输入输出)基础概念 1.1 IO的定义 1.2 流 1.3 IO流 2.存储 2.1 存储技术 2.2 存储介质的分类(机械硬盘、固态硬盘、光盘、磁带) 2.2.1 机械硬盘 2.2.2 固态硬盘 2.2.3 光盘 2.2.4 磁盘 2.3 存储管理 2.4 存…...
amd架构主机构建arm架构kkfileview
修改本机使用镜像仓库地址 vim /etc/docker/daemon.json { “experimental”: true, “registry-mirrors”: [ “https://docker.m.daocloud.io”, “https://docker.1panel.live”, “http://mirrors.ustc.edu.cn/”, “http://mirror.azure.cn/”, “https://docker.hpcloud.…...
日志链路ID配置,traceId多线程不打印什么鬼?
logback.xml 关键配置 [traceId:%X{traceId}] <!-- 彩色日志格式模板 --><property name"log.pattern.color"value"%green(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %highlight(%-5level){FATALred, ERRORred, WARNyellow, INFOgreen, DEBUGcyan, TRA…...
InfluxDB-数据看板实现流程:从数据采集到可视化展示
数据看板的实现涉及到多个步骤和技术组件,以下是基于提供的知识库内容,详细解释数据看板(特别是30日活跃用户数趋势)的实现过程: 1. 数据来源 所有用户行为数据通过网关进行数据埋点,并通过消息队列&…...
Git基本操作命令
文章目录 Git基本操作命令创建仓库命令提交与修改提交日志版本回退分支切换删除文件.gitignore文件远程操作 Git分支管理创建分支查看分支合并分支删除分支保存当前文件未提交更改并切换分支 Git提交历史恢复和回退 Git标签标签推送删除标签附注标签查看标签信息删除标签 Git基…...
JavaScript实践(三)JavaScript序列化与反序列化深度解析
JavaScript中的序列化与反序列化是数据存储、网络传输和跨系统交互的核心技术之一。本文将从底层原理、核心方法、复杂场景处理、安全风险及工程实践等多个维度,系统性地解析这一技术体系,并附完整的代码实现示例。 一、序列化与反序列化的核心价值 序列…...
大模型—— FastGPT 知识库无缝集成到 n8n 工作流 (基于 MCP 协议)
大模型—— FastGPT 知识库无缝集成到 n8n 工作流 (基于 MCP 协议) 背景:n8n 与 RAG 知识库集成的挑战 n8n 作为一款强大的开源自动化工作流工具,正获得越来越多用户的青睐。它由前《加勒比海盗》视觉设计师 Jan Oberhauser 于 2019 年创立,旨在提供比 Zapier 等工具更灵活…...
安卓刷机模式详解:Fastboot、Fastbootd、9008与MTK深刷
安卓刷机模式详解:Fastboot、Fastbootd、9008与MTK深刷 一、刷机模式对比 1. Fastboot模式 简介:传统安卓底层刷机模式,通过USB连接电脑操作优点:支持大多数安卓设备,操作相对简单缺点:需要设备进入特定…...
深入浅出MySQL 8.0:新特性与最佳实践
MySQL作为开源关系型数据库的佼佼者,近年来持续更新迭代,尤其是在8.0版本中引入了一系列令人兴奋的新特性。本文将介绍一些MySQL 8.0的关键新功能,并提供最佳实践,旨在帮助开发人员和DBA更好地利用这一强大的数据库管理系统。 一…...
【登录认证】JWT令牌
一、概述 JWT全称:**JSON Web Token **(https://jwt.io/)定义了一种简洁的、自包含的格式,用于通信双方以json数据格式安全的传输信息。组成: ①第一部分:Header(头),记录令牌类型、签名算法等。例如: (“alg”:" HS256"," type":“…...
coco数据集mAP评估
0 coco数据集划分说明 1 用yolo自带的评估 from ultralytics import YOLOmodel YOLO("../spatial-perception/checkpoints/yolo11n.pt")metrics model.val(data"./coco.yaml", save_jsonTrue) ## save_json为True,可以把预测结果存成json文件ÿ…...
C++23 ranges::range_adaptor_closure:程序定义的范围适配器闭包的辅助类
文章目录 一、背景介绍二、ranges::range_adaptor_closure 的定义与要求三、使用示例四、编译器支持情况五、总结 一、背景介绍 C23 引入了 std::ranges::range_adaptor_closure,这是一个辅助类模板,用于定义用户自定义的范围适配器闭包对象。这一特性主…...
滑动窗口——水果成篮
根据题意我们转化一下,在数组中求一个最长的子数组,数组中的数字种类不超过2种。 借助暴力思想,我们定义双指针进行进窗口、判断、出窗口、更新结果的流程。 我们需要借助hash表来记录不同数字出现的种类以及每个数字出现的次数。然后先让r…...
论文精读:YOLO-UniOW: Efficient Universal Open-World Object Detection
文章目录 前言1、出发点2、方法2.1.符号说明2.2.Efficient Adaptive Decision Learning2.3.Open-World Wildcard Learning 3、实验结果总结 前言 本文介绍一篇来自Tencent的开放词汇和世界检测结合的论文:Yolo-uniow,开源地址。 1、出发点 本篇论文相当…...
网络协议分析 实验四 ICMPv4与ICMPv6
文章目录 实验4.1 ICMP协议练习一 利用仿真编辑器编辑ICMP回显请求报文练习二 ICMP差错报文1.目的端不可达2.超时 练习三 仿真发送ICMP时间戳请求报文实验4.2 IPV6与ICMPV6实验设计题:设计一个能产生ICMPV6超时类型差错报文实验,并截图记录实验结果。 实…...
《100天精通Python——基础篇 2025 第18天:正则表达式入门实战,解锁字符串处理的魔法力量》
目录 一、认识正则表达式二、正则表达式基本语法2.1 行界定符2.2 单词定界符2.3 字符类2.4 选择符2.5 范围符2.6 排除符2.7 限定符2.8 任意字符2.9 转义字符2.10 反斜杠2.11 小括号2.11.1 定义独立单元2.11.2 分组 2.12 反向引用2.13 特殊构造2.14 匹配模式 三、re模块3.1 comp…...
nginx配置反向代理支持CORS跨域请求
nginx配置反向代理支持CORS跨域请求 1. 环境2. 配置Nginx反向代理和CORS添加的响应头包括: 1. 环境 后端springboot,项目端口8080前端vue,项目端口8088 2. 配置Nginx反向代理和CORS server {listen 8088;server_name your_domain.com;location / {root /path/to/…...
英语学习5.13
take the place of 【短语】 👉 关键词:代替、取代、顶替 ✅ 释义: 代替,取代某人或某物的位置或作用 指一个人或事物代替另一个人或事物,履行相同的职责、功能或占据原有的位置。 ✅ 例句: Nothing c…...
NY182NY183美光固态颗粒NY186NY188
NY182NY183美光固态颗粒NY186NY188 在存储技术的竞技场上,美光科技(Micron)始终扮演着革新者的角色。其NY系列固态颗粒凭借前沿的3D NAND架构和精准的工艺控制,成为企业级存储和数据中心的关键支柱。本文将围绕NY182、NY183、NY1…...
数据库--处理模型(Processing Model)
本文将介绍数据库处理模型,处理模型定义了系统如何执行一个查询计划。三种处理模型:迭代器模型、物化模型、向量化模型。 向量化模型是现代OLAP系统所使用的处理模型,它结合了迭代器模型和物化模型的优点。 另外还介绍了查询执行的两种方向:自顶向下(Pull模式),自底向…...
TikTok矩阵运营干货:从0到1打造爆款矩阵
在TikTok的流量浪潮中,运营TikTok矩阵是提升影响力、扩大受众群体的有效策略。无论是品牌推广还是个人IP打造,一个成功的TikTok矩阵都能带来意想不到的收获。下面就为大家分享一些TikTok矩阵运营的实用干货。 一、为什么要做TikTok矩阵 TikTok矩阵就像是…...
如何访问云相关的api
问题 预研访问国外厂商云api相关的代码,发现请求国外厂商云获取token时,发生了下面的错误: com.google.auth.oauth2.GoogleAuthException: Error getting access token for service account: connect timed out, iss: testmanagebucketesot…...
数字IC后端实现教程 | Early Clock Flow和Useful skew完全不是一个东西
数字后端零基础入门系列 | Innovus零基础LAB学习Day10 Q: Early clock flow和useful skew都是做短某段路径,这两个有什么区别呢,既然这样还用useful skew是不是有点多余了? Useful Skew技术 在不使用useful skew技术,第一级FF到第二级FF的…...
用AI制作黑神话悟空质感教程,3D西游记裸眼效果,西游人物跳出书本
目录 一、前言二、作图步骤1.DeepSeek 生成画面场景2.AI作图3.下载高清无码图 一、前言 你是否也想打造这种立体效果?让人物仿佛从纸上跃然而出,质感逼真。这里我以西游记为例,大家完全可以根据个人喜好,尝试创作三国、水浒等题材…...
C++模板
C<模板初阶> 这一集讲一下模板, 这东西理解起来不难, 用起来也很简单, 大家顺着看就ok. void Swap(int& left, int& right)//参数是引用 {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp left;left …...
系统平衡与企业挑战
在复杂的系统中,一切都在寻找平衡,而这个平衡从不静止。它在不断的变化与反馈中调整,以适应外界环境的变动。就像一个企业,它无法完全回避变化,但却总是在挑战中寻找新的平衡点。 最近遇到一家企业,引入了…...
【AI News | 20250513】每日AI进展
AI Repos 1、iap-diffusion-labs 从零开始带我们构建完整的扩散模型。通过三个精心设计的实验练习,循序渐进地引导我们实现流匹配和扩散模型,从基础 SDE 到条件图像生成,每一步都有详尽指导和完整代码,让复杂理论简单易懂。主要内…...
upload-labs通关笔记-第3关 文件上传之黑名单绕过
目录 一、实验准备 1.构造脚本 2.打开靶场第三关 3.源码分析 4.修改配置使支持php后缀 (1)切换php ts版本 (2)定位httpd.conf文件 (3)修改AddType application字段 (4)重启…...
【Redis】RedLock实现原理
Redis的RedLock是一种分布式锁算法,旨在通过多节点协作解决传统单节点Redis锁的容错性问题。其核心原理如下: 1. 设计目标 互斥性:同一时刻只有一个客户端持有锁。死锁避免:锁自动超时释放,防止客户端崩溃导致死锁。容…...
IPD流程实战:产品开发各阶段目标、关注点和交付
目录 简介 1、概念阶段 2、计划阶段 3、开发阶段 4、验证阶段 5、发布阶段 6、生命周期阶段 作者简介 简介 IPD的产品开发是一个多阶段协同的过程,上一个环节的输出是下一个环节的输入,每个阶段的交替都体现出了用户思维。 尽可能确保最终的输…...
植物大战僵尸杂交版v3.6最新版本(附下载链接)
B站游戏作者潜艇伟伟迷于5月13日更新了植物大战僵尸杂交版3.6.5版本!!!,有b站账户的记得要给作者三连关注一下呀! 不多废话下载链接放上: 夸克网盘链接::https://pan.quark.cn/s/037…...
激光打印机常见打印故障简单处理意见
一、 问题描述: 给打印机更换新的硒鼓时拉开硒鼓封条时有微量碳粉带出; 原因: 出厂打印测试时,可能会有微量碳粉在磁辊上或者磁辊仓; 解决方法: 擦干净即可正常使用; 二、 问题描述&…...
代码随想录算法训练营第60期第三十五天打卡
今天是我们贪心算法章节的最后一天,今天有三道题目需要讲解,但是最后又一道题目叫做监督二叉树的题目难度比较大,我打算二刷代码随想录的时候再来给大家讲解,因此我们今天就只讲解前两道题目,昨天的区间重叠问题是贪心…...
我的五周年创作纪念日
五年前的今天,我在CSDN发布了第一篇《基于VS2015的MFC学习笔记(常用按钮button)》,文末那句"欢迎交流"的忐忑留言,开启了这段充满惊喜的技术旅程。恍然发觉那些敲过的代码早已成长为参天大树。 收获 获得了…...
OpenCV特征处理全解析:从检测到匹配的完整指南
一、计算机视觉中的特征处理概述 在计算机视觉领域,特征处理是指从图像中提取、描述和匹配具有辨识度的局部或全局特征的过程。一个完整的特征处理流程通常包括三个关键步骤: 特征检测:在图像中寻找具有独特性质的点或区域特征描述…...
C++11 ——右值引用和移动语义
目录 一、基本概念左值 vs 右值左值引用 vs 右值引用 二、右值引用使用场景和意义左值引用的使用场景左值引用的短板右值引用和移动语义右值引用引用左值右值引用的其他使用场景右值引用总结 三、完美转发右值前置知识万能引用完美转发保持值的属性完美转发的使用场景 四、总结…...
使用交互式半自动化标注工具制作语义分割数据集
参考的初始资源: GitHub项目文档 B站视频 1.安装工具 打开Anaconda Prompt 1.创建虚拟环境 conda create -n isat_env python3.8 conda activate isat_env2.安装GPU版本pytorch 4070 Ti CUDN12.5 pip install torch torchvision torchaudio --index-url https:/…...
阿里二面:聊聊 MySQL 主从同步方案的优缺点
大家好,我是君哥。今天来聊一聊 MySQL 主从架构。 MySQL Replication 是 MySQL 官方提供的主从同步方案,用于将 MySQL 主库的数据同步到从库中,从库可以供应用程序读取数据。 1 简介 Replication 是目前 MySQL 使用最多的灾备方案…...
YOLO11解决方案之物体模糊探索
概述 Ultralytics提供了一系列的解决方案,利用YOLO11解决现实世界的问题,包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 物体模糊是指对图像或视频中的特定检测对象应用模糊处理,这可以利用YOLO11 模型…...
Elecron 相关介绍以及常见的面试问题
一、深入介绍 Electron Electron 是一个由 GitHub 开发和维护的免费开源软件框架,允许开发者使用 Web 技术(HTML、CSS 和 JavaScript)构建桌面应用程序 。它将 Chromium 渲染引擎和 Node.js 运行时环境相结合,为开发者提供了一套…...
基于STM32、HAL库的ADAU1701JSTZ音频接口芯片驱动程序设计
一、简介: ADAU1701JSTZ 是 Analog Devices 公司推出的一款高性能、低功耗音频编解码器 (CODEC) 芯片。它专为便携式音频设备设计,集成了麦克风前置放大器、ADC、DAC、耳机放大器等功能模块,支持多种音频接口和采样率,非常适合与 STM32 微控制器配合使用。 主要特性: 24…...
【氮化镓】电子辐照下温度对GaN位移阈能的影响
2024年,华东师范大学的彭胜国等人基于从头算分子动力学(AIMD)方法,研究了低能电子束辐照下温度对氮化镓(GaN)位移阈能(TDE)的影响。实验结果表明,在初始动能40至80 eV的范围内,镓(Ga)和氮(N)原子作为初级击出原子(PKAs)引发的位移对温度呈现不同的敏感性:Ga 的…...
NLTK库: 数据集3-分类与标注语料(Categorized and Tagged Corpora)
NLTK库: 数据集3-分类与标注语料(Categorized and Tagged Corpora) 1.二分类语料 主要是电影语料,和情绪(积极消极、主观客观)有关,有以下2个语料: 1.1 movie_reviews: IMDb 影评 IMDb(Internet Movie …...
物理:人的记忆是由基本粒子构成的吗?
问题: 基因属于人体的一部分,记忆也是人体的一部分,那么为什么基因可以代际遗传,但是记忆却被清空重置。如果基因是由粒子构成,那么记忆是不是也应该由粒子构成?如果记忆是粒子构成的,那么能否说明记忆永恒,即使死亡了身体被分解了,那么只要保证其身体有关的所有粒子被…...
加速度策略思路
一种基于技术指标和动态止损策略的交易方法,旨在提高交易的灵活性和风险控制能力。 1 -动态止损价格计算:该函数通过计算ATR(平均真实范围)和盈利峰值价,结合加速系数,动态调整止损价格。具体来说…...
【计算机组成原理】第二部分 存储器--分类、层次结构
文章目录 分类&层次结构0x01 分类按存储介质分类按存取方式分类按在计算机中的作用分类 0x02 层次结构 分类&层次结构 0x01 分类 按存储介质分类 半导体存储器磁表面存储器磁芯存储器光盘存储器 按存取方式分类 存取时间与物理地址无关(随机访问&#…...
Spring AI 开发本地deepseek对话快速上手笔记
Spring AI Spring AI是一个旨在推进生成式人工智能应用程序发展的项目,Spring AI的核心目标是提供高度抽象化的组件,作为开发AI应用程序的基础,使得开发者能够以最少的代码改动便捷地交换和优化功能模块 在开发之前先得引入大模型…...