`
liudeh_009
  • 浏览: 239755 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
      Jetty 是一个轻量级的、开源的servlet容器,可以非常容易的嵌入到应用程序当中作为嵌入式服务器使用,下面我们从代码层面来看看它是如何启动的      Jetty的启动从Server类的start()方法开始的,Server类继承了AbstractLifeCycle类,会首先执行AbstractLifeCycle的start()方法.方法如下:       public final void start() throws Exception { synchronized (_lock) { ...
一. tomcat的容器组件      1.Engine,实现类StandardEngine      2.Host,实现类StandardHost      3.Context,实现类StandardContext      4.Wrapper,实现类StandardWrapper      容器类之间的关系如下:            容器的初始化顺序:      ...
       tomcat容器实现类都继承了ContainerBase类,容器在启动的时候都会调用ContainerBase类的threadStart()方法,threadStart()方法如下:   protected void threadStart() { if (thread != null) return; if (backgroundProcessorDelay <= 0) return; threadDone = false; St ...
             1.调用sleep方法没有释放锁,并且一直占着cpu.                而调用wait方法释放了锁,并且让出cpu            2.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在           任何地方使用            3.  sleep是Thread类的方法,wait是类Object的方法            4.  sleep方法必须捕获异常,而wait,notify和notifyAll不需要捕获异常    
      这次主要解析采用apr方式处理请求.apr用C实现,通过JNI调用,主要提升对静态资源(如HTML、图片、CSS、JS等)的访问性能.在tomcat下配置apr步骤:   1.下载本地库tcnative-1.dll,放在%jdk%\bin目录下(见附件).   2.在server.xml里配置listener,这个配置server.xml默认是有的       <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" ...
    这次主要解析采用IO方式处理请求.在Server.xml的配置如下: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />         在tomcat启动的时候,会调用Connector类的Start()方法,根据以上配置,Connector的start()方法里会调用Http11Pro ...
       Connector类的相关配置在Tomcat的安装目录conf下的Server.xml文件里,我这次主要解析采用NIO方式处理请求的情况.在Server.xml的配置如下:   <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" ...
 Hbas是一个在HDFS上实现的面向列的分布式数据库,非常适合实时地随机读/写超大规模数据集   行,列族,列,主键       Hbase中的行类似于数据库中的行,表中的行根据行的键值(也就是表的主键)进行排序,排序根据字节序进行,所有对表的访问都要通过表的主键  
      zookeeper是一个开源的分布式协调服务,其独特的"leader-follower"集群模式,"过半成功"的写策略,很好的解决了分布式单点问题.zookeeper包含leader,follower,znode三个重要实体.  leader:      zookeeper集群中所有机器通过一个选择过程来选定一台被称为"leader"的机器,leader提供读,写,选举操作   follower       zookeeper集群中除leader外的其他机器,follower提供读,选举操作  znode:      ...
        最近需要在原来的一个项目增加新的功能,把项目下下来后,发现项目超大,在Eclipse启动要不内存溢出,要不解析请求非常慢,无赖之下想到Eclipse远程调试.所谓Eclipse远程调试,就是源代码在Eclipse下,而应用程序通过本机和远程机器启动,Eclipse通过socket与应用进行通信,从而达到和本地一样效果的调试的目的.当然这种调试只适用于远程和Eclipse下的源代码相同的情况,如果Eclipse下的源代码经常变动的话,就显得很不方便.闲话少说,现在来看怎么配置远程调试. 一,配置web服务器对于tomcat:    在windows系统下    修改%CATAL ...
在windows命令行窗口下执行:运行--cmdC:\>netstat -aon|findstr "8080" TCP     127.0.0.1:80       0.0.0.0:0             LISTENING    2448端口被进程号为2448的进程占用,继续执行下面命令:C:\>tasklist|findstr "2448" thread.exe                   2016 Console                 0     16,064 K很清楚,thread占用了你的端口,Kill it如果 ...
       MapReduce确保每个reducer的输入都按键排序.将map的输出作为输入传给reducer的过程称为shuffle,学习shuffle是如何工作的有助于我们更好的理解MapReduce        每个Map任务都有一个内存缓冲区,用于存储任务的输出,默认情况下缓冲区的大小为100MB,一旦缓冲区内容达到阙值(默认0.8),一个后台线程便会把内容写到磁盘.在写磁盘的过程中,map输出继续被写到缓冲区,但此时如果缓冲区被填满,map会阻塞直到写磁盘过程完成.       在写磁盘之前,线程还会根据最终要传送的reducer把数据划分成相应的分区,并对每个分区进行内排序, ...
上周在线上系统发现了两个bug,值得记录下查找的过程和原因。以后如果还有查找bug比较有价值的经历,我也会继续分享。    第一个bug的起始,是在线上日志发现一个频繁打印的异常——java.lang.ArrayIndexOutOfBoundsException。但是却没有堆栈,只有一行一行的ArrayIndexOutOfBoundsException。没有堆栈,不知道异常是从什么地方抛出来的,也就不能找到问题的根源,更谈不上解决。题外,工程师在用log4j记录错误异常的时候,我看到很多人这样用(假设e是异常对象): log.error("发生错误:"+e); 或者: ...
      当数据集的大小超过一台独立物理计算机的存储能力的时候,就有必要对其进行分区.并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统称为分布式文件系统.该系统架构于网络之上,,基于网络的复杂性,该系统势必比普通磁盘文件系统更为复杂.例如能够容忍单点故障而不丢失任何数据等.分布式文件系统有很多,比如sun的NFS,google的GFS,Hadoopd的HDFS等.下文主要讲HDFS的实现机制.  HDFS的三个实体  数据块     每个磁盘都有默认的数据块大小,这是磁盘进行读写的基本单位.构建于单个磁盘之上的文件系统通过磁盘块来管理该文件系统中的块.该文件系统中的块一般为磁 ...
      有时候,根据自己项目的需求,需要重新实现属于自己的类加载器,以满足项目的灵活性和扩展性,下面我们就来实现自己的类加载器.   实现自己的类加载器必须首先继承一个父类加载器.    编写一个类加载器会涉及到以 ...
Global site tag (gtag.js) - Google Analytics