中间件
  • 详解Linux 中 Git 工具的使用与相关知识点

    1. Git 的基本概念 版本控制:Git 记录每次代码变化的历史,用户可以随时查看和恢复到之前的版本。 分布式:每个用户都有完整的代码库和版本历史,可以在本地进行开发,直到准备好将修改推送到远程仓库。 快照:Git 将每一个文件的状态视为一个快照,而不是对比前后状态。 2. Git 的安装 在 Linux 系统中,可以通过包管理器安装 Git。例如,在 Ubuntu 中,可以使用以下命令: sudo apt update sudo apt install git 查看是否安装成功: git --version 出现上面这种版本号就代表已经安装成功了 3. 创建与配置 Git 仓库 3.1 创建新的 Git 仓库 在项目目录下初始化 Git 仓库: git init 这一步就直接在你的Linux系统的路径下输入该指令即可,比如我此时的项目目录为: 输入该指令创建新的Git仓库 3.2 克隆现有的 Git 仓库 如果想要从远程仓库克隆项目,可以使用: git clone <repository-url>(仓库链接) 这一步是比较重要的一步,我们需要先将仓库的链接复制下来,就拿gitee来举例,gitee的仓库链接位置在: 复制下来仓库的位置,将我们的项目传到远程仓库的例子如下: 我们可以看到执行语句如上,然后我们查看一下我们当前目录下的文件: 会发现有一个蓝色的文件名,这个文件名正是我所创建的仓库名,有这个就代表我们仓库已经克隆成功了 3.3 配置用户信息 设置 Git 用户名和电子邮件,这些信息会被记录到每次提交中: git config --global user.name "Your Name" git config --global user.email "your.email@example.com" 这里的用户名和电子邮件一定要设置成与你远程仓库中一样的 4. Git 的基本操作 4.1 查看状态 查看当前工作区和暂存区的状态: git status 4.2 添加文件到暂存区 在进行提交之前,需要将文件添加到暂存区: git add <file-name> # 添加单个文件 git add . # 添加当前目录下所有变……

    SE_Wang 2024-11-20
    11 0 0
  • 【Linux】进程优先级&&进程切换

    进程优先级 进程优先级是操作系统中用于决定进程调度顺序的重要属性。它表示一个进程在系统资源分配和 CPU 调度中的相对重要性。优先级越高的进程通常会获得更多的 CPU 时间和资源,从而更快地完成其任务。 查看进程优先级 ps -l 通常ps -l查询不到我们启动的进程的信息,所以我们一般都是用ps -al查询进程信息。 可以看到我们启动的myprocess。 这里有两个信息来觉得我们的优先级。 一个是PRI,一个事NI值,这两个决定了进程的优先级。 最终优先级的计算公式:P R I (最终) = P R I (默认) + N I PRI(最终)=PRI(默认)+NIPRI(最终)=PRI(默认)+NI NI值也称为nice值,是优先级的修正数据。 这里还有一个比较重要的信息:UID UID是操作系统中用于唯一标识用户的数字。在Linux中,每个用户都有一个唯一的 UID,用于控制访问权限和资源管理。 这里可以看到myprocess这个进程是由UID是1000的用户启动的。 UID的作用:我们知道Linux中有权限的概念,那么权限是如何实现的呢?其实每个文件也是有UID的。 当我们用某个指令的时候,比如说touch,mkdir等等指令,操作系统是如何判断是否有权限的呢,因为使用指令实际本质上也是启动一个进程,这个进程势必也是有UID的,所以操作系统可以对比这个文件的UID和这个操作的UID,看这个操作的UID对应的文件是否有这个权限,最后决定是否能进行这个操作。 进程优先级的修改 进程优先级的修改本质上是修改nice值,修改的是优先级修正数据,进而最终影响我们的最终优先级 进程优先级的修改主要有两种: 指令 代码 指令修改: 利用top指令修改进程优先级: 打开top,输入r进入到优先级修改的模式,通过PID来对优先级进行修改,输入我们对应的PID,然后对进程的nice值进行修改。 可以看见我们的NI值由默认的0修改为了1,最终优先级也是由默认的80,变为了81,这里我们可以……

    SE_Wang 2024-11-19
    15 0 0
  • 【Linux】进程信号全攻略

    一:🔥 再谈信号的捕捉 关于信号捕捉有三种方式: signal(2, handler); // 自定义捕捉 signal(2, SIG_IGN); // 忽略一个信号 signal(2, SIG_DFL); // 信号的默认处理动作 SIG_IGN 是一个特殊的宏,用于指示系统忽略该信号。 信号可能不会被立即处理,而是在合适的时候处理,那么合适的时候是什么时候呢? 先给结论:从进程的内核态返回到用户态的时候,进行处理。 💦 简单来说,执行自己的代码,访问自己的数据,这就叫做用户态。 💦 当我们进入系统调用时,我们以操作系统的身份来执行时,此时就进入了内核态,操作系统把我们的底层工作做完,做完这些工作后返回到我们的调用处,继续执行下面的代码,但是操作系统,由内核态返回到用户态时,在返回的这个时候信号的检测和处理 这是因为管理信号的数据结构(也就是我们的三张表)都位于进程的控制块(PCB)内,而PCB属于内核数据。因此,信号的检测和处理必须在内核态下进行。 当进程从内核态返回用户态时,内核会检查是否有待处理的信号,并根据信号的处理方式(默认处理、忽略或自定义处理)进行相应的操作。但操作系统不能直接转过去执行用户提供的handler方法,这是出于对安全性的考虑。 如果信号的处理动作是⽤⼾⾃定义函数,在信号递达时就调⽤这个函数,这称为捕捉信号。 由于信号处理函数的代码是在⽤⼾空间的,处理过程⽐较复杂,举例如下: ⽤⼾程序注册了 SIGQUIT 信号的处理函数 sighandler 。 当前正在执⾏ main 函数, 这时发⽣中断或异常切换到内核态。 在中断处理完毕后要返回⽤⼾态的 main 函数之前检查到有信号 SIGQUIT 递达。 内核决定返回⽤⼾态后不是恢复 main 函数的上下⽂继续执⾏,⽽是执⾏ sighandler 函数, sighandler 和 main 函数使⽤不同的堆栈空间,它们之间不存在调⽤和被调⽤的关系,是两个独⽴的控制流程。 sighandler 函数返回后⾃动执⾏……

    SE_Wang 2024-11-18
    18 0 0
  • Nginx代理到https地址忽略证书验证配置

    Nginx代理到https地址忽略证书验证配置,不推荐在生产环境中使用 在配置中增加: proxy_ssl_server_name on; proxy_ssl_session_reuse ; Nginx在与后端服务器建立SSL/TLS连接时,将使用请求头中的Host字段值作为SNI的一部分,并且不会重用SSL/TLS会话。这种配置可能在特定场景下是有用的,但通常建议保持proxy_ssl_session_reuse为on以提高性能。 location /test/ { proxy_pass https://www.baidu.com/; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_ssl_server_name on;         proxy_ssl_session_reuse off; } proxy_ssl_server_name 当proxy_ssl_server_name设置为on时,Nginx会在与后端服务器建立SSL/TLS连接时,使用请求头中的Host字段值作为SNI(Server Name Indication)的一部分。SNI是SSL/TLS扩展,它允许客户端在握手过程中指示它想要连接的服务器的主机名。这对于那些托管在单个IP地址上的多个SSL/TLS证书的后端服务器来说非常重要,因为SNI允许服务器根据请求的主机名选择正确的证书。 如果proxy_ssl_server_name未设置或设置为off,Nginx将不会使用Host头部值作为SNI的一部分,这可能会导致SSL/TLS握手失败,特别是当后端服务器期望SNI时。 proxy_ssl_session_reuse proxy_ssl_session_reuse指令控制Nginx是否重用与后端服务器之间的SSL/TLS会话。当设置为off时,Nginx不会在多个请求之间重用SSL/TLS会话。这意味着每次Nginx与后端服务器建立连接时,都会进行完整的SSL/TLS握手过程,这可能会增加延迟和服务器负载。 相反,当proxy_ssl_session_reuse设置为on(这是默认值……

    SE_Yang 2024-11-18
    18 0 0
  • 【Linux】常用命令

    Linux常用命令汇总 1. 基础知识 1.1. Linux系统命令行的含义 示例:root@app00:~# root //用户名,root为超级用户 @ //分隔符 app00 //主机名称 ~ //当前所在目录,默认用户目录为~,会随着目录切换而变化,例如:(root@app00:/bin# ,当前位置在bin目录下) # //表示当前用户是超级用户,普通用户为$,例如:("yao@app00:/root$" ,表示使用用户"yao"访问/root文件夹) 1.2. 命令的组成 命令 参数名 参数值 2. 基础知识 2.1. 关闭系统 立刻关机 shutdown -h now 或者 poweroff 两分钟后关机 shutdown -h 2 2.2. 关闭重启 立刻重启 shutdown -r now 或者 reboot 两分钟后重启 shutdown -r 2 2.3. 帮助命令(help) ifconfig --help //查看 ifconfig 命令的用法 2.4. 命令说明书(man) man shutdown //打开命令说明后,可按"q"键退出 2.5. 切换用户(su) su yao //切换为用户"yao",输入后回车需要输入该用户的密码 exit //退出当前用户 2.6.历史指令 history 执行编号为5的历史指令 !5 3.目录操作 3.1. 切换目录(cd) cd / //切换到根目录 cd /bin //切换到根目录下的bin目录 cd ../ //切换到上一级目录 或者使用命令:cd .. cd ~ //切换到home目录 cd - //切换到上次访问的目录 cd xx(文件夹名) //切换到本目录下的名为xx的文件目录,如果目录不存在报错 cd /xxx/xx/x //可以输入完整的路径,直接切换到目标目录,输入过程中可以使用tab键快速补全 3.2. 查看目录(ls) ls //查看当前目录下的所有目录和文件 ls -a //查看当前目录下的所有目录和文件(包括隐藏的文件) ls -l //列表查看当前目录下的所有目录和文件(列表查看,显示更多信息),与命令"ll"效果一样 ls /bin //查看指定目录下的所有目录和文件 3.3. 创建目录(mkdir) mkdir tools //在当前目录下创建一个名为tools的目录 mkdir /bin/tools……

    SE_Wang 2024-11-15
    12 0 0
  • zabbix还能和eNSP这么玩?这个联动实验简直不要太6

    01 下载Zabbix 下载链接: https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu24.04_all.deb 下载完成后查看下载文件 02 安装Zabbix dpkg -i zabbix-release_7.0-1+ubuntu24.04_all.deb 03 安装mysql php等 apt update apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent mysql-server 中途会有确认安装选择y即可,等待最后安装完成。 04 开启mysql并创建Zabbix数据库 systemctl enable mysql systemctl restart mysql mysql -uroot -p 输入mysql root密码(默认为空)可以通过下面SQL语句设置(密码为spoto) USE mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'spoto'; FLUSH PRIVILEGES; EXIT; 修改密码后重新登录mysql创建Zabbix数据库(用户名zabbix 密码password) mysql -uroot -p mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> set global log_bin_trust_function_creators = 1; mysql> quit; 05 导入数据库 zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix 输入zabbix密码password 这里导入得速度比较慢需要耐心等待 导入完成 06 导入数据库架构后禁用log-bin-trust-function-creators选项。 # mysql -uroot -p 输入mysql root密码 mysql> set global log_bin_trust_function_creators = 0; mysql> quit; 07 编辑zabbix……

    SE_YJ 2024-11-15
    9 0 0
  • linux shell 脚本语言教程

    Shell 编程详细指南 什么是 Shell? Shell 是用户与操作系统内核之间的接口,允许用户通过命令行输入来控制操作系统。它充当命令解释器,读取用户输入的命令并执行相应的操作。Shell 提供了强大的脚本编程能力,可以自动化许多任务。常见的 Shell 有 Bash(Bourne Again Shell)、Zsh(Z Shell)、Ksh(Korn Shell)等。 什么是 Shell 脚本? Shell 脚本是一种编程语言脚本,用于在 Unix/Linux 操作系统上执行命令。它是一系列命令的集合,通常保存在一个文件中,可以通过运行脚本文件来执行这些命令。 1. 注释 单行注释 在 Shell 脚本中,注释是通过 # 字符来实现的。任何在 # 后面的内容都会被忽略,不会被执行。 # 这是一个单行注释 # echo "Hello, World!" 文章下面讲的是shell是Bash的语法, 所有语法可以直接在终端使用, 也可以写在一个 .bash 或 .sh 的文件中, 然后通过 ./filename 来执行。(要想执行, 需要给文件可执行的权限, 下面会讲到) 文件开头先写上下面内容, #!/bin/bash #!/bin/bash 是一种称为 “shebang” 或 “hashbang” 的特殊注释,用于指定脚本的解释器。 作用 指定解释器:#!/bin/bash 告诉操作系统这个脚本应该由 /bin/bash 程序来解释执行。/bin/bash 是 Bash(Bourne Again Shell)的路径。 执行权限:当你在 Unix/Linux 系统中运行一个脚本时,操作系统会根据这个 shebang 行来决定用哪个解释器来执行脚本内容。#!/bin/bash 使得脚本能够以 Bash 语言执行,即使脚本的扩展名不是 .sh。 2. 变量 变量定义与使用 在 Shell 中,变量的定义不需要使用数据类型。可以直接用 = 号赋值,不要在 = 号两边加空格。变量的值可以通过 $ 符号来引用。 my_var="Hello, World!" echo $my_var 变量命名规则 变量名只能包含字母、数字和下划线。 变量名不能以数字开头。 变量名通常使用大写字母以提高可……

    SE_Wang 2024-11-14
    12 0 0
  • Linux:认识文件系统

    一、认识硬件——磁盘 1.1 物理构成 磁盘是唯一的一个机械设备,也是一个外设! 以前的老式电脑上装的就是机械磁盘,现在由于用户对使用计算机的速度要求越来越高,现在我们普通人使用的电脑基本上都是用的SSD固态硬盘,SSD固态硬盘并没有像机械磁盘那样的机械运动,读写速度更快,且具有体积小、低功耗、耐用性好、无噪音等特点!且未来还有很大的研究空间!所以在桌面领域几乎取代了机械磁盘! 但是企业级存储更倾向于使用机械硬盘,由于其成本低、容量大的特点更有利于进行大规模的数据存储,所以他其实很难被淘汰! 1、写入磁盘工作原理:二进制序列会通过磁头的充放电(任何硬件都只认识二进制序列,因为本质上是用线连接的),将数据写到盘片上。 2、 一些特点: (1)我们的计算机内部的信息流动是以电子或者光电信号的形式传递(非常快),而磁盘是机械运动相比之下速度很慢!! (2)盘片高速旋转,磁头左右转动,磁头是一面一个且和盘面不接触! (3)磁盘在设计的时候必须保证无尘环境且密封完好,因为有灰尘的话可能会导致盘面刮花造成数据丢失。 (4)内存是掉电易失存储介质,盘片是永久性存储介质。 3、注:磁盘是有寿命的,大公司磁盘快报废的时候并不敢直接把磁盘给丢掉,因为里面存储了大量的用户数据(磁盘密封性好且不易被销毁),所以相关的安全部门对大公司的磁盘销毁工作时有严格的要求的! 1.2 存储构成 磁头的左右摆动——>定位磁道(柱面) 磁头不动的时候,盘片的旋转——>定位扇区 所以磁盘被访问的最基本单位是扇区 ——> 512字节/4KB ——>因此我们可以把磁盘看做由无数个扇区构成的存储介质 ! ——>所以我们要把数据存到磁盘,首先就是定位一个扇区:(1)先找到哪一面(定位磁头)(2)哪一个磁道(3)哪一个扇区 1.3 逻辑抽象 我们把假设把磁带摊开,从逻辑上我们就可以把……

    SE_Wang 2024-11-13
    27 0 0
  • Oracle MAA 说明

    基于Oracle数据库MAA架构, 可扩展性和强健性都很牛, 对DBA的把控能力要求也比较高. 如图: 一. 对于主机或数据库发生故障举例 0. 正常情况下, 由A,B负载均衡方式对外提供数据库服务, C为独立存储; D和E实时同步数据. 1. A故障, B单独服务, 业务零中断, 系统可能会变慢一些 2. B故障, A单独服务, 同上 3. C故障, D成为主库并提供服务(这个过程由观察器O来实现), 期间业务中断1分钟左右, 此时异地备库E转向从新主库D同步数据 4. A,B同时故障, 同上 5. D故障, 观察器会观测到, 对数据库系统无影响 6. E故障, 同上 7. O故障, 同上 9. O和D同时故障, 还是由A,B负载均衡方式对外提供数据库服务, 但只支持查询业务, 不支持事务了. 10. 北京机房全部沦陷(意外断电,自然灾害,恐怖袭击...), E还保留完整数据, 留的青山在, 不怕没柴烧! 二. Oracle MAA结构下应用程序客户端TNS配置举例 DB_ESUITE= (DESCRIPTION= (ADDRESS_LIST= (LOAD_BALANCE = yes) (ADDRESS= (PROTOCOL=TCP) (HOST=A) (PORT=1521) ) (ADDRESS= (PROTOCOL=TCP) (HOST=B) (PORT=1521) ) (ADDRESS= (PROTOCOL=TCP) (HOST=D) (PORT=1521) ) ) (CONNECT_DATA= (SERVER=dedicated) (SERVICE_NAME=ESUITE_TAF.LK) ) ) 三. Oracle MAA结构下常见连接说明 1) OCI/OCCI连接: $ sqlplus system/manager@db_esuite SQL> SELECT instance_name, host_name FROM v$instance; INSTANCE_NAME HOST_NAME ------------- --------------- ESUITE dbserver3 2) JDBC连接: 由 "jdbc:oracle: thin:@172.16.1.111:1521:ESUITE"(瘦客户端模式) 改为 "jdbc:oracle: oci:@db_esuite"(胖客户端模式), 同时要求也安装Oracle客户端或Instant客户端.

    SE_Meng 2024-11-13
    16 0 0
  • 【Windows Server】域用户安全策略

    域服务器窗口下,导航栏点击工具,选择组策略管理器。 1 修改密码策略 和 账户锁定策略 修改为:不要求强密码,密码可以为空,且用户可以立即修改密码 在组策略管理器窗口下,右键 Default Domain Policy,选择编辑,进入组策略管理编辑器。 在组策略管理编辑器窗口下,按下面路径选择: 计算机配置 > 策略 > Windows 设置 > 安全设置 > 账户策略 > 密码策略 修改配置: 禁用密码复杂性要求 密码长度最小值修改为 0 个字符 密码最短使用期限修改为 0 天 其余保持默认即可。 注意:域策略修改完以后,并不会立即更新。Server 服务器默认每 5 分钟更新一次策略,而客户端默认 90 分钟更新一次策略。在企业正常使用中,无需手动刷新,或者修改组策略的刷新时间间隔。 这里分享一个手动刷新策略的方法,无论是 Server 服务器,还是客户端。 在 CMD 命令行提示符窗口中,输入命令: gpupdate /force 修改账户锁定策略 在组策略管理编辑器窗口下,按下面路径选择: 计算机配置 > 策略 > Windows 设置 > 安全设置 > 账户策略 > 账户锁定策略 2 用户登录解封 服务器管理器窗口,在导航栏单击工具,选择 Active Directory 用户和计算机。 选择所属组织的账户: 属性窗口中,勾选解锁账户,即可解封账户。 在登录到中,还能设置指定登录的计算机。 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/m0_57945360/article/details/139626123

    SE_Wang 2024-11-12
    6 0 0