Linux系统安全及应用

目录

一、账号安全控制

1. 系统账号清理

1.1 将用户设置为无法登录

1.2 锁定用户 

1.3 删除用户

1.4 锁定配置文件

2. 密码安全控制

2.1 设置密码规则

3. 命令历史 

4. 切换用户

4.1 su和su -

4.2 限制使用su命令的用户  

5. PAM安全认证 

5.1 概述

5.2 pam相关文件

5.3 pam工作原理

5.4 专用配置文件/etc/pam.d/ 格式

5.5 shell模块 

5.6 securetty模块

5.7 pam_nologin.so 模块 

5.8 limit 

6. sudo  

6.1 概述

6.2 特性

6.3 提权操作

6.4 别名 

6.5 子目录

二、系统引导和登录控制

1. 开关机安全控制

1.1 调整 BIOS引导设置

1.2 禁止 Ctrl + Alt + Del 快捷键重启

1.3 grup加密

2. 禁止root用户登录

2.1 禁止通过ssh协议登录root

2.2 修改root用户shell类型 

三、弱口令检测、端口扫描

1. 弱口令检测——John the Ripper

2. 网络扫描NMAP


一、账号安全控制

1. 系统账号清理

1.1 将用户设置为无法登录

shell——/sbin/nologin却比较特殊,所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源,如程序用户。

[root@localhost ~]# tail -1 /etc/passwd            #查看fql的属性
fql:x:1000:1000:fql:/home/fql:/bin/bash
[root@localhost ~]# usermod -s /sbin/nologin fql  
#修改fql的shell属性 
#或者chsh -s /sbin/nologin fql也可以修改
[root@localhost ~]# tail -1 /etc/passwd        
fql:x:1000:1000:fql:/home/fql:/sbin/nologin   
[root@localhost ~]# su fql
This account is currently not available.           #此帐户当前不可用

1.2 锁定用户 

[root@localhost ~]# passwd -l fql
锁定用户 fql 的密码 。
passwd: 操作成功

[root@localhost ~]# usermod -L fql
[zhangsan@localhost root]$ su fql
密码:
su: 鉴定故障

1.3 删除用户

[root@localhost ~]# userdel -r zhangsan  #-r表是家目录
[root@localhost ~]# id zhangsan
id: zhangsan: no such user

1.4 锁定配置文件

 chatter

  • -a 让文件或目录仅供附加用途。只能追加
  • -i 不得任意更动文件或目录。
[root@localhost ~]# chattr +i /etc/passwd  #锁定文件
[root@localhost ~]# lsattr /etc/passwd     #查看特殊权限
----i----------- /etc/passwd
[root@localhost ~]# useradd zhangsan
useradd:无法打开 /etc/passwd
[root@localhost ~]# chattr -i /etc/passwd  #解锁

2. 密码安全控制

2.1 设置密码规则

对于新建用户,可以修改/etc/login.defs文件里的内容来设置密码规则

[root@localhost ~]# vim /etc/login.defs  
#######################################
PASS_MAX_DAYS   99999         
#密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。
PASS_MIN_DAYS   0
#表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。
PASS_MIN_LEN    5
#指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
PASS_WARN_AGE   7
#指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。

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

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

3. 命令历史 

Shell 环境的命令历史机制有利有弊。当用户的历史命令操作过程输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。

[root@localhost ~]# history | wc -l      #统计历史命令数
208
[root@localhost ~]# echo $HISTSIZE       #最大1000历史命令条数
1000
[root@localhost ~]# history -c | wc -l   #清除历史命令(临时)
0

[root@localhost ~]# vim /etc/profile     #对所有用户生效
####################################
export HISTSIZE=200                      
#设置最多只记录200条历史命令,export设置环境变量,HISTSIZE历史命令记录条数
export TMOUT=60
#设置超时时间,用户闲置后注销
[root@localhost ~]# source /etc/profile  #重新加载系统环境变量文件/etc/profile

[root@localhost ~]# vim .bashrc
###############################
echo " " > ~/.bash_history              
#开机之前先运行:将空格重定向至.bash_history文件中,即清空,仅对当前用户生效

 ~/.bashrc,~/.bash_profile:开机之前先运行文件里的命令

~/.bash_logout:关机之前先运行文件里的命令

4. 切换用户

4.1 su和su -

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令。su与su -,存在区别:su仅切换一部分,未切环境变量,这会导致某些命令运行出现问题或错误,如法使用service 命令;su -切的彻底,将使用目标用户的登录shell环境。超管切换普通用户不需要密码。

4.2 限制使用su命令的用户  

在pam模块中, 主要有pam_ rootok.so和pam_ wheel.so两个模块组合限制用户使用su命令。

[root@localhost ~]# vim /etc/pam.d/su

  • 默认情况下第一行开启、第二行注释:root使用su切换普通用户就不需要输入密码,允许所有用户间使用su命令进行切换
  • 两行都注释:允许所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码
  • 开启两行:只有root用户和wheel组内的用户才可以使用su命令,whell组是超级管理员的组
  • 第一行注释、第二行开启:表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令,root属于root组

这里模拟第四种情况: 第一行注释、第二行开启

[root@localhost ~]# gpasswd -a fql wheel
正在将用户“fql”加入到“wheel”组中
[root@localhost ~]# vim /etc/pam.d/su

[root@localhost ~]# su zhangsan
密码:
su: 拒绝权限         
[fql@localhost ~]$ su zhangsan 
密码:
[zhangsan@localhost fql]$             #wheel组成员fql可以使用su命令

5. PAM安全认证 

5.1 概述

PAM:Pluggable Authentication Modules,插件式的验证模块,Sun公司于1995 年开发的一种与认证相关的通用框架机制。PAM 只关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的API接口,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证。

5.2 pam相关文件

  • 包名:pam
  • 模块文件目录:/usr/lib64/security/*.so(存放功能模块)
  • 配置文件目录:/etc/pam.d/(存放配置文件)
  • 特定模块相关的设置文件:/etc/security/(功能强大的复杂的配置文件)
  • man 8 模块名:可以查看帮助
  • 应用程序调用PAM模块的配置文件
  1. 主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置
  2. 为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
  3. 注意:如/etc/pam.d存在,/etc/pam.conf将失效,即子模块配置优先级高

5.3 pam工作原理

PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so;PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证。

当用户来访问某一程序的时候,如果这个启用了pam模块,会先去读取配置文件,然后按照配置文件调用模块进行操作。 

5.4 专用配置文件/etc/pam.d/ 格式

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

control控制类型 :

  • required:一票否决,结果失败,但是会继续验证
  • requisite:一票否决,如果失败会立即结束验证,反馈失败;如果成功继续往下走
  • sufficient:验证成功则返回,不再继续,否则忽略结果并继续
  • optional:可选项,后面的模块可能没有

5.5 shell模块 

主要功能是检查有效shell,pam_shells.so模块只允许规定的shell类型通过,使在/etc/shells 文件中存在的类型通过。

案例:不允许使用/bin/csh的用户本地登录(借用su模块添加相关配置)

[root@localhost ~]# usermod -s /bin/csh zhangsan  #修改zhangsan用户shell类型
[root@localhost ~]# vim /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
#/bin/csh                                         #去掉该类型
[root@localhost ~]# su zhangsan
密码:
su: 鉴定故障                                       #zhangsan无法登录

5.6 securetty模块

默认情况下centos是不允许用户使用telnet协议(密码明文传输,不安全)远程登录的,该模块功能为只允许root用户在/etc/securetty列出的安全终端上登陆

案例:CentOS 7允许root在telnet登陆

服务端
[root@localhost ~]# yum install -y telnet-server.x86_64  #安装telnet服务端
[root@localhost ~]# systemctl start telnet.socket        #启动服务
[root@localhost ~]# vim /etc/pam.d/remote                #修改pam模块配置
或者在/etc/securetty文件中加入
root
[root@localhost ~]# systemctl stop firewalld.service     #关闭防火墙
[root@localhost ~]# setenforce 0

客户端
[root@localhost ~]# yum install -y telnet             #安装telnet客户端
[root@localhost ~]# telnet 192.168.190.100            #通过telnet协议远程登录服务端
Trying 192.168.190.100... 
Connected to 192.168.190.100.
Escape character is '^]'.

Kernel 3.10.0-1160.el7.x86_64 on an x86_64
localhost login: root
Password: 
Last login: Sat Jan  6 15:47:48 from 192.168.190.1
[root@localhost ~]#                                   #登录成功

5.7 pam_nologin.so 模块 

如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆。可运用在维护场景下。默认此模块可以对ssh等登录有效,但不影响su登录。

[root@localhost ~]# touch /etc/nologin
[root@localhost ~]# echo "系统维护中" > /etc/nologin
[root@localhost ~]# su fql
[fql@localhost root]$ 

5.8 limit 

ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。 每个进程有自己的limits值,使用ulimit进行修改,立即生效。ulimit只影响shell进程及其子进程,用户登出后失效。可以在profile中加入ulimit的设置,变相的做到永久生效。其配置文件路径为/etc/security/limits.conf。

  • -H 设置硬件资源限制.
  • -S 设置软件资源限制.
  • -a 显示当前所有的资源限制.
  • -c size:设置core文件的最大值.单位:blocks
  • -d size:设置数据段的最大值.单位:kbytes
  • -f size:设置创建文件的最大值.单位:blocks
  • -l size:设置在内存中锁定进程的最大值.单位:kbytes
  • -m size:设置可以使用的常驻内存的最大值.单位:kbytes
  • -n size:设置内核可以同时打开的文件描述符的最大值.单位:n
  • -p size:设置管道缓冲区的最大值.单位:kbytes
  • -s size:设置堆栈的最大值.单位:kbytes
  • -t size:设置CPU使用时间的最大上限.单位:seconds
  • -u size:最大用户进程数
  • -v size:设置虚拟内存的最大值.单位:kbytes
  • unlimited 是一个特殊值,用于表示不限制 
[root@localhost ~]# ulimit -a       #可以看到系统的相关资源限制设置

案例:限制zhangsan用户最多可用打开三个进程,vim /etc/security/limits.conf

[root@localhost ~]# su - zhangsan
'abrt-cli status' timed out
[zhangsan@localhost ~]$ bash
bash: fork: retry: 没有子进程
bash: fork: retry: 没有子进程
[root@localhost ~]# pgrep -l -u zhangsan    #显示zhangsan进程名
54852 bash
54887 bash
54888 bash

案例:修改tcp最大连接数 

[root@localhost ~]# ulimit -n 2000   #设置内核可以同时打开的文件描述符的最大值

[root@localhost ~]# ab -c1025 -n5000 http://192.168.190.100/  #压测
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.190.100 (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests

6. sudo  

6.1 概述

sudo即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。由于su root存在被暴力破解密码的风险,sudo使一般用户不需要知道超级用户的密码即可获得权限,提高了安全性。

6.2 特性

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

6.3 提权操作

visudo:推荐使用,自带语法检查功能 

示例: 

[root@localhost ~]# visudo
zhangsan   ALL=(root)  /usr/bin/mount  /dev/sr0  /mnt/
[zhangsan@localhost ~]$ sudo mount /dev/sr0 /mnt/

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] zhangsan 的密码:
mount: /dev/sr0 写保护,将以只读方式挂载

6.4 别名 

格式: visudo

Host_Alias MYHOSTS = kgc,localhost
User_Alias MYUSERS = zhangsan,wangwu,lisi
Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm 

[zhangsan@localhost ~]$ sudo mount /dev/sr0 /mnt

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] zhangsan 的密码:
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# ping pc2
ping: pc2: 未知的名称或服务
[root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.190.101 pc2                      #定义域名pc2
~
~
~
[root@localhost ~]# ping pc2
PING pc2 (192.168.190.101) 56(84) bytes of data.
64 bytes from pc2 (192.168.190.101): icmp_seq=1 ttl=64 time=1.21 ms
64 bytes from pc2 (192.168.190.101): icmp_seq=2 ttl=64 time=1.67 ms

6.5 子目录

子配置文件优先级大于主配置文件

[root@localhost ~]# vim /etc/sudoers.d/zhangsan         #配置子配置文件
zhangsan ALL= NOPASSWD:ALL                              #允许zhangsan不需要密码做任何操作
  
[zhangsan@localhost ~]$ mount | tail -1
tmpfs on /run/user/1001 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=186708k,mode=700,uid=1001,gid=1001)
[zhangsan@localhost ~]$ sudo mount /dev/sr0 /mnt        #普通用户可以根据子配置文件提权操作
mount: /dev/sr0 写保护,将以只读方式挂载

二、系统引导和登录控制

1. 开关机安全控制

1.1 调整 BIOS引导设置

  • 将第一优先引导设备 (First Boot Device) 设为当前系统所在磁盘。
  • 禁止从其他设备(如光盘、U盘、网络等)引导系统,对应的项设为“Disabled”
  • 将BIOS 的安全级别改为“setup”,并设置好管理密码,以防止未授权的修改

1.2 禁止 Ctrl + Alt + Del 快捷键重启

centos7中默认关闭,可以在/etc/inittab中查看

centos6中需要修改配置文件/etc/init/control-alt-delete.conf,注释后重启:

#start on control-alt-delete

#exec /sbin/shutdown -r now "Control-Alt-Delete pressed"

1.3 grup加密

由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行加密可以实现安全性。

[root@localhost ~]# grub2-setpassword    #centos7可以直接设置密码
Enter password: 
Confirm password: 

通过上述配置,重新开机进入GRUB菜单时,直接按e键将无法修改引导参数若要获得编辑权限,必须先按p键并根据提示输入正确的GRUB密码。 

2. 禁止root用户登录

2.1 禁止通过ssh协议登录root

[root@localhost ~]# vim /etc/ssh/sshd_config

2.2 修改root用户shell类型 

[root@localhost ~]# usermod  -s /sbin/nologin root

三、弱口令检测、端口扫描

1. 弱口令检测——John the Ripper

[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# ls
john-1.8.0.tar.gz  rh
[root@localhost opt]# tar xf john-1.8.0.tar.gz        #解压工具包
[root@localhost opt]# cd john-1.8.0/
[root@localhost john-1.8.0]# ls
doc  README  run  src
[root@localhost src]# cd run/
[root@localhost run]# ls
ascii.chr  digits.chr  john.conf  lm_ascii.chr  mailer  makechr  password.lst  relbench
[root@localhost run]#   yum install -y gcc gcc-c++ make    #安装软件编译工具
[root@localhost run]# cd /opt/john-1.8.0/src          #切换到src子目录
[root@localhost src]# make clean linux-x86-64         #进行编译安装
[root@localhost src]# cp /etc/shadow /opt/shadow.txt
[root@localhost src]# cd /opt/john-1.8.0/run
[root@localhost run]# ./john /opt/shadow.txt          #执行暴力破解
Loaded 3 password hashes with 3 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123              (fql)
123              (zhangsan)
123              (root)

2. 网络扫描NMAP

[root@localhost ~]# yum install -y nmap
[root@localhost ~]# nmap -sT 127.0.0.1
[root@localhost ~]# nmap -sU 127.0.0.1
#分别查看本机开放的TCP端口、UDP端口
[root@localhost ~]# nmap -p 80 192.168.190.0/24
#检测192.168.190.0/24网段有哪些主机提供HTTP服务
[root@localhost ~]# nmap -n -sP 192.168.190.0/24
#检测192.168.190.0/24网段有哪些存活主机

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通信触发流程

该示例方案主要介绍如何通过建立的Modbus或TCP通信来实现触发方案、协议解析、发送事件和以及响应配置等功能。 需求&#xff1a;使用Modbus通信触发指定流程运行。 搭建思路&#xff1a;在接收事件中使用协议组装&#xff0c;比较规则选择上升沿&#xff0c;当接收到的值从其…

JavaWeb——新闻管理系统(Jsp+Servlet)之jsp新闻查询

java-ee项目结构设计 1.dao:对数据库的访问&#xff0c;实现了增删改查 2.entity:定义了新闻、评论、用户三个实体&#xff0c;并设置对应实体的属性 3.filter&#xff1a;过滤器&#xff0c;设置字符编码都为utf8&#xff0c;防止乱码出现 4.service:业务逻辑处理 5.servlet:处…

软件测试|深入解析Docker Run命令:创建和启动容器的完全指南

简介 Docker是一种流行的容器化平台&#xff0c;用于构建、分发和运行应用程序。其中一个最基本且重要的Docker命令是docker run&#xff0c;用于创建和启动容器。本文将详细解析docker run命令的用途、参数和示例&#xff0c;帮助您全面掌握创建和启动容器的过程。 docker r…

前端面试题-nodejs

1.什么是nodejs&#xff0c;它与传统的网页服务器有什么不同&#xff1f; 是什么&#xff1f;nodejs是基于Chrome V8引擎的JavaScript运行环境&#xff0c;它可以使JavaScript代码在服务器上运行。 有什么不同&#xff1f;第一&#xff0c;nodejs采用事件驱动、非阻塞式I/O模型…

k8s的网络

k8s的网络 k8s中的通信模式&#xff1a; 1、pod内部之间容器与容器之间的通信 在同一个pod中的容器共享资源和网络&#xff0c;使用同一个网络命名空间&#xff0c;可以直接通信的 2、同一个node节点之内&#xff0c;不同pod之间的通信 每个pod都有一个全局的真实的ip地址…

日志高亮 | notepad

高亮显示日志 日志文件无法清晰看到关键问题所在? 看到一堆日志头疼?高亮日志可以清晰展示出日志的 ERROR级等各种等级的问题, 一下浏览出日志关键所在 tailspin 项目地址&#xff1a; https://githubfast.com/bensadeh/tailspin 使用Rust包管理器cargo安装 安装 - Cargo 手…

【ASP.NET Core 基础知识】--环境设置

一、简介 1.1 .NET Core SDK 概述 .NET Core SDK&#xff08;Software Development Kit&#xff09;是Microsoft推出的一个开源跨平台框架&#xff0c;用于开发和部署.NET应用程序。它是.NET Core平台的核心组件之一&#xff0c;为开发者提供了在多个操作系统上构建高性能、可…

《数字图像处理》 第11章 表示和描述 学习笔记附部分例子代码(c++opencv)

表示和描述 0. 前言1. 表示1.1 边界追踪1.2 链码1.3 使用最小周长多边形的多边形近似 2. 边界描绘子2.1 一些简单的描绘子![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/45dddc76217e4fde93a11e2631b2a71a.png#pic_center 500x)2.2 形状数2.3 傅里叶描绘子2.4 统计…

智慧地球(AI•Earth)社区成立一周年啦!独家福利与惊喜彩蛋等你来拿!

原文&#xff1a;智慧地球&#xff08;AI•Earth&#xff09;社区成立一周年啦&#xff01; 智慧地球社区 一周年庆典&#x1f38a; 独家福利&#x1f381;与惊喜彩蛋&#x1f389;等你来拿&#xff01; 智慧地球&#xff08;AI•Earth&#xff09;社区自2023年1月11日建立以…

软件测试|Docker Kill/Pause/Unpause命令详细使用指南

简介 Docker是一种流行的容器化平台&#xff0c;提供了各种命令和功能来管理和操作容器。本文将详细介绍Docker中的三个重要命令&#xff1a;kill、pause和unpause。我们将深入了解它们的作用、用法和示例&#xff0c;帮助您更好地理解和使用这些命令。 什么是Docker Kill/Pa…

C++异常处理机制

文章目录 C语言传统的处理错误的方式C异常概念异常的使用自定义异常体系C标准库的异常体系异常的优缺点 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击…

Mysql为什么只能支持2000w左右的数据量?

首先说明一下&#xff1a; MySQL并没有硬性规定只能支持到2000万左右的数据量。 其实&#xff0c;MySQL能够处理的数据量远远超过这个数字。无论是开源社区版还是商业版&#xff0c; MySQL在适当的硬件和配置下&#xff0c;都能够支持非常大的数据集。 通常所说的“MySQL只能…

延迟加载:提升性能的隐形利器

引言 想象一下&#xff0c;你正在玩一款大型电子游戏。如果游戏在启动的时候就加载了所有的关卡、角色和道具&#xff0c;那玩家可能需要等待很长时间才能开始游戏&#xff0c;而且大部分内容可能在游戏的初期都不会被用到。显然&#xff0c;这样的做法既低效又耗时。 而延迟加…

科研学习|论文解读——超准确性反馈:使用眼动追踪来检测阅读过程中的可理解性和兴趣

摘要&#xff1a; 了解用户想要什么信息是信息科学和技术面临的最大挑战。隐式反馈是解决这一挑战的关键&#xff0c;因为它允许信息系统了解用户的需求和偏好。然而&#xff0c;可用的反馈往往是有限的&#xff0c;而且其解释也很困难。为了应对这一挑战&#xff0c;我们提出了…

仿真炫酷烟花+背景音乐-H5代码实现_可直接运行【附完整源码】

文章目录 背景效果实现源码代码解析完整源码下载总结寄语 背景 烟花仿真是一项具有创意和娱乐性质的项目&#xff0c;旨在通过H5技术实现炫酷的烟花效果&#xff0c;并结合背景音乐营造出一个生动、愉悦的视听体验。该项目的目标是通过Web浏览器即时展现精美的烟花效果&#x…

Jackson反序列化的规则 没有无参构造报错问题

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of java.util.function.Supplier. Jackson反序列化的规则 没有无参构造报错问题 &#xff1b; 报错如下&#xff1a; com.fasterxml.jackson.databind.exc.InvalidDefinitionExce…

欧洲地区媒体发稿推广攻略10个利器解析-华媒舍

在当今数字化时代&#xff0c;媒体发稿是企业推广的重要手段之一。尤其是在欧洲地区这个高度发达的市场中&#xff0c;正确地运用媒体发稿推广工具将给企业带来巨大的商机。本文将揭示欧洲地区媒体发稿推广的10个利器&#xff0c;帮助企业更好地利用媒体发布推广信息&#xff0…

通过cpolar在公网访问本地网站

通过cpolar可以轻松将本地网址映射到公网进行访问&#xff0c;下面简要介绍一下实现步骤。 目录 一、cpolar下载 二、安装 三、使用 3.1 登录 3.2 创建隧道 一、cpolar下载 cpolar官网地址&#xff1a;cpolar - secure introspectable tunnels to localhost 通过QQ邮箱…

Python如何求解最长公共子序列

Python-求解两个字符串的最长公共子序列 一、问题描述 给定两个字符串&#xff0c;求解这两个字符串的最长公共子序列&#xff08;Longest Common Sequence&#xff09;。比如字符串1&#xff1a;BDCABA&#xff1b;字符串2&#xff1a;ABCBDAB。则这两个字符串的最长公共子序…

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-https://blog.csdn.net/alex_starsky/category_12467518.html 如何使用大模型查询助手功能&#xff1f;例如调用工具实现网络查询助手功能。目前只有 ChatGLM3-6B 模型支持工具调用&#xff0c;而 ChatGLM3-6B-Base 和 ChatGLM3-6B-32K 模型不支持。 定义好工具的…