Linux 命令和 vi/vim 命令

Linux 命令概览

1. 文件和目录操作

  • 列出目录内容

    • ls:列出当前目录内容
    • ls -l:以长格式列出
    • ls -a:显示隐藏文件
    • ls -lh:以长格式和人类可读方式显示大小
    • ls -R:递归列出子目录
    • ls -d */:仅列出目录
    • ls -t:按修改时间排序
    • ls -S:按文件大小排序
  • 改变当前目录

    • cd /path/to/directory:切换到指定目录
    • cd ..:切换到上级目录
    • cd ~:切换到用户主目录
    • cd -:切换到上一个目录
    • cd ~username:切换到指定用户的主目录
  • 显示当前目录

    • pwd:显示当前工作目录的完整路径
  • 创建目录

    • mkdir newdir:创建新目录
    • mkdir -p path/to/newdir:创建多级目录
  • 删除空目录

    • rmdir emptydir:删除空目录
  • 删除文件或目录

    • rm file.txt:删除文件
    • rm -r directory:递归删除目录
    • rm -rf directory:强制递归删除
    • rm -i file.txt:删除前提示确认
  • 复制文件或目录

    • cp file1.txt file2.txt:复制文件
    • cp -r dir1 dir2:递归复制目录
    • cp -u file1.txt /path/to/destination:仅当目标文件较旧时复制
  • 移动或重命名文件

    • mv file.txt newfile.txt:重命名文件
    • mv file.txt /path/to/destination:移动文件
    • mv -i file.txt /path/to/destination:移动前提示确认
  • 创建空文件或更新文件时间戳

    • touch newfile.txt:创建空文件
    • touch -m file.txt:更新修改时间戳
    • touch -a file.txt:更新访问时间戳

2. 文件查看和编辑

  • 显示文件内容

    • cat file.txt:显示文件内容
    • cat file1.txt file2.txt > combined.txt:合并文件内容
    • cat -n file.txt:显示带行号的内容
    • cat -E file.txt:显示行尾的换行符
  • 分页显示文件内容

    • less file.txt:分页显示文件内容
      • q:退出 less
      • /pattern:搜索
      • n:重复搜索
      • N:反向搜索
      • g:跳转到开头
      • G:跳转到末尾
  • 显示文件前几行

    • head file.txt:显示前10行
    • head -n 5 file.txt:显示前5行
    • head -c 100 file.txt:显示前100个字节
  • 显示文件最后几行

    • tail file.txt:显示最后10行
    • tail -n 5 file.txt:显示最后5行
    • tail -f log.txt:实时显示新增内容
    • tail -c 100 file.txt:显示最后100个字节
  • 简单的文本编辑器

    • nano file.txt:打开文件进行编辑
      • Ctrl + O:保存文件
      • Ctrl + X:退出编辑器
      • Ctrl + K:剪切整行
      • Ctrl + U:粘贴剪切的行
      • Ctrl + W:搜索文本
      • Alt + R:替换文本
  • 强大的文本编辑器

    • vim file.txt:打开文件进行编辑

3. 系统信息

  • 显示系统中正在运行的进程

    • top:显示系统资源使用情况和运行中的进程
      • q:退出 top
      • P:按 CPU 使用率排序
      • M:按内存使用率排序
  • 显示当前进程

    • ps:显示当前用户的进程
    • ps aux:显示所有用户的进程
    • ps -ef:显示所有进程的详细信息
    • ps -C processname:显示指定进程的信息
  • 终止进程

    • kill PID:终止指定进程
    • kill -9 PID:强制终止指定进程
    • killall processname:终止所有指定进程
  • 显示磁盘空间使用情况

    • df:显示所有文件系统的磁盘使用情况
    • df -h:以人类可读方式显示
    • df -T:显示文件系统的类型
  • 显示目录或文件的磁盘使用情况

    • du -sh /path/to/directory:显示目录总大小
    • du -ah /path/to/directory:显示所有文件和子目录的大小
    • du -a | sort -n -r | head -n 10:显示最大的10个文件
  • 显示系统信息

    • uname:显示内核名称
    • uname -a:显示所有系统信息
    • uname -m:显示机器硬件架构
    • uname -r:显示内核版本
  • 显示网络接口配置

    • ifconfig:显示网络接口配置(某些系统可能需要安装 net-tools)
    • ip addr:显示网络接口配置
    • ip link:显示网络接口状态

4. 用户和权限

  • 显示当前用户名

    • whoami:显示当前登录的用户名
  • 切换用户身份

    • su:切换到超级用户
    • su username:切换到指定用户
    • su -:切换到超级用户并加载环境变量
    • su - username:切换到指定用户并加载环境变量
  • 以超级用户或其他用户的身份执行命令

    • sudo command:以超级用户身份执行命令
    • sudo -u username command:以指定用户身份执行命令
    • sudo -i:以超级用户身份打开一个 shell
    • sudo -l:列出当前用户可以执行的 sudo 命令
  • 更改文件或目录的权限

    • chmod 755 file.txt:设置权限为 rwxr-xr-x
    • chmod +x script.sh:添加可执行权限
    • chmod -R 755 /path/to/directory:递归设置权限
  • 更改文件或目录的所有者

    • chown user:group file.txt:更改所有者和组
    • chown -R user:group /path/to/directory:递归更改所有者和组
    • chown :group file.txt:仅更改文件的组

5. 压缩和解压

  • 打包或解包文件

    • tar -cvf archive.tar file1 file2:创建 tar 文件
    • tar -xvf archive.tar:解包 tar 文件
    • tar -czvf archive.tar.gz file1 file2:创建 gzip 压缩 tar 文件
    • tar -xzvf archive.tar.gz:解压 gzip 压缩 tar 文件
    • tar -cjvf archive.tar.bz2 file1 file2:创建 bzip2 压缩 tar 文件
    • tar -xjvf archive.tar.bz2:解压 bzip2 压缩 tar 文件
  • 压缩或解压缩文件

    • gzip file.txt:压缩文件
    • gunzip file.txt.gz:解压缩文件
    • gzip -d file.txt.gz:解压缩文件
    • zip archive.zip file1 file2:创建 zip 文件
    • unzip archive.zip:解压 zip 文件
    • zip -r archive.zip /path/to/directory:递归压缩目录
    • unzip -l archive.zip:列出 zip 文件的内容

6. 网络

  • 测试网络连接

    • ping google.com:测试与 google.com 的连接
    • ping -c 4 google.com:发送4次 ICMP 请求
    • ping -s 1024 google.com:发送1024字节的数据包
  • 显示网络状态

    • netstat -an:显示所有网络连接
    • netstat -tuln:显示监听的 TCP 和 UDP 端口
    • netstat -r:显示路由表
    • netstat -i:显示网络接口统计信息
  • 安全地登录远程计算机

    • ssh user@hostname:以 user 身份登录到 hostname
    • ssh -p 2222 user@hostname:指定端口登录
    • ssh -i keyfile user@hostname:使用指定的私钥文件登录
  • 安全复制文件到远程计算机或从远程计算机复制文件

    • scp file.txt user@hostname:/path/to/destination:将本地文件复制到远程主机
    • scp user@hostname:/path/to/file.txt /local/path:从远程主机复制文件到本地
    • scp -r /local/dir user@hostname:/remote/dir:递归复制目录

7. 软件管理

  • Debian/Ubuntu 包管理工具

    • sudo apt-get update:更新包列表
    • sudo apt-get upgrade:升级已安装的包
    • sudo apt-get install package:安装包
    • sudo apt-get remove package:卸载包
    • sudo apt-get autoremove:自动卸载不再需要的依赖包
    • sudo apt-get clean:清理下载的包文件
    • sudo apt-get autoclean:清理不再需要的包文件
  • Red Hat/CentOS 包管理工具

    • sudo yum update:更新所有包
    • sudo yum install package:安装包
    • sudo yum remove package:卸载包
    • sudo yum list installed:列出已安装的包
    • sudo yum search keyword:搜索包
  • Fedora 包管理工具

    • sudo dnf update:更新所有包
    • sudo dnf install package:安装包
    • sudo dnf remove package:卸载包
    • sudo dnf list installed:列出已安装的包
    • sudo dnf search keyword:搜索包
  • 跨发行版的包管理系统

    • sudo snap install package:安装包
    • sudo snap remove package:卸载包
    • sudo snap list:列出已安装的 snap 包
    • sudo snap refresh:更新所有 snap 包

8. 其他

  • 显示命令的手册页

    • man ls:显示 ls 命令的手册页
    • man 1 ls:显示 ls 命令的手册页(第1部分)
    • man 5 crontab:显示 crontab 文件格式的手册页(第5部分)
  • 显示命令的简短描述

    • whatis ls:显示 ls 命令的简短描述
  • 查找程序文件的位置

    • whereis ls:查找 ls 命令的二进制文件、源代码和手册页
  • 查找可执行文件的位置

    • which ls:查找 ls 命令的可执行文件位置
  • 查看或执行历史命令

    • history:显示命令历史
    • !command:重新执行最近的 command
    • !123:重新执行命令历史中的第123条命令
    • history | grep command:搜索命令历史
  • 创建命令别名

    • alias ll='ls -l':创建 ll 别名,等同于 ls -l
    • unalias ll:删除 ll 别名
    • alias:显示所有别名
  • 输出文本

    • echo "Hello, World!":输出 Hello, World!
    • echo $PATH:输出 PATH 环境变量的值
    • echo -e "line1\nline2":输出多行文本
  • 显示或设置系统日期和时间

    • date:显示当前日期和时间
    • date +%Y-%m-%d:显示当前日期,格式为 YYYY-MM-DD
    • sudo date --set="2024-10-10 12:00:00":设置系统日期和时间为 2024-10-10 12:00:00
  • 查找文件

    • find /path/to/search -name "filename":在指定目录中查找名为 filename 的文件
    • find /path/to/search -type d:查找目录
    • find /path/to/search -type f:查找文件
    • find /path/to/search -mtime -7:查找过去7天内修改过的文件
    • find /path/to/search -size +100M:查找大于100MB的文件
  • 搜索文本

    • grep pattern file.txt:在 file.txt 中搜索 pattern
    • grep -i pattern file.txt:忽略大小写搜索
    • grep -r pattern /path/to/search:递归搜索目录
    • grep -v pattern file.txt:反向搜索,显示不包含 pattern 的行
    • grep -n pattern file.txt:显示行号
  • 排序

    • sort file.txt:按字母顺序排序
    • sort -r file.txt:按字母顺序逆序排序
    • sort -n file.txt:按数字排序
    • sort -k 2 file.txt:按第二列排序
  • 去重

    • uniq file.txt:去除连续重复的行
    • sort file.txt | uniq:去除所有重复的行
  • 提取字段

    • cut -d ',' -f 1,3 file.csv:以逗号为分隔符,提取第1列和第3列
    • cut -c 1-10 file.txt:提取前10个字符
  • 流编辑器

    • sed 's/old/new/' file.txt:替换文件中的 old 为 new
    • sed -i 's/old/new/' file.txt:直接修改文件内容
    • sed '1,5d' file.txt:删除前5行
    • sed '/pattern/d' file.txt:删除包含 pattern 的行
    • sed -n '1,5p' file.txt:打印第1行到第5行
  • 文本处理

    • awk '{print $1}' file.txt:打印每行的第一个字段
    • awk -F ',' '{print $1, $3}' file.csv:以逗号为分隔符,打印第1列和第3列
    • awk 'NR==1,NR==5' file.txt:打印第1行到第5行
    • awk '/pattern/ {print $0}' file.txt:打印包含 pattern 的行

Vi/Vim 命令

1. Vi/Vim 的三种主要模式

  1. 普通模式(Normal Mode):启动 vi/vim 后默认进入的模式,在此模式下可以使用键盘快捷键进行文件浏览和编辑操作。
  2. 插入模式(Insert Mode):在此模式下可以输入文本。可以通过在普通模式下按下 i 键(insert)、a 键(append)等进入。
  3. 命令行模式(Command-line Mode):在此模式下可以执行命令,如保存文件、退出编辑器等。通常通过在普通模式下按下 : 键进入。

2. 基本操作

普通模式下的命令

  • 移动光标

    • h:左移一格
    • j:下移一行
    • k:上移一行
    • l:右移一格
    • 0:移动到行首
    • $:移动到行尾
    • w:向前移动到下一个单词的开始
    • b:向后移动到上一个单词的开始
    • G:移动到文件的最后一行
    • gg:移动到文件的第一行
    • 10G:移动到文件的第10行
    • Ctrl + f:向下翻一页
    • Ctrl + b:向上翻一页
    • Ctrl + d:向下翻半页
    • Ctrl + u:向上翻半页
  • 编辑操作

    • dd:删除当前行
    • x:删除光标所在位置的字符
    • u:撤销上一步操作
    • Ctrl + r:重做上一步撤销的操作
    • p:在光标后粘贴文本
    • P:在光标前粘贴文本
    • y:复制(yank)光标所在位置的文本
    • yy:复制当前行
    • d$:删除从光标到行尾的文本
    • d0:删除从光标到行首的文本
    • D:删除从光标到行尾的文本
    • C:删除从光标到行尾的文本并进入插入模式
    • S:删除当前行并进入插入模式
    • J:合并当前行和下一行
  • 搜索和替换

    • /pattern:向前搜索 pattern
    • ?pattern:向后搜索 pattern
    • n:重复上次搜索
    • N:反向重复上次搜索
    • :s/old/new/:替换单个匹配项
    • :%s/old/new/g:替换所有匹配项
    • :%s/old/new/gc:替换所有匹配项,并提示确认
    • *:搜索光标所在单词
    • #:反向搜索光标所在单词
  • 文件操作

    • :w:保存文件
    • :q:退出编辑器
    • :wq 或 ZZ:保存并退出
    • :q!:不保存并强制退出
    • :e!:放弃更改并重新加载文件
    • :set nu:显示行号
    • :set nonu:隐藏行号
    • :set hlsearch:开启搜索高亮
    • :set nohlsearch:关闭搜索高亮
    • :set wrap:开启自动换行
    • :set nowrap:关闭自动换行
    • :set tabstop=4:设置制表位为4个空格
    • :set shiftwidth=4:设置缩进宽度为4个空格
    • :set expandtab:将制表符转换为空格
    • :set noexpandtab:不将制表符转换为空格

插入模式

  • 进入插入模式

    • i:在当前光标前插入文本
    • a:在当前光标后插入文本
    • I:在当前行首插入文本
    • A:在当前行尾插入文本
    • o:在当前行之下新建一行并进入插入模式
    • O:在当前行之上新建一行并进入插入模式
    • R:进入替换模式
    • Ctrl + t:增加一个缩进
    • Ctrl + d:减少一个缩进
    • Ctrl + y:向上复制一行
    • Ctrl + e:向下复制一行
  • 退出插入模式

    • Esc:从插入模式返回到普通模式

命令行模式

  • 文件操作

    • :w filename:将当前缓冲区内容写入指定文件
    • :r filename:读取文件内容到当前缓冲区
    • :w !sudo tee %:保存需要管理员权限的文件
    • :w !command:将当前缓冲区内容作为命令的标准输入
  • 窗口操作

    • :sp filename:水平分割窗口并打开文件
    • :vsp filename:垂直分割窗口并打开文件
    • Ctrl + w h:左移窗口
    • Ctrl + w j:下移窗口
    • Ctrl + w k:上移窗口
    • Ctrl + w l:右移窗口
    • :qall:关闭所有窗口
    • :only:只保留当前窗口
    • :tabnew filename:在新标签页中打开文件
    • gt:切换到下一个标签页
    • gT:切换到上一个标签页
  • 宏录制

    • qa:开始录制宏,存储在寄存器 a 中
    • q:停止录制宏
    • @a:执行寄存器 a 中的宏
    • @@:重复执行上次的宏
  • 多文件编辑

    • :e filename:打开另一个文件
    • :n:切换到下一个文件
    • :N:切换到上一个文件
    • :args:显示当前编辑的文件列表
    • :bufdo command:在所有缓冲区中执行命令
    • :tabdo command:在所有标签页中执行命令

3. 实用技巧

  • 可视选择模式

    • v:进入字符选择模式
    • V:进入行选择模式
    • Ctrl + v:进入列选择模式
    • y:复制选中的文本
    • d:删除选中的文本
    • ::在选中的行上执行命令
    • >:向右缩进选中的行
    • <:向左缩进选中的行
  • 多文件编辑

    • :args file1 file2:打开多个文件
    • :next:切换到下一个文件
    • :prev:切换到上一个文件
    • :first:切换到第一个文件
    • :last:切换到最后一个文件
  • 快速跳转

    • Ctrl + o:跳转到上一个位置
    • Ctrl + i:跳转到下一个位置
    • Ctrl + p:向上搜索历史命令
    • Ctrl + n:向下搜索历史命令
  • 自定义配置

    • 编辑 ~/.vimrc 文件来定制 Vim 行为
    • 常见配置:
      set nu                  " 显示行号
      set tabstop=4           " 设置制表位为4个空格
      set shiftwidth=4        " 设置缩进宽度为4个空格
      set expandtab           " 将制表符转换为空格
      set autoindent          " 自动缩进
      set smartindent         " 智能缩进
      set hlsearch            " 开启搜索高亮
      set incsearch           " 增量搜索
      set ignorecase          " 忽略大小写
      set smartcase           " 智能大小写

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/478355.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PGSQL物化视图(Materialized View)

在 PostgreSQL 中&#xff0c;物化视图&#xff08;Materialized View&#xff09;是一种特殊的数据库对象&#xff0c;它存储了查询的结果集&#xff0c;并可以定期刷新以反映基础表中的数据变化。物化视图可以提高查询性能&#xff0c;因为它减少了每次查询时重新计算数据的需…

浏览器缓存与协商缓存

1. 强缓存&#xff08;Strong Cache&#xff09; 定义 强缓存是指在缓存的资源有效期内&#xff0c;浏览器会直接使用缓存中的数据&#xff0c;而不会发起网络请求。也就是说&#xff0c;浏览器会直接从本地缓存读取资源&#xff0c;不会与服务器进行任何交互。 如何控制强缓…

JS听到了替罪的回响

这篇还是继续写JS 这是有关函数的一些内容 函数 为什么需要函数 函数是被设计为执行指定任务的代码块 函数可以把具有相同或者相似逻辑的代码包裹起来&#xff0c;通过函数调用执行这些被包裹的代码逻辑&#xff0c;这样的优势是有利于精简代码方便复用 函数使用 这是函…

【优选算法】前缀和

目录 一、[【模板】前缀和](https://www.nowcoder.com/practice/acead2f4c28c401889915da98ecdc6bf?tpId230&tqId2021480&ru/exam/oj&qru/ta/dynamic-programming/question-ranking&sourceUrl%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595…

SAP ME2L/ME2M/ME3M报表增强添加字段

SAP ME2L/ME2M/ME3M报表增强添加字段&#xff08;包含&#xff1a;LMEREPI02、SE18:ES_BADI_ME_REPORTING&#xff09; ME2L、ME2M、ME3M这三个报表的字段增强&#xff0c;核心点都在同一个结构里 SE11:MEREP_OUTTAB_PURCHDOC 在这里加字段&#xff0c;如果要加的字段是EKKO、…

破解天然气巡检挑战,构建智能运维体系

一、行业现状 天然气行业在能源领域地位举足轻重&#xff0c;其工作环境高风险&#xff0c;存在有毒有害、易爆气体及高温等情况&#xff0c;且需持续监控设备运行状态&#xff0c;人工巡检面临巨大挑战与风险。好在随着科技发展&#xff0c;防爆巡检机器人的应用为天然气管道…

TSmaster CAN/CANFD 诊断(Diagnostic_CAN)

文章目录 1、Diagnostic TP 参数配置1.1 传输层参数&#xff1a;1.2 服务层参数1.3 Seed&Key 2、基础诊断配置2.1 添加/删除 服务2.2 配置 BasicDiagnostic 服务参数 3、诊断控制台4、自动诊断流程4.1 流程用例管理4.2 配置诊断流程&#xff08;UDS Flow&#xff09;4.2.1 …

详解Servlet的使用

目录 Servlet 定义 动态页面 vs 静态页面 主要功能 Servlet的使用 创建Maven项目 引入依赖 创建目录 编写代码 打war包 部署程序 验证程序 Smart Tomcat 安装Smart Tomcat 配置Smart Tomcat插件 启动Tomcat 访问页面 路径对应关系 Servlet运行原理 Tomcat的…

mysql数据库双机互为主从设置与数据库断电无法启动处理

一、mysql数据库双机互为主从设置 前言 1.环境windows 2.数据库8.0 3.服务器1&#xff1a;192.168.12.1 4.服务器2&#xff1a;192.168.12.2 1. 设置数据库的配置文件 对文件名&#xff1a;my.ini进行修改 服务器1&#xff1a;192.168.12.1配置文件设置 [mysql] 下添加如…

strupr(arr);模拟实现(c基础)

hi , I am 36 适合对象c语言初学者 strupr(arr);函数是把arr数组变为大写字母&#xff0c;并返回arr 介绍一下strupr(arr)&#xff1b;(c基础&#xff09;-CSDN博客 现在进行My__strupr(arr);模拟实现 #include<stdio.h>//My__strupr(arr); //返回值为arr(地址),于是…

项目实战:基于深度学习的人脸表情识别系统设计与实现

大家好&#xff0c;人脸表情识别是计算机视觉领域中的一个重要研究方向&#xff0c;它涉及到对人类情感状态的理解和分析。随着深度学习技术的发展&#xff0c;基于深度学习的人脸表情识别系统因其高精度和强大的特征学习能力而受到广泛关注。本文旨在探讨基于深度学习的人脸表…

架构师思维中的人、产品和技术

架构思维主要是一种以产品和业务为驱动的顶层解决问题的思维,需要同时考虑产品、人和技术3重关系,思维点需要同时落在三维体系中。虽然架构师很多时候做的工作其实只是分和合,即所谓的系统分拆及重新组合,但综合能力要求很高,需要同时具备思维的高度和深度,在思维抽象的同…

智能显示屏插座:能否成为家庭用电安全的守护天使?

关键词&#xff1a;显示屏插座、LCD显示屏插座、LCD插座、智能计量插座、计量监测插座 最近&#xff0c;一则令人揪心的新闻在网络上疯传 在一个老旧小区里&#xff0c;由于电线老化和插座过载问题&#xff0c;引发了一场小型火灾。火势迅速蔓延&#xff0c;虽然幸运的是没有…

SAP_MM/CO模块-超详细的CK11N/CK40N取值逻辑梳理(十几种业务场景,1.76W字)

一、业务背景 财务月结完成后,对次月物料进行成本发布时,经常会提物料成本不准的问题,譬如说同一个物料,CK40N发布的成本与CK11N发布的成本对不上;再有就是因为物料有多个生产版本,多个采购价格,多个货源清单等主数据,导致CK11N发布成本的时候,跟用户理解的取数逻辑对…

今天你学C++了吗?——C++中的类与对象(第二集)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

部署实战(二)--修改jar中的文件并重新打包成jar文件

一.jar文件 JAR 文件就是 Java Archive &#xff08; Java 档案文件&#xff09;&#xff0c;它是 Java 的一种文档格式JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中&#xff0c;多出了一个META-INF/MANIFEST.MF 文件META-INF/MANIFEST.MF 文件在生成 JAR 文件的时候…

微信小程序+Vant-自定义选择器组件(多选

实现效果 无筛选&#xff0c;如有需要可参照单选组件中的方法.json文件配置"component": true,columns需要处理成含dictLabel和dictValue字段&#xff0c;我是这样处理的&#xff1a; let list arr.map(r > {return {...r,dictValue: r.xxxId,dictLabel: r.xxx…

.NET Core发布网站报错 HTTP Error 500.31

报错如图&#xff1a; 解决办法&#xff1a; 打开任务管理器》》服务》》找到这仨服务&#xff0c;右键启动即可&#xff0c;如果已经启动了就重启&#xff1a;

Canvas 前端艺术家

目前各种数据来看&#xff0c;前端未来在 数据可视化 和 AI 这两个领域会比较香&#xff0c;而 Canvas 是 数据可视化 在前端方面的基础技术。所以给大家唠唠Canvas这个魔幻工具。 Canvas 介绍 Canvas 中文名叫 “画布”&#xff0c;是 HTML5 新增的一个标签。Canvas 允许开发…

Leetcode142. 环形链表 II(HOT100)

链接 我的错误代码&#xff1a; class Solution { public:ListNode *detectCycle(ListNode *head) {if(!head||!head->next)return nullptr;ListNode* f head->next,*s head;while(f){f f->next,s s->next;if(!f)return nullptr;f f->next;if(fs){ListNo…