ArchLinux Vmware安装指北

在本文开始之前,首先允许我提前声明一点,Arch Linux的安装并不算难,但是绝对也算不上简单,中间的安装可能会遇到很多问题,本篇文章不能保证完全贴合你的真实机器环境,但是我会在我安装过程中遇到的一点点小问题都说出来,给大家避个坑,这里我安装Arch的时候参考的文章是https://arch.icekylin.online/guide/rookie/basic-install,大家也可以一并参考。

现在我会按照这篇文章的流程,开始说我是如何安装的。那么接下来,介绍一下需要的安装环境

  • Windows

  • VMware虚拟机

  • Vmware的NAT网络连接模式

  • 一个清醒的大脑

  • 一杯茶或者咖啡

毕竟是安装操作系统,第一步肯定获得Arch Linux操作系统的镜像包,关于其镜像包,由于官网给我们的是磁链和BT文件,所以网络环境和软件环境好的同学可以使用官网的下载方式,记得用BT的要做种哈,人人为我,我为人人。条件不允许的同志,可以选择使用镜像站来下载;这里贴出官网的下载方式和镜像站

官网:
magnet:?xt=urn:btih:0cd42065571809961e9661db2123a87d77c33964&dn=archlinux-2024.07.01-x86_64.iso(磁链)
https://archlinux.org/releng/releases/2024.07.01/torrent/(BT) 镜像站(阿里):
https://mirrors.aliyun.com/archlinux/iso/2024.05.01/archlinux-2024.05.01-x86_64.iso

下载之后记得对比文件hash值(当然你不比较也可以,这一步只是确保我们使用的镜像是否是完整无损的),在官网的https://archlinux.org/download/页面即可找到镜像包的hash值。

新建虚拟机

对比完hash值确定文件是完整无损的之后,我们即可进入安装阶段,在安装之前,我们先来创建一个新的虚拟机。(如果这里你会,请跳过这部分)

这里我们选择典型即可,没有必要去自定义,典型就够用,随后下一步

随后选择我们的镜像文件,下一步

这里选择Linux-其他Linux 6.x内核64位,下一步

这里可以给我们的虚拟器来起一个名字,我们可以将其命名为你喜欢的任意名字,这里我使用ArchLinux作为这台虚拟机的名字;这里的“位置”指的是这台虚拟机的存放位置,建议脱离C盘去存放虚拟机。下一步

这里我们选择将虚拟磁盘文件储存为单个文件,方便后续管理,大小设置为20G。下一步

这里我们点一下自定义硬件,调整一下磁盘运行内存的大小,1~2GB均可,依照个人计算器情况来给即可,安装过程中建议不要低于1GB,取高不取低。网络控制器选项使用NAT,随后确定。一切完毕之后,我们点击一下我们的Arch

当显示为如此界面时,我们的基本配置算是完成了

正如我开头所说,我会按照我给出的文章的步骤来安装并且帮大家避开我安装时的坑,所以应该会有大量的步骤是和链接中师傅的文章相同,特此告知。

安装Arch

0.必要的设置项&一堆可能有点用的闲话

在安装之前,首先不要急着启动Arch,我们先到Arch虚拟机的储存位置修改一下.vmx文件,使用UEFI来引导系统启动。

在左侧窗格右键我们的Arch,选择打开虚拟目录

找到.vmx文件,使用记事本打开

在其中添加一行条目,firmware=”efi”,随后保存即可。随后我们再来启动Arch

点击开启此虚拟机即可开启我们的Arch

启动后如果显示为这样的界面,说明UEFI引导生效,选择第一项,我们来开始安装Arch

眼尖的朋友可能会发现,arch启动的时候这里有一个SSH的守护进程被启动了,也就是说我们安装Arch的时候是完全被允许使用SSH来远程连接的,关于我为什么要提这个问题,因为我们安装的时候是无法在虚拟机中粘贴的,如果我们能够使用物理机Shell工具远程连接到Arch的安装进程上,就可以正常的来粘贴命令了,这样的话将会起到事半功倍的效果。如果你没有相关的工具,那么也不影响后续的操作;如果你有,请使用root@xxx.xxx.xxx.xxx来进行连接,ip a命令可以查看Arch的IP,passwd可以修改root的密码。(即便如此,我还是建议从来没有安装过Arch的同志们手动敲一下命令,以便更深入的去理解命令的含义和Linux的内核;如果你是一个安装老手,那么这个方法将帮助你快速对Arch进行安装<说实话老手还会看这篇文章吗,wwwwwwwwww>)

ookk,闲话少说,基本的配置完成,我们还是步入正轨来安装Arch吧

1.首先来禁用reflector服务

systemctl stop reflector

如果执行没有报错,恭喜你,禁用成功了

2.随后来确保一下我们的确是处在UEFI的引导模式下

ls /sys/firmware/efi/efivars

如果能够输出一堆文件名,说明这里处在UEFI引导模式下,可以进行下一步操作

如果发生报错,提示文件不存在或者文件为空,说明你没有使用UEFI引导启动,请回到本小节开头位置学习如何修改.vmx文件,使Arch在UEFI模式下被引导启动。

3.连接网络

原文写这一步主要面向的是无线网络用户,这里由于我们使用的是虚拟机的虚拟网卡,这步可以直接跳过

4.测试网络状态

curl www.baidu.com

如果能够输出东西,有一堆HTML标签等等;而不是网络不可达、连接超时、不能连接到服务器、找不到主机等等报错,说明网络无异常,报错示例:

网络无异常的话我们来继续

5.更新系统时钟

正如原文所说,系统时间的准确是十分重要的,我们的SSL证书等等以及例如OTP等等很多服务,都是要建立在时间准确的前提下的,所以这一步是至关重要的。

使用命令同步系统时间

timedatectl set-ntp true

如果没有报错,说明执行成功,可以使用

timedatectl status

来查看同步后的时钟状态信息

=> arch时间

=> 我的物理机系统时间

由于我们国家处于东八区,这里的Time zone给出的是UTC+0,所以只要将其时间加上8H即可得出我们的时间,如果计算后的时间和我们的实际时间基本相吻合,那么这里就可以继续操作了(由于我截图中间有点操作时间,实际上计算过后时间是基本分毫不差的)

6.更改软件仓库下载源

这一步相信经常使用Linux的同志们都很清楚了,由于国外的软件仓库物理上距离我们就远,再加上各种各样的原因,我们下载软件包的时候,需要使用国内的下载镜像站来加速我们的下载,这里镜像站有很多,我们使用原文中给出的四个就完全够用了

运行命令,使用vim来修改软件仓库

vim /etc/pacman.d/mirrorlist

打开后的页面是这样的,我们添加四条条目在最上面,在最上面的会优先被调用

Server = https://mirrors.ustc.edu.cn/archlinux/\$repo/os/\$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/\$repo/os/\$arch
Server = https://repo.huaweicloud.com/archlinux/\$repo/os/\$arch
Server = http://mirror.lzu.edu.cn/archlinux/\$repo/os/\$arch

添加完成之后,我们保存退出即可

(没用过vim的同志看过来,方向键可以调整光标位置,按i键之后即可进入编辑模式,此时可以写入内容,写入完成之后按下esc退出编辑模式,随后按下冒号<真的要按下冒号,要使用shift那种>,输入wq按回车即可保存退出;如果你嫌wq两个字母麻烦,可以直接输入x,随后回车退出,同样也是保存退出)

仓库源修改完毕之后,我们就可以继续下一步的操作啦

7.分区和格盘

安装系统必备的一步了属于是,由于这里我们是使用新开虚拟机操作,顾虑不用很多,不会刷写到我们物理机的磁盘。但是在这里我还是提一嘴嗷,数据无价,请谨慎操作。

使用命令

lsblk

查看一下我们当前的磁盘状态

可以看到我们分了20G的盘就在这里,我们要操作的就是这个盘,记住了,他叫做sda,这一步很重要,不要搞错了名字。(如何判断我们的盘是哪一个=>你新建虚拟机的时候分了多少的空间,这里哪一个吻合就是哪一个)

记住我们要操作的盘叫做sda后,接下来我们使用cfdisk来进行磁盘操作,运行命令

cfdisk /dev/sda

这里的sda就是你要安装Arch系统的系统盘的名字,由于这里我是sda,我将继续使用sda做演示

运行之后会弹出这样的窗口,选择gpt回车

之后会进入这样的页面,操作之前,我来说一下这东西怎么用

可以看到下面有一排操作选择,我们可以使用左右方向键来移动。

  • 第一个New为新建,也就是从某个空间中拿出多少空间作为新建磁盘区。

  • 第二个Quit为退出,即退出这个软件

  • 第四个Write为写入,即保存修改

剩下的选项我们用不到,暂且不做讲述,知道如何使用之后,我们来继续操作

我们在Free space(空闲空间)中选择New选项,回车即可弹出左下角的提示信息,这里是在询问我们需要分配多少空间出来,我们首先分一个Swap分区出来,这个分区有点类似于Windows的交换文件,这个分区的大小可以是你运行内存大小的60%左右,这里我是分了2G的运存给虚拟机,所以就是2G*0.6=1.2G,我们首先分1.2G出来

可以看到这里就分了1.2G出来,名为sda1;但是我们先不管分出来的1.2G,我们继续来分Free space。现在我们还剩18.8G,现在我们要分efi的引导区大小,理论来说efi的引导分区不会用太多空间,这里我有点强迫症,剩下的800MB都分给它吧,我留下一个整的18G。

使用方向键上下调节上侧选选项卡位置到Free Space,继续New 800M出来

随后剩下的全分出来

分完之后,我们回头捋一下,sda1是Swap、sda2是efi引导区、sda3是Linux系统区。这里一定要记住每个分区是干嘛的,后面需要用到这几个名字

捋完之后,我们不要退出,可以看到我们分好磁盘空间之后,下方的选项卡就变了,我继续来说一下我们会用到的选项

  • 第一个Delete是删除当前所选磁盘,删除之后,其空间会返回到Free space中,如果分错了可以选择这个删除重新分配

  • 第三个Quit是退出,不用多说了

  • 第四个Type是调整磁盘类型,一会我们会用到,这里先不展开细说

  • 第六个Write为将修改写入磁盘,相当与“保存”功能

了解完成之后,我们继续操作,选择sda1,使用type功能,回车

可以看到这里打开一个选单页面,这里我们向上移动方向键,将sda1设置为Linux swap,回车

可以看到这里成功修改了,随后按照同样的步骤,将sda2设置为EFI system将sda3设置为Linux filesystem(严格按照之前分盘的sda1为swap、sda2为efi引导、sda3为文件系统来分配type)

设置完成之后,我们来选择write将操作写入磁盘

可以看到这里有个提示,我们确认无误后输入yes(一定要输入完整的“yes”,不要缩写输入y,这样不会保存)

当下方提示“The partition table has been altered.”后,说明修改成功,我们就可以选择Quit来退出了

随后我们来确保操作成功,运行命令

fdisk -l

查看分区状态

如果这里显示的和你设置的相一致,说明磁盘的分盘就已经完成了。我们可以进行格盘了

首先我们来格式化efi分区,运行命令

mkfs.fat -F32 /dev/sda2
#sda2切换成你的efi分区盘,后面有关硬盘的操作不再强调,请按照你的实际来选择硬盘

随后格式化Swap分区

mkswap /dev/sda1

格式化Btrfs分区(格式化系统分区)

mkfs.btrfs -L arch /dev/sda3

这里-L选项后的arch可以自定义一个名字,这个名字将作为分区的LABLE,请不要使用空格和特殊字符,这里我以arch这个名字作为分区的LABLE

至此磁盘格式化完成,如果没有问题,就可以来进行下一步操作

强调一下,从现在开始,每个盘是干嘛的还是要记住,后面要用到,用不到了的时候我会说

8.操作Btrfs分区

首先我们来挂载Btrfs分区(系统分区)到/mnt下

mount -t btrfs -o compress=zstd /dev/sda3 /mnt

检查挂载情况

df -h

挂载完成之后,继续来创建Btrfs子卷,依次运行命令

btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home

检查子卷状态,运行命令

btrfs subvolume list -p /mnt

如果显示出来了相关ID信息等等,即子卷创建成功,显示的数据可能和我会有些出入,属于正常现象。

子卷创建成功后,我们就可以卸载/mnt,挂载子卷了,卸载/mnt命令

umount /mnt

上述操作无误后进入下一步

9.挂载

注意,我们的挂载是有顺序的,请按照下面的命令和提示依次运行命令挂载分区

mount -t btrfs -o subvol=/@,compress=zstd /dev/sda3 /mnt     #挂载根目录,请使用Linux文件系统盘(我的是sda3)
mkdir /mnt/home
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sda3 /mnt/home #挂载/home用户家目录,请使用Linux文件系统盘(我的是sda3)
mkdir -p /mnt/boot
mount /dev/sda2 /mnt/boot #挂载/boot启动引导区,请使用efi盘(我的是sda2)
swapon /dev/sda1 #挂载/swap交换分区,请使用swap盘(我的是sda1)

注意,上面的六条命令一条不要少,挂载完成之后可以使用df命令查一下系统分区和efi引导分区是否挂载完成,运行命令

df -h

如上是没有问题

使用free命令可以查看swap挂载情况,运行命令

free

显示出了Swap且空间大小和我们设置的相吻合,说明没问题

上述操作全部设置完毕且无误后,我们就可以安装系统了

10.安装系统

运行命令

pacstrap /mnt base base-devel linux linux-firmware btrfs-progs

安装基础包

当看到上面的提示,并且出现进度条在跑,开始下载东西后,说明这一步完成啦,接下来会进入一段等待时间,因为系统正在执行你的下载安装命令。现在你可以中途休息一下,喝杯茶或者咖啡(希望你准备的茶或者咖啡到这一步没有冷掉),起身走走,眺望一下远处保护保护眼睛,等待进度条跑完后再回来继续操作即可……

跑完之后,我们继续来操作,下一步依旧是安装,我们来安装一下其他必要的工具,运行命令安装vim、sudo、zsh和zsh-completions

pacstrap /mnt networkmanager vim sudo zsh zsh-completions

紧接着又会是一段进度条在跑,不过这个“进度条不长”,相比于刚才的很快就会跑完

安装完成之后,我们继续来操作,我们的系统还没有完全安装完毕

11.生成fstab文件

fstab文件时用来定义硬盘分区的重要文件,是必不可少的文件之一。由于我们之前已经挂载了重要的磁盘分区sda1、sda2和sda3,这里我们可以使用genfstab命令来根据挂载情况自动生成并且写入fstab文件,运行命令

genfstab -U /mnt \> /mnt/etc/fastab

运行之后如果没有返回任何信息,说明执行成功,由于是自动生成,为了确保无误,我们来看一下fastab中的信息,运行命令

cat /mnt/etc/fastab

最后一次调用你关于sda的记忆,看看对应的是否正确,如果正确,那么这一步就算是完成了,可以进行下一步操作了

好了好了,现在你可以忘掉那几个sdaxxx具体谁都是干嘛的啦~

12.切换工作区域

在说切换之前,我这里先声明好,一切操作都不需要重启

我们使用arch-chroot命令来切换到我们安装好的Arch系统环境中,运行命令

arch-chroot /mnt

当我们运行之后,shell会变成如上样式,此时的/mnt目录其实就相当于我们新安装系统的根目录/

进入完成之后,我们即可进行下一步的配置操作

13.设置系统的主机名和时区

首先我们来设置主机名,运行命令

vim /etc/hostname

在其中写你喜欢的主机名即可,注意不要特殊字符,写完保存即可,这里我给主机起名叫Arch了

接下来设置hosts文件,运行命令

vim /etc/hosts

打开后默认是这样的,我们添加几条条目

127.0.0.1 localhost
::1 localhost
127.0.0.1 arch.localdomain arch

注意这里的Arch.localdomain Arch中的Arch为你的主机名,请根据实际情况更改(主机名区分大小写,注意添加的条目前面不要有#)

主机名处理完毕后我们来更改系统的时区,运行命令

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

这样时区就设置完毕啦,如果没有问题,就继续吧,我们的安装马上就要完成了

14.设置硬件时间

有点计算机知识的同志应该清除,主板是有BIOS的,这个东西中本身就有时间,我们设置硬件时间就是为了让BIOS硬件时间和操作系统所同步(个人理解);运行命令

hwclock --systohc

不要泄气,安装马上结束

15.设置地区偏好

我们知道每个地区都有自己看时间的习惯,我们习惯使用年/月/日,但是有的地方不以这种方式;同样的,还有字符集ASCII和UTF-8等等问题,这里我们为了让操作系统适合我们自己来使用,需要设置一下地区偏好,运行命令

vim /etc/locale.gen

去掉en_US.UTF-8 UTF-8和zh_CN.UTF-8 UTF-8前面的#

随后保存,运行命令

locale-gen

当出现如上提示,就说明命令运行成功了,随后继续运行

echo 'LANG=en_US.UTF-8' \> /etc/locale.conf

16.设置root密码、安装微码和设置引导程序

root密码好设置,直接passwd root即可,运行命令

passwd root

输入密码的时候会让你输入两次,一次为输入,一次为验证,且输入的时候不会显示信息,成功修改之后会显示如上提示信息

root密码设置完毕之后,我们可以继续安装微码了,运行下面的命令可以安装对应芯片制造商的微码,根据实际情况选择即可

pacman -S intel-ucode   #Intel微码
pacman -S amd-ucode #AMD微码

我的CPU是intel的,所以选择了intel的微码,运行安装命令之后会出现上述提示,这里确认安装直接回车即可,随后耐心等进度条跑完

跑完之后我们就可以来安装引导程序了

运行如下命令来安装引导程序

pacman -S grub efibootmgr os-prober

一样的,等进度条跑完

跑完之后将GRUB安装到EFI分区,运行命令

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH

如果出现No error reported,恭喜,GRUB此时已经成功安装到EFI磁盘分区了。最后我们做一下启动的优化小操作,使用vim编辑/etc/default/grub文件,运行命令

vim /etc/default/grub

修改GRUB_CMDLINE_LINUX_DEFAULT一行,将末尾的quite去掉,添加nowatchdog,并且修改loglevel=5。修改后的图如下

随后保存,保存完毕之后运行命令

grub-mkconfig -o /boot/grub/grub.cfg

至此,引导制作完成

17.最后的最后,完成安装

如果你到了这一步,恭喜你,安装已经进入尾声了

运行命令

exit

退出安装环境

如上就已经成功退出了安装环境,随后卸载/mnt分区,运行命令

umount -R /mnt

最后的最后,我们来运行此次安装要执行的最后命令

reboot

重启进行完毕关机操作之后记得将CD文件断开连接,VMware的右下角右键CD图标可以直接断开连接

18.结束安装与连接网络

重启之后我们就可以正常引导进入Arch系统了

如果重启完毕之后显示了如上的界面,那么恭喜你,成功的安装了ArchLinux,接下来输入账户名回车,密码回车即可进入操作系统啦~

既然是Arch,怎么能不运行fastfetch命令呢?来,我们使用pacman安装一下,安装之前,我们先来启动一下Arch的networkmanager服务,否则Arch是没有网络的哦,以此运行下面的命令

systemctl start NetworkManager \#启动NetworkManager
systemctl enable NetworkManager \#将NetworkManager设置为开机自启

或者直接运行这一条

systemctl enable --now NetworkManager \#立即启动NetworkManager并将其设置为开机自启

运行完enable出现上面的提示说明启动完成

我们curl一下网站看看有没有网络

ok,可以看到现在网络连接问题也解决了

随后我们来安装fastfetch吧,使用pacman安装,运行命令

pacman -S fastfetch

安装完成了,来运行一下fastfetch吧

fastfetch

自此,你的ArchLinux就彻彻底底的安装完毕了,恭喜你走到了这一步!

ArchLinux Vmware安装指北的更多相关文章

  1. VMware Workstation 安装以及Linux虚拟机安装 指北

    最近有挺多小伙伴跟我说起虚拟机这个东西,所以,今天就给大家写一篇虚拟机安装使用指北吧. 虚拟机(英语:virtual machine),在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台 ...

  2. 关于supervisor的入门指北

    关于supervisor的入门指北 在目前这个时间点(2017/07/25),supervisor还是仅支持python2,所以我们要用版本管理pyenv来隔离环境. pyenv 根据官方文档的讲解, ...

  3. Celery入门指北

    Celery入门指北 其实本文就是我看完Celery的官方文档指南的读书笔记.然后由于我的懒,只看完了那些入门指南,原文地址:First Steps with Celery,Next Steps,Us ...

  4. 颓废选手在 Ubuntu/Noilinux 下的生存指北

    颓废选手在 Ubuntu/Noilinux 下的生存指北 Hint: 这里的 "#" 都是假注释,复制的时候记得删除 一些基本的生存命令 ctrl + alt + t #调出终端 ...

  5. Laravel 集成 JPush 极光推送指北

    我是一个 Laravel 小白,我是一个 Laravel 小白,我是一个 Laravel 小白(默念三遍再往下读,如果非小白就不用看了). Laravel 使用 Composer 来管理代码依赖.所以 ...

  6. ThinkPHP 3.2.x 集成极光推送指北

    3.2版本已经过了维护生命周期,官方已经不再维护,请及时更新至5.0版本 -- ThinkPHP 官方仓库 以上,如果有条件,请关闭这个页面,然后升级至 ThinkPHP 5,如果由于各种各样的原因无 ...

  7. [转] iOS开发者的Weex伪最佳实践指北

    [From] http://www.cocoachina.com/ios/20170601/19404.html 引子 这篇文章是笔者近期关于Weex在iOS端的一些研究和实践心得,和大家一起分享分享 ...

  8. mac air上archlinux的安装及优化

    前言 最近总感觉跑了两年多ubuntu系统的MacBookAir6,2越来越不行了,内存总是亮红灯,软件效率也低了不少.最直接的解决方法当然是换电脑,购买一台配置更好的,比如2017款xps,不过在我 ...

  9. Mac 软件包管理器Homebrew使用指北

    Homebrew Homebrew由开发者 Max Howell 开发,并基于 BSD 开源,是一个非常方便的软件包包管理器工具. Homebrew 官网 Homebrew 的几个核心概念 在正式介绍 ...

  10. [常用工具] Python视频解码库DeFFcode使用指北

    DeFFcode是一种跨平台的高性能视频帧解码器,通过内部封装ffmpeg,提供GPU解码支持,几行python代码就能够快速解码视频帧,并具有强大的错误处理能力.DeFFcode的APIs支持多种媒 ...

随机推荐

  1. 带你深入领略 Proxy 的世界

    Proxy 是 es2015 标准规范加入的语法,很可能你只是听说过,但并没有用过,毕竟考虑到兼容的问题,不能轻易地使用 Proxy 特性. 但现在随着各个浏览器的更新迭代,Proxy 的支持度也越来 ...

  2. ASP.NET Core、Winform、WPF 删除多余的Microsoft.CodeAnalysis语言资源文件

    摘要:ASP.NET Core 3.1网站生成项目时,输出文件夹多出很多Microsoft.CodeAnalysis的语言资源文件github issue 问题# ASP.NET Core3.1网站生 ...

  3. NOIP模拟60

    T1 整除 解题思路 答案就是 n 的每一个质因数的合法的答案数相乘(证明的话就....) 但是复杂度显然不允许(虽然我们可以给指数取模水过去).. 可以用积性筛(线性筛)利用质数筛出 \(x^m\) ...

  4. .NET集成DeveloperSharp实现"高效分页"&"无主键分页"

    DeveloperSharp系列近期又被制造业ERP.民航飞行App.建筑BIM.电力掌上营业厅.等多家大型采用,站在巨人的肩膀上你能走的更远. 支持.Net Core2.0及以上,支持.Net Fr ...

  5. Java中的空指针异常 java.lang.NullPointerException

    空指针异常 属于运行错误,java.lang.NullPointerException 原因:当引用名称的值为null时,就不能方法某个对象中的属性或方法,如果非要访问则就出现空指针异常 解决办法:在 ...

  6. Nodejs中间件 中间件分类和自定义中间件

    中间件 中间件理解 中间件可以理解为业务流程的中间处理环节.如生活中吃一般炒青菜,大约分为如下几步骤 express中当一个请求到达的服务器之后,可以在给客户响应之前连续调用多个中间件,来对本次请求和 ...

  7. 剑指Offer-55.链表中环的入口结点(C++/Java)

    题目: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 分析: 利用快慢指针,如果链表中存在环的话,则快指针一定在环中的某个节点与慢指针相遇. 设头节点到链表的环的入口结点 ...

  8. 太卷了,史上最简单的监控系统 catpaw 简介

    指标监控的痛点 当下比较流行的监控系统,比如 Prometheus.Nightingale.VictoriaMetrics,都是基于数值型指标的监控系统,这类监控系统的痛点在于:告警的时候只能拿到异常 ...

  9. mybatis Selective动态判断属性值新增或修改操作,batch批量操作

    mybatis Selective动态判断属性值新增或修改操作,batch批量操作 mybatis insert foreach批量添加https://www.cnblogs.com/oktokeep ...

  10. JSONObject应用Json字符串和Object对象之间的转换,Map封装数据思路

    JSONObject应用Json字符串和Object对象之间的转换,Map封装数据思路 package com.example.core.mydemo.json5; import com.alibab ...