正向代理与反向代理

正向代理服务器

客户端和目标服务器之间的服务器,客户端向代理发送一个请求指定目标服务器,然后代理向目标服务器请求并获得内容,并返回给客户端,平时说的代理服务器一般是正向代理服务器
核心:用户知道自己访问的目标服务器 场景:跳板机、访问原来无法访问的网站, 比如国外的一些站点

反向代理服务器

客户端和目标服务器之间的服务器,客户端向代理发送一个请求,然后代理向目标服务器请求并获得内容,并返回给客户端。反向代理隐藏了真实的服务器
核心:客户端不知道要访问的目标服务器是哪台服务器,代理会根据一定的策略选择一个真实的服务器进行请求
场景:访问淘宝,知道访问的域名是taobao.com, 但是后面提供数据的具体是什么域名或ip我们是不知道的
找房子 找中介(自己不知道房源在哪里 中介会隐藏房东信息)

Nginx安装

安装依赖 c语言的
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel上传nginx安装包
tar -zxvf nginx-1.18.0.tar.gz  解压
进到Nginx里  执行命令
编译
./configure
make
make install
默认安装路径
/usr/local/nginx
访问配置
cd /usr/local/nginx/sbin
启动nginx
./nginx
设置开机自启动
cd /lib/systemd/system
vim /lib/systemd/system/nginx.service[Unit]
Description=nginx service
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true[Install]
WantedBy=multi-user.targetsystemctl enable nginx


域名备案和线上访问服务器应用流程解析

一个http请求基本流程
客户端通过发起域名资源请求 -> DNS解析获得IP -> 寻找服务器获得资源
域名和ip的关系,DNS作用
DNS:Domain Name Server 域名服务器 域名虽然便于人们记忆,但网络中的计算机之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器
什么是cname和a记录
a记录 将域名指向一个IPV4地址
用户可以在此设置域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器(也叫ip指向域名配置)aabbcc.com -> 120.24.216.117
cname 将域名指向另外一个域名
别名指向,可以为一个主机设置别名。比如设置open1024.com,用来指向一个主机 xdclass.net 那么以后就可以用open1024.com来代替访问 xdclass.net 了
www.xdclass.net --> xdclass.net

Nginx

目录核心介绍

conf #所有配置文件目录
nginx.conf #默认的主要的配置文件
nginx.conf.default #默认模板

html # 这是编译安装时Nginx的默认站点目录
50x.html #错误页面
index.html #默认首页

logs # nginx默认的日志路径,包括错误日志及访问日志
error.log #错误日志
nginx.pid #nginx启动后的进程id
access.log #nginx访问日志

sbin #nginx命令的目录
nginx #启动命令

常见命令
./nginx  #默认配置文件启动
./nginx -s reload #重启,加载默认配置文件
./nginx -c /usr/local/nginx/conf/nginx.conf #启动指定某个配置文件
./nginx -s stop #停止
#关闭进程,nginx有master process 和worker process,关闭master即可
ps -ef | grep "nginx"
kill -9 PID

核心配置文件

分为三个部分

全局配置
server 主机设置
location(URL匹配特定位置的设置)


# 每个配置项由配置指令和指令参数 2 个部分构成
#user  nobody;  # 指定Nginx Worker进程运行以及用户组
worker_processes  1;   # 工作进程数  推荐配置成和CPU保持一致
​
#error_log  logs/error.log;  # 错误日志的存放路径  和错误日志
#error_log  logs/error.log  notice;  # 日志级别
#error_log  logs/error.log  info;  # 日志级别
​
#pid        logs/nginx.pid;   # 进程PID存放路径
​
# 事件模块指令,用来指定Nginx的IO模型,Nginx支持的有select、poll、kqueue、epoll 等。不同的是epoll用在Linux平台上,而kqueue用在BSD系统中,对于Linux系统,epoll工作模式是首选
events { use epoll;# 定义Nginx每个进程的最大连接数, 作为服务器来说: worker_connections * worker_processes,# 作为反向代理来说,最大并发数量应该是worker_connections * worker_processes/2。#因为反向代理服务器,每个  并发会建立与客户端的连接和与后端服务的连接,会占用两个连接 #正向代理服务器是 worker_connections * worker_processesworker_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;
​# 是否开启高效传输模式 on开启 off关闭sendfile        on;#减少网络报文段的数量#tcp_nopush     on;
​#keepalive_timeout  0;# 客户端连接保持活动的超时时间,超过这个时间之后,服务器会关闭该连接keepalive_timeout  65;
​# 压缩   #gzip  on;# 虚拟主机的配置 重要server {listen       80; # 虚拟主机的服务端口server_name  localhost; #用来指定IP地址或域名,多个域名之间用空格分开
​#charset koi8-r;
​           #每个虚拟主机具体配置它的访问日志#access_log  logs/host.access.log  main;
​#URL地址匹配 #location  指令解释说明#该指令用于匹配URL 语法 location [ = | ~ | ~* | ^~ ] url {...} #= 用于不含正则表达式的uri前, 要求请求字符串与uri 严格匹配。#如果匹配成功,就停止继续向下搜索并立即处理该请求#~ 用于uri包含正则表达式  区分大小写#~*  用于uri包含正则表达式  不区分大小写location / {root   html;  # 服务默认启动目录index  index.html index.htm; #默认访问文件,按照顺序找}
​#error_page  404              /404.html;   #错误状态码的显示页面
​# redirect server error pages to the static page /50x.html# 500 502 503 504 这些错误跳到 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;#    }#}
}

搭建前端静态文件服务器

什么是虚拟主机

指在一台物理主机服务器上划分出多个磁盘空间,每个磁盘空间都是一个虚拟主机,每台虚拟主机都可以对外提供Web服务,并且互不干扰,就类似虚拟机
利用虚拟主机把多个不同域名的网站部署在同一台服务器上,节省了服务器硬件成本和相关的维护费用
!!!配置之前,拷贝一份默认的出来,nginx配置容易出错且肉眼难看出来,自己仔细核对

Nginx虚拟主机配置
server {
listen 80;
server_name aabbcc.com;

location / {
root /usr/local/nginx/html;
index xdclass.html;
}
}

server {
listen 80;
server_name aabbccdd.com;

    location / {root   html;index  xdclass.html index.htm;}

}

图片服务器

学javaweb、node、或者其他基础web项目,基本都是图片上传到项目本身,这个是生成很少用
公司一般会使用图片服务器或者云厂商提供的CDN
使用流程

前端提交图片->后端处理->存储到图片服务器->拼接好访问路径存储到数据库和范围前端

本地图片上传上去,配置专属访问路径server {listen       80;server_name  aabbccdd.com;location /app/img {alias /usr/local/software/img/;}}
注意在location / 中配置root目录
在location /path中配置alias虚拟目录, 目录后面的"/"符号一定要带上

Nginx经典案例挖掘accessLog日志

简介:介绍nginx的访问日志的用处

access.log日志用处

统计站点访问ip来源、某个时间段的访问频率
查看访问最频的页面、Http响应状态码、接口性能
接口秒级访问量、分钟访问量、小时和天访问量…

默认配置解析
#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';
案例
122.70.148.18 - - [04/Aug/2020:14:46:48 +0800] "GET /user/api/v1/product/order/query_state?product_id=1&token=xdclasseyJhbGciOJE HTTP/1.1" 200 48 "https://xdclass.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
解析
$remote_addr 对应的是真实日志里的122.70.148.18,即客户端的IP。$remote_user 对应的是第二个中杠"-",没有远程用户,所以用"-"填充。
​
[$time_local]对应的是[04/Aug/2020:14:46:48 +0800]。
​
"$request"对应的是"GET /user/api/v1/product/order/query_state?product_id=1&token=xdclasseyJhbGciOJE HTTP/1.1"。
​
$status对应的是200状态码,200表示正常访问。
​
$body_bytes_sent对应的是48字节,即响应body的大小。
​
"$http_referer" 对应的是"https://xdclass.net/",若是直接打开域名浏览的时,referer就会没有值,为"-"。
​
"$http_user_agent" 对应的是"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:56.0) Gecko/20100101 Firefox/56.0"。
​
"$http_x_forwarded_for" 对应的是"-"或者空
查看访问最频繁的前100个IP第一部分 默认空格是分隔符   文件  按照数值排序 去重显示多少行 倒序排列   前100个
awk '{print $1}' access_temp.log | sort -n |uniq -c | sort -rn | head -n 100统计访问最多的url 前20名
cat access_temp.log |awk '{print $7}'| sort|uniq -c| sort -rn| head -20 | moreawk 是文本处理工具,默认按照空格切分,$N 是第切割后第N个,从1开始
sort命令用于将文本文件内容加以排序,-n 按照数值排,-r 按照倒序来排案例的sort -n 是按照第一列的数值大小进行排序,从小到大,倒序就是 sort -rn
uniq 去除重复出现的行列, -c 在每列旁边显示该行重复出现的次数。

自定义日志格式,统计接口响应耗时
从接受用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出响应数据时间
$upstream_response_time:指从Nginx向后端建立连接开始到接受完数据然后关闭连接为止的时间 这个纯接口性能
$request_time一般会比upstream_response_time大,因为用户网络较差,或者传递数据较大时,前者会耗时大很多

统计耗时接口, 列出传输时间超过 2 秒的接口,显示前5条
cat time_temp.log|awk '($NF > 2){print $7}'|sort -n|uniq -c|sort -nr|head -5
备注:$NF 表示最后一列, awk '{print $NF}'

Nginx负载均衡upstream

配置Demo

server 上边
upstream lbs {server 192.168.0.106:8080;server 192.168.0.106:8081;
}
​替换 location
location /api/ {proxy_pass http://lbs;proxy_redirect default;
}

Nginx常见的负载均衡策略解析

节点轮询(默认)
简介:每个请求按顺序分配到不同的后端服务器
场景:会造成可靠性低和负载分配不均衡,适合静态文件服务器

weight 权重配置
简介:weight和访问比率成正比,数字越大,分配得到的流量越高
场景:服务器性能差异大的情况使用

upstream lbs {server 192.168.159.133:8080 weight=5;server 192.168.159.133:8081 weight=10;
}

ip_hash(固定分发)

简介:根据请求按访问ip的hash结果分配,这样每个用户就可以固定访问一个后端服务器
场景:服务器业务分区、业务缓存本地缓存、Session需要单点的情况

upstream lbs {ip_hash;server 192.168.159.133:8080;server 192.168.159.133:8081;
}

upstream还可以为每个节点设置状态值

down 表示当前的server暂时不参与负载
server 192.168.159.133:8080 down;
backup 其它所有的非backup机器down的时候,会请求backup机器,这台机器压力会最轻,配置也会相对低
server 192.168.159.133:8080 backup;

Nginx后端节点可用性探测和配置实操

如果某个应用挂了,请求不应该继续分发过去
max_fails 允许请求失败的次数,默认为1.当超过最大次数时就不会请求
fail_timeout : max_fails次失败后,暂停的时间,默认:fail_timeout为10s

参数解释
max_fails=N 设定Nginx与后端节点通信的尝试失败的次数。
在fail_timeout参数定义的时间内,如果失败的次数达到此值,Nginx就这个节点不可用。
在下一个fail_timeout时间段到来前,服务器不会再被尝试。
失败的尝试次数默认是1,如果设为0就会停止统计尝试次数,认为服务器是一直可用的。
具体什么是nginx认为的失败呢

可以通过指令proxy_next_upstream来配置什么是失败的尝试。
注意默认配置时,http_404状态不被认为是失败的尝试。

upstream lbs {server 192.168.0.106:8080 max_fails=2 fail_timeout=60s ;server 192.168.0.106:8081 max_fails=2 fail_timeout=60s;
}
​
​
location /api/ {proxy_pass http://lbs;proxy_next_upstream error timeout http_500 http_503 http_404;
}

案例实操

暂停一个后节点,然后访问接口大于10次,Nginx会把这个节点剔除
重启这个节点,在fail_timeout周期里面不会再获取流量

经典应用

Nginx-全局异常兜底数据返回

任何接口都是可能出错,4xx、5xx等
如果业务没有做好统一的错误管理,直接暴露给用户,无疑是看不懂
所以假如后端某个业务出错,nginx层也需要进行转换
让前端知道Http响应是200,其实是将错误的状态码定向至200,返回了全局兜底数据

location /api/ {proxy_pass http://lbs;proxy_redirect default;# 存放用户的真实ipproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  proxy_next_upstream error timeout http_503 non_idempotent;
​#开启错误拦截配置,一定要开启proxy_intercept_errors on;}
​
# 不加 =200,则返回的就是原先的http错误码;配上后如果出现500等错误都返回给用户200状态,并跳转至/default_apierror_page  404 500 502 503 504  =200  /default_api;location = /default_api {default_type application/json;return 200 '{"code":"-1","msg":"invoke fail, not found "}';}

Nginx封禁恶意IP

网络攻击时有发生,

TCP洪水攻击、注入攻击、DOS等
比较难防的有DDOS等
数据安全,防止对手爬虫恶意爬取,封禁IP

一般就是封禁ip

linux server的层面封IP:iptables 推荐用!!!

nginx的层面封IP ,方式多种 (但 req还是会打进来, 让nginx 返回 403, 占用资源)

Nginx作为网关,可以有效的封禁ip
单独网站屏蔽IP的方法,把include xxx; 放到网址对应的在server{}语句块,虚拟主机
所有网站屏蔽IP的方法,把include xxx; 放到http {}语句块。

nginx配置如下:

http{
# …
include blacklist.conf;
}

location / {
proxy_pass http://lbs;
proxy_redirect default;
}

#blacklist.conf目录下文件内容
deny 192.168.159.2;
deny 192.168.159.32;

./nginx -s reload #重新加载配置,不中断服务

自动化封禁思路

编写shell脚本
AWK统计access.log,记录每秒访问超过60次的ip,然后配合nginx或者iptables进行封禁
crontab定时跑脚本

Nginx配置解决浏览器跨域

Nginx开启跨域配置location下配置location / { # 允许的源add_header 'Access-Control-Allow-Origin' $http_origin;#   请求的时候可以根据Cookie配置add_header 'Access-Control-Allow-Credentials' 'true';# 请求的Header  自定义请求头信息  tokenadd_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';#    允许的请求方式    OPTIONS是H5的预检请求add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';
​
#如果预检请求则返回成功,不需要转发到后端if ($request_method = 'OPTIONS') {add_header 'Access-Control-Max-Age' 1728000;add_header 'Content-Type' 'text/plain; charset=utf-8';add_header 'Content-Length' 0;return 200;}}

路径匹配-Nginx的locatioin规则

正则

^ 以什么开始
$ 以什么结束
​
^/api/user$

location 路径匹配

语法 location [ = | ~ | ~* | ^~ ] uri { … }
location = /uri
= 表示精准匹配,只要完全匹配上才能生效

location /uri
不带任何修饰符,表示前缀匹配 前面匹配上就可以了

location ^~ /uri/
匹配任何已 /uri/ 开头的任何查询并且停止搜索

location /
通用匹配,任何未匹配到其他location的请求都会匹配到

正则匹配
区分大小写匹配(~)
不区分大小写匹配(~*)
优先级(不要写复杂,容易出问题和遗忘)

精准匹配 > 字符串匹配(若有多个匹配项匹配成功,那么选择匹配长的并记录) > 正则匹配

server {
​server_name xdclass.net;
​location ~^/api/pub$ { ...}
​
}
​
^/api/pub$这个正则表达式表示字符串必须以/开始,以b $结束,中间必须是/api/pub
​
http://xdclass.net/api/pub 匹配(完全匹配)
http://xdclass.net/API/PUB 不匹配,大小写敏感
http://xdclass.net/api/pub?key1=value1 匹配
http://xdclass.net/api/pub/ 不匹配
http://xdclass.net/api/public 不匹配,不能匹配正则表达式测试location = /img/test.png {return 1;}
​location  /img/test.png {return 2;}
​location ^~/img/ {return 3;}
​location = / {return 4;}
​location / {return 5;}

地址重定向-Nginx的rewrite规则应用

重写-重定向

rewrite 地址重定向,实现URL重定向的重要指令,他根据regex(正则表达式)来匹配内容跳转到

语法
rewrite regex replacement[flag]
rewrite ^/(.*)  https://xdclass.net/$1 permanent
这是一个正则表达式,匹配完整的域名和后面的路径地址
replacement部分是https://xdclass.net/$1,$1是取自regex部分()里的内容

常用正则表达式:

字符 描述
^ 匹配输入字符串的起始位置
$ 匹配输入字符串的结束位置

  • 匹配前面的字符零次或者多次
  • 匹配前面字符串一次或者多次
    ? 匹配前面字符串的零次或者一次
    . 匹配除“\n”之外的所有单个字符
    (pattern) 匹配括号内的pattern

rewrite 最后一项flag参数
标记符号 说明
last 本条规则匹配完成后继续向下匹配新的location URI规则
break 本条规则匹配完成后终止,不在匹配任何规则
redirect 返回302临时重定向
permanent 返回301永久重定向

应用场景

非法访问跳转,防盗链
网站更换新域名
http跳转https
不同地址访问同一个虚拟主机的资源

Nginx配置Websocket反向代理

server {listen    80;server_name xdclass.net;location / {proxy_pass http://lbs;proxy_read_timeout 300s; //websocket空闲保持时长proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}
}
核心是下面的配置 其他和普通反向代理没区别, 表示请求服务器升级协议为WebSocketproxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;服务器处理完请求后,响应如下报文# 状态码为101HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: upgrade

Nginx业务接口性能优化!!!

常见的开发人员控制的缓存分类

数据库缓存
应用程序缓存
Nginx网关缓存
前端缓存

让后端结果缓存离用户更进一步

/root/cache
本地路径,用来设置Nginx缓存资源的存放地址
levels=1:2

默认所有缓存文件都放在上面指定的根路径中,可能影响缓存的性能,推荐指定为 2 级目录来存储缓存文件;1和2表示用1位和2位16进制来命名目录名称。第一级目录用1位16进制命名,如a;第二级目录用2位16进制命名,如3a。所以此例中一级目录有16个,二级目录有16*16=256个,总目录数为16 * 256=4096个。
当levels=1:1:1时,表示是三级目录,且每级目录数均为16个

key_zone
在共享内存中定义一块存储区域来存放缓存的 key 和 metadata

max_size
最大 缓存空间, 如果不指定会使用掉所有磁盘空间。当达到 disk 上限后,会删除最少使用的 cache

inactive
某个缓存在inactive指定的时间内如果不访问,将会从缓存中删除

proxy_cache_valid
配置nginx cache中的缓存文件的缓存时间,proxy_cache_valid 200 304 2m 对于状态为200和304的缓存文件的缓存时间是2分钟

use_temp_path
建议为 off,则 nginx 会将缓存文件直接写入指定的 cache 文件中

proxy_cache
启用proxy cache,并指定key_zone,如果proxy_cache off表示关闭掉缓存

add_header Nging-Cache “$upstream_cache_status”

用于前端判断是否是缓存,miss、hit、expired(缓存过期)、updating(更新,使用旧的应答)
proxy_cache_path /root/cache levels=1:2 keys_zone=xd_cache:10m max_size=1g inactive=60m use_temp_path=off;

server {

location /{

proxy_cache xd_cache;
proxy_cache_valid 200 304 10m;
proxy_cache_valid 404 1m;
proxy_cache_key h o s t host hosturi i s a r g s is_args isa​rgsargs;
add_header Nginx-Cache “$upstream_cache_status”;
}
}

Nginx 正确使用姿势相关推荐

  1. 论机器学习的正确学习姿势

    论机器学习的正确学习姿势 策划 | 刘燕作者 | Caleb Kaiser翻译 | Sambodhi编辑 | Linda很多开发人员并没有机器学习领域的背景,在机器学习如火如荼的今天,没学过机器学习的 ...

  2. 什么叫取反_转载:CodeReview正确的姿势是什么?

    作者:微博是阿里孤尽 链接:https://www.zhihu.com/question/383079175/answer/1109655276 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...

  3. class ts 扩展方法_ts类型声明文件的正确使用姿势

    ts类型声明文件的正确使用姿势 ts声明文件类型 npm install @types/jquery --save-dev 与npm一同发布 解释: package.json 中有 types 字段, ...

  4. java同步锁如何使用_java 同步锁(synchronized)的正确使用姿势

    关于线程安全,线程锁我们经常会用到,但你的使用姿势正确不,反正我用错了好长一段时间而不自知.所以有了这篇博客总结下线程锁的正确打开姿势 废话不说看例子 一,对整个方法进行加锁 1,对整个方法进行加锁, ...

  5. 直播预告|中台基石腾讯云TStack的正确使用姿势

    各位亲爱的小伙伴们,你们好啊~~ 他二哥技术直播又和大家见面了! 还记得在第一期的节目中,Sandy小姐姐和两位技术哥哥带我们见识了腾讯自研交换机的强大实力. (赶紧戳链接复习☝) 这次直播,他二哥邀 ...

  6. MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集

    MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用.但需要注意的时,连接副本集的姿势如果不对,服务高可用将不复存在. 使用复 ...

  7. java 日志使用_Java日志正确使用姿势

    前言 关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中"尽情"的打印我们需要的信息了.但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的 ...

  8. Python re 库的正确使用姿势

    前提假设: 已经充分掌握 PCRE 风格正则表达式 熟读 re 库文档 Why 正则表达式的强大已不用我赘述,Python 对此的支持也是十分强大,只不过: re.search(pattern, st ...

  9. 索引的正确“打开姿势”

    本文分享自华为云社区<DWS 索引的正确"打开姿势">,原文作者:hoholy . 索引能干什么呢,一言以蔽之:查询加速.常见的索引有下面几种: 1. 常用索引介绍 1 ...

最新文章

  1. Swift 中使用 SQLite——查询数据
  2. [转]30个HTML5学习资源
  3. Centos7系统启动流程
  4. 正则表达式提取字符串内所有的img标签下的src路径
  5. python之序列化与反序列化用法介绍json、pickle
  6. linux之man命令
  7. 415 Add Strings 字符串相加
  8. android对象引用释放,Android程序的内存泄漏与规避方法
  9. 基于模糊PID控制的光伏系统最大功率点跟踪的研究
  10. 蛋白质组学数据分析——(1)原理
  11. vue在新的标签页打开pdf文件
  12. AN 非空检测以及影片剪辑元件调用内部元件
  13. 工业级嵌入式WiFi模块 无线网关智能家居 WiFi音视频传输模块 WiFi转有线网口模块方案
  14. spring源码系列(一)——spring循环引用
  15. 微信打开网页会出现一个“将要访问”的页面是怎么回事?
  16. 美国大学计算机专业排名2014,2014年美国大学计算机专业排名
  17. 美苏太空竞赛历年卫星火箭发射以及历史事件介绍
  18. 金额转换,精确的元--分,换算
  19. 海康摄像机web3.0控件
  20. 艾特肯加速方法加速乘幂法收敛

热门文章

  1. 模拟器 ❀ EVE-NG安装步骤
  2. 风机滑环结构是什么样的
  3. m3u8格式直播地址
  4. DirBuster的初涉使用笔记
  5. 电脑缺少msvcp140.dll怎么办,缺少msvcp140一键修复方法
  6. 蓝牙BLE4.0-HM-10设备配对指南
  7. 小型超市库存管理系统c语言作业,C语言商品库存管理系统
  8. 最新淘宝店铺宝贝PC电脑端隐藏屏蔽技术
  9. pl/sql过程化语言
  10. jsp导出excel教程及常见问题