Windows及Linux系统加固
君衍.
- 一、Windows加固
- 1、配置简介
- 2、账户配置
- 3、本地配置
- 4、安全设置
- 二、Linux加固
- 1、配置简介
- 2、网络配置
- 3、日志和审计配置
- 4、访问认证和授权配置
- 5、系统运维配置
一、Windows加固
1、配置简介
-
通常在
Windows
安全配置中有两类对象- 一类是
Windows Server
,如win server 2012 、win server 2016、win server 2019
等 - 一类是
Windows Client
,如win 7、 win 8 、win 10
等
- 一类是
-
在
Windows
安全配置中,如果组织有条件,对Windows Client
的安全配置我们可以借助微软的活动目录来实现自动化。 -
而对
Windows Server
通常为保障服务器稳定运行,我们倾向于的是手动配置。 -
以
Windows Server 2012 R2
为例,进行加固讲解
Windows安全配置方法
- 通常我们使用组策略对
windows
进行安全配置 - 组策略中的安全配置与注册表也可以对应,但注册表可读性较差。组策略 有详细的说明,所以我们通常使用组策略
- 在windows客户端系统中,HOME版本是没有组策略的的功能。
- 打开组策略的方法是
右键开始-->运行-->gpedit.msc
WIN+R -->gpedit.msc
Windows 不论什么版本,进行安全配置均包含以下两个常用维度
- 账户策略
- 密码策略
- 账户锁定策略
- 本地策略
- 审计策略
- 用户权限策略
- 安全选项
除了上述常用的配置,还会包含以下两个维度
- 防火墙策略
- 域配置文件
- 私有网络配置文件
- 高级审计策略
- 账户登录
- 账户管理
- 详细跟踪
- 登录/注销
- 对象访问
- 策略更改
2、账户配置
密码策略
- 强制密码历史,建议设置为24个
- 密码最长使用期限,建议设置60天
- 密码最短使用期限,建议设置为1天或更多
- 密码长度最小值,建议设置为14
- 密码必需符合复杂性要求,建议设置为启用
- 用可还原的加密码来存储密码,建议设置为禁用
账户锁定策略
- 账户锁定阈值,建议设置为10次或更少
- 账户锁定时间,建议设置为15分钟或更多
- 重置账户锁定计数器,建议设置为15分钟或更多
3、本地配置
用户权限分配
- 作为受信任的呼叫方访问凭据管理器,建议设置为空。默认为空
- 从网络访问此计算机,建议设置为Administrator,Authenticated Users,ENTERPRISE DOMAIN CONTROLLERS(域控设置)
- 以操作系统方式执行,建议设置为空,默认为空
- 将工作站添加到域,建议设置为Administrators
- 为进程调整内存配额,建议设置为Administrators, LOCAL SERVICE, NETWORK SERVICE
- 允许本地登录,建议设置为Administrators
- 允许通过远程桌面服务登录,建议设置为Administrators, Remote Desktop Users(客户端设置)
- 备份文件和目录,建议设置为Administrators
- 更改系统时间,建议设置为Administrators, LOCAL SERVICE
- 更改时区,建议设置为Administrators, LOCAL SERVICE
- 创建页面文件,建议设置为Administrators
- 创建一个信息对象,建议设置为空
- 创建全局对象,建议设置为Administrators, LOCAL SERVICE, NETWORK SERVICE,SERVICE
- 创建永久共享对象,建议设置为空
- 创建符号链接,建议设置为Administrators
- 调试程序,建议设置为Administrators
- 拒绝从网络访问这台计算机,建议设置为Guests, 本地的administrators中的其它用户或组。
- 拒绝作为批处理作业登录,建议设置为Guest
- 拒绝以服务身份登录,建议设置为Guest
- 拒绝本地登录,建议设置为Guest
- 拒绝通过远程桌面服务登录,建议设置为Guest和需要的本地用户
- 信任计算机和用户账户可以执行委派,建议设置为空,域控设置为Administrators
- 从远程系统强制关机,建议设置为Administrators
- 生成安全审核,建议设置为LOCAL SERVICE, NETWORK SERVICE
- 身份验证后模拟客户端,建议设置为Administrators, LOCAL SERVICE, NETWORK SERVICE, SERVICE
- 提高计划优先级,建议设置为Administrators
- 加载和卸载设备驱动程序,建议设置为Administrators
- 锁定内存页,建议设置为空
- 管理审核和安全日志,建议设置为Administrators,默认符合
- 修改固件环境值,建议设置为Administrators,默认符合
- 执行卷维护任务,建议设置为Administrators,默认符合
- 配置文件单一进程,建议设置为Administrators,默认符合
- 还原文件和目录,建议设置为Administrators
- 关闭系统,建议设置为Administrators
- 取得文件或其他对象所有权,建议设置为Administrators,默认设置
4、安全设置
1、账户
- 账户:管理员账户状态,建议设置为禁用
- 账户:阻止Microsoft账户,建议设置为用户不能添加Microsoft账户或使用 该账户登录
- 账户:来宾账户状态,建议设置为已禁用,默认设置
- 账户:使用空密码的本地账户只通话进行控制台登录,建议设置为启用,默认 设置
- 账户:重命令系统管理员账户,建议重命名为非administrator
- 账户:重命名来宾账户,建议重命名为非Guest
2、审核
- 审核:如果无法记录安全审计则立即关闭系统,建议设置为禁用,默认设置
- 审核:强制审核策略子类别设置,建议设置为启用
3、设备
- 设备:允许对可移动媒体进行格式化并弹出,建议设置为Administrators
- 设备:防止用户安装打印机驱动程序,建议设置为已启用,默认设置
4、交互式登录
- 交互式登录:不显示最后的用户名,建议设置已启用
- 交互式登录:无须按Ctrl+Alt+Del,建议设置已禁用,默认设置
- 交互式登录:计算机不活动限制,建议设置为900,不要设成0。可以理解为 锁屏。
- 交互式登录:试图登录的用户的消息文本,不要表现出任何信息,可以为空
- 交互式登录:试图登录的用户的消息标题,不要表现出任何信息,可以为空
- 交互式登录:之前登录到缓存的次数,建议设为4或更少
- 交互式登录:提示用户在过期之前更改密码,建议5到14天
- 交互式登录:需要域控制器身份验证以对工作站进行解锁,建议设置为启用
5、Microsoft网络客户端
- Microsoft网络客户端:对通信进行数字签名(始终),建议设置为已启用
- Microsoft网络客户端:对通信进行数字签名(如果服务器允许),建议设置为已启用,默认设置
- Microsoft网络客户端:将未加密的密码发送到第三方SMB服务器,建议设置为已禁用,默认设置
6、Microsoft网络服务器
- Microsoft网络服务器:暂停会话前所需空间的时间数量,建议设置15或更少
- Microsoft网络服务器:对通信进行数字签名(始终),建议设置为已启用
- Microsoft网络服务器:对通信进行数字签名(如果客户端允许),建议设置 为已启用
- Microsoft网络服务器:登录时间过期后断开与客户端的连接,建议设置为已 启用,默认设置
- Microsoft网络服务器:服务器SPN目标名称验证级别,建议设置为由客户端 提供时接受或更高
7、网络访问
-
网络访问:不允许SAM和共享的匿名枚举,建议设置为已启用
-
网络访问:不允许存储网络身份验证的密码和凭据,建议设置为已启用
-
网络访问:可匿名访问的共享,建议根据实际情况设置
-
网络访问:可远程访问的注册表路径,建议设置为
System\CurrentControlSet\Control\ProductOptions System\CurrentControlSet\Control\Server Applications Software\Microsoft\Windows NT\CurrentVersion
-
网络访问: 网络访问:可远程访问的注册表路径和子路径,建议设置为
System\CurrentControlSet\Control\Print\Printers System\CurrentControlSet\Services\Eventlog Software\Microsoft\OLAPServer Software\Microsoft\Windows NT\CurrentVersion\Print Software\Microsoft\Windows NT\CurrentVersion\Windows System\CurrentControlSet\Control\ContentIndex
8、网络安全
- 网络安全:允许本地系统将计算机标识用于NTLM,建议设置为已启用
- 网络安全:允许LocalSystem NULL会话回退,建议设置为已禁用
- 网络安全:允许对此计算机的PKU2U身份验证请求使用联机标识,建议设置为已禁用
- 网络安全:配置Kerberos允许的加密类型,建议设置
- AES128_HMAC_SHA1, AES256_HMAC_SHA1, 将来的加密类型
- 网络安全:在超过登录时间后强制注销,建议设置为已启用
- 网络安全:LNA管理器身份验证级别,建议设置为仅发送NTLMv2响应,拒绝LM和NTLM
9、用户账户控制
- 用户账户控制:用于内置管理员账户的管理员批准模式,建议设置已启用
- 用户账户控制:管理员批准模式中管理员的提升权限提示的行为,建议设置为 在安全桌面上提示凭据
- 用户账户控制:标准用户的提升提示行为,建议设置为,自动拒绝提升请求
- 用户账户控制:允许UIAccess应用程序在不使用安全桌面的情况下提升权限, 建议设置为已启用
10、高级防火墙配置
11、高级审核策略配置–账户登录
- 审核凭据验证,建议设置成功和失败
配置为:
12、高级审核策略配置–账户管理
- 审核应用程序组管理,建议审核成功和失败
- 审核安全组管理,建议审核成功
- 审核用户账户管理,建议审核成功和失败
13、高级审核策略配置–详细跟踪
- 审核进程创建,建议审核成功
14、高级审核策略配置–登录/注销
- 审核账户锁定,建议设置失败
- 审核注销,建议设置成功
- 审核登录,建议成功和失败
- 审核其他登录/注销失败,建议成功和失败
- 审核特殊登录,建议成功
15、高级审核策略配置–对象访问
- 审核详细的文件共享,建议失败
- 审核文件共享,建议成功和失败
- 审核其他对象访问事件,建议成功和失败
- 审核可移动存储,建议成功和失败
16、高级审核策略配置–策略更改
17、高级审核策略配置–特权使用
18、高级审核策略配置–系统
二、Linux加固
1、配置简介
- Linux种类较多,常见的有Redhat、Ubuntu、Centos、SUSE等
- 根据不同版本,其安全配置都不太相同,主要体现在以下三点
- 配置文件所存放的路径
- 操作系统的命令
- 操作系统自身的安全特性或工具
以Centos 7 为例,进行安全配置讲解,其它版本Linux可能 存在安全配置方式不同,但整体配置的维度和原则是一致的。
Centos 安全配置维度
- 安装配置(默认配置即可)
- 服务配置(默认配置即可)
- 网络配置
- 日志和审计
- 访问、授权和认证
- 系统运维
Centos 安全配置原则
- 最小安全(最小安装、最小权限)
- 不影响业务可用(安全与业务的矛盾)
- 职责分离
- 审计记录
因为Centos安全配置较多,本文仅列举部分典型代表,更多具体配置,可以参照 相关国内或国际标准,如等保、CIS等。
2、网络配置
- 禁用不适用的网络协议
- 禁用IPV6,执行以下命令
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
sysctl -w net.ipv6.route.flush=1
//查看配置是否生效
sysctl net.ipv6.conf.all.disable_ipv6
-
禁用不适用的无线设备,因为Linux作为服务器工作时,无需使用无线
-
查看无线设备
iw list
- 查看当前连接
ip link show up
- 关闭网络连接
ip link set lo down
这里将环回口lo进行关闭
- 当Linux作为独立主机使用时,配置网络
- 关闭IP转发,默认即关闭
- 查看IP转发配置
sysctl net.ipv4.ip_forward
- 关闭IP转发
sysctl -w net.ipv4.ip_forward=0
- 关闭数据包重定向
- 查看重定向设置
sysctl net.ipv4.conf.all.send_redirects
- 关闭重定向设置
sysctl -w net.ipv4.conf.all.send_redirects=0
- 开启TCP SYN Cookies功能
- TCP SYN功能某种程度上可以防止TCP的SYN DDOS攻击。
- 查看TCP SYN Cookies功能
sysctl net.ipv4.tcp_syncookies
- 开启TCP SYN Cookies功能
sysctl -w net.ipv4.tcp_syncookies=1
防火墙配置
- 在Centos 较新的版本中,引入了nftables内核取代传统netfilter内核
- 通常nftables和netfilter只用安装一种即可。
- 基于netfilter,又有两种前端操作工具,即firewalld和iptables
以netfilter+firewalld
进行操作讲解
- 防火墙配置
- 确定安装了firewalld以及iptables管理工具
rpm -q firewalld iptables
yum install firewalld iptables
- 关闭iptables的服务管理(因为同时开启iptables与firewalld会冲突)
- 查看iptables服务
rpm -q iptables-services
- 如果已经安装,可以使用以下命令
systemctl stop iptables
yum remove iptables-services
- 确保没有安装nftables
- 查看安装nftables的状态
rpm -q nftables
- 如果安装,可以删除
yum remove nftables
- 确保防火墙服务自动启动,并正在运行
- 查看firewalld状态
systemctl status firewalld
firewall-cmd --state
- 开启firewalld
systemctl start firewalld
systemctl enable firewalld
-
开启防火墙,可能会导致网络中断,所以一定要分析清楚,当前网络连接 与网络配置,再来开启防火墙
-
确定防火墙区域配置
-
默认firewalld会创建一个名为public的区域
-
区域代表防火墙中的信任等级,每一个接口都应该属于区域
-
查看当前区域,默认是public
firewall-cmd --get-default-zone
- 防火墙默认区域配置
- 设置默认区域为public
firewall-cmd --set-default-zone=public
- 查看当前活动的区域和接口
firewall-cmd --get-active-zones
设置接口到区域
firewall-cmd --zone=public --change-interface=ens33
- 查看当前允许的端口和服务
firewall-cmd --list-all --zone=public
- 关闭不需要的端口与服务
- 关闭端口
firewall-cmd --remove-port=<port-number>/<port-type>
如:firewall-cmd --remove-port=25/tcp
- 关闭服务
firewall-cmd --remove-service=<service>
如:firewall-cmd --remove-service=smtp
-
系统审核
-
查看系统是否安装审核服务
rpm -q audit audit-libs
- 如果没有安装,而进行安装
yum install audit audit-libs
- 查看审核服务是否开启
systemctl status auditd
systemctl is-enabled auditd
3、日志和审计配置
- 配置审计数据大小
- 查看audit日志最大空间,默认单位为M
- 如图,显示为8M
cat /etc/audit/auditd.conf | grep max
- 审计用户和用户组的操作
- 查看当前用户和用户组相关的操作记录
grep identity /etc/audit/rules.d/*.rules
- 当前没有任何相关配置
- 配置记录如下:
vi /etc/sudit/rules.d/identity.rules
- 配置rsyslog日志
- rsyslog是取代syslog的新版本。rsyslog有一些优秀的特性,比如使用tcp连接,可以将日志存储到数据库,可以加密传输日志等。
- 确保系统安装了rsyslog
rpm -q rsyslog
- 查看rsyslog服务状态
systemctl is-enabled rsyslog
- 确保日志正常输入
- 查看当前日志目录及日志权限,日志权限应该为600(仅root可读写)
ls -l /var/log
- 查看日志归档处理
- Linux系统使用logrotate按定期或指定大小进行归档处理
- 确保logrotate正常处理syslog日志
- 查看是否存在文件
ls /etc/logrotate.d/syslog
4、访问认证和授权配置
- 查看计划任务的访问授权
stat /etc/crontab
如图展示了,仅root可以访问计划任务,且相关访问时间。
同理还应检查文件daily hourly monthly weekly
- 查看SSH配置文件权限
- 因为SSH可以使用密钥直接登录,如果SSH配置文件权限限制不严格,则造成SSH提权
- 检查/etc/ssh/sshd_config的权限
-
配置允许通过SSH访问的用户
-
使用以上命令查看当前允许SSH访问的用户
sshd -T | grep -E '^\s*(allow|deny)(users|groups)\s+\S+'
- 如果输出为空,说明没有配置
- 编辑文件
/etc/ssh/sshd_config
,配置仅允许fox用户访问 - 在文件中加入以下行:
allowusers fox
- 保存退出,重启SSH生效
-
配置SSH验证失败次数
-
查看SSH验证失败次数
-
sshd -T | grep maxauthtries
-
默认为6次,建议改为4次或更低
-
编辑SSH配置我呢见修改即可
-
vi /etc/ssh/sshd_config
-
-
禁止空密码登录SSH
-
sshd -T | grep permitemptypasswords
-
查看SSH支持的加密方式,确保不要出现如des md5这类已经不再安全的算法
-
sshd -T | grep ciphers
-
-
PAM模块配置
-
PAM(Pluggable Authentication Modules)
是Linux中的认证管理模块,所有认证相关可由PAM处理。 -
密码要求
- 由
/etc/security/pwquality.conf
管理 minlen = 14
,最小密码长度mincalss =4
,密码复杂度,分别是是大写字母、小写字母、数字、符号
- 由
-
用户账户和环境
-
查看密码过期时间,建立设为60,加图为99999,显然不合适
-
查看用户的过期时间
grep -E '^[^:]+:[^!*]' /etc/shadow | cut -d: -f1,5
-
修改用户过期时间
-
方法一,编辑默认文件中的PASS_MAX_DAYS值
vi /etc/login.defs
-
方法二
chage --maxdays 365 <user>
比如:
chage --maxdays 365 fox
-
查看密码最小天数(原理同windows密码最小天数),建议设为1
- 提示密码过期时间,建议设置为7或更多
- 自动禁用账号,建议设置为30天或更少
- 当用户指定时间没有使用时,自动禁用用户
- 查看
- 配置方法
useradd -D -f 30
5、系统运维配置
- 检查文件/etc/passwd的权限,应为644,同理应检查/etc/group
- 检查文件/etc/shadow的权限,应为0,同理应检查/etc/shadow
相关文章:
Windows及Linux系统加固
君衍. 一、Windows加固1、配置简介2、账户配置3、本地配置4、安全设置 二、Linux加固1、配置简介2、网络配置3、日志和审计配置4、访问认证和授权配置5、系统运维配置 一、Windows加固 1、配置简介 通常在Windows安全配置中有两类对象 一类是Windows Server,如win …...
Postman安装使用教程(详解)
目录 一、Postman是什么 二、安装系统要求 三、下载Postman 四、注册和登录Postman 五、创建工作空间 六、创建请求 一、Postman是什么 在安装之前,让我们先来简单了解一下Postman。Postman是一个流行的API开发工具,它提供了友好的用户界面用于发送…...
【嵌入式开发之标准I/O】文件I/O的基本概念,打开、关闭、定位函数及实例
文件I/O和标准I/O 什么是文件I/O?什么是标准I/O? 文件I/O:文件I/O又称系统IO,系统调用,称之为不带缓存的IO(unbuffered I/O)。是操作系统提供的API接口函数。不带缓存指的是每个read,write都调用内核中的一个系统调…...
C++文件操作-文本文件-读文件
第一种 #include<iostream>//1、包含头文件 fstream #include<fstream> using namespace std;void test01() {//2、创建流对象ifstream ifs;//3、打开文件 并且判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "…...
二叉树精选面试题
💎 欢迎大家互三:2的n次方_ 1. 相同的树 100. 相同的树 同时遍历两棵树 判断结构相同:也就是在遍历的过程中,如果有一个节点为null,另一棵树的节点不为null,那么结构就不相同 判断值相同:只需…...
如何在 Android 中删除和恢复照片
对于智能手机用户来说,相机几乎已经成为一种条件反射:你看到值得注意的东西,就拍下来,然后永远保留这段记忆。但如果那张照片不值得永远保留怎么办?众所周知,纸质快照拿在手里很难舍弃,而 Andro…...
HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(六)
一、仅支持一个静态块 规则:arkts-no-multiple-static-blocks 级别:错误 ArkTS不允许类中有多个静态块,如果存在多个静态块语句,请合并到一个静态块中。 TypeScript class C {static s: stringstatic {C.s aa}static {C.s C.s …...
功能测试与APPSCAN自动化测试结合的提高效率测试策略
背景 手工探索性测试(Manual Exploratory Testing,简称MET)是一种软件测试方法,它依赖于测试人员的直觉、经验和即兴发挥来探索应用程序或系统。与传统的脚本化测试相比,手工探索性测试不遵循固定的测试脚本࿰…...
AVL树的理解和实现[C++]
文章目录 AVL树AVL树的规则或原理 AVL树的实现1.节点的定义2.功能和接口等的实现默认构造函数,析构函数拷贝构造函数插入搜索打印函数检查是否为平衡树,检查平衡因子旋转 AVL树 AVL树,全称Adelson-Velsky和Landis树,是一种自平衡…...
云计算遭遇的主要安全威胁
以下是详细说明云计算遭遇的所有主要安全威胁: 1. 数据泄露 描述:数据泄露是指未经授权的情况下访问和获取敏感数据。云计算环境中的数据泄露通常由于不安全的配置、软件漏洞或内部威胁造成。 案例: Capital One数据泄露:2019…...
[MySQL]02 存储引擎与索引,锁机制,SQL优化
Mysql存储引擎 可插拔式存储引擎 索引是在存储引擎底层上实现的 inno DB MySQL默认存储引擎: inno DB高可靠性和高性能的存储引擎 DML操作遵循ACID模型支持事务行级锁,提高并发访问性能支持外键 约束,保证数据完整性和可靠性 MySAM MySAM是MySQL的早期引擎 特点: 不支持事…...
ld,GNU 链接器介绍以及命令行参数详解
ld,GNU 链接器介绍以及命令行参数详解 当我们使用GCC编译源代码生成可执行程序,经过预处理、汇编、编译、链接四个阶段。 链接器(Linker)将多个目标文件和库文件链接起来,链接器还解决目标文件之间的符号引用ÿ…...
[web]-反序列化-base64
看到源码 <?php error_reporting(0); class A {public $contents "hello ctfer";function __toString(){if ((preg_match(/^[a-z]/i,$this->contents))) {system("echo $this->contents");return 111;}else{return "...";}} }functi…...
【医学影像】RK3588+FPGA:满足远程诊疗系统8K音视频编解码及高效传输需求
医学影像 提供基于Intel平台、NXP平台、Rockchip平台的核心板、Mini-ITX主板、PICO-ITX主板以及工业整机等计算机硬件。产品板载内存,集成超高清编码/解码视频引擎,具有出色的数据处理能力和图形处理能力,功能高集成,可应用于超声…...
昇思25天学习打卡营第16天|基于MindSpore通过GPT实现情感分类
文章目录 昇思MindSpore应用实践1、基于MindSpore通过GPT实现情感分类GPT 模型(Generative Pre-Training)简介imdb影评数据集情感分类 2、Tokenizer导入预训练好的GPT3、基于预训练的GPT微调实现情感分类 Reference 昇思MindSpore应用实践 本系列文章主…...
服务器借助笔记本热点WIFI上网
一、同一局域网环境 1、当前环境,已有交换机组网环境,服务器已配置IP信息。 设备ip服务器125.10.100.12交换机125.10.100.0/24笔记本125.10.100.39 2、拓扑图 #mermaid-svg-D4moqMym9i0eeRBm {font-family:"trebuchet ms",verdana,arial,sa…...
开发实战中Git的常用操作
Git基础操作 1.初始化仓库 git init解释:在当前目录中初始化一个新的Git仓库。 2.克隆远程仓库 git clone <repository-url>解释:从远程仓库克隆一个完整的Git仓库到本地。 3.检查当前状态 git status解释:查看当前工作目录的状态…...
python调用chrome浏览器自动化如何选择元素
功能描述:在对话框输入文字,并发送。 注意: # 定位到多行文本输入框并输入内容。在selenium 4版本中,元素定位需要填写父元素和子元素名。 textarea driver.find_element(By.CSS_SELECTOR,textarea.el-textarea__inner) from …...
深入理解JS中的排序
在JavaScript开发中,排序是一项基础而重要的操作。本文将探讨JavaScript中几种常见的排序算法,包括它们的原理、实现方式以及适用场景。 1、冒泡排序 1.1、原理 通过比较相邻两个数的大小,交换位置排序:如果后一个数比前一个数小,则交换两个数的位置,重复这个过程,直…...
Kafka之存储设计
文章目录 1. 分区和副本的存储结构1. 分区和副本的分布2. 存储目录结构3. 文件描述 2. 相关配置3. 数据文件类型4. 数据定位原理LogSegment 类UnifiedLog 类 5. 副本数据同步HW水位线LEO末端偏移量HW更新原理 6. 数据清除 1. 分区和副本的存储结构 在一个多 broker 的 Kafka 集…...
Python面试整理-Python中的函数定义和调用
在Python中,函数是一种封装代码的方式,使得代码模块化和复用性更强。定义和调用函数是Python编程中的基本技能。以下是关于如何在Python中定义和调用函数的详细介绍: 函数定义 函数在Python中使用def关键字进行定义。函数体开始前,通常有一个可选的文档字符串(docstring)…...
HTTP协议、Wireshark抓包工具、json解析、天气爬虫
HTTP超文本传输协议 HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP 协议的重要特点: 一发一收…...
electron项目中实现视频下载保存到本地
第一种方式:用户自定义选择下载地址位置 渲染进程 // 渲染进程// 引入 import { ipcRenderer } from "electron";// 列表行数据下载视频操作,diffVideoUrl 是视频请求地址 handleDownloadClick(row) {if (!row.diffVideoUrl) {this.$message…...
基于chrome插件的企业应用
一、chrome插件技术介绍 1、chrome插件组件介绍 名称 职责 访问权限 DOM访问情况 popup 弹窗页面。即打开形式是通过点击在浏览器右上方的icon,一个弹窗的形式。 注: 展示维度 browser_action:所有页面 page_action:指定页面 可访问绝大部分api 不可以 bac…...
unittest框架和pytest框架区别及示例
unittest框架和pytest框架区别及示例 类型unittest框架pytest框架unittest框架示例pytest框架示例安装python内置的一个单元测试框架,标准库,不需要安装第三方单元测试库,需要安装使用时直接引用 import unittest安装命令:pip3 install pyte…...
IDEA性能优化方法解决卡顿
文章目录 前言一、可以采取以下措施:二、VM Options的参数解释1. 内存设置2. 性能调优3. GC(垃圾回收)调优4. 调试和诊断5. 其它设置6.设置 VM Options 的步骤: 总结 前言 我们在使用 IntelliJ IDEA的时候有时候会觉得卡顿&#x…...
Mysql集合转多行
mysql 集合转多行 SELECT substring_index(substring_index(t1.group_ids, ,, n), ,, -1) AS group_id FROM (select 908,909 as group_ids ) t1, (SELECT rownum : rownum 1 AS n FROM ( SELECT rownum : 0 ) r, orders ) t2 WHERE n < ( LENGTH( t1.group_ids ) - LENGT…...
MFC:只允许产生一个应用程序实例的具体实现
在MFC(Microsoft Foundation Class)应用程序中,如果你想限制只允许产生一个应用程序实例,通常会使用互斥体(Mutex)来实现。这可以确保如果用户尝试启动第二个实例时,它会被阻止或将焦点返回到已…...
深入理解TCP/IP协议中的三次握手
👍 个人网站:【洛秋资源小站】 深入理解TCP/IP协议中的三次握手 在计算机网络中,TCP/IP协议是通信的基石。理解TCP/IP协议中的三次握手是掌握网络通信的关键步骤之一。本文将详细解释TCP/IP协议中的三次握手过程,探讨其工作原理&…...
【React】事件绑定、React组件、useState、基础样式
React 教程 目录 事件绑定 1.1. 基础实现 1.2. 使用事件参数 1.3. 传递自定义参数 1.4. 同时传递事件对象和自定义参数 React 组件 2.1. 组件是什么 2.2. 组件基础使用 useState:状态管理 3.1. 基础使用 3.2. 状态的修改规则 3.3. 修改对象状态 基础样式 4.1. 行…...
x264、x265、libaom 编码对比实验
介绍 x264 是一个开源的高性能 H.264/MPEG-4 AVC 编码器,它以其优秀的压缩比和广泛的适用性而闻名。x265 是一种用于将视频流编码成 H.265/MPEG-H HEVC 压缩格式的免费软件库和应用程序,以其下一代压缩能力和卓越的质量而闻名 。作为 x264 的继任者,x265 支持 HEVC 的 Main、…...
c++网络编程实战——开发基于ftp协议的文件传输模块(二) 配置ftp服务与手动执行ftp命令
配置FTP服务 一.前言 博主的环境是阿里云服务器,操作系统版本为 ubuntu20.04,一下所有操作都基于以上环境下进行的操作,同时为了简化操作我将开放同一个云服务器的不同端口,让它同时充当服务端和客户端,大家如果想测试效果更好且…...
Sphinx 安装相关指令解释
安装指令 pip3 install sphinx-autobuildpip3 install sphinx_rtd_themepip3 install sphinx_markdown_tablepip3 install sphinx_markdown_tables pip3 install sphinx-autobuild 功能:安装 sphinx-autobuild 包。作用:sphinx-autobuild 是一个工具&am…...
npm下载包-更改默认缓存目录
npm(Node Package Manager)的缓存目录是npm用于存储已下载包的本地位置,以便在后续安装相同包时能够快速复用,从而节省时间和带宽。npm缓存目录的具体位置会根据操作系统的不同而有所差异。 Windows系统 在Windows系统中&#x…...
PWM再理解(1)
前言 昨天过于劳累,十点睡觉,本来想梳理一下PWM,今天补上。 PWM内涵 PWM全称:Pulse Width Modulation,也就是脉宽调制的意思,字面意思理解就是对脉冲的宽度进行改变。准确就是通过数字输出对模拟电路进行…...
CSPVD 智慧工地安全帽安全背心检测开发包
CSPVD SDK适用于为各种智慧工地应用增加安全防护穿戴合规的检测能力,能够有效检测未戴安全帽和未穿 安全背心的人员,提供Web API和原生API。官方下载:CSPVD工地安全防护检测 1、目录组织 CSPVD开发包的目录组织说明如下: xlpr_…...
给常用Docker命令起别名,提高效率
在日常的开发和运维工作中,Docker是一款非常常用的工具。为了提高工作效率,我们可以为一些常用的Docker命令设置别名,这样可以更快速地执行这些命令。以下是如何给常用Docker命令起别名的详细步骤。 修改/root/.bashrc文件 首先,…...
基于深度学习的草莓成熟度实时检测系统(UI界面+YOLOv8/v7/v6/v5模型+完整代码与数据集)
1. 引言 在农业领域,草莓的成熟度检测是保证果实品质的重要环节。传统的方法依赖于人工经验,不仅耗时费力,还容易出错。本文介绍如何使用YOLO(You Only Look Once)系列模型(YOLOv8/v7/v6/v5)构…...
【devops】ttyd 一个web版本的shell工具 | web版本shell工具 | web shell
一、什么是 TTYD ttyd是在web端一个简单的服务器命令行工具 类似我们在云厂商上直接ssh链接我们的服务器输入指令一样 二、安装ttyd 1、macOS Install with Homebrew: brew install ttydInstall with MacPorts: sudo port install ttyd 2、linux Binary version (recommend…...
Windows环境Apache配置解析PHP,以及配置虚拟主机详解
1. 安装 Apache 和 PHP 确保你已经安装了 Apache Web 服务器和 PHP。你可以从官方网站下载它们的 Windows 版本: Apache HTTP ServerPHP 2. 配置 Apache 配置 httpd.conf 文件 找到你的 Apache 安装目录下的 conf 文件夹中的 httpd.conf 文件,使用文…...
Redis高级篇—分布式缓存
目录 Redis持久化 RDB持久化 AOF持久化 RDB与AOF对比 Redis主从 全量同步 增量同步 Redis哨兵 RedisTemplate集成哨兵实现 Redis分片集群 散列插槽 集群伸缩 故障转移 自动故障转移 手动故障转移 RedisTemplate访问分片集群 Redis持久化 RDB持久化 RDB全称Re…...
c++端的类,作为组件在qml端使用
qml使用c端的类,作为组件在qml端使用 这个类必须继承QObject 这个类必须继承QObject #ifndef COLLISIONALARM_H #define COLLISIONALARM_H#include <QObject>class CollisionAlarm : public QObject {Q_OBJECT//这个宏就叫做反射机制,让qml端直接…...
Android 14 适配之 - 全屏 intent 通知
全屏 intent 通知 在 Android 11(API 级别 30)中,任何应用都可以在手机处于锁定状态时使用 Notification.Builder.setFullScreenIntent 发送全屏 intent。在 AndroidManifest 中声明 USE_FULL_SCREEN_INTENT 权限即可; 全屏 int…...
如何在 Vue 和 JavaScript 中截取视频任意帧图片
大家好!今天我们来聊聊如何在 Vue 和 JavaScript 中截取视频的任意一帧图片。这个功能在很多场景下都非常有用,比如视频编辑、视频预览等。本文将带你一步步实现这个功能,并且会提供详细的代码示例。 准备工作 首先,我们需要一个…...
代码随想录学习 day54 图论 Bellman_ford 队列优化算法(又名SPFA) 学习
Bellman_ford 队列优化算法(又名SPFA) 卡码网:94. 城市间货物运输 I 题目描述 某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从…...
递归遍历树结构,前端传入一整颗树,后端处理这个树,包括生成树的id和pid等信息,
递归逻辑 递归遍历树结构,将树结构转换list集合 并添加到 flowStepTree 集合 // 递归遍历树结构,将树结构转换list集合 并添加到 flowStepTree 集合private static void settingTree(ProductFlowStepVO node, Long parentId, String ancestors, List<…...
Nginx详解(超级详细)
目录 Nginx简介 1. 为什么使用Nginx 2. 安装Nginx Nginx的核心功能 1. Nginx反向代理功能 2. Nginx的负载均衡 3 Nginx动静分离 Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协…...
postman使用旧版本报错version mismatch detected
卸载 postman又重装了别的版本,打开后遇到了这个报错,解决办法如下: 删除缓存文件 C:\Users\Administrator\AppData\Roaming\Postman 下载PostMan 提取码:6k51...
探索数据的隐藏维度:使用Scikit-Learn进行特征交互性预测
探索数据的隐藏维度:使用Scikit-Learn进行特征交互性预测 在机器学习中,特征交互性是指不同特征之间可能存在的复杂关系,这些关系对预测结果有着重要影响。Scikit-Learn(简称sklearn),作为Python中广受欢迎…...
首个WebAgent在线评测框架和流程数据管理平台来了,GPT-4、Qwen登顶闭源和开源榜首!
在当今科技迅速发展的时代,大型语言模型(Large Language Model,LLM)正以前所未有的速度改变着我们与数字世界的互动方式。基于LLM的智能代理(LLM Agent),从简单的信息搜索到复杂的网页操作&…...