Nginx介绍,nginx高级应用,nginx虚拟主机配置

HTTP介绍

在应用层 : HTTP,FTP,ssh,SMTP,POP3

网络层: TCP,UDP

TCP:可靠的,

UDP:不可靠的,直播,视频 qq 微信

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)

1、HTTP 工作原理

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器有:Nginx,Apache服务器,IIS服务器(Internet Information Services)等。

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

HTTP三点注意事项:

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。·

下面实例是典型的使用GET来传递数据的实例:

客户端请求:

Connected to www.testpm.cn (47.244.247.240) port 80 (#0)
> GET /hello.txt HTTP/1.1   # 请求方式与版本协议。
> User-Agent: curl/7.29.0   #用什么客户端访问
> Host: www.testpm.cn  #主机名,域名。主机和端口号,
> Accept: */*  #匹配什么文件类型,“*” 是通用匹配。匹配所有类型

服务端响应:

< HTTP/1.1 200 OK       #请求返回的状态码
< Server: nginx/1.16.0  #请求的服务和版本号
< Date: Thu, 04 Jul 2019 08:19:40 GMT
< Content-Type: text/plain #文本类型,有html,plain:普通文本
< Content-Length: 12
< Last-Modified: Thu, 04 Jul 2019 08:13:25 GMT
< Connection: keep-alive  #是否支持长连接
< ETag: "5d1db525-c"  #标识,每次访问如果与最开始的一样返回304否则校验不一致返回200
< Accept-Ranges: bytes

HTTP 请求方法

重点方法:

GET:单纯获取数据(获取一个index.html页面)

POST:上传/创建文件(会产生新的数据)

PUT:保存数据(覆盖/更新文件、图片等,不会产生新的数据)

DELETE:删除

HTTP的响应头部信息

HTTP 状态码

下面是常见的HTTP状态码:

  • 200 - 请求成功

  • 301 - 资源(网页等)被永久转移到其它URL

  • 302 - 资源(网页等)被临时转移到其它URL

  • 403 - 服务器理解请求客户端的请求,但是拒绝执行此请求

  • 404 - 请求的资源(网页等)不存在

  • 500 - 内部服务器错误

http状态码列表

nginx的介绍

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

为什么选择nginx

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。

IO多路复用

I/O multiplexing【多并发】

第一种方法就是最传统的多进程并发模型 (每进来一个新的I/O流会分配一个新的进程管理。)

第二种方法就是I/O多路复用 (单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流 。)

I/O multiplexing 这里面的 multiplexing 指的其实是在单个线程通过记录跟踪每一个Sock(I/O流)的状态来同时管理多个I/O流。发明它的原因,是尽量多的提高服务器的吞吐能力。

在同一个线程里面, 通过拨开关的方式,来同时传输多个I/O流

一个请求到来了,nginx使用epoll接收请求的过程是怎样的?

epoll 可以说是I/O 多路复用最新的一个实现,epoll 修复了poll 和select绝大部分问题, 比如:

• epoll 现在是线程安全的。

• epoll 现在不仅告诉你sock组里面数据,还会告诉你具体哪个sock有数据,你不用自己去找了

异步,非阻塞

$ pstree |grep nginx|-+= 81666 root nginx: master process nginx| |--- 82500 nobody nginx: worker process| \--- 82501 nobody nginx: worker process

1个master进程,2个work进程

每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker不会这么一直等着,他会在发送完请求后,注册一个事件:“如果upstream返回了,告诉我一声,我再接着干”。于是他就休息去了。这就是异步。此时,如果再有request 进来,他就可以很快再按这种方式处理。这就是非阻塞和IO多路复用。而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。这就是异步回调。

下载nginx

yum安装下载nginx

访问nginx的官方网站:nginx news

Nginx版本类型

Mainline version: 主线版,即开发版

Stable version: 最新稳定版,生产环境上建议使用的版本

Legacy versions: 遗留的老版本的稳定

配置yum源的官网:nginx: Linux packages  

# yum install yum-utils -y
cd /etc/yum.repos.d
vim nginx.repo
将下面的文件写入nginx.repo[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key#清理缓存
yum clean all
yum makecache fast
yum repolist
下载nginx
yum install nginx -y
#nginx -v   #-小v是查看nginx的版本
nginx version: nginx/1.16.0#nginx -V   #格式化打印
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

关闭防火墙与selinux

[root@nginx-server ~]# getenforce 
Enforcing[root@nginx-server ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config[root@nginx-server ~]# systemctl stop firewalld
[root@nginx-server ~]# systemctl disable firewalld

启动并设置开机自启动

[root@nginx-server ~]# systemctl start nginx 
[root@nginx-server ~]# systemctl enable nginx 

打开浏览器,输入ip访问

源码安装nginx及使用

#### 1、安装编译环境yum -y install gcc gcc-c++#### 2、安装pcre软件包(使nginx支持http rewrite模块)yum install -y pcre pcre-devel#### 3、安装openssl-devel(使nginx支持ssl)yum install -y openssl openssl-devel #### 4、安装zlibyum install -y zlib zlib-devel

创建用户

useradd  nginx

安装nginx

# wget http://nginx.org/download/nginx-1.16.0.tar.gz#tar xzf nginx-1.16.0.tar.gz -C /usr/local/    #cd   /usr/local/nginx-1.16.0/  进入这个文件才能编译# ./configure --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream# make && make install# mkdir /tmp/nginx

启动nginx的服务

得在
/usr/local/nginx/sbin/nginx  直接运行该命令即可启动nginx服务

通过nginx命令来控制nginx的服务

nginx -c /path/nginx.conf 以特定目录下的配置文件启动
nginx -s reload       # 修改配置后重新加载生效
nginx -s reopen       # 重新打开日志文件
nginx -s stop        # 快速停止nginx
nginx -s quit         # 完整有序的停止nginx
nginx -t     # 测试当前配置文件是否正确
nginx -t -c /path/to/nginx.conf # 测试特定的nginx配置文件是否正确

nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
1. Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
2. Nginx启动新的worker进程,采用新的配置文件
3. Nginx将新的请求分配新的worker进程
4. Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
5. 重复上面过程,直到全部旧的worker进程都被关闭掉

实现nginx开机自启(通过脚本实现)

[root@localhost ~]# vim /etc/init.d/nginx
#!/bin/sh 
# 
# nginx - this script starts and stops the nginx daemon 
# 
# chkconfig:  - 85 15  
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \ 
#              proxy and IMAP/POP3 proxy server 
# processname: nginx 
# config:      /etc/nginx/nginx.conf 
# config:      /etc/sysconfig/nginx 
# pidfile:    /var/run/nginx.pid # Source function library. 
. /etc/rc.d/init.d/functions# Source networking configuration. 
. /etc/sysconfig/network# Check that networking is up. 
[ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/nginxmake_dirs() { # make required directories user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; doif [ `echo $opt | grep '.*-temp-path'` ]; thenvalue=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then# echo "creating" $value mkdir -p $value && chown -R $user $value fifidone
} start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: "daemon $nginx -c $NGINX_CONF_FILE retval=$? echo[ $retval -eq 0 ] && touch $lockfile return $retval 
} stop() { echo -n $"Stopping $prog: "killproc $prog -QUIT retval=$? echo[ $retval -eq 0 ] && rm -f $lockfile return $retval 
} restart() { configtest || return $? stop sleep 1 start 
} reload() { configtest || return $? echo -n $"Reloading $prog: "killproc $nginx -HUP RETVAL=$? echo
} force_reload() { restart 
} configtest() { $nginx -t -c $NGINX_CONF_FILE 
} rh_status() { status $prog 
} rh_status_q() { rh_status >/dev/null 2>&1 
} case "$1" instart) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit 2 
esac

添加权限:

chmod +x /etc/init.d/nginx

重新加载系统启动文件

systemctl daemon-reload

启动并设置开机自启

systemctl start nginx
[root@localhost ~]# /sbin/chkconfig nginx on ---开机启动

Nginx的编译参数

# 查看 nginx 安装的模块
[root@localhost ~]#/usr/local/nginx/sbin/nginx -V
# 模块参数具体功能 
--with-cc-opt='-g -O2 -fPIE -fstack-protector    //设置额外的参数将被添加到CFLAGS变量。(FreeBSD或者ubuntu使用)
--param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' 
--with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/local/nginx                        //指向安装目录
--conf-path=/etc/nginx/nginx.conf                //指定配置文件
--http-log-path=/var/log/nginx/access.log        //指定访问日志
--error-log-path=/var/log/nginx/error.log        //指定错误日志
--lock-path=/var/lock/nginx.lock                 //指定lock文件
--pid-path=/run/nginx.pid                        //指定pid文件--http-client-body-temp-path=/var/lib/nginx/body    //设定http客户端请求临时文件路径
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi     //设定http fastcgi临时文件路径
--http-proxy-temp-path=/var/lib/nginx/proxy         //设定http代理临时文件路径
--http-scgi-temp-path=/var/lib/nginx/scgi           //设定http scgi临时文件路径
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi         //设定http uwsgi临时文件路径--with-debug                                        //启用debug日志
--with-pcre-jit                                     //编译PCRE包含“just-in-time compilation”
--with-ipv6                                         //启用ipv6支持
--with-http_ssl_module                              //启用ssl支持
--with-http_stub_status_module                      //获取nginx自上次启动以来的状态
--with-http_realip_module                 //允许从请求标头更改客户端的IP地址值,默认为关
--with-http_auth_request_module           //实现基于一个子请求的结果的客户端授权。如果该子请求返回的2xx响应代码,所述接入是允许的。如果它返回401或403中,访问被拒绝与相应的错误代码。由子请求返回的任何其他响应代码被认为是一个错误。
--with-http_addition_module               //作为一个输出过滤器,支持不完全缓冲,分部分响应请求
--with-http_dav_module                    //增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法 默认关闭,需编译开启
--with-http_geoip_module                  //使用预编译的MaxMind数据库解析客户端IP地址,得到变量值
--with-http_gunzip_module                 //它为不支持“gzip”编码方法的客户端解压具有“Content-Encoding: gzip”头的响应。
--with-http_gzip_static_module            //在线实时压缩输出数据流
--with-http_image_filter_module           //传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到)
--with-http_spdy_module                   //SPDY可以缩短网页的加载时间
--with-http_sub_module                    //允许用一些其他文本替换nginx响应中的一些文本
--with-http_xslt_module                   //过滤转换XML请求
--with-mail                               //启用POP3/IMAP4/SMTP代理模块支持
--with-mail_ssl_module                    //启用ngx_mail_ssl_module支持启用外部模块支持

修改配置文件/etc/nginx/nginx.conf

# 全局参数设置 
worker_processes  4;          #设置nginx启动进程的数量,一般设置成与逻辑cpu数量相同 
error_log  logs/error.log;    #指定错误日志 
worker_rlimit_nofile 102400;  #设置一个nginx进程能打开的最大文件数 
pid        /var/run/nginx.pid; 
events { worker_connections  1024; #设置一个进程的最大并发连接数 
}
# http 服务相关设置 
http { include      mime.types; default_type  application/octet-stream; log_format  main  'remote_addr - remote_user [time_local] "request" ''status body_bytes_sent "$http_referer" ''"http_user_agent" "http_x_forwarded_for"'; access_log  /var/log/nginx/access.log  main;    #设置访问日志的位置和格式 sendfile          on; #是否调用sendfile函数输出文件,一般设置为on,若nginx是用来进行磁盘IO负载应用时,可以设置为off,降低系统负载 gzip              on;      #是否开启gzip压缩,将注释去掉开启 keepalive_timeout  65;     #设置长连接的超时时间
# 虚拟服务器的相关设置 server { listen      80;        #设置监听的端口 server_name  localhost;        #设置绑定的主机名、域名或ip地址 charset koi8-r;        # 设置编码字符 location / { root  /var/www/nginx;           #设置服务器默认网站的根目录位置,需要手动创建index  index.html index.htm;    #设置默认打开的文档 } error_page  500 502 503 504  /50x.html; #设置错误信息返回页面 location = /50x.html { root  html;        #这里的绝对位置是/usr/local/nginx/html} } }

nginx.conf的组成:nginx.conf一共由三部分组成,分别为:全局块、events块、http块。在http块中又包含http全局块、多个server块。每个server块中又包含server全局块以及多个location块。在统一配置块中嵌套的配置快,各个之间不存在次序关系。

nginx日志文件详解

nginx 日志文件分为 **log_format** 和 **access_log** 两部分

log_format 定义记录的格式,其语法格式为

log_format        样式名称        样式详情

配置文件中默认有

vim /etc/nginx/nginx.conf将这四行都打开log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;之后/usr/local/nginx/sbin/nginx -t/usr/local/nginx/sbin/nginx -s reload 
会提醒你没有logs目录,你需要在/usr/local/nginx 下创建一个logs目录即可
mkdir /usr/local/nginx/logs

nginx高级应用:

使用alias实现虚拟目录:

location /test {alias   /var/www/qianfeng/;index  index.html; }location /test {root   /var/www/qianfeng/;index  index.html; }

root只能访问 location下的根

alias 只能访问 location下的别名

其他访问都是403  404

通过 stub_status 模块监控 nginx 的工作状态

首先得下载
yum -y install httpd-tools编辑 /etc/nginx/nginx.conf 配置文件
#添加以下内容~~ 
location /nginx-status { stub_status on; access_log    /var/log/nginx/nginxstatus.log;    #设置日志文件的位置 auth_basic    "nginx-status";    #指定认证机制(与location后面的内容相同即可) auth_basic_user_file    /etc/nginx/htpasswd;     #指定认证的密码文件 }创建认证口令文件并添加用户qianfeng和zdgg,密码用md5加密
# yum install -y httpd-tools 
#htpasswd 是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件htpasswd -c -m /etc/nginx/htpasswd 用户名         # -c 创建解密文件,-m MD5加密后面提示你输入密码

然后打开网页查询

客户端访问 http://ip/nginx-status 即可

Active connections: 2 
server accepts handled requests27 27 40 
Reading: 0 Writing: 1 Waiting: 1Active connections – 活跃的连接数量
server accepts handled requests — 总共处理了27个连接 , 成功创建27次握手, 总共处理了40个请求。
reading — 读取客户端的连接数。
writing — 响应数据到客户端的数量。
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。

使用 limit_rate 限制客户端传输数据的速度

vim /etc/nginx/nginx.conflocation / {root   /var/www/nginx/; index  index.html index.htm;limit_rate  2k;  #对每个连接的限速为2k/s   --可以单独添加这条命令到location内}

我在做实验时候,将一段视频导入我的网站默认发布页面,由于前一次做实验每次都是导入做图片,图片大小也就几k 体现不出来限速的影响,因此我换成更大的视频

这里首先不设置限速

可以看到视频是秒下载的 

但是将限速命令加进去以后,会发现,限速体现出来了  速度会变的很慢

更改完配置文件 记得重启服务

nginx虚拟主机配置

IP:10.36.192.120

1.基于端口:

也就是改变端口,域名和ip不变

server {listen       80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}
}server {listen 8081;server_name  localhost;location / {
root  /zyq/html;
index  index.html;
}
}

查看80端口

查看8081端口

2.基于域名

也就是改变域名,端口 ip不变



之后还得在电脑本机做域名解析

开始测试

3.基于IP

改变ip,端口与域名不变

首先获取一个ip

[root@zhuji ~]# ip a a  dev ens33 10.36.192.233/24

设置

测试

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

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

相关文章

宏电股份RedCap产品亮相迪拜华为MBBF,并参与RedCap全球商用阶段性成果发布

10月10-11日&#xff0c;由华为主办的第十四届全球移动宽带论坛&#xff08;MBBF&#xff09;在阿联酋迪拜成功举办。MBBF期间&#xff0c;华为联合宏电股份等产业伙伴集中发布RedCap商用阶段性成果。本次发布是RedCap产业的关键里程碑&#xff0c;标志着RedCap在全球已具备规模…

使用 Service 把前端连接到后端

使用 Service 把前端连接到后端 如何创建前端&#xff08;Frontend&#xff09;微服务和后端&#xff08;Backend&#xff09;微服务。后端微服务是一个 hello 欢迎程序。 前端通过 nginx 和一个 Kubernetes 服务暴露后端所提供的服务。 使用部署对象&#xff08;Deployment ob…

缩短cin时间

std::ios::sync_with_stdio(false);

Android ADB 常用命令及详解

Android ADB 常用命令及详解 Android Debug Bridge&#xff08;ADB&#xff09;是 Android 开发工具包&#xff08;SDK&#xff09;的一部分&#xff0c;用于与 Android 设备通信和执行各种任务。无论你是 Android 开发者还是普通用户&#xff0c;了解 ADB 命令是非常有用的&a…

Quartus调用FIFO-IP核verilog,DE1开发板,代码和视频

名称&#xff1a;Quartus调用FIFO-IP核&#xff0c;完成数据的求和 软件&#xff1a;Quartus 语言&#xff1a;Verilog 代码功能&#xff1a; 题目&#xff1a;FIFO-IP核的调用 主要内容&#xff1a;调用两个FIFO-IP核&#xff0c;完成2行数据的求和 技术参数&#xff1a…

JSqlParser生成修改表定义SQL语句

依赖 <dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.3</version></dependency>删除表 import net.sf.jsqlparser.schema.Table; import net.sf.jsqlparser.statement…

Redis调试

启动Redis 管理工具-》服务-》Redis软件启动Redis 进入redis的安装目录下&#xff0c;在地址栏输入“cmd”&#xff0c;回车 2)然后会进入cmd界面&#xff0c;直接运行命令redis-server.exe redis.windows.conf。如果报错&#xff0c;依次执行第一条指令&#xff1a;redis-cli…

【ArcGIS绘图系列1】在ArcGIS中制作柱状图与饼状图

成图展示 图形出处&#xff1a;J2023-Assessment of agricultural drought based on multi-source remote sensing data in a major grain producing area of Northwest China 实现步骤 第一步 查看数据信息 数据输入到ArcGIS中&#xff1a;包含数据表和shp文件 1、shp文件…

Flink之Window窗口机制

窗口Window机制 窗口概述窗口的分类是否按键分区按键分区窗口非按键分区 按照驱动类型按具体分配规则滚动窗口Tumbling Windows滑动窗口 Sliding Windows会话窗口 Session Windows全局窗口 Global Windows 时间语义窗口分配器 Window Assigners时间窗口计数窗口例子 窗口函数 W…

C++设计模式之MVC

MVC&#xff08;Model-View-Controller&#xff09;是一种经典的软件架构模式&#xff0c;用于组织和分离应用程序的不同部分&#xff0c;以提高代码的可维护性、可扩展性和重用性。MVC模式将应用程序分为三个主要组成部分&#xff1a; Model&#xff08;模型&#xff09;&…

AI人工训练师,提升外呼机器人的运营效果

外呼机器人是企业客服和营销的重要工具&#xff0c;外呼机器人可以通过语音识别和语音合成技术&#xff0c;自动拨打电话并进行客户服务和营销推广等工作。由于外呼机器人错误识别和理解偏差容易影响外呼效果&#xff0c;许多外呼机器人厂商选择通过AI人工训练师的技术手段来提…

linux运行java jar包 linux运行jar包命令

linux运行java jar包 linux运行jar包命令 在linux下我们可以在后台运行jar包命令。那么它的具体方法是怎样的呢?下面由学习啦小编为大家整理了linux后台运行jar包命令的相关知识&#xff0c;希望对大家有所帮助。 Linux 运行jar包命令方法一 view plain copyjava -jar XXX.…

[opencv]图像和特征点旋转

本来说这是很简单的一个内容&#xff0c;图像旋转只需要使用opencv中自带的旋转函数即可完成&#xff0c;但是最近在做特征点旋转的时候发现使用内置rotate函数给图像旋转90度&#xff0c;再用getRotationMatrix2D得出的旋转矩阵对特征点旋转&#xff0c;画出来的特征点位置全部…

FIFO设计16*8,verilog,源码和视频

名称&#xff1a;FIFO设计16*8&#xff0c;数据显示在数码管 软件&#xff1a;Quartus 语言&#xff1a;Verilog 代码功能&#xff1a; 使用verilog语言设计一个16*8的FIFO&#xff0c;深度16&#xff0c;宽度为8。可对FIFO进行写和读&#xff0c;并将FIFO读出的数据显示到…

.NET验收

验收通用模板&#xff1a; 1.该资料计划看几天&#xff1f; 实际看了几天&#xff1f; 计划7天&#xff0c;实际看了9天 2.多少天一篇总结&#xff1f;将总结列出来。 一周总结一篇。 博客地址:3.这个资料相较于之前资料共同的内容是什么&#xff1f; 不同的(需要强化学习)…

linux 安装 docker

linux 安装 docker docker及版本一键安装docker(本人使用的是手动安装)Docker手动安装 docker及版本 Docker从17.03版本之后分为CE&#xff08;Community Edition: 社区版&#xff09;和EE&#xff08;Enterprise Edition: 企业版&#xff09;。相对于社区版本&#xff0c;企业…

openssl 之 RSA加密数据设置OAEP SHA256填充方式

背景 如题 环境 openssl 1.1.1l c centos7.9 代码 /** 思路&#xff1a;填充方式自己写&#xff0c;不需要使用库提供的&#xff0c;然后加密时选择不填充的方式加密 关键代码 */ int padding_result RSA_padding_add_PKCS1_OAEP_mgf1(buf, padding_len, (unsigned char*…

云计算认证有哪些?认证考了有什么用?

云计算作为一项快速发展的技术&#xff0c;对人才的需求持续增长。无论是男生还是女生&#xff0c;只要具备相关的技能和知识&#xff0c;都可以在云计算领域找到就业机会。 目前入行云计算最好最便捷的方式就是考证&#xff0c;拿到一个云计算相关的证书&#xff0c;就能开启…

SQLite Write-ahead Logging

1. 概述2. WAL如何工作 2.1 检验指示(Checkpointing)2.2 并发性(Concurrency)2.3 性能考虑(Performance Considerations)3. 激活并配置WAL模式 3.1 自动checkpoint3.2 应用开始的checkpoint3.3 WAL模式的持久性4. 只读数据库5. 避免过大的WAL文件6. WAL索引的共享内存应用7. 不…

DETR原理与代码超详细解读

文章目录 前言一、DETR论文原理1、DETR整体介绍2、DETR论文贡献3、DETR模型框架4、DETR基于二分图匹配的LOSS 二、DETR环境安装1、安装基础环境2、pycocotools安装3、其它环境安装4、环境验证5、训练与推理效果显示 三、数据准备1、coco 数据格式2、修改数据 四、DETR加载数据代…