版权声明:本文为博主原创文章,未经博主允许不得转载。

 

目录(?)[+]

 

系统环境:

VirtualBox Manager

Centos6.4

nginx1.10.0

IP对应的机器名:

IP                机器名               角色名

10.0.0.139      [elk]                     client

10.0.0.136      [lvs-master]        nginx server

10.0.0.137      [kvm]                   web server 1

10.0.0.111      [lvs-backup]        web server 2

一、正向代理

概念这里不在介绍,可以参考此文http://my.oschina.NET/yoyoko/blog/147414。

1.1 环境介绍

1.2 配置介绍

Nginx server:(内网地址:10.0.0.136,外网地址:172.16.27.64)

使用VirtualBox Manager虚拟出双网卡。

  1. [root@lvs-master conf.d]# ifconfig
  2. eth0      Link encap:Ethernet  HWaddr 08:00:27:30:56:99
  3. inet addr:10.0.0.136  Bcast:10.255.255.255  Mask:255.0.0.0
  4. inet6 addr: fe80::a00:27ff:fe30:5699/64 Scope:Link
  5. UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  6. RX packets:891978 errors:0 dropped:0 overruns:0 frame:0
  7. TX packets:9509 errors:0 dropped:0 overruns:0 carrier:0
  8. collisions:0 txqueuelen:1000
  9. RX bytes:81841095 (78.0 MiB)  TX bytes:13339058 (12.7 MiB)
  10. eth1      Link encap:Ethernet  HWaddr 08:00:27:55:4C:72
  11. inet addr:172.16.27.64  Bcast:172.16.27.255  Mask:255.255.255.0
  12. inet6 addr: fe80::a00:27ff:fe55:4c72/64 Scope:Link
  13. UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  14. RX packets:913671 errors:0 dropped:0 overruns:0 frame:0
  15. TX packets:22712 errors:0 dropped:0 overruns:0 carrier:0
  16. collisions:0 txqueuelen:1000
  17. RX bytes:109369858 (104.3 MiB)  TX bytes:1903855 (1.8 MiB)
  18. lo        Link encap:Local Loopback
  19. inet addr:127.0.0.1  Mask:255.0.0.0
  20. inet6 addr: ::1/128 Scope:Host
  21. UP LOOPBACK RUNNING  MTU:16436  Metric:1
  22. RX packets:36222 errors:0 dropped:0 overruns:0 frame:0
  23. TX packets:36222 errors:0 dropped:0 overruns:0 carrier:0
  24. collisions:0 txqueuelen:0
  25. RX bytes:3899937 (3.7 MiB)  TX bytes:3899937 (3.7 MiB)
  1. [root@lvs-master conf.d]# cat zxproxy.conf
  2. server {
  3. listen       80;   #监听的端口
  4. server_name  10.0.0.136;  #server的内容地址,与client需要网络互通
  5. resolver 172.16.5.1;   #DNS,这个是DNS,访问外网
  6. location / {
  7. proxy_pass http://$http_host$request_uri;   #$http_host和$request_uri是nginx系统变量,不需要替换,保持原样
  8. }

Nginx client:

只有一个内网网卡,通过访问Nginx server去访问internet,其实翻墙、肉鸡、之类的俗称就是这个原理。

  1. [root@kvm ~]# ifconfig
  2. eth0      Link encap:Ethernet  HWaddr 08:00:27:72:8C:3B
  3. inet addr:10.0.0.137  Bcast:10.255.255.255  Mask:255.0.0.0
  4. inet6 addr: fe80::a00:27ff:fe72:8c3b/64 Scope:Link
  5. UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  6. RX packets:1462448 errors:0 dropped:0 overruns:0 frame:0
  7. TX packets:21130 errors:0 dropped:0 overruns:0 carrier:0
  8. collisions:0 txqueuelen:1000
  9. RX bytes:145119904 (138.3 MiB)  TX bytes:2814635 (2.6 MiB)
  10. lo        Link encap:Local Loopback
  11. inet addr:127.0.0.1  Mask:255.0.0.0
  12. inet6 addr: ::1/128 Scope:Host
  13. UP LOOPBACK RUNNING  MTU:16436  Metric:1
  14. RX packets:60800 errors:0 dropped:0 overruns:0 frame:0
  15. TX packets:60800 errors:0 dropped:0 overruns:0 carrier:0
  16. collisions:0 txqueuelen:0
  17. RX bytes:4831102 (4.6 MiB)  TX bytes:4831102 (4.6 MiB)
  18. [root@kvm ~]# wget www.baidu.com
  19. --2016-06-08 13:02:08--  http://www.baidu.com/
  20. 正在解析主机 www.baidu.com... 失败:域名解析暂时失败。     #无法访问百度
  21. wget: 无法解析主机地址 “www.baidu.com”
  22. [root@kvm ~]# export http_proxy=http://10.0.0.136:80 #设定环境变量,指定代理服务器的ip及端口
  23. [root@kvm ~]# wget www.baidu.com      #可以成功访问百度了
  24. --2016-06-08 13:08:15--  http://www.baidu.com/
  25. 正在连接 10.0.0.136:80... 已连接。
  26. 已发出 Proxy 请求,正在等待回应... 200 OK
  27. 长度:未指定 [text/html]
  28. 正在保存至: “index.html.1”
  29. [ <=>                                                  ] 99,762      --.-K/s   in 0.07s
  30. 2016-06-08 13:08:16 (1.36 MB/s) - “index.html.1” 已保存 [99762]

二、反向代理

介绍文章同正向代理

2.1 环境介绍

1.下面来看下测试页面:

  1. [root@kvm ~]# yum install httpd
  2. [root@kvm ~]# echo "<html>10.0.0.137</html>" > /var/www/html/index.html
  3. [root@lvs-backup ~]# yum install httpd
  4. [root@lvs-backup~]# echo "<html>10.0.0.111</html>" > /var/www/html/index.html

2.看下效果:

  1. [root@lvs-backup html]# curl 10.0.0.111
  2. <html>
  3. 10.0.0.111
  4. </html>
  5. [root@lvs-backup html]# curl 10.0.0.137
  6. <html>
  7. 10.0.0.137
  8. </html>
  9. ##都成功了,我们进行下一步。

2.2 配置介绍

  1. [root@lvs-master conf.d]# ls         #nginx目录下的配置文件
  2. zxproxy.conf
  3. [root@lvs-master conf.d]# cp zxproxy.conf fxproxy.conf  #复制一份,之前是正向代理,现在是反向代理
  4. [root@lvs-master conf.d]# mv zxproxy.conf zxproxy.conf.bak
  1. [root@lvs-master conf.d]# cat fxproxy.conf
  2. server {
  3. listen       80;
  4. server_name  10.0.0.136; #根据环境介绍,nginx server ip
  5. location / {
  6. proxy_pass http://10.0.0.137; #被代理的服务器ip
  7. }
  8. #proxy_pass: proxy_pass URL
  9. #默认值:NO
  10. #使用字段:location,location中的if字段
  11. #这个参数设置被代理服务器的地址和被映射的URL,地址可以使主机名、域名、IP加端口的模式,如:
  12. #proxy_pass    http://192.168.1.6:8099/linuxtone/;
  13. [root@lvs-master conf.d]# service nginx restart #重启加载配置

看下结果:

  1. #先登录到实验环境中的clinet机上,ip如下:
  2. [root@elk ~]# ifconfig
  3. eth0      Link encap:Ethernet  HWaddr 08:00:27:3D:40:40
  4. inet addr:10.0.0.139  Bcast:10.255.255.255  Mask:255.0.0.0
  5. inet6 addr: fe80::a00:27ff:fe3d:4040/64 Scope:Link
  6. UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  7. RX packets:2618345 errors:0 dropped:0 overruns:0 frame:0
  8. TX packets:247926 errors:0 dropped:0 overruns:0 carrier:0
  9. collisions:0 txqueuelen:1000
  10. RX bytes:336182790 (320.6 MiB)  TX bytes:35145157 (33.5 MiB)
  11. lo        Link encap:Local Loopback
  12. inet addr:127.0.0.1  Mask:255.0.0.0
  13. inet6 addr: ::1/128 Scope:Host
  14. UP LOOPBACK RUNNING  MTU:16436  Metric:1
  15. RX packets:177352 errors:0 dropped:0 overruns:0 frame:0
  16. TX packets:177352 errors:0 dropped:0 overruns:0 carrier:0
  17. collisions:0 txqueuelen:0
  18. RX bytes:26547640 (25.3 MiB)  TX bytes:26547640 (25.3 MiB)
  19. [root@elk ~]# curl 10.0.0.136    #访问反向代理服务器
  20. <html>
  21. 10.0.0.137
  22. </html>
  23. #我们看到访问代理服务器,结果被转发到了web server1上。
  24. #接下来我们分别看下nginx-server和web-server1的日志:
  25. nginx-server:
  26. [root@lvs-master ~]# tail /var/log/nginx/access.log
  27. 10.0.0.139- - [08/Jun/2016:15:35:43 +0800] "GET / HTTP/1.1" 200 26 "-" "curl/7.19.7
  28. (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-"
  29. web-server:
  30. [root@kvm httpd]# tail /var/log/httpd/access_log
  31. 10.0.0.136 - - [08/Jun/2016:15:21:12 +0800] "GET / HTTP/1.0" 200 26 "-" "curl/7.19.7
  32. (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
  33. ##我们看到nginx-server上的nginx的日志,显示访问的用户是10.0.0.139也就是我们环境的clinet,
  34. #而web-server上显示的ip是10.0.0.136,也就是nginx-server。
  35. #说白了反向代理,对客户来说nginx-server就是真正的服务器,实际上,当用户访问nginx-server的时候,会将请求转发到
  36. #web-server1上,然后web-server1将请求的结果发给nginx-server,然后由ngin小-server将请求的结果转交给用户。
  37. #在web-server上看到的都是代理的ip,能不能也看到真实用户的ip呢?
  38. [root@lvs-master conf.d]# cat fxproxy.conf
  39. server {
  40. listen       80;
  41. server_name  10.0.0.136;                            #根据环境介绍,nginx server ip
  42. location / {
  43. proxy_pass http://10.0.0.137;                #被代理的服务器ip
  44. proxy_set_header  X-Real-IP  $remote_addr;    #多了这行
  45. }
  1. [root@lvs-master conf.d]# service nginx restart
  2. [root@kvm ~]# tail /var/log/httpd/access_log
  3. 10.0.0.136 - - [08/Jun/2016:16:10:53 +0800] "GET / HTTP/1.0" 200 26 "-" "curl/7.19.7
  4. (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
  5. #改了之后还是显示的是代理服务器的ip,我们去web-server上修改下配置
  6. [root@kvm ~]# vim /etc/httpd/conf/httpd.conf
  7. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  8. LogFormat "%h %l %u %t \"%r\" %>s %b" common
  9. LogFormat "%{Referer}i -> %U" referer
  10. LogFormat "%{User-agent}i" agent
  11. #修改为:(%h指的的访问的主机,现在改为访问的真实主机ip)
  12. LogFormat "%{X-Real-IP}i</span> %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  13. LogFormat "%h %l %u %t \"%r\" %>s %b" common
  14. LogFormat "%{Referer}i -> %U" referer
  15. LogFormat "%{User-agent}i" agent</span>
  1. [root@kvm ~]# service httpd restart
  2. 停止 httpd:                                               [确定]
  3. 正在启动 httpd:                                           [确定]
  4. [root@kvm ~]# tail /var/log/httpd/access_log
  5. 10.0.0.136 - - [08/Jun/2016:16:10:53 +0800] "GET / HTTP/1.0" 200 26 "-" "curl/7.19.7
  6. (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
  7. <span style="color:#FF0000;">10.0.0.139</span> - - [08/Jun/2016:16:16:01 +0800] "GET / HTTP/1.0" 200 26 "-" "curl/7.19.7
  8. (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
  9. #已经变成了真实的访问地址

代理多个web服务器:

  1. [root@lvs-master conf.d]# cat fxproxy.conf
  2. server {
  3. listen       80;
  4. server_name  10.0.0.136;
  5. location / {
  6. proxy_pass http://10.0.0.137;
  7. proxy_set_header  X-Real-IP  $remote_addr;
  8. }
  9. location /web2 {                            #多加个location
  10. proxy_pass http://10.0.0.111;
  11. proxy_set_header  X-Real-IP  $remote_addr;
  12. }
  13. [root@lvs-backup ~]# cd /var/www/html/   #进入10.0.0.111这个web-server2
  14. [root@lvs-backup html]# mkdir web
  15. [root@lvs-backup html]# echo "<html>10.0.0.111</html>" > index.html
  16. #我们去client上访问试试:
  17. [root@elk ~]# curl 10.0.0.136/web2/
  18. <html>
  19. 10.0.0.111
  20. </html>
  21. #访问成功

三、负载均衡

负载均衡实现的方式有很多,常用的lvs四层负载均衡,nginx是七层负载均衡,可以网上查询相关资料。

3.1 环境介绍

3.2 配置介绍

1.upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。在上面的设定中,通过upstream指令指定了一个负载均衡器的名称1.2.3.4。这个名称可以任意指定,在后面需要用到的地方直接调用即可。

2.Nginx的负载均衡模块目前支持4种调度算法,下面进行分别介绍,其中后两项属于第三方调度算法。

  • 轮询(默认)。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。Weight 指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。

  • ip_hash。每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。

  • fair。这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

  • url_hash。此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

3.upstream 支持的状态参数

在HTTP Upstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:

  • down,表示当前的server暂时不参与负载均衡。

  • backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。

  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

注,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。

我们来看下具体配置:

  1. [root@lvs-master conf.d]# cat ../nginx.conf
  2. http {
  3. include       /etc/nginx/mime.types;
  4. default_type  application/octet-stream;
  5. log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  6. '$status $body_bytes_sent "$http_referer" '
  7. '"$http_user_agent" "$http_x_forwarded_for"';
  8. access_log  /var/log/nginx/access.log  main;
  9. sendfile        on;
  10. #tcp_nopush     on;
  11. keepalive_timeout  65;
  12. #gzip  on;
  13. upstream 1.2.3.4 {
  14. server 10.0.0.111:80;
  15. server 10.0.0.137:80;
  16. }
  17. include /etc/nginx/conf.d/*.conf;
  18. }
  19. [root@lvs-master conf.d]# cat slb.confserver
  20. {
  21. location / {
  22. proxy_pass http://1.2.3.4; proxy_set_header X-Real-IP $remote_addr;
  23. }
  24. #注,upstream是定义在server{ }之外的,不能定义在server{ }内部。定义好upstream之后,用proxy_pass引用一下即可。

4.测试结果

  1. [root@elk ~]# curl 10.0.0.136
  2. <html>
  3. 10.0.0.111
  4. </html>
  5. [root@elk ~]# curl 10.0.0.136
  6. <html>
  7. 10.0.0.137
  8. </html>
  9. [root@elk ~]# curl 10.0.0.136
  10. <html>
  11. 10.0.0.111
  12. </html>
  13. #结果是server1,2交替出现,说明默认是轮询方式的负载均衡。

5.健康检查

一般健康检查都需要搞个keepalived,但nginx也有相应的参数可以设置。

  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用,进行健康状态检查。

  1. [root@lvs-master conf.d]# cat ../nginx.conf
  2. http {
  3. include       /etc/nginx/mime.types;
  4. default_type  application/octet-stream;
  5. log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  6. '$status $body_bytes_sent "$http_referer" '
  7. '"$http_user_agent" "$http_x_forwarded_for"';
  8. access_log  /var/log/nginx/access.log  main;
  9. sendfile        on;
  10. #tcp_nopush     on;
  11. keepalive_timeout  65;
  12. #gzip  on;
  13. upstream 1.2.3.4 {
  14. server 10.0.0.111:80 weight=1 max_fails=2 fail_timeout=2;
  15. server 10.0.0.137:80 weight=1 max_fails=2 fail_timeout=2;
  16. }
  17. include /etc/nginx/conf.d/*.conf;
  18. }
  19. [root@lvs-master conf.d]# service nginx restart

6.测试下结果

  1. [root@kvm httpd]# service httpd stop  #关闭web-server1服务
  2. [root@elk ~]# curl 10.0.0.136
  3. <html>
  4. 10.0.0.111
  5. </html>
  6. [root@elk ~]# curl 10.0.0.136
  7. <html>
  8. 10.0.0.111
  9. </html>
  10. #现在只能访问web-server2了。
  11. [root@kvm httpd]# service httpd start   #打开web-server1服务
  12. [root@elk ~]# curl 10.0.0.136
  13. <html>
  14. 10.0.0.111
  15. </html>
  16. [root@elk ~]# curl 10.0.0.136
  17. <html>
  18. 10.0.0.137
  19. </html>
  20. [root@elk ~]# curl 10.0.0.136
  21. <html>
  22. 10.0.0.111
  23. </html>

7.ip_hash的负载均衡

  1. [root@lvs-master conf.d]# cat ../nginx.conf
  2. upstream 1.2.3.4 {
  3. ip_hash;
  4. server 10.0.0.111:80 weight=1 max_fails=2 fail_timeout=2;
  5. server 10.0.0.137:80 weight=1 max_fails=2 fail_timeout=2;
  6. }
  7. [root@lvs-master conf.d]# service nginx restart
  8. 停止 nginx:                                               [确定]
  9. 正在启动 nginx:                                           [确定]
  10. [root@elk ~]# curl 10.0.0.136
  11. <html>
  12. 10.0.0.137
  13. </html>
  14. [root@elk ~]# curl 10.0.0.136
  15. <html>
  16. 10.0.0.137
  17. </html>
  18. #配置这种负载均衡后,>每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,
  19. #有效解决了动态网页存在的session共享问题。(一般电子商务网站用的比较多)

Nginx正反向代理、负载均衡等功能实现配置的更多相关文章

  1. linux nginx服务 反向代理 负载均衡 nfs服务

    一.nginx服务 1.首先软件停用firewall #systemctl stop firewalld stop:本次停用 disable:开机停用 enable:开机启用 #ps aux | gr ...

  2. Nginx (二) Nginx的反向代理负载均衡以及日志切割

    Nginx是一个高并发,高性能的服务器,可以进行反向代理以及网站的负载均衡.这些功能的运用都在配置文件中,也就是Nginx安装目录下的conf/nginx.conf. nginx.conf 1. 先来 ...

  3. Nginx(二) 反向代理&负载均衡

    1.反向代理 当我们请求一个网站时,nginx会决定由哪台服务器提供服务,就是反向代理. nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器, ...

  4. nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP

    nginx做反向负载均衡,后端服务器获取真实客户端ip   首先,在前端nginx上需要做如下配置: location / proxy_set_hearder host                 ...

  5. 三、nginx实现反向代理负载均衡

    1.反向代理 需求: 两个tomcat服务通过nginx反向代理 nginx服务器:192.168.101.3 tomcat1服务器:192.168.101.5 tomcat2服务器:192.168. ...

  6. nginx+tomcat 反向代理 负载均衡配置

    1.nginx的安装和配置见:http://www.cnblogs.com/ll409546297/p/6795362.html 2.tomcat部署项目到对应的服务器上面并启动,不详解 3.在ngi ...

  7. nginx 详解反向代理负载均衡

    什么是反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求 均匀转发给多台内部Web服务器 ...

  8. 十.nginx反向代理负载均衡服务实践部署

    期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...

  9. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

随机推荐

  1. HDU6341 Let Sudoku Rotate (杭电多校4J)

    给一个由4*4个4*4的小格组成数独,这些数独是由一个块逆时针旋转得来的,所以要还原的话就模拟出顺时针的过程,先把里面的字母转化成数字,然后从第一个块开始枚举,每个dfs和之前枚举的已经满足条件的块, ...

  2. [HEOI2014]平衡(整数划分数)

    下课了,露露.花花和萱萱在课桌上用正三棱柱教具和尺子摆起了一个“跷跷板”. 这个“跷跷板”的结构是这样的:底部是一个侧面平行于地平面的正三棱柱教具,上面 摆着一个尺子,尺子上摆着若干个相同的橡皮.尺子 ...

  3. 各种“地”—— 各种“GND”

    GND,指的是电线接地端的简写.代表地线或0线. 电路图上和电路板上的GND(Ground)代表地线或0线.GND就是公共端的意思,也可以说是地,但这个地并不是真正意义上的地.是出于应用而假设的一个地 ...

  4. Luogu--3381 【模板】最小费用最大流

    题目链接 3381 [模板]最小费用最大流 手写堆版本 dijkstra   400+ms 看来优先队列的常数好大 #include<bits/stdc++.h> using namesp ...

  5. springboot 后台运行

    https://zhuanlan.zhihu.com/p/25102504?refer=dreawer 酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们 ...

  6. java 遍历方法 及 数组,ArrayList,HashMap,HashSet的遍历

    一,遍历方法的实现原理 1.传统的for循环遍历,基于计数器的: 遍历者自己在集合外部维护一个计数器,然后依次读取每一个位置的元素,当读取到最后一个元素后,停止.主要就是需要按元素的位置来读取元素. ...

  7. SRM 600 div 2 T 1

      贪心+枚举 #include <bits/stdc++.h> using namespace std; class TheShuttles { public: int getLeast ...

  8. A1076. Forwards on Weibo

    Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may ...

  9. Java Scanner篇

    Scanner 翻译解释为扫描器 Java中用于控制台的的数据输入 包:import java.util.Scanner 使用方法:Scanner reader=new Scanner(System. ...

  10. Linux:去除每一行行首的空格

    如下命令: sed 's/^ *//' file1.txt > file2.txt