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.rhkb.cn/news/232202.html

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

相关文章

python总结高阶-文件

文章目录 文件操作文本文件和二进制文件1 文本文件2 二进制文件 文件操作相关模块创建文件对象open()文本文件的写入基本的文件写入操作常用编码介绍write()/writelines()写入数据close()关闭文件流with语句(上下文管理器) 文本文件的读取read([size])readline()readlines() 二…

数据结构之二叉树

树的简介&#xff1a; 再来看看二叉树的简介&#xff1a; 容易想到p叉树就是每个节点最多有p个子节点的树。 接下来看两种特殊的二叉树&#xff1a; 接下来我们思考两个问题&#xff1a; 1.深度为h的满二叉树一共有多少个节点&#xff1f; 对于这一个问题&#xff0c;我们观…

BDD - Python Behave 用户自定义命令行选项 -D

BDD - Python Behave 用户自定义命令行选项 -D 引言behave -Dbehave -D 应用feature 文件behave.ini 配置文件step 文件执行 引言 日常运行测试用例&#xff0c;有时需要自定义命令行参数&#xff0c;比如不同环境的对应的配置是不一样的&#xff0c;这样就需要传一个环境参数…

2023版本QT学习记录 -11- 多线程的使用(QT的方式)

———————多线程的使用(QT方式)——————— &#x1f384;效果演示 两个线程都输出一些调试信息 &#x1f384;创建多线程的流程 &#x1f384;头文件 #include "qthread.h"&#x1f384;利用多态重写任务函数 class rlthread1 : public QThread {Q_OBJE…

C++程序设计兼谈对象模型(侯捷)笔记

C程序设计兼谈对象模型&#xff08;侯捷) 这是C面向对象程序设计的续集笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 主要内容&#xff1a;涉及到模板中的类模板、函数模板、成员模板以及模板模板参数&#xff0c;后面包含对象模型中虚函数调用&…

【计算机毕业设计】SSM企业OA管理系统

项目介绍 本项目包含管理员与普通员工两种角色&#xff0c; 管理员角色包含以下功能&#xff1a; 岗位管理,部门管理,工龄奖金管理,员工管理,考勤管理,工资查询,职称管理,统计图表,工资项管理,管理员登录等功能。 员工角色包含以下功能&#xff1a; 个人信息管理,工资详情…

基于PHP的花店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的花店管理系统 一 介绍 此花店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。(附带参考设计文档) 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 …

[蓝桥 2023 ]三带一

问题描述 小蓝和小桥玩斗地主&#xff0c;小蓝只剩四张牌了&#xff0c;他想知道是否是“三带一”牌型。 所谓“三带一”牌型&#xff0c;即四张手牌中&#xff0c;有三张牌一样&#xff0c;另外一张不与其他牌相同&#xff0c;换种说法&#xff0c;四张手牌经过重新排列后&am…

使用jmeter从0开始完成性能测试

使用JMeter从0开始完成性能测试 介绍 在软件开发过程中&#xff0c;性能测试是一项关键任务&#xff0c;它可以帮助我们评估系统在不同负载条件下的性能表现&#xff0c;发现潜在的性能瓶颈。JMeter是一款功能强大且易于使用的性能测试工具&#xff0c;它可以帮助我们完成各种…

网络故障排查和流量分析利器-Tcpdump命令

Tcpdump是一个在Unix/Linux系统上广泛使用的命令行网络抓包工具。它能够捕获经过网络接口的数据包&#xff0c;并将其以可读的格式输出到终端或文件中。Tcpdump是一个强大的命令行工具&#xff0c;能够捕获和分析网络数据包&#xff0c;为网络管理员和安全专业人员提供了深入了…

手写视频裁剪框

<!-- 截取框 --><divv-show"isShow"class"crop-box":style"{width: cropWidth px,height: cropHeight px,left: cropX px,top: cropY px,}"ref"cropBox"mousedown"startInteraction"><!-- 内容在这里 --…

mysql 单表 操作 最大条数验证 以及优化

1、背景 开车的多年老司机&#xff0c;是不是经常听到过&#xff0c;“mysql 单表最好不要超过 2000w”,“单表超过 2000w 就要考虑数据迁移了”&#xff0c;“你这个表数据都马上要到 2000w 了&#xff0c;难怪查询速度慢”。 2、实验 实验一把看看… 建一张表 CREATE TABL…

Java BIO、NIO、AIO、Netty知识详解(值得珍藏)

1. 什么是IO Java中I/O是以流为基础进行数据的输入输出的&#xff0c;所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。 在Java类库中&#xff0c;IO部分的内容是很庞大的&#xff0c;因为它涉及的领…

[Ray Tracing: The Rest of Your Life] 笔记

前言 开年第一篇博客~ 整理了三四个小时才整理完orz。 这一部分是光线追踪三部曲的最后一部&#xff0c;主要介绍了蒙特卡洛积分、重要性采样等内容。场景上没有什么大的改变&#xff0c;基本上就是在Cornell Box中渲染的&#xff0c;本篇主要在加速收敛&#xff0c;提升渲染效…

Docker 安装Mysql

目录 Docker Mysql安装 ✨安装和配置mysql ✨远程连接mysql远程连接 MySQL 是世界上最流行的开源数据库。根据 DB-Engines的调查数据&#xff0c;MySQL 是第二受欢迎的数据库&#xff0c;仅次于 Oracle 数据库。MySQL在过去由于性能高、成本低、可靠性好&#xff0c;已经成…

五、HTML 标题

在 HTML 文档中&#xff0c;标题很重要。 一、HTML 标题 标题&#xff08;Heading&#xff09;是通过 <h1> - <h6> 标签进行定义的。<h1> 定义最大的标题。 <h6> 定义最小的标题。 <h1>这是一个标题。</h1> <h2>这是一个标题。&l…

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测 目录 分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 基于SVM-RFE-LSTM的特征…

bootstrap5实现宠物商店网站 Cat-Master

一、需求分析 宠物商店网站是指专门为宠物商店或宠物用品商家而建立的在线平台。这种网站的功能通常旨在提供以下服务&#xff1a; 产品展示&#xff1a;宠物商店网站通常会展示宠物食品、玩具、床上用品、健康护理产品等各种宠物用品的图片和详细信息。这样&#xff0c;潜在的…

MybatisPlus—快速入门

目录 1.使用MybatisPlus的基本步骤 1.1引入MybatisPlus的起步依赖 1.2 定义Mapper 2.MybatisPlus常用注解 2.1 TableName 2.2 TableId 2.3 TableField 2.4 小结 3. 常用配置 4. 总结 1.使用MybatisPlus的基本步骤 1.1引入MybatisPlus的起步依赖 MyBatisPlus官方提…

安徽省暨合肥市“希望工程·梦想计划”小盖茨机器人捐赠启动仪式举行

1月5日&#xff0c;安徽省暨合肥市“希望工程梦想计划”小盖茨机器人捐赠启动仪式在合肥市一六八玫瑰园学校东校区举行。共青团安徽省委副书记叶征&#xff0c;北京儒布特教育科技有限公司董事牛俊明&#xff0c;北京儒布特教育科技有限公司市场总监高进&#xff0c;安徽省青基…