Skip to content

Commit 5d2ef4c

Browse files
committed
update
1 parent 9a18395 commit 5d2ef4c

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

README.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -453,13 +453,13 @@ ArrayList,Vector主要区别为以下几点:
453453

454454
### 抵抗反爬虫策略
455455
#### 动态页面的加载
456-
phantomjs + selenium + java
456+
phantomjs + selenium
457457

458458
#### 如何抓取需要登录的页面
459459
模拟登录之后将sessionId保存到request header的cookie中
460460

461461
#### 如何解决IP限制问题
462-
买个支持ADSL的拨号服务器,便宜的一个月80,然后在上面搭建代理服务器,用爬虫连上去
462+
买个支持ADSL的拨号服务器,便宜的一个月80
463463

464464

465465
#### 每分钟访问频率
@@ -469,9 +469,20 @@ phantomjs + selenium + java
469469
图像识别
470470

471471
### 如何实现数据库连接池
472+
1. 连接池的建立。使用Vector存储连接,连接池在池中创建了几个连接对象等待使用,连接池中的连接不能随意创建和关闭,这样避免了连接随意建立和关闭造成的系统开销
473+
2. 连接池的管理。当客户请求数据库连接时,首先查看连接池中是否有空闲连接,如果存在空闲连接,则将连接分配给客户使用;如果没有空闲连接,则查看当前所开的连接数是否已经达到最大连接数,如果没达到就重新创建一个连接给请求的客户;如果达到就按设定的最大等待时间进行等待,如果超出最大等待时间,则抛出异常给客户。
474+
3. 连接池的关闭。当应用程序退出时,关闭连接池中所有的连接,释放连接池相关的资源,该过程正好与创建相反。
472475

476+
#### 并发、性能问题
477+
synchronized、lock。
473478

474-
#### 添加连接超时机制
479+
但为了提高性能,可进行以下方面的优化:
480+
481+
1. Vector换成CopyOnWriteArrayList
482+
2. 避免锁竞争的耗时,应该对连接的管理使用CAS操作;使用ThreadLocal将得到的数据库连接与线程绑定,避免映射关系的同步管理与性能问题
483+
484+
#### 事务处理
485+
在Java语言中,Connection类本身提供了对事务的支持,可以通过设置Connection的AutoCommit属性为 false,然后显式的调用commit或rollback方法来实现。
475486

476487
### [如何存储查询大量的HTML文件](https://www.zhihu.com/question/26504749)
477488

0 commit comments

Comments
 (0)