`
xiaoZ5919
  • 浏览: 400430 次
  • 性别: Icon_minigender_1
  • 来自: 安平人@北京
博客专栏
Group-logo
Netty学习笔记
浏览量:72762
社区版块
存档分类
最新评论
文章列表
为什么需要threadlocalLeakPerventionListener     当context reload的时候,如果正在执行的worker线程引用了threadlocal中的变量,会造成整个webclassloader回收不了造成内存泄露,具体请移步tomcat的wiki http://wiki.apache.org/tomcat/MemoryLeakProtection,wiki上比我说得明白。那具体方案也很明确,当context reload的时候,renew线程中的所有的线程,呵呵这活儿得交给listener来做了,所以就有了ThreadLocalLeakPrevention ...
 server信息是保存在response的header中,例如tomcat7的header是 Server: Apache-Coyote/1.1。既然是放在header中,很容易想到加一个filter,在filter中修改response添加server的header信息,出发点是好的,但是现实很残酷,走不通,恰巧在tomcat user maillist中看到一个人问到这个问题,就此记录一下,只需要在connector中添加server属性,值可以是任意想要修改的,例如: <Connector port="8080" protocol="org.a ...
    N多面试题里,只要涉及hibernate就会这样的问题,说一说hibernate的Get和Load到底哪个效率高?我也曾经被这样面过,也被这样的面试题BS过,当时的答案无非就是从谷歌百度上搜一把记下,比如Get不用使用一级缓存和二级缓存,直接从数据库中load。而load采用proxy,走一级缓存和二级缓存,诸如此类的。但是事实上这样吗?proxy和从缓存中有神马关系啊?使用proxy就能使用二级缓存,而get就必须直接从数据库中load,proxy到底有什么神奇的功效?还是从源码说起吧! Get和Load都会fire一个loadEvent,只不过事件类型不同:   public ...
1. Cookie是怎么在服务器和浏览器之间传递的?(以Tomcat为参考) response.addCookie()将cookie写到客户端 request.getCookies()获取浏览器端的cookie 但底层是怎么实现的?查看一下Tomcat的源码得知: 原来是把Cookie对象拼成一定格式的字符串放在header中,header的名字叫set-cookie.有一点尤其重要可以有完全同名的cookie存在 2.Cookie会带来额外的数据传输量,尽量不要把大量的东西放在cookie,尤其是当你的带宽很小的时候
如何使用 1. 配置logStatementsEnabled为true     <property name="logStatementsEnabled" value="true"/>   2 .配置log日志 log4j.logger.com.jolbox=DEBUG,SQLLOG log4j.appender.SQLLOG=org.apache.log4j.DailyRollingFileAppender log4j.appender.SQLLOG.File=/data/sql.log log4j.appender ...
1. 为什么要用StringBuffer和StringBuilder?   String c = "aaa" +"bbb"与sb.append("aaa").append("bbb")有什么区别,类似这样的问题大家应该都很熟悉,它经常出现在面试题,我想答案大家都已经很清楚,用+会创建多个String,因为String是存放在常量池中的,而且是不可以变的,"aaa"变不成"aaabbb"。反过来问一下,都思考过StringBuffer或者StringBuilder到底怎么实现 ...
 容器类底层的数据结构大多使用数组,我们知道数组是不能动态修改它的size,假如非要修改的话,只要初始化另外一个更大容量的数据,并将原来的数据复制过去。对容器类的插入操作,首先就得check是否容量满足,如不满足先扩展 public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; }  private void ensureCapacit ...
SpringMVC的拦截器不同于Spring的拦截器,SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServlet,所以只需要在DispatcherServlet上做文章即可,DispatcherServlet也没有代理,同时SpringMVC管理的Controller也不有代理。哪不难想到我们在执行controller之前做某些动作,执行完毕做某些动作,render完成做某些动作。SpringMVC的拦截器对应提供了三个preHandle,postHandle,afterCompletion方法。只需在三个方法内写我们需要的逻辑就行,多 ...
   调优第一步,找出耗时比较长的页面进行优化。利用interceptor能轻易搞定。interceptor提供了preHandle和postHandle以及afterCompletion三个方法。preHandle调用controller具体方法之前调用,postHandle完成具体方法之后调用,afterCompletion完成对页面的render以后调用,至此整个页面渲染完成。也就是说我们在preHandle记录开始的时间,在afterCompletion记录结束的时间,就可或者整个页面生成的时间。Spring自带StopWatch工具类来实现时间跟踪,关键一点interceptor不是线 ...
当context stop的时候,如果thread pool的thread没有正常停止的话,而且ThreadLocal中引用了webclassloader加载的对象,有很有可能造成内存泄露,一个解决办法就是杀掉所有的threadpool的线程。Tomcat的ThreadLocalLeakPreventionListener就是这样一个原理 Engine engine = (Engine) context.getParent().getParent(); Service service = engine.getService(); Connector[] con ...
   有些场景,我们会试图获取渲染jsp以后的html,或者修改一下生成json,例如把普通的json换成跨域的jsonp。 ResponseFacade只提供了getOutStream(),但是获取不了stream的容器bytearray,不通过hacker的方式根本获取不了。Tomcat也意识到这一点,提供了HttpServletResponseWrapper帮我们解决这个问题,对于HttpServletResponseWrapper有这样的comments:          Provides a convenient implementation of the HttpServle ...
  Filter有顺序吗?我们怎么控制filter的执行顺序。通过Tomcat的代码分析,servlet在Filter执行完成后才调用,如有多个filter怎么控制执行顺序,首先会想到在web.xml配置某个参数,例如order之类的,但查找一下一番,servlet并没有这个参数。试试filter Mapping的配置的先后顺序,果然有效,原来filter的执行顺序就考filter mapping在web.xml中的顺序。 spring interceptor也是这样的执行顺序,不过interceptor多一个配置参数order通过他也可以来实现interceptor的执行顺序。很多应用场景中 ...
1.Tomcat如何处理静态资源?处理静态资源很简单,只需根据URI定位到文件,然后读取文件,写到response的outputstream中去,但tomcat是如何处理,是不是通过servlet container统一处理,还有另有其他方式?最终我发现是由DefaultServlet来处理。 2.APR/NIO Connecter不仅能提高吞吐量,而且使用sendFile使用内核IO,而不是java通过封装以后的IO提高对静态文件的处理。 3.是不是所有的文件都交给sendFile来处理呢?不是,在DefaultServlet中有一个sendFileSize,默认为48k,也就是说只有48 ...
startInternal():创建worker线程池,初始化Poller线程,根据可以用的处理器的数目,我的机器是双核超线程的,所以为4. Poller是连接器的关键,不断地轮询分发连接,交给worker线程去处理。 // Create worker collection if ( getExecutor() == null ) { createExecutor();//如在server.xml,没有配置executor,则创建默认的连接池,poolSize为200 } ...
curl -v --header "content-type: application/soap+xml"  --data @soap1.xml                                                                                                              "WsUrl地址" -w result.out   soap1.xml soap包内容
Global site tag (gtag.js) - Google Analytics