sprintaccess connectionss optimizer可以删除吗

三月 2009 - IT瘾
关于互联网、软件开发的网页收藏、分享、发现
Log me in using
Caching in Tomcat ,使用servlet filter实现
使用Cache-Control和gzip提升tomcat应用性能,使用servlet filter过滤器实现
wz_jsgraphics.js js库,使用Javascript画图,线、矩形、椭圆、填充等
javascript 生成图表
javascript图表生成插件
10个最好的免费Javascript图表生成方案
5款性能出色的JavaScript图表插件 , 图表,柱状,插件,图,emprise,jquery,折线图,迷你,bluff,堆叠
flash图表,基于Open Flash Chart2
华为由IPD+CMM转为IPD+Scrum开发,华为是怎么用Scrum的? IPD只是决定做不做的问题
The Conversion Optimizer is an AdWords feature that manages your advertising
costs around specific conversion goals.
Website Optimizer is an easy-to-use tool for testing site content that
delivers actionable results. Below are just three of the many benefits that
testing brings.
基于开源技术jacob,用java程序发送传真
于日 上午10时50分40秒发布
是一个免费的Flash统计图表库存,其统计数据可以来自php, perl, python, java, asp, asp.net (任何动态语言) 或文本文件,你可以使用它,很简单的就生成一份直观形象的数据统计图表。
Open Flash Chart所支持的统计样式也比较丰富,包括:数据线图表、柱状统计图表、三维柱状统计表、玻璃柱状统计表、曲线图统计表、球形分割统计表、3D效果的图表等等。
下面是方法,使用Javascript方式有下面的优点:
不需要进行flex开发,只要用javascript就能展现flash图表数据。开发图表方便快速
对应用系统的负载压力也减轻不少,不需要多一次请求服务器的服务,展现速度比flex快
下面是效果:
line曲线图
于日 上午10时53分13秒发布
本文介绍如何,包括曲线图,点阵图,饼图和柱状图等。利用JavaScript来制作数据图表是一个非常好的展现图表的方式,比类似于Jfreechart等服务器端生成图表图片更具可伸缩,避免了服务器在生成和展现动态图表的负载压力。
于日 下午04时23分48秒发布
在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响。MySQL是目前使用最多的开源数 据库,但是MySQL数据库的默认设置性能非常的差,仅仅是一个玩具数据库。因此在产品中使用MySQL数据库必须进行必要的优化。
优化是一个复杂的任务,本文描述MySQL相关的数据库设计和查询优化,服务器端优化,存储引擎优化。
数据库设计和查询优化
在MySQL Server性能调优中,首先要考虑的就是Database Schema设计,这一点是非常重要的。一个糟糕的Schema设计即使在性能调优的MySQL Server上运行,也会表现出很差的性能;和Schema相似,查询语句的设计也会影响MySQL的性能,应该避免写出低效的SQL查询。这一节将详细 讨论这两方面的优化。
Schema Design
Schema的优化取决于将要运行什么样的query,不同的query会有不同的Schema优化方案。2.2节将介绍Query Design的优化。Schema设计同样受到预期数据集大小的影响。Schema设计时主要考虑:标准化,数据类型,索引。
标准化是在数据库中组织数据的过程。其中包括,根据设计规则创建表并在这些表间建立关系;通过取消冗余度与不一致相关性,该设计规则可以同时保护数据并提 高数据的灵活性。通常数据库标准化是让数据库设计符合某一级别的范式,通常满足第三范式即可。也有第四范式(也称为 Boyce Codd范式,BCNF))与第五范式存在,但是在实际设计中很少考虑。忽视这些规则可能使得数据库的设计不太完美,但这不应影响功能。
标准化的特点: 1)
所有的&对象&都在它自己的table中,没有冗余。
数据库通常由E-R图生成。
简洁,更新属性通常只需要更新很少的记录。
Join操作比较耗时。
Select,sort优化措施比较少。
适用于OLTP应用。
非标准化的特点:
在一张表中存储很多数据,数据冗余。
更新数据开销很大,更新一个属性可能会更新很多表,很多记录。
在删除数据是有可能丢失数据。
Select,order有很多优化的选择。
适用于DSS应用。
标准化和非标准化都有各自的优缺点,通常在一个数据库设计中可以混合使用,一部分表格标准化,一部分表格保留一些冗余数据:
对OLTP使用标准化,对DSS使用非标准化
使用物化视图。MySQL不直接支持该数据库特性,但是可以用MyISAM表代替。
冗余一些数据在表格中,例如将ref_id和name存在同一张表中。但是要注意更新问题。
对于一些简单的对象,直接使用value作为建。例如IP address等
Reference by PRIMARY/UNIQUE KEY。MySQL可以优化这种操作,例如:
select city_name
from city,state
where state_id=state.id and state.code=&CA&& converted to &select city_name from city where state_id=12
最基本的优化之一就是使表在磁盘上占据的空间尽可能小。这能带来性能非常大的提升,因为数据小,磁盘读入较快,并且在查询过程中表内容被处理所占用的内存更少。同时,在更小的列上建索引,索引也会占用更少的资源。
可以使用下面的技术可以使表的性能更好并且使存储空间最小:
使用正确合适的类型,不要将数字存储为字符串。
尽可能地使用最有效(最小)的数据类型。MySQL有很多节省磁盘空间和内存的专业化类型。
尽可能使用较小的整数类型使表更小。例如,MEDIUMINT经常比INT好一些,因为MEDIUMINT列使用的空间要少25%。
如果可能,声明列为NOT NULL。它使任何事情更快而且每列可以节省一位。注意如果在应用程序中确实需要NULL,应该毫无疑问使用它,只是避免 默认地在所有列上有它。
5) 对于MyISAM表,如果没有任何变长列(VARCHAR、TEXT或BLOB列),使用固定尺寸的记录格式。这比较快但是不幸地可能会浪费一些空间。即 使你已经用CREATE选项让VARCHAR列ROW_FORMAT=fixed,也可以提示想使用固定长度的行。
使用sample character set,例如latin1。尽量少使用utf-8,因为utf-8占用的空间是latin1的3倍。可以在不需要使用utf-8的字段上面使用latin1,例如mail,url等。
所有MySQL列类型可以被索引。对相关列使用索引是提高SELECT操作性能的最佳途径。使用索引应该注意以下几点:
MySQL只会使用前缀,例如key(a, b) &where b=5 将使用不到索引。
要选择性的使用索引。在变化很少的列上使用索引并不是很好,例如性别列。
在Unique列上定义Unique index。
避免建立使用不到的索引。
在Btree index中(InnoDB使用Btree),可以在需要排序的列上建立索引。
避免重复的索引。
避免在已有索引的前缀上建立索引。例如:如果存在index(a,b)则去掉index(a)。
控制单个索引的长度。使用key(name(8))在数据的前面几个字符建立索引。
越是短的键值越好,最好使用integer。
在查询中要使用到索引(使用explain查看),可以减少读磁盘的次数,加速读取数据。
相近的键值比随机好。Auto_increment就比uuid好。
Optimize table可以压缩和排序index,注意不要频繁运行。
Analyze table可以更新数据。
Designing queries
查询语句的优化是一个Case by case的问题,不同的sql有不同的优化方案,在这里我只列出一些通用的技巧。
在有index的情况下,尽量保证查询使用了正确的index。可以使用EXPLAIN select &查看结果,分析查询。
2) 查询时使用匹配的类型。例如select * from a where id=5, 如果这里id是字符类型,同时有index,这条查询则使用不到index,会做全表扫描,速度会很慢。正确的应该是 & where id=&5& ,加上引号表明类型是字符。
使用--log-slow-queries &long-query-time=2查看查询比较慢的语句。然后使用explain分析查询,做出优化。
服务器端优化
MySQL有很多发行版本,最好使用MySQL AB发布的二进制版本。也可以下载源代码进行编译安装,但是编译器和类库的一些bug可能会使编译完成的MySQL存在潜在的问题。
如果安装MySQL的服务器使用的是Intel公司的处理器,可以使用intel c++编译的版本,在Linux World2005的一篇PPT中提到,使用intel C++编译器编译的MySQL查询速度比正常版本快30%左右。Intel c++编译版本可以在MySQL官方网站下载。
服务器设置优化
MySQL默认的设置性能很差,所以要做一些参数的调整。这一节介绍一些通用的参数调整,不涉及具体的存储引擎(主要指MyISAM,InnoDB,相关优化在4中介绍)。
--character-set:如果是单一语言使用简单的character set例如latin1。尽量少用Utf-8,utf-8占用空间较多。
--memlock:锁定MySQL只能运行在内存中,避免swapping,但是如果内存不够时有可能出现错误。
--max_allowed_packet:要足够大,以适应比较大的SQL查询,对性能没有太大影响,主要是避免出现packet错误。
--max_connections:server允许的最大连接。太大的话会出现out of memory。
--table_cache:MySQL在同一时间保持打开的table的数量。打开table开销比较大。一般设置为512。
--query_cache_size: 用于缓存查询的内存大小。
--datadir:mysql存放数据的根目录,和安装文件分开在不同的磁盘可以提高一点性能。
存储引擎优化
MySQL支持不同的存储引擎,主要使用的有MyISAM和InnoDB。
MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非配置MySQL默认使用另外一个引擎。
MyISAM特性
MyISAM Properties
不支持事务,宕机会破坏表
使用较小的内存和磁盘空间
基于表的锁,并发更新数据会出现严重性能问题
MySQL只缓存Index,数据由OS缓存
Typical MyISAM usages
只读或者绝大部分是读操作的应用
批量导入数据
没有事务的低并发读/写
MyISAM优化要点
声明列为NOT NULL,可以减少磁盘存储。
使用optimize table做碎片整理,回收空闲空间。注意仅仅在非常大的数据变化后运行。
Deleting/updating/adding大量数据的时候禁止使用index。使用ALTER TABLE t DISABLE KEYS。
设置myisam_max_[extra]_sort_file_size足够大,可以显著提高repair table的速度。
MyISAM Table Locks
避免并发insert,update。
可以使用insert delayed,但是有可能丢失数据。
优化查询语句。
水平分区。
垂直分区。
如果都不起作用,使用InnoDB。
MyISAM Key Cache
设置key_buffer_size variable。MyISAN最主要的cache设置,用于缓存MyISAM表格的index数据,该参数只对MyISAM有影响。通常在只使用MyISAM的Server中设置25-33%的内存大小。
可以使用几个不同的Key Caches(对一些hot data)。
SET GLOBAL test.key_buffer_size=512*1024;
CACHE INDEX t1.i1, t2.i1, t3 IN
Preload index到Cache中可以提高查询速度。因为preloading index是顺序的,所以非常快。
LOAD INDEX INTO CACHE t1, t2 IGNORE LEAVES;
InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB提供row level lock,并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因 为在InnoDB中row level lock适合非常小的空间。InnoDB也支持FOREIGN KEY约束。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。
InnoDB是为在处理巨大数据量时获得最大性能而设计的。它的CPU使用效率非常高。
InnoDB存储引擎已经完全与MySQL服务器整合,InnoDB存储引擎为在内存中缓存数据和索引而维持它自己的缓冲池。 InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在 分离的文件中。InnoDB 表可以是任何大小,即使在文件尺寸被限制为2GB的操作系统上。
许多需要高性能的大型数据库站点上使用了InnoDB引擎。著名的Internet新闻站点Slashdot.org运行在InnoDB上。 Mytrix, Inc.在InnoDB上存储超过1TB的数据,还有一些其它站点在InnoDB上处理平均每秒800次插入/更新的负荷。
InnoDB特性
InnoDB Properties
支持事务,ACID,外键。
Row level locks。
支持不同的隔离级别。
和MyISAM相比需要较多的内存和磁盘空间。
没有键压缩。
数据和索引都缓存在内存hash表中。
InnoDB Good For
需要事务的应用。
高并发的应用。
自动恢复。
较快速的基于主键的操作。
InnoDB优化要点
尽量使用short,integer的主键。
Load/Insert数据时按主键顺序。如果数据没有按主键排序,先排序然后再进行数据库操作。
在Load数据是为设置SET UNIQUE_CHECKS=0,SET FOREIGN_KEY_CHECKS=0,可以避免外键和唯一性约束检查的开销。
使用prefix keys。因为InnoDB没有key压缩功能。
InnoDB服务器端设定
innodb_buffer_pool_size:这是InnoDB最重要的设置,对InnoDB性能有决定性的影响。默认的设 置只有8M,所以默认的数据库设置下面InnoDB性能很差。在只有InnoDB存储引擎的数据库服务器上面,可以设置60-80%的内存。更精确一点, 在内存容量允许的情况下面设置比InnoDB tablespaces大10%的内存大小。
innodb_data_file_path:指定表数据和索引存储的空间,可以是一个或者多个文件。最后一个数据文件必须是自动扩充的,也只有最后一个 文件允许自动扩充。这样,当空间用完后,自动扩充数据文件就会自动增长(以8MB为单位)以容纳额外的数据。例如: innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend两 个数据文件放在不同的磁盘上。数据首先放在ibdata1中,当达到900M以后,数据就放在ibdata2中。一旦达到50MB,ibdata2将以 8MB为单位自动增长。如果磁盘满了,需要在另外的磁盘上面增加一个数据文件。 innodb_autoextend_increment: 默认是8M, 如果一次insert数据量比较多的话, 可以适当增加.
innodb_data_home_dir:放置表空间数据的目录,默认在mysql的数据目录,设置到和MySQL安装文件不同的分区可以提高性能。
innodb_log_file_size:该参数决定了recovery speed。太大的话recovery就会比较慢,太小了影响查询性能,一般取256M可以兼顾性能和recovery的速度
innodb_log_buffer_size:磁盘速度是很慢的,直接将log写道磁盘会影响InnoDB的性能,该参数设定了log buffer的大小,一般4M。如果有大的blob操作,可以适当增大。
innodb_flush_logs_at_trx_commit=2: 该参数设定了事务提交时内存中log信息的处理。
=1时,在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的刷新。Truly ACID。速度慢。
=2时,在每个事务提交时,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新。只有操作系统崩溃或掉电才会删除最后一秒的事务,不然不会丢失事务。
=0时, 日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新。任何mysqld进程的崩溃会删除崩溃前最后一秒的事务
innodb_file_per_table:可以存储每个InnoDB表和它的索引在它自己的文件中。
transaction-isolation=READ-COMITTED: 如果应用程序可以运行在READ-COMMITED隔离级别,做此设定会有一定的性能提升。
innodb_flush_method: 设置InnoDB同步IO的方式:
Default & 使用fsync()。
O_SYNC 以sync模式打开文件,通常比较慢。
O_DIRECT,在Linux上使用Direct IO。可以显著提高速度,特别是在RAID系统上。避免额外的数据复制和double buffering(mysql buffering 和OS buffering)。
innodb_thread_concurrency: InnoDB kernel最大的线程数。
最少设置为(num_disks+num_cpus)*2。
可以通过设置成1000来禁止这个限制
缓存有很多种,为应用程序加上适当的缓存策略会显著提高应用程序的性能。由于应用缓存是一个比较大的话题,所以这一部分还需要进一步调研。
Advanced MySQL Performance Optimization, Peter Zaitsev, Tobias Asplund, MySQL Users Conference 2005
Improving MySQL Server Performance with Intel C++ Compiler,Peter Zaitsev,Linux World 2005
MySQL Performance Optimization, Peter Zaitsev, Percona Ltd,
OPEN SOURCE DATABASE CONFERENCE 2006
MySQL Server Settings Tuning, Peter Zaitsev, co-founder, Percona Ltd, 2007
MySQL Reference Manual
作者:andyao
原文link: /admin/show/144033
于日 下午05时02分59秒发布
下面的适合IE和Firefox,在用户关闭浏览器时弹出警告对话框,在刷新时同样触发:
&script type=&text/javascript&&//&![CDATA[
window.onbeforeunload = function(e){
& return 'leave or stay';
window.onunload = function(){
& //alert('onunload');
//]]&&/script&
于日 下午04时14分08秒发布
写过一篇博客,讲述了:
创建并维护产品backlog
按照业务价值或者ROI给backlog划分优先级并排序
把宏伟的远景、主题、特征加工成细粒度的用户故事,让它们可以在一个Sprint中完成
在每个交付或者Sprint开始的时候,向项目成员介绍远景规划和目标
代表客户利益、作为客户的接口、推动客户工作
参与每日立会、Sprint计划会议、Sprint总结、回顾
在每个Spring结尾时查看产品进度,有权认可或是不认可完成的工作
在Sprint结束以后可以改变项目方向
与外部交流状态
如果产品要进行剧烈变化的时候,终止当前的Sprint
于日 下午12时02分35秒发布
JAVA上加密算法的实现用例,MD5/SHA1,DSA,DESede/DES,Diffie-Hellman的使用
memcached java client客户端
varnish缓存服务器的安装配置
Varnish is a state-of-the-art, high-performance HTTP accelerator. It uses the advanced features in Linux 2.6, FreeBSD 6/7 and Solaris 10 to achieve its high performance. 和squid类似,属于缓存服务器
jabber 即时通信Web版客户端
24/7 Wall Street网站于近日公布了全球最有价值的25个商业博客,这其中Gawker当仁不让以1.7亿美元的身价独占鳌头,这是Gawker博客站点第二次荣膺&最有价值商业博客&的殊荣,去年Gawker以1.5亿美元的身价位居榜首
于日 上午09时12分24秒发布
DES是单钥密码体制的代表。
单钥密码体制是一种传统的加密算法,是指信息的发送方和接收方共同使用同一把密钥进行加解密。
通常,使用的加密算法 比较简便高效,密钥简短,加解密速度快,破译极其困难。但是加密的安全性依靠密钥保管的安全性,在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题,并且如果在多用户的情况下密钥的保管安全性也是一个问题。
单钥密码体制的代表是美国的DES
安全程序 DESede/DES测试
import java.security.*;
import javax.crypto.*;
public class testdes {
public static void main(String[] args){
testdes my=new testdes();
void run() {
//添加新安全算法,如果用JCE就要把它添加进去
Security.addProvider(new com.sun.crypto.provider.SunJCE());
String Algorithm=&DES&; //定义 加密算法,可用 DES,DESede,Blowfish
String myinfo=&要加密的信息&;
//生成密钥
KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
SecretKey deskey = keygen.generateKey();
System.out.println(&加密前的二进串:&+byte2hex(myinfo.getBytes()));
System.out.println(&加密前的信息:&+myinfo);
Cipher c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.ENCRYPT_MODE,deskey);
byte[] cipherByte=c1.doFinal(myinfo.getBytes());
System.out.println(&加密后的二进串:&+byte2hex(cipherByte));
c1 = Cipher.getInstance(Algorithm);
c1.init(Cipher.DECRYPT_MODE,deskey);
byte[] clearByte=c1.doFinal(cipherByte);
System.out.println(&解密后的二进串:&+byte2hex(clearByte));
System.out.println(&解密后的信息:&+(new String(clearByte)));
catch (java.security.NoSuchAlgorithmException e1) {e1.printStackTrace();}
catch (javax.crypto.NoSuchPaddingException e2) {e2.printStackTrace();}
catch (java.lang.Exception e3) {e3.printStackTrace();}
public String byte2hex(byte[] b) //二行制转字符串
String hs=&&;
String stmp=&&;
for (int n=0;n&b.n++)
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+&0&+
else hs=hs+
if (n&b.length-1)
hs=hs+&:&;
return hs.toUpperCase();
Java代码来自:
于日 下午05时49分50秒发布
消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络相同上使用。由于其加密计算的工作量相当可观,所以以前的这种算法通常只用于数据量有限的情况下的加密,例如计算机的口令就是用不可逆加密算法加密的。近年来,随着计算机相同性能的飞速改善,加密速度不再成为限制这种加密技术发展的桎梏,因而消息摘要算法应用的领域不断增加。
现在,消息摘要算法主要应用在&数字签名&领域,作为对明文的摘要算法。著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体。
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。
消息摘要有两个基本属性:
两个不同的报文难以生成相同的摘要
难以对指定的摘要生成一个报文,而由该报文反推算出该指定的摘要
代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald Rivest提出的MD5
下面是一个计算:
import java.security.*;
public class myDigest {
public static void main(String[] args)
myDigest my=new myDigest();
my.testDigest();
public void testDigest()
String myinfo=&我的测试信息&;
//java.security.MessageDigest alg=java.security.MessageDigest.getInstance(&MD5&);
java.security.MessageDigest alga=java.security.MessageDigest.getInstance(&SHA-1&);
alga.update(myinfo.getBytes());
byte[] digesta=alga.digest();
System.out.println(&本信息摘要是:&+byte2hex(digesta));
//通过某中方式传给其他人你的信息(myinfo)和摘要(digesta) 对方可以判断是否更改或传输正常
java.security.MessageDigest algb=java.security.MessageDigest.getInstance(&SHA-1&);
algb.update(myinfo.getBytes());
if (algb.isEqual(digesta,algb.digest())) {
System.out.println(&信息检查正常&);
System.out.println(&摘要不相同&);
catch (java.security.NoSuchAlgorithmException ex) {
System.out.println(&非法摘要算法&);
public String byte2hex(byte[] b) //二行制转字符串
String hs=&&;
String stmp=&&;
for (int n=0;n&b.n++)
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+&0&+
else hs=hs+
if (n&b.length-1)
hs=hs+&:&;
return hs.toUpperCase();
于日 下午05时41分29秒发布
is an set of open source Java tools for parsing, generating and publishing RSS and Atom feeds.
The core ROME library depends only on the JDOM XML parser and supports parsing, generating
and converting all of the popular RSS and Atom formats including RSS 0.90, RSS 0.91 Netscape,
RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, and Atom 1.0.
You can parse to an RSS object model, an Atom object model or an abstract SyndFeed model
that can model either family of formats.
下面是一个
import java.io.IOE
import java.net.MalformedURLE
import com.sun.syndication.feed.synd.SyndC
import com.sun.syndication.io.FeedE
&* 使用rome rss和atom feeds工具解析google的博客rss
public class TestRome {
&&& public static void main(String[] args) {
&&& &&& &&& // 如果程序位于防火墙后面,就需要在程序中加上一些Proxy设置。
&&& &&& &&& java.util.Properties systemSettings = System.getProperties();
&&& &&& &&& systemSettings.put(&http.proxyHost&, &wsay.net&);
&&& &&& &&& systemSettings.put(&http.proxyPort&, &8080&);
&&& &&& &&& System.setProperties(systemSettings);
&&& &&& &&& String urlStr = &/blogsearch_feeds?hl=zh-CN&um=1&q=site:itindex.net&lr=&ie=utf-8&num=10&output=rss&;
//&&& &&& &&& java.net.URLConnection feedUrl = new java.net.URL(&file:D:/atom.xhtml&).openConnection();
&&& &&& &&& java.net.URLConnection feedUrl=
&&& &&& &&& try {
&&& &&& &&& &&& feedUrl = new java.net.URL(urlStr).openConnection();
&&& &&& &&& } catch (MalformedURLException e) {
&&& &&& &&& &&& // TODO Auto-generated catch block
&&& &&& &&& &&& e.printStackTrace();
&&& &&& &&& } catch (IOException e) {
&&& &&& &&& &&& // TODO Auto-generated catch block
&&& &&& &&& &&& e.printStackTrace();
&&& &&& &&& }
&&& &&& &&& feedUrl.setRequestProperty(&User-Agent&,
&&& &&& &&& &&& &&& &Mozilla/4.0 ( MSIE 5.0; Windows NT; http://itindex.net)&);
&&& &&& &&& com.sun.syndication.io.SyndFeedInput input = new com.sun.syndication.io.SyndFeedInput();
&&& &&& &&& com.sun.syndication.feed.synd.SyndFeed feed=
&&& &&& &&& try {
&&& &&& &&& &&& feed = input
&&& &&& &&& &&& &&& &&& .build(new com.sun.syndication.io.XmlReader(feedUrl));
&&& &&& &&& } catch (IllegalArgumentException e) {
&&& &&& &&& &&& // TODO Auto-generated catch block
&&& &&& &&& &&& e.printStackTrace();
&&& &&& &&& } catch (FeedException e) {
&&& &&& &&& &&& // TODO Auto-generated catch block
&&& &&& &&& &&& e.printStackTrace();
&&& &&& &&& } catch (IOException e) {
&&& &&& &&& &&& // TODO Auto-generated catch block
&&& &&& &&& &&& e.printStackTrace();
&&& &&& &&& }
&&& &&& &&& String feedType = feed.getFeedType();// 获取原feed属于哪种格式
&&& &&& &&& System.out.println(feedType);
&&& &&& &&&
&&& &&& &&& java.util.List list = feed.getEntries();
&&& &&& &&& for (int i = 0; i & list.size(); i++) {
&&& &&& &&& &&& com.sun.syndication.feed.synd.SyndEntry entry = (com.sun.syndication.feed.synd.SyndEntry) list
&&& &&& &&& &&& &&& &&& .get(i);
&&& &&& &&& &&& String entryTitle = entry.getLink();
&&& &&& &&& &&& System.out.println(&PublishedDate:&+entry.getPublishedDate());
&&& &&& &&& &&& System.out.println(&Title:&+entry.getTitle());
&&& &&& &&& &&& System.out.println(&Link:&+entry.getLink());
&&& &&& &&& &&& System.out.println(&category:&+entry.getCategories());
&&& &&& &&& &&& System.out.println(&Description:&+entry.getDescription());
&&& &&& &&& &&& if(entry.getContents().size()&0){
&&& &&& &&& &&& &&& SyndContent syndContent=(SyndContent)entry.getContents().get(0);
&&& &&& &&& &&& &&& System.out.println(&Content:&+syndContent.getValue());
&&& &&& &&& &&& }
&&& &&& &&& &&& System.out.println(&----------------------------:&);
&&& &&& &&& }
于日 下午10时14分33秒发布
3月8日大约20点钟,访问,,www.google.hk,以及投放在的Google Adsense均发现无法访问,返回的消息是域名解析失败。
访问查询google的域名解析,都返回无法解析。
太奇怪了!
于日 下午09时51分38秒发布
在我看来,使用Varnish代替Squid的理由有三点:
1、采用了&Visual Page Cache&技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。
2、Varnish的稳定性还不错,我管理的一台图片服务器运行Varnish已经有一个月,没有发生过故障,而进行相同工作的Squid服务器就倒过几次。
3、通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存,这一点是Squid不能具备的。
于日 下午12时17分44秒发布
这是 JDK 的发源地,通常是 Java 开发人员下载 JDK 和文档副本的首要站点。除此之外,该站点还是查找有关整个 Java 平台的信息的好来源,包括一段非常详细的 JVM 介绍(Hotspot),它极其深入地描述了 JVM 的细节。
Java.NET 站点汇集了开源项目、文档、博客、wiki、新闻和其他社区资源等各种内容。它是 Java 技术的主要信息来源,不过提供的信息似乎过于繁杂。不过尽管如此,浏览项目列表也会找到一些真正有用的东西,如 FEST-Swing 项目,它旨在创建一个用于构建 Swing 应用程序的&方便接口&,大大简化了单元测试的创建。
由 Floyd Marinescu 创建,他是 The ServerSide 的名誉主编,InfoQ 与这里列出的许多其他参考资源的区别是,它是技术中立的,不仅包括 Java 代码,还包括 .NET 和 Ruby,并提供了大量灵活的方法和见解。尽管 InfoQ 上的评论社区并没有 TheServerSide 上的社区那么庞大和多样化,但是该社区中的讨论通常更加温和,而不会过于激烈。
通常称为&the Slashdot of Java&,TheServerSide 是第一个公开质询、热烈讨论和积极研究企业 Java 主题的地方。有关轻量级容器(以 Spring 为代表)的一些最初理念就是从这里诞生的,这里产生了许多 Java 社区中的&思想领导者&。尽管最近的激烈争论有时会带有主观色彩,但 TSS 将始终是许多 Java 内容的发源地,这些内容构成了我们现在所拥有的 Java 系统;同样,从 TSS 总是可以了解各种 Java 技术的历史。
DZone 最初是一个面向 Java 开发人员的资源站点,但最近它扩展到了其他技术领域。包括 .NET 和 Ruby,以及其他几个主题&专区&。这样,不仅 Java 开发人员可以利用它来专门研究 Java 专区,还会有一些跨平台的内容,聪明的开发人员可以充分利用这一点。
如果您正在阅读本文,那么您已经找到了 dw。为了解释清楚,我必须强调除本文外,我曾在该站点发表过其他一些文章,但我可以诚实地说,dw 是一个有关 Java 编码和 JVM 的文章和资源的优秀来源。特别注意,请务必查看 ,这是一个由 Brian Goetz 撰写的长期系列,其中包含一个共分三部分的 JVM 垃圾收集器系列文章,它以一种浅显易懂的方式介绍了 GC 的核心概念。
alphaWorks 是 developerWorks 的姊妹站点,IBM 研究人员和员工在此提供他们认为会确定未来主流的工具和技术。alphaWorks 提供了十二种不同的类别,从而为 Java 开发人员提供了机会来尝试各种非常超前的工具、语言、库和其他项目 & 它们正处于研究阶段。注意,许多项目是为了证明一个特殊的研究点,然后就会停止,使项目保持在当前的效率状态。警告:有 些项目不是开源的,而有些项目不包含源代码。但相当数量的 alphaWorks 项目最终会成为主流,要么成为受 IBM 支持的产品,要么作为可从一些 IBM 开放源码位置下载的可用工具。无论如何,只要关注 alphaWorks,就可以了解 Java 发展的方向以及方式。
OnJava 是一个独立运行的站点,用于跟踪活动、记录会议、提供各种有关企业 Java 的观点。事实上,这里提供的大部分信息也可以在别处找到,不过这一点对于几乎所有开发人员门户(包括上面提到的)都是一样的,想了解 Java 的各种开发的开发人员只需打开该站点上的 ,然后逐一阅读。
Artima 由 Bill Venners 创建,目前已经发展成一个巨大的汇集了文章、博客和访谈的站点,它不是完全侧重于 Java 开发,并且其中还包括了 Java 著作方面的权威(查看 Bill Joy 自 Java 5 出版后,对 Java 语言复杂性的怀疑,以及他用于证明所担心问题的经典示例 & Enum&&)。该站点非常值得您访问。
于日 下午04时33分29秒发布
Blog/RSS XML-RPC Ping Services
博客的更新服务,在发表博客后通过XML-RPC调用其他的Ping服务,通知它们来更新新发表的Blog,最快地收录Blog。我想,同时这也是让搜索引擎识别最新原创的文章的一个方法。
http://api./RPC2
/ping/RPC2
http://ping.blo.gs/
/xmlrpc.php
/xmlrpc/ping.php
/rpc/server.php
/ping/RPC2
于日 下午02时43分26秒发布
从 1.x升级到2.3.2
1,修改pebble.properties,将dataDirectory=${user.home}/pebble修改为dataDirectory=${user.home}/blog
2,修改数据存储目录结构,新的为blog/blogs/default,blog/realm/username.properties
3,为了支持中文静态页面发布,修改FileStaticPageDAO.java代码:
&将FileWriter writer = new FileWriter(destination);
&修改为OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(destination),&UTF-8&);
4,Configuration-&Utilities,重建索引,rebuild index
5,Configuration-&Plugins,增加Properties,支持RSS的Ping服务:
&XmlRpcNotificationListener.urlList=/RPC2,/xmlrpc
6,将静态页面的xml存储文件里的标签blogEntry改为staticPage
7,Configuration-&Utilities,Reset plugins
于日 下午12时18分03秒发布
几个开源的支持Comet的Library:
:一种开源的分布式Comet服务器
:Ruby on Rails的Comet插件
:一个开源框架,可以让服务器端java对象推送事件到浏览器端javascript,java applet,或者flash应用程序
:提供基于AJAX-COMET模式的HTTP流的商业实现
:Ajax的推送技术
几款在线IM软件:
1、&支持AIM、ICQ、Yahoo! Messenger、Jabber、Gtalk和MSN多种IM平台。提供中文界面,速度较快。注册后可以同时添加多个不同类型的IM帐户,支持IE和FireFox。另外,如果你使用的是的话,通过一个插件可以让与相结合(见),使用更加方便。
2、&提供的IM平台与差不多,同样都支持AIM、ICQ、Yahoo! Messenger、Jabber、Gtalk和MSN等。目前还没有中文界面,而且速度也比较慢,它必须注册一个帐号后才能使用,不像那样在前台提供独立的IM登录口。同样支持IE和FireFox,目前还处于Beta阶段。
3、&目前只提供MSN、Yahoo和AIM三种IM平台,而且它无需注册,直接在前台提供每个IM的登录口,它的特色在于提供了与IM软件相类似的使用界面,操作方便、支持IE和FireFox。另外一个特色在于,它还提供、也就是说可以通手机来登录到IM平台,这样无论走到哪都能与网友进行沟通。
4、&这是提供的独立在线客户端,也就是说它只支持AIM的即时通软件。
5、&与相类似,由微软提供的一款MSN独立在线客户端。
6、&ICQ公司提供的ICQ独立在线客户端,使用JAVA技术。
7、&一个基于web的Jabber客户端。它其实是一个开源软件,你可以下载后在自已的服务器上安装,提供在线IM应用服务,当然它也提供了一个,你可以试用它的功能。
8、&最新发现的一个,与类似,提供AIM、ICQ、Yahoo! Messenger、Jabber、Gtalk和MSN多种IM平台,并且在前台就可以多帐号同时登录。你也可以注册一个帐号后把多个IM帐号集成在一起。支持IE和Firefox。(via )
9、&也是与Meebo非常相似的一个在线IM服务,不过关键在于它支持QQ,详细介绍见PARK17的。
10、&又是一个与相类似的基于web的IM客户端,它支持AIM、Yahoo messager!、MSN和Gtalk四种IM,使用Ajax技术构建。
于日 下午02时51分39秒发布
-MySQL Database Sharding Existing solutions
At the moment
is the 67th most visited website in the world, according to Alexa's ranking. This means that there's at least 66 other websites out there probably facing similar problems as we do. 16 of the 20 most popular websites are powered by MySQL so, we are definitely not alone, are we?
Let's have a look at some of the existing technologies that implement or are somehow related to sharding and scaling database sysems, and let's see which ones could be interesting for Netlog.
is one of the technologies you could think would solve similar problems. The truth is that a database cluster is helpful when it comes to high availability and performance, but it's not designed for the distribution of writes.
is another relatively new feature in MySQL that allows for horizontal splitting of large tables into smaller and more performant pieces. The physical storage of these partitions are limited to a single database server though, making it not relevant for when a single table grows out of the capacities of a single database server.
and , that both build on , are two other projects that help in sharding your data. MySQL Proxy introduces , as an extra programming language to instruct the proxy (for eg. finding the right shard for this query). At the time we needed a solution for sharding neither of these projects seemed to support directory based sharding the way we'd wanted it to.
is a sharding framework for MySQL in Java, that requires the Java Virtual Machine, with a php interface currently being in an infancy state. Being a Java solution makes it less interesting for us, since we prefer the technologies we are experts in and our application is written in: php.
Other technologies that aren't MySQL or php related include
(HQL), , ,
(*shivers*),
(for Python), , etc ... The memcached SQL-functions or storage engine for MySQL is also a related project that we could mention here.
None of these projects really seemed to come in line with our requirements. But what exactly are they?
Flexible for the hardware department.
We project growth and want the sharding system to be flexible. Knowing that our traffic will increase, we need to be able to add more shards quickly. With a growing amount of data, a proportional growth in hardware is requested. For this reason we opt for a directory based partitioning scheme.
No massive rewrite.
We can't introduce a whole new database layer or incompatible abstraction layer. We want to keep on using our database class as we are doing now and only implement sharding for those features that really require that amount of scaling. That's why we've opted for a solution that builds on what we have and allows for incremental implementation. We also wanted to use the sharding API, without having the data to be physically sharded, so the development and IT departments can independently decide when to do their part of the job.
Support for multiple sharding keys.
Most of our data will probably be sharded on $userID, but we want the system to be flexible so we can implement other keys and/or sharding schemes too.
Easy to understand.
We can't expect each and every of our developers to know everything about scalability and performance. Even if this was the case, the API to access and store data in a sharded environment should make it transparent to them so they shouldn't care about performance and can focus on what's really fun to do: developing and improving on features.
So, it's best if the API is a php API which makes it easy for them to use in the rest of our application.
于日 下午01时39分34秒发布

我要回帖

更多关于 max connections 的文章

 

随机推荐