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

Nginx安全防护与HTTPS部署实战

一.核心安全配置

1.编译安装Nginx

(1)安装支持软件

Nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完成

命令:dnf install -y gcc make pcre-devel zlib-devel openssl-devel perl-ExtUtils-MakeMaker git wget tar

(2)创建运行用户、组和日志目录

命令:useradd -M -s /sbin/nologin nginx

           mkdir -p /var/log/nginx

           chown -R nginx:nginx /var/log/nginx

(3)编译安装Nginx

命令:tar zxf nginx-1.26.3.tar.gz

           cd nginx-1.26.3

           ./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx.pid --user=nginx  --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream

          make && make install

          ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin     (为主程序nginx创建链接文件)

(4)添加Nginx系统服务

命令:vim /lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/sbin/nginx -t
ExecStart=/usr/local/sbin/nginx
ExecReload=/usr/local/sbin/nginx-s reload
ExecStop=/bin/ki11 -S QUIT $MAINPID
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
User=root
Group=root

[Install]
WantedBy=multi-user.target
           systemctl daemon-reload

           systemctl start nginx

           systemctl enable nginx

2.隐藏版本号

生产环境中,需要隐藏Nginx版本号,以避免Nginx的版本,使攻击者不能针对特定版本进行攻击。隐藏版本号之前,可以使用Fiddler工具抓取数据包查看Nginx版本,也可以在OpenEuler中使用curl  -I 192.168.10.202查看

修改配置文件

命令:vim /usr/local/nginx/conf/nginx.conf

http {

        include      mime.types;

         ......

        server_tokens off;                  (隐藏版本号)

           nginx -t

           nginx -s reload

3.限制危险请求方法

不安全的请求方式,是潜在的安全风险,TRACE(易引发XST攻击)、PUT/DELETE(文件修改风险)、CONNECT(代理滥用),通过正则表达式匹配请求方法,非白名单方法返回444(无响应关闭连接)

修改配置文件

命令:vim /usr/local/nginx/conf/nginx.conf

sercer {

.......

if  ($request_method ! ~ ^(GET|HEAD|POST)$)  {

                     return  444;

        }

.......

}

测试PUT/DELETE请求

命令:curl  -XPUT  -I  192.168.10.202

测试TRACE和CONNECT方法时,状态码不是444的原因:

a.CONNECT请求的目标不是代理服务器时,服务器必须返回400 Bad Request,Nginx核心层在请求解析阶段直接拦截,根本不进入后续的location处理流程

b.现代Nginx默认禁用TRACE方法,在ngx_http_core_module阶段直接返回405Not Allowed

4.请求限制(CC攻击防御)

CC攻击是一种常见的网络攻击方式,通过大量合法或伪造小流量请求来耗尽服务器资源,导致正常用户无法访问网站。要在Nginx中有效防止CC攻击,可以采用多种策略和方法

CC攻击,也称为连接数攻击或请求速率限制攻击,通过模拟大量用户访问来消耗服务器资源,从而使得正常用户无法正常访问网站。为了防止此类攻击,可以使用Nginx提供的模块来限制请求速率和并发连接数

(1)使用Nginx的limit_req模块限制请求速率

编辑配置文件

命令:vim /usr/local/nginx/conf/nginx.conf

http  {

     #定义限制区(10MB内存/每秒10请求)

     limit_req_zone  $binary_remote_addr  zone=req_limit:10m  rate=10r/s;

     #其他全局配置...

     server  {

            location  /  {

                  root  html;

                  index  index.html  index.php;

                  limit_req  zone-req_limit  burst=20  nodelay;

                  }

...

          }

}

关键参数说明:

a.limit_req_zone定义共享内存区

b.$binary_remote_addr 是一个内置变量,用于表示客户端IP地址的二进制格式

c.zone=req_limit:10m 创建名为req_limit的共享内存区,大小10M,用来存储客户端Ip

d.rate=10r/s 限制并发数,每个IP每秒可以发起的请求次数

e.limit_req 实施速率限制

f.zone=req_limit 绑定到预定义的共享内存区

g.burst=20 类似与等候区,超出并发数的请求会到等候区,等候区占满后,多余的请求会立刻返回503

h.nodelay 立刻处理突发请求而不延迟,相当于立刻处理等候区的请求,多余的请求会立刻返回503

(2)压力测试验证

安装ab测试工具

ApacheBench(简称ab)是Apache HTTP服务器自带的一个轻量级,易用的HTTP服务器性能测试工具。主要用于评估服务器在并发访问下的性能表现,包括响应时间、吞吐量等关键指标。

命令:dnf  install  httpd-tools -y

发起测试请求

共发起300个请求,每次发起30个请求

命令:ab -n 300 -c 30 http://192.168.10.202/

查看access.log发现大量请求日志状态码503

命令:tail -300 /usr/local/nginx/logs/access.log | grep -c 503

5.防盗链

防盗链是一种重要的安全设置,旨在防止未经授权的用户盗用网站(静态)资源。盗链行为不仅侵犯了内容创作者的版权,还可能导致原网站带宽和资源的过度消耗,影响正常用户的访问速度和体验。
一般来说,用户浏览一个完整的页面并不是一次性全部传送到客户端的。如果所请求的页面带有图片或其他信息,那么第一个HTTP请求传送的是这个页面的文本,然后通过客户端的浏览器对这段文本进行解释执行。如果发现其中还有图片,那么客户端的浏览器会再次发送一条HTTP请求,当这个请求被处理后这个图片文件才会被传送到客户端,最后浏览器会将图片安放到页面的正确位置,就这样一个完整的页面要经过多次发送HTTP请求才能够被完整的显示。基于这样的机制,就会产生盗链问题:如果一个网站中没有其页面中所说图片信息,那么它完全可以链接到其他网站的图片信息上。这样,没有任何资源的网站利用了其他网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现。一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接。一方面损害了原网站的合法利益,另一方面又加重了服务器的负期

操作系统域名IP服务
OpenEulerwww.aaa.com192.168.10.202源主机
OpenEulerwww.bbb.com192.168.10.201盗链主机

(1)修改Windows的C:\Windows/System32\drivers\etc\hosts文件,设置域名和IP映射关系

192.168.10.202  www.aaa.com

192.168.10.201  www.bbb.com

(2)修改两台CentOS的hosts文件,设置域名和IP映射关系

192.168.10.202  www.aaa.com

192.168.10.201  www.bbb.com

(3)把图片logo.jpg放到源主机的工作目录下

命令:ls /usr/local/nginx/html

index.html  kgc.png

(4)编辑源网站首页文件

命令:vim /usr/local/nginx/html/index.html

<html>

     <body>

              <h1>aaa It work!

                <img src="kgc.png"/>               (网页中显示图片的代码)

               </h1>

      </body>    

</html>

(5)测试访问源网站

(6)编辑盗链网站首页文件

命令:vim  /usr/local/nginx/html/index.html

<html>

     <body>

              <h1>bbb It work!

                <img src="http://www.aaa.com/kgc.png"/>               (网页中显示图片的代码)

               </h1>

      </body>    

</html>

(7)测试访问盗链网站(盗链成功)

(8)配置Nginx防盗链

命令:vim /usr/local/nginx/conf/nginx.conf

location ~* \.(gif | jpg | jpeg |) png | bmp | swf | flv | mp4 | webp | ico) $ {

               root html

               valid_referers   aaa.com *.aaa.com;

              if  ($invalid_referer )  {

                          return  403

               }

}

           nginx -t 

           nginx -s reload

~*\.(jpglgif|swf)$:这段正则表达式表示匹配不区分大小写,以jpg或.gif或.swf结尾的文件;
Valid referers:设置信任的网站,可以正常使用图片;2
后面的网址或者域名:referer中包含相关字符串的网址:
>If语句:如果链接的来源域名不在validreferers所列出的列表中$invalid_referer为1,则执行后面的操作,即进行重写或返回403页面

(8)测试访问盗链网站(盗链失败)

二.高级防护

1.动态黑名单

动态黑名单是Nginx中一种实时拦截恶意请求的安全机制,它允许在不重启服务的情况下,动态更新需要封禁的IP地址或网段。相比静态配置的allow/deny指令,动态黑名单更灵活高效,适用于高并发、多变的攻击防护场景。

(1)编辑黑名单配置文件

命令:vim /usr/local/nginx/conf/blockips.conf

192.168.1.0/24  1 ; #封禁整个网段

192.168.10.201 1 ;#封禁ip

IP地址后的数字含义

0  ""; # 允许

1  403;  #完全封禁

2   444;  #静默断开

3  503;  #服务不可用

(3)编辑主配置文件

命令:vim /usr/local/nginx/conf/nginx.conf

http  {

......

    geo  $block_ip {

    default 0;               #默认允许访问

     include  /usr/lcoal/nginx/conf/blockips.conf ;   # 包含黑名单

         }

......

      server  {

      ......

       if  ($block_ip)  {        #判断标记值

                      return  403 ;  # 封禁动作

            }

.......

        } 

}

          nginx  -t

         nginx  -s  reload

geo:Nginx内置模块指令,专门用于处理ip地址相关的逻辑。基于客户端ip地址生成一个变量值,用于后续的访问控制判断

$block_ip:自定义的变量名,存储计算结果(通常为0或1)

default 0 :默认值,表示不在黑名单中的ip允许访问

if  ($block_ip):当变量值为1时触发封禁逻辑

(3)使用封禁ip测试访问

命令:curl  192.168.10.202

<html>

<head><title>403 Forbidden</title></head>

<body>

<center><h1>403 Forbidden</h1></center>

<hr><center>nginx</center>

</body>

</html>

(4)自动添加黑名单

自动封禁访问超过100次的ip

#!/bin/bash
#自动封禁访问超过100次的IP
awk’{print $l}’/var/log/nginx/access.logsort |uniq -c|sort -nrawk ’{if($1>100) print $2"1;"}’>/usr/local/nginx/conf/blockips. conf

每小时更新攻击ip

#!/bin/bash
#每小时更新攻击IP
awk'/攻击特征/(print $l}’/var/log/nginx/access.logsort|uniq >/usr/local/nginx/conf/blockips. conf

2.nginx https配置

HTTP由于是明文传输,主要存在三大风险:窃听风险、篡改风险、冒充风险

2.1安全通信的四大原则

不难猜到 HTTPS就是为了解决上述三个风险而生的,一般我们认为安全的通信需要包括以下四个原则:机密性、完整性,身份认证和不可否认。
机密性:即对数据加密,解决了窃听风险,因为即使被中间人窃听,由于数据是加密的,他也拿不到明文;

完整性:指数据在传输过程中没有被篡改,不多不少,保持原样,中途如果哪怕改了一个标点符号,接收方也能识别出来,从来判定接收报文不合法;

身份认证:确认对方的真实身份,即证明“你妈是你妈”的问题,这样就解决了冒充风险,用户不用担心访问的是某宝结果却在和钓鱼网站通信的问题:

不可否认:即不可否认已发生的行为,比如小明向小红借了1000元,但没打借条,或者打了借条但没有签名,就会造成小红的资金损失。

2.2通信原理简述

既然HTTP是明文传输的,那我们给报文加密不就行了,既然要加密,我们肯定需要通信双方协商好密钥吧。一种是通信双方使用同一把密钥,即对称加密的方式来给报文进行加解密。

但是这里有一个关键问题:对称加密的通信双方要使用同一把密钥,这个密钥是如何协商出来的?如果通过报文的方式直接传输密钥,之后的通信其实还是在裸奔,因为这个密钥会被中间人截获甚至替换掉,这样中间人就可以用截获的密钥解密报文,甚至替换掉密钥以达到篡改报文的目的。

有人说对这个密钥再次加密不就完了,但对方如果要解密这个密钥,那还是要传加密密钥给对方,依然还是会被中间人截获的,这么看来直接传输密钥无论怎样都无法摆脱俄罗斯套娃的难题,是不可行的。
直接传输密钥无论从哪一端传从上节分析来看是不行了,这里我们再看另
种加密方式:非对称加密。非对称加密即加解密双方使用不同的密钥,一把作为公钥,可以公开的,把作为私钥,不能公开,公钥加密的密文只有私钥可以解密,私钥签名的内容,也只有公钥可以验签。这样的话对serve来说,保管好私钥,发布公钥给其他client,其他client只要把对称加密的密钥(或用于生成对称加密密钥的信息)使用公钥加密后传给server 即可。如此一来由于公钥加密只有私钥能解密,而私钥只有server 有所以能保证client向server传输是安全的,server解密后即可拿到对称加密密钥,这样交换了密钥之后就可以用对称加密密钥通信了。
但是问题又来了,server 怎么把公钥安全地传输给client呢???????
如果直接传公钥,也会存在被中间人调包的风险,好像没完没了了一样.……..

数字证书,解决公钥传输信任问题

如何解决公钥传输问题呢?从现实生活中的场景找答案。员工入职时,企业般会要求提供学历证明,这个学历必须由第三方权威机构(CertificateAuthority证书颁发机构,简称CA)即教育部颁发。同理,server也可以向CA申请证书,在证书中附上公钥,然后将证书传给client。证书是由站点管理者向CA申请,申请的时候会提交域名、组织单位信息和公钥等数据(这些数据组成了 Certificate Signing,Reguest 证书签名请求,简称 CSR),CA会根据这些信息生成证书

这样当client拿到证书后,就可以获得证书上的公钥,再用此公钥加密对称加密密钥传给server即可。看起来确实很完美,不过在这里大家要考虑一个问题
想象一下上文中我们提到的学历,企业如何认定你提供的学历证书是真是假呢?答案是用学历编号,企业拿到证书后用学历编号在学信网上一查就知道证书真伪了,学历编号其实就是我们常说的证书的数字签名,可以防止证书造假。

证书的数字签名怎么来的?是使用的CA机构的私钥给CSR(确切来说是CSR生成的摘要信息)进行的签名,这样的话c1ient得用CA的公钥来给名解密才行,拿到的才是未经篡改合法的证书(私钥签名,公钥验签)
细心的你一定发现了问题,那CA 公钥又是如何安全地传输到client的?如果还是从server传输到client,依然无法解决公钥被调包的风险。实际上CA公钥是存在于CA证书上,而此证书(也称RootCA证书)被操作系统信任,内置在操作系统上的,无需传输,如果用的是windows的同学,可以通过:控制面板一>网络和Internet->Internet选项一>内容一>证书一>受信任的根证书颁发机构,可以看到很多内置的被信任的证书

https 总结:
server传输CA颁发的证书给client,client收到证书后使用系统内置的CA证书的公钥来验签,验签通过证明证书是受信任的,证书受信任那么证书中的公钥也就是受信任的,这样的话就解决了公钥传输过程中被调包的风险。

Client拿到server端的公钥后,使用公钥加密会话密钥(也就是对称加密的密钥),然后发送给服务端,服务端通过私钥解密获得会话密钥(对称加密的密钥),然后就可以安全愉快的进行数据传输了。

1.这里可能有同学会有疑问,为什么client拿到了server 给的公钥,不直接使用公钥进行加密通信,反而用公钥加密会话密钥,用会话密钥来加密通信,多此一举,这是因为会话密钥是对称加密,而对称加密的密钥管理简单且具有更高的加密和解密效率。所以https加密是混合模式,在握手阶段是非对称加密,在数据传输阶段是对称加密
2.还有个问题,中间人如果也去CA申请一个受信任的证书呢,把server发送的证书截取并替换成自己的行不行呢,答案是不行的,因为client除了要验证证书的合法性外,每个证书中包含的域名也是唯一的

相关文章:

Nginx安全防护与HTTPS部署实战

一.核心安全配置 1.编译安装Nginx &#xff08;1&#xff09;安装支持软件 Nginx的配置及运行需要pcre、zlib等软件包的支持&#xff0c;因此应预先安装这些软件的开发包&#xff08;devel&#xff09;&#xff0c;以便提供相应的库和头文件&#xff0c;确保Nginx的安装顺利…...

【C语言】初阶数据结构相关习题(一)

&#x1f386;个人主页&#xff1a;夜晚中的人海 今日语录&#xff1a;人的生命似洪水在奔流&#xff0c;不遇着岛屿、暗礁&#xff0c;难以激起美丽的浪花。——奥斯特洛夫斯基 文章目录 ⭐一、判定是否互为字符重排&#x1f389;二、 回文排列&#x1f680;三、字符串压缩&am…...

MySQL从入门到精通(一):MySQL介绍及数据库相关概念

目录 一、MySQL 介绍 二、数据库相关概念 &#xff08;一&#xff09;数据库基础知识 &#xff08;二&#xff09;主流的关系型数据库管理系统 三、关系型数据库与非关系型数据库 &#xff08;一&#xff09;定义 &#xff08;二&#xff09;数据模型对比 &#xff08;…...

宁德时代区块链+数字孪生专利解析:去中心化身份认证重构产业安全底座

引言&#xff1a;当动力电池巨头瞄准数字孪生安全 2025年5月6日&#xff0c;金融界披露宁德时代未来能源&#xff08;上海&#xff09;研究院与母公司宁德时代新能源科技股份有限公司联合申请的一项关键专利——“身份验证方法、系统、电子设备及存储介质”。这项技术将区块链…...

Kotlin数据类在Android开发中的应用

在 Android 开发中,Kotlin 的数据类(Data Class)因其简洁性和自动生成的功能特性,成为了提升开发效率的利器。以下是我总结的 7 大核心妙用场景,配合代码示例助您快速掌握: 1️⃣ JSON 解析利器 → 网络请求模型 与 Retrofit/Moshi 完美配合,自动生成 equals()/hashCod…...

程序员学商务英语之Shipment Claim 运输和索赔

Dia-3: Claim 1 索赔 1. He claimed that he would quit smoking. 他宣布他将要禁烟。 2. BYD is inferior to Tesla. 差 be worse than… 比亚迪比特斯拉差。 Tesla is superior to BYD. 特斯拉比比亚迪好。 be better than… 3. The survey report reveals/s…...

Kotlin密封类优化Android状态管理

Kotlin 的密封类&#xff08;Sealed Class&#xff09;确实是 Android 开发中管理复杂 UI 状态的利器。它通过类型安全的层次结构&#xff0c;让状态管理代码更加清晰简洁。让我们从实际开发场景出发&#xff0c;深入探讨其应用&#xff1a; 一、密封类核心优势 受限的类继承…...

基于图像处理的道路监控与路面障碍检测系统设计与实现 (源码+定制+开发) 图像处理 计算机视觉 道路监控系统 视频帧分析 道路安全监控 城市道路管理

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

依赖注入详解与案例(前端篇)

依赖注入详解与案例&#xff08;前端篇&#xff09; 一、依赖注入核心概念与前端价值 依赖注入&#xff08;Dependency Injection, DI&#xff09; 是一种通过外部容器管理组件/类间依赖关系的设计模式&#xff0c;其核心是控制反转&#xff08;Inversion of Control, IoC&…...

Spark 的 Shuffle 机制:原理与源码详解

Apache Spark 是一个分布式数据处理框架&#xff0c;专为大规模数据分析设计。其核心操作之一是 Shuffle&#xff0c;这是一个关键但复杂的机制&#xff0c;用于在某些操作期间在集群中重新分配数据。理解 Shuffle 需要深入探讨其目的、机制和实现&#xff0c;既包括概念层面&a…...

IdeaVim配置指南

一、什么是 IdeaVim&#xff1f; IdeaVim 是 JetBrains 系列 IDE&#xff08;如 IntelliJ IDEA, WebStorm, PyCharm 等&#xff09;中的一个插件&#xff0c;让你在 IDE 里使用 Vim 的按键习惯&#xff0c;大大提升效率。 安装方法&#xff1a; 在 IDE 中打开 设置(Settings) →…...

[监控看板]Grafana+Prometheus+Exporter监控疑难排查

采用GrafanaPrometheusExporter监控MySQL时发现经常数据不即时同步&#xff0c;本示例也是本地搭建采用。 Prometheus面板 1&#xff0c;Detected a time difference of 11h 47m 22.337s between your browser and the server. You may see unexpected time-shifted query res…...

P56-P60 统一委托,关联游戏UI,UI动画,延迟血条

这一部分首先把复杂的每个属性委托全部换成了简洁可复用的委托,之后重新修改了UI蓝图,然后在新增了一个与之前表格关联的动画与血条延迟下降的蓝图 OverlayAuraWidgetController.h // Fill out your copyright notice in the Description page of Project Settings. #pragma …...

智能修复大模型生成的 JSON 字符串:Python 实现与优化

在使用大语言模型(LLM)生成 JSON 格式数据时,常因模型输出不完整、语法错误或格式不规范导致 JSON 解析失败。本文介绍如何通过 json_repair 库实现对 LLM 生成 JSON 字符串的自动修复,并改进原始提取函数以提升容错能力。 一、LLM 生成 JSON 的常见问题 LLM 输出的 JSON …...

【PPT制作利器】DeepSeek + Kimi生成一个初始的PPT文件

如何基于DeepSeek Kimi进行PPT制作 步骤&#xff1a; Step1&#xff1a;基于DeepSeek生成文本&#xff0c;提问 Step2基于生成的文本&#xff0c;用Kimi中PPT助手一键生成PPT 进行PPT渲染-自动渲染 可选择更改模版 生成PPT在桌面 介绍的比较详细&#xff0c;就是这个PPT模版…...

华为设备端口隔离

端口隔离的理论与配置指南 一、端口隔离的理论 基本概念 端口隔离&#xff08;Port Isolation&#xff09;是一种在交换机上实现的安全功能&#xff0c;用于限制同一VLAN内指定端口间的二层通信。被隔离的端口之间无法直接通信&#xff0c;但可通过上行端口访问公共资源&#…...

YOLO12改进-C3K2模块改进-引入离散余弦变换DCT 减少噪声提取图像的细节、边缘和纹理等微观特征

离散余弦变换&#xff08;Discrete Cosine Transform, DCT&#xff09;由 Nasir Ahmed 于 1974 年提出&#xff0c;最初是为了优化数据压缩。其核心思想是将信号从空间域转换为频率域&#xff0c;从而实现冗余信息的压缩。DCT 在图像和视频处理领域应用广泛&#xff0c;例如 JP…...

基于大模型的自然临产阴道分娩全流程预测与方案研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义 1.3 国内外研究现状 二、大模型技术原理与应用概述 2.1 大模型基本原理 2.2 在医疗领域的应用现状 2.3 用于分娩预测的优势 三、术前预测与准备方案 3.1 产妇身体状况评估指标 3.2 大模型预测流程与方法 3.3 基于预…...

用 Tailwind CSS 优化你的 Vue 3 项目! ! !

Vue 3 的响应式魅力 TailwindCSS 的原子级美学 前端开发的舒适巅峰&#xff01; 在现代前端开发中&#xff0c;组件驱动 原子化 CSS 正在成为新的标准。如果你已经在使用 Vue 3&#xff0c;那不妨试试 Tailwind CSS —— 一个强大的原子化 CSS 框架&#xff0c;它能让你几乎…...

PostgreSQL数据库的array类型

PostgreSQL数据库相比其它数据库&#xff0c;有很多独有的字段类型。 比如array类型&#xff0c;以下表的pay_by_quarter与schedule两个字段便是array类型&#xff0c;即数组类型。 CREATE TABLE sal_emp (name text,pay_by_quarter integer[],schedule t…...

融智学视角集大成范式革命:文理工三类AI与网络大数据的赋能

融智学视角下的“集大成”范式革命&#xff1a;AI与大数据的终极赋能 一、化繁为简的工具革命&#xff1a;AI与大数据的三重解构 信息压缩的数学本质 Kolmogorov复杂度极限突破&#xff1a; K_AI(x)min_p∈P_NN ℓ(p)λ⋅dist(U(p),x) &#xff08;神经网络程序p的描述长度语…...

【2025】Visio 2024安装教程保姆级一键安装教程(附安装包)

前言 大家好&#xff01;最近很多朋友在问我关于Visio 2024的安装问题&#xff0c;尤其是对于那些需要制作专业流程图和组织结构图的小伙伴来说&#xff0c;这款软件简直是必不可少的办公神器&#xff01;今天就给大家带来这篇超详细保姆级的Visio 2024安装教程&#xff0c;不…...

C++【继承】

继承 1.继承1.1 继承的概念1.2继承的定义1.2.1定义格式1.2.2继承基类成员访问方式的变化 1.3继承模板 2.基类和派生类之间的转换 1.继承 1.1 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许我们在保持原有类特性的基础上…...

理解字、半字与字节 | 从 CPU 架构到编程实践的数据类型解析

注&#xff1a;本文为 “字、半字、字节” 相关文章合辑。 略作重排&#xff0c;未全校。 如有内容异常&#xff0c;请看原文。 理解计算机体系结构中的字、半字与字节 在计算机科学中&#xff0c;理解“字 (Word)”、“半字 (Half-Word)”和“字节 (Byte)”等基本数据单元的…...

VMware搭建ubuntu保姆级教程

目录 VMware Ubuntu 虚拟机配置指南 创建虚拟机 下载 Ubuntu ISO 新建虚拟机 网络配置&#xff08;双网卡模式&#xff09; 共享文件夹设置 SSH 远程访问配置 VMware Ubuntu 虚拟机配置指南 创建虚拟机 下载 Ubuntu ISO 【可添加我获取】 官网&#xff1a;Get Ubunt…...

内容社区系统开发文档

1 系统分析 1.1 项目背景 1.2 需求分析 2 系统设计 2.1 系统功能设计 2.2 数据库设计 2.2.1 数据库需求分析 2.2.2 数据库概念结构设计 2.2.3 数据库逻辑结构设计 2.2.4 数据库物理结构设计 2.2.5 数据库视图设计 2.2.6 函数设计 2.2.7 存储过程设计 2.2.8 触发器…...

Ubuntu开放端口

在 Ubuntu 中&#xff0c;我们可以使用 ufw (Uncomplicated Firewall) 来管理防火墙。以下是打开 80 和 8090 端口的步骤&#xff1a; 首先检查防火墙状态 sudo ufw status 如果防火墙没有启用&#xff0c;先启用它&#xff1a; sudo ufw enable 允许 80 端口&#xff08;…...

PyTorch 与 TensorFlow 中基于自定义层的 DNN 实现对比

深度学习双雄对决&#xff1a;PyTorch vs TensorFlow 自定义层大比拼 目录 深度学习双雄对决&#xff1a;PyTorch vs TensorFlow 自定义层大比拼一、TensorFlow 实现 DNN1. 核心逻辑 二、PyTorch 实现自定义层1. 核心逻辑 三、关键差异对比四、总结 一、TensorFlow 实现 DNN 1…...

质量员考试案例题有哪些常见考点?

质量员考试案例题常见考点如下&#xff1a; 施工质量控制 施工工艺与工序&#xff1a;如混凝土浇筑时的振捣时间、方法&#xff0c;若振捣不充分会导致混凝土出现蜂窝、麻面等质量问题。 施工环境&#xff1a;例如在高温天气下进行砌筑作业&#xff0c;未对砌块进行适当处理或…...

Axure疑难杂症:深度理解与认识“事件”“动作”(玩转交互)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:深度理解与认识“事件”“动作” 主要内容:事件、动作定义、本质、辩证关系、执行顺序 应用场景:原型交互 …...

【AI知识库云研发部署】RAGFlow + DeepSeek

gpu 安装screen&#xff1a;yum install screen 配置ollama&#xff1a; 下载官方安装脚本并执行&#xff1a; curl -fsSL https://ollama.com/install.sh | sh 通过screen后台运行ollama&#xff1a;screen -S ollama 在screen会话中启动服务&#xff1a; export OLLA…...

HTML07:表格标签

表格 基本结构 单元格行列跨行跨列 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>表格学习</title><style>td {text-align: center;vertical-align: middle;}</style> </he…...

【专家库】Kuntal Chowdhury

昆塔尔乔杜里 Kuntal Chowdhury 是 NVIDIA 的 6G 开发者关系经理和技术布道师。他致力于推动与 NVIDIA 平台和工具的开发者和早期采用者生态系统的联系&#xff0c;以促进 6G 研究社区的蓬勃发展。在此之前&#xff0c;他是 BlueFusion, Inc. 的创始人&#xff0c;这是一家创新…...

IAA-Net:一种实孔径扫描雷达迭代自适应角超分辨成像方法——论文阅读

IAA-Net:一种实孔径扫描雷达迭代自适应角超分辨成像方法 1. 论文的研究目标与实际意义1.1 研究目标1.2 实际问题与产业意义2. 论文的创新方法、公式与优势2.1 方法框架与核心步骤2.2 核心公式与推导2.2.1 回波模型与目标函数2.2.2 正则化加权矩阵设计2.2.3 迭代更新公式2.2.4 …...

[论文阅读]MCP Guardian: A Security-First Layer for Safeguarding MCP-Based AI System

MCP Guardian: A Security-First Layer for Safeguarding MCP-Based AI System http://arxiv.org/abs/2504.12757 推出了 MCP Guardian&#xff0c;这是一个框架&#xff0c;通过身份验证、速率限制、日志记录、跟踪和 Web 应用程序防火墙 &#xff08;WAF&#xff09; 扫描来…...

提示词工程:通向AGI时代的人机交互艺术

‌引言&#xff1a;从基础到精通的提示词学习之旅‌ 欢迎来到 ‌"AGI时代核心技能"‌ 系列课程的第二模块——‌提示词工程‌。在这个模块中&#xff0c;我们将系统性地探索如何通过精心设计的提示词&#xff0c;释放大型语言模型的全部潜力&#xff0c;实现高效、精…...

地级市-机器人、人工智能等未来产业水平(2009-2023年)-社科数据

地级市-机器人、人工智能等未来产业水平&#xff08;2009-2023年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90623814 https://download.csdn.net/download/paofuluolijiang/90623814 此数据集统计了2009-2023年全国地级市在机器人、人工智能等…...

神经网络中之多类别分类:从基础到高级应用

神经网络中之多类别分类&#xff1a;从基础到高级应用 摘要 在机器学习领域&#xff0c;多类别分类是解决复杂问题的关键技术之一。本文深入探讨了神经网络在多类别分类中的应用&#xff0c;从基础的二元分类扩展到一对多和一对一分类方法。我们详细介绍了 softmax 函数的原理…...

破解工业3D可视化困局,HOOPS Visualize助力高效跨平台协作与交互!

一、当前3D可视化面临的痛点 &#xff08;1&#xff09;性能瓶颈 现有的许多3D可视化工具在处理大型复杂模型时往往力不从心。例如在航空航天、汽车制造等高端制造业&#xff0c;动辄涉及数以亿计的三角面片和海量的纹理细节。这些超大规模的模型在渲染时常常出现卡顿、延迟&…...

感知器准则感知器神经元模型——等价

不同的东西&#xff0c;很多刊物有误。但两者等价。 感知器神经元模型的误差反馈学习 y y y&#xff1a;期望值 y ^ \hat{y} y^​&#xff1a;实际输出值 权重更新公式为&#xff1a; w i ← w i η ( y − y ^ ) x i w_i \leftarrow w_i \eta(y - \hat{y})x_i wi​←wi​…...

Qt学习Day0:Qt简介

0. 关于Qt Qt是C的实践课&#xff0c;之前在C中学习的语法可以有具体的应用场景。Qt的代码量很大&#xff0c;不要死记硬背&#xff0c;学会查询文档的能力更加重要。 建议提升一下相关单词的储备量&#xff1a; 1. Qt是什么&#xff1f; Qt是一个基于C语言的图形用户界面&a…...

JAVA设计模式——(十二)原型模式(Prototype Pattern)

JAVA设计模式——&#xff08;十二&#xff09;原型模式&#xff08;Prototype Pattern&#xff09; 介绍理解实现Email类测试 应用 介绍 用原型实例指定创建对象的种类&#xff0c;并且通过复制原型已有的对象用于创建新的对象。 理解 原型实例便是我们需要复制的类的实例&…...

C++命名空间

什么是命名空间 命名空间是一种用来避免命名冲突的机制&#xff0c;它可以将一段代码的名称隔离开&#xff0c;使其与其他代码的名称不冲突 简单来说,就是编译器检测到相同的名称的函数,变量,或者其他的相同名称的东西,也许会有疑问,怎么能出现相同的名称的变量呢.这就是C引入的…...

Hello Robot 推出Stretch 3移动操作机器人 提升开源与可用性

Stretch 3机器人是Hello Robot推出的新一代移动操作机器人&#xff0c;专注于提升开源开发与实际应用能力。它结合了先进的设计理念和工程技术&#xff0c;旨在为家庭任务和辅助技术提供智能化解决方案。通过优化硬件性能和软件兼容性&#xff0c;这款机器人不仅增强了灵活性&a…...

[Linux_69] 数据链路层 | Mac帧格式 | 局域网转发 | MTU MSS

目录 0.引入 1.以太网帧格式 2.重谈局域网转发的原理(基于协议) 小结 3.认识MTU 3.1MTU对IP协议的影响 3.2MTU对UDP协议的影响 3.3MTU对于TCP协议的影响 0.引入 在去年的这篇文章中&#xff0c;我们有对网络进行过一个概述[Linux#47][网络] 网络协议 | TCP/IP模型 | 以…...

I2C总线驱动开发:MPU6050应用

引言 I2C&#xff08;Inter-Integrated Circuit&#xff09;总线作为嵌入式系统中广泛使用的通信协议&#xff0c;在传感器、外设控制等领域扮演着重要角色。本文将深入探讨I2C总线的工作原理、Exynos4412平台裸机驱动实现、Linux内核中的I2C子系统架构&#xff0c;并以MPU605…...

15.命令模式:思考与解读

原文地址:命令模式&#xff1a;思考与解读 更多内容请关注&#xff1a;深入思考与解读设计模式 引言 在软件开发中&#xff0c;尤其是当系统涉及多个请求、操作或任务时&#xff0c;你是否遇到过这样的情况&#xff1a;每个操作都有自己的执行逻辑&#xff0c;且这些操作可能…...

2025年软件工程与数据挖掘国际会议(SEDM 2025)

2025 International Conference on Software Engineering and Data Mining 一、大会信息 会议简称&#xff1a;SEDM 2025 大会地点&#xff1a;中国太原 收录检索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等 二、会议简介 2025年软件开发与数据挖掘国际会议于…...

博客系统测试报告

文章目录 目录1. 项目背景2. 项目简介3. 测试工具4. 测试用例5. 功能测试6. 性能测试7. 弱网测试8. 自动化测试9. bug简述10. 测试结论 目录 项目背景项目简介测试工具测试用例功能测试性能测试弱网测试自动化测试bug简述测试结论 1. 项目背景 为了将平时自己写的笔记、知识…...

window 显示驱动开发-线程同步和 TDR

下图显示了 Windows 显示驱动程序模型 (WDDM) 中显示微型端口驱动程序的线程同步的工作原理 如果发生硬件超时&#xff0c;则会启动 超时检测和恢复 (TDR) 进程。 GPU 计划程序调用驱动程序的 DxgkDdiResetFromTimeout 函数&#xff0c;这将重置 GPU。 DxgkDdiResetFromTimeou…...