【Java数据结构】详解LinkedList与链表(一)
🔒文章目录:
1.❤️❤️前言~🥳🎉🎉🎉
2.ArrayList的缺陷
3.链表的概念及结构
4.无头单向非循环链表的实现
4.1成员属性
4.2成员方法
createList
display——打印链表
addFirst——头插
addLast——尾插
size——获取单链表长度
addIndex——在任意位置插入
contains——判定是否包含某个元素
remove——删除第一次出现关键字为key的结点
removeAll——删除所有值为key的结点
clear——清空单链表
4.3完整代码及使用
完整代码
完整代码的使用
5.总结
1.❤️❤️前言~🥳🎉🎉🎉
Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。
如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的内容感兴趣,记得关注我👀👀以便不错过每一篇精彩。
当然,如果在阅读中发现任何问题或疑问,我非常欢迎你在评论区留言指正🗨️🗨️。让我们共同努力,一起进步!
加油,一起CHIN UP!💪💪
🔗个人主页:E绵绵的博客
📚所属专栏:1. JAVA知识点专栏
深入探索JAVA的核心概念与技术细节
2.JAVA题目练习
实战演练,巩固JAVA编程技能
3.c语言知识点专栏
揭示c语言的底层逻辑与高级特性
4.c语言题目练习
挑战自我,提升c语言编程能力
📘 持续更新中,敬请期待❤️❤️
借鉴文章:Java【链表】详细图解/ 模拟实现+【LinkedList】常用方法介绍_java linkedlist方法-CSDN博客
2.ArrayList的缺陷
上篇文章已经熟悉了ArrayList的使用,并且进行了简单模拟实现。通过源码知道,ArrayList底层使用数组来存储元素
但由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后 搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。
所以:java 集合中又引入了LinkedList,即链表结构。
3.链表的概念及结构
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。
注意:
1.从上图可看出,链式结构在逻辑上是连续的,但是在物理上不一定连续
2.其结点一般都是从堆上申请出来的
3.从堆上申请的空间,是按照一定的策略来分配的,两次申请的空间可能连续,也可能不连续
🎯🎯实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:
1. 单向或者双向
2.带头或者不带头
3. 循环或者非循环
虽然有这么多的链表的结构,但是我们重点掌握两种:
1.无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如 哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。
2.无头双向非循环链表:在Java的集合框架库中LinkedList底层实现就是无头双向非循环链表。
4.无头单向非循环链表的实现
4.1成员属性
要模拟实现链表,也得自己实现一个类,首先要考虑这个类中的成员属性
已经说过,链表是由多个结点 “链接” 而成的,那么需要定义一个 静态内部类 Node:其中有两个域:
📌值域 value :来记录这个结点的值
📌指针域 next:来记录下一个结点的地址📌并且它还需要一个构造方法:在创建ListNode内部类的同时分配好value的值。
📌模拟的链表中还需要一个 成员变量:head 来记录当前链表的头结点。
public class SingleLinkedList {static class ListNode{public int value;public ListNode next;public ListNode(int value) {this.value = value;}}public ListNode head;
4.2成员方法
createList
该方法是我们自己为了方便独创的,实际链表方法中并不存在该方法。
public void createList(){ListNode listNode1 = new ListNode(45);ListNode listNode2 = new ListNode(46);ListNode listNode3 = new ListNode(50);ListNode listNode4 = new ListNode(56);ListNode listNode5 = new ListNode(67);listNode1.next=listNode2;listNode2.next=listNode3;listNode3.next=listNode4;listNode4.next=listNode5;head=listNode1;}
该方法创建了一个内部节点为5个的无头单向非循环链表。(注意结尾head要指向ListNode1,否则该链表之后会自动被释放掉)
display——打印链表
注意:LinkedList 中不存在该方法,为了方便看测试结果
public void display(){ListNode cur=head;while(cur!=null){System.out.print(cur.value+" ");cur=cur.next;}System.out.println();}
addFirst——头插
❗️❗️和顺序表不同,链表是由一个个结点组成的,而顺序表可以理解为一个数组
顺序表插入之前必须考虑数组是否以及满了,而链表只需要关心各个结点的next即可。因为我们还有一个成员属性:head,是用来记录头结点的
所以链表的头插操作就是:
1️⃣new 一个结点 node,类型是 Node
2️⃣链接:把头结点的地址( head 的值)赋给 node 的指针域 next
3️⃣head 记录新的头结点public void addFirst(int a){ListNode listNode = new ListNode(a);listNode.next=head;head=listNode; }
addLast——尾插
尾插步骤:
1️⃣new 一个 node,类型是 Node
2️⃣找到尾结点
3️⃣链接:把 node 的值(也就是地址)赋给尾结点的指针域 next🚗🚗🚗
如何找到尾结点呢❓
需要 从头结点开始,遍历链表,找到一个结点的指针域 next 域为 null,它就是尾结点✅head 是用来标记头结点的,所以 head 不能随意更改
我们需要再定义一个 Node 类型的 cur,让 cur 遍历链表当 cur 找到尾结点后,需要让此时的尾结点和新结点 node 连接上
即如下图:并且我们还需要注意一个特殊情况:
cur 这个变量中存放的值 要更改为下一个结点的地址:cur = cur.next;但当cur == null 时,这里就会发生空指针异常❌,那么在实例中是否会出现这种情况?
如果 head 一开始就是 null ,也就是链表为空时,cur 就会被 head 赋值成 null,就会发生空指针异常。所以当链表为空时,就不需要遍历链表找尾结点,直接把 node 的值赋给 head 即可。
public void addLast(int a){ListNode listNode = new ListNode(a);ListNode cur=head;if(head==null){head=listNode;return; }while(cur.next!=null){cur=cur.next;}cur.next=listNode; }
size——获取单链表长度
直接遍历链表即可
public int size(){int count=0;ListNode cur=head;while(cur!=null){cur=cur.next;count++;}return count;}
addIndex——在任意位置插入
官方规定第一个数据的位置是0,和数组的位置(下标)规则一致
所以我们首先要判断 index 的合法性:index<0 || index >链表长度是不合法❌的
index 合法的情况下,如何在index位置插入删除呢❓
📌index == 0就是头插
📌index = 链表长度就是尾插
❗️主要是链表中间位置的插入和删除要想在两个结点中间插入新结点,首先要找到这两个结点的地址
找到 index -1 结点的位置也就相当于找到了 index 结点的位置找到其位置很简单,cur 遍历链表 index-1 次即可
具体插入步骤:
1️⃣node.next = prevIndex.next;
2️⃣prevIndex.next = node;这两行不能交换位置❗️❗️❗️
如果先让 prevIndex.next = node;那么就会丢失 index 位置的那个结点↪️,此时 node.next = prevIndex.next 就相当于 node.next = node;代码会发生错误❌
注意还有一个特殊点当链表中无任何节点,为null时,无论index为何值,都会直接添加一个节点。
public void addIndex(int index,int a){if(head==null){ListNode listNode = new ListNode(a);head=listNode;return;}if(index<0||index>size()){System.out.println("位置不合法");//这里就不搞抛出异常了,我们简单点return;}if(index==0){addFirst(a);return;}if(index==size()){addLast(a);return;}ListNode listNode = new ListNode(a);ListNode cur=head;for (int i = 0; i <index-1 ; i++) {cur=cur.next;}listNode.next=cur.next;cur.next=listNode; }
contains——判定是否包含某个元素
比较简单,遍历这个数组即可
public void contain(int key){ListNode cur=head;while(cur!=null){if(cur.value==key){System.out.println(true);return;}cur=cur.next;}System.out.println(false); }
因为这里我们存放的是 int 类型的变量,但 LinkedList 当中是存放引用数据类型的
⚠️⚠️⚠️当表中是引用类型时,就不可以用“等号”比较,应该用 equals 方法
remove——删除第一次出现关键字为key的结点
1️⃣如果链表为空就不能再删了
2️⃣如果头结点就是要删除的 key 结点,直接 head 存放下一个结点的地址
3️⃣如果链表其他结点是要删除的 key 结点,要先找到 key 结点的前一个结点当 key 结点的前一个结点的 next 不再存放 key 结点地址时,key 结点此后不会再被使用,会被系统自动回收🗑️
所以完整代码如下:
public void remove(int key){ListNode cur=head;if(head==null) {System.out.println("为空链表,不能进行删除操作");return;}if(cur.value==key) {head=head.next;return;}while(cur.next!=null){if(cur.next.value==key){cur.next=cur.next.next;return;}cur=cur.next;}System.out.println("不存在该数"); }
removeAll——删除所有值为key的结点
这里我们将cur从head处开始检验:
当cur的下一个节点中的值等于key时: cur.next=cur.next.next,否则cur=cur.next。
最后检测完毕后还要看一下head处的值是否等于key,如果等于则将head=head.next。
完整代码如下:
public void removeAll(int key){if(this.head == null) {System.out.println("为空链表,不能进行删除操作");return;}ListNode cur = head;while(cur.next != null){if(cur.next.value == key){cur.next=cur.next.next;}else {cur = cur.next;}}if(head.value==key){head = head.next;}}
clear——清空单链表
head 这个变量一直存放着链表的头结点位置,把head置空,就找不到此链表,那么链表中的所有结点都会被系统自动回收🗑️
public void clear() {head = null;}
4.3完整代码及使用
完整代码
public class SingleLinkedList {static class ListNode{public int value;public ListNode next;public ListNode(int value) {this.value = value;}}public ListNode head;public void createList(){ListNode listNode1 = new ListNode(45);ListNode listNode2 = new ListNode(46);ListNode listNode3 = new ListNode(50);ListNode listNode4 = new ListNode(56);ListNode listNode5 = new ListNode(67);listNode1.next=listNode2;listNode2.next=listNode3;listNode3.next=listNode4;listNode4.next=listNode5;head=listNode1;}public void display(){ListNode cur=head;while(cur!=null){System.out.print(cur.value+" ");cur=cur.next;}System.out.println();}public int size(){int count=0;ListNode cur=head;while(cur!=null){cur=cur.next;count++;}return count;}
public void contain(int key){ListNode cur=head;while(cur!=null){if(cur.value==key){System.out.println(true);return;}cur=cur.next;}System.out.println(false);
}public void addFirst(int a){ListNode listNode = new ListNode(a);listNode.next=head;head=listNode;
}
public void addLast(int a){ListNode listNode = new ListNode(a);ListNode cur=head;if(head==null){head=listNode;return;
}while(cur.next!=null){cur=cur.next;}cur.next=listNode;
}public void addIndex(int index,int a){if(head==null){ListNode listNode = new ListNode(a);head=listNode;return;}if(index<0||index>size()){System.out.println("位置不合法");//这里就不搞抛出异常了,我们简单点return;}if(index==0){addFirst(a);return;}if(index==size()){addLast(a);return;}ListNode listNode = new ListNode(a);ListNode cur=head;for (int i = 0; i <index-1 ; i++) {cur=cur.next;}listNode.next=cur.next;cur.next=listNode;
}public void remove(int key){ListNode cur=head;if(head==null) {System.out.println("为空链表,不能进行删除操作");return;}if(cur.value==key) {head=head.next;return;}while(cur.next!=null){if(cur.next.value==key){cur.next=cur.next.next;return;}cur=cur.next;}System.out.println("不存在该数");
}public void removeAll(int key){if(this.head == null) {System.out.println("为空链表,不能进行删除操作");return;}ListNode cur = head;while(cur.next != null){if(cur.next.value == key){cur.next=cur.next.next;}else {cur = cur.next;}}if(head.value==key){head = head.next;}}public void clear(){head=null;}}
完整代码的使用
public class Test {public static void main(String[] args) {SingleLinkedList singleLinkedList = new SingleLinkedList();singleLinkedList.createList();singleLinkedList.display();System.out.println(singleLinkedList.size());singleLinkedList.contain(45);singleLinkedList.addFirst(12);singleLinkedList.addLast(67);singleLinkedList.addIndex(3, 22);singleLinkedList.display();singleLinkedList.remove(22);singleLinkedList.remove(12);singleLinkedList.display();singleLinkedList.removeAll(67);singleLinkedList.display();System.out.println("=======================");singleLinkedList.clear();//清空该链表singleLinkedList.display();System.out.println("已清空该链表");System.out.println("=======================");}}
5.总结
所以,我们在本文中详细讲述了链表的概念和结构,并成功模拟了无头非循环单链表的实现。在下篇文章中,我们将带来一些关于单链表的面试题。在此,我们诚挚地邀请各位大佬们为我们点赞、关注,并在评论区留下您宝贵的意见与建议。让我们共同学习,共同进步,为知识的海洋增添更多宝贵的财富!🎉🎉🎉❤️❤️💕💕🥳👏👏👏
相关文章:
【Java数据结构】详解LinkedList与链表(一)
🔒文章目录: 1.❤️❤️前言~🥳🎉🎉🎉 2.ArrayList的缺陷 3.链表的概念及结构 4.无头单向非循环链表的实现 4.1成员属性 4.2成员方法 createList display——打印链表 addFirst——头插 addLast…...
PDF高效编辑器革新:一键智能转换PDF至HTML,轻松开启文件处理全新时代!
信息爆炸的时代,PDF文件因其跨平台、不易修改的特性,成为了商务、教育、出版等领域不可或缺的文件格式。然而,PDF文件的固定性也带来了诸多不便,特别是在需要对其内容进行编辑或格式转换时。这时,一款高效、易用的PDF编…...
JDBC知识
JDBC是什么? 这工作中我们针对数据库的操作,实际上很少会用到SQL语句,通过命令行/图形化来操作数据库,更多的是通过主流的编程语言来对数据库进行操作,即使通过代码来操作数据,我们还是会使用到SQL语句,所以掌握SQL语句也是很重要的. 如何通过代码操作数据库? 通过代码操作…...
C++操纵符用法
C中的操纵符(Manipulators)是用于格式化输入输出的特殊工具。它们可以在输出流中控制各种格式,如设置字段宽度、精度、填充字符等。以下是一些常用的操纵符及其用法: setw(int width): 设置字段宽度为width个字符。 cout <<…...
【一步一步了解Java系列】:子类继承以及代码块的初始化
看到这句话的时候证明:此刻你我都在努力 加油陌生人 个人主页:Gu Gu Study专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者:小闭 …...
探索Expect Python用法:深入解析与实战挑战
探索Expect Python用法:深入解析与实战挑战 在自动化和脚本编写领域,Expect Python已经成为了一种强大的工具组合。它结合了Expect的交互式会话处理能力和Python的编程灵活性,为开发者提供了一种全新的方式来处理复杂的自动化任务。然而&…...
【PostgreSQL17新特性之-explain命令新增选项】
EXPLAIN是一个用于显示语句执行计划的命令,可用于显示以下语句类型之一的执行计划: - SELECT - INSERT - UPDATE - DELETE - VALUES - EXECUTE - DECLARE - CREATE TABLE AS - CREATE MATERIALIZED VIEWPostgreSQL17-beta1版本近日发布了,新…...
JAVA实现人工智能,采用框架SpringAI
文章目录 JAVA实现人工智能,采用框架SpringAISpring AI介绍使用介绍项目前提项目结构第一种方式采用openai1. pom文件: 2. application.yml 配置3.controller 实现层 项目测试 JAVA实现人工智能,采用框架SpringAI Spring AI介绍 Spring AI是AI工程师的一个应用框架…...
基础—SQL—DQL(数据查询语言)分组查询
一、引言 分组查询的关键字是:GROUP BY。 二、DQL—分组查询 1、语法 SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ]; 注意: 1、[ ] 里的内容可以有可以没有。 2、这条SQL语句有两块指定条件的地方&#…...
从CSV到数据库(简易)
需求:客户上传CSV文档,要求CSV文档内容查重/插入/更新相关数据。 框架:jdbcTemplate、commons-io、 DB:oracle 相关依赖: 这里本来打算用的2.11.0,无奈正式项目那边用老版本1.3.1,新版本对类型…...
K210视觉识别模块学习笔记3:内存卡写入拍摄图片_LED三色灯的操作_按键操作_定时器的配置使用
今日开始学习K210视觉识别模块: LED三色灯的操作_按键操作_定时器的配置使用_内存卡写入拍摄图片 亚博智能的K210视觉识别模块...... 固件库版本: canmv_yahboom_v2.1.1.bin 本文最终目的是编写一个按键拍照的例程序: 为以后的专用场景的模型训练做准备…...
如何定义“智慧校园”这个概念
在信息爆炸的时代,教育面临着前所未有的挑战:如何让每个学生在海量知识中找到属于自己的路径?如何让教师的智慧与科技的力量相得益彰?如何让校园成为培养创新思维的摇篮?智慧校园,这一概念的提出࿰…...
OpenSSL自签名证书
文章目录 生成1. 生成根证书的私钥(root_private_key.pem)2. 创建根证书的CSR和自签名证书(root_csr.pem)3. 生成服务器证书的私钥(server_private_key.pem)4. 创建服务器证书的CSR(server_priv…...
QtCreator调试运行工程报错,无法找到相关库的的解决方案
最新在使用国产化平台做qt应用开发时,总是遇到qtcreator内调试运行 找不到动态库的问题,为什么会出现这种问题呢?明明编译的时候能够正常通过,运行或者调试的时候找不到相关的库呢?先说结论,排除库本身的问…...
【Python系列】Python 元组(Tuple)详解
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
特征融合篇 | YOLOv8 引入动态上采样模块 | 超过了其他上采样器
1. 介绍 本篇介绍了一种将动态上采样模块引入 YOLOv8 目标检测算法的新方法,该方法在 COCO 数据集上获得了 55.7% 的 mAP,超越了其他上采样器。该方法将动态上采样模块引入到 YOLOv8 的特征融合阶段,能够根据输入图像的特征分辨率动态调整上…...
Beyond Compare 3密钥被撤销的解决办法
首先,BCompare3的链接如下 链接:https://pan.baidu.com/s/1vuSxY0cVQCt0-8CpFzUhvg 提取码:8888 --来自百度网盘超级会员V7的分享 1.问题现象 激活之后在使用过程中有时候会出现密钥被撤销的警告,而且该工具无法使用ÿ…...
知识见闻 - 人和动物的主要区别
人类和动物的主要区别之一确实在于理性,但这只是众多区别中的一个方面。以下是一些更全面的比较,突出人类和动物之间的主要区别: 理性和抽象思维: 人类:人类具有高度发展的理性能力,可以进行抽象思维、逻辑…...
Javaweb基础之工程路径
大家好,这里是教授.F 引入: 工程路径有一个知识点需要注意:就是相对路径。所谓相对路径就是依赖当前位置: 相对路径的定位依赖于当前位置或参考位置。 使用相对路径来解决, 一个非常重要的规则:页面所有的…...
国际荐酒师(香港)协会受邀出席广州意大利国庆晚宴
2024年5月30日,意大利驻广州总领事馆举办的2024年意大利国庆招待会及晚宴,庆祝意大利共和国成立。此次晚宴旨在促进中意两国之间的文化交流与合作。国际荐酒师(香港)协会受主办方邀请参与了这一重要活动。 国际荐酒师(…...
让驰骋BPM系统插上AI的翅膀
让驰骋BPM系统插上AI的翅膀 在当今日益复杂多变的商业环境中,业务流程管理(BPM)系统的应用愈发广泛,成为企业提高效率、优化流程、降低成本的重要工具。驰骋BPM系统凭借其出色的性能和丰富的功能,赢得了众多企业的青睐…...
排队论 | 基于排队机制实现智能仓储机器人巡逻及避碰
研究背景: 智能仓储机器人在现代物流行业中扮演着重要的角色,能够提高仓库的运作效率和准确性。然而,仓储机器人在巡逻过程中可能会遇到其他机器人或障碍物,这就需要解决排队和避碰问题,以确保安全和高效的运作。 研究路线: 背景调研:了解智能仓储机器人的发展和应用…...
Node.js和npm常用命令
一、Node.js简介 Node.js是一个免费、开源、跨平台的JavaScript运行时环境,允许开发人员创建服务器、web应用程序、命令行工具和脚本。 点击查看node.js中文官网 点击查看node.js英文官网 二、npm简介 npm(Node Package Manager)是Node.js的软件包管理器࿰…...
pytest +allure在测试中的应用
一、allure配置: 1、安装allure库 pip install allure-pytest2、代码中导入 import allure3、常用命令: 1)、 pytest --alluredir报告目录 测试脚本.py比如:pytest --alluredir./allure_report (未指定执行所有) 2&…...
004 CentOS 7.9 mongodb7.0.11安装及配置
https://www.mongodb.com/try/download/shell https://www.mongodb.com/try/download/community 文章目录 /etc/mongod.conf在 /etc/systemd/system/ 目录下创建一个名为 mongod.service 的文件重新加载 systemd 配置:启用服务:现在,可以手动…...
Docker安装Redis(云服务器)
准备: 在云服务器中开启6370端口号 docker run -d --name redis -p 6379:6379 redis 这条命令使用docker运行一个名为"redis"的容器,映射容器的6379端口到主机的6379端口,并且使用redis镜像来运行容器。REDIS是一个开源的内存数据…...
springboot中抽象类无法注入到ioc容器
1、背景 在写代码时,发现service接口有两个实现类,并且两个实现类中没有对类名重命名,属性注入的时候也没有使用byName或Qualifier,正确情况下会发生多实现报错的问题,以前对这个问题进行解析过。 2、调试过程 我想…...
Java关键字大冒险:深入浅出地理解Java的精髓
Java编程语言中的关键字就像是魔法咒语,每一个都有自己独特的作用。在这篇博客中,我们将探讨Java中最常见的关键字,并通过有趣的例子和形象的比喻,让你轻松掌握它们的用法。 1. public: 万能钥匙 public关键字是Java中的“万能钥…...
Android Kotlin 打开相册选择图片(多选)
1. 核心代码 打开系统相册功能,本代码使用两种方式打开本地相册,startActivityForResult 已经废弃,可以使用新的方式。 package com.example.facedetectordemoimport android.content.pm.PackageManager import androidx.appcompat.app.App…...
java学习路径
ProcessOn Mindmap...
[线程与网络] 网络编程与通信原理(四):深入理解传输层UDP与TCP协议
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …...
IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战
IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战 在信息技术领域,编程语言排行榜一直是衡量各种编程语言流行度和影响力的重要指标。IEEE(电气电子工程师协会)作为全球最具影响力的科技专业组织之…...
【C++面试50题】
以下是针对C程序员面试可能遇到的一些问题,涵盖了从基础语法、面向对象、STL、内存管理、模板、异常处理、并发编程等多个方面。 ### 基础概念与语法 1. C与C的主要区别是什么? 2. 什么是构造函数和析构函数?它们何时被调用? 3. 什…...
外汇天眼:ESMA发布针对在投资服务中使用人工智能的公司的指导意见
欧洲证券和市场管理局(ESMA),欧盟的金融市场监管机构和监督机构,发布了一份声明,为在向零售客户提供投资服务时使用人工智能技术(AI)的公司提供初步指导。 尽管人工智能的普及仍处于初期阶段&am…...
【前缀和 记忆化搜索】LeetCode1444. 切披萨的方案数
本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 动态规划 记忆化搜索 LeetCode1444. 切披萨的方案数 给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: ‘A’ ÿ…...
异常处理1--5.31
try--catch--finally格式: try{ }catch(错误类型){ }finally{ } 执行情况: package javatest5;public class test {public static void main(String[] args) {int num115;int num20;try{System.out.println("商等于:"num1/num…...
AI免费插件 批量条码大师,支持100多种条码类型
没想到在网上看到一款和之前 悟空条码 类似的条码插件,叫批量条码大师,他做的比 悟空条码 功能更强,界面更美观,特分享出来给大家。 本插件采用了BWIPJS条码库,支持110种条码、二维码的生成; 支持批量生成,…...
使用 Django 连接 MySQL 数据库
文章目录 步骤一:安装必要的库和驱动步骤二:配置数据库连接步骤三:执行数据库迁移步骤四:开始使用 MySQL 数据库创建一个模型迁移模型到数据库使用模型进行数据操作创建新记录:查询记录:更新记录࿱…...
【谷歌开发者月刊】五月内容汇总,Google I/O 点燃您的创新灵感
五月因 Google I/O 大会的成功举办而备受瞩目,我们在为开发者们带来技术更新的同时,更提供了丰富的学习资源。一起在本期月刊中回顾精彩内容,带着学习热情继续探索技术的更新与发展吧! 本月看点 精彩看点多多,请上下滑…...
wpf 实现长时间未操作自动退出登录
思路 在WPF应用程序中实现长时间未操作自动退出,主要思路是先收集用户操作行为,用一个全局变量记录用户最后操作时间,再用一个异步线程去监控用户的最后操作时间和当前时间进行比较如果超过了设定时间认为长时间未操作自动退出登录并显示相关…...
pytorch学习笔记3
标量数据 标量数据通常指的是单个数值,比如一个损失值、准确率、学习率等。这些单个的数值数据可以被记录下来,用于分析模型的训练过程、性能等。在代码中,writer.add_scalar() 的作用就是将这些标量数据添加到日志中,以便后续在可…...
开源监控工具monit安装部署
Monit 简介 Monit是一个轻量级(500KB)跨平台的用来监控Unix/linux系统的开源工具。部署简单,并且不依赖任何第三方程序、插件或者库。 Monit可以监控服务器进程、文件、文件系统、网络状态(HTTP/SMTP等协议)、远程主机、服务器资源变化等等。…...
Python 时间戳转时间
一、 10 位 时间戳 ,秒级 转换为时间 方式一: import timetimeStamp 1717149862 timeArray time.localtime(timeStamp) timeStr time.strftime("%Y-%m-%d %H:%M:%S", timeArray) print(timeStr) 输出: 2024-05-31 18:04:22方式二…...
【网络层】IP地址基础 与 子网掩码
文章目录 IP地址基础IP地址概念IP地址分类公网地址和私网地址 子网掩码子网掩码作用默认子网掩码网络地址、主机地址、广播地址 IP地址基础 IP地址概念 IP地址:IP Address 在网络中,通信节点都需要有一个IP地址 IP地址以点分十进制表示,有…...
Cholesky分解(A=L * L^T)
Cholesky分解是一种用于解线性方程组和计算矩阵平方根的算法,特别适用于对称正定矩阵。这种方法相比于其他解法(如高斯消元法)在数值稳定性上通常有更好的表现,并且能够有效地利用矩阵的对称性和正定性。下面简要介绍如何使用Chol…...
2024大模型新应用井喷即将到来,算力问题如何解决?
#大模型新应用 #NLP #智合同 随着人工智能技术的加速演进,AI大模型已成为全球科技竞争的新高地、未来产业的新赛道、经济发展的新引擎。大模型的快速发展,特别是在自然语言处理(NLP)和计算机视觉(CV)等…...
SpringBoot 七牛云 OSS 私有模式 获取访问链接
目录 一、问题引出 二、在SpringBoot中获取私有访问路径的操作 一、问题引出 由于七牛云OSS的公有模式存在被盗刷的风险,可能导致服务器额外的费用,于是我选择私有模式进行操作。私有模式的访问路径是一个问题,因为需要对应着token和e这两…...
python-模块-网络编程-多任务
一、模块 1-1 Python 自带模块 Json模块 处理json数据 {"key":"value"} json不是字典 本质是一个有引号的字符串数据 json注意点 {} 中的数据是字符串引号必须是双引号 使用json模块可以实现将json转为字典,使用字典的方法操作数据 。 或者将…...
火狐浏览器网页翻译
火狐浏览器网页翻译 火狐浏览器的翻译功能并不支持中文,无法将中文翻译成其他语言,也不支持将其他语言翻译成中文。如果需要翻译英文网页,可以安装翻译插件来帮助解决这个问题。 安装翻译插件的步骤如下: 打开火狐浏览器ÿ…...
R语言数据分析案例以及要点和难点
该案例将涵盖数据读取、数据清洗、探索性数据分析(EDA)、数据可视化和简单的统计分析等多个方面。本案例将以一家零售商店的销售数据为例,使用R语言进行数据分析。 1. 数据准备 假设我们有一个名为sales_data.csv的CSV文件,其中包含了零售商店的销售数据。该文件包含以下列…...