Skip to content

Commit f41dde9

Browse files
author
WangTianyi
committed
update
1 parent e1094f3 commit f41dde9

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

README.md

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -232,30 +232,17 @@ cglib工具:利用asm开源包,对代理对象类的class文件加载进来
232232
最坏情况:每次划分过程产生的两个区间分别包含n-1个元素和1个元素,一共需要划分n-1次,每次最多交换n-1次,这就是冒泡排序了,O(n2)
233233

234234
# 高性能架构
235+
236+
## JVM调优
237+
[https://www.ibm.com/developerworks/cn/java/j-lo-jvm-optimize-experience/index.html](https://www.ibm.com/developerworks/cn/java/j-lo-jvm-optimize-experience/index.html)
238+
235239
## 高并发怎么处理
236240
问题:比较耗CPU的任务摆在这里,程序也无法提升性能了,该怎么办?
237241

238242
1. 先判断能否使用缓存,还是重新耗费CPU资源来创建一个
239243
2. 用偏重CPU性能的机器来做这个功能的专项负载均衡
240244
3. 请求太多的话,搞个消息队列排着,慢慢消费,同时前端提示需要一会才行
241245

242-
## 存储查询大量的数据
243-
244-
### HDFS
245-
246-
![](https://github.com/xbox1994/2018-Java-Interview/raw/master/images/j6.jpg)
247-
248-
### 实现思路
249-
250-
* 文件被切块存储在多台服务器上
251-
* HDFS提供一个统一的平台与客户端交互
252-
* 每个文件都可以保存多个副本
253-
* HDFS上的文件和实际存储位置对应关系靠NAMENODE管理
254-
255-
### 优点
256-
1. 每个数据的副本数量固定,直接增加一台机器就可以实现线性扩展
257-
2. 有副本让存储可靠性高,可以处理的吞吐量增大
258-
259246
## 控制拿数据库连接池资源
260247
问题:数据库连接池就那么几个,但是有很多来拿怎么办?加个超时限制怎么加?
261248

@@ -281,13 +268,37 @@ cglib工具:利用asm开源包,对代理对象类的class文件加载进来
281268

282269
![](https://github.com/xbox1994/2018-Java-Interview/raw/master/images/j8.gif)
283270

284-
### Lucene存储原理
285-
286271
## 爬虫优化
272+
### 下载工具
273+
HttpURLConnection:本身的 API 不够友好,所提供的功能也有限
274+
HttpClient:功能强大
275+
OkHttp:是一个专注于性能和易用性的 HTTP 客户端。OkHttp 会使用连接池来复用连接以提高效率。OkHttp 提供了对 GZIP 的默认支持来降低传输内容的大小。OkHttp 也提供了对 HTTP 响应的缓存机制,可以避免不必要的网络请求。当网络出现问题时,OkHttp 会自动重试一个主机的多个 IP 地址。
276+
277+
### 动态页面的加载
278+
279+
phantomjs + selenium + java
280+
287281
### 如何抓取需要登录的页面
288282
模拟登录之后将sessionId保存到request header的cookie中
289283

290284
### 如何解决IP限制问题
291285
1. 买个支持ADSL的拨号服务器,便宜的一个月80,然后在上面搭建代理服务器,用爬虫连上去
292286
2. 自己探索不同网站的访问频率限制规则
293287
3. 寻找网站访问频率访问限制漏洞
288+
289+
### 存储查询大量的数据
290+
291+
因为下载下来的HTML文件都是小文件,所以使用HDFS存储。我们需要两种节点,namenode节点来管理元数据,datanode节点来存储设计数据。
292+
293+
![](https://github.com/xbox1994/2018-Java-Interview/raw/master/images/j6.jpg)
294+
295+
### 实现思路
296+
297+
* 文件被切块存储在多台服务器上
298+
* HDFS提供一个统一的平台与客户端交互
299+
* 每个文件都可以保存多个副本
300+
301+
### 优点
302+
1. 每个数据的副本数量固定,直接增加一台机器就可以实现线性扩展
303+
2. 有副本让存储可靠性高
304+
3. 可以处理的吞吐量增大

0 commit comments

Comments
 (0)