显示下一条  |  关闭

汉斯的博客

疯子和天才只一步之差,奋起直追,提升自我,坚持不懈,永不言弃!

 
 
 
 
 
 

关于优化的一些知识

2012-5-16 11:38:06 阅读3 评论0 162012/05 May16

关于优化的一些知识,如图所示:

优化包括很多行业。。。

作者  | 2012-5-16 11:38:06 | 阅读(3) |评论(0) | 阅读全文>>

童博软件的分页组件

2012-5-11 11:34:13 阅读4 评论0 112012/05 May11

1、针对mysql

select * from tab where xxx limit startIndex,pageSize

2、针对oracle

第一种方式:3层结构,外加hint优化

SELECT * FROM 

(

SELECT A.*, ROWNUM RN 

FROM (SELECT * FROM TABLE_NAME) A 

WHERE ROWNUM <= 40

)

WHERE RN >= 21

其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。

优化注意:记得一定要少用(一般是禁止自己用)between这个where条件语句,因为它不走索引条件。

第二种方式:4层结构,rowid写法,也是最高效率的分页,外加hint优化

作者  | 2012-5-11 11:34:13 | 阅读(4) |评论(0) | 阅读全文>>

互联网应用性能优化实践

2012-5-10 13:31:23 阅读4 评论0 102012/05 May10

一、页面性能优化(js、css,http请求等)

1》、推迟加载内容:

图片的延迟加载,使用lazyload插件

插件下载地址:

http://www.appelsiini.net/projects/lazyload

插件使用方法:

$(".main img").lazyload({

    placeholder : "img/grey.gif",

    effect : "fadeIn"

});

表示对.main下面的所有img进行延迟加载效果,还可以使用事件触发event : "click",鼠标点击、移过的时候进行ajax加载图片

2》、尽可能少的http请求

主要包括的有js请求、css请求和css中的背景图片的CSS background images请求

I、js和css 可以通过特殊的办法进行合并,比如minify、淘宝开源的tengine服务器(修改自ngnix,淘宝目前已经开源:http://tengine.taobao.org/)。

II、可以把图片合并成一个相对比较大的图片,通过css进行调用。

3》、使用CDN,CDN的全称是Content Delivery Network,即内容分发网络。

其目的是通过在现有的Internet中增加一层新的网络架构,将网

作者  | 2012-5-10 13:31:23 | 阅读(4) |评论(0) | 阅读全文>>

lucene-搜索过滤

2012-5-9 16:47:02 阅读3 评论0 92012/05 May9

1、使用过滤可以缩小搜索空间,把可能的搜索匹配结果限制在所有文档的一个子集中。

2、内置了三个Filter子类:

1)DateFilter使搜索只限于指定的日期域的值在某一时间范围内的文档空间里

2)QueryFilter把查询结果做为另一个新查询可搜索的文档空间

3)CachingWrappperFilter是其他过滤器的装饰器,将结果缓存起来以便再次使用,从而提高性能。

3、DateFiler

此过滤器仅过滤,但不能缓存,如果重复使用DateFilter,Lucene每次都会重新进行日期过滤.导致性能下降.

下例中modified域索引为Keyword

public class FilterTest extends testcase{

privateQuery allBooks;

privateIndexsearcher searcher;

privateint numAllBooks;

protectedvoid setUp() throws Exception{

super.setUp();

allBooks=new RangeQuery(new Term("pubmonth","190001"),newTerm("pubmonth","200512"),true);

searcher=new IndexSearcher(directory);

Hits hits=searcher.search(allBooks);

作者  | 2012-5-9 16:47:02 | 阅读(3) |评论(0) | 阅读全文>>

2012年4月15号,生了个儿子,乳名叫童童

2012-4-23 13:48:54 阅读12 评论0 232012/04 Apr23

      乳名是怀孕的时候就起的,胎教一直坚持做,和坚持叫宝宝的乳名,现在出生了,好带多了,满一周了。

作者  | 2012-4-23 13:48:54 | 阅读(12) |评论(0) | 阅读全文>>

架构师的职责

2012-4-10 13:53:37 阅读23 评论0 102012/04 Apr10

架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。

    架构师主要职责有4条:

1、确认需求

在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。

2、系统分解

依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。

软件架构师的功力基本体现于此,这是一项相对复杂的工作。

3、技术选型

架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。

Web Server运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是Mysql?需要不需要采用MVC或者Spring等轻量级的框架?前端采用富客户端还是瘦客户端方式?类似的工作,都需要在这个阶段提出,并进行评估。

架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会从项目预算、人力资源、时间进度等实际情况进行权衡,最终进行确认。

4、制定技术规格说明

作者  | 2012-4-10 13:53:37 | 阅读(23) |评论(0) | 阅读全文>>

什么是架构师?

2012-4-10 13:28:16 阅读14 评论0 102012/04 Apr10

      关于架构师的定义,大家也有着不同的理解。什么是架构师?架构师有哪些职责?我觉得有必要提前明确一下,要不然大家沟通起来也会产生类似问题,子说子理,卯说卯理,但是压根说得不是一码子事。     

      很多的创业公司,一人身兼数职的情形还是很常见的。至少,我是经历过的,一个人包办了所有的开发过程,连测试我都做了,绝对的一条龙,但是经常踩钢丝、骑 独轮车总会有失足的时候,结果有一次,从我手里发出去的光盘母盘,含有病毒僵尸,以至于被迫收回已经推上市场的2万张光盘,从那之后,我的心脏就开始变得 无比坚强,现在就是整个后台服务都瘫痪了,我也只是微微一笑。其实,一个人身兼架构师和程序员,甚至多种角色,没什么不妥,后面还会讲这个话题,这种现象 不是中国特色,跟国外是完全接轨的。我曾经跟米国的一个工程师在msn中聊过类似的话题,发现他们的路子跟咱们没什么不同,在IT这个行业,我们跟世界的 差距只有1天,他们刚弄出来的新东西,我们这里第2天保准见得到。

    架构师这个称呼不是拍脑袋想出来的,是有国际标准(ISO/IEC 42010)可查的。架构师是软件开发活动中的众多角色之一,它可能是一个人、一个小组,也可能是一个团队。微软对架构师有一个分类参考,我们参考一下, 他们把架构师分为4种:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure

作者  | 2012-4-10 13:28:16 | 阅读(14) |评论(0) | 阅读全文>>

转载:基于ZooKeeper的分布式Session实现五

2012-3-28 15:12:22 阅读38 评论0 282012/03 Mar28

6.   后续

目前基于ZooKeeper的分布式Session系统的实现还是比较初步的。还有很多功能有待完善,比如要添加Session监听事件的支持、对ZooKeeper上被标记为不可用的Session节点的删除、对Session进行监控和管理的控制台以及非常难解决的ClassLoader问题等。另外,前文也提到了,分布式Session的实现是和某个Web容器紧密耦合的,这一点让我很不爽。因为需要针对不同的Web容器各自实现一套Session的管理机制。不过我相信通过良好的设计,可以实现通用的组件。目前我已经实现了在Jetty和Tomcat容器下的分布式Session。

在文章的最后,我们讨论一下如何解决ClassLoader问题。其实,在OSGi框架下,这个问题并不是很麻烦。因为,我们可以将所有领域对象类打包成一个单独的Bundle。同时将分布式Session的Filter实现也打包成一个Bundle。通过动态引用的方式,就可以引入所有领域对象的类型了。但在非OSGi环境下,只能将领域对象的类文件在每个子系统中都包含一份来解决ClassLoader问题。这样会造成一个问题,就是当领域对象发生变化时,我需要重启所有的子系统,来装载更新后的领域对象类,而不像在OSGi下,只需要重启这个领域对象Bundle就可以了。

写这篇文章并不是想表示自己有多么的牛逼,而是对Java技术的一种热衷。搞技术的人唯一乐趣就是完成了自己在技术领域的自我突破。但是有时候又很困惑,人生苦短,我们这些技术人到底为了什么而存在?很矛盾,很纠结!

作者  | 2012-3-28 15:12:22 | 阅读(38) |评论(0) | 阅读全文>>

转载:基于ZooKeeper的分布式Session实现四

2012-3-28 15:11:43 阅读15 评论0 282012/03 Mar28

/**

     * 创建指定Session ID的节点(异步操作)

* @param sid

* @param waitFor 是否等待执行结果

* @return

*/

public static String asynCreateSessionNode(final SessionMetaData metadata, boolean waitFor) {

Callable<String> task = new Callable<String>() {

@Override

public String call() throws Exception {

return createSessionNode(metadata);

}

};

try {

Future<String> result = pool.submit(task);

//如果需要等待执行结果

if (waitFor) {

while (true) {

if (result.isDone()) {

return result.get();

}

}

}

} catch (Exception e) {

log.error(e);

作者  | 2012-3-28 15:11:43 | 阅读(15) |评论(0) | 阅读全文>>

转载:基于ZooKeeper的分布式Session实现三

2012-3-28 15:10:51 阅读15 评论0 282012/03 Mar28

这些方法中都是直接和ZooKeeper上对应的Session进行数据交换。本来我是想在本地Session对象上创建一个ZooKeeper的缓冲,当用户调用Session的读方法时,先到本地缓冲中读数据,读不到再到ZooKeeper上去取,这样可以减少网络的通讯开销。但在分布式环境下,这种策略所带来的数据同步开销更加的可观。因为每次一个子系统的Session数据更新,都将触发所有其他子系统与之关联的Session数据同步操作,否则Session中数据的一致性将无法得到保障。

看到这里,大家可能已经发觉了,所有与ZooKeeper交互的代码都被封装到ZooKeeperHelper类中,接下来就来看看这个类的实现。

4)   ZooKeeperHelper类实现

public class ZooKeeperHelper {

/** 日志 */

private static Logger          log        =Logger.getLogger(ZooKeeperHelper.class);

private static String          hosts;

private static ExecutorService

作者  | 2012-3-28 15:10:51 | 阅读(15) |评论(0) | 阅读全文>>

转载:基于ZooKeeper的分布式Session实现二

2012-3-28 15:09:34 阅读35 评论0 282012/03 Mar28

5.   算法实现

从上述的挑战来看,要写一个分布式应用程序是困难的,主要原因是因为局部故障。由于数据需要通过网络传输,而网络是不稳定的,所以如果网络发生故障,则所有的数据通讯都将终止。ZooKeeper并不能解决网络故障的发生,甚至它本身也是基于网络的分布式应用程序。但是它为我们提供了一套工具集合,帮助我们建立安全处理局部故障的分布式应用程序。接下来我们就开始描述如何实现基于ZooKeeper的分布式Session系统。

1)   基于ZooKeeper的分布式Session系统架构

为了实现高可用性,采用了ZooKeeper集群,ZooKeeper集 群是由一台领导者服务器和若干台跟随者服务器构成(总服务器数要奇数)。所有的读操作由跟随者提供,而写操作由领导者提供,并且领导者还负责将写入的数据 复制到集群中其他的跟随者。当领导者服务器由于故障无法访问时,剩下的所有跟随者服务器就开始进行领导者的选举。通过选举算法,最终由一台原本是跟随者的 服务器升级为领导者。当然原来的领导者服务器一旦被恢复,它就只能作为跟随者服务器,并在下一次选举中争夺领导者的位置。

Web容器中的Session容器也将发生变化。它不再对用户的Session进行本地管理,而是委托给ZooKeeper和我们自己实现的Session管理器。也就是说,ZooKeeper负责Session数据的存储,而我们自己实现的Session管理器将负责Session生命周期的管理。

最后是关于在分布式环境下共享Session

作者  | 2012-3-28 15:09:34 | 阅读(35) |评论(0) | 阅读全文>>

转载:基于ZooKeeper的分布式Session实现 一

2012-3-28 15:08:16 阅读34 评论0 282012/03 Mar28

原文地址:http://blog.csdn.net/jacktan/article/details/6112806

1.   认识ZooKeeper

ZooKeeper—— “动物园管理员”。动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的被动 物所观赏。为了让各种不同的动物呆在它们应该呆的地方,而不是相互串门,或是相互厮杀,就需要动物园管理员按照动物的各种习性加以分类和管理,这样我们才 能更加放心安全的观赏动物。回到我们企业级应用系统中,随着信息化水平的不断提高,我们的企业级系统变得越来越庞大臃肿,性能急剧下降,客户抱怨频频。拆 分系统是目前我们可选择的解决系统可伸缩性和性能问题的唯一行之有效的方法。但是拆分系统同时也带来了系统的复杂性——各子系统不是孤立存在的,它们彼此 之间需要协作和交互,这就是我们常说的分布式系统。各个子系统就好比动物园里的动物,为了使各个子系统能正常为用户提供统一的服务,必须需要一种机制来进 行协调——这就是ZooKeeper——动物园管理员。

关于ZooKeeper更正式的介绍——ZooKeeper是一个为分布式应用程序提供高性能协调服务的工具集合。它可以应用在一些需要提供统一协调服务的case中,例如命名、配置管理、同步和组服务等。而在我们的case中,它被作为一个协调分布式环境中各子系统之间共享状态数据的基础设施。

2.   ZooKeeper之特性

ZooKeep

作者  | 2012-3-28 15:08:16 | 阅读(34) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 

广东省 深圳市 处女座

 发消息  写留言

 
项目合作: * 软件项目外包 * 性能诊断、调优 * 方案策划、撰写 * 商业软件/企业网站 咨询顾问 * 系统架构设计/系统优化方案/信息安全 * 大型门户网站、企业应用 系统案例 讲解/培训。
 
POPO  daihaixiang@163.com
QQ54339729
MSNcnhaixiang@hotmail.com
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

天气

 
 
模块内容加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
博友列表加载中...
 
 
 
 
 
 
 
圈子列表加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012

   
创建博客 登录  
 关注