当前位置: 首页 > news >正文

Linux系统安全及应用

目录

一.账号安全措施

1.1系统账号清理

1.1.1将非登录用户的shell设为无法登录

1.1.2删除无用用户 userdel

1.1.3锁定账号文件

1.1.4锁定长期不使用的账号

1.2密码安全控制 

1.2.1 对新建用户

1.2.2对已有用户 

1.3命令历史限制

1.3.1临时清除历史命令

 1.3.2限制命令历史记录的次数

1.3.3用户注销时清空命令历史

 1.3.4用户启动时清空命令历史

1.3.5设置 Shell 会话的超时自动注销 

二.用户切换

2.1用户切换 su命令

2.2限制使用su命令的用户

 2.3使用sudo机制提升权限

2.3.1定义

2.3.2命令格式

2.3.3配置sudo授权

2.3.4配置sudo授权的语法格式 

1.授权规则(必须的 ):

 2.别名定义(不是必须的 ):

2.4:su和sudo对比

三.PAM认证

3.1定义 

3.2产生背景

3.3PAM 认证类型

3.4PAM认证原理

3.5PAM配置文件

3.6PAM安全认证流程

 3.7limit模块

 四.端口扫描工具nmap

4.1定义

4.2nmap命令常用的选项和描类型 

补充:常见服务的端口号


 

一.账号安全措施

1.1系统账号清理

 系统账号清理是指对计算机系统或网络中的用户账户进行定期审查和维护的过程,目的是删除不再需要的账户,提高系统安全性和管理效率。

1.1.1将非登录用户的shell设为无法登录

其实就是将非登录用户的shell设为/sbin/nologin

usermod -s /sbin/nologin 用户名

 

1.1.2删除无用用户 userdel

userdel [选项] 用户名  //删除用户userdel -r 用户名    //删除用户和此用户的家目录

1.1.3锁定账号文件

chattr命令用于修改文件或目录的属性,设置文件的特殊属性,使其具有更高级的保护或控制

chattr +i /etc/passwd /etc/shadow #锁定账号文件

 

1.1.4锁定长期不使用的账号

方式一
usermod -L 用户名   锁定用户
usermod -U 用户名   解锁用户方式二
passwd -l 用户名    锁定用户
passwd -u 用户名    解锁用户

 

1.2密码安全控制 

密码安全控制是指通过技术手段和管理策略,来确保系统用户的密码具备足够的强度、安全性和合规性。

1.2.1 对新建用户

可以修改 /etc/login.defs 文件里的内容来设置密码规则

vim /etc/login.defs              
.....
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
....
:wq    保存退出

 

参数说明
PASS_MAX_DAYS密码最大有效期(天)
PASS_MIN_DAYS密码修改最小间隔(天)
PASS_WARN_AGE密码过期前警告天数
PASS_MIN_LEN密码最小长度(部分系统需配合PAM)

1.2.2对已有用户 

对于已有用户可以使用chage命令

chage [选项] 用户名
-m:密码可更改的最小天数,m=0 代表任何时候都可以更改密码
-M:密码保持有效的最大天数-w:用户密码到期前,提前收到警告信息的天数
-E:帐号到期的日期。过了这天,此帐号将不可用
-d:上一次更改的日期
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。chage -d  0 用户名  //强制用户下一次登录要修改密码[root@localhost ~]# chage -d  0 zhangsan
#强制张三下一次登录一定修改密码(密码符合复杂性要求)

 

1.3命令历史限制

1.3.1临时清除历史命令

#可以使用以下命令临时清除历史命令
history -c 
clear

 

 1.3.2限制命令历史记录的次数

[root@localhost ~]#vim /etc/profile
.............................
export HISTSIZE=200[root@localhost ~]#source  /etc/profile//最多只记录 200 条历史命令。

实例: 

 

 export HISTSIZE加在文件最后一行插入即可

 

1.3.3用户注销时清空命令历史

[root@localhost ~]#vim .bash_logout  //用vim编辑.bash_logout文件echo " " >~/.bash_history//每次用户注销时,会把bash历史记录文件内容替换为单个空格

 1.3.4用户启动时清空命令历史


[root@localhost ~]#vim .bash_logout echo " " >~/.bash_history

补充:.bashrc:在 每次启动交互式 Bash Shell 时 自动加载 。

           .bash_logout在用户 注销 Bash Shell 时自动执行。

1.3.5设置 Shell 会话的超时自动注销 

防止管理员离开电脑时未注销导致的安全风险

[root@localhost ~]# vi /etc/profile   export  TMOUT=60[root@localhost ~]# source /etc/profile//如果终端 60秒内无任何操作,系统会自动注销当前会话

 

二.用户切换

2.1用户切换 su命令

用途:su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

命令格式
su [options...] [-] [user [args...]su [选项] 用户名      //不完全切换,上一个用户的部分设置会保留su -  用户名          //完全切换 ,相当于重新登录,注意:root su至其他用户无须密码;非root用户切换时需要密码su切换新用户后,使用exit退回至旧的用户身份,而不要再用su切换至旧用户,
否则会生成很多的bash子进程,环境可能会混乱。

补充:whoami 查看当前登录用户

2.2限制使用su命令的用户

在/etc/pam.d/su文件里设置禁止用户使用su命令

[root@localhost ~]# gpasswd -a lisi wheel
#将用户加入 wheel组 root[root@localhost ~]#vim /etc/pam.d/su
#编辑/etc/pam.d/su补充:/etc/pam.d/su 是Linux中控制su(切换用户)命令
的PAM(Pluggable Authentication Modules)认证配置文件。

进入编辑界面如下: 

 auth    sufficient   pam_ rootok.so

作用:

  • 检查当前用户 是否已经是 root

      • 如果当前用户是 root,则直接通过认证(sufficient),跳过后续所有检查

      • 如果当前用户不是 root,则继续执行下一行检查。

auth   required   pam_ wheel.so use_ uid

作用

  • 检查尝试使用 su 的用户 是否属于 wheel 组

    • 如果是 wheel 组成员,允许继续认证(需输入目标用户密码)。

    • 如果不是 wheel 组成员,直接拒绝(即使知道密码也会失败)。

效果:启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令

 2.3使用sudo机制提升权限

2.3.1定义

sudo(Super User DO)是 Linux 系统中用于 以其他用户身份(默认 root)执行命令 的核心工具,相比直接使用 su 更安全且可审计

2.3.2命令格式

sudo [选项] 命令

2.3.3配置sudo授权

visudo 或者    vi /etc/sudoers

注意:

            etc/sudoers:此文件的默认权限是440,保存退出是必须执行“wq!”命令来强制操作

2.3.4配置sudo授权的语法格式 

配置文件规则有两类: 

1.授权规则(必须的 ):

<用户/用户组> <主机名>=([运行身份用户]:[运行身份用户组]) [可执行的命令列表] [选项]

部分说明
用户/用户组授权给谁(用户用 username,用户组用 %groupname)。
主机名在哪些主机上生效(通常用 ALL 表示所有主机)。
运行身份用户/用户组允许以哪个用户或用户组的身份运行命令(括号内,可选,默认为 root)。
可执行的命令列表允许执行的命令(需写绝对路径,可用 ALL 表示所有命令)。
选项附加限制条件(如 NOPASSWDSETENV 等,可选)。

实例:

%developers ALL=(root) NOPASSWD: /usr/bin/apt, /usr/bin/git//用户组developers可以以root身份无需密码运行apt和git命令。
 2.别名定义(不是必须的 ):

使用User_Alias(用户别名)、Host_Alias(主机别名)、Cmnd_Alias(命令别名) 来进行设置别名(别名必须为大写),可以实现批量设置

# 定义别名
User_Alias DEVOPS = alice, bob
Host_Alias PROD = 192.168.1.100, server-prod
Runas_Alias OPS = root, %admin
Cmnd_Alias RESTART_SERVICES = /usr/bin/systemctl restart *# 组合规则
DEVOPS PROD=(OPS) NOPASSWD: RESTART_SERVICES

2.4:su和sudo对比

特性sudosu
密码要求输入当前用户的密码输入目标用户的密码
功能其他用户身份执行单条命令切换用户身份(默认切换到 root)
权限粒度精细控制(可限制具体命令)粗放(切换后获得完整权限)

三.PAM认证

3.1定义 

PAM(Pluggable Authentication Modules,可插拔认证模块) 是 Linux/Unix 系统中用于集中化管理身份认证的框架。它允许系统管理员灵活配置应用程序的认证方式,而无需修改程序代码。

3.2产生背景

su命令的安全隐患

默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险;为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。

3.3PAM 认证类型

  1. 认证管理(authentication management):接受用户名和密码,进而对该用户的密码进行认证;

  2. 帐户管理(account management):检查帐户是否被允许登录系统,帐号是否已经过 期,帐号的登录是否有时间段的限制等;

  3. 密码管理(password management):主要是用来修改用户的密码;

  4. 会话管理(session management):主要是提供对会话的管理和记账。 控制类型也可以称做 Control Flags,用于 PAM 验证类型的返回结果。

3.4PAM认证原理

 

PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证

简而言之:PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so

3.5PAM配置文件

/usr/lib64/security/和/etc/pam.d/这两个目录是 Linux 系统中 PAM(Pluggable Authentication Modules,可插拔认证模块) 的核心组成部分,分别负责 模块实现 和 认证规则配置

简而言之:/usr/lib64/security/:PAM 的“工具库”,存放功能实现模块。/etc/pam.d/:PAM 的“说明书”,定义各服务如何调用模块。

/etc/pam.d 是 Linux 系统中 PAM 的 认证规则配置

type    control     module-path      arguments//专用配置文件/etc/pam.d/ 格式type:指模块类型,即功能
control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现
module-path: 用来指明本模块对应的程序文件的路径名
Arguments: 用来传递给该模块的参数

 实例:以 /etc/pam.d/login文件举例
            vim /etc/pam.d/login

第一列:模块类型(module-type)

  • Auth 账号的认证和授权 用户名

  • Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)

  • Password 用户修改密码时密码复杂度检查机制等功能

  • Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等

第二列:Control:( 控制位)

  • required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件

  • requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件

  • sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的

  • include: 表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项

  • optional 可选项

 第三列:PAM模块

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

3.6PAM安全认证流程

1、required验证失败时仍然继续,但返回Fail
2、requisite验证失败则立即结束整个验证过程,返回Fail
3、sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4、optional不用于验证,只显示信息(通常用于session类型

 3.7limit模块

在系统安全方面limit模块最重要 

功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间

ulimit [选项]       //命令格式ulimit -a 显示当前所有资源的限制ulimit -c 设置core文件的最大大小,单位为blocksulimit -n 设置可以打开的最大文件描述符数ulimit -u 设置用户可创建的最大进程数ulimit -m 设置单个进程的物理内存限制,单位为KBulimit -v 设置单个进程的虚拟内存限制,单位为KBulimit -s 设置单个栈的最大大小,单位为blocksulimit -f 设置单个文件的最大大小,单位为blocks

 四.端口扫描工具nmap

4.1定义

NMAP是一个强大的端口扫描类安全评测工具,支持ping扫描、多端口检测等多种技术

安装
rpm -qa|grep nmap  查看nmap
yum install -y nmap

4.2nmap命令常用的选项和描类型
 

nmap [选项] [扫描方式]nmap命令格式

补充:常见服务的端口号

服务端口号
HTTP80
HTTPS443
Telnet23
FTP21
SSH(安全登录)、SCP(文件传输)、端口重定向22
SMTP25
POP3110
WebLogic7001
TOMCAT8080
WIN2003远程登录3389
Oracle数据库1521
MS SQL* SEVER数据库sever1433
MySQL 数据库sever3306

 

相关文章:

Linux系统安全及应用

目录 一.账号安全措施 1.1系统账号清理 1.1.1将非登录用户的shell设为无法登录 1.1.2删除无用用户 userdel 1.1.3锁定账号文件 1.1.4锁定长期不使用的账号 1.2密码安全控制 1.2.1 对新建用户 1.2.2对已有用户 1.3命令历史限制 1.3.1临时清除历史命令 1.3.2限制命令…...

JAVA反序列化深入学习(十三):Spring2

让我们回到Spring Spring2 在 Spring1 的触发链上有所变换&#xff1a; 替换了 spring-beans 的 ObjectFactoryDelegatingInvocationHandler使用了 spring-aop 的 JdkDynamicAopProxy &#xff0c;并完成了后续触发 TemplatesImpl 的流程 简而言之&#xff0c;换了一个chain&am…...

迭代器运算详解(四十二)

1. 迭代器的随机访问运算 对于 vector 和 string 这样的容器&#xff0c;它们的迭代器支持以下随机访问运算符&#xff1a; 运算符说明iter n返回一个新的迭代器&#xff0c;该迭代器比原来的迭代器 iter 向前移动了 n 个位置&#xff08;即指向后面的第 n 个元素&#xff0…...

Linux中Squid服务常用操作

在 Linux 中 Squid 服务常用操作介绍 1. Squid 基础操作 启动 Squid # 前台启动&#xff08;调试用&#xff09; squid -N -d 1# 后台启动&#xff08;-s 表示将日志输出到 syslog&#xff09; squid -s停止 Squid # 安全停止&#xff08;需配置 pid_file&#xff09; squid…...

Linux操作系统--进程的概念

目录 1.了解进程前的前景知识 冯诺依曼体系结构 操作系统(OS) 2.进程 2.1进程的概念 2.2描述进程-PCB 2.2.1task_struct 2.3查看进程 2.4通过系统调用获取进程的标识符 2.5认识fork()--创建进程 该专栏会持续更新 更新时间一周一更。下周更新内容进程状态 1.了解进程前…...

C++假期练习

思维导图 牛客练习...

HTML零基础入门笔记:狂神版

前言 本笔记是学习狂神的java教程&#xff0c;建议配合视频&#xff0c;学习体验更佳。 【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 第1-2章&#xff1a;Java零基础入门笔记&#xff1a;(1-2)入门&#xff08;简介、基础知识&#xff09;-CSDN博客 第3章&…...

算法竞赛备赛——【图论】链式前向星

图论 图的存储方式&#xff1a; 通用的三种&#xff1a;邻接矩阵、邻接表、边集数组 有向图&#xff1a;十字链表 无向图&#xff1a;多重邻接表 刷题常用&#xff1a;邻接矩阵、链式前向星&#xff08;邻接表变形&#xff09; 链式前向星 算法题常用: 邻接矩阵、二维vector模…...

JAVA_类和对象

目录 1.面向对象的初步认知 1.1.什么是面向对象 1.2.面向对象与面向过程 2.类的定义和使用 2.1.简单认识类 2.2类的定义格式 2.3.练习 学生类 动物类&#xff08;可爱猫猫&#x1f431;&#xff09; 3.类的实例化 3.1.什么是实例化 3.2.类和对象的说明 4.this引用…...

高频面试题(含笔试高频算法整理)基本总结回顾65

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…...

数据库系统-数据库控制

并发控制 事务的ACID特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务包含的所有操作要么全部成功&#xff08;commit提交&#xff09;&#xff0c;要么全部失败&#xff08;rollback回滚&#xff09;一致性&#xff08;Consistency&#xff09;&a…...

Python Cookbook-5.3 根据对象的属性将对象列表排序

任务 需要根据各个对象的某个属性来完成对整个对象列表的排序。 解决方案 DSU方法仍然一如既往地有效: def sort_by_attr(sed,attr):intermed [ (getattr(x,attr),i,x) for i,x in enumerate(seg)]intermed.sort()return [ x[-1] for x in intermed def sort_by_attr_inpl…...

Java MCP SDK 开发笔记(一)

MCP 简介 AI 大模型诞生之初&#xff0c;其高度模拟人的对话之能力惊为天人。但我们肯定不希望止步于此—— 工具化就是我们希望 AI 能够完成的目标&#xff0c;由此可以从单纯的对话发展为代替繁复人力的“干活”。这条道路上毋庸置疑 AI 大模型任重道远。而 MCP(Model Contr…...

AF3 OpenFoldDataLoader类_prep_batch_properties_probs方法解读

AlphaFold3 data_modules 模块的 OpenFoldDataLoader 类的 _prep_batch_properties_probs 方法是为每个批次数据准备 recycling 维度 的概率分布。它将根据配置文件中的设定为每个批次数据生成 recycling 轮次的概率分布,并存储到 prop_probs_tensor 中,用于后续抽样选择特定…...

寻找字符串数组中的最长共同前缀字符串

问题描述&#xff1a;给定一个字符串数组 strs&#xff0c;编写一个函数来找到这些字符串的最长公共前缀字符串&#xff0c;如果没有则返回空字符串"" 算法思路 横向扫描法&#xff1a; 从数组的第一个字符串开始&#xff0c;逐个和后面的字符串比较&#xff0c;逐…...

leetcode_数组 56. 合并区间

56. 合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&#xff1a;int…...

Jenkins学习(B站教程)

文章目录 1.持续集成CI2.持续交付CD3.持续部署4.持续集成的操作流程5.jenkins简介6.后续安装部署&#xff0c;见视频 bilibili视频 Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具&#xff0c;起源于Hudson&#xff08;Hudson是商用的&#xff09;&#xff0c;主要用…...

学习笔记—C++—类和对象(一)

目录 类和对象 类的定义 类定义格式 访问限定符 类域 实例化 实例化概念 对象的大小 this指针 C和C语言实现Stack对比 类和对象 类的定义 类定义格式 ● class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后…...

PyTorch 深度学习 || 6. Transformer | Ch6.3 Transformer 简单案例

1. 简单案例 这个代码是一个简单的 Transformer 模型的实现,这个例子展示了一个基本的序列到序列(seq2seq)任务,比如将一个数字序列转换为另一个数字序列。可以用于学习和理解 Transformer 的基本结构和工作原理。 import torch import torch.nn as nn import math# 位置…...

体育风暴篮球足球体育球员综合资讯网站模板

源码名称&#xff1a;篮球足球体育球员综合资讯网站模板 开发环境&#xff1a;帝国cms7.5 空间支持&#xff1a;phpmysql 带软件采集&#xff0c;可以挂着自动采集发布&#xff0c;无需人工操作&#xff01; 演示地址&#xff1a;https://www.52muban.com/shop/184016.html …...

Visual Studio Code SSH 连接超时对策( keep SSH alive)

文章目录 问题解决方法一&#xff1a;配置服务端关于ClientAliveInterval和ClientAliveCountMax1、打开终端&#xff0c;打开SSH配置文件&#xff1a;输入以下命令&#xff1a;2、打开配置文件后&#xff0c;添加以下内容&#xff1a;3、添加后&#xff0c;Esc按 <Enter>…...

Docker容器中的ubuntu apt update报错 解决办法

问题现象 # apt update Get:1 http://archive.ubuntu.com/ubuntu noble InRelease [256 kB] Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB] Err:2 http://security.ubuntu.com/ubuntu noble-security InRelease At least one invalid signa…...

CV - 目标检测

物体检测 目标检测和图片分类的区别&#xff1a; 图像分类&#xff08;Image Classification&#xff09; 目的&#xff1a;图像分类的目的是识别出图像中主要物体的类别。它试图回答“图像是什么&#xff1f;”的问题。 输出&#xff1a;通常输出是一个标签或一组概率值&am…...

linux提权 corn 提权

corn提权 corn的基本使用方法 corn的作用就是可以定时的完成一下任务&#xff08;如备份一下log 或者清除一下日志文件 这些就是运维人员用的&#xff09; 先找一下定时任务的工作表 cat /bin/corntab 这个是普通用户 我们直接看都看不了 说明什么说明这个 是root高权限执…...

1Panel安装失败 国内docker安装失败

本文仅针对学习交流&#xff0c;只为了帮助计算机相关专业大学生个人技能实操而记录 非学习目的严禁学习&#xff01;&#xff01;&#xff01;否则后果自负 1、离线安装1Panel&#xff08;不需要手动安装docker&#xff0c;离线安装包里包括了docker&#xff09; 离线包下载地…...

Excel + VBA 实现“准实时“数据的方法

Excel 本身是静态数据处理工具,但结合 VBA(Visual Basic for Applications) 可以实现 准实时数据更新,不过严格意义上的 实时数据(如毫秒级刷新)仍然受限。以下是详细分析: 1. Excel + VBA 实现“准实时”数据的方法 (1) 定时刷新(Timer 或 Application.OnTime) Appl…...

请问你怎么看待测试,指导哪些测试的类型,有用过哪些测试方法?

作为深耕测试领域多年的博主,我始终认为测试是软件质量的守护者,更是推动研发流程优化的催化剂。以下从测试认知、分类体系到实战方法论,结合具体案例为你系统拆解: 一、测试的本质认知 测试≠找 Bug,而是通过系统性验证回答三个核心问题: 软件是否符合用户需求?系统在…...

详解 Redis repl_backlog_buffer(如何判断增量同步)

一、repl_backlog_buffer 复制积压缓冲区&#xff08;Replication Backlog Buffer&#xff09; 是一个环形内存区域&#xff08;Ring Buffer&#xff09;&#xff0c;用于临时保存主节点最近写入的写命令&#xff0c;以支持从节点断线重连后的增量同步。 1.1 三个复制偏移量 …...

工业操作系统国产化替代的战略路径与挑战分析

一、政策背景与战略意义 工信部提出的 2027 年替换 80 万套工业操作系统计划&#xff0c;是中国制造业向智能化转型的核心举措。该政策旨在通过国产化替代&#xff0c;解决工业领域 “缺芯少魂” 的问题&#xff0c;构建自主可控的工业软件生态体系。当前&#xff0c;中国工业操…...

JMeter接口性能测试从入门到精通

前言&#xff1a; 本文主要介绍了如何利用jmter进行接口的性能测试 1.在测试计划中添加线程组 1.1.线程组界面中元素含义 如果点击循环次数为永远&#xff1a; 2.添加HTTP取样器 2.1.填写登录接口的各个参数 2.2.在线程组下面增加查看结果树 请求成功的情况&#xff1a; 请求…...

WinForm真入门(9)——RichTextBox控件详解

WinForm中RichTextBox控件详解&#xff1a;从基础到高级应用 上一文中笔者重点介绍了TextBox控件的详细用法&#xff0c;忘记的 请点击WinForm真入门(8)——TextBox控件详解&#xff0c;那么本文中的RichTextBox与TextBox有什么区别吗&#xff0c;光看名字的话&#xff0c;多了…...

Linux : 内核中的信号捕捉

目录 一 前言 二 信号捕捉的方法 1.sigaction()​编辑 2. sigaction() 使用 三 可重入函数 四 volatile 关键字 一 前言 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。在Linux: 进程信号初识-CSDN博客 这一篇中已经学习到了一种信号…...

Linux 字符串截取#与%

在Linux的Shell脚本中&#xff0c;#和%用于字符串截取&#xff0c;通过通配符模式匹配删除部分内容 批量修改文件名技巧&#xff1a;Linux下#、##、%、%%符号操作详解-CSDN博客 从左截取&#xff08;# 和 ##&#xff09; #&#xff1a;删除最短匹配左侧内容。 ##&#xff1a…...

Android学习总结之自定义View实战篇

场景一&#xff1a;自定义进度条 在很多应用中&#xff0c;我们会看到一些独特样式的进度条&#xff0c;接下来就实现一个简单的圆形进度条。 实现思路 继承 View 类。重写 onDraw 方法&#xff0c;在该方法里使用 Canvas 和 Paint 来绘制圆形进度条。提供更新进度的方法。 …...

C++ STL 详解 ——list 的深度解析与实践指南

在 C 的标准模板库&#xff08;STL&#xff09;中&#xff0c;list作为一种重要的序列式容器&#xff0c;以其独特的双向链表结构和丰富的操作功能&#xff0c;在许多编程场景下发挥着关键作用。深入理解list的特性与使用方法&#xff0c;能帮助开发者编写出更高效、灵活的代码…...

open函数的概念和使用案例

open 是 Linux/Unix 系统中用于打开或创建文件的系统调用&#xff0c;返回一个文件描述符&#xff08;File Descriptor&#xff09;&#xff0c;后续可通过该描述符进行文件读写等操作。以下是其核心概念和使用案例的详细说明&#xff1a; 1. 核心概念 作用&#xff1a;打开或…...

整理一些大模型部署相关的知识

不一定有什么用, 不经常用还会忘掉. 之前被人问到一次,脑子卡壳回答不出要点, 非常尴尬! 在此记录一下使用心得, 偶尔回来翻看! 一 并行方式 1.1 数据并行 (Data Parallelism) 主要用于模型训练阶段, 即将多个完整的模型副本分布到多个gpu上, 每个gpu运行一部分数据数据, 每个…...

算法刷题记录——LeetCode篇(2.10) [第191~200题](持续更新)

更新时间&#xff1a;2025-04-04 算法题解目录汇总&#xff1a;算法刷题记录——题解目录汇总技术博客总目录&#xff1a;计算机技术系列博客——目录页 优先整理热门100及面试150&#xff0c;不定期持续更新&#xff0c;欢迎关注&#xff01; 198. 打家劫舍 你是一个专业的…...

蓝桥杯备赛 Day 19 加练dfs

是否需要回溯? 输入参数有哪几个(当前dfs和下一个dfs什么会变?)&#xff1f; 是否需要返回值? 一.1158: 八皇后 P1158 - 八皇后 - New Online Judge (ecustacm.cn) 学习: 1.dfs输入为层数&#xff0c;即行号i&#xff0c;因为是每行只放一个&#xff0c;下一个dfs就是i1 2…...

蓝桥杯-卡java排序

问题描述 本题是一道针对 Java 中 Arrays.sort 的题目&#xff0c;因此只有一个数据&#xff0c;该数据可以把 int 类型的数组在使用 Arrays.sort 后卡成 O(n2)O(n2)。 给定一个有 nn 个正整数的序列 aa&#xff0c;你需要将其升序排序后输出。 输入格式 第一行输入一个正整…...

内存管理模块

在 Linux 内核中&#xff0c;内存管理是一个复杂而关键的组成部分。内核空间的虚拟地址被划分为多个区域&#xff0c;每个区域有其特定的用途和映射机制。本文将详细介绍 直接映射区&#xff08;Direct Mapping Area&#xff09;、vmalloc 区、永久内核映射区&#xff08;Perma…...

Spring RestTemplate修仙指南:从HTTP萌新到请求大能的终极奥义

各位在Spring生态摸爬滚打的道友们&#xff01;今天要解锁的是Spring官方御用HTTP法宝——RestTemplate&#xff01;这货堪称Java界的"御剑飞行术"&#xff0c;虽然官方已推荐WebClient接棒&#xff0c;但江湖上仍有80%项目在用这员老将&#xff01;准备好一键起飞了…...

cpp经典数论问题

题目如下 思路 代码如下...

Redis 线程模型:单线程也能快如闪电?

目录 一、核心思想&#xff1a;快刀斩乱麻的“单线程”高手 &#x1f9b8;‍♂️二、为什么是“单线程”&#xff1f;&#x1f914;三、单线程如何做到高性能&#xff1f;✨ “I/O 多路复用”是关键&#xff01;四、真的一直都只有“一个线程”吗&#xff1f;并不完全是&#x…...

游戏引擎学习第208天

运行游戏并回顾我们的情况 今天&#xff0c;我们将继续完成之前中断的调试输出工作。最近的工作偏离了一些&#xff0c;展示了如何进行元编程的实践&#xff0c;主要涉及了一个小的解析器。尽管这个解析器本身是一个玩具&#xff0c;但它展示了如何完成一个完整的循环&#xf…...

JavaScript箭头函数介绍(=>)(箭头函数不绑定自己的this,而是继承上下文的this;不能用于造函数)JavaScript =>

文章目录 JavaScript箭头函数全解析箭头函数的基本语法简洁语法特性隐式返回值对象字面量返回 词法绑定的this不适用箭头函数的场景对象方法构造函数DOM事件处理 高级用法在数组方法中的应用链式调用柯里化函数 性能考量1. 作为回调函数时减少创建闭包的开销2. 简化代码结构&am…...

数据对象:DTO、DO、PO和 BO的区别和关系

在Java开发中&#xff0c;DTO&#xff08;Data Transfer Object&#xff09;、DO&#xff08;Domain Object&#xff09;、PO&#xff08;Persistent Object&#xff09;和BO&#xff08;Business Object&#xff09;是常用的数据对象概念&#xff0c;下面为你详细介绍并给出简…...

Java内存模型详解:堆、栈、方法区

1. 堆&#xff08;Heap&#xff09; 作用&#xff1a;存放所有对象实例及数组&#xff0c;是垃圾回收的主要区域。 结构&#xff1a; 新生代&#xff08;Young Generation&#xff09;&#xff1a; Eden区&#xff1a;新创建的对象首先分配在此。 Survivor区&#xff08;From…...

ubuntu 20.04 编译运行LeGo_LOAM 跑数据集 并且保存pcl文件

1.搭建文件目录,clone代码,编译 mkdir -p Lego_LOAM/src cd Lego_LOAM/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git cd .. catkin_make -j1 错误1&#xff1a;: fatal error: opencv/cv.h: 没有那个文件或目录 13 | #include <opencv/cv.h…...

CMake使用教程

CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。 使用命令行执行CMakeLists.txt,对文件进…...