【LinkedList与链表】
目录
1,ArrayList的缺陷
2,链表
2.1 链表的概念及结构
2.2 链表的实现
2.2.1 无头单向非循环链表实现
3,LinkedList的模拟实现
3.1 无头双向链表实现
4,LinkedList的使用
4.1 什么是LinkedList
4.2 LinkedList的使用
5,ArrayList和LinkedList的区别
1,ArrayList的缺陷
当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。因此:java 集合中又引入了LinkedList,即链表结构。
2,链表
2.1 链表的概念及结构
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。
链表是由一个一个节点组织起来的,整体就叫做链表
注意:
1,从上图可以看出,链式结构在逻辑上是连续的,但是在物理上(地址)不一定是连续的
2,现实中的节点一般都是从堆上申请出来的
3,从堆上申请的空间,是按照一定的策略来分配的,两次申请的空间可能连续,可能不连续
实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:
1. 单向或者双向
2. 带头或者不带头
3. 循环或者非循环
我们主讲单向不带头非循环和双向不带头非循环:因为截止到目前为止,所有链表的题考的都是单项不带头非循环
1,单向不带头非循环:
带头:
如果是带头的,头节点里面也可以存储值,但是不具备意义,可以认为头节点是一个标志,永远是头,不会动了,就是说对于不带头的链表,如果把12删了,head就会指向23节点的地址,对于带头的链表来说,把12删了,head还是在原来位置。
循环:
无头双向链表:在Java的集合框架库中LinkedList底层实现就是无头双向非循环链表。
2.2 链表的实现
2.2.1 无头单向非循环链表实现
1,首先定义一个类,表链是由多个节点组成的,节点是一个完整的结构,提供给链表使用,我们就可以把节点定义到内部类当中,节点当中至少有两个域,value的类型是int,next是用来存下一个节点的地址的,所以next的类型应该是节点的类类型。
2,整个链表有一个东西叫做head,代表指向当前的链表,属于链表的属性,代表的是链表的头节点部分。head存的也是地址,即类型为节点类型
3,创建链表,外部类里面定义一个方法,用于链表的实现。首先有很多节点,一个一个节点属于节点对象
此时的链表是这样的
问题一:如何让第一个节点和第二个节点关联,以此内推......
当这个方法结束之后,node1,2,3,4,5就不会存地址了,他们属于局部变量,局部变量会被回收,所以这个方法走完之后,就没有这几个局部变量了
此时,就形成了一个链表
测试类:
4,打印链表
问题一:怎么从第一个节点走到第二个节点......
head = head.next
问题二:链表什么时候遍历完?
head = null ,整个链表会遍历完。若head.next = null ,56不会打印
还是在外部类中定义一个方法,用于遍历链表
测试类:
5,求链表的长度 ,还是在外部类当中定义一个方法,定义一个count用来计数。
测试类:
6,头插法
我们插入的是一个节点,实例化出来一个节点对象,再把这个节点插入到头节点的前面,head指向的位置应该指向插入节点的位置
node.next = head
head = node
两个顺序不可交换,插入节点的时候,一般首先绑后面
哪怕你所插入的链表是一个空链表,这个代码也是可以完成的
即我们在创建链表的时候,就可以不用上面createList()方法(枚举)来创建了,直接只要头插即可
测试类:
7,尾插法
首先还是需要实例化一个节点,在需要找到当前链表的尾巴,然后在把尾巴的next置为你所插入节点的地址即可
但是还需要考虑你的head为空的时候
测试类:
8,任意位置插入
可以把原链表做一个位置标记,然后在某位置前面插入。例如在2位置前面插入一个节点。
首先要找到2位置的前一个节点,cur只需要走2-1步。将插入节点的next改为1位置的next,在把1位置的next改为所插入节点的地址。定义一个count来记录cur的位置
还要考虑其他问题:
index == 0—>头插法 index == size—>尾插法
index < 0 || index > size 位置不合法,抛异常即可
测试类:
9,判断某个关键字是否在链表当中
测试类:
10,删除第一次出现的关键字节点
首先要遍历链表,是否你要删除的val。然后找到val节点的前一个节点cur,不能走到val节点,他是单向链表,不能再回去了。在将你要删除的节点val定义为del,将 cur.next = del.next 或者写成cur.next = cur.next。next 即可。
注意:此代码不能删除头节点,需要另外判断
测试类:
11,删除链表里面所有的key
要求:对其本身就行修改
首先定义两个引用cur(代表当前需要删除的节点)prev(代表cur节点的前驱节点),判断if(cur.val==key),如果成立,让prev.next 等于cur节点的下一个节点(cur.next),再让cur往后走(cur = cur.next),prev还不能走,因为永远要保持是cur的前驱。然后继续判断,如果if条件不成立,则需判断else的情况,因为cur不是你要删除的key,需要让perv走到cur(perv = cur),再让cur走向下一个节点(cur = cur.next)。
但是这种情况没有考虑到头节点也需要删除。我们只需要判断一下头节点是否是你需要删除的key,如果是,删除头节点(head = head.next),如果下个一个头节点还是你要删除的key,则循环判断即可,或者先让上面的代码走完在判断即可。
测试类:
12,清空链表
让每一个节点都被回收掉,最直接的方式将head置为空,意味着head不在引用这个对象,即所有节点都会被回收。还要一种做法,定义cur,将cur.val置为空,将cur.next置为空,cur再往后走。但是要考虑头节点的val
3,LinkedList的模拟实现
LinkedList是Java的一个集合类,这个类可以当作链表来使用。前提是这个链表是一个双向链表
首先这种链表的节点,至少包含3个域,其中val是你存放的值,next是下一个节点的地址,prev是上一个节点的地址。同时LinkedList底层实现的时候,还加了一个last,代表永远指向链表的尾巴
3.1 无头双向链表实现
首先创建MyListedList类用来实现双向链表,在定义一个内部类来创建一个节点,在创建出head,last。
1,实现双向链表的长度
定义一个cur来遍历链表,定义一个count用来记录链表长度。
2,打印链表的val
3,查找链表是否包含关键key
4,头插法
首先new一个节点,将这个节点插入到当前链表的头部,修改head.prve,node.next和head=node即可。
还有可能一个节点都没有,即head和last都为空,让head和last同时指向node即可
5,尾插法
如果是空的来链表,让head和last同时指向node即可
若不空,只需要修改last.next,node.prev和last=node
6,任意位置插入
现在不用在定义一个cur走到需要插入位置的前一个,因为现在的节点里面包含next和prev,直接走到所插入位置即可。
7,删除关键字key
首先找到当前节点,只需要将cur的前一个节点的next等于cur的后一个节点,cur后一个节点的perv等于cur前的一个节点即可
但是呢,这个代码是存在问题的。如果说我们在这要删除头节点12,if条件成立,走if里面的代码,发现cur.prev是null,会出现空指针异常。
那么我们在删除头节点时,只需要将head往后走,在将head的prev置为null即可。
那么此时又会出现一个问题,如果说cur等于last(删除尾巴节点),上面else里面的代码,第一条是没有问题的,将cur的前驱的next置为null。
但是第二行代码就有问题,cur的next为空,空的前驱就会空指针异常。
所以在这种情况下就可以不执行这条代码,让cur的前驱的next置为null以后,让last等于last的前驱即可!!!
还有一个问题,当前链表只有一个节点!
此时的代码对于当前链表是无法执行的,走到红色框框里面的时候,head的next为null,即head等于null,然后head的prev就会空指针异常!!!
所以如果只有一个节点的情况下,走到head = head.next 的时候(head为null),说明只有一个节点,让head的前驱置为null,否则让last置为null。
8,删除所有的值为key的节点
在remove方法中,我们删除一个节点以后直接return出去,我们只需要删完一个之后继续判断即可,不return出去!!!
9,清空()回收每一个节点
方法一:直接将head和last置为null
方法二:将每一个节点的val,prev,next(假如都是引用类型)置为null,再将head和last置为null,因为把每一个节点置为null后,head和last都还引用着对应的节点
到此,我们自己实现了一个双向链表
4,LinkedList的使用
4.1 什么是LinkedList
LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。
【说明】:
1. LinkedList实现了List接口
2. LinkedList的底层使用了双向链表
3. LinkedList没有实现RandomAccess接口,因此LinkedList不支持随机访问
4. LinkedList的任意位置插入和删除元素时效率比较高,时间复杂度为O(1)
这里时间复杂度O(1)指的是删除的时候不需要移动元素,但是在找删除元素位置的时候,需要遍历链表,时间复杂度为O(N)。
5. LinkedList比较适合任意位置插入的场景
4.2 LinkedList的使用
写法:
进入LinkedList的源码:实现了这些接口
代表此时我们是以双向链表的形式去使用的
如果是Queue去引用LinkedList,是当作队列去使用(后序会讲的)
1,LinkedList的构造
带参数的构造方法:
在顺序表中讲过,这个?称为通配符,要么为E,要么为E的子类。这个E就是你当前List所指定的泛型类型
还可以用ArrayList来进行传递,因为ArrayList,LinkedList都实现了Collection接口
2. LinkedList的其他常用方法介绍
add:进入add的源码
默认是一个尾插法
3,LinkedList的遍历
foreach循环:
for循环:
有一个问题:如果说是在此时打印一个删除一个,打印一个删除一个,会输出什么?
是不可以的,因为size一直在变化,把1打印之后,有删掉1,只剩下2和3两个元素,且size变成2了,再次打印的时候, i 等于1,就是打印3,即输出1和3。
如果把size变成一个固定的
我们发现,出现了下标越界异常。
所以,一边遍历一遍删,必然会出现问题。当打印完0下标的元素时,删掉0下标的元素,0下标就会指向2元素位置,当 i 等于2时,要打印2下标的元素,此时就会下标越界!!!
使用迭代器遍历:
iterator:
Listiterator:
iterator和Listiterator没有区别,他们是父子关系,只是Listiterator可以倒着打印
Iterator是不具备Previous这个类的,要使用ListIterator
5,ArrayList和LinkedList的区别
相关文章:
![](https://img-blog.csdnimg.cn/direct/ccd62007d4f94ee0bf0ed97d0585a68f.png)
【LinkedList与链表】
目录 1,ArrayList的缺陷 2,链表 2.1 链表的概念及结构 2.2 链表的实现 2.2.1 无头单向非循环链表实现 3,LinkedList的模拟实现 3.1 无头双向链表实现 4,LinkedList的使用 4.1 什么是LinkedList 4.2 LinkedList的使用 5…...
![](https://img-blog.csdnimg.cn/e6349c2b37c74f028ee1c1b844541c04.png)
为数据安全护航,袋鼠云在数据分类分级上的探索实践
在大数据时代,数据具有多源异构的特性,且价值各异,企业需依据数据的重要性、价值指数等予以区分,以利采取不同的数据保护举措,避免数据泄露。故而,数据分类分级管理属于数据安全保护中极为重要的环节之一。…...
![](https://www.ngui.cc/images/no-images.jpg)
Spring 循环依赖详解
Spring 循环依赖详解 1. 引言 在Spring框架中,依赖注入(Dependency Injection, DI)是其核心功能之一,它通过配置来管理对象的创建和它们之间的依赖关系。然而,在复杂的应用程序中,开发人员有时会遇到循环…...
![](https://www.ngui.cc/images/no-images.jpg)
项目经理真的不能太“拧巴”
前期的项目经理经常是“拧巴”的,就是心里纠结、思路混乱、行动迟缓。对于每天需要面对各种挑战、协调各方资源、确保项目顺利进行的项目经理来说,这种“拧巴”不仅会让自己陷入内耗中,还会让项目出大问题。 项目计划总是改来改去࿰…...
![](https://img-blog.csdnimg.cn/img_convert/eade77740abb9a94d87449817c8d8577.png)
企业如何选择合适的CRM工具?除Salesforce之外的10大主流选择
对比salesforce,其他10款优秀CRM:纷享销客CRM、Zoho CRM、腾讯企点、销售易、企业微信 (WeCom)、Odoo CR、OroCRM、金蝶、用友CRM、EspoCRM 虽然Salesforce以其全面的功能和强大的市场占有率在海外收获了许多客户,但Salesforce在国内市场的接…...
![](https://img-blog.csdnimg.cn/img_convert/3ad834f6aa4cb6262ee0cc7b878a4684.png)
每年1-1.2万人毕业,男女比例约3:1,测绘工程的就业率如何
测绘工程,一个让人闻风丧胆的理科专业,虎扑评分4.2: 干过测绘的,苦不苦只有大家心里知道,带大家来感受一下,兄弟们的精神状态都十分美妙: 测绘专业到底是什么情况? PS.测绘分为本科…...
![](https://img-blog.csdnimg.cn/img_convert/249b1678454e42d83f5d1b00f6c9fa3a.png)
JimuReport 积木报表 v1.7.6 版本发布,免费的低代码报表
项目介绍 一款免费的数据可视化报表工具,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完…...
![](https://www.ngui.cc/images/no-images.jpg)
“灵活就业者“超两亿人 游戏开发者如何破局?
随着“灵活就业”者数量突破两亿,我相信“寒气”已经传递到每一位普通人!对于游戏行业的“灵活就业”者,应当如何破局? 首先应该恭喜大家,选择了一个相对“稳健”的行业,无论大环境如何,游戏/软…...
![](https://img-blog.csdnimg.cn/direct/6958308f180845938027ec3d37b680d8.png)
MySQL事务与存储引擎
一、事务的概念 是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行是一个不可分割的工作逻辑单元,在数据库…...
![](https://www.ngui.cc/images/no-images.jpg)
总是给数据库表字段设置默认值的好处
1、NOT NULL DEFAULT 的好处 在设计数据库表结构时,将字段设置为不能为空并设置默认值有以下几种好处: 1.1、数据完整性 通过设置字段不能为空,可以确保每条记录都包含必要的数据,从而保证了数据的完整性。例如,在用…...
![](https://img-blog.csdnimg.cn/direct/603b3459b0d549eca40c0fbc82d4e45a.png)
11.2 Go 常用包介绍
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...
![](https://img-blog.csdnimg.cn/direct/4edc25bcaa6e4ee8aaaaca29907c3701.png)
Sqlite3数据库基本使用
一、基本概念 数据:能够输入计算机并能被计算机程序识别和处理的信息集合 数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合 DBMS:位于用户与操作系统之间的一层数据管理软件,用于操纵和管理数据库 二、安装 在线…...
![](https://img-blog.csdnimg.cn/direct/70b015c5f44b4d74967b95a33ba281af.png)
实现贪吃蛇小游戏【简单版】
1. 贪吃蛇游戏设计与分析 1.1 地图 我们最终的贪吃蛇大纲要是这个样子,那我们的地图如何布置呢? 这里不得不讲⼀下控制台窗口的⼀些知识,如果想在控制台的窗口中指定位置输出信息,我们得知道该位置的坐标,所以首先介…...
![](https://www.ngui.cc/images/no-images.jpg)
uniapp实现内嵌其他网页的功能
一、用到的知识点 页面跳转页面间跳转,参数传递web-view使用 二、使用navigator 页面跳转。 navigator 组件类似HTML中的<a>组件,但只能跳转本地页面。目标页面必须在pages.json中注册。所以这么写是不行的: <navigator url&quo…...
![](https://www.ngui.cc/images/no-images.jpg)
【Ruby简单脚本01】查看wifi密码
脚本 # 使用io库 def get_cmd_result(cmd) IO.popen(cmd,:external_encoding>GBK).read.encode("utf-8") end def list_wifi wifi_pwds Hash.new # 获取所有wifi文件 o1 get_cmd_result("netsh wlan show profiles") # 获取所有匹配结果 …...
![](https://img-blog.csdnimg.cn/img_convert/047976793ef516c92fdb18a10c2beed9.png)
VSG/VSA 矢量信号模拟/分析软件
_Ceyear思仪 _ VSG/VSA 矢量信号模拟/分析软件 苏州新利通仪器仪表 在现代无线通信中,IQ调制属于标准配置,经常应用于通信系统的信号调制和解调环节。IQ调制的应用简化了通信设备的硬件结构,同时提高了频谱资源的利用效率,提…...
![](https://www.ngui.cc/images/no-images.jpg)
C++使用GDAL库完成tiff图像的合并
全色图 完整代码: #include "gdal_priv.h" #include "cpl_string.h" #include <vector> #include <algorithm> #include <iostream> #include <filesystem>using namespace std; namespace fs std::filesystem; vec…...
![](https://www.ngui.cc/images/no-images.jpg)
深入理解AQS:Java并发编程中的核心组件
目录 AQS简介AQS的设计思路AQS的核心组成部分 状态(State)同步队列(Sync Queue)条件队列(Condition Queue) AQS的内部实现 节点(Node)锁的获取与释放 独占锁共享锁 条件变量 AQS的应…...
![](https://img-blog.csdnimg.cn/direct/cd118c0f23db453296124bc785dd6072.png)
集合进阶:List集合
一.List集合的特有方法 1.Collection的方法List都继承了 2.List集合因为有索引,所以多了很多索引操作的方法。 3.add // 1.创建一个集合List<String> list new ArrayList<>(); // 2.添加元素list.add("aaa");list.add("bbb"…...
![](https://img-blog.csdnimg.cn/direct/82a3c0d0ebe94ceebcf06b199dcb795b.png)
el-table表头修改文字或者背景颜色,通过header-row-style设置样式
方式一 <el-table :header-cell-style"{text-align: center}" />方式二 <template><el-table :header-cell-style"tableHeaderColor" /> </template> <script> export default {methods: {tableHeaderColor ({row, column…...
![](https://img-blog.csdnimg.cn/direct/6d8d151cded2438ca00b66aecf76c38e.png)
web前端-CSS
CSS CSS概述: CSS是Cascading Style Sheets(级联样式表),是一种样式表语言,用于控制网页布局,外观(比如背景图片,图片高度,文本颜色,文本字体,高级定位等等) 可将页面的内容与样式分离开,样式放于单独的.css文件或者HTML某处 CSS是网页样式,HTML是网页…...
![](https://www.ngui.cc/images/no-images.jpg)
u8g2 使用IIC驱动uc1617 lcd 字符显示只显示上半部分,不显示下半部
使用u8g2 使用硬件iic驱动某些page为4个字节 带灰度的lcd显示屏幕的时候有时候只显示上半部,下半部不显示,例如uc1617等。 原因: 以uc1617为例,链接https://github.com/olikraus/u8g2/blob/master/csrc/u8x8_d_uc1617.c 在u8x8_d_uc1617_common方法中的case U8X8_MSG_DI…...
![](https://img-blog.csdnimg.cn/direct/485ad4c1278645a7abd5b9241bbb7a1e.png)
单片机第五季-第八课:STM32CubeMx和FreeRTOS
1,FreeRTOS背景介绍 RTOS简介: 实时操作系统,本用于追求实时性的嵌入式系统,典型:ucos/uclinux/vxworks; 特点:中断响应快、一般可嵌套中断、使用实地址、多任务; (实…...
![](https://img-blog.csdnimg.cn/direct/2dd2d00d70504936a820b14fc8e1cf97.png)
【Linux】进程控制1——进程创建和进程终止
1.进程创建 1.1.再谈fork 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。 #include <unistd.h> pid_t fork(void);//pid_t为整形 返回值:子进程中的fork()返回0ÿ…...
![](https://img-blog.csdnimg.cn/direct/220a8852f6dc4a6ba5dc2f73c24a4902.png)
计算机图形学入门16:曲线
1.曲线 曲线(Curves)在图形学中应用非常广泛,比如:相机的拍摄路径、物体的移动路径、动画曲线、矢量字体等。如下图所示,是使用曲线到矢量字体的应用,通过移动一些控制点来改变字体。 2.贝塞尔曲线 2.1 贝…...
![](https://img-blog.csdnimg.cn/7cca864db76b46f1ba479780b00752d9.png)
【Ruby基础01】windows和termux中搭建Ruby开发环境
windows下环境搭建 railsinstaller官方git地址 按照文档安装git、nodejs、yarn,安装教程百度一下。railsinstall可以从release页面下载最新版本4.1.0。 安装完成如下 安装RubyMine 下载RubyMine RubyMine下载地址 安装激活 下载文件,按照里面的流程…...
![](https://www.ngui.cc/images/no-images.jpg)
2406c++,iguana动态反射
原文 iguana是一个基于编译期反射的序化库,支持从结构序化到不同数据格式. iguana可序化一个C结构到json,xml,yaml和protobuf格式.这都是通过编译期反射实现的. 现在iguana也支持了动态反射,主要特征: 1,通过对象名创建对象实例 2,取对象所有字段名 3,根据字段名取字段值 4,根…...
![](https://www.ngui.cc/images/no-images.jpg)
干货分享——AB站帮你解决独立站收款难题
目前,国内已经有抖音、拼多多和淘宝平台推出“仅退款”售后服务,无疑是加剧了原本就在疯狂打价格战的国内电商的严峻现状,使得商家不得不担心被顾客“薅羊毛”。在国内电商环境严重“内卷”的情况下,拓宽海外市场不失为一大妙计。…...
![](https://www.ngui.cc/images/no-images.jpg)
C++继承与派生
1.基本知识 类的继承是新类从已有类那里获得特性,从已有的类产生新类的过程称为类的派生; 已有类称为基类或父类,派生出的新类则称为派生类或子类; 继承的功能: (1)使得基类与派生类之间建立…...
![](https://img-blog.csdnimg.cn/direct/103614c14c1046c4a9e9819f7e112c7c.jpeg)
Survival Animations
一套生存游戏的动画集,包括采集、建造、捕鱼、剥皮/鞣制、篝火等更多内容。 总动画数:89 建造/制作 30 篝火 28 饮水 3 水壶 3 觅食 2 治疗 3 空闲 1 原始捕鱼 7 剥皮 1 矛捕鱼 4 伐木 5 下载:Unity资源商店链接资源下载链接 效果图:...
![](https://s2.51cto.com/wyfs02/M02/83/67/wKioL1dybMfyf7ubAAB1tViuK6M219.png)
自己能制作免费网站吗/营销推广与策划
重启系统,按键盘Esc键,进入如下图画面,按键盘上的e进入编辑。进入这个画面以后,通过键盘的上下方向键选择kernel那行,然后再按e进入编辑。在最末尾处加入参数single,然后回车保存点击B启动系统,…...
![](https://img-blog.csdnimg.cn/img_convert/9e4c72ef6559356f4f0818ba0d2798b2.png)
杭州网站建设公司有哪几家/陕西网站建设网络公司
基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。更多交流私我132-陆零伍陆-20-291、μClinuxμClinux是一种优秀的…...
![](https://img-blog.csdnimg.cn/a83c206d59114e779e8d4b009f5f3c7d.png)
男女做爰网站19/乔拓云智能建站系统
介绍如何使用机密消息解码器 检查Visual Studio Code是否已准备好执行消息解码 在计算机上创建用于代码的文件玩意儿。文件夹命名为Sleuth。 鼠标放在Sleuth文件夹,右键点击“在终端中打开”。 输入命令行: 打开Visual Studio Code 创建文件,…...
门户网站模板 图片/百度云搜索引擎官方入口
环境:windows7,MyEclipse10,maven3.3 相信有很多朋友在MyEclipse10中使用maven时会遇到添加中央仓库中无法找到的jar包,或者是添加自己打包好的jar包,这里就不在聒噪如何在MyEclipse10中配置自己的maven了,…...
![](https://img-blog.csdnimg.cn/img_convert/be8e5476d3313e809d223d3c60b6f356.png)
做网站公司赚钱吗?/公司网站设计模板
Jenkins是一个基于Java的开源自动化服务器,它提供了一种简单的方法来建立持续集成和连续交付(CI / CD)管道。本教程将引导您完成使用官方Jenkins存储库在CentOS 7系统上安装Jenkins的步骤。安装Jenkins要在CentOS系统上安装Jenkins,请按照以下步骤操作&a…...
![](/images/no-images.jpg)
易语言可以做网站后端/央视新闻
docker私服搭建有官方的registry镜像,也有改版后的NexusOss3.x,因为maven的原因搭建了nexus,所以一并将docker私服也搭建到nexus上。 nexus的安装过程就单独说了,如果是2.x系列需要升级到2.14版本再升级到3.y系列,如果…...