`
文章列表
一个运行中的web app,如果修改了其中的一部分代码,然后更新了class文件或者其它文件,那么在不重新启动tomcat的情况下,如何让tomcat自动载入最新的代码呢?配置方式有几种:   假设web应用名为test,engine名为Catalina,host名为localhost 1.可以在test/META-INF目录下面放置一个context.xml文件,内容如下:   <Context reloadable="true"/>   2.也可以在conf/Catalina/localhost目录下放置一个test.xml文件,内容如下:   ...
很多时候,需要通过innerHTML动态插入javascript代码到指定的div中,或者通过ajax请求回来的内容里面包含javascript代码,然后把该代码插入指定的div中,但是插入后的script却无法执行。 原因:直接通过innerHTML动态嵌入的script,浏览器会当做普通的文本,不会当作SCRIPT节点维护到DOM里面,所以调用的时候找不到。 解决方法:用innerHTML嵌入以后,通过DOM从myDIV中取出嵌入的script节点,然后新创建一个script节点,并把嵌入的script里面的内容也赋给新创建的script节点,然后把这个新节点追加到页面的head ...
一.概述 Tomcat对http请求的字符编码支持得有些混乱,使用起来动不动就发生乱码的情况。通过窥探tomcat的源码,对http request的字符编码这块的处理机制作一个总结。   tomcat内部对于http request,有两种字符编码的配置: 1. 对应get方式的http请求的字符编码 2. 对应post方式的http请求的字符编码   二.get方式的字符编码   第一种情况:get和post的编码保持一致,post方式的编码是什么,get方式的编码就是什么。   server.xml中进行如下配置的话,get方式的字符编码和post方式的字符编码保持一 ...
Tomcat既支持阻塞式IO,也支持非阻塞式IO。 如果要使用NIO,需要修改server.xml的配置。 <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> web服 ...
前一篇文章写到SocketProcessor的run方法,这次继续说明后续的处理流程。 1.在之前的Http11Protocol构造方法中,创建JIoEndpoint对象以后,接着指定了handler,就是Http11ConnectionHandler对象。 public Http11Protocol() { endpoint = new JIoEndpoint(); cHandler = new Http11ConnectionHandler(this); ((JIoEndpoint) endpoint).setHandler(cHan ...
tomcat说白了就是一个socket服务线程,监听8080端口,一旦有连接过来就生成一个socket来对应,然后把socket扔给后端的Executor线程池,由线程池中的一个线程负责进行后续的处理,而ServerSocket线程继续监听等待下一个连接的到来。 0.由Http11Protocol类的构造函数Http11Protocol()构造出JIoEndpoint对象 endpoint = new JIoEndpoint(); 1.调用JIoEndpoint的bind()方法,创建一个ServerSocket对象 serverSocket = serverSocketFact ...
为了加快debug的速度。 首先,需要了解JVM对字节码的编译技术。一个JAVA程序通过javac编译成字节码以后,在执行的时候,由JVM将字节码编译成本地机器码,然后再执行。将字节码转换成 机器码,JVM有两种利器,一种就是JIT,还有一种是转译器(interpreter)。 1>转译器 转译器将每个Java指令都转译成对等的微处理器指令,并根据转译后的指令先后次序依序执行,由于一个Java指令可能被转译成十几或数十几个对等的微处理器指令,这种模式执行的速度相当缓慢。 2>JIT 针对转译器的速度瓶颈,出现了JIT。JIT针对一个具体的class进行编译,经过 ...
以java语言举例来说吧。要想实现插件,基本要符合下面几点要求: 1.宿主系统需要提供对外公开的接口(interface),插件系统创建自己的class,并且要实现公开的interface public interface PluginClassInterface{ public void play(); public void stop(); } public PluginClass1 implements PluginClassInterface{ public void play(){ System.out.println(" ...
装饰模式相当于搭积木,首先有一个接口,很多个类都遵从相同的接口,构造对象的时候可以把另一个模块作为构造函数的参数传入,然后保存起来,这相当于把两个模块拼接在了一起。接着可以继续进行拼接,根据需要,拼接多少个模块都可以,相当于一个管道。拼接完以后,就可以调用共同接口中的方法,每个共同方法的内部实现都遵从一个原则,就是先去调用和它拼接在一起的上游模块的同名方法,然后再执行自己内部的逻辑,这样整个的执行过程就相当于从管道的最上游开始执行,接着向下逐个执行,直到最下游的共同方法执行完毕。 通过下面的例子就可以更容易地理解此模式的优点: 1.各个模块可以随意拼装,先后顺序可以随意调整 2.如果需要增加新 ...
最近研究了一下nodejs的异步编程,看到关于nodejs作为web前端接入服务器的好评不断,不由得想起了其他几种常用的web服务器的技术策略,所以在这里想做个横向对比,看看nodejs的接入速度到底快在哪里。 1》apache(多进程提高并 ...
使用splice函数对数组中的元素进行删除时的注意事项 删除值为c的元素: <script> var arr = new Array();arr[0] = 'a';arr[1] = 'b';arr[2] = 'c';arr[3] = 'c';arr[4] = 'e'; for(var i=0; i<arr.length; i++){    if(arr[i] == 'c'){        arr.splice(i,1);        i=i-1;    // 必须对i减去1,否则后面的一个元素会被跳过去    } }</script>   注意:如 ...
windows环境下使用nodejs开发了一个简单的网络蜘蛛,抓取网页中的图片。所以使用了http.get异步方法来下载指定的图片文件。多个图片的时候,http请求是串行发出的,下载完一个文件并生成本地文件以后再发起下一个http请求,等到最后一个图片下载完并生成本地文件以后,所有处理都结束了,按理说整个程序应该退出,但是有时候程序会停在那里,只有手动用CTL + C才能退出。试了很多种设计思路,但是问题仍然无法解决,最后强制调用了process.exit(0)才解决。  不过这个问题不是一直出现,有的网站url一直出现,有的url一切正常,不知道是什么原因。 function getpi ...
       在说common js之前必须得先说一下javascript,众所周知,javascript是浏览器环境下运行的一种web前端的脚本语言,如果没有浏览器,javascript是无法运行的。但是,随着互联网应用的飞速发展,对web前端的要求也越来越高,ric ...
1》__proto__ javascript中一切都是对象,每个对象都是基于原型对象创建的,每个对象中都有__proto__属性,这个属性指向的就是它基于的原型对象。 __proto__属性是系统(浏览器)自动给创建的,在对象被创建的时候自动指向基于的原型对象。   比如:   function Foo(){   }   var foo=new Foo();   foo.__proto__指向的就是Foo.prototype 因为Foo函数本身也是个对象,所以Foo.__proto__指向的是Function.prototype Functio ...
javascript中一切都是对象,主要分下面几类: 1>原型对象 Object.prototype   (所有对象的原型,原型链的最顶端)         Object.prototype.__proto__ 是null Function.prototype  (所有函数对象的原型,包括构造函数对象,其实就是function(){})        alert(Function.prototype); //function(){}        Function.prototype.__proto__是Object.prototype Boolean.prototype是f ...
Global site tag (gtag.js) - Google Analytics