2014年2月27日星期四

经济学入门必看的20部经典影片!!有空时多充电!

View this post on my blog: http://www.haofengjing.org/?p=1589

善与恶。

国民党元老吴稚晖晚年曾感慨地说:"从前,张之洞这样的改革派成了老顽固,不能不让位给我们这些革命的暴徒,而我们这些人也一个个变成了臭官僚,白花了二十年改革的工夫…… 年轻人怀一腔热血,想一劳永逸解决社会问题,但最终你会发现,你只能用温和的法子激活人性中的善,而无法消灭人性中的恶。"

 

View this post on my blog: http://www.haofengjing.org/?p=1587

恒复法师 语录

 

人生不可能一尘不染,没有一点杂质,就像水清则无鱼。人生有一点点甜,也有一点点苦,有一点点好,也有一点点坏,有一点点希望,也有一点点无奈,生活才会更生动、更美好、更韵味悠长。再好的人也不会十全十美,再美好的爱情也不可能纤尘不染,你若试着包容,就会发现这个世界并不像你想像的那样糟糕。

 

View this post on my blog: http://www.haofengjing.org/?p=1586

互联网金融持续升温:P2P网贷平台“积木盒子”上线半年,已获千万美元融资 | 36氪

UPDATE:积木盒子本次融资为A轮,投资方为银泰资本(Ventech China,一家欧洲VC,与银泰集团无关)。据创始人董骏透露,该笔融资将主要用户扩大市场、巩固团队、强化风控能力等方面。另悉,去哪儿副总裁彭笑玫也是积木盒子联合创始人之一。
据我们从投资圈人士处获知,P2P 网贷平台积木盒子(iOS)已完成一笔千万美元融资,投资方为一家欧洲机构,详细信息将于不久后正式发布。
积木盒子上线于去年 8 月,与爱投资、银客网类似,采用的是与线下担保机构合作,面向中小微企业提供贷款的 P2C(Peer to Company)模式。该模式下,网贷平台与担保公司合作对目标企业实施尽职调查并提供全额本息担保,企业资金需求被提交线上以债权众筹的方式向公众募资。根据积木盒子的公开数据,其累计贷款额破亿用了约 4 个月,破两亿则只用了 40 天,目前该数字已经接近 2.8 亿——发展速度十分可观。
目前积木盒子的投资收益率约在 9% 到 14%。业务线除企业经营贷外,还包括商圈贷(围绕产业链核心企业,为其上下游提供供应链融资)和购房周转贷,个人消费贷据说也可能上线。
从项目来源上看,积木盒子的借款方多位于中西部发展中地区。而从投资人来源看,北京地区则占到了 40%。所以从深层次讲,积木盒子等平台其实是将一线城市的剩余资金与中西部企业的资金需求做了匹配。
从去年下半年开始,互联网金融不断升温。仅在 P2P 领域,就先后有有利、点融、爱投资等拿到大额融资,上线较早的有利和爱投资累计贷款额均已超过 7 亿。
另据央行前几天发布的一组金融统计数据,今年 1 月份人民币存款大幅减少了 9402 亿元。除了节后的暂时性波动外,余额宝、理财通、P2P 网贷等互联网金融在其中发挥了重要影响。目前余额宝资金总量已飙升到 4000 亿元,而腾讯理财通和华夏活期通等类似产品据说也产生了近千亿的增量。互联网金融对国内银行业无论从观念上还是事实上都带来了最直接的冲击。虽然各大商业银行也纷纷推出自己的类余额宝产品,但迄今为止收效甚微。
[36氪原创文章,作者: 沈超]

View this post on my blog: http://www.haofengjing.org/?p=1582

天猫国际正式版上线 主打直接海淘

TECH2IPO/创见北京报道:阿里集团近日宣布天猫国际正式上线,直供海外进口商品。据悉,此次上线的天猫国际将提供新的海淘服务,入驻的商家店铺配备旺旺中文咨询,提供国内的售后服务。在物流方面,天猫国际要求商家 72 小时内完成发货,14 个工作日内到达,同时确保物流信息全程可跟踪。
去年 7 月,天猫国际开始招商,香港卓悦网、台湾东森严选、日本 kenko、海淘名表 ashford 等平台陆续入驻。天猫国际方面称,入驻商家为中国大陆外的公司实体,具有海外零售资质,所售商品通过国际物流经中国海关入关。

View this post on my blog: http://www.haofengjing.org/?p=1579

男人的四个优秀品质:毅力、勇敢、包容、智慧。

什么叫毅力?别人认为痛苦的时候、看不见光明的时候,你看见了黑暗尽头的光明。什么叫勇敢?当你勇敢的时候会奋不顾身。什么叫包容?把所有的是非恩怨搁你肚子里消化。什么叫智慧?不随波逐流,能看到别人看不到的层面。—— 冯仑

View this post on my blog: http://www.haofengjing.org/?p=1573

【无论你月收入多少记得分成6份】

第1份,做生活费;第2份,交朋友,坚持一年,你的朋友圈就会为你产生价值;第3份,用来感恩,每月给父母、爱人送份礼物;第4份,用来学习,每个月买本好书读;第5份,用来投资,培养自己财富意识;第6份,用来储蓄,稳存保底。合理理财,打理未来。








View this post on my blog: http://www.haofengjing.org/?p=1571

【一张图告诉你正确的跑步姿势】

下图十个跑姿要点是重中之重!在跑步中可以逐一对照纠正,正确的跑姿不但让你跑得轻松,而且不易受伤,记住:跑姿比跑鞋重要!








View this post on my blog: http://www.haofengjing.org/?p=1569

快速构建实时抓取集群 -- 系统架构 -- IT技术博客大学习 -- 共学习 共进步!

定义:
首先,我们定义一下定向抓取,定向抓取是一种特定的抓取需求,目标站点是已知的,站点的页面是已知的。本文的介绍里面,主要是侧重于如何快速构建一个实时的抓取系统,并不包含通用意义上的比如链接分析,站点发现等等特性。


 


在本文提到的实例系统里面,主要用到linux+mysql+redis+django+scrapy+webkit,其中scrapy+webkit作为抓取端,redis作为链接库存储,mysql作为网页信息存储,django作为爬虫管理界面,快速实现分布式抓取系统的原型。


 


名词解析:
1. 抓取环:抓取环指的是spider在存储中获取url,从互联网上下载网页,然后将网页存储到数据库里面,最后在从存储里面获取下一个URL的一个流程。 

2. Linkbase:链接库的存储模块,包含一般的链接信息;是抓取系统的核心,使用redis存储。

3. XPATH:一门在 XML 文档中查找信息的语言,XPath 可用来在 XML 文档中对元素和属性进行遍历, 是 W3C XSLT 标准的主要元素。使用XPATH以及相关工具lib进行链接抽取和信息抽取。

4. XPathOnClick:一个chrome的插件,支持点击页面元素,获取XPATH路径,用于编辑配置模板。

5. Redis:一个开源的KV的内存数据库,具备很好的数据结构的特征和很高的存取性能。用于存储linkbase信息

6. Django:爬虫管理工具,用于模板配置,系统监控反馈。Django在这里主要是用来管理一个数据库,使用Admin功能。

7. Pagebase:页面库,主要是存储网页抓取的结果,以及页面抽取的结果,和dump交互,使用mysql实现。

8. Scrapy:一个开源的机遇twisted框架的python的单机爬虫,该爬虫实际上包含大多数网页抓取的工具包,用于爬虫下载端以及抽取端。

9. 列表页:指的商品页面之外的所有页面

10. 详情页:比如商品B2C的抓取中,特指商品页面,比如:http://item.tmall.com/item.htm?id=10321272374




 


系统架构
一:存储 redis+mysql
链接库(linkbase)是抓取系统的核心,基于性能和效率的考虑,本文采用基于内存的redis和磁盘的mysql为主,对于linkbase主要是存储抓取必须的链接信息,比如url,anchor,等等;对于mysql,则是存放抓取的网页,便于后续的抽取和处理。
a) PageBase:使用Mysql分库分表,存放网页,如下图:

 

b) Linkbase 使用Redis集群,存储linkbase信息。



几个基本的数据结构: 

1:抓取队列 (candidate list)

分为待抓取的url队列和更新的url队列;队列存放urlhash,使用redis的list数据结构,对于新提取的url,push到对应的列表里面,对于spider抓取模块,从list pop得到。对于一个站点而言,抓取队列有两种类型:列表页抓取队列和详情页抓取队列。

2:链接库 (linkbase)

链接库实际上是存储链接信息的DB;Key是urlhash,Value是linkinfo,包含url,purl,anchor,xpath。。。;在redis使用hash存储,直接存放在redis的里面。KV链接库,不区分页面类型。

3:已抓取集合(crawled_set)

已抓取集合指的是当前已经下载的页面的urlhash,存放已经抓取的网页,使用redis的set实现,set的key是urlhash,score是时间戳,已抓取集合主要是用来记录哪一些页面已经抓取和抓取的时间,用于后续的更新页面调度以及抓取信息的统计。同抓取队列一样,每一个站点有两种类型的已抓取集合,详情页和列表页





 


二:调度模块:
调度模块是抓取系统的关键,调度系统的好坏决定了抓取系统的效率;这块是主要是在redis linkbase之上的数据结构,主要有抓取队列、抓取集合、抓取优先级等等数据结构组成;对于一个抓取循环来说:获取URL,提交到抓取模块的待抓取队列,启动抓取,抓取完成之后对新链接进行抽取,最后进入等待抓取的队列里面。
调度系统的基本配置: 

a) 频率(间隔多少秒)

b) 各个抓取列表的选取比例:get_detail,mod_detail,get_list,mod_list

链接抽取:抽取页面的链接,进行除重,对于新的链接,插入到待抓取列表里

内容抽取:按照模块的配置XPATH,抽取页面信息,并写入到pagebase中。

离线调度:按照更新的比例,从crawled_set里面,定期选取url进入Mod队列里面进行刷新。




 


三:抓取模块:
抓取模块是抓取的必要条件,抓取模块来说,重要的是应付互联网上各式的问题,以及如何实现对对方站点的ip平衡,当然,这块是和调度系统的紧密结合的,对于抓取模块而言,本文主要使用scrapy工具包里面的下载模块。
首先,抓取模块从linkbase获取对应站点的抓取url,进行页面下载,然后将页面信息写回到pipeline中,并完成链接抽取和页面抽取,同时调用调度模块,插入到linkbase和pagebase中。 

下载端设计:

IP:每台机器需要配置多个物理公网IP,下载的时候,随机选择一个IP下载

抓取频度调整:读取配置文件,按照配置文件的抓取频率进行选取url




 


四:配置界面:
配置界面主要是对抓取系统的管理和配置,包括:站点feed、页面模块抽取、报表系统的反馈等等。


 


类似于通用的抓取架构,本文提到的抓取系统架构如下图:


 





 


一个完整的抓取数据流:
1:用户提供种子URL
2:种子URL进入linkbase中新URL队列中
3:调度模块选取url进入到抓取模块的待抓取队列中
4:抓取模块读取站点的配置文件,按照执行的频率进行抓取
5:抓取的结果返回到pipeline接口中,并完成连接的抽取
6:新发现的连接在linkbase里面进行dedup,并push到linkbase的新URL模块里面
7:调度模块选取url进入抓取模块的待抓取队列,goto 4
8:end


 


系统扩展
本文提到的抓取系统,核心是调度和存储模块;其中,抓取,存储,调度都是通过数据进行交互的,因此,模块之间可以任意平行扩展,对于系统规模来说,只需要平行扩展mysql和redis存储服务集群以及抓取集群即可。当然,简单的扩展会带来一些问题:比如垃圾列表页的泛滥,链接库的膨胀等等问题,这些问题后续在讨论吧。

View this post on my blog: http://www.haofengjing.org/?p=1567

用netstat查看网络状态详解 -- 网络系统 -- IT技术博客大学习 -- 共学习 共进步!

一、Linux服务器上11种网络连接状态:

图:TCP的状态机
通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手
注:以下说明最好能结合"图:TCP的状态机"来理解。
SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。
1)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN. /* The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 */
2)、SYN_SENT:客户端通过应用程序调用connect进行active open.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT. /*The socket is actively attempting to establish a connection. 在发送连接请求后等待匹配的连接请求 */
3)、SYN_RECV:服务端应发出ACK确认客户端的SYN,同时自己向客户端发送一个SYN. 之后状态置为SYN_RECV /* A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 */
4)、ESTABLISHED: 代表一个打开的连接,双方可以进行或已经在数据交互了。/* The socket has an established connection. 代表一个打开的连接,数据可以传送给用户 */
5)、FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态./* The socket is closed, and the connection is shutting down. 等待远程TCP的连接中断请求,或先前的连接中断请求的确认 */
6)、CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT. /* The remote end has shut down, waiting for the socket to close. 等待从本地用户发来的连接中断请求 */
7)、FIN_WAIT2:主动关闭端接到ACK后,就进入了FIN-WAIT-2 ./* Connection is closed, and the socket is waiting for a shutdown from the remote end. 从远程TCP等待连接中断请求 */
8)、LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK . /* The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原来发向远程TCP的连接中断请求的确认 */
9)、TIME_WAIT:在主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态。/* The socket is waiting after close to handle packets still in the network.等待足够的时间以确保远程TCP接收到连接中断请求的确认 */
10)、CLOSING: 比较少见./* Both sockets are shut down but we still don't have all our data sent. 等待远程TCP对连接中断的确认 */
11)、CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束./* The socket is not being used. 没有任何连接状态 */
TIME_WAIT状态的形成只发生在主动关闭连接的一方。
主动关闭方在接收到被动关闭方的FIN请求后,发送成功给对方一个ACK后,将自己的状态由FIN_WAIT2修改为TIME_WAIT,而必须再等2倍 的MSL(Maximum Segment Lifetime,MSL是一个数据报在internetwork中能存在的时间)时间之后双方才能把状态 都改为CLOSED以关闭连接。目前RHEL里保持TIME_WAIT状态的时间为60秒。
当然上述很多TCP状态在系统里都有对应的解释或设置,可见man tcp
二、关于长连接和短连接:
通俗点讲:短连接就是一次TCP请求得到结果后,连接马上结束.而长连接并不马上断开,而一直保持着,直到长连接TIMEOUT(具体程序都有相关参数说明).长连接可以避免不断的进行TCP三次握手和四次挥手.
长连接(keepalive)是需要靠双方不断的发送探测包来维持的,keepalive期间服务端和客户端的TCP连接状态是ESTABLISHED.目前http 1.1版本里默认都是keepalive(1.0版本默认是不keepalive的),ie6/7/8和firefox都默认用的是http 1.1版本了(如何查看当前浏览器用的是哪个版本,这里不再赘述)。Apache,java
一个应用至于到底是该使用短连接还是长连接,应该视具体情况而定。一般的应用应该使用长连接。
1、Linux的相关keepalive参数
a、 tcp_keepalive_time - INTEGER
How often TCP sends out keepalive messages when keepalive is enabled.
Default: 2hours.
b、 tcp_keepalive_probes - INTEGER
How many keepalive probes TCP sends out, until it decides that the
connection is broken. Default value: 9.
c、 tcp_keepalive_intvl - INTEGER
How frequently the probes are send out. Multiplied by
tcp_keepalive_probes it is time to kill not responding connection,
after probes started. Default value: 75sec i.e. connection
will be aborted after ~11 minutes of retries.
2、F5负载均衡上的相关参数说明
a、Keep Alive Interval
Specifies, when enabled, how frequently the system sends data over an idle TCP connection, to determine whether the connection is still valid.
Specify: Specifies the interval at which the system sends data over an idle connection, to determine whether the connection is still valid. The default is 1800 milliseconds.
b、Time Wait
Specifies the length of time that a TCP connection remains in the TIME-WAIT state before entering the CLOSED state.
Specify: Specifies the number of milliseconds that a TCP connection can remain in the TIME-WAIT state. The defaultis 2000.
c、Idle Timeout
Specifies the length of time that a connection is idle (has no traffic) before the connection is eligible for deletion.
Specify: Specifies a number of seconds that the TCP connection can remain idle before the system deletes it. The default is 300 seconds.
3、Apache的相关参数说明
以下是Apache/2.0.61版本的默认参数和说明
a、KeepAlive:
default On.Whether or not to allow persistent connections (more than
one request per connection). Set to "Off" to deactivate.
b、MaxKeepAliveRequests:
default 100.The maximum number of requests to allow
during a persistent connection. Set to 0 to allow an unlimited amount.
We recommend you leave this number high, for maximum performance.
c、KeepAliveTimeout:
default 15. Number of seconds to wait for the next request from the
same client on the same connection.

View this post on my blog: http://www.haofengjing.org/?p=1566

36氪Plus消息:贷款组合推荐工具“钱小二”已获数百万天使轮融资 | 36氪

根据"钱小二"在创业者社区36氪plus上的更新信息,该团队已获得数百万天使轮融资,投资方及投资时间不明。

"钱小二"是一个贷款搜索 + 贷款组合推荐平台,目标是帮助用户快速找到条件最优的贷款产品。用户在线提交自己的融资需求和资信数据(收入证明、消费及社交数据),"钱小二"将根据其客户特征评估模型和推荐算法,为用户推荐单一或组合的贷款产品。比起融 360、好贷、91 金融超市等类似产品,"钱小二"更加强调服务性,用户不是在搜索结果中一一筛选,而是直接收获一组贷款方案,并由客服人员协助落实。"钱小二"的贷款来源也更加多样,既有银行和小贷公司,也有部分 P2P 网贷。

接着互联网金融的东风,贷款搜索在国内发展得十分迅速,这既得益于银行贷款政策的碎片化和不透明,也得益于银行客户开发能力的不足。根据非官方信息,融360、好贷等平台每向银行提供一个有效需求,收入大概在 100 到 300 元人民币。去年底某贷款搜索网站月申请额据称已超百亿,增长至今保守估约两百亿,按成交转化率 20%、人均贷款额 20 万、人头费 200 到 300 元计,其月营收已在 400 万到 600 万之间——这是刚上线一年多的成绩。

互联网金融离钱很近,但正因如此,各方才格外重视其中的风险性。众多公司一头热地扎进互联网金融创业潮,多少也会带来一些隐忧。

[36氪原创文章,作者: 沈超]

17

通过36氪Plus消息:贷款组合推荐工具"钱小二"已获数百万天使轮融资 | 36氪.

View this post on my blog: http://www.haofengjing.org/?p=1557

IIS并发连接数及性能优化 - 全欣 的专栏 - 博客频道 - CSDN.NET

如果要查看IIS连接数,最简单方便的方法是通过"网站统计"来查看,"网站统计"的当前在线人数可以认为是当前IIS连接数。然而,"网站统计"的当前在线人数统计时间较长,一般为10分钟或15分钟,再加上统计技术及统计机制的问题,从而会产生或多或少的统计误差。
如果要想知道确切的当前网站IIS连接数的话,最有效的方法是通过windows自带的系统监视器来查看。这正是本文要介绍的方法。

一、     新建IIS并发连接数监控器
1.     运行-->输入"perfmon.msc"
2.     在"系统监视器"图表区域里点击右键,然后点"添加计数器"
 
图一
3.     在"添加计数器"窗口,"性能对象"选择Web Service,"从列表选择计数器"选中Current Connection,"从列表选择实例"选中你要统计的站点,最后点击"添加"按钮
图二

二、     设置完毕
这样,你就可以在"系统监视器"图表区域中看到一条曲线(此曲线你可以设置其颜色和宽度等参数),它就是网站的IIS连接数曲线图了,如图一黄色曲线所示。
需要说明的是,windows系统监视器显示的是即时IIS并发连接数,并非如"网站统计"那里的15分钟内访问人数,所以你会发现IIS并发连接数并不会太多


解决方法:
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

这是个老问题了!你就查两点:
一、看所有open的连接是否都close了。
二、如果访问量很大,加上Max Pool Size=512这一句,当然这是要以损失系统性能为代价的!
这样以后一定可以解决你的问题!

解决方案一

我 想原因可能是并发操作。DataReader是独占连接的,就是说你的程序可能设计上有问题。比如说最大连接设100,假设有100个人同时使用 DataReader正在读取数据库内容,那么当第101人读取的时候,连接池中的连接已经没有了,就会出现上面的错误。DataReader是独占连接 的,每个DataReader都要占用一个连接。当然这个情况是偶尔出现的,所以会很长时间出现一次,因为只有同时有超过连接池最大连接数量的并发操作才 会发生。而且你加大并发数量只能暂时缓解问题,如果你加大到200个并发连接,如果有201 人同时操作怎么办?你说了你使用Connection对象的Close()方法,这是不行的,因为Close()方法仅仅是关闭连接,但这个连接没有释 放,还是被这个对象占用,要释放必须使用Connection的Dispose()方法显式释放连接才可以,否则这个对象占用的连接只能等到�
��圾收集的情 况下才能被释放。这种情况肯定会出现"超时时间已到"的错误。

解决方法:
1 修改几个关键页面或访问比较频繁的数据库访问操作,使用DataAdapter和DataSet来获取数据库数据,不要使用DataReader。
2 在访问数据库的页面上使用数据缓存,如果页面的数据不是经常更新(几分钟更新一次)的话,使用Cache对象可以不用访问数据库而使用缓存中的内容,那么可以大大减少连接数量。
3 修改代码,把使用Connection对象的地方都在Close()后面加上Dispose()调用。
4 建议对数据库操作进行大的修改,建立自己的数据库操作代理类,继承System.IDisposable接口,强迫释放资源,这样就不会出现连接数量不够的问题了。

解决方案二

解决方法(*):WEB.config 里面:在数据库连接加 Max Pool Size = 512;server=local;uid=;pwd=;database=2004;Max Pool Size = 512;">一劳永逸。

解决方案三

估计是连接(Connection)对象没有Close。倒是不必Dispose,而DataReader用完后应该关闭,但不关闭也没问题,只是不关闭的话此连接对象就一直不能用,只要你最终关闭了连接对象就不会出问题。

连接对象在Open后的操作都放在try块中,后面跟一个finally块:conn.Close();




如何查询sql2005连接数 


经常发生 "数据库连接过多的错误" 这样的错误,但是却又不清楚当前的连接数为多少,大致的总结了几种方法。
1.通过系统的"性能"来查看:
开始->管理工具->性能(或者是运行里面输入 mmc)然后通过

[attach]52716[/attach]

添加计数器添加 SQL 的常用统计 然后在下面列出的项目里面选择用户连接就可以时时查询到数据库的连接数了。
不过此方法的话需要有访问那台计算机的权限,就是要通过windows账户登陆进去才可以添加此计数器。
2.通过系统表来查询:
[code]SELECT * FROM
[Master].[dbo].[SYSPROCESSES] WHERE [DBID]
IN
(
SELECT
[DBID]
FROM
[Master].[dbo].[SYSDATABASES]
WHERE
NAME='databaseName'
)
[/code]

databaseName 是需要查看的数据库,然后查询出来的行数,就是当前的连接数。不过里面还有一些别的状态可以做参考用。

由上面的语句可以看出系统表获取一些连接和活动信息,主要介绍下面的两个系统表:

(1)sprocesses

sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。这些进程可以是客户端进程或系统进程。sysprocesses 只存储在 master 数据库中。

(2)Sysperfinfo

包括一个 Microsoft® SQL Server™ 表示法的内部性能计数器,可通过 Windows NT 性能监视器显示.

 

有人提议说为了获取SQL Server的当前连接数:使用如下SQL:

SELECT COUNT(*) AS CONNECTIONS FROM master..sysprocesses

个人认为这样不对,看看.sysprocesses的login_time列就可看出.

 

另外一个方面是进程不能和连接相提并论,他们是一对一的关系吗,也就是说一个进程就是一个连接?一个连接应该有多个进程的,所以连接和进程之间的关系应该是1:n的.


因为sysprocesses列出的进程包含了系统进程和用户进程,为了得到用户连接,可以使用如下SQL:

SELECT cntr_value AS User_Connections FROM master..sysperfinfo as p
WHERE p.object_name = 'SQLServer:General Statistics' And p.counter_name = 'User Connections'

个人还是认为不对,因为它是一个计数器,可能会累加的.

还有一种方案是利用如下SQL:

select connectnum=count(distinct net_address)-1 from master..sysprocesses

理由是net_address是访问者机器的网卡值,这个总该是唯一的吧.但是看起来得到的是所有时间内的连接数.

希望大家可以给出自己的解决方案.这个问题解决了,相信会有很大的用途.


3.通过系统过程来查询:
[url=http://search.microsoft.com/default.asp?so=RECCNT&siteid=us%2Fdev&p=1&nq=NEW&qu=SP_WHO&IntlSearch=&boolean=PHRASE&ig=01&i=09&i=99]SP_WHO[/url] 'loginName'
loginName 是当然登陆Sql的用户名,一般程序里面都会使用一个username来登陆SQL这样通过这个用户名就能查看到此用户名登陆之后占用的连接了。
如果不写loginName,那么返回的就是所有的连接。

sp_who提供icrosoft® SQL Server™ 用户和进程的信息。可以筛选返回的信息,以便只返回那些不是空闲的进程。

列出所有活动的用户:SP_WHO 'active'

列出某个特定用户的信息:SP_WHO 'sa'

4、系统变量

@@CONNECTIONS 返回自上次启动 Microsoft® SQL Server™ 以来连接或试图连接的次数。

@@MAX_CONNECTIONS 返回 Microsoft® SQL Server™ 上允许的同时用户连接的最大数。返回的数不必为当前配置的数值


 

 
***************连接池和连接数详解**********

连接到数据库服务器通常由几个需要很长时间的步骤组成。 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前事务中登记,等等。

实际上,大多数应用程序仅使用一个或几个不同的连接配置。 这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。 为了使打开的连接成本最低,ADO.NET 使用称为连接池的优化方法。

连接池减少新连接需要打开的次数。 池进程保持物理连接的所有权。 通过为每个给定的连接配置保留一组活动连接来管理连接。 只要用户在连接上调用 Open,池进程就会检查池中是否有可用的连接。 如果某个池连接可用,会将该连接返回给调用者,而不是打开新连接。 应用程序对该连接调用 Close 时,池进程会将连接返回到活动连接池集中,而不是真正关闭连接。 连接返回到池中之后,即可在下一个 Open 调用中重复使用。

只有配置相同的连接可以建立池连接。 ADO.NET 同时保留多个池,每个配置一个池。 连接由连接字符串以及 Windows 标识(在使用集成的安全性时)分为多个池。 还根据连接是否已在事务中登记来建立池连接。

池连接可以显著提高应用程序的性能和可缩放性。 默认情况下,ADO.NET 中启用连接池。除非显式禁用,否则,连接在应用程序中打开和关闭时,池进程将对连接进行优化。 还可以提供几个连接字符串修饰符来控制连接池的行为。 有关更多信息,请参见本主题后面的"使用连接字符串关键字控制连接池"。

池的创建和分配
在初次打开连接时,将根据完全匹配算法创建连接池,该算法将池与连接中的连接字符串关联。 每个连接池都与一个不同的连接字符串相关联。 打开新连接时,如果连接字符串并非与现有池完全匹配,将创建一个新池。 按进程、按应用程序域、按连接字符串以及(在使用集成的安全性时)按 Windows 标识来建立池连接。 连接字符串还必须是完全匹配的;按不同顺序为同一连接提供的关键字将分到单独的池中。

在以下 C# 示例中创建了三个新的 SqlConnection 对象,但是管理时只需要两个连接池。 注意,根据为 Initial Catalog 分配的值,第一个和第二个连接字符串有所不同。

复制代码
using (SqlConnection connection = new SqlConnection(
"Integrated Security=SSPI;Initial Catalog=Northwind"))
{
connection.Open();
// Pool A is created.
}

using (SqlConnection connection = new SqlConnection(
"Integrated Security=SSPI;Initial Catalog=pubs"))
{
connection.Open();
// Pool B is created because the connection strings differ.
}

using (SqlConnection connection = new SqlConnection(
"Integrated Security=SSPI;Initial Catalog=Northwind"))
{
connection.Open();
// The connection string matches pool A.
}


如果 MinPoolSize 在连接字符串中未指定或指定为零,池中的连接将在一段时间不活动后关闭。 但是,如果指定的 MinPoolSize 大于零,在 AppDomain 被卸载并且进程结束之前,连接池不会被破坏。 非活动或空池的维护只需要最少的系统开销。

注意:
当出现故障转移等错误时,会自动清除池。


添加连接
连接池是为每个唯一的连接字符串创建的。 当创建一个池后,将创建多个连接对象并将其添加到该池中,以满足最小池大小的要求。 连接根据需要添加到池中,但是不能超过指定的最大池大小(默认值为 100)。 连接在关闭或断开时释放回池中。

在请求 SqlConnection 对象时,如果存在可用的连接,将从池中获取该对象。 连接要可用,必须未使用,具有匹配的事务上下文或未与任何事务上下文关联,并且具有与服务器的有效链接。

连接池进程通过在连接释放回池中时重新分配连接,来满足这些连接请求。 如果已达到最大池大小且不存在可用的连接,则该请求将会排队。 然后,池进程尝试重新建立任何连接,直到到达超时时间(默认值为 15 秒)。 如果池进程在连接超时之前无法满足请求,将引发异常。

警告:
我们强烈建议您在使用完连接后总是将其关闭,以使连接返回到池中。要关闭连接,可以使用 Connection 对象的 Close 或 Dispose 方法,也可以通过在 C# 的 using 语句中或在 Visual Basic 的 Using 语句中打开所有连接。 不是显式关闭的连接可能不会添加或返回到池中。 有关更多信息,请参见 Visual Basic 的using Statement (C# Programmer's Reference)或How to: Dispose of a System Resource。

注意:
不要在类的 Finalize 方法中对 Connection、DataReader 或任何其他托管对象调用 Close 或 Dispose。 在终结器中,仅释放类直接拥有的非托管资源。 如果类不拥有任何非托管资源,则不要在类定义中包含 Finalize 方法。 有关更多信息,请参见Garbage Collection。


移除连接
如果连接长时间空闲,或池进程检测到与服务器的连接已断开,连接池进程会将该连接从池中移除。 注意,只有在尝试与服务器进行通信之后才能检测到断开的连接。 如果发现某连接不再连接到服务器,则会将其标记为无效。 无效连接只有在关闭或重新建立后,才会从连接池中移除。

如果存在与已消失的服务器的连接,那么即使连接池管理程序未检测到已断开的连接并将其标记为无效,仍有可能将此连接从池中取出。 这种情况是因为检查连接是否仍有效的系统开销将造成与服务器的另一次往返,从而抵消了池进程的优势。 发生此情况时,初次尝试使用该连接将检测连接是否曾断开,并引发异常。

清除池
ADO.NET 2.0 引入了清除池的两种新方法: ClearAllPools 和 ClearPool。 ClearAllPools 清除给定提供程序的连接池,ClearPool 清除与特定连接关联的连接池。 如果在调用时连接正在使用,将进行相应的标记。 连接关闭时,将被丢弃,而不是返回池中。

事务支持
连接是根据事务上下文来从池中取出并进行分配的。 除非在连接字符串中指定了 Enlist=false,否则,连接池将确保连接在 Current 上下文中登记。 当连接通过登记的 System.Transactions 事务关闭并返回到池中时,连接将被保留,以便下次使用同一 System.Transactions 事务请求该连接池时,可返回同一连接(如果该连接可用)。如果该连接不可用,则会打开新连接。如果该事务没有可用连接,在该连接打开时,将自动注册该连接。

当连接关闭时,它将被释放回池中,并根据其事务上下文放入相应的子部分。 因此,即使分布式事务仍然挂起,仍可以关闭该连接而不会生成错误。 这样,您就可以在随后提交或中止分布式事务。

使用连接字符串关键字控制连接池
SqlConnection 对象的 ConnectionString 属性支持连接字符串键/值对,可以用于调整连接池逻辑的行为。 有关更多信息,请参见 ConnectionString。

池碎片
池碎片是许多 Web 应用程序中的一个常见问题,应用程序可能会创建大量在进程退出后才会释放的池。 这样,将打开大量的连接,占用许多内存,从而影响性能。

因为集成安全性产生的池碎片
连接根据连接字符串以及用户标识来建立池连接。 因此,如果使用网站上的基本身份验证或 Windows 身份验证以及集成的安全登录,每个用户将获得一个池。 尽管这样可以提高单个用户的后续数据库请求的性能,但是该用户无法利用其他用户建立的连接。 这样还使每个用户至少产生一个与数据库服务器的连接。 这对特定 Web 应用程序结构会产生副作用,因为开发人员需要衡量安全性和审计要求。

因为许多数据库产生的池碎片
许多 Internet 服务提供商在一台服务器上托管多个网站。 他们可能使用单个数据库确认窗体身份验证登录,然后为该用户或用户组打开与特定数据库的连接。 与身份验证数据库的连接将建立池连接,供每个用户使用。 但是,每个数据库的连接存在一个独立的池,因此增加了与服务器的连接数。

这也会对应用程序设计产生副作用。 但是,可以通过一个相对简单的方式避免此副作用,而又不会影响连接 SQL Server 时的安全性。 不是为每个用户或组连接独立的数据库,而是连接到服务器上的相同数据库,然后执行 Transact-SQL USE 语句来切换为所需的数据库。 以下代码段演示入如何创建与 master 数据库的初始连接,然后切换到 databaseName 字符串变量中指定的所需数据库。

Visual Basic 复制代码
' Assumes that command is a valid SqlCommand object and that
' connectionString connects to master.
command.Text = "USE DatabaseName"
Using connection As New SqlConnection(connectionString)
connection.Open()
command.ExecuteNonQuery()
End Using

C# 复制代码
// Assumes that command is a SqlCommand object and that
// connectionString connects to master.
command.Text = "USE DatabaseName";
using (SqlConnection connection = new SqlConnection(
connectionString))
{
connection.Open();
command.ExecuteNonQuery();
}


应用程序角色和连接池
通过调用 sp_setapprole 系统存储过程激活了 SQL Server 应用程序角色之后,该连接的安全上下文无法重置。 但是,如果启用了池,连接将返回池,在重复使用池连接时会出错。 有关更多信息,请参见知识库文章"SQL application role errors with OLE DB resource pooling"(OLE DB 资源池出现 SQL 应用程序角色错误)。

应用程序角色替代项
如果您使用的是 SQL Server 2005,我们建议您利用可代替应用程序角色的新安全机制。 有关更多信息,请参见在 SQL Server 中创建应用程序角色 (ADO.NET)。

View this post on my blog: http://www.haofengjing.org/?p=1555

四川治安总队原副队长落马 搜出千万连号百元钞_网易新闻中心

2月7日,春节放假后第一个工作日,四川省公安厅召开会议,由副省长、公安厅厅长侍俊主持,所有厅科级以上干部参会。当时会场气氛凝重。会议通报了数起四川省公安系统违法案件,其中最严重的一起是李荣飚案。

18天后,2月25日,四川省人民政府新闻办公室官方微博"四川发布"消息,四川省公安厅治安总队原副总队长李荣飚涉嫌重大受贿犯罪,近日四川省检察院已立案侦查,并对其采取逮捕强制措施。

李荣飚,涉嫌利用职务之便,为他人谋取利益,非法收受民爆企业主等人的财物。四川省公安厅多名官员称,李荣飚于去年8月已被有关部门带走调查,涉嫌受贿3100余万元。

而李荣飚同时还担任省工程爆破协会(后简称爆破协会)常务副理事长。有官员称,李荣飚涉嫌利用爆破协会敛财。

"搜出1100万连号百元大钞"

四川省公安厅处级官员李力(微博)(化名)回忆,他最后在公安厅大楼见到李荣飚是在去年8月初。平时李荣飚逢人总是摆出笑脸,但那一次却很沉默,心事重重的样子。

据了解,官方通报前,省公安厅的部分官员早就得知李荣飚案发。

李荣飚最后一次出现在公开报道中,是去年7月29日,四川省公安厅网站发布的一条消息显示,当天上午,李荣飚等向上级汇报了工作。

此后的8月份,省公安厅多名官员就听说李荣飚被举报,公安部纪委将其带走调查。

2013年12月底,四川省公安厅的督导巡视工作总结会,侍俊曾向巡视组成员通报李荣飚案的部分细节。

一名副厅级巡视组成员说,会上通报称:李荣飚作为治安总队副总队长,分管治安管理支队、枪爆管理支队等业务部门,利用职权向民用爆炸物企业等受贿3100万余元。

"在自己监管的行业中犯罪,涉案金额巨大,是很严重的犯罪案件。"该巡视组成员评论。

李力称,某了解李荣飚案详情的省厅领导曾私下提起,办案人员从李荣飚办公室搜出500万余元现金,从其家中搜出600万余元现金,总计现金1100万余元。"搜出的都是连号的崭新百元大钞。"

上述说法得到两名公安厅处级以上干部的证实。

四川公安厅内部一名处级干部告诉新京报记者,"据说,3000多万元贿赂大都是李荣飚自己交代的。他还对办案人员说,把收的贿赂交还后,希望能做回民警。"

这一说法也得到了李力的证实。

"检查合格后还得塞好处费"

李荣飚自2010年起,担任四川省公安厅治安总队副总队长,分管治安管理支队、特种行业管理支队、枪爆管理支队等。其中民爆企业是其重点监管对象。

国家对于民用爆炸物品行业,实行的是许可证制度。

凉山州一位高姓矿业老板告诉新京报记者,申请购买开矿用炸药,需经公安机关层层审批和检查,最后由省公安厅治安总队枪爆科批准发放购买许可证。

德阳市一家烟花爆竹燃放企业负责人介绍,企业需要的燃放许可证,跨省运输证,均由省公安厅治安总队发放。

李荣飚的一位老上级说,李荣飚掌握民用爆炸物的购买、销售、运输的审批许可权,有很大权力寻租空间,因此经常接受企业贿赂,乃至索贿。

当地一名负责监管民用爆炸物品企业的警察,介绍了行业"潜规则"。此类企业安全能否达标,公安部门的监管、检查至关重要。而有些监管人员在例行检查合格后,会捞取一笔好处费,才发给企业相关许可证。

这一说法得到四川某民用爆炸物公司负责人证实。他们每年需向相关监管人员送钱,"几万到十几万不等。治安总队的一些领导也是送钱对象之一。"

上述两位企业主都承认送过钱,并称与李荣飚相识,且关系良好。

这位大型烟花爆竹老板告诉记者,据行业内部知情人透露,李荣飚被纪委调查时交代了不少行贿人员,其中有泸州一烟花爆竹专营公司总经理钟某和遂宁一烟花爆竹厂厂长唐某。"据说,后来他俩都被纪委的人叫去谈话。"

记者近日电话联系上述两位企业主,唐某并没有否认向李荣飚行贿,而钟某则称:"与李荣飚没关系。"

这位老板还告诉记者,从2013年下半年起,落实中央八项规定,监管的人不敢收钱了,连请吃饭也不来了。"今年春节我们没有去省里拜访领导。"

"今年整肃政法系统纪律,没人敢弄钱了。"前述监管民爆企业的警察称。

2月7日,《人民公安报》报道,侍俊指出,要着眼容易发生腐败的领域,制定出规范权力运行的制度。

爆破协会成索贿平台?

除省公安厅治安总队副总队长,李荣飚还有另一个身份:四川省工程爆破协会的常务副理事长。

"前者让他成为爆炸物销售企业的监管者,后者则为李荣飚与企业提供了交流、升华感情的平台",省公安厅一名内部人士指出,李荣飚常以副理事长的身份,出席行业内的多次会议,结识了不少朋友。

该工程爆破协会是一个非营利性社会团体,成员是四川省从事工程爆破的科研、设计、教学、施工、管理的企事业单位或个人,均为自愿参加,其业务主管部门是省公安厅。

2011年8月,四川省工程爆破协会第五届理事选举,四川雅化实业集团股份有限公司副总裁樊建民当选为理事长。李荣飚当选为协会常务副理事长。

据公安厅内部一名官员透露,该协会由公安厅治安总队监管,实际上是李荣飚敛财的"小金库",李荣飚通过变相转移会员费、开设培训班捞钱,甚至通过协会平台密切接触民爆企业老板,私底下索贿、受贿。

2月23日,记者联系了理事长樊建民。

他说,虽然挂着协会理事长的头衔,但很少参与协会的管理工作。具体工作是李荣飚在做。李荣飚被抓后,协会活动基本就停止了。

每年上百万会费"去向不明"

这个工程爆破协会的经费来源:会费、捐赠和赞助。

一位烟花爆竹燃放公司的负责人、也是第五届理事会成员介绍,他的企业每年向协会缴纳1万元会费。

据他说,按照企业规模和企业老板在协会中的级别,会费有所不同,普通会员每年交纳3000至8000元不等,理事会成员每年交纳1万元,常务理事会员、副会长、会长交纳2万至5万。

雅化实业集团作为理事长单位,交纳的会费最多,为5万元。

协会网站称,2011年8月16日,四川省21个市、州的213家会员单位的代表参加第五次会员代表大会,其中理事会成员有128名。

按照理事会成员每年交1万元,则有128万元,再加上其他普通会员的会费,总会费超过150万。

企业会费流向何处?根据会员章程介绍,协会会费必须用于协会章程规定的业务范围和事业的发展。协会资产接受会员代表大会和财政部门的监督。

但一名理事成员告诉记者,每年协会财务部门会汇报一次会费使用情况,但因为"无人监督、审查,财务汇报只是走过场"。

他还透露,协会负责人曾说使用部分会费向监管部门"争取政策",实际上就是"给监管部门领导送钱"。

该协会还会组织涉爆企业事业单位领导层、管理层人员和工程技术人员的培训及考核工作。

记者搜索发现,从2011年5月到2013年7月,该协会共举办了2期共12个工程爆破技术人员培训班,参加培训人员近2000人。

据一名参加工程爆破协会培训班的企业员工透露,培训费用为1000元左右。粗略计算,两年间,协会收取培训费不低于200万。

此外,据多家企业介绍,协会还举办烟花爆竹和焰火燃放资格培训等多类培训班。

协会理事长樊建民说,"会费和培训费的具体流向我不清楚,虽然协会章程中规定协会资产接受会员代表大会和财政部门的监督,但实际上比较宽松。"

上述那位理事成员告诉记者,除了交钱的培训班,协会"基本没有什么活动,入会就是为了交钱。"

他说,入会的主要目的是为了认识监管部门领导和专家,以便逢年过节送礼。在申请企业从业许可证和专业技术人员资格证时,可以疏通关系。

其他两名协会理事成员亦向记者证实该理事的说法。

省公安厅的一名内部人士说,李荣飚既是协会副理事长,又是协会和成员企业监管机构的领导,因此相当比例的会费和培训费都要流入他的手中。而李荣飚通过协会,直接接触到一大批需要疏通关系的企业主,受贿也更为方便。

"李荣飚是栽倒在自己负责岗位职权上的典型案例。"李荣飚的老上级感叹。

李荣飚

身份

四川省公安厅治安总队原副总队长

可能的敛财手段

掌握民用爆炸物的购买、销售、运输审批许可权,可以"经常接受企业贿赂,乃至索贿","例行检查合格后,捞取好处费才发许可证"。

身份

四川省工程爆破协会的常务副理事长

可能的敛财手段

1、变相转移会员费

2、开设培训班捞钱

3、通过协会平台密切接触民爆企业老板,私底下索贿、受贿。

【链接】 民爆行业实行许可证制度

国家对于民用爆炸物品行业,实行的是许可证制度。公安机关负责对民用爆炸物品购买、运输、爆破作业,进行安全监督管理。

民爆企业老板称,民用爆炸物品的购买许可证、经营许可证、燃放许可证、跨省运输证等,均由省公安厅治安总队发放。

View this post on my blog: http://www.haofengjing.org/?p=1551