Linux运维_Bash脚本_编译安装Apache(httpd-2.4.54)

Linux运维_Bash脚本_编译安装Apache(httpd-2.4.54)

Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。

您可以在 Linux 和 MacOS 机器上使用 Bash,甚至可以通过适用于 Linux 的 Windows 子系统在 Windows 10 机器上使用。

使用方法

  • 下载源码包:

expat-2.5.0.tar.gz

apr-1.7.0.tar.gz

apr-util-1.6.1.tar.gz

openssl-1.1.1g.tar.gz

pcre-8.37.tar.gz (Maybe Not Necessary)

httpd-2.4.54.tar.gz

  • 放于指定路径:

这里 Bash Shell 脚本的全局变量 STORAGE 指定的存放源码包的路径 /home/goufeng 可进行修改。

  • 执行 Bash Shell 脚本:

输入 /[路径名]/[脚本名].sh 即可进行自动编译部署,过程中提示输入 (y/n) 输入 y 则进行下一步,这样分阶段确认的原因是为了确保能够看到上一个源码编译结果中可能的错误和提示。

完整脚本

#! /bin/bash
# Create By GF 2023-03-20 10:31# --------------------------------------------------
# Install First: 
# * None# ------------------- Dependency -------------------
# Need File: expat-2.5.0.tar.gz
# Need File: apr-1.7.0.tar.gz
# Need File: apr-util-1.6.1.tar.gz
# Need File: openssl-1.1.1g.tar.gz
# Need File: pcre-8.37.tar.gz (Maybe Not Necessary)
# ----------------- httpd - 2.4.54 -----------------
# Need File: httpd-2.4.54.tar.gz# ##################################################
STORAGE=/home/goufeng# ############################################ Dependency ############################################# Function: 编译安装(Compile Install) expat-2.5.0
# ##################################################
function Compile_Install_expat_2_5_0() {if [[ ! -d "/opt/expat-2.5.0" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Compile and Install ( expat-2.5.0 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/expat-2.5.0.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/expat-2.5.0 && ./configure --prefix=/opt/expat-2.5.0 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenif [[ ! -d "/opt/lib" ]]; then mkdir /opt/lib; fiif [[ ! -d "/opt/lib/pkgconfig" ]]; then mkdir /opt/lib/pkgconfig; fi# ......................................ln -sf /opt/expat-2.5.0/bin/xmlwf /usr/local/bin/# ......................................rsync -av /opt/expat-2.5.0/include/ /usr/local/include/# ......................................rsync -av /opt/expat-2.5.0/lib/ /usr/local/lib/# ......................................cp -f /opt/expat-2.5.0/lib/pkgconfig/expat.pc /opt/lib/pkgconfig/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/expat-2.5.0 && return 0elseecho "[Caution] Path: ( /opt/expat-2.5.0 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 编译安装(Compile Install) apr-1.7.0
# ##################################################
function Compile_Install_apr_1_7_0() {if [[ ! -d "/opt/apr-1.7.0" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Compile and Install ( apr-1.7.0 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/apr-1.7.0.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/apr-1.7.0 && ./configure --prefix=/opt/apr-1.7.0 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenif [[ ! -d "/opt/lib" ]]; then mkdir /opt/lib; fiif [[ ! -d "/opt/lib/pkgconfig" ]]; then mkdir /opt/lib/pkgconfig; fi# ......................................ln -sf /opt/apr-1.7.0/bin/apr-1-config /usr/local/bin/# ......................................rsync -av /opt/apr-1.7.0/include/ /usr/local/include/# ......................................rsync -av /opt/apr-1.7.0/lib/ /usr/local/lib/# ......................................cp -f /opt/apr-1.7.0/lib/pkgconfig/apr-1.pc /opt/lib/pkgconfig/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/apr-1.7.0 && return 0elseecho "[Caution] Path: ( /opt/apr-1.7.0 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 编译安装(Compile Install) apr-util-1.6.1
# ##################################################
function Compile_Install_apr_util_1_6_1() {if [[ ! -d "/opt/apr-util-1.6.1" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Compile and Install ( apr-util-1.6.1 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/apr-util-1.6.1.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/apr-util-1.6.1 && ./configure --prefix=/opt/apr-util-1.6.1 \--with-apr=/opt/apr-1.7.0 && \STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenif [[ ! -d "/opt/lib" ]]; then mkdir /opt/lib; fiif [[ ! -d "/opt/lib/pkgconfig" ]]; then mkdir /opt/lib/pkgconfig; fi# ......................................ln -sf /opt/apr-util-1.6.1/bin/apu-1-config /usr/local/bin/# ......................................rsync -av /opt/apr-util-1.6.1/include/ /usr/local/include/# ......................................rsync -av /opt/apr-util-1.6.1/lib/ /usr/local/lib/# ......................................cp -f /opt/apr-util-1.6.1/lib/pkgconfig/apr-util-1.pc /opt/lib/pkgconfig/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/apr-util-1.6.1 && return 0elseecho "[Caution] Path: ( /opt/apr-util-1.6.1 ) Already Exists."# ------------------------------------------return 0fi
}# Function: 编译安装(Compile Install) openssl-1.1.1g
# ##################################################
function Compile_Install_openssl_1_1_1g() {if [[ ! -d "/opt/openssl-1.1.1g" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Compile and Install ( openssl-1.1.1g )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/openssl-1.1.1g.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/openssl-1.1.1g && ./config --prefix=/opt/openssl-1.1.1g \--openssldir=/opt/openssl-1.1.1g/ssl \--shared \zlib && \STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenif [[ ! -d "/opt/lib" ]]; then mkdir /opt/lib; fiif [[ ! -d "/opt/lib/pkgconfig" ]]; then mkdir /opt/lib/pkgconfig; fi# ......................................# 注意: 避免与系统原有的 "openssl" 发生冲突, 未将 "openssl-1.1.1g" 的二进制 bin 文件发送到 PATH 路径。# Caution: To avoid conflicts with the original "openssl" in the system, the binary file of "openssl-1.1.1g" was not sent to the PATH path.# ......................................# Skip # ln -sf /opt/openssl-1.1.1g/bin/* /usr/local/bin/# ......................................# Skip # rsync -av /opt/openssl-1.1.1g/include/ /usr/local/include/# ......................................# Skip # rsync -av /opt/openssl-1.1.1g/lib/ /usr/local/lib/# ......................................cp -f /opt/openssl-1.1.1g/lib/pkgconfig/libcrypto.pc /opt/lib/pkgconfig/cp -f /opt/openssl-1.1.1g/lib/pkgconfig/libssl.pc    /opt/lib/pkgconfig/cp -f /opt/openssl-1.1.1g/lib/pkgconfig/openssl.pc   /opt/lib/pkgconfig/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/openssl-1.1.1g && return 0elseecho "[Caution] Path: ( /opt/openssl-1.1.1g ) Already Exists."# ------------------------------------------return 0fi
}# Function: 编译安装(Compile Install) pcre-8.37
# ##################################################
function Compile_Install_pcre_8_37() {if [[ ! -d "/opt/pcre-8.37" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Compile and Install ( pcre-8.37 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/pcre-8.37.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/pcre-8.37 && ./configure --prefix=/opt/pcre-8.37 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenif [[ ! -d "/opt/lib" ]]; then mkdir /opt/lib; fiif [[ ! -d "/opt/lib/pkgconfig" ]]; then mkdir /opt/lib/pkgconfig; fi# ......................................ln -sf /opt/pcre-8.37/bin/pcre-config /usr/local/bin/ln -sf /opt/pcre-8.37/bin/pcregrep    /usr/local/bin/ln -sf /opt/pcre-8.37/bin/pcretest    /usr/local/bin/# ......................................rsync -av /opt/pcre-8.37/include/ /usr/local/include/# ......................................rsync -av /opt/pcre-8.37/lib/ /usr/local/lib/# ......................................cp -f /opt/pcre-8.37/lib/pkgconfig/libpcre.pc      /opt/lib/pkgconfig/cp -f /opt/pcre-8.37/lib/pkgconfig/libpcrecpp.pc   /opt/lib/pkgconfig/cp -f /opt/pcre-8.37/lib/pkgconfig/libpcreposix.pc /opt/lib/pkgconfig/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/pcre-8.37 && return 0elseecho "[Caution] Path: ( /opt/pcre-8.37 ) Already Exists."# ------------------------------------------return 0fi
}# ########################################## httpd - 2.4.54 ########################################### Function: 编译安装(Compile Install) httpd-2.4.54
# ##################################################
function Compile_Install_httpd_2_4_54() {# ----------------------------------------------# Apache (httpd-2.x.x) 安装成功后, 会产生下面两个文件/目录:# ..............................................# Apache 主配置文件: /opt/httpd-2.4.54/conf/httpd.conf# ..............................................# Apache 默认网站 home 目录 (DocumentRoot): /opt/httpd-2.4.54/htdocs# ----------------------------------------------# Apache (httpd-2.x.x) 常用命令:# ..............................................# 查看 Apache 常见的模块 (包括动态和静态):# /usr/local/bin/apachectl -M# ..............................................# 查看 Apache 加载的静态模块:# /usr/local/bin/apachectl -l# ..............................................# 检查 Apache 配置文件有无语法错误:# /usr/local/bin/apachectl -t# ..............................................# 加载 Apache 配置文件, 但不重启:# /usr/local/bin/apachectl graceful# ..............................................# 启动 / 重启 / 停止 Apache 服务# /usr/local/bin/apachectl start/restart/stopif [[ ! -d "/opt/httpd-2.4.54" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Compile and Install ( httpd-2.4.54 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/httpd-2.4.54.tar.gz && STEP_UNZIPPED=1# ------------------------------------------# Create User for httpd-2.4.54.local USER_NAME=$(cat /etc/passwd | grep -o apache)# ..........................................# 命令 adduser 一般是在 Unix 系统下创建用户所用到的 Perl 脚本命令。# 使用 adduser 时, 创建用户的过程更像是一种人机对话, 系统会提示你输入各种信息, 然后会根据这些信息帮你创建新用户。# adduser 选项释义:#     -c, --comment "COMMENT"                  设置用户的备注信息。#     -d, --home HOME_DIR                      指定用户的主目录路径。#     -s, --shell SHELL                        指定用户的默认 Shell。#     -g, --gid GROUP                          将用户添加到指定的用户组。#     -G, --groups GROUP1[,GROUP2,…[,GROUPN]]] 将用户同时添加到多个用户组。#     -p, --password PASSWORD                  设置用户的密码 (加密)。#     -e, --expiredate EXPIRE_DATE             设置用户的过期日期。#     -r, --system                             创建一个系统用户 (不可登录)。if [[ -z "$USER_NAME" && -f "/usr/bin/adduser" ]]; then adduser apache --system --home /var/www; fi# ..........................................# 命令 useradd 一般是在 Linux 系统下创建用户所用到的 ELF 可执行程序命令。# 使用 useradd 时, 如果后面不添加任何参数选项, 创建出来的用户将是默认 "三无" 用户: 无 Home Directory, 无密码, 无系统 Shell。# useradd 选项释义:#     -M, --no-create-home                     不创建用户的主目录。#     -s, --shell SHELL                        指定用户的默认 Shell。if [[ -z "$USER_NAME" && -f "/usr/bin/useradd" ]]; then useradd apache -s /sbin/nologin -M; fi# ------------------------------------------cd $STORAGE/httpd-2.4.54 && ./configure --prefix=/opt/httpd-2.4.54 \--enable-so \--enable-ssl \--enable-cgi \--enable-rewrite \--with-zlib \--with-pcre \--with-apr=/opt/apr-1.7.0 \--with-apr-util=/opt/apr-util-1.6.1 \--with-ssl=/opt/openssl-1.1.1g \--enable-modules=most \--enable-mpms-shared=all \--with-mpm=prefork && \STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; then# Default None .so / .a / .la (Library) File.# ......................................ln -sf /opt/httpd-2.4.54/bin/* /usr/local/bin/# ......................................rsync -av /opt/httpd-2.4.54/include/ /usr/local/include/fi# ------------------------------------------# * Problem: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message#   - Solve: 1. 打开 Apache (httpd) 配置文件 httpd.conf。#            2. 寻找 ServerName 指令。如果该指令不存在, 需要在配置文件中添加。#            3. 设置一个合适的域名或 IP 地址作为 ServerName 的值。例如:#                    ServerName yourdomain.com#                或者使用本机的 IP 地址:#                    ServerName 192.168.1.1#            4. 如果你不确定服务器的域名或想要临时解决这个警告, 可以使用本机的 IP 地址:#                    ServerName 127.0.0.1 或者 ServerName localhost#            5. 保存 httpd.conf 文件并重新启动 Apache (httpd)。# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/httpd-2.4.54 && return 0elseecho "[Caution] Path: ( /opt/httpd-2.4.54 ) Already Exists."# ------------------------------------------return 0fi
}function main() {# ----------------- Dependency -----------------Compile_Install_expat_2_5_0Compile_Install_apr_1_7_0Compile_Install_apr_util_1_6_1Compile_Install_openssl_1_1_1gCompile_Install_pcre_8_37# --------------- httpd - 2.4.54 ---------------Compile_Install_httpd_2_4_54
}main

总结

以上就是关于 Linux运维 Bash脚本 编译安装Apache(httpd-2.4.54) 的全部内容。

更多内容可以访问我的代码仓库:

https://gitee.com/goufeng928/public

https://github.com/goufeng928/public

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

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

相关文章

基于Java中的SSM框架实现在线通用旅游平台网站系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现在线通用旅游平台网站系统演示 摘要 近几年来,计算机网络的发展得到了飞速的提升,由此展开的一系列行业大洗牌也由此开始。早些年只是人们只是对于计算机和互联网有了些基础的认识,现在它正在悄悄的改变着我们生活的…

富格林:运用可信技巧揪出暗箱黑幕

富格林悉知,在伦敦金中,对于市场中的暗箱黑幕骗局投资者应该从容应对,利用可信技巧顺利盈利。在市场投资中,投资者需要不断的学习伦敦金基础知识,总结可信的做单方法,更要从以往案例分析受害原因正规预防。…

安装MySQL5.7.19 + 解决数据库乱码

文章目录 1.删除mysql服务 sc delete mysql2.解压到D:\mysql5.7下3.配置管理员环境变量4.D:\mysql5.7\mysql-5.7.19-winx64下创建my.ini1.创建文件2.文件内容 5.管理员打开cmd,切换到 D:\mysql5.7\mysql-5.7.19-winx64\bin6.输入 mysqld -install 安装mysql服务7.初…

网页无插件视频播放器,支持录像、截图、音视频播放,多路播放等,提供源码下载

前言 本播放器内部采用jessibuca插件接口,支持录像、截图、音视频播放等功能。播放器播放基于ws流,分屏操作支持1分屏、4分屏、6分屏、9分屏方式。 jessibuca工作原理是通过Emscripten将音视频解码库编译成Js(WebAssembly,简称was…

Java集合Collection之LinkedList

LinkeList LinkedList(双向链表)是一种常见的线性数据结构,但是并不会按线性的顺序存储数据。它由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的引用。相比于数组,链表具有动态大小、插入和删除效率高的…

css第一个元素first-child匹配失败原因

<div><p>1</p><h1>2</h1><span>3</span><span>4</span> </div> 1、p:first-child 匹配的是p元素&#xff0c;因为p元素是div的第一个子元素 2、h1:first-child 匹配不到任何元素&#xff0c;因为在这里h1是di…

【电气安全】ASCP电气防火限流式保护器/末端回路线路保护

为什么要使用电气防火限流式保护器&#xff1f; 应急管理部消防救援局统计&#xff0c;在造成电气火灾事故的原因中&#xff0c;最为主要的当为末端线路短路&#xff0c;在电气火灾事故中占比高达70%以上。如何效预防末端线路短路引发的电气火灾事故&#xff1f; 现阶段最为常…

T470 双电池机制

ThinkPad系列电脑牛黑科技双电池管理体系技术,你知道吗&#xff1f; - 北京正方康特联想电脑代理商 上文的地址 在放电情况下&#xff1a;优先让外置电池放电&#xff0c;当放到一定电量后开始让内置电池放电。 在充电情况下&#xff1a;优先给内置电池充电&#xff0c;当充…

Perl: Can‘t locate List/MoreUtils.pm in @INC

BUG: 运行perl 脚本时报错&#xff1a; Cant locate List/MoreUtils.pm in INC (INC contains: /opt/rh/devtoolset-7/root/usr/lib64/perl5/vendor_perl /opt/rh/devtoolset-7/root/usr/share/perl5/vendor_perl /public/home/bgi_wangbinhu/perl5/lib/perl5/5.16.3/x86_64-l…

航空实时监控

1、从Kafka中读取飞机数据&#xff0c;并进行清洗 此步骤在前面的“使用Spark清洗统计业务数据并保存到数据库中”任务阶段应该已经完成。如果没有完成&#xff0c;请参考源代码自行完成。核心类主要有三个&#xff1a;SparkStreamingApplication类、SparkUtil类和MapManager类…

目标检测——YOLOR算法解读

论文&#xff1a;YOLOR-You Only Learn One Representation: Unifified Network for Multiple Tasks 作者&#xff1a;Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/abs/2105.04206 代码&#xff1a;https://github.com/WongKinYiu/yolo…

CAPL如何实现TCP Packet的option字段

在TCP协议中,主机可以根据自身的需要决定TCP通信时是否携带option字段,来扩展TCP功能。option字段属于TCP首部的扩展部分,且是可选项,TCP根据首部中的offset字段值确定TCP报文是否携带option字段。 TCP首部固定的部分有20个字节,如果没有扩展部分(option字段),20个字节…

vue-生成二维码

安装 yarn add qrcodejs2 --save npm install qrcodejs2 --save 使用 <template><div><div id"qrcodeImg"></div><!-- 创建一个div&#xff0c;并设置id --></div> </template> <script> import QRCode from q…

设计模式之简单工厂模式详解

简单工厂模式 工厂模式&#xff1a;工厂方法模式&#xff1b; 低阶&#xff1a;简单工厂模式&#xff1b; 高阶&#xff1a;抽象工厂模式&#xff1b; 1&#xff09;概述 定义一个工厂类&#xff0c;根据参数的不同返回不同类的实例&#xff0c;被创建的实例通常都具有共同…

Linux快速入门,上手开发 01.学习路线

少时曾许凌云志&#xff0c;当取世间第一流 再见少年拉满弓&#xff0c;不惧岁月不飓风 —— 24.3.20 1.Linux的发展历史 2.VM虚拟机的Linux初体验 3.图形化页面设置系统——快速上手 4.命令行操作——向专业前进 5.核心操作命令——必知必会&#xff08;管理企业级权限/定位b…

打印租赁行业现状与未来发展趋势分析

办公设备租赁行业现状与未来发展趋势分析 1. 简介 办公设备租赁行业是近年来快速发展的行业之一&#xff0c;随着数字化办公的普及和企业成本控制的需求增加&#xff0c;办公设备租赁市场呈现出了蓬勃的发展态势。本报告将对办公设备租赁行业的现状、发展历程以及未来发展趋势…

如何从零开始拆解uni-app开发的vue项目(二)

昨天书写了一篇如何从零开始uni-app开发的vue项目,今天准备写一篇处理界面元素动态加载的案例: 背景:有不同类别的设备,每个设备有每日检查项目、每周检查项目、每年检查项目,需要维保人员,根据不同设备和检查类别对检查项目进行处理,提交数据。 首先看一下界面: &l…

C++学习之旅(二)运行四个小项目 (Ubuntu使用Vscode)

如果是c语言学的比较好的同学 可以直接跟着代码敲一遍&#xff0c;代码附有详细语法介绍&#xff0c;不可错过 一&#xff0c;猜数字游戏 #include <iostream> #include <cstdlib> #include <ctime>int main() {srand(static_cast<unsigned int>(tim…

(一)基于IDEA的JAVA基础3

通过之前的内容&#xff0c;我们在建好的文件夹下建一个java文件&#xff0c;我们来在IDEA中写一下之前用记事本写的helloworld&#xff0c;我们先看一下java代码的规范: 1.java程序文件名一定要有意义&#xff0c;首字母一定要大写。 2.class后面的名字:由大小写字母&#x…

蓝队面试场景题,面试经验小记

答案不一定稳对&#xff0c;自己和别人讨论加查资料的。说话语速慢点&#xff0c;遇见不知道的就说没遇见过这种情况&#xff0c;但是遇见过类似情况举例子上报给高级人员&#xff08;有思路说思路&#xff09;。不知道的话统一说先隔离开&#xff0c;上杀毒软件&#xff0c;然…