File tree Expand file tree Collapse file tree 1 file changed +14
-3
lines changed Expand file tree Collapse file tree 1 file changed +14
-3
lines changed Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments