Nginx笔记(安装+使用)

Nginx开源版安装、启动

版本区别

Nginx开源版

Nginx plus 商业版

openresty

Tengine

安装

将.tar.gz放到linux系统下, 使用tar -zxvf减压

进入减压目录>>>命令安装指令:安装到usr/local/nginx路径下

./configure --prefix=/usr/local/nginxmake && make install

出现以下报错安装依赖包

  • checking for os
    + Linux3.10.0-693.e17.x86_64 x86_64
    checking for c compiler ... not found/configure: error: C compiler cc is not found
    

    安装gccyum install -y gcc

  • /configure: error: the HTp rewrite module requires the PCRE library.
    You can either disable the module by using --without-http_rewrite_moduleoption, or install the PCRE 1ibrary into the system, or build the PCRE library
    staticaly from the source with nginx by using --with-pcre=<path> option.
    

    安装perl库yum install -y pcre pcre-devel

  • /configure: error: the HTTP gzip module requires the zlib library.
    You can either disable the module by using --without-http_gzip_moduleoption, or install the zlib library into the system, or build the zliblibrary
    statically from the source with nginx by using --with-zlib=<path> option.
    

    安装zlib库yum install -y zlib zlib-devel

启动

进入安装好的目录/usr/local/nginx/sbin

./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭, 在退出前完成已接受的连接请求
./nginx -s reload 重新加载配置

安装成系统服务

创建服务脚本

vim /usr/lib/systemd/system/nginx.service

服务脚本内容

脚本内容出现的路径为安装到的指定路径下,如有不同请手动修改

[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true[Install]
WantedBy=multi-user.target

服务命令说明

systemctl daemon-reload			重新加载系统服务
systemctl start nginx.service	启动服务
systemctl stop nginx.service	停止服务
systemctl status nginx.service	查看服务状态
systemctl reload nginx.service	重新启动(重新加载配置文件)
systemctl enable nginx.service	开机启动

目录结构

  • conf
    用来存放配置文件相关的目录
  • html
    用来存放静态文件的默认目录
  • logs
    日志文件目录
  • sbin
    nginx的主程序
  • 后缀为_temp都是nginx启动后新建的目录

基本运行原理

请添加图片描述

Nginx基础配置

请添加图片描述
nginx.conf为主配置文件

最小配置文件

初始化配置文件nginx.conf

#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}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  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}
}

将注释全部去掉后的文件

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   html;#访问80端口,找到nginx目录下的html目录下的index.htmlindex  index.html index.htm;	 }error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

文件配置说明

  • worker_processes : 工作的进程个数, 默认为1 , 表示开启一个子进程

  • events : 事件驱动模块

    • worker_connections : 每个worker进程可以接受的连接数
  • http

    • include : 引用另外的配置文件, 空格后面跟配置文件名

      mime.types文件为请求头说明的访问文件格式

    • default_type: mime.types文件中没有的格式,默认为default_type的格式

    • sendfile : 文件零拷贝 默认 on (使用linux的 sendfile(socket, file, len) 高效网络传输)

    • keepalive_timeout : 保持连接的超时时间

    • server : 可以理解为一个虚拟主机(vhost)

      • listen : 监听的端口号
      • server_name : 主机名/域名
      • location : URI
        • root : 相对路径/usr/local/nginx/下的某个目录
        • index : 默认主页文件
      • error_page : 报错代码后跳转的路径

sendfile未启动
请添加图片描述
sendfile启动
请添加图片描述

虚拟主机

原本一台服务器只能对应一个站点,通过虚拟主机技术可以虚拟化成多个站点同时对外提供服务
nginx.conf中一个server可以理解为一个虚拟主机
多个serverlisten存在相同端口会报错

server {listen       80;    					端口号server_name  localhost;					主机名/域名location / {root   html;# 访问80端口,找到nginx目录下的html目录下的index.htmlindex  index.html index.htm;	 }
}

nginx.conf配置文件中server下的server_name域名解析规则

  • server_name匹配规则
    server_name匹配分先后顺序,写在前面的匹配上就不会继续往下匹配了。
  • 完整匹配
    可以在同一server_name中匹配多个域名
    server_name vod.mmban.com www1.mmban.com;
  • 通配符匹配
    server_name *.mmban.com;
  • 通配符结束匹配
    server_name vod.*;
  • 正则匹配
    server_name ~^[0-9]+\.mmban\.com$;

正向代理、反向代理模型

反向代理

以代理服务器来接受连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器,而且整个过程对于客户端而言是透明的。

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

正向代理

一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后由代理向原始服务器转交请求并将获得的内容返回给客户端。

在这里插入图片描述

传统互联网项目

在这里插入图片描述

负载均衡

负载均衡也是Nginx常用的一个功能。简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。

简单示例(关键字: proxy_pass)

修改nginx.conf配置文件中http>server>location部分(不支持https)

server {listen       80;    					端口号server_name  localhost;					主机名/域名location / {proxy_pass http://www.baidu.com;# 当使用proxy_pass负载均衡时, 以下内容不生效, 直接注释掉# root   html;# index  index.html index.htm;	 }
}

简单负载均衡(关键字: upstream)—轮询示例

修改nginx.conf配置文件>>http>upstreamserver同级

upstream 自定义名称 {server 192.168.137.139:80;server 192.168.137.133:80;
}server {listen       80;server_name  localhost;location / {proxy_pass http://自定义名称;}
}

负载均衡策略

  • weight :权重
  • down : 当前server暂不参与负载均衡(下线)
  • backup : 预留的备份服务器; 其它所有的非backup机器down或者忙的时候,请求backup机器。
  • max_fails : 请求失败次数限制
  • fail_timeout : 经过max_fails后服务暂停时间
  • max_conns : 限制最大的连接数

简单示例

upstrem 自定义名称{server 192.168.137.137:80 weight=1;server 192.168.137.137:8080 down;server 192.168.137.137:8081 backup;server 192.168.137.137:8082 max_fails=1 fail_timeout=10s max_conns=1024;server unix:/tmp/backend3;
} 

负载均衡调度算法

  • 轮询:默认算法按时间顺序逐一分配到不同的后端服务器;
  • 加权轮询:Weight值越大,分配到访问几率越高;
  • ip_hash:为每一个请求访问的IP的hash结果分配,可以将来自一个IP的固定访问一个后端服务器;
  • url_hash:需要安装模块安装访问的URL的hash结果来分配,这样每个URL定向到同一个后端服务器
  • least_conn:按照某台机器最少连接数的进行分配访问;
  • hash关键数值: hash 自定义 KEY

轮询

权重

upstream 自定义名称{server 192.168.137.137:8081 weight=1;server 193.168.137.137:8080 weight=9; 
} 

ip_hash

ip_hash 会话粘连, 用户访问的时候请求可能分发到不同服务器,当我们的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用iphash了,iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

# 会话粘连可以理解为用户持续访问一个后端机器
upstream 自定义名称 {ip_hash;server 192.168.137.137:8080;server 192.168.137.137:8081;
} 

least_conn

将请求分配到连接数最少的服务上

upstream 自定义名称 {least_conn;server 192.168.137.137:8080;server 192.168.137.137:8081;
} 

fail

fair(需要使用第三方软件)按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream 自定义名称 {fair;server 192.168.137.137:8080;server 192.168.137.137:8081;
} 

url_hash

url_hash(需要使用第三方软件):按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

upstream 自定义名称 {hash $request_uri;hash_method crc32;server 192.168.137.137:8080;server 192.168.137.137:8081;
} 

动静分离

动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路

在这里插入图片描述

简单示例

nginx所在服务器ip为192.168.137.139
137nginx配置文件修改如下(将137反向代理到139上, 将css/js/img静态文件静态化到139服务器中)

server {listen       80;server_name  localhost;location / {proxy_pass http://192.168.137.137:8080;}# 所有静态请求都由nginx处理,存放目录为nginx中的htmllocation ~*(css|js|css) {root   html;index  index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   500.html;}
} 

location匹配顺序

  • 多个正则location直接按书写顺序匹配,成功后就不会继续往后面匹配
  • 普通(非正则)location会一直往下,直到找到匹配度最高的(最大前缀匹配)
  • 当普通location与正则location同时存在,如果正则匹配成功,则不会再执行普通匹配
  • 所有类型location存在时,“=”匹配 > “^~“匹配 > 正则匹配 > 普通(最大前缀匹配)

URLRewrite

rewrite是URL重写的关键指令, 根据regex(正则表达式)部分类容, 重定向到replacement, 结尾是flag标记rewrite <regex>	<replacement> [flag];
关键字	正则		替代内容		  flag标记关键字: 		其中关键rewrite不能改变
正则: 		perl兼容正则表达式语句进行规则匹配
替代内容: 	将正则匹配的内容替换成replacement
flag标记:	rewrite支持的flag标记rewrite参数的标签位置: server, location, ifflag标记说明:
last		#本条规则匹配完成后, 继续向下匹配新的location URI规则
break		#本条规则匹配完成即终止, 不再匹配后面的任何规则
redirect	#返回302临时重定向, 浏览器地址栏会显示跳转后的URL地址
permanent 	#返回301永久重定向, 浏览器地址栏会显示跳转后的URL地址

示例

实际url为: http://192.168.137.137/index.html?pageNum=111
浏览器url栏显示为: http://192.168.137.137/111.html

server {listen       80;server_name  localhost;location / {rewrite	^/([0-9]+).html$	/index.html?pageNum=$1	break;proxy_pass http://192.168.137.137:8080;}# 所有静态请求都由nginx处理,存放目录为nginx中的htmllocation ~*(css|js|css) {root   html;index  index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   e:wwwroot;}
} 

负载均衡示例

server {listen       80;server_name  localhost;upstream test {server 192.168.137.139:80;server 192.168.137.133:80;}location / {rewrite	^/([0-9]+).html$	/index.html?pageNum=$1	break;proxy_pass http://test;}# 所有静态请求都由nginx处理,存放目录为nginx中的htmllocation ~*(css|js|css) {root   html;index  index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   e:wwwroot;}
} 

防盗链

说明

当浏览器访问静态资源时, 会二次向服务器发送请求, 这时请求头会带上referer
如果服务器设置了防盗链配置, Referer中域名与服务器防盗链设置的域名不同时, 无法访问

在这里插入图片描述

配置

valid_referers none | blocked | server_names | strings ...;
  • none: 检测Referer头域不存在的情况
  • blocked: 检测Referer头域的值被防火墙或者代理服务器删除或伪装的情况. 这种情况该头域的值不以"http://"或"https://"开头.
  • server_names: 设置一个或多个URL, 检测Referer头域的值是否是这些URL中的某一个

示例

server {listen       80;server_name  localhost;upstream test {server 192.168.137.139:80;server 192.168.137.133:80;}location / {rewrite	^/([0-9]+).html$	/index.html?pageNum=$1	break;proxy_pass http://test;}# 所有静态请求都由nginx处理,存放目录为nginx中的htmllocation ~*(css|js|css) {# 防盗链设置valid_referers none 域名;# 检测是否包含上述域名, 不包含上述域名, 返回403if($invalid_referer){return 403;}root   html;index  index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   e:wwwroot;}
} 

高可用

将nginx所在服务器安装keepalived, 为服务器创建vip(虚拟ip), 当主服务dwon掉后, 虚拟ip就会移动到备用服务器, 这样可以保证同一个ip可以在不同服务器之间切换

在这里插入图片描述

安装Keepalived(此处为yum安装)

yum install -y keepalived# 如果遇以下报错 安装openssl-devel依赖
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!# 安装openssl-devel依赖
yum install -y openssl-devel

配置

使用yum安装后, 配置文件所在路径为/etc/keepalived/keepalived.conf

完整的配置文件

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.200.16192.168.200.17192.168.200.18}
}virtual_server 192.168.200.100 443 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPreal_server 192.168.201.100 443 {weight 1SSL_GET {url {path /digest ff20ad2481f97b1754ef3e12ecd3a9cc}url {path /mrtg/digest 9b3a0c85a887a256d6939da88aabd8cd}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}virtual_server 10.10.10.2 1358 {delay_loop 6lb_algo rr lb_kind NATpersistence_timeout 50protocol TCPsorry_server 192.168.200.200 1358real_server 192.168.200.2 1358 {weight 1HTTP_GET {url { path /testurl/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url { path /testurl2/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url { path /testurl3/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.200.3 1358 {weight 1HTTP_GET {url { path /testurl/test.jspdigest 640205b7b0fc66c1ea91c463fac6334c}url { path /testurl2/test.jspdigest 640205b7b0fc66c1ea91c463fac6334c}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}virtual_server 10.10.10.3 1358 {delay_loop 3lb_algo rr lb_kind NATpersistence_timeout 50protocol TCPreal_server 192.168.200.4 1358 {weight 1HTTP_GET {url { path /testurl/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url { path /testurl2/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url { path /testurl3/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.200.5 1358 {weight 1HTTP_GET {url { path /testurl/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url { path /testurl2/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url { path /testurl3/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

主服务器最小配置文件

! Configuration File for keepalivedglobal_defs {# 配置idrouter_id lb137
}# keepalived内网通信协议
vrrp_instance test {# 配置主机(备用机)state MASTER# 配置所在网卡名称interface ens33virtual_router_id 51# 优先级, 主备竞选时, 哪个高哪个为主priority 100# 间隔检测时间advert_int 1# 设置分组 authentication {auth_type PASSauth_pass 1111}# 虚拟ip地址, 可配置多个virtual_ipaddress {192.168.137,200# 192.168.137.201}
}

备服务器最小配置文件

! Configuration File for keepalivedglobal_defs {# 配置idrouter_id lb139
}# keepalived内网通信协议
vrrp_instance test {# 配置主机(备用机)state BACKUP# 配置所在网卡名称interface ens33virtual_router_id 51# 优先级, 主备竞选时, 哪个高哪个为主priority 50# 间隔检测时间advert_int 1# 设置分组 authentication {auth_type PASSauth_pass 1111}# 虚拟ip地址, 可配置多个virtual_ipaddress {192.168.137.200# 192.168.137.201}
}

!!!需要注意

  • vrrp_instance
  • virtual_router_id
  • authentication
    • auth_type
    • auth_pass

对应的内容需一致, 方能组成一组

启动、停止、重启、查看状态命令

systemctl start keepalived		# 启动
systemctl stop keepalived		# 停止
systemctl restart keepalived	# 重启
systemctl status keepalived		# 查看状态
systemctl reload keepalived		# 刷新配置

使用脚本检测nginx是否down, 同时让keepalived关闭

后续补充

Https证书配置

对称加密

在这里插入图片描述

openssl

SSL协议库、应用程序以及密码算法库

证书申请

参考视频

证书安装

nginx.conf配置文件

server {listen 443 ssl;server_name 域名/主机名;ssl_certificate	上传到服务器中的.crt/.pem文件路径;# ssl_certificate	/root/xxx/xxx.pem;  	文件绝对路径# ssl_certificate	 xxx.pem; 				文件相对路径 相对于 /usr/local/nginx/conf/ssl_certificate_key 上传到服务器中的.key文件路径;# ssl_certificate_key /root/xxx/xxx.key;	文件绝对路径# ssl_certificate_key  xxx.key				文件相对路径 相对于 /usr/local/nginx/conf/}

http协议跳转https

return 301 https://$server_name$request_uri;
在配置文件中位置

http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen 443 ssl;server_name 域名/主机名;ssl_certificate	上传到服务器中的.crt/.pem文件路径;ssl_certificate_key 上传到服务器中的.key文件路径;}server {listen       80;server_name  localhost;location / {return 301 https://$server_name$request_uri;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

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

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

相关文章

【OpenCV入门】第四部分——阈值

文章结构 阈值概述阈值处理函数二值化阈值处理二值化阈值处理反二值化处理 零处理低于阈值零处理超出阈值零处理 截断处理自适应处理Otsu方法 阈值概述 在PhotoShop里头&#xff0c;有一个工具可以快速抠出一幅图像中的轮廓&#xff0c;这个工具就是阈值。OpenCV也提供了阈值&…

MR混合现实汽车维修情景实训教学演示

MR混合现实技术应用于汽车维修课堂中&#xff0c;能够赋予学生更加真实&#xff0c;逼真地学习环境&#xff0c;让学生在情景体验中不断提高自己的专业能力。 MR混合现实汽车维修情景实训教学演示具体体现在&#xff1a; 1. 虚拟维修指导&#xff1a;利用MR技术&#xff0c;可…

【C++设计模式】详解装饰模式

2023年8月31日&#xff0c;周四上午 这是我目前碰到的最难的设计模式..... 非常难以理解而且比较灵活多半&#xff0c;学得贼难受&#xff0c;写得贼费劲..... 2023年8月31日&#xff0c;周四晚上19:48 终于写完了&#xff0c;花了一天的时间来学习装饰模式和写这篇博客。 …

基于YOLOV8模型和CCPD数据集的车牌目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOV8模型和CCPD数据集的车牌目标检测系统可用于日常生活中检测与定位车牌目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算…

【论文阅读】自动驾驶中车道检测系统的物理后门攻击

文章目录 AbstractIntroduction 论文题目&#xff1a; Physical Backdoor Attacks to Lane Detection Systems in Autonomous Driving&#xff08;自动驾驶中车道检测系统的物理后门攻击&#xff09; 发表年份&#xff1a; 2022-MM&#xff08;ACM International Conference on…

Centos 7.6 安装mongodb

以下是在CentOS 7.6上安装MongoDB的步骤&#xff1a; 打开终端并以root用户身份登录系统。 创建一个新的MongoDB存储库文件 /etc/yum.repos.d/mongodb-org-4.4.repo 并编辑它。 sudo vi /etc/yum.repos.d/mongodb-org-4.4.repo在编辑器中&#xff0c;添加下面的内容到文件中并…

【广州华锐互动】综合管廊3D可视化管理系统有效解决城市公用设施管理问题

在过去的几十年中&#xff0c;城市化进程不断加速&#xff0c;城市规模不断扩大&#xff0c;人口密度不断增加。这种发展带来了对城市基础设施的巨大需求&#xff0c;尤其是对电力、水、燃气和通信等公用设施的管理和维护。 为了满足这些需求&#xff0c;许多城市开始建设和管理…

Opencv基于文字检测去图片水印

做了一个简单的去水印功能&#xff0c;基于文字检测去图片水印。效果如下&#xff1a; 插件功能代码参考如下&#xff1a; using namespace cv::dnn; TextDetectionModel_DB *textDetector0; void getTextDetector() {if(textDetector)return;String modelPath "text_de…

【Redis】Redis 的学习教程(六)Redis 的缓存问题

在服务端中&#xff0c;数据库通常是业务上的瓶颈&#xff0c;为了提高并发量和响应速度&#xff0c;我们通常会采用 Redis 来作为缓存&#xff0c;让尽量多的数据走 Redis 查询&#xff0c;不直接访问数据库。 同时 Redis 在使用过程中&#xff08;高并发场景下&#xff09;也…

Ansible-palybook学习

目录 一.playbook介绍二.playbook格式1.书写格式2.notify介绍 一.playbook介绍 playbook 是 ansible 用于配置&#xff0c;部署&#xff0c;和管理被控节点的剧本。通过 playbook 的详细描述&#xff0c;执行其中的一系列 tasks &#xff0c;可以让远端主机达到预期的状态。pl…

uniapp项目实战系列(3):底部导航栏与头部导航栏的配置

目录 系列往期文章&#xff08;点击跳转&#xff09;uniapp项目实战系列(1)&#xff1a;导入数据库&#xff0c;启动后端服务&#xff0c;开启代码托管&#xff08;点击跳转&#xff09;uniapp项目实战系列(2)&#xff1a;新建项目&#xff0c;项目搭建&#xff0c;微信开发工具…

Mac性能优化:深入了解WindowServer及其影响

文章目录 Mac性能优化:深入了解WindowServer及其影响WindowServer是什么?WindowServer为什么会占用那么多CPU?如何检查WindowServer是否使用了过多的CPU使用率?如何减少WindowServer的CPU使用率?Mac性能优化:深入了解WindowServer及其影响 大家好!今天我们来聊聊Mac上的…

【OJ比赛日历】快周末了,不来一场比赛吗? #09.03-09.09 #12场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-09-03&#xff08;周日&#xff09; #5场比赛2023-09-04…

函数(个人学习笔记黑马学习)

1、函数定义 #include <iostream> using namespace std;int add(int num1, int num2) {int sum num1 num2;return sum; }int main() {system("pause");return 0; } 2、函数的调用 #include <iostream> using namespace std;int add(int num1, int num2…

分布式锁实现一. 利用Mysql数据库update锁

文章目录 分布式锁1、什么是分布式锁&#xff1a;2、分布式锁应该具备哪些条件&#xff1a; 基于数据库的分布式锁代码传送代码运行 分布式锁 1、什么是分布式锁&#xff1a; 分布式锁&#xff0c;即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题…

常见的数据结构之队列

一、介绍 队列(Queue)是一种常见的数据结构,用于存储和管理一系列数据元素,其中元素按照 先进先出(First-In-First-Out,简称FIFO)的原则进行插入和删除。 队列可以类比为现实生活中排队等候的场景,例如在超市收银台排队购物的顾客队列。 二、队列的基本操作 2.1 出…

PHP8的箭头函数-PHP8知识详解

php 7.4 引入了箭头函数&#xff08;Arrow Functions&#xff09;&#xff0c;并在 PHP 8 中得到了进一步改进和扩展。 箭头函数是一种更简洁的匿名函数形式&#xff0c;它们提供了一种更便捷的方式来定义轻量级的、单行的回调函数。 箭头函数的语法如下&#xff1a; fn (参…

Docker拉取RocketMQ及可视化界面

本文介绍Docker拉取RocketMQ及可视化界面操作步骤 Linux下安装Docker请参考&#xff1a;Linux安装Docker 文章目录 安装namesrv创建挂载目录授权相关权限拉取镜像运行容器查看运行情况 安装Broker创建挂载目录及配置文件目录授权相关权限创建配置文件运行容器查看运行情况 安装…

2023年8月随笔之有顾忌了

1. 回头看 日更坚持了243天。 读《发布&#xff01;设计与部署稳定的分布式系统》终于更新完成 选读《SQL经典实例》也更新完成 读《高性能MySQL&#xff08;第4版&#xff09;》开更&#xff0c;但目前暂缓 读《SQL学习指南&#xff08;第3版&#xff09;》开更并持续更新…

KaiwuDB 助力能源企业实现 4 大价值提升

行业背景 近年来&#xff0c;随着能源行业数字化的不断推进&#xff0c;智能电网、可再生能源发电、分布式发电、微电网等技术蓬勃发展。越来越多的能源企业意识到数据管理与价值挖掘对储能及能源利用有着重大意义&#xff0c;并开始探索一套有效的数据库解决方案以应对分布式…