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

centos 安全配置基线

CentOS 是一个广泛使用的操作系统,为了确保系统的安全性,需要遵循一系列的安全基线。以下是详细的 CentOS 安全基线配置建议:

通过配置核查,CentOS操作系统未安装入侵防护软件,无法检测到对重要节点进行入侵的

解决方案:

  1. 安装入侵防护软件:

    • 首先,您需要选择一款入侵防护软件,如TripwireAIDEOSSEC

    • 使用yum安装所选择的软件,例如:sudo yum install tripwire

  2. 配置入侵防护软件:

    • 根据所选软件的文档进行配置,设置密钥文件、数据库和检查规则。

    • 初始化数据库并生成密钥文件。

    • 定义要监控的文件和目录的规则。

  3. 定期更新检查策略:

    • 根据系统使用情况和安全需求,定期更新检查策略和入侵防护软件。

  4. 监控和报警:

    • 软件会定期检查文件的完整性,并在发现异常时报告。

    • 配置邮件或其他通知机制来接收警报。

示例命令(以Tripwire为例):

# 安装Tripwire

sudo yum install tripwire

# 初始化Tripwire配置

sudo tripwire --init

# 配置Tripwire(编辑twpol.txt和site.pol等文件)

# 生成密钥对

sudo tripwire --genkey

# 建立数据库

sudo tripwire --create-db

# 之后,可以定期使用以下命令检查入侵:

sudo tripwire --check

确保检查并理解所选入侵防护软件的具体配置和使用说明。

一、系统防火墙及SE系统

1. 系统自带防火墙iptables(Centos6)

防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。
  一般而言,防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止)。当防火墙的默认策略为拒绝时(堵),就要设置允许规则(通),否则谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用

基础命令
  • 启动: service iptables start
  • 关闭: service iptables stop
  • 查看状态:iptables -V
  • 重启 : service iptables restart
查看防火墙设置

主要分为5种规则类型数据包:
  进行路由选择前处理数据包(PREROUTING);
  处理流入的数据包(INPUT);
  处理流出的数据包(OUTPUT);
  处理转发的数据包(FORWARD);
  进行路由选择后处理数据包(POSTROUTING)

使用命令查看防火墙设置
iptables -L
    使用命令清除防火墙
    iptables -F
    
      设置防火墙策略

      使用iptables命令进行添加删减。

      开放指定的端口
      iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT   #允许本地回环接口(即运行本机访问本机)
      iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   #允许已建立的或相关连的通行
      iptables -A OUTPUT -j ACCEPT   #允许所有本机向外的访问
      iptables -A INPUT -p tcp --dport 22 -j ACCEPT   #允许访问22端口
      iptables -A INPUT -p tcp --dport 80 -j ACCEPT   #允许访问80端口
      iptables -A INPUT -p tcp --dport 21 -j ACCEPT   #允许ftp服务的21端口
      iptables -A INPUT -p tcp --dport 20 -j ACCEPT   #允许FTP服务的20端口
      iptables -A INPUT -j reject   #禁止其他未允许的规则访问
      iptables -A FORWARD -j REJECT   #禁止其他未允许的规则访问
      
        屏蔽IP
        iptables -I INPUT -s 123.45.6.7 -j DROP   #屏蔽单个IP的命令
        iptables -I INPUT -s 123.0.0.0/8 -j DROP   #封整个段即从123.0.0.1到123.255.255.254的命令
        iptables -I INPUT -s 124.45.0.0/16 -j DROP   #封IP段即从123.45.0.1到123.45.255.254的命令
        iptables -I INPUT -s 123.45.6.0/24 -j DROP   #封IP段即从123.45.6.1到123.45.6.254的命令
        

          或者直接在路径/etc/sysconfig下,对文件iptables编辑。

          配置完成记得重启防火墙命令

          2. 系统自带防火墙firewalled(Centos7)

          基础命令
          • 启动: systemctl start firewalld
          • 重启: systemctl restart firewalld
          • 关闭: systemctl stop firewalld
          • 查看状态: systemctl status firewalld
          • 开机禁用 : systemctl disable firewalld
          • 开机启用 : systemctl enable firewalld

          前台可视化界面-防火墙设置也可以设置

          3. 开启SELinux服务(Centos7)

          SELinux(Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。RHEL7系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。

          简单概述下基本的三种安全访问控制类型

          • MAC(强制访问控制类型)
          • DAC(自主访问控制类型) --通常就是ACL策略居多
          • RABC(基于角色访问控制类型)

          安全性MAC>RABC>DAC

          SELinux 有三种工作模式,分别是

          enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中,并且自动拦截

          permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中,只告警不拦截。一般为调试用。

          disabled:关闭 SELinux。不拦截不告警。

          配置文件路径:/etc/selinux,通过查看config,了解目前运行状态

          查看命令
          cat config
          

            或者使用命令进行查询

            [root@localhost selinux]# getenforce 
            Enforcing
            [root@localhost selinux]#
            临时修改命令(不用重启机器):[root@localhost selinux]# setenforce 0  --0设为宽容莫斯
            [root@localhost selinux]# getenforce 
            Permissive
            [root@localhost selinux]# setenforce 1  --1设为强制模式
            [root@localhost selinux]# getenforce 
            Enforcing
            [root@localhost selinux]#
            

              二、身份鉴别

              1.设置密码复杂度策略

              通过设置/etc/login.defs文件,进行密码策略设置

              PASS_MAX_DAYS 90
              

                #密码最大有效期

                PASS_MIN_DAYS 2
                

                  #两次修改密码的最小间隔时间

                  PASS_MIN_LEN 12
                  

                    #密码最小长度

                    PASS_WARN_AGE 7
                    

                      #密码过期前多少天开始提示
                      上述对新增用户有效,如需修改现有策略,需使用
                      chage命令

                      2.设置登录策略

                      使用cracklib模块设置密码复杂度
                      通过命令

                      rpm -qa|grep cracklib --查看服务是否运行
                      
                        (1)修改/etc/pam.d/system-auth,修改复杂度策略。

                        centos 6 找到 password requisite pam_cracklib.so这么一行替换成如下:

                        password requisite pam_cracklib.so retry=3 difok=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
                        

                          centos 7 找到password requisite pam_pwquality.so这么一行替换成如下:

                          password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
                          

                            参数含义:
                            #retry 允许重试的次数

                            #difok=N:新密码必需与旧密码不同的位数 difok=3 新密码必须与旧密码有3位不同

                            #ucredit=N 当N>0时表示新密码中大写字母出现的最多次数;当N<0时表示新密码中大写字母出现最少次数

                            #lcredit=N 当N>0时表示新密码中小写字母出现的最多次数;当N<0时表示新密码中小写字母出现最少次数

                            #dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字. dcredit=-1 密码中最少有1个数字

                            #ocredit=N:特殊字母的个数 ocredit=-1 密码中至少有1个特殊字符

                            #enforce_for_root 确保即使是root用户设置密码,也应强制执行复杂性策略。

                            (2)记录用户登录失败次数并锁定

                            /etc/pam.d/system-auth“#%PAM-1.0”下面一行加入
                            auth required pam tally2.so onerr=fail deny=10 no magic root unlock time=300
                            注意:一定要加在#%PAM-1.0下面一行

                            参数说明:

                            • deny[=n] 最大尝试次数,超过锁定
                            • unlock_time 解锁时间
                            • even_deny_root 同时限制root用户
                            • root_unlock_time[=n] 设定root锁定后,多少时间解锁
                            • quiet 不对已锁定用户发出提示消息
                              root策略建议谨慎设置,否则很容易导致无法解锁root

                            设置了unlock_time会自动解锁。否则需要手动解锁。

                            运行命令pam_tally2 -u 用户 -r

                            (3)如果启用了SSH远程登录,可以通过命令看配置
                            more /etc/ssh/sshd_config
                            

                              设置LoginGraceTime 15m #账号锁定时间15分钟
                              MaxAuthTries 3 #账号锁定阈值

                              三、访问控制

                              1.设置root用户ssh登录策略

                              禁止root用户远程ssh登录

                              通过修改 /etc/ssh/sshd_config,将参数修改#PermitRootLogin no
                              重启ssh服务

                              service sshd restart
                              

                                2.禁止无用的系统用户登录

                                通过命令 usermod -s /sbin/nologin 用户 --禁止用户远程登录
                                通过命令 usermod -s /bin/bash 用户名 --恢复允许用户远程登录
                                查看/etc/passwd 表示用户是否可以登录。

                                3.检查是否存在除root以外的UID=0的用户

                                通过命令 awk -F: '($3==0){print $1}' /etc/passwd --输出当前uid=0的用户

                                4.允许或禁止用户或组通过ssh登录

                                设置ssh用户白名单、黑名单

                                vi /etc/ssh/sshd_config
                                

                                  增加用户(允许、白名单)
                                  AllowUsers 用户1 用户2

                                  添加用户组
                                  AllowGroups 组1 组2

                                  PS:取交集,意思两个同时允许才可以。其他禁止

                                  取消用户(禁止、黑名单)
                                  DenyUsers 用户1

                                  DenyGroups 组1
                                  PS:取并集,有一个设置了不允许都会不允许。

                                  5.检查新建文件系统权限默认值

                                  通过umask,权限掩码值检查当前用户新建文件、文件夹默认权限。root用户正常是022。
                                  022的意思是,用文件夹最大权限777(rwxrwxrwx)-当前设置权限755(rwx-r-xr-x) = 022,为什么文件夹默认配置了执行-x权限,因为文件夹没执行的话进不去,就没意义了。
                                  而文件权限默认都没有执行,所以就是默认最大666(rw-rw-rw)-644(rw-r–r–=002)。
                                  普通用户默认值是002

                                  6.查看重点文件权限是否合理

                                  如/etc/shadow /etc/passwd(744)
                                  /etc/group
                                  /etc/inittab
                                  /etc/lilo.conf
                                  /etc/grub.conf
                                  /etc/xinetd.conf
                                  /etc/crontab
                                  /etc/securetty
                                  /etc/rc.d/init.d
                                  /var/log/messages
                                  /var/log/wtmp
                                  /var/run/utmp
                                  /var/spool/cron
                                  /usr/sbin/init

                                  /etc/login.defs(644)
                                  /etc/*.conf
                                  /sbin/bin
                                  /etc/init.d
                                  /etc/xinetd.d 等等

                                  四、安全审计

                                  本地安全审计日志功能是否正常打开运行
                                  安装第三方工具等

                                  1. 查看进程运行是否正常

                                  [root@localhost selinux]# ps -ef |grep syslogd --查看进程服务情况
                                  [root@localhost selinux]# ps aux|grep syslogd
                                  [root@localhost selinux]# ps -ef|grep auditd  --查看守护进程情况
                                  

                                    2.系统默认日志记录范围是否覆盖

                                    查看/etc/rsyslog.conf配置文件。

                                    3. 查看系统登录日志

                                    命令lastlog --查询登录用户、端口、时间等
                                    命令last -x --显示系统关闭、用户登录和退出的历史
                                    命令lastb --列出失败尝试的登录信息

                                    五、入侵防范

                                    能记录、检测到入侵行为,能记录入侵者ip、主机名、时间等。建议有条件安装第三方设备如HIDS、NIDS等。

                                    1. 查看自身入侵可疑日志

                                    通过查看日志,可疑识别非法访问或可疑的暴力破解。

                                     more /var/log/secure | grep fail
                                    

                                      2. 最小安装原则

                                      3. 检查运行服务

                                      命令service --status-all --检查是否有非必要服务,如ftp、smtp等

                                      4. 检查服务运行情况

                                      netstat-lp(查看开启服务)
                                      netstat -an(查看开启的端口)
                                      netstat-anlp(查看开启的端口及服务)

                                      六、资源控制

                                      1.TCP Wrappers程序管控

                                      通过设置/etc/hosts.allow/etc/hosts.deny文件

                                      顺序:
                                      1./etc/hosts.allow
                                      2./etc/hosts.deny
                                      3.以上都不符合,则放行

                                      /etc/hosts.allow#ssh允许单个ip
                                      sshd:192.168.220.1#ssh允许ip段
                                      sshd:192.168.220.#telnet允许单个ip
                                      in.telnetd:192.168.220.1#telnet允许ip段
                                      in.telnetd:192.168.221.
                                      
                                        /etc/hosts.deny
                                        sshd:ALL
                                        in.telnetd:ALL
                                        #禁止相关服务
                                        

                                          2.设置登录超时时间

                                          通过命令查看cat /etc/profile |grep TMOUT

                                          vi /etc/profile 添加export TMOUT=600 --600秒超时

                                          3. 设置普通用户最大进程数、CPU、内存等

                                          进入 /etc/security/limits.conf 文件下,

                                          增加代码

                                          roxy soft nproc 10240 
                                          roxy hard nproc 10240 
                                          roxy soft nofile 10240 
                                          roxy hard nofile 10240
                                          

                                            注:roxy 为需要修改线程数的用户名,10240 为设置的进程数和文件数限制,可根据需要修改。

                                            也可以用ulimit命令

                                            4.适当关闭外设-U盘、光盘等

                                            vi /etc/modprobe.d/blacklist.conf里添加一行:

                                            blacklist usb-storage
                                            

                                              执行命令生效modprobe -r usb-storage

                                              相关文章:

                                              centos 安全配置基线

                                              CentOS 是一个广泛使用的操作系统&#xff0c;为了确保系统的安全性&#xff0c;需要遵循一系列的安全基线。以下是详细的 CentOS 安全基线配置建议&#xff1a; 通过配置核查,CentOS操作系统未安装入侵防护软件,无法检测到对重要节点进行入侵的 解决方案&#xff1a; 安装入侵…...

                                              备赛蓝桥杯之第十五届职业院校组省赛第一题:智能停车系统

                                              提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…...

                                              力扣 Hot 100 题解 (js版)更新ing

                                              &#x1f6a9;哈希表 ✅ 1. 两数之和 Code&#xff1a; 暴力法 复杂度分析&#xff1a; 时间复杂度&#xff1a; ∗ O ( N 2 ) ∗ *O(N^2)* ∗O(N2)∗&#xff0c;其中 N 是数组中的元素数量。最坏情况下数组中任意两个数都要被匹配一次。空间复杂度&#xff1a;O(1)。 /…...

                                              DeepSeek-R1:性能对标 OpenAI,开源助力 AI 生态发展

                                              DeepSeek-R1&#xff1a;性能对标 OpenAI&#xff0c;开源助力 AI 生态发展 在人工智能领域&#xff0c;大模型的竞争一直备受关注。最近&#xff0c;DeepSeek 团队发布了 DeepSeek-R1 模型&#xff0c;并开源了模型权重&#xff0c;这一举动无疑为 AI 领域带来了新的活力。今…...

                                              CY T 4 BB 5 CEB Q 1 A EE GS MCAL配置 - MCU组件

                                              1、ResourceM 配置 选择芯片信号: 2、MCU 配置 2.1 General配置 1) McuDevErrorDetect: - 启用或禁用MCU驱动程序模块的开发错误通知功能。 - 注意:采用DET错误检测机制作为安全机制(故障检测)时,不能禁用开发错误检测。2) McuGetRamStateApi - enable/disable th…...

                                              传输层协议TCP与UDP:深入解析与对比

                                              传输层协议TCP与UDP&#xff1a;深入解析与对比 目录 传输层协议TCP与UDP&#xff1a;深入解析与对比引言1. 传输层协议概述2. TCP协议详解2.1 TCP的特点2.2 TCP的三次握手与四次挥手三次握手四次挥手 2.3 TCP的流量控制与拥塞控制2.4 TCP的可靠性机制 3. UDP协议详解3.1 UDP的…...

                                              校园商铺管理系统设计与实现(代码+数据库+LW)

                                              摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自…...

                                              【JavaWeb学习Day13】

                                              Tlias智能学习系统 需求&#xff1a; 部门管理&#xff1a;查询、新增、修改、删除 员工管理&#xff1a;查询、新增、修改、删除和文件上传 报表统计 登录认证 日志管理 班级、学员管理&#xff08;实战内容&#xff09; 部门管理&#xff1a; 01准备工作 开发规范-…...

                                              springboot使用tomcat浅析

                                              springboot使用tomcat浅析 关于外部tomcat maven pom配置 // 打包时jar包改为war包 <packaging>war</packaging>// 内嵌的tomcat的scope标签影响范围设置为provided&#xff0c;只在编译和测试时有效&#xff0c;打包时不带入 <dependency><groupId>…...

                                              rust 自定义错误(十二)

                                              错误定义&#xff1a; let file_content parse_file("test.txt");if let Err(e) file_content {println!("Error: {:?}", e);}let file_content parse_file2("test.txt");if let Err(e) file_content {match e {ParseFileError::File > …...

                                              如何使用CRM数据分析优化销售和客户关系?

                                              嘿&#xff0c;大家好&#xff01;你有没有想过为什么有些公司在市场上如鱼得水&#xff0c;而另一些却在苦苦挣扎&#xff1f;答案可能就藏在他们的销售策略和客户关系管理&#xff08;CRM&#xff09;系统里。今天我们要聊的就是如何通过有效的 CRM 数据分析来提升你的销售额…...

                                              导出地图为pdf文件

                                              有时我们只是想创建能共享的pdf文件,而不是将地图打印出来,arcpy的ExportToPDF()函数可以实现该功能. 操作方法: 1.在arcmap中打开目标地图 2.导入arcpy.mapping模块 import arcpy.mapping as mapping 3.引用当前活动地图文档,把该引用赋值给变量 mxd mapping.MapDocumen…...

                                              Qt 控件与布局管理

                                              1. Qt 控件的父子继承关系 在 Qt 中&#xff0c;继承自 QWidget 的类&#xff0c;通常会在构造函数中接收一个 parent 参数。 这个参数用于指定当前空间的父控件&#xff0c;从而建立控件间的父子关系。 当一个控件被设置为另一控件的子控件时&#xff0c;它会自动成为该父控…...

                                              电力场效应晶体管(电力 MOSFET),全控型器件

                                              电力场效应晶体管&#xff08;Power MOSFET&#xff09;属于全控型器件是一种电压触发的电力电子器件&#xff0c;一种载流子导电&#xff08;单极性器件&#xff09;一个器件是由一个个小的mosfet组成以下是相关介绍&#xff1a; 工作原理&#xff08;栅极电压控制漏极电流&a…...

                                              一文讲解Java中的重载、重写及里氏替换原则

                                              提到重载和重写&#xff0c;Java小白应该都不陌生&#xff0c;接下来就通过这篇文章来一起回顾复习下吧&#xff01; 重载和重写有什么区别呢&#xff1f; 如果一个类有多个名字相同但参数不同的方法&#xff0c;我们通常称这些方法为方法重载Overload。如果方法的功能是一样…...

                                              StarRocks常用命令

                                              目录 1、StarRocks 集群管理&配置命令 2、StarRocks 常用操作命令 3、StarRocks 数据导入和导出 1、StarRocks 集群管理&配置命令 查询 FE 节点信息 SHOW frontends; SHOW PROC /frontends; mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW PROC /dbs;"…...

                                              Pandas基础02(DataFrame创建/索引/切片/属性/方法/层次化索引)

                                              DataFrame数据结构 DataFrame 是一个二维表格的数据结构&#xff0c;类似于数据库中的表格或 Excel 工作表。它由多个 Series 组成&#xff0c;每个 Series 共享相同的索引。DataFrame 可以看作是具有列名和行索引的二维数组。设计初衷是将Series的使用场景从一维拓展到多维。…...

                                              Meta-CoT:通过元链式思考增强大型语言模型的推理能力

                                              大型语言模型&#xff08;LLMs&#xff09;在处理复杂推理任务时面临挑战&#xff0c;这突显了其在模拟人类认知中的不足。尽管 LLMs 擅长生成连贯文本和解决简单问题&#xff0c;但在需要逻辑推理、迭代方法和结果验证的复杂任务&#xff08;如高级数学问题和抽象问题解决&…...

                                              【时时三省】(C语言基础)二进制输入输出

                                              山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 二进制输入 用fread可以读取fwrite输入的内容 字符串以文本的形式写进去的时候&#xff0c;和以二进制写进去的内容是一样的 整数和浮点型以二进制写进去是不一样的 二进制输出 fwrite 字…...

                                              【go语言】数组和切片

                                              一、数组 1.1 什么是数组 数组是一组数&#xff1a;数组需要是相同类型的数据的集合&#xff1b;数组是需要定义大小的&#xff1b;数组一旦定义了大小是不可以改变的。 1.2 数组的声明 数组和其他变量定义没有什么区别&#xff0c;唯一的就是这个是一组数&#xff0c;需要给…...

                                              10.片元

                                              **片元&#xff08;Fragment&#xff09;**是渲染管线中的一个重要概念&#xff0c;可以理解为“潜在的像素”。用通俗易懂的方式来解释&#xff1a; 通俗解释&#xff1a;片元就像候选的颜料点 想象你是一个画家&#xff0c;正在画一幅画&#xff1a; 片元是候选的颜料点&…...

                                              SQL-leetcode—1179. 重新格式化部门表

                                              1179. 重新格式化部门表 表 Department&#xff1a; ---------------------- | Column Name | Type | ---------------------- | id | int | | revenue | int | | month | varchar | ---------------------- 在 SQL 中&#xff0c;(id, month) 是表的联合主键。 这个表格有关…...

                                              k8s简介,k8s环境搭建

                                              目录 K8s简介环境搭建和准备工作修改主机名&#xff08;所有节点&#xff09;配置静态IP&#xff08;所有节点&#xff09;关闭防火墙和seLinux&#xff0c;清除iptables规则&#xff08;所有节点&#xff09;关闭交换分区&#xff08;所有节点&#xff09;修改/etc/hosts文件&…...

                                              Docker常用知识点问题

                                              1.dockerfile基础命令及作用 —copy和add区别 —为什么要指定workdir —expose作用&#xff0c;能不能不用&#xff0c;不用会导致什么情况&#xff1f; —env&#xff0c;不用怎么打镜像 —from 2.dockerfile编写规范 —jdk版本 —依赖问题 —shell指令引用 —字体和时区配置 …...

                                              基于微信小程序的网上订餐管理系统

                                              作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

                                              Java使用FFM API调用SDL

                                              首发于Enaium的个人博客 首先我们需要创建一个Gradle项目&#xff0c;之后设置项目的JDK版本&#xff0c;设置为22及以上版本。 plugins {kotlin("jvm") version "2.1.0" }group "cn.enaium" version "1.0-SNAPSHOT"repositories {…...

                                              java入门基础笔记语法篇(3)

                                              一、 注释 什么是注释 注释定义&#xff1a;注释是写在程序中对代码进行解释说明的文字&#xff0c;方便自己和他人查看以理解程序。 Java注释的三种写法&#xff1a; 单行注释&#xff1a;以“//”开头&#xff0c;注释内容只能写一行。多行注释&#xff1a;以“/*”开头&…...

                                              【数据结构】深入解析:构建父子节点树形数据结构并返回前端

                                              树形数据结构列表 一、前言二、测试数据生成三、树形代码3.1、获取根节点3.2、遍历根节点&#xff0c;递归获取所有子节点3.3、排序3.4、完整代码 一、前言 返回前端VO对象中&#xff0c;有列情况列表展示需要带树形结构&#xff0c;例如基于RBAC权限模型中的菜单返回&#xf…...

                                              JAVA 使用反射比较对象属性的变化,记录修改日志。使用注解【策略模式】,来进行不同属性枚举值到中英文描述的切换,支持前端国际化。

                                              1.首先定义一个接口&#xff0c;接口中有两个方法&#xff0c;分别是将属性转换成英文描述和中文描述。 其实就是将数据库中记录的 0 1 &#xff0c;转换成后面的描述 这边定义了中文转换为默认方法&#xff0c;是因为有些属性不需要进行中文转换&#xff0c;或者该属性的枚举…...

                                              第27章 测试驱动开发模式:深入测试技术

                                              写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...