Linux入门攻坚——39、Nginx入门

Nginx:engine X
    Tengine:淘宝改进维护的版本
    Registry:

使用了libevent库:高性能的网络库
    epoll()函数

Nginx特性
  模块化设计、较好的扩展性;(但不支持动态加载模块功能,淘宝的版本支持)
  高可靠性:一个主控进程master,多个子进程worker
    master  -->  worker
  低内存消耗:
    10K个keep-alive模式下的connection,仅需2.5MB的内存;
  支持热部署:配置文件等更新,无需重启,就可以更新,即不停机而更新配置文件、日志文件滚动、升级程序版本;
  支持事件驱动、AIO(异步IO)、mmap;

Nginx基本功能
  静态资源的web服务器,能缓存打开的文件描述符;
  http、smtp、pop3协议的反向代理服务器;
  缓存加速、负载均衡;
  支持FastCGI(fpm,LNMP),uWSGI(Python)等;
  模块化(非DSO机制)、过滤器zio、SSI及图像的大小调整;
  支持SSL;
    反向代理服务器:反向代理服务器位于用户与目标服务器之间,但对用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
  ● 正向代理和代理服务器
正向代理即通常所说的代理,用于代表内部网络用户向Internet上的服务器(或称外部服务器,通常为Web服务器)发出连接请求,并接收响应结果,执行该代理功能的服务器称为代理服务器。使用代理服务器访问外部网络时,客户端必须在局域网设置中指明代理服务器的地址以及要代理的服务的端口号。
  ● 反向代理和代理服务器
反向代理的方向与正向代理相反,指代表外部网络用户向内部服务器发出请求,即接收来自Internet上用户的连接请求,并将这些请求转发给内部网络上的服务器,然后将从内部服务器上得到的响应返回给Internet上请求连接的客户:执行反向代理服务的服务器称为反向代理服务器,反向代理服务器对外部用户表现为一个服务器。

反向代理服务器具有负载均衡功能和缓存加速功能。

Nginx扩展功能
  基于名称和IP的虚拟主机;
  支持keepalive
  支持平滑升级
  定制访问日志、支持使用日志缓冲区提供日志存储性能;
  支持url rewrite
  支持路径别名
  支持基于IP及用户的访问控制
  支持速率限制,支持并发数限制
Nginx的基本架构
  一个master进程,生成一个或多个worker进程
  事件驱动:epoll(边缘触发)、kqueue、/dev/poll
    复用器支持:select,poll,rt signal
    支持sendfile,sendfile64
    支持AIO,mmap

sendfile:对一个客户端请求的资源的读写过程基本如下:用户空间进程-->read系统调用-->磁盘IO将文件从磁盘DMA到内核空间缓存-->内存拷贝到用户空间缓存-->打包为响应报文 -->send系统调用 --> 用户空间缓存拷贝到内核写缓存-->网络IO,通过网卡发送。sendfile则是从磁盘-->内核缓存 --> 内核网络缓存,减少了数据拷贝,加快速度。

Nginx的工作模式:非阻塞、事件驱动、由一个master进程生成多个worker线程,每个worker响应n个请求;worker * n

Nginx的模块类型
  核心模块
  Standard HTTP modules
  Optional HTTP modules
  Mail modules
  3rd party modules

Nginx的安装方法:
  源码:编译安装
  制作好的程序包:rpm包

Nginx的编译安装
  1)下载一个源码包:nginx-1.6.3.tar.gz 
   2)编译需要的程序包:pcre-devel,pcre-devel‌是一个开发工具包,包含了用于编写和编译使用Perl兼容正则表达式(PCRE——Perl Compatible Regular Expressions)的程序的库文件和头文件。PCRE库提供了一系列函数,用于文本匹配和处理,广泛应用于各种编程语言和软件工具中‌。
    yum install pcre-devel
    3)执行./configure,可以使用 --help查看帮助:

--with开头的一般是默认没有启动,需要配置启动的,--without开头的一般是默认启动,如不需要需要配置关闭。

编译参数可能会根据版本的不同进行变化,./configure --help查看编译参数列表,常见的选项如下:
--prefix=<path> - 安装路径,如果没有指定,默认为/usr/local/nginx。 
--sbin-path=<path> - nginx可执行命令的文件,如果没有指定,默认为<prefix>/sbin/nginx。 
--conf-path=<path> - 在没有使用-c参数指定的情况下nginx.conf的默认位置,如果没有指定,默认为<prefix>/conf/nginx.conf。 
--pid-path=<path> - nginx.pid的路径,如果没有在nginx.conf中通过“pid”指令指定,默认为<prefix>/logs/nginx.pid。 
--lock-path=<path> - nginx.lock文件路径,如果没有指定,默认为<prefix>/logs/nginx.lock。 
--error-log-path=<path> - 当没有在nginx.conf中使用“error_log”指令指定时的错误日志位置,如果没有指定,默认为<prefix>/logs/error.log。 
--http-log-path=<path> - 当没有在nginx.conf中使用“access_log”指令指定时的访问日志位置,如果没有指定,默认为<prefix>/logs/access.log。 
--user=<user> - 当没有在nginx.conf中使用“user”指令指定时nginx运行的用户,如果没有指定,默认为“nobody”。 
--group=<group> - 当没有在nginx.conf中使用“user”指令指定时nginx运行的组,如果没有指定,默认为“nobody”。 
--builddir=DIR - 设置构建目录。 
--with-rtsig_module - 启用rtsig模块。
--with-select_module –without-select_module - 如果在configure的时候没有发现kqueue, epoll, rtsig或/dev/poll其中之一,select模块始终为启用状态。 
--with-poll_module –without-poll_module - 如果在configure的时候没有发现kqueue, epoll, rtsig或/dev/poll其中之一,poll模块始终为启用状态。 
--with-http_ssl_module - 启用ngx_http_ssl_module,启用SSL支持并且能够处理HTTPS请求。需要OpenSSL,在Debian系统中,对应的包为libssl-dev。 
--with-http_realip_module - 启用ngx_http_realip_module 
--with-http_addition_module - 启用ngx_http_addition_module 
--with-http_sub_module - 启用ngx_http_sub_module 
--with-http_dav_module - 启用ngx_http_dav_module 
--with-http_flv_module - 启用ngx_http_flv_module 
--with-http_stub_status_module - 启用”server status”(服务状态)页 
--without-http_charset_module - 禁用ngx_http_charset_module 
--without-http_gzip_module - 禁用ngx_http_gzip_module,如果启用,需要zlib包。 
--without-http_ssi_module - 禁用ngx_http_ssi_module 
--without-http_userid_module - 禁用ngx_http_userid_module 
--without-http_access_module - 禁用ngx_http_access_module 
--without-http_auth_basic_module - 禁用ngx_http_auth_basic_module 
--without-http_autoindex_module - 禁用ngx_http_autoindex_module 
--without-http_geo_module - 禁用ngx_http_geo_module 
--without-http_map_module - 禁用ngx_http_map_module 
--without-http_referer_module - 禁用ngx_http_referer_module 
--without-http_rewrite_module - 禁用ngx_http_rewrite_module。如果启用,需要PCRE包。 
--without-http_proxy_module - 禁用ngx_http_proxy_module 
--without-http_fastcgi_module - 禁用ngx_http_fastcgi_module 
--without-http_memcached_module - 禁用ngx_http_memcached_module 
--without-http_limit_zone_module - 禁用ngx_http_limit_zone_module 
--without-http_empty_gif_module - 禁用ngx_http_empty_gif_module 
--without-http_browser_module - 禁用ngx_http_browser_module 
--without-http_upstream_ip_hash_module - 禁用ngx_http_upstream_ip_hash_module 
--with-http_perl_module - 启用ngx_http_perl_module 
--with-perl_modules_path=PATH - 为perl模块设置路径 
--with-perl=PATH - 为perl库设置路径 
--http-client-body-temp-path=PATH - 为http连接的请求实体临时文件设置路径,如果没有指定,默认为<prefix>/client_body_temp 
--http-proxy-temp-path=PATH - 为http代理临时文件设置路径,如果没有指定,默认为<prefix>/proxy_temp 
--http-fastcgi-temp-path=PATH - 为http fastcgi临时文件设置路径,如果没有指定,默认为<prefix>/fastcgi_temp 
--without-http - 禁用HTTP服务 
--with-mail - 启用IMAP4/POP3/SMTP代理模块 
--with-mail_ssl_module - 启用ngx_mail_ssl_module 
--with-cc=PATH - 设置C编译器路径 
--with-cpp=PATH - 设置C预处理器路径 
--with-cc-opt=OPTIONS - 变量CFLAGS中附加的参数,用于FreeBSD中的PCRE库,同样需要指定–with-cc-opt=”-I /usr/local/include”,如果我们使用select()函数则需要同时增加文件描述符数量,可以通过–with-cc-opt=”-D FD_SETSIZE=2048”指定。 
--with-ld-opt=OPTIONS - 通过连接器的附加参数,用于FreeBSD中的PCRE库,同样需要指定–with-ld-opt=”-L /usr/local/lib”。 
--with-cpu-opt=CPU - 指定编译的CPU,可用的值为: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64 
--without-pcre - 禁用PCRE库文件,同时将禁用HTTP rewrite 模块,如果要在”location”指令中使用正则表达式,同样需要PCRE库。
--with-pcre=DIR - 设置PCRE库源文件路径。 
--with-pcre-opt=OPTIONS - 在编译时为PCRE设置附加参数。 
--with-md5=DIR - 设置md5库源文件路径。 
--with-md5-opt=OPTIONS - 在编译时为md5设置附加参数。 
--with-md5-asm - 使用md5汇编源。 
--with-sha1=DIR - 设置sha1库源文件路径。 
--with-sha1-opt=OPTIONS - 在编译时为sha1设置附加参数。 
--with-sha1-asm - 使用sha1汇编源。 
--with-zlib=DIR - 设置zlib库源文件路径。 
--with-zlib-opt=OPTIONS - 在编译时为zlib设置附加参数。 
--with-zlib-asm=CPU - 为指定的CPU使用zlib汇编源进行优化,可用值为: pentium, pentiumpro。 
--with-openssl=DIR - 设置openssl库源文件路径。 
--with-openssl-opt=OPTIONS - 在编译时为openssl设置附加参数。 
--with-debug - 启用debug记录。 
--add-module=PATH - 增加一个在PATH中的第三方模块。 
--user 和--group指定运行使用的用户和组,先建立:
groupadd -r nginx
useradd -g niginx -r nginx
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
make && make install
mkdir -pv /var/tmp/nginx/{client,fastcgi,proxy,uwsgi}

启动nginx:/usr/local/nginx/sbin/nginx
查看启动结果:ss -tnlp

80端口是nginx在监听。使用ps aux查看进程:

一个master process,一个worker process。

4)访问测试:http://192.168.147.133

5)在配置文件/etc/nginx/nginx.conf中,能看到配置项:worker_processes  1,所以在ps中看到worker进程只有一个。

Nginx配置文件
  main配置段:全局配置段
  event:定义event模型工作特性
  http {} :定义http协议相关配置

  配置指令:要以分号结尾
  语法格式:directive value1 [value2...]

  支持使用变量:
    内置变量:模块会提供自带内建变量定义
    自定义变量:set var_name value

  主配置段的指令:
    用于调试、定位问题
    正常运行必备的配置
    优化性能的配置
    事件相关的配置

Niginx的I/O模型
  non-blocking、event-driven、aio

主配置段的指令
  正常运行的必备配置:
    1、user USERNAME [GROUPNAME],指定运行worker的用户和组:user nginx nginx
    2、pid /path/to/pid_file,指定nginx守护进程的pid文件:pid /var/run/nginx/nginx.pid
    3、worker_rlimit_nofile #,指定所有worker进程所能打开的最大文件句柄数 
    4、worker_rlimit_core #,
  性能优化相关的配置
    1、worker_processes #,worker进程的打开个数,通常应略少于CPU物理核心数;
    2、worker_cpu_affinity cpumask...,
        优点:提升缓存的命中率;
        context switch:会产生CPU的不必要的消耗;
      cpumask:使用8位:0000 0001等
    3、timer_resolution,计时器解析度,降低此值,可减少gettimeofday()系统调用次数;
    4、worker_priority number,指明worker进程的nice值:-20,19 --> 100,139
  事件相关的配置
    1、accept_mutex {off | on},master调度用户请求至各worker进程时使用的负载均衡锁,on表示能让多个worker轮流地、序列化地去响应新请求;
    2、lock_file file,accept_mutex用到的锁文件路径;
    3、use  [epoll | rssig | select | poll],指明使用的事件模型,建议让Nginx自行选择;
    4、worker_connections #,设定单个worker进程所能处理的最大并发连接数量; 

  用于调试、定位问题的配置
    1、daemon {on | off},是否以守护进程方式运行nginx,调试时应该设置为off;
    2、master_process {on | off},是否以master/worker模型来运行nginx;调试时可以设置为off;
    3、error_log 位置 级别,若要使用debug级别,需要在编译nginx时使用了--with_debug选项;

总结:常需要进行调整的参数
  worker_processes,worker_connections,worker_cpu_affinity,worker_priority

新改动配置生效的方式
  nginx -s reload    或者:stop,quit,reopen

Nginx作为Web服务器时使用的配置
  http {  }:由ngc_http_core_module模块所引入;
配置框架
  http{
    upstream{}
    server{
        location URL{
            root “/path/to/somedir”;
            ...
         } # 类似于httpd中的<Location>,用于定义URL与本地文件系统的映射关系;
        location URL {
            if ... {
                ...
            }
        }
    } # 每个server类似于httpd中的一个<VirtualHost>;
     server{ ... } 
}
注意:与http相关的指令仅能够放置于http、server、location、upstream、if上下文,但有些指令仅应用于这5种上下文中的某些种;

配置指令
  1、server {},定义一个虚拟主机。

  2、listen ,指定监听地址和端口
    listen address[:port]、listen port 、listen unix:path

  3、server_name NAME [。。。];后可跟多个主机,名称还可使用正则表达式(~)或通配符;
    (1)先做精确匹配检查;
    (2)左侧通配符匹配检查:*.ceshi.com
    (3)右侧通配符检查:mail.*
    (4)正则表达式匹配检查:~^.*\.ceshi\.com$
    (5)default_server;

  4、root path;设置资源;路径映射,用于指明请求的URL所对应的资源所在的文件系统上的起始路径;

  5、location [ = | ~ | ~* | ^~] uri {...}
        location @name {...}
        功能:允许根据用户请求的URI来匹配定义的各location:匹配到时,此请求将被相应的location配置块中的配置所处理,例如做访问控制等功能。
        =:精确匹配检查
        ~:正则表达式模式匹配检查,区分字符大小写;
        ~*:正则表达式模式匹配检查,不区分字符大小写;
        ^~:URI的前半部分匹配,不支持正则表达式;
  匹配的优先级:精确匹配(=)、^~、~、~*、不带任何符号的location;

  6、alias path;用于location配置段,定义路径别名
    注意:root表示指明路径为对应的location "/" URL;alias表示路径映射,即location指令后定义的URL是相对于alias所指明的路径而言;
    location /images/ {
        root /vhosts/web1;
    }
    http://www.ceshi.com/images/a.jpg  <-- /vhosts/web1/images/a.jpg
    location /images/ {
        alias /www/pic;
    }
    http://www.ceshi.com/images/a.jpg <-- /www/pic/a.jpg

  7、index file,默认主页面:index index.php index.html;

  8、error_page,错误页面:error_page code [...] [ =code ] URI | @name
    根据http响应状态码来指明特定的错误页面;
    error_page 404  /404_customed.html
    [ = code ]:以指定的响应码进行响应,而不是默认的原来的响应,默认表示以新资源的响应码为其响应码;

=号的使用效果:

  9、基于IP的访问控制机制
    allow IP/Network;
    deny IP/Network;

只放行一个网段:

  10、基于用户的访问控制
    basic,digest
    auth_basic “”;
    auth_basic_user_file  /PATH/TO/PASSWD_FILE;  账号密码文件建议使用htpasswd来创建。

提示信息好像没有显示出来。

  11、https服务器
      生成私钥,生成证书签署请求,并获得证书;
      

在私有CA目录下生成CA的私钥,放置在private子目录中:
(umask 077;openssl genrsa -out private/cakey-nginx.pem 2048)
生成自签证书,位于CA目录:
openssl req -new -x509 -key private/cakey-nginx.pem -out cacert-nginx.pem -days 365
以上是创建私有CA的步骤,以下是为nginx服务器生成证书:
nginx服务器自身生成私钥:
(umask 077;openssl genrsa -out nginx.key 1024)
nginx服务器生成证书签发申请文件:
openssl req -new -key nginx.key -out nginx.csr
注意这一步中的CN要写准确网址,这个网址是对外服务的网址,如这里使用www.myngx.com
CA签发证书:
openssl ca -in nginx.csr -out nginx.crt -days 365
配置nginx的配置文件:

nginx重新加载配置后:

客户端修改一下hosts文件:

客户端可以以www.myngx.com访问:

因为私有CA证书没有导入浏览器,浏览器无法验证服务器证书,选择继续访问,可以https访问网站了。

  12、stub_status {on | off},仅能用于location上下文

  13、rewrite regex replacement flag,URL重写(重定向),如:
      rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;
      http://www.myngx.com/images/a/b/c/1.jpg --> /imgs/a/b/c/1.jpg
    flag:
        last:一旦此rewrite规则重写完成后,不再被后面其他的rewrite规则进行处理,而是由User Agent重新对重写后的URL再一次发起请求,并从头开始执行类似的过程。
        break:一旦此rewrite规则重写完成后,由UserAgent对新的URL重新发起请求,且不再被当前location内的任何rewrite规则所检查。
        redirect:以302响应码(临时重定向)返回新的URL。
        permanent:以301响应码(永久重定向)返回新的URL。

  14、if,语法:if (condition) {...}
    应用环境:server,location
      condition:
        (1)变量名:变量值为空串,或者以“0”开始,则为false,其他均为true;
        (2)以变量为操作数构成的比较表达式,可使用=,!=等比较操作符进行测试;
        (3)正则表达式的模式匹配操作:
            ~:区分大小写的模式匹配检查;
            ~*:不区分大小写的模式匹配检查;
            !~和!~*:对上面两种测试取反;
        (4)测试路径为文件可能性:-f,!-f
        (5)测试指定路径为目录的可能性:-d,!-d
        (6)测试文件的存在性:-e,!-e
        (7)检查文件是否有执行权限:-x,!-x
    例如:if ($http_user_agent ~* MSIE){
                    rewrite ^(.*)$ /msie/$1 break;
                }

  15、防盗链
        location ~* \.(jpg|gif|jpeg|png)$ {
          valid_referer none blocked www.myngx.com;
          if ($invalid_referer) {
                rewrite ^/ http://www.myngx.com/xxx.html;
          }
        }

  16、定制访问日志格式
        log_format 

  注意:此处可用变量为nginx各模块内建变量。

网络连接相关的配置

  1、keepalive_timeout # :长连接的超时时长,默认75s;
  2、keepalive_requests #:在一个长连接上所能够允许请求的最大资源数;
  3、keepalive_disable [msie6|safari|none] :为指定类型的User Agent禁用长连接
  4、tcp_nodelay on|off :是否对长连接使用TCP_NODELAY选项;
  5、client_header_timeout #:读取http请求报文首部的超时时长;
  6、client_body_timeout # :读取http请求报文body部分的超时时长;
  7、send_timeout #:发送响应报文的超时时长;

fastcgi的相关配置:
  LNMP:php启用fpm模型;

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

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

相关文章

Asp.net core Autofac 案例 注入、AOP 启用接口代理拦截 启用 类代理拦截=== 只会拦截虚方法

资料 core 实现autofac 》》》 安装 如下工具包 安装之后 如出现 这种 》》》编写 AOP类 using Castle.DynamicProxy; using System.Diagnostics;namespace Web01.AOP {/// <summary>/// 日志记录/// </summary>public class LoggingInterceptor : IInterc…

网络安全事件管理

一、背景 信息化技术的迅速发展已经极大地改变了人们的生活&#xff0c;网络安全威胁也日益多元化和复杂化。传统的网络安全防护手段难以应对当前繁杂的网络安全问题&#xff0c;构建主动防御的安全整体解决方案将更有利于防范未知的网络安全威胁。 国内外的安全事件在不断增…

详谈面试题:Vue、React为什么使用虚拟DOM

虚拟DOM是一种在前端框架中广泛使用的技术&#xff0c;它可以提升开发效率。那么国外流行的框架svelte没有使用虚拟DOM&#xff0c;而是直接操作真实DOM&#xff0c;效率依然很高。为什么Vue和React不采用这种方式呢&#xff1f; 目录 一、框架设计 二、解耦运行环境 三、总…

前端JavaScript(一)---基本介绍

Javascript是一种由Netscape(网景)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言&#xff0c;主要目的是为了解决服务器端语言&#xff0c;比如Perl&#xff0c;遗留的速度问题&#xff0c;为客户提供更流畅的浏览效果。当时服务端需要对…

(免费送源码)计算机毕业设计原创定制:Java+B/S+SSM+Web前端开发技术+IDEA+MySQL+Navicat 有风小院

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对有风小院等问题&#xff0c;对有风小院信息…

Soul App创始人张璐团队亮相GITEX GLOBAL 2024,展示多模态AI的交互创新

随着全球AI领域的竞争加剧,越来越多的科技巨头和创新企业纷纷致力于多模态AI的开发。2024年10月14日至18日,GITEX GLOBAL海湾信息技术博览会在迪拜举行,吸引了超过6700家全球科技巨头和创新公司参与,展示了智能互联、人工智能等领域的新成果。 此次展会中,Soul App创始人张璐团…

新版布谷直播软件源码开发搭建功能更新明细

即将步入2025年也就是山东布谷科技专注直播系统开发,直播软件源码出售开发搭建等业务第9年,山东布谷科技不断更新直播软件功能&#xff0c;以适应当前新市场环境下的新要求。山东布谷科技始终秉承初心&#xff0c;做一款符合广大客户需求的直播系统软件。支持广大客户提交更多个…

Dockerfile打包部署

Dockerfile打包 先找到打包完的目录下创建一个Dockerfile文件 touch Dockerfile 进去文件内编写 vim Dockerfile # 基础镜像 FROM openjdk:8 # author MAINTAINER yxh # 挂载目录 VOLUME /home/project # 创建目录 RUN mkdir -p /home/project # 指定路径 WORKDIR /home/pr…

c++趣味编程玩转物联网:基于树莓派Pico控制有源蜂鸣器

有源蜂鸣器是一种简单高效的声音输出设备&#xff0c;广泛应用于电子报警器、玩具、计时器等领域。在本项目中&#xff0c;我们结合树莓派Pico开发板&#xff0c;通过C代码控制有源蜂鸣器发出“滴滴”声&#xff0c;并解析其中涉及的关键技术点和硬件知识。 一、项目概述 1. 项…

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化&#xff1f; 重要性&#xff1a;★★ NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…

路由引入中次优路由和路由环路问题

A公司用的是IS-IS&#xff0c;B公司用的是OSPF&#xff0c;现在这两个公司要合并&#xff0c;网络要相通 项目目标 前期准备 配置IP地址&#xff1a;完成IP地址规划&#xff0c;A公司和B公司内部网络通过路由器R2和R4环回接口模拟。配置路由器接口的IP地址并测试所有直连链路的…

shell脚本基础学习_总结篇(完结)

细致观看可以&#xff0c;访问shell脚本学习专栏&#xff0c;对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义&#xff1a; 2. 主要特点&#xff1a; 3. shell脚本的基本结构 4. S…

光伏功率预测!Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型时序预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN五模型多变量时序光伏功率预测 (Matlab2023b 多输入单输出) 1.程序已经调试好&#xff0c;替换数据集后&#xff0c;仅运行一个main即可运行&#xff0c;数据格式…

Postman定义公共函数

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Postman定义公共函数 在postman中&#xff0c;如下面的代码&#xff1a; 1、返回元素是否与预期值一致 var assertEqual(name,actual,expected)>{tests[…

SpringAI:Java 开发的智能新利器

一、SpringAI 简介 随着人工智能技术的飞速发展&#xff0c;越来越多的开发者开始探索如何将 AI 能力集成到现有的应用中来提升产品的智能化水平。Spring AI 正是为 Java 开发者提供的一款强大的 AI 框架&#xff0c;使得这一集成过程变得前所未有的简单和高效。 本文将深入探…

javaweb-day02-JS(javascript)

1.JavaScript引入 &#xff08;1&#xff09;引入方式 2.JS语法 2.1 书写语法 2.2 变量 &#xff08;1&#xff09;var关键字定义的是全局变量&#xff1b; &#xff08;2&#xff09;可以重复声明&#xff1b; 2.3 数据类型&运算符 &#xff08;1&#xff09;数据类型…

极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【三】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

七牛云AIGC内容安全方案助力企业合规创新

随着人工智能生成内容(AIGC)技术的飞速发展,内容审核的难度也随之急剧上升。在传统审核场景中,涉及色情、政治、恐怖主义等内容的标准相对清晰明确,但在AIGC的应用场景中,这些界限变得模糊且难以界定。用户可能通过交互性引导AI生成违规内容,为审核工作带来了前所未有的不可预测…

Python语法基础(三)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 我们这篇文章来说一下函数的返回值和匿名函数 函数的返回值 我们先来看下面的这一段函数的定义代码 # 1、返回值的意义 def func1():print(111111111------start)num166print…

导入100道注会cpa题的方法,导入试题,自己刷题

一、问题描述 复习备考的小伙伴们&#xff0c;往往希望能够利用零碎的时间和手上的试题&#xff0c;来复习和备考 用一个能够导入自己试题的刷题工具&#xff0c;既能加强练习又能利用好零碎时间&#xff0c;是一个不错的解决方案 目前市面上刷题工具存下这些问题 1、要收费…