`
文章列表
Twitter大量使用Memcached,MQ也是基于Memcached 协议的,Memcached并不是新鲜的东西,但是由于它强大的影响力,有必要深入一下,这篇主要讲它的基础:   1.Memcached是什么? Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据 库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余( ...
log4j在Java开发中非常广泛,在企业级应用中,有大量的日志需要记载,我们有一个系统每天记录的日志达到16G,是个庞大的数字。   我们在开发过程中发现类似下列的代码:     public class TTTT extends HttpServlet{   private static f ...
笔者为了体验Pushlet的原理,做了一个聊天室程序,聊天功能对于每个user来说有两个基本功能:   1.发布聊天记录 对于Pushlet来说,是把这个聊天记录clone放到每个subscriber对应的EventQueue中 使用Pushlet提供的publish函数,来完成功能   2.接收别人新的聊天记录 线程轮询EventQueue,取出数据update browser客户端,它可以使用subscribe函数,也可以使用join_listen函数     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra ...
在介绍comet的基本理论之后,pushlet是comet的一种实现,它主要利用Servlet容器(Tomcat和Jetty)在Servlet没有运行完毕(线程一直没有运行完毕),server不会主动关闭连接,这给web的进行长连接由server push data 到client端提供了基本的理论依据。   注:本文在修改之前说的Com是利用keep-alive功能,server不会主动关闭连接,这个说法经过笔者实践有点错误。我们知道在Tomcat线程模型图如下(BIO的方式): 阻塞式的IO的线程模型是,一个请求会用一个线程维护一个socket,以阻塞的方式读取数据。当socketSe ...
HashMap在多线程访问时存在线程安全问题,举例如下,此例是用HashMap来记录Meeting的状态:   线程一在12:12:10put一个meetingKey, meetingStatus(123859963,InProgress) 线程二在12:12:11put一个meetingKey,(123859963,Close)   如果没有锁,则线程1和线程二能够同时put,如果线程二在线程一put过程中,先将HashMap(123859963,Close),注意此时,线程一继续运行,线程一会把线程二已经设置好的meeting 状态由close又改成了InProgress,这样me ...
Comet简介 在学习Twitter的架构中,发现他们广泛使用了Comet技术,基于Http长连接的服务器Push技术,Twitter本身对于数据的实时性要求较高,因此,采用Comet技术可以很好地解决他们的问题。   Comet 是一种新的 Web 应用架构。基 ...
1.Twitter的简介   Twitter是非常著名的微博客网站,成立于2006年,至今用户数已经超过1000w,在奥巴马总统上台后,用户量急剧增长,随着用户数量的增加,Twitter的架构也发生了很大的变化,它的这些变化能够适应大用户量的访 ...
有序数组二分查找的基本原理:因为数组是有序的,先找到中间位置的值,如果目标比这个值大,那么该目标必定在数组的右半部分,以此循环或者递归,一直找到这个数值为止。此算法的时间复杂度为O(logN),N为数组的长度     package algorithm.arrayfind; public class SortedArrayBinarySearch {          public static void main(String[] args) {         int[] source=new int[]{1,3,5,7,9,12};         int key = 1 ...
树型结构是一类重要的非线性数据结构。其中以树和二叉树最为常用,直观看来,树是以分支关系定义的层次结构。树结构在客观世界中广泛存在,树在计算机领域中也有广泛的应用,如在编译程序中,可用树来表示源程序的语法结构。   树作为非常基础的数据结构,有必要了解它的基本原理和使用场合,复习二叉树的数据结构,要分几个部分循序渐进地进行,这篇博客只涉及二叉树的构造和遍历。   首先类用于表示树的一个节点:   package algorithm.binarytree; /**  * <p>Description: Test</p>  * <p>Copyrig ...
前言   对于大型系统的开发与设计,是非常有意思的事情,也是笔者觉得编程的最有成就感的事情,对于分布式开发和设计,笔者一直想学习,并且使用一些技术并应用在项目中,而研究一些好的论文和设计,对于分布式系统的开发和设计有非常非常重要的作用。   首先想到了Google,GFS的设计应该是非常精巧的,可惜并没有开放源代码,而Hadoop的HDSF就是基于GFS而进行开发的,还好Hadoop是开源的,因此,笔者希望通过学习Google的架构来提升水平,不用再等,开始学习吧。   Google File System   http://liangyush.blog.163.com/ ...
一、为什么要Apache?   Tomcat本身也具备Web Server的处理能力,为什么还要引入 Apache 或者其他的一些专门的 HTTP 服务器呢?原因有三: 1. 提升对静态文件的处理性能 2. 利用 Web 服务器来做负载均衡以及容错 3. 无缝的升级应用程序   二、Apache整合Tomcat的三种方式   1.JK 这是最常见的方式,你可以在网上找到很多关于配置JK的网页,当然最全的还是其官方所提供的文档。JK 本身有两个版本分别是 1 和 2,目前 1 最新的版本是 1.2.19,而版本 2 早已经废弃了,以后不再有新版本的推 ...
造成这个异常有两类原因: 1.Linux默认的socket描述符数量为1024   抛出这类错误的原因是Linux默认的socket open file的数量为1024,当压力测试达到这个阈值时就会抛出这类错误,下面的文章有详细的解释:     Issue: How do I set the maximum number of files allowed to be open on a system Resolution: The current setting for maximum number of open files can be viewed with th ...
  我们前段时间遇到一个很奇怪的问题,Tomcat6使用默认的配置,在进行压力测试时,老是报错,用Jmeter模拟40个用户并发时,正常,当超过60个时,居然全部报错,打开server.xml可以看到如下配置:   <Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443" />   Tomcat的官方网站的解释如 ...
由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节 以上的文件系统)。     grep 'old' 1.log | wc -l一、find 命令格式 1、find命令的一般形式为; find pathname -options [-print -exec -ok ...] 2、fi ...
今天有个同事问我一个问题,他的Eclipse经常出现OutOfMemoryError,从原理上说,有两种原因会导致客户机的Eclipse内存溢出:   1.Ecplise因为是ide,涉及大量的class的重新build,每次build,classloader会重新加载此class,而老的class,没有被卸载,同时JVM不会垃圾回收此class(据说是因为classloader本身有内存泄露,也许是classloader仍然对改class进行了引用,因此,这类class不会被unload),因此,可以设置较大的PermSize,因为Class是分配在Perm space里面的。但是这种办法 ...
Global site tag (gtag.js) - Google Analytics