Java提升营

Nginx Config File

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
upstream backend
{
server 127.0.0.1:8443; #设置代理地址
#keepalive 16; #启动后端长连接
}

server {
listen 80;
server_name domain1 domain2;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl; #监听端口
server_name domain1 domain2; #监听地址,域名可以有多个,用空格隔开,一般填写域名、IP,可配置阻止其他server_name访问

#配置ssl
ssl_certificate ssl/*.crt;
ssl_certificate_key ssl/*.key;

root html; #根目录
index index.php index.htm index.html; #默认页
#动态请求代理给相应服务器
location / {
#include agent_deny.conf; #屏蔽爬虫攻击,需要外部配置,默认关闭,配置好外部配置打开
#limit_req zone=ConnLimitZone burst=1 nodelay; #设置限速1个排队
#limit_conn TotalConnLimitZone 100; #限制每个IP只能发起100个并发连接
proxy_set_header Host $host:$server_port; #修改Host头为用户真实Host,不修改这会统一发送代理服务器的Host,后端服务会认为都是代理服务器发送的请求。
proxy_set_header X-Real-IP $remote_addr; #使后端服务拿到用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #获取用户真实IP地址
proxy_redirect off; #作用是对发送给客户端的URL进行修改!off设置为关闭此功能http://$host:8200/ http://$http_host/;
proxy_http_version 1.1; #设置Http协议版本
proxy_pass http://backend; #转向定义服务列表,如果只做代理可以直接设置为http://127.0.0.1:10000
}

#S3配置
location ^~ /s3-configuration/ {
alias /app/s3-configuration/;
}


#缓存相应的文件(静态文件)
location ~ \.(gif|jpg|jpeg|png|htm|html|css|js|flv|ico|swf|mp3)(.*) {
#include agent_deny.conf; #屏蔽爬虫攻击,需要外部配置,默认关闭,配置好外部配置打开
#limit_req zone=ConnLimitZone burst=1 nodelay; #设置限速1个排队
#limit_conn TotalConnLimitZone 100; #限制每个IP只能发起100个并发连接
proxy_set_header Host $host:$server_port; #修改Host头为用户真实Host,不修改这会统一发送代理服务器的Host,后端服务会认为都是代理服务器发送的请求。
proxy_set_header X-Real-IP $remote_addr; #使后端服务拿到用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取用户真实IP
#proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; #强制缓存,部分应用会不让静态页面缓存,此方法可以强制缓存静态页,默认关闭
proxy_redirect off; #作用是对发送给客户端的URL进行修改!off设置为关闭此功能http://$host:8200/ http://$http_host/;
proxy_http_version 1.1; #设置Http协议版本
proxy_pass http://backend; #转向定义服务列表,如果只做代理可以直接设置为http://127.0.0.1:10000
proxy_cache cache_one; #设置缓存共享内存区块,也就是keys_zone名称
proxy_cache_valid 200 302 1h; #对不同的HTTP状态码设置不同的缓存时间,h小时,d天数
proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
expires 7d; #设置用户浏览器缓存文件失期时间,设置为-1时浏览器不进行缓存
}
}

agent_deny.conf

1
2
3
4
if ($http_user_agent ~ "COOCAREHTTPULPADAGENT|WinHttp|WebZIP|FetchURL|node-superagent|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|python-requests|HeadlessChrome|^$" ) {
return 403;
# access_log off; #此类消息不加入日志
}

Bean 容器实例化完成后

接着上一篇我们回到 refresh() 方法,我重新贴了一遍代码,看看我们说到哪了。上篇说完 obtainFreshBeanFactory() 方法。

考虑到篇幅,这里开始大幅缩减掉没必要详细介绍的部分,大家直接看下面的代码中的注释就好了。

阅读全文 »

Spring 最重要的概念是 IOCAOP,我将用几篇文章带领大家来分析下 SpringIOC容器AOP 。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读这些文并不能让你成为Spring专家,不过一定有助于大家理解Spring的很多概念,帮助大家排查应用中和Spring相关的一些问题。为了降低难度,所有的内容都是基于 xml 的配置的方式。

阅读全文 »

Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。

准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。

阅读全文 »

关于Sharding-JDBC

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBCSharding-ProxySharding-Sidecar这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。

阅读全文 »

背景

在工作中,一般都是每个团队共同研发一个或多个项目,那么团队人员会共用一个公共仓库(这里说的时Git仓库)。每当有一个新的需求,我们会拉出一个特性分支,然后在这个特性分支上做开发以及提交个人的代码。

阅读全文 »

Nginx配置中Location的语法规则 location [ = | ~ | ~* | ^~ | !~ | !~* ] /uri/{ … }

  • = 表示精确匹配
  • ~ 表示区分大小写正则匹配
  • ~* 表示不区分大小写正则匹配
  • ^~ 表示URI以某个常规字符串开头
  • !~ 表示区分大小写正则不匹配
  • !~* 表示不区分大小写正则不匹配
  • / 通用匹配,任何请求都会匹配到
    阅读全文 »

上一篇文章我们讲了Hadoop分布式集群搭建, 没有环境的朋友先去看上一篇,这篇文章都是在已有的环境上做操作。

我也听过一些大数据的课程以及看过相关书本,刚开始,大家都是通过一个列子来介绍大数据。那么我也不例外,今天文章的落脚点就是统计计算文本中每个单词的出现次数,废话不多说,我们开始吧。

阅读全文 »