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

KylinSP3 | 防火墙和麒麟安全增强设置KySec

一、系统防火墙原理

麒麟操作系统从V10版本开始,默认使用了Firewalld防火墙,Firewalld是能提供动态管理的防火墙,支持网络/防火墙区域,用于定义网络连接或接口的信任级别。支持IPv4和IPv6防火墙设置、以太网桥接和IP集。将运行时配置和永久配置选项分开,为服务或应用程序提供了直接添加防火墙规则的接口。

Firewalld的一个很大的优势的它是动态管理的,不需要重启防服务的情况下也可以更改防火墙配置,也不会中断服务器的任何连接。

Linux是通过内核中的 netfilter 来实现网络数据包的过滤管理(查看、记录、修改、丢弃、拒绝)。netfilter 代码被编译到 Linux 内核中,并执行实际的包过滤,用户没有办法直接鱼 netfilter 交互,需要某种帮助程序作为桥梁来与 netfilter 交互。

与 netfilter 交互的方法:

  • 管理员编写内核模块程序与 netfilter 交互
  • ipchains (Linux kernel 2.4)
  • iptables (作为 Linux kernel 2.6 版本的1个特性引入)
  • nftables

Firewalld可以理解为就是iptables的前端工具。
在这里插入图片描述

Netfilter是Linux核心层内部的一个数据包处理模块,Linux平台下的包过滤防火墙

  • 网络地址转换(Network Address Translate)
  • 数据包内容修改
  • 数据包过滤的防火墙功能

Netfilter专业术语

  • 表tables:相同功能规则的集合
  • 链chains:关卡
  • 规则policy:匹配条件、处理动作

内核空间的转发流程图
在这里插入图片描述

1. 链chains

链是一组规则的集合,在配置规则的时候,要注意规则的顺序。Firewalld会根据规则的先后进行匹配,当匹配到合适项时,会停止匹配。在没有匹配项时,会应用缺省规则。
在这里插入图片描述

2. 表table

表是由链组成的,四张表的优先级由高到低的顺序为:raw --> mangle --> nat --> filter

  • raw:关闭nat表上启用的连接追踪机制【iptable_raw】
  • mangle表:拆解报文,做出修改,并重新封装【iptable_mangle】
  • nat表:网络地址转换功能【内核模块:iptable_nat】
  • filter表:负责过滤【内核模块:iptable_filter】

如果想要Linux支持转发,需要开启内核的ip_forward功能。可以临时修改对应文件/proc/sys/net/ipv4/ip_forward。

ip_forward默认是关闭的,可以通过查看/proc/sys/net/ipv4/ip_forward文件查看

cat /pro/sys/net/ipv4/ip_forward

在这里插入图片描述

临时启用IP转发功能:使用echo命令修改文件以开启IP转发,直接使用vim是无法编辑的

echo 1 > /proc/sys/net/ipv4/ip_forward

永久启用IP转发功能:修改内核文件,修改 ip_forward 的值

vim /etc/sysctl.conf
# 修改下列选项值为1
net.ipv4.ip_forward=1

在这里插入图片描述

sysctl -p		# 生效配置文件

在这里插入图片描述

二、 Firewalld防火墙控制

防火墙的类别

  • 静态防火墙
    • 只要修改规则就要进行所有规则的重新载入,例如:iptables service
  • 动态防火墙
    • 任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到 iptables ,例如:firewalld

Firewalld提供了一个 daemon 和 service,还有命令行和图形界面配置工具,它仅仅是替代了 iptables service部分,其底层还是使用 iptables 作为防火墙规则管理入口。真正利用规则进行数据包过滤是由内核中的 netfilter 子系统负责。

1. 区域zone

Firewalld将网卡对应到不同的区域(zone),zone默认一共有9个

  • 不同区域之间的差异是它对待数据包的默认行为不同,根据区域名字我们可以很直观的知道该区域的特征,在银河麒麟操作系统中,默认区域为public。
  • Firewalld默认每个服务都是拒绝,需要去设置才能放行

通过查看/usr/lib/firewalld/zones目录可以看到系统预先配置的区域和服务,zones文件都是xml格式

在这里插入图片描述

Firewalld区域(zone)

区域zone默认策略规则适用区域
trusted(信任)接受任何网络连接,允许所有数据包进出内部网络
home(家庭)流量与ssh、mdns、ipp-client、samba-client、dhcpv6-client服务相关允许进入家庭网络
Internal(内部)等同于home区域内部网络
work(工作)仅流量与ssh、ipp-client、dhcpv6-client服务相关允许进入工作区
public(公共)只有经过选取的连接、流量与ssh、dhcpv6-client服务相关允许进入公共区域
external(外部)流量与ssh服务相关允许进入启用伪装功能的外部网
dmz(非军事区)可以公开访问、可以有限的进入内部网络、流量与ssh服务相关允许进入,安全级别位于内网与外网间(停火区域)允许公网访问的服务器所在区域
block(限制)任何接接收的网络连接都被拒绝保护区域

2. 图形界面修改防火墙设置

在这里插入图片描述
在这里插入图片描述

3. 命令行界面修改防火墙设置

Firewalld基本命令

命令说明
systemctl start firewalld开启防火墙
systemctl enable firewalld开机自启防火墙
systemctl stop firewalld关闭防火墙
systemctl disable firewalld开机自动关闭防火墙
firewalld-cmd --state | systemclt status firewalld查看防火墙状态
firewalld-cmd --get-active-zones查看防火墙管理的设备
firewalld-cmd --get-default-zone查看防火墙生效的区域
firewalld-cmd --get-zones查看防火墙所有区域
firewalld-cmd --zone=public --list-all列出关于public区域的服务设置
firewalld-cmd --get-services列出可使用的服务
firewalld-cmd --set-default-zone=trusted修改默认区域为trusted
firewalld-cmd --list-all-zones列出所有的区域
firewalld-cmd --set-default-zone=dmz设置防火墙的区域
firewalld-cmd --set-default-zone=dmz查看特定区域的信息

修改安全策略

命令说明
firewalld-cmd --add-service=https临时添加服务(默认的区域)
firewalld-cmd --permanent --add-service=https永久添加服务(默认的区域)
firewalld-cmd --add-port=80/tcp临时添加端口
firewalld-cmd --remove-interface=eth0删除接口
firewalld-cmd --permanent --change-interface=eth1 --zone=dmz永久更改接口区域
firewalld-cmd --remove-souce=192.168.10.1 --zone=block临时拒绝主机192.168.10.1的所有网络连接
firewalld-cmd --remove-source=192.168.10.1 --zone=block --permanent永久移除限制
firewalld-cmd --complete-reload中断连接,重启防火墙策略
firewalld-cmd --reload不中断连接,重启防火墙策略
firewalld-cmd --direct --get-all-rules查看设置的规则

[Step1]: Firewalld服务默认为开机自启,可以通过命令查看

在这里插入图片描述

[Step2]: 当使用 firewalld-cmd 命令时,如果拼写错误会有智能提示

firewalld-cmd --list-zone		# 查看防火墙所有区域,正确命令为[ --list-zones ]

在这里插入图片描述

[Step3]: 防火墙配置文件可以手动修改,修改后需要重启防火墙或重新加载生效

vim /etc/firewalld/zones/public.xml# 允许http服务通过
<service name="http">

在这里插入图片描述

firewall-cmd --reload		# 重新加载防火墙,不会中断用户连接
firewall-cmd --list-services --zone=public		# 查看防火墙放行的服务,可以看到多出http

在这里插入图片描述

[Step4]: 当防火墙出现严重问题时,如:防火墙规则设置正确,但却出现状态信息问题和无法建立连接

firewall-cmd --complete-reload		# 重新加载防火墙并中断用户连接

4. 服务配置文件

在/usr/lib/firewalld/services目录下保存了daemon文件,每个文件对应一项具体的网络服务。

  • 与之对应的配置文件中记录了各项服务所使用的tcp/udp端口,当默认提供的服务不够用或需要自定义某项服务的端口时,我们需要将 service 配置文件放置在 /etc/firewalld/services目录中
  • 每加载一项已设置好的 service 配置就意味着开放对应端口访问
  • 请勿修改/usr/lib/firewalld/services,只有/etc/firewalld/services的文件可以被编辑

查看ssh服务的配置文件内容

vim /usr/lib/firewalld/services/ssh.xml

在这里插入图片描述

如果想修改特定服务,可以将该服务配置文件复制到/etc/firewalld/services/目录下

系统会优先读取/etc/firewalld里面的文件,其次读取/usr/lib/firewalld/services/中的文件,为了方便管理和修改,建议将文件复制到/etc/firewalld/services/目录下。

cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services

添加自定义服务:添加8080端口

# 随便复制一个配置文件充当模板
cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/tcp8080.xml
# 编辑新配置文件,修改后内容如下图所示
vim /etc/firewalld/services/tcp8080.xml

在这里插入图片描述

# 将新添加的服务文件添加到 public 区域配置文件中
vim /etc/firewalld/zones/public.xml# 末尾追加一行
<service name="tcp8080"/>

在这里插入图片描述

firewall-cmd --reload		# 重新加载防火墙

验证:可以通过8080访问服务器上的web服务
在这里插入图片描述

三、麒麟安全增强设置

1. 管理员分权机制(管理员权限拒绝滥用)

存在的问题

  • 超级管理员权限具有所有权限【权限不受限】
  • 系统容易发生错误【当超级管理员误删除关键文件】
  • 病毒木马容易入侵【提权后可以肆意攻击,存在安全隐患】

管理员分权的优势

  • 将超级管理员的权限拆分
  • 三个管理员相互合作、互相制约【三权分立】
  • 避免误操作引起的系统错误
  • 避免权限过大引起的安全隐患

2. 典型实施机制(进程和数据安全隔离)

存在的问题

  • 进程可以随意访问数据
  • 数据安全性、机密性差

进程和数据安全隔离的优势

  • 对进程可以划分不同类型域
  • 对文件数据可以划分不同的类型域
  • 数据隔离

3. 多级安全机密性机制(等级划分、安全机密)

存在的问题

  • 无等级划分、访问数据限制性较低
  • 低级别进程可以访问部分数据
  • 数据安全性、机密性差

等级划分、安全机密的优势

  • 禁止上读下写
  • 保证数据机密性

4. Kysed机制(提出基于标记的软件执行控制机制)

  • 未认证非法外来、被篡改程序拒绝执行
  • 外来内核模块拒绝加载
  • 非法来源程序拒绝安装
  • 保护文件拒绝篡改
  • 保护内核模块拒绝卸载
  • 未授权应用拒绝联网
  • 保护进程拒绝被杀死

5. 支持国密算法(支持软硬国密算法)

存在的问题

  • 不支持、不合规

支持软硬算法的优势

  • 符合国家密码主管部门要求

6. 用户UID唯一性(用户拒绝重复)

存在的问题

  • 用户删除之后,重复使用
  • 用户信息容易泄露

用户拒绝重复的优势

  • 用户UID唯一,且不可重复
  • 保证用户信息机密性

7. 安全中心(病毒防护、账户安全、网络保护、应用执行控制、极限扫描功能)

存在的问题

  • 功能分散、难以整合
  • 命令操作系统为主,用户体验感差、交互差

安全中心的优势

  • 图形化操作,操作简便,交互友好
  • 功能集中,统一配置和管理

8. 安全管理工具(对系统安全模式、系统安全状态、执行控制功能、管理员分权、内核防卸载功能、文件保护功能等安全功能管理)

存在的问题

  • 命令操作门槛高,不易操作
  • 用户体验不直观,交互体验差

安全管理工具的优势

  • 统一管理
  • 操作简便
  • 交互友好

9. 文件保密箱(数据隔离、授权共享、透明加解密)

存在的问题

  • 数据被其它用户可见、可操作、可复制、数据存储不安全
  • 其它用户难以共享数据,配置复杂
  • 数据明文存储,机密性差,容易被窃取
  • 硬盘被窃取后,所有数据全部泄露

文件保险箱的优势

  • 数据安全隔离、数据可授权共享
  • 数据加解密,保证数据机密性
  • 硬盘被窃取后,加密数据无法查看,依然保证数据机密性
  • 图形化操作,操作简便,交互友好

10. 日志管理工具(日志展示、日志过滤、日志检索、日志导出)

存在的问题

  • 日志过多,管理难
  • 日志查看不便,搜索不便

日志管理根据的优势

  • 便于日志查看、管理
  • 便于搜索定位
  • 便于导出

四、访问控制模型

**DAC:**自主访问控制是Linux下默认的接入控制机制,通过对资源读、写、执行操作,保证系统安全。

**MAC:**安全接入控制机制,默认情况下:MAC不允许任何访问,用户可以自定义策略规则,指定运行什么,从而可以避免很多攻击。

MAC强制访问控制有三种实现方式:Apparmor、SELinux、Kysec

  • Apparmor:内核模块的一个安全框架,是Ubuntu的强制访问默认选择
  • SELinux:美国国家安全局(NSA)对于强制访问控制的实现,是RHEL的强制访问默认选择
  • KySec:是基于kysec安全标记对执行程序、脚本文件、共享库、内核模块进行保护的一种安全机制,是麒麟操作系统的强制访问默认选择

KYSEC的两种安全模式

  1. 强制模式(Normal):出现违规操作时,阻止该操作的运行并审计记录该操作
  2. 警告模式(Warning):出现违规操作时,弹出麒麟安全授权认证框进行授权(桌面操作系统才有)
  3. 软模式(Softmode):出现违规操作时,只会审计记录该操作,不会阻止该操作的运行

五、麒麟安全增强Kysec

Tips:在安装麒麟操作系统时,默认不会安装【麒麟安全增强工具】,也就无法使用kysec

在这里插入图片描述

后期如果需要使用麒麟安装增加工具,不同的命令需要安装不同的软件包,以下安装包推荐使用Kylin自带的网络源进行安装

# 查看当前kysec安全状态的命令[getstatus],
kysec-utils-3.4.1-01.se.26.ky10.x86_64# 修改kysec安全状态的命令[kysec]
security-switch-1.3.1-1.se.04.ky10.x86_64# 查看kysec安全标记的命令[kysec],在安装kysec-utils会关联安装
kysec-utils-3.4.1-01.se.26.ky10.x86_64

查看当前kysec的安全状态

getstatus

在这里插入图片描述
在这里插入图片描述

kysec安全标记类型安全状态
exec control(执行控制)on/off/warning
net control(网络控制)on/off/warning
file protect(文件保护)on/off/warning
kmod protect(内核模块保护)on/off/warning
three protect(三权分立)on/off/warning
process protect(进程保护)on/off/warning

KYSEC的开启与关闭,需要重启系统生效

security-switch --set default		# 开启KYSEC
security-switch --set none			# 关闭KYSEC
security-switch --set strict		# 启用三权分立

在这里插入图片描述

设置KYSEC的模式为softmode还是normal

setstatus softmode/normal

修改相应功能安全状态,将网络控制模式临时关闭

setstatus kysec -f netctl -c off -t
  • -f netctl:指定安全模块下的子功能
  • -c off:设置子功能的状态,on为开启,off为关闭
  • -t:临时生效

1. 查看kysec安全标记

文件身份标记:用于对执行文件的用户进行限制

  • secadm:文件属于安全管理员,只能由安全管理员执行
  • audadm:文件属于审计管理员,只能由升级管理员执行
  • none:无身份标记,所有用户都可执行

文件保护标记:用于对文件进行保护和检测

  • verify:执行前检查文件是否发生变化,如果发生变化,禁止执行
  • readonly:文件只读,对文件的写、移动、重命名和属性修改操作都禁止
  • none:无文件保护标记

执行控制标记:用于对文件的是否可执行进行控制

  • unknown:未知文件标记,该标记不可执行
  • original:系统原始文件标记,该标记可执行
  • verified:第三方可执行文件标记,该标记可执行
  • kysoft:可信安全脚本标记,该标记可执行
  • trusted:可信文件标记,拥有该标记的程序对文件仅修改时,文件标记不变,该表可执行

查看安全标记

kysec_get exectl -f xxx		# 查看xxx文件的执行控制标记
kysec_get fpro -f /usr/bin/ls	# 查看/usr/bin/ls的文件保护标记

在这里插入图片描述

2. 可执行文件的可执行控制

[Setp1]: 首先查看kysec的安全状态,可以看到当前执行控制模式为on

getstatus

在这里插入图片描述

[Setp2]: 查找本地的cat命令,将cat命令拷贝到/tmp目录下

whereis cat
cp /usr/bin/cat /tmp
ll /tmp

在这里插入图片描述

[Setp3]: 尝试使用tmp目录下的cat命令查看文件内容,可以看到该命令无法被执行

/tmp/cat /etc/selinux/config

在这里插入图片描述

[Setp4]: 临时关闭执行控制模式,重新使用该命令查看文件内容,此时可以看到文件内容

setstatus kysec -f exectl -c off -t
/tmp/cat /etc/selinux/config

在这里插入图片描述

[Setp4]: 重新开启执行控制模式状态,然后查看/tmp/cat文件的执行控制标记

setstatus kysec -f exectl -c on -t
kysec_get exectl -f /tmp/cat

在这里插入图片描述

[Setp5]: 修改/tmp/cat文件的执行控制标记为kysoft,然后使用/tmp/cat查看任意文件内容

kysec_set exectl -v kysoft -f /tmp/cat
  • -v kysoft:标记值,此处设置为kysoft
  • -f /tmp/cat:文件或目录路径, 设置文件或目录下文件的标记
kysec_get exectl -f /tmp/cat
/tmp/cat /etc/selinux/config

在这里插入图片描述

[Setp6]: 同时,如果修改文件内容后,改文件的执行控制标记会变更为unkonow

kysec_get exectl -f /tmp/cat
echo "" >> /tmp/cat		# 修改文件内容
kysec_get exectl -f /tmp/cat

在这里插入图片描述

3. 可执行文件的可执行控制

[Setp1]: 首先查看kysec的安全状态,可以看到当前执行控制模式为on

getstatus

在这里插入图片描述

[Setp2]: 新建一个脚本,赋予该脚本执行权限

touch demo.sh
chmod +x demo.sh		# 赋予该脚本执行权限,此处给所属者添加执行权限
vim demo.sh# 写入下列内容
#!/bin/bash
echo "Hello!"

[Setp3]: 测试执行脚本,提示【解释器错误:权限不够】
在这里插入图片描述

[Setp4]: 修改执行控制标记为kysoft,并尝试重新执行脚本文件

kysec_set exectl -v kysoft -f demo.sh
kysec_get exectl -f demo.sh

在这里插入图片描述

4. 内核模块的可执行控制

[Setp1]: 首先将内核文件拷贝至当前目录

cp /lib/modules/4.19.90-89.11.v2401.ky10.x86_64/kernel/net/netfilter/nf_conntrack_ftp.ko.xz .

[Setp2]: 将模块载入到内核中,此时会提示资源不可用

insmod nf_conntrack_ftp.ko.xz

在这里插入图片描述

[Setp3]: 修改执行控制标记为original,并尝试重新载入模块,此时不会报错

kysec_set exectl -v original -f nf_conntrack_ftp.ko.xz
kysec_get exectl -f nf_conntrack_ftp.ko.xz

在这里插入图片描述

5. 文件保护(受保护的文件不能被修改、重命名和删除)

[Setp1]: 本地新建一个文件,设置文件保护标记为只读

echo Hello > demo.txt
kysec_set fpro -v readonly -f demo.txt

在这里插入图片描述

[Setp2]: 测试发现,可以正常读取该文件,但是无法修改文件

在这里插入图片描述

[Setp3]: 修改文件保护标记为verify,移动该文件到/tmp目录下,可以发现无法读取该文件

kysec_set fpro -v verify -f demo.txt
mv demo.txt /tmp/

六、三权分立

主要的设计思想是将传统意义上的超级管理员root的权利进行划分,分为root(uid=0)、secadm(uid=600)和auditadm(uid=700)分别作为超级管理员的别名存在。通过SELinux+admin3+kysec技术实现基于角色的访问控制机制。三权系统除了使用传统的Linux用户身份鉴定机制外,还可以使用双因子验证方式进行身份验证,符合公安部的安全操作系统的相关标准。不同权限管理员之间实现权限隔离,满足等保“权限最小化原则”,提升系统抗风险能力。

在这里插入图片描述

[Step1]: 开启三权分立功能,在启用三权分立时,需要为三个用户设置密码

security-switch --set strict

在这里插入图片描述

[Step2]: 在重启过后,会出现两个新的用户

在这里插入图片描述

[Step3]: 使用auditadm用户(审计管理员)登录,在对磁盘进行操作时,会提示权限不够
在这里插入图片描述

[Step4]: 使用secadm用户(安全管理员)登录,新建用户时,会提示权限不够

在这里插入图片描述

[Step5]: 禁用三权分立

security-switch --set default

七、关闭KYSEC

[Step1]: 编辑引导配置文件,将与kysec有关的东西全部删掉

vim /etc/default/grub# 修改后内容如下图

在这里插入图片描述

[Step2]: 先查看当前的硬盘编号,然后重新安装引导配置文件到硬盘中

lsblk
grub2-install /dev/sda

在这里插入图片描述

[Step3]: 重新生成引导配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg

在这里插入图片描述

[Step4]: 重启服务器,可以看到kysec已经被关闭
在这里插入图片描述

相关文章:

KylinSP3 | 防火墙和麒麟安全增强设置KySec

一、系统防火墙原理 麒麟操作系统从V10版本开始&#xff0c;默认使用了Firewalld防火墙&#xff0c;Firewalld是能提供动态管理的防火墙&#xff0c;支持网络/防火墙区域&#xff0c;用于定义网络连接或接口的信任级别。支持IPv4和IPv6防火墙设置、以太网桥接和IP集。将运行时…...

DeepSeek + Higress AI 网关/Spring AI Alibaba 案例征集

诚挚地感谢每一位持续关注并使用 Higress 和 Spring AI Alibaba 的朋友。我们会持续投入&#xff0c;力图把 Higress 变得更好&#xff0c;把 Higress 和 Spring AI Alibaba 社区和生态变得更加繁荣。 关于 Higress&#xff1a; Higress 除了作为云原生网关支持 Web 应用的部…...

sql server笔记

创建数据库 use master gocreate database stuuuuu//删除数据库if db_id ($$$) is not nullDrop database [$$$] go//新建表USE [studyTest] GOSET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOCREATE TABLE [dbo].[Table_1]([id] [int] NULL,[name] [varchar](10) NULL ) ON…...

Vue 3 搭建前端模板并集成 Ant Design Vue(2025)

一、环境安装 截止2025.2.6 &#xff0c;官网发布的vue 3 稳定版本是 V 3.5.13 根据此时的官方文档要求&#xff0c;node 版本需要大于等于 V 18.3 于是使用 nvm 安装 v 20.18.0 二、创建项目 使用 Vue 官方推荐的脚手架 create-vue 快速创建 Vue3 的项目: 快速上手 | Vue.js…...

Word表格中如何只单独调整某一单元格宽度

大家好&#xff0c;我是小鱼。 在日常制作Word表格时&#xff0c;表格中不同单元格有时需要设置不同的宽度&#xff0c;但是很多小伙伴会发现想单独调整某一个单元格宽度时&#xff0c;发现其它单元格宽度也会发生变化。那么&#xff0c;到底怎么才能单独调整某一单元格宽度呢…...

CSS基础选择器和文字属性控制

CSS 层叠样式表(Cascading Style Sheets)&#xff0c;是一种样式表语言&#xff0c;它和HTML一起被用来描述网页的样式。HTML 主要用来定义网页的内容&#xff0c;也就是骨架&#xff0c;CSS 用来定义网页的样式。 CSS 是由选择器和属性声明组成的。选择器用来选择元素&#…...

保护密码等敏感信息的几个常用方法

概述 在生产环境&#xff0c;保护数据库账号密码等敏感信息是至关重要的&#xff0c;这些信息不能被所有研发工程师看见&#xff0c;本文介绍几种避免明文存储的常用方法。 方法1&#xff1a; 使用配置中心加密 适用场景&#xff1a;已采用配置中心&#xff08;如Spring Clou…...

【Golang 面试题】每日 3 题(六十七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

JavaScript系列(89)--前端模块化工程详解

前端模块化工程详解 &#x1f9e9; 前端模块化是现代Web开发的核心理念之一&#xff0c;它帮助我们组织和管理日益复杂的前端代码。本文将详细探讨前端模块化工程的各个方面&#xff0c;从基础概念到实际应用。 模块化概述 &#x1f31f; &#x1f4a1; 小知识&#xff1a;模…...

PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 TIFF

TIFF文件是高质量图像的首选。它们广泛用于印刷、存档和图形设计。企业通常需要转换PDF文档以获得更好的兼容性。了解如何以编程方式执行此转换可以节省时间和资源。在这篇教程中&#xff0c;我们将探讨如何使用 Python 将 PDF 转换为 TIFF。 本文涵盖以下主题&#xff1a; P…...

【开源免费】基于SpringBoot+Vue.JS美食烹饪互动平台(JAVA毕业设计)

本文项目编号 T 219 &#xff0c;文末自助获取源码 \color{red}{T219&#xff0c;文末自助获取源码} T219&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,加密压缩,带有压缩进度

前言 最近在做项目时遇到一个需求&#xff0c;需要将升级的文件压缩成zip&#xff0c;再进行传输&#xff1b; 通过网络调研&#xff0c;有许多方式可以实现&#xff0c;例如QT私有模块的ZipReader、QZipWriter&#xff1b;或者第三方库zlib或者libzip或者quazip等&#xff1…...

【GO】学习笔记

目录 学习链接 开发环境 开发工具 GVM - GO多版本部署 GOPATH 与 go.mod go常用命令 环境初始化 编译与运行 GDB -- GNU 调试器 基本语法与字符类型 关键字与标识符 格式化占位符 基本语法 初始值&零值&默认值 变量声明与赋值 _ 下划线的用法 字…...

docker安装etcd:docker离线安装etcd、docker在线安装etcd、etcd镜像下载、etcd配置详解、etcd常用命令、安装常见问题总结

官方网站 官方网址&#xff1a;etcd 二进制包下载&#xff1a;Install | etcd GitHub社区项目&#xff1a;etcd-io GitHub GitHub社区项目版本历史&#xff1a;Releases etcd-io/etcd GitHub 一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令…...

港科大提出开放全曲音乐生成基础模型YuE:可将歌词转换成完整歌曲

YuE是港科大提出的一个开源的音乐生成基础模型&#xff0c;专为音乐生成而设计&#xff0c;专门用于将歌词转换成完整的歌曲&#xff08;lyrics2song&#xff09;。它可以生成一首完整的歌曲&#xff0c;时长几分钟&#xff0c;包括朗朗上口的声乐曲目和伴奏曲目。YuE 能够模拟…...

Hive从入门到运用

hive简介 hive的设计思想&#xff08;本质是一个翻译器&#xff09; 上传安装包 解压&#xff0c;查看 运行hive&#xff08;一定要启动hadoop&#xff0c;是有依赖关系的。&#xff09; 测试启动方法&#xff0c;和建表 文件创建很上传到hdfs&#xff0c;直接上传到hive表的目…...

unity学习55:按钮 button

目录 1 按钮 button 1.1 按钮button 其实就是一个组合体 1.2 测试按钮&#xff0c;在UI中添加1个按钮 1.3 按钮的属性 2 按钮的图片属性 3 按钮的变换 transition 3.1 按颜色变换 3.2 按图片精灵变换 3.3 按动画变换 4 按钮的导航 5 按钮的事件和脚本 1 按钮 …...

《论基于构件的软件开发方法及其应用》审题技巧 - 系统架构设计师

软考论文写作框架&#xff1a;基于构件的软件开发方法及其应用 一、考点概述 本论题“基于构件的软件开发方法及其应用”主要考察的是软件工程专业中关于基于构件开发&#xff08;CBSD&#xff09;的深入理解与实践应用。考点涵盖以下几个方面&#xff1a; 首先&#xff0c;…...

穷举vs暴搜vs深搜vs回溯vs剪枝(典型算法思想)—— OJ例题算法解析思路

回溯算法的模版 void backtrack(vector<int>& path, vector<int>& choice, ...) {// 满⾜结束条件if (/* 满⾜结束条件 */) {// 将路径添加到结果集中res.push_back(path);return;}// 遍历所有选择for (int i 0; i < choices.size(); i) {// 做出选择…...

java23种设计模式-命令模式

命令模式&#xff08;Command Pattern&#xff09;学习笔记 1. 模式定义 行为型设计模式&#xff0c;将请求封装为对象&#xff0c;使请求的发送者与接收者解耦。支持请求的排队、记录、撤销/重做等操作。 2. 适用场景 ✅ 需要将操作参数化 ✅ 需要支持事务操作&#xff08…...

交流异步电动机PI双闭环SVPWM矢量控制Simulink

关注微♥“电机小子程高兴的MATLAB小屋”获取专属优惠 1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Ra&#xff09;软件。建议采用matlab2017 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 2.仿真算法&#xff1a; (…...

利用 Open3D 保存并载入相机视角的简单示例

1. 前言 在使用 Open3D 进行三维可视化和点云处理时&#xff0c;有时需要将当前的视角&#xff08;Camera Viewpoint&#xff09;保存下来&#xff0c;以便下次再次打开时能够还原到同样的视角。本文将演示如何在最新的 Open3D GUI 界面&#xff08;o3d.visualization.gui / o…...

kiln微调大模型-使用deepseek R1去训练一个你的具备推理能力的chatGPT 4o

前言 随着deepseek的爆火&#xff0c;对于LLM的各种内容也逐渐步入我的视野&#xff0c;我个人认为&#xff0c;可能未来很长一段时间&#xff0c;AI将持续爆火&#xff0c;进入一段时间的井喷期&#xff0c;AI也会慢慢的走入我们每个家庭之中&#xff0c;为我们的生活提供便利…...

《从Kokoro看开源语音模型的“无限可能”》:此文为AI自动生成

开源语音模型 Kokoro 是一款轻量级、高性能的文本转语音(TTS)模型,以下是关于它的详细介绍: 核心优势 卓越的音质:即使参数规模仅 8200 万,也能生成自然流畅、富有表现力的语音。轻量高效:占用资源少,运行速度快,在 CPU 上即可实现近乎实时的语音生成,在 GPU 端则能…...

Spring 事务和事务传播机制(详解)

1 .事务 1.1.什么是事务&#xff1f; 事务是一组操作的集合,是不可分割的操作 事务作为一个整体&#xff0c;要不同时完成&#xff0c;要不同时失败 1.2什么时候需要事务&#xff1f; 关于金钱的操作基本都会有事务 例如转账操作&#xff1a; 第一步 A账号 - 500元第二步 B账…...

Innodb MVCC实现原理

什么是MVCC? MVCC全称多版本并发控制&#xff0c;是在并发访问数据库时对操作数据做多版本管理&#xff0c;避免因为写数据时要加写锁而阻塞读取数据的请求问题。 Innodb对mvcc的实现 1、事务版本号 每次事务开启前都会从数据库获得一个自增长的事务ID&#xff0c;可以从事…...

【网络编程】网络套接字和使用案例

一、为什么大多数网络编程使用套接字 在网络编程中&#xff0c;套接字 (socket) 是最常用的接口&#xff0c;但并不是所有的底层通信都依赖于套接字。尽管如此&#xff0c;绝大多数网络应用&#xff08;特别是在操作系统层面&#xff09;都使用套接字进行通信&#xff0c;因为…...

【Java企业生态系统的演进】从单体J2EE到云原生微服务

Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务 目录标题 Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务摘要1. 引言2. 整体框架演进&#xff1a;从原始Java到Spring Cloud2.1 原始Java阶段&#xff08;1995-1999&#xff09;2.2 J2EE阶段&#x…...

【爬虫基础】第二部分 爬虫基础理论 P1/3

上节内容回顾&#xff1a;【爬虫基础】第一部分 网络通讯 P1/3-CSDN博客 【爬虫基础】第一部分 网络通讯-Socket套接字 P2/3-CSDN博客 【爬虫基础】第一部分 网络通讯-编程 P3/3-CSDN博客 爬虫相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff…...

第2章_保护您的第一个应用程序

第2章_保护您的第一个应用程序 在本章中&#xff0c;您将学习如何使用 Keycloak 保护您的第一个应用程序。为了让事情更有趣&#xff0c;您将运行的示例应用程序由两部分组成&#xff0c;前端 Web 应用程序和后端 REST API。这将向您展示用户如何向前端进行身份验证&#xff0…...

山东大学软件学院人工智能导论实验之知识库推理

目录 实验目的&#xff1a; 实验代码&#xff1a; 实验内容&#xff1a; 实验结果 实验目的&#xff1a; 输入相应的条件&#xff0c;根据知识库推理得出相应的知识。 实验代码&#xff1a; def find_data(input_process_data_list):for epoch, data_process in enumerat…...

Java 网络协议面试题答案整理,最新面试题

TCP和UDP的主要区别是什么&#xff1f; TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;的主要区别在于TCP是面向连接的协议&#xff0c;而UDP是无连接的协议。这导致了它们在数据传输方式、可靠性、速度和使用场景方面的不同。 1、连接…...

win10把c盘docker虚拟硬盘映射迁移到别的磁盘

c盘空间本身就比较小、如果安装了docker服务后&#xff0c;安装的时候没选择其他硬盘&#xff0c;虚拟磁盘也在c盘会占用很大的空间&#xff0c;像我的就三十多个G&#xff0c;把它迁移到其他磁盘一下子节约几十G 1、先输入下面命令查看 docker 状态 wsl -l -v 2、如果没有停止…...

AOP进阶-02.通知顺序

一.通知顺序 当有多个切面类中的切入点表达式一样时&#xff0c;这些切面类的执行顺序是怎样的呢&#xff1f;如图我们将定义两个切面类&#xff0c;一个MyAspect2&#xff0c;一个MyAspect3&#xff0c;一个MyAspect4。执行后我们发现&#xff0c; 对于目标方法前的通知方法&…...

${sym} 与 String(sym) 的区别

在 JavaScript 中&#xff0c;${sym}&#xff08;模板字符串插值&#xff09;和 String(sym)&#xff08;显式类型转换&#xff09;虽然都涉及将值转换为字符串&#xff0c;但它们的底层逻辑和行为存在显著差异&#xff0c;尤其是在处理 Symbol 等特殊类型时。以下是具体对比&a…...

sglang框架源码笔记

文章目录 整体架构1. **客户端&#xff08;Client&#xff09;**&#xff1a;2. **服务器端&#xff08;Server&#xff09;**&#xff1a;3. **调度器与模型工作节点&#xff08;Scheduler & Model Worker&#xff09;**&#xff1a; TpModelWorker类ModelRunner类TpModel…...

2025年SCI一区智能优化算法:混沌进化优化算法(Chaotic Evolution Optimization, CEO),提供MATLAB代码

一、混沌进化优化算法 https://github.com/ITyuanshou/MATLABCode 1. 算法简介 混沌进化优化算法&#xff08;Chaotic Evolution Optimization, CEO&#xff09;是2025年提出的一种受混沌动力学启发的新型元启发式算法。该算法的主要灵感来源于二维离散忆阻映射的混沌进化过…...

uake 网络安全 reverse网络安全

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文首发于“合天网安实验室” 首先从PEID的算法分析插件来介绍&#xff0c;要知道不管是在CTF竞赛的REVERSE题目中&#xff0c;还是在实际的商业产品中&#xf…...

C语言实现单链表

单链表是数据结构中最基础的链式结构,它不按照线性的顺序存储数据,而是由若干个同一结构类型的“节点”依次串联而成的,即每一个节点里保存着下一个节点的地址(指针)。 上图中,一个表头变量head是用来存储链表首节点的地址,链表中每个节点有data(数据)部分和n…...

Rk3568驱动开发_点亮led灯代码完善(手动挡)_6

1.实现思路&#xff1a; 应用层打开设备后通过write函数向内核中写值&#xff0c;1代表要打开灯&#xff0c;0代表要关闭灯 Linux配置gpio和控制gpio多了一个虚拟内存映射操作 2.注意事项&#xff1a; 配置和读写操作的时候要谨慎&#xff0c;比如先关掉gpio再注销掉虚拟内存…...

threejs:document.createElement创建标签后css设置失效

vue3threejs&#xff0c;做一个给模型批量CSS2D标签的案例&#xff0c;在导入模型的js文件里&#xff0c;跟着课程写的代码如下&#xff1a; import * as THREE from three; // 引入gltf模型加载库GLTFLoader.js import { GLTFLoader } from three/addons/loaders/GLTFLoader.…...

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间

在 compare-form.vue 中添加 compareDate 隐藏字段&#xff0c;并在提交时自动填入当前时间。 提交表单时存入的对象是FakeRegistration&#xff0c;这个对象里面有compareDate字段&#xff0c;刚好表格查询的对象也是FakeRegistration&#xff0c;所以表格展示的时间就是刚才…...

使用DeepSeek/ChatGPT等AI工具辅助编写wireshark过滤器

随着deepseek,chatgpt等大模型的能力越来越强大&#xff0c;本文将介绍借助deepseek&#xff0c;chatgpt等大模型工具&#xff0c;通过编写提示词&#xff0c;辅助生成全面的Wireshark显示过滤器的能力。 每一种协议的字段众多&#xff0c;流量分析的需求多种多样&#xff0c;…...

Java 大视界 -- Java 大数据在智能物流路径规划与车辆调度中的创新应用(102)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

YOLOv12 ——基于卷积神经网络的快速推理速度与注意力机制带来的增强性能结合

概述 实时目标检测对于许多实际应用来说已经变得至关重要&#xff0c;而Ultralytics公司开发的YOLO&#xff08;You Only Look Once&#xff0c;只看一次&#xff09;系列一直是最先进的模型系列&#xff0c;在速度和准确性之间提供了稳健的平衡。注意力机制的低效阻碍了它们在…...

一个行为类似标准库find算法的模板

函数需要两个模板类型参数&#xff0c;一个表示函数的迭代器参数&#xff0c;另一个表示值的类型。 代码 #include<iostream> #include<string> #include<vector> #include<list>using namespace std;template <typename IterType,typename T>…...

LLC谐振变换器恒压恒流双竞争闭环simulink仿真

1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Ra&#xff09;软件。建议采用matlab2017 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09;针对全桥LLC拓扑&#xff0c;利用Matlab软件搭建模型&#xff0c;分别对轻载&#xf…...

Elasticsearch 的分布式架构原理:通俗易懂版

Elasticsearch 的分布式架构原理&#xff1a;通俗易懂版 Lucene 和 Elasticsearch 的前世今生 Lucene 是一个功能强大的搜索库&#xff0c;提供了高效的全文检索能力。然而&#xff0c;直接基于 Lucene 开发非常复杂&#xff0c;即使是简单的功能也需要编写大量的 Java 代码&…...

[深度学习]基于C++和onnxruntime部署yolov12的onnx模型

基于C和ONNX Runtime部署YOLOv12的ONNX模型&#xff0c;可以遵循以下步骤&#xff1a; 准备环境&#xff1a;首先&#xff0c;确保已经下载后指定版本opencv和onnruntime的C库。 模型转换&#xff1a; 安装好yolov12环境并将YOLOv12模型转换为ONNX格式。这通常涉及使用深度学习…...

seacmsv9报错注入

1、seacms的介绍 ​ seacms中文名&#xff1a;海洋影视管理系统。是一个采用了php5mysql架构的影视网站框架&#xff0c;因此&#xff0c;如果该框架有漏洞&#xff0c;那使用了该框架的各个网站都会有相同问题。 2、源码的分析 漏洞的部分源码如下&#xff1a; <?php …...