• 第02篇_开发工具

    第01章_操作系统

    第一节 Linux命令

    1. Linux系统简介

    1) 什么是Linux?

    Linux是一种开源的、基于Unix的操作系统,广泛应用于服务器、嵌入式系统和桌面等领域,以稳定性、安全性和可定制性著称。

    常见的发行版包括:CentOS/RRHEL(企业级/商业企业级)、Ubuntu(适合新手和桌面)、Debian(稳定可靠)等。

     

    2) 设置环境变量

     

    3) 设置开机启动项

    在Linux系统中,设置程序或服务在开机时自动启动有多种方法,具体取决于系统的初始化系统(如systemdinit等)。

    systemd 的服务单元文件示例如下:

     

    4) 源码编译安装

     

     

    2. 电源/登录

    shutdown-关机或重启

     

    halt-关机

     

    reboot-重启

     

    login-登录

     

    logout-登出(注销)

     

    last-查看登录情况

     

    w-查看登录用户

     

    chsh-修改默认Shell

     

    exit-退出当前shell

     

    3. 系统信息

    uname-查看系统信息

     

    whoami-查看当前用户

     

    env-查看环境变量

     

    locale-查看本地化配置

     

    uptime-查看系统负载

     

    hostname-查看/修改主机名

     

    date-查看/修改日期时间

     

    lscpu-查看CPU信息

     

    free-查看内存信息

     

    df-查看磁盘信息

     

    du-查看目录大小

     

     

    4. 系统管理

    at-管理定时任务

     

    crontab-管理周期任务

     

    ifconfig-网卡配置

     

    ip-新一代网卡配置

     

    netstat-查看端口信息

     

    ping-检查远程主机连线状态

     

    ps-查看进程列表

     

    pstree-查看进程树

     

    top-进程资源监控

     

    kill-杀死进程

     

    jobs-管理系统任务

     

    watch-监控动态信息

     

     

    5. 文件管理

    ls-查看文件/目录信息

     

    cd-修改当前工作目录

     

    pwd-查看当前工作目录

     

    mkdir-创建目录

     

    touch-创建空文件或修改文件的时间戳

     

    ln-创建链接文件

     

    file-查看文件类别

     

    cp-复制文件或者目录

     

    mv-移动文件或者目录

     

    rm-删除文件或者目录

     

    find-精确查找文件

     

    locate-快速查找文件

     

    which-定位可执行文件

     

    gzip-gz压缩和解压

     

    bzip2-bz2压缩和解压

     

    zip/unzip-打包/解包文件

     

    rar/unrar-打包/解包文件

     

    tar-打包/解包文件

     

     

    6. 文本处理

    vim-文件编辑

     

    cat/more/less-查看文件

     

    head/tail-文件摘选

     

    wc-文本统计

     

    tr-字符转译

     

    sort-文本行排序

     

    diff-文本行对比

     

    cut-文本行提取列

     

    grep-提取关键字

     

    sed-文本行编辑

     

    awk-文本行处理

     

     

    7. 用户管理

    id-查看用户ID/组ID

     

    useradd-新建用户

     

    userdel-删除用户

     

    passwd-修改用户密码

     

    usermod-修改用户信息

     

    groupadd-新增用户组

     

    groupdel-删除用户组

     

    groupmod-修改用户组信息

     

    gpasswd-管理用户组成员

     

    su-切换用户

     

    newgrp-切换用户组

     

     

    8. 权限管理

    sudo-以root用户身份执行命令

     

    chmod-修改文件/目录权限

     

    chown-修改文件属主/属组

     

    umask-查看/修改文件权限掩码

     

    getfacl-查看 ACL 权限

     

    setfacl-设置 ACL 权限

     

     

    9. 服务管理

    rpm-RedHat系列二进制包工具

     

    dpkg-Debian系列二进制包工具

     

    yum-rpm包管理工具

     

    apt-get-deb包管理工具

     

    dnf-新一代rpm包管理工具

     

    service-基于 sysvinit 的服务管理命令

     

    systemctl-基于 systemd 的服务管理命令

     

     

    10. 存储管理

    逻辑卷管理(LVM)

    逻辑卷管理(LVM,Logical Volume Manager)是 Linux 环境下对磁盘分区进行管理的一种机制。它通过在磁盘和文件系统之间添加一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提高磁盘分区管理的灵活性。

    使用 LVM 管理磁盘的基本过程如下: 1) 物理存储:存储系统最低层的存储单元,如hda~hdd(IDE磁盘)、sda~sdz(SCSI/SATA/USB磁盘)、vda(virtio磁盘)、fda(软驱)等。 2) 磁盘分区(fdisk):1个磁盘最多可划分4个主分区(或3个主分区+1个扩展分区),命名为sda1~sda4;其中扩展分区又可划分多个逻辑分区,从sda5开始命名。 3) 物理卷(pvcreate):指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),可由物理存储直接创建,也可由多个磁盘分区组合,命名和磁盘分区类似。

     

    fdisk-管理分区

     

    pvXxxx-管理物理卷

     

    vgXxxx-管理卷组

     

    lvXxxx-管理逻辑卷组

     

    mkfs-创建文件系统

     

    mount-挂载文件系统

     

     

    11. 其它命令

    echo-回写文字

     

    tee-显示程序的输出并将其复制到一个文件中

     

    clear-清除屏幕画面

     

    alias-设置命令别名

     

    sync-将在内存的数据写回硬盘

     

    expr-表达式计算

     

    nslookup-DNS解析

     

    telnet-远程登录

     

    help-查看内置命令的帮助信息

     

    man-查看帮助信息

     

     

    12. GDB调试

    1) GDB简介

    GDB(GNU Debugger)是一个开源的、功能强大的调试工具,用于调试程序,帮助开发者查找和修复代码中的错误。

    在编译时,可以通过-g参数生成调试信息,否则,将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。

    在启动程序时,可以通过 gdb 模式进行启动:

     

    2) 设置断点

     

    3) 调试代码

     

    4) 查看变量

     

    5) 修改变量

     

    6) 显示源代码

     

     

     

    第二节 Shell脚本

    1. 快速入门

    1) 什么是Shell?

    Shell是在Linux内核的基础上编写的一个应用程序,它连接了用户和Linux内核,从而让用户能够更加便捷、高效、安全的使用Linux内核。

    Shell脚本就是由Shell命令组成的可执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。

     

    2) 入门案例

    一个简单的Shell脚本示例如下:

    可以使用./hello.sh(需要x权限). hello.shsource hello.shsh hello.sh命令执行。

     

    3) 脚本调试

    Shell 提供了一些用于调试脚本的选项,如:

    选项作用
    -n读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
    -v一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。
    -x提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。

    这些选项有三种常见的使用方法:

     

     

    2. 变量

    1) 变量类型

    Shell中有三种类型的变量:

     

    2) 定义和使用变量

     

    3) 参数变量
    变量含义
    $0代表执行的文件名
    $n代表传入的第n个参数,如$1
    $#参数个数
    $*以一个单字符串显示所有向脚本传递的参数
    $@与$*相同,但是使用时加引号,并在引号中返回每个参数
    $$脚本运行的当前进程号
    $!后台运行的最后一个进程的ID
    $?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

     

    使用参数时一般需判断参数是否存在(注意$1需要加双引号)。

     

    4) 字符串

     

    5) 数组

     

     

    3. 运算符

    1) 算数运算符 + - \* / % == !=

    原生的bash并不支持简单的数学运算,通常要通过其它命令来实现。

    运算格式
    加法expr $a + $b
    减法expr $a - $b
    乘法expr $a \* $b
    除法expr $b / $a
    取余expr $b % $a
    赋值a=$b
    相等[ $a == $b ]
    不相等[ $a != $b ]

    下面是其它一些可用的运算指令:

    注意:

    1. 左括号[也是一个命令,位于/usr/bin/[,在书写命令参数时注意使用空格分开。

     

    2) 关系运算符 -eq -gt -lt

    关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

    运算格式
    检测两个数是否相等[ $a -eq $b ]
    检测两个数是否不相等[ $a -ne $b ]
    检测左边的数是否大于右边的[ $a -gt $b ]
    检测左边的数是否小于右边的[ $a -lt $b ]
    检测左边的数是否大于等于右边的[ $a -ge $b ]
    检测左边的数是否小于等于右边的[ $a -le $b ]

     

    3) 布尔运算符 ! -o -a
    运算格式
    非运算[ ! false ]
    或运算[ $a -lt 20 -o $b -gt 100 ]
    与运算[ $a -lt 20 -a $b -gt 100 ]

     

     

    4) 逻辑运算符 && ||
    运算格式
    逻辑的 AND[[ $a -lt 100 && $b -gt 100 ]]
    逻辑的 OR[[ $a -lt 100 || $b -gt 100 ]]

    注意:逻辑运算具有特殊的短路功能!

     

     

    5) 字符串运算符 = != -z -n
    运算格式
    检测两个字符串是否相等[ $a = $b ]
    检测两个字符串是否不相等[ $a != $b ]
    检测字符串长度是否为0[ -z $a ]
    检测字符串长度是否不为 0[ -n $a" ]
    检测字符串是否为空[ $a ]

     

    6) 文件测试运算符 -b -s -e
    运算shell中的实现
    检测文件是否是块设备文件[ -b $file ]
    检测文件是否是字符设备文件[ -c $file ]
    检测文件是否是目录[ -d $file ]
    检测文件是否是普通文件(既不是目录,也不是设备文件)[ -f $file ]
    检测文件是否设置了 SGID 位[ -g $file ]
    检测文件是否设置了粘着位(Sticky Bit)[ -k $file ]
    检测文件是否是有名管道[ -p $file ]
    检测文件是否设置了 SUID 位[ -u $file ]
    检测文件是否可读[ -r $file ]
    检测文件是否可写[ -w $file ]
    检测文件是否可执行[ -x $file ]
    检测文件是否为空(文件大小是否大于0)[ -s $file ]
    检测文件(包括目录)是否存在[ -e $file ]

    扩展:文件名通配符

    • *:匹配 0 个或多个任意字符,如:ls /dev/ttyS*。

    • ?:匹配一个任意字符,如:ls ch0?.doc。

    • [若干字符]:匹配方括号中任意一个字符的一次出现,如:ch[012] [0-9].doc。

     

    7) 命令执行符

     

     

    4. 控制语句

    1) if-fi

     

    2) if-else-fi

     

    3) if else-if else

     

    4) for循环

     

    5) while循环

     

    6) 死循环

     

    7) until循环

    until 循环执行一系列命令直至条件为 true 时停止。

     

    8) 退出循环

     

    9) case-esac多选择语句

     

    10) select-in语句

     

     

    5. 函数

    1) 定义和调用函数

    注意:

    1. 当函数没有return时,默认返回最后一个命令的运行结果作为返回值。

    2. $10不能返回第十个参数,当n>10的时候,需要使用$(n)来获取参数。

    3. 函数内部的定义的变量在外部也可以访问,可以使用local关键字限制。

     

     

    6. 重定向

    1) 重定向简介

    一般情况下,每个Linux命令运行时都会打开三个文件:

    但有些时候我们可能需要将数据从其它文件读入或读出,这就需要我们重定向。

     

    2) 标准流重定向

     

    7. 常用命令

    1) echo

     

    2) read

    read 命令用于获取键盘输入信息。

     

     

    3) 管道

    可以通过 | 把一个命令的输出传递给另一个命令做输入。

     

    第三节 Windos脚本

    1. 什么是批处理?

    批处理是使用批处理文件(Batch File,简称BAT文件)进行批量的命令处理的过程。批处理文件从内容上来看包含了大量的基本DOS命令,是一种可执行文件。批处理文件运行时会按照规则从逐一执行文件中的命令,本质上是一些命令的集合。

     

    2. 基础DOS命令介绍

    1) 文件与目录相关命令 dir...
    命令说明
    dir展示路径下的目录和文件信息
    cd切换路径。可以用cd ..来切换到上层路径。
    盘符:切换盘符。如d:
    md创建文件夹
    rd删除文件夹
    copy复制文件到指定路径
    move移动文件到指定路径
    ren文件重命名
    del删除文件
    type查看文件
    edit编译文件

     

    2) 显示相关命令 echo...
    命令说明
    title修改cmd窗口标题
    prompt修改命令提示符
    echo回显。可以使用echo on/off来打开/关闭命令回显。也可以使用@echo作用于单条命令。

     

    3) 赋值命令 set
    命令说明
    set [变量名]查看变量的值。可以省略变量名来查看所有变量。
    set [变量名]=[变量值]定义一个字符串类型的变量,并给它赋值。如set var1=abc。注意,=两边最好不要有空格。
    set /a [变量名]=[变量值]定义一个数值型变量,并给它赋值。
    set /p [变量名]=[提示信息]从标准输入设备获取值,并给予用户提示信息。

     

    4) 取值命令 %%
    命令说明
    %变量名%获取操作系统变量值
    %变量名:源串=目的串%读取变量的值做替换后返回,且原变量的值不变。
    %变量名:~m,n%读取变量的值截取某一片段返回,且原变量的值不变。

    有var=1234567890,有如下:

     

    5) 组合命令 & && ||
    命令说明
    命令1 & 命令2命令1执行完后按顺序执行命令2。
    命令1 && 命令2命令1执行完后,如果结果正确,才执行命令2。
    命令1 

    案例:

     

    6) 重定向命令 > >> |
    命令说明

    >|将命令的输出进行重定向,并覆盖原有内容 >>|将命令的输出进行重定向,但不覆盖原有内容 | |将命令1的输出作为命令2的输入

    管道命令还有 < 、<& 和 >& ,它们并不常见,在此暂时不讨论了。

     

    7) 调用命令
    命令说明
    call [标签]用于调用另一个批处理文件,调用完成后继续返回执行。
    start [标签]也用于调用另一个批处理文件,特点是会为其新开一个线程,从而不影响原线程执行。

    标签的定义以:开头。批处理文件也有一些固定的标签。如:EOF

     

    8) 其它命令
    命令说明
    help [命令]查看命令的帮助信息。命令 /? 也可以达到相同效果
    rem注释该行命令
    cls清空屏幕显示
    color改变命令窗口颜色

     

     

    3. 参数传递

    1) 输入参数

    在命令行执行批处理文件时,可以传递一些参数。如:

    那么在批处理中可以通过%参数位置的方式来获取传入的参数。如:%1%2等,值得注意的是,批处理文件最多只能传递9个参数。

    test01的文件可以是如下所示:

    通常的,批处理文件在头部定义一些变量,来接受外部传入的参数

     

    2) 输出参数

    输出参数一般不常用,但还是可以了解下它们。请看如下bat文件(num_add.bat):

    可以进行一个简单的加法操作,下面是一组用于测试的命令:

     

    3) 在call/start时使用参数

    有下面一个批处理文件:

    goto命令是不可以携带参数的

     

    4. 条件语句 if-else

    1) 基础if-else用法

    if-else的基本语法格式如下:

    再附加上一个案例,相信你一看就能明白:

    变量 TIME 是动态环境变量之一,表示当前时间。 lss 是if命令扩展用法,表示小于的意思。更多信息可以在if/?中获得。

    这里有一个小提示,为了防止出现某些意料之外的错误,请勿在if语句进行比较处加一些不必要的空格。

     

    2) 延迟变量扩充

    这是一个很有意思的特性。下面的例子可以很好的说明直接变量扩充与延迟变量扩充的区别。

    setlocal EnableDelayedExpansion 表示开启延迟变量扩充,此时的 !num! 才有意义。

     

    3) if exist和if defined

    if 还有其他的用法。其中if exist用于判断文件是否存在,就像下面这样:

    在对文件进行操作之前进行判断其是否存在很有意义,这使得代码更加健壮。

    if defined也与之类似,只不过判断对象不是文件,而是变量,它用于判断环境变量是否被定义。

     

     

    5. 循环语句 for-in

    for-in大致有三种常用的用法,分别是作用于文件、数字、以及字符串。

    1) for-in 之于文件

    下面是一个批量修改文件名的批处理文件。

    %%i表示迭代变量。值得注意的是,在批处理文件中(而不是命令行),必须使用双%来标识。

     

    2) for-in 之于数字

    如果想对一系列有规律的数字进行循环,或是在一定的次数内对某个操作进行循环重复的执行,使用 for 也能够实现。下面是一个很好的例子:

    /l 是可以跟在 for 后面的重要参数之一。用于标识作用于数字的for-in循环。in中的三个值分为为起始值、步长和结束值。

     

    3) for-in 之于字符串

    for 也可以对指定范围内的文字进行循。for 后面跟参数 /f ,/f 后面跟选项,所指定的范围 in 里可以是一个文件里的文字,可以是一个字符串,也可以是一条命令的输出结果。我们首先以一个文件里的文字作为循环对象,循环时,每一行将被循环一次。

    作为测试,可以在上述批处理文件的同一路径下创建一个用于测试的文本文件 文字筛选.txt ,其内容为:

     

    6. 跳转语句 goto call

    goto和call可以无条件的改变命令的执行顺序。下面是一个使用goto的案例

    call与goto的使用方式类似,但call执行完后依然会回到call之前的位置继续执行剩下的代码,案例可以参考上章节。

     

     

     

    第02章_虚拟化

    第一节 Docker简介

    1. 什么是Docker?

    Docker是一种轻量级虚拟化技术,它允许开发人员将应用程序及其依赖项打包到一个可移植的容器中,便于部署和运行。

     

    2. 安装Docker

     

    3. 常用Docker命令

    1) 镜像相关命令

     

    2) 容器相关命令

     

    3) 分享镜像

     

    4) 存储映射

     

    5) Docker网络

     

    4. Docker Compose

    1) 简介

    Docker Compose 是用于定义和运行多容器应用程序的工具。 它是解锁简化和高效的开发和部署体验的关键。

    参考文档:

     

    2) 常用命令

     

    3) 简单示例

     

    4) 安装常用开发组件
    系统配置

     

    compose.yml

    准备一个 compose.yml文件,内容如下:

    注意:

    1. kafka119.45.147.122 改为你自己的服务器IP。

     

    启动

     

    访问
    组件(容器名)介绍访问地址账号/密码特性
    Redis(redis)k-v 库你的ip:6379单密码模式:123456已开启AOF
    MySQL(mysql)数据库你的ip:3306root/123456默认utf8mb4字符集
    Rabbit(rabbit)消息队列你的ip:15672rabbit/rabbit暴露5672和15672端口
    OpenSearch(opensearch-node1/2)检索引擎你的ip:9200 内存512mb;两个节点
    opensearch-dashboardssearch可视化你的ip:5601  
    Zookeeper(zookeeper)分布式协调你的ip:2181 允许匿名登录
    kafka(kafka)消息队列你的ip:9092 外部访问:9094 占用内存512mb
    kafka-ui(kafka-ui)kafka可视化你的ip:8080  
    nacos(nacos)注册/配置中心你的ip:8848nacos/nacos持久化数据到MySQL
    nacos-mysql(nacos-mysql)nacos配套数据库你的ip:13306root/root 
    prometheus(prometheus)时序数据库你的ip:9090  
    grafana(grafana) 你的ip:3000admin/admin 

     

    5. Dockerfile

    1) 简介

    Dockerfile 是 Docker 镜像的构建描述文件,常用指令如下:

    指令描述
    ADD添加本地或远程文件和目录。
    ARG使用构建时变量。
    CMD指定 default 命令。
    COPY复制文件和目录。
    ENTRYPOINT指定默认可执行文件。
    ENV设置环境变量。
    EXPOSE描述您的应用程序正在侦听的端口。
    FROM从基础映像创建新的构建阶段。
    HEALTHCHECK在启动时检查容器的运行状况。
    LABEL将元数据添加到图像中。
    MAINTAINER指定图像的作者。
    ONBUILD指定何时在构建中使用映像的说明。
    RUN执行生成命令。
    SHELL设置镜像的默认 shell。
    STOPSIGNAL指定退出容器的系统调用信号。
    USER设置用户和组 ID。
    VOLUME创建卷挂载。
    WORKDIR更改工作目录。

    参考文档:

    Dockerfile reference | Docker Docs

     

    2) 常用命令

     

    3) 简单示例

     

     

    第二节 K8S简介

    1. 什么是K8S?

    Kubernetes(通常简称为K8s)是一个开源的容器编排平台,用于自动化容器化应用程序的部署、扩展和管理。

     

     

     

    第03章_Web服务器

    第一节 Web服务器概述

    1. 什么是Web服务器?

    Web服务器是一种在互联网上提供网页内容的服务器程序,主要功能是接收客户端(如浏览器)的请求,然后将网页内容(如HTML、CSS、JavaScript等)发送给客户端进行展示。

     

    2. 常用的Web服务器有哪些?

     

     

    第二节 Tomcat安装部署

    1. 下载安装

     

    2. 部署项目

    1) JavaWeb项目结构

    一个JavaWeb项目的目录结构类似如下:

     

    2) 直接部署

     

    3) 静态部署

     

    4) 动态部署

     

    3. 启停项目

    注意:Tomcat启动可能遇到的问题

    1. 黑窗口一闪而过:可能是没有正确配置JAVA_HOME目录。

    2. 启动报错:可能是端口被占用。可以直接使用netstat -ano查找所在进程然后打开任务管理器杀死,也可以修改自身端口。

     

    4. 与IDEA集成

     

     

     

    第04章_IDEA

    第一节 IDEA简介

    1. 什么是IDEA?

    IntelliJ IDEA 是一款由 JetBrains 公司开发的集成开发环境(IDE),主要用于 Java、Kotlin、Groovy 等软件开发。

     

    2. 安装IDEA

     

     

    3. 基础配置

    打开配置菜单

    image-20250601143057558

     

    IDEA主题与字体

    image-20250601143357021

     

    启动时打开上次项目/关闭时进行确认

    image-20250601143739314

     

    开启滚轮调整字体大小

    image-20250601144044299

     

    开启自动导入

    image-20250601151109308

     

    展示行号和方法分割线

    image-20250601151142348

     

    开启代码联想

    image-20250601150100396

     

    调整字体字号行间距

    image-20250601144635045

     

    修改行结尾符

    image-20250601144934035

     

    禁用TAB/开启空格缩进

    image-20250601145155611

     

    配置智能提示

    image-20250601145338901

     

    修改文件和代码模板

    image-20250601145418917

     

    修改文件字符编码

    image-20250601145548468

     

    修改快捷输入模板

    image-20250601145631992

     

     

    4. 快捷键配置

    1) 修改快捷键

    image-20250601143920963

     

    2) 常用快捷键

     

     

    5. 常用插件

    安装插件

    插件市场安装或从本地磁盘安装

    image-20250601151627477

     

    Lombok

    通过注解自动生成Getter/Setter/ToString等方法,大幅减少样板代码(需配合项目依赖使用)。‌‌

     

    Alibaba Java Coding Guidelines

    遵循阿里Java开发规范,实时检测命名、注释等问题。‌‌

    在这里插入图片描述

     

    Jrebel and XRebel

    热部署工具,修改完代码之后Ctrl+F9生效。

     

    SonarLint

    静态代码分析工具,检测潜在漏洞(如空指针异常)。‌‌

     

    Maven Helper

    可视化分析依赖冲突,快速定位问题。‌‌

     

    Smart Input Pro

    自动切换输入法及通过光标的颜色提示输入法以及大小写状态。

     

    arthas idea

    快捷生成 arthas 命令。

     

    Free Mybatis plugin

    MyBatis开发必备,实现Mapper接口与XML文件双向跳转。‌‌

     

    Key Promoter X

    可以使用快捷键操作的地方提醒你用快捷键操作。

    image-20250601163636465

     

    Grep Console

    可以自定义设置控制台输出颜色和过滤控制台输出。

    grep-console3

     

    Rainbow Brackets

    使用各种鲜明的颜色来展示你的括号,效果图如下。

    rainbow-brackets

     

    CodeGlance

    提供一个代码的微型地图,当你的类比较多的时候可以帮忙你快速定位到要去的位置。

    code-glance

     

    Save Actions

    可以帮助我们在保存文件的时候:

    1. 优化导入;

    2. 格式化代码;

    3. 执行一些 quick fix

    4. ......

    save-actions

     

    jclasslib

    点击 View -> Show Bytecode With jclasslib可以直观地查看某个类对应的字节码文件,还可以查看类的基本信息、常量池、接口、属性、函数等信息。

    image-20250601160212046

     

    Sequence Diagram

    序列图可以查看调用目标方法涉及的相关类的调用关系(注意在方法名上右击)。

    image-20250601155554094

     

    Statistic

    可以对项目的 代码的总行数、单个文件的代码行数、注释行数等信息进行统计。

    img

    img

     

     

    第二节 开发Java项目

    1. 工程配置

    SDK和Level

    image-20250601160617850

    image-20250601160750184

     

    非maven库

    image-20250601160925437

     

    展示类成员

    image-20250601153244785

     

    2. 新建项目

     

    3. 运行项目

    支持长命令行

    image-20250601161028847

     

    允许允许多实例

    image-20250601161102356

     

    4. 调试技巧

    基本调试

    image-20250601162522712

     

    条件断点

    image-20250601161500469

     

    异常断点

    使用Ctrl + Shift + F8可进入断点编辑窗口,点击+可以新增异常断点:

    image-20250601161624396

     

    字段监视

    image-20250601161312427

     

    方法监视

    image-20250601161347195

     

    多线程调试

    右击断点选择按线程挂起,中断后可选择调试的线程:

    image-20250601162146614

     

    远程调试

    image-20250601162645417

    注:

    1. 远程程序需添加JVM参数:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

     

    Stream调试

    图片

     

     

    第三节 IDEA插件开发

    docs/tips/plug-in-development-intro.md · SnailClimb/awesome-idea - 码云 - 开源中国

     

     

     

    第05章_Maven

    第一节 Maven简介

    1. 什么是Maven?

    Maven 是 Apache 开源的一款项目管理工具,主要用于依赖管理自动化构建

     

    2. 安装Maven

    1) 本地安装Maven

    提示:

    1. 默认配置文件为${user.dir}/.m2/settings.xml,默认本地仓库位置在 ${user.dir}/.m2/repository

    2. 如果用户目录不存在默认配置,则会去查找安装目录。

     

    2) 使用Maven Wrapper

    Maven Wrapper 是一个用于管理和使用 Maven 的工具,它允许在没有预先安装 Maven 的情况下运行和构建 Maven 项目,并且可以确保构建过程使用正确的 Maven 版本,非常方便。

    在项目中启用Maven Wrapper:

    使用Maven Wrapper打包:

     

     

    3. 创建Maven工程

    1) Maven工程目录

    Maven工程的推荐目录结构如下,可以手动创建,也可以使用IDEA创建:

     

    2) 新建Maven工程

    image-20240305202959291

     

    3) 修改工程配置

    image-20240305203324348

     

    4) 完成Maven工程创建

    image-20240305203418489

     

     

    4. Maven聚合工程(多模块开发)

    聚合工程指一个工程允许创建多个子模块,多个子模块组成一个整体,可以统一进行项目的构建。

     

    1) 父工程

    父工程:不具备任何代码、仅有pom.xml的空项目,用来定义公共依赖、插件和配置;

    父工程创建方式和普通工程类似,创建好后修改打包方式为 pom 即可,此外,一般还会删除 src 目录。

    image-20240307203451442

     

    2) 子工程

    子工程:编写具体代码的子项目,可以继承父工程的配置、依赖项,还可以独立拓展。

    在 Project 菜单,右击父工程名称,即可选择创建子模块(New->Module...),子模块创建后会自动在父POM文件中进行关联。

    image-20240307204044005

     

     

    5. Maven生命周期

    Maven有三套生命周期,分别是清理生命周期核心生命周期报告生命周期,下面是各周期主要阶段的说明:

    image-20240312142707892

    1) clean

    mvn clean 是 maven 工程的清理命令,会删除编译生成的 target 目录。

    image-20240305200704025

     

    2) compile

    mvn compile命令将编译 src/main/java 下的.java文件,以及复制 src/main/resources 下的资源文件。

    image-20240305200745002

    输出到 {项目根目录}/target/classes目录:

    image-20240305202151269

    image-20240305202206868

     

    3) test

    mvn test命令会先执行 compile 命令,然后编译和执行 src/test/java 下的单元测试类。

    image-20240305201001755

     

    4) package

    mvn package命令会先执行 test 命令,然后进行打包。

    image-20240305201512967

    默认打包文件为 target/{项目名称}-1.0-SNAPSHOT.jar,是一种不包括依赖Jar包的“瘦包”。

    image-20240305202412419

    瘦包解压后目录如下,和 classes 目录内容基本一致。

    image-20240305202550901

    提示:

    1. 打包时可选择性的跳过测试

      • mvn package -DskipTests:跳过测试代码执行(但依旧会编译测试代码)

      • mvn package -Dmaven.test.skip=true:跳过测试代码编译和执行

     

    5) install

    mvn install 是 maven 工程的安装命令,将 package 命令打好的包发布到本地仓库

    image-20240305203910573

    image-20240305204218528

    image-20240305204233900

    提示:

    1. 同一个生命周期中,执行后续命令时,将会先执行前置命令,如执行install前会先执行package。

    2. 多个命令可以一起执行,如mvn clean install,将会先执行clean命令,再执行install命令。

     

    6) deploy

    mvn deploy命令用于在集成环境或者发布环境下执行,将最终版本的包拷贝到远程仓库,使得其他的开发者或者工程可以共享。

     

    第二节 全局配置文件(setting.xml)

    1. 顶层标签概览

     

    2. 仓库配置

     

    3. 服务器配置

     

    4. 镜像配置

     

    5. 激活条件配置

     

    6. 完整配置示例

     

     

    第三节 项目配置文件(pom.xml)

    1. 顶层元素概览

     

    2. 构建配置

    1) build顶层元素概览

     

    2) 资源配置

     

    3) 插件配置

     

     

    3. 依赖配置

    1) 依赖管理

     

    2) 依赖范围

    为了防止依赖冲突,以及减少不必要的打包,Maven支持设置依赖的生效范围:

    依赖范围编译环境测试环境运行环境示例
    compile生效生效生效默认
    provided生效生效不生效servlet api
    system生效生效不生效不推荐使用
    runtime不生效生效生效MySql驱动包
    test不生效生效不生效Junit

    扩展:

    1. plugin:主要用于插件的依赖管理,确保插件的依赖只在插件的生命周期中被加载。

    2. import:用于导入dependencyManagement配置。

     

    3) 依赖传递

    依赖传递指引入一个Jar包时,如果该Jar包依赖于其他Jar包(类库),则当前工程也会将它们全都引入,最终会形成一个树形依赖

    image-20240307200407596

    提示:

    1. 一级依赖也称为直接依赖,二级及以后的依赖被称为间接依赖

    2. 在聚合工程中,父工程也会向子工程传递依赖

     

    4) 依赖冲突

    依赖冲突指多个依赖包引入了同一份类库的不同版本时,可能会导致编译错误或运行时异常。但大都情况下,Maven会按照如下原则来自动解决依赖冲突

     

    5) 解决依赖冲突

    当Maven无法为我们自动解决依赖冲突时,它会提供错误信息,这时需要我们手动解决依赖冲突

     

    4. 发布配置

     

     

    5. 策略配置(多环境配置示例)

    首先,在父POM中添加依赖和插件,来支持yml配置读取pom配置文件中的参数:

    接下来,在pom.xml中配置开发、测试、生产三套配置策略:

    通过IDEA的Maven窗口,可以看到如下选项(命令行方式:mvn clean install -P prod):

    image-20240312093423693

    然后,就可以在SpringBoot的属性配置文件(如application.yml)中,可以读取当前启用的环境,并使用不同的配置了:

    执行流程步骤如下:

     

     

    第四节 常用Maven插件

    1. Maven插件简介

    Maven 本质上是一个插件执行框架,所有的执行过程,都是由一个一个插件独立完成的。像咱们日常使用到的 install、clean、deploy 等命令,其实底层都是一个一个的 Maven 插件。

    注意:

    1. 关于 Maven 的核心插件可以参考官方的这篇文档:https://maven.apache.org/plugins/index.html

    2. 本地默认插件路径: ${user.home}/.m2/repository/org/apache/maven/plugins

     

    2. maven-compiler-plugin

     

    3. maven-surefire-plugin

     

    4. maven-jar-plugin

     

    5.maven-source-plugin

     

    6. maven-dependency-plugin

     

    7. maven-assembly-plugin

     

     

    第五节 Maven打包部署

    1. SpringBoot项目-可执行Jar包

    参考SpringBoot学习笔记的[SpringBoot-Repackage]项目。

     

    2. SpringBoot项目-分层打包

    参考SpringBoot学习笔记的[risk-registry-eureka-server-bootapp]项目。

     

     

    第六节 私服搭建

    1. 私服简介和搭建

    参考:https://blog.csdn.net/m0_75260099/article/details/147542756

     

     

    第06章_Git&Svn

    第一节 Git

     

     

    第二节 SVN

    参考“文档资料”相关文档。

     

     

     

    第07章_Arthas

    第一节 Arthas简介

    1. 什么是Arthas?

    Arthas 是阿里巴巴开源的 Java 诊断工具,用于实时监控和诊断 Java 应用问题,支持查看线程、类加载、方法调用等信息,无需重启应用即可排查问题,适用于线上环境。

     

    2. 安装Arthas

    1) 在线安装

     

    2) 离线安装

     

     

    第二节 常用命令

    1. 命令列表

    1) JVM 相关

     

    2) class/classloader 相关

     

    3) monitor/watch/trace 相关

    注意:

    1. 这些命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行 stop 或将增强过的类执行 reset 命令。

     

    4) profiler/火焰图

     

    5) 基础命令

     

    6) 其它命令

     

     

    2. 常用命令示例

     

     

    第08章 Jenkins

    第一节 Jenkins简介

    1. 什么是Jenkins?

    Jenkins是一个基于Java开发的持续集成工具,通过众多插件来完成一系列复杂的功能。

    img

    提示:

    1. Jenkins中文网:https://www.jenkins.io/zh/

     

    2. 安装部署

     

     

    第二节 Pipeline简介

    1. 创建一个Pipeline

    image-20240416185957443

    image-20240416190053962

    image-20240416190234584

    image-20240416190302183

    image-20240416190426556

    image-20240416190518855

     

    2. 构建步骤

    1) Linux命令

     

    2) Bat命令

     

    3) 超时与重试

     

    4) 完成时动作

    当 Pipeline 运行完成时,你可能需要做一些清理工作或者基于 Pipeline 的运行结果执行不同的操作, 这些操作可以放在 post 部分。

     

    3. 执行环境

    agent 指令告诉Jenkins在哪里以及如何执行Pipeline或者Pipeline子集

     

    1) docker方式

     

    4. 环境变量

    1) 全局环境变量

     

    2) 阶段环境变量

     

    5. 记录结果

    1) 测试结果(junit)

    如果存在失败的测试用例,Pipeline 会被标记为 “UNSTABLE”,在网页上用黄色表示, 这不同于使用红色表示的 “FAILED” 失败状态。

     

    2) 构建结果

     

    6. 发送通知

    1) email

     

    7. 部署

    1) 阶段即为部署环境

    一个常见的模式是扩展阶段的数量以获取额外的部署环境信息, 如 “staging” 或者 “production”,如下例所示。

     

    2) 人工确认

     

    第三节 从SVN检出并使用Maven构建

    1. 创建一个Pipeline

    image-20240422170924327

     

    2. 配置SVN地址

    image-20240422171623994

     

    3. 编写Jenkinsfile并上传

    image-20240422171435688

     

    4. 执行构建

    image-20240422171742444