深入分析JavaWeb技术内幕笔记_第1页
深入分析JavaWeb技术内幕笔记_第2页
深入分析JavaWeb技术内幕笔记_第3页
深入分析JavaWeb技术内幕笔记_第4页
深入分析JavaWeb技术内幕笔记_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

深入分析JavaWeb技术内幕笔记深入分析JavaWeb技术内幕笔记/深入分析JavaWeb技术内幕笔记:深入WEB请求过程返回页面的HTML数据:Curl查看本次HTTP协议头的信息:Curl–i常见的HTTP请求头:常见的HTTP相应头:常见的HTTP状态码:浏览器缓存机制:Ctrl+F5:从服务器端请求数据,而非使用本地或者浏览器的缓存数据。2重要的个缓存属性:Cache—Control/PragmaHTTPHead字段的可选值:域名解析—本地配置的域名——-—Windows下:C:\Windows\System32\drivers\etc\hosts———-linux下:/etc/named.confPS:黑客可以修改以上文件,把域名对应的IP指向黑客指定的IP,从而使以前的域名被劫持。查看当地域名解析服务器地址—Windows下:ipconfig命令--—--——--linux下:/etc/resolv。conf域名解析的过程:先从请求客户端的本机配置文件(以上所说),查看绑定的ip,如果没有在请求本地(小区或学校的)域名服务器,如果没有命中直接去root域名服务器定位,root域名服务器定位过程如图:Linux下查看域名解析过程:DigtraceWindow下:Nslookup清楚缓存的域名:DNS的缓存时间收TTL和本机缓存大小控制,一个在本机缓存,一个在localDNSserver缓存,基本上收lds控制,人工很难介入。清楚方式:Windows下:ipconfig/flushdnsLinux下:/etc/init。d/nscdrestartJvm的DNS缓存:几种域名解析方式:CDN(contentDeliveryNetwork)架构:CDN是构建在现有Internet的一种先进的流量分配网络。其目的是通过现有的Internet中增加一层新的网络架构,将网络的内容发布到最接近用户的网络“边缘”。其架构:深入分析javaI/O的工作机制基于字节的IO操作接口:基于字符的IO操作接口:字符及字节的转化接口:Inputstreamreader类是字节到字符的转化桥梁,inputstream到reader的过程要指定编码字符集,否则将采用操作系统默认的字符集,很可能出现乱码,streamDecoder正是完成字节到字符的解码的实现类.原理同上:Java访问磁盘文件:Java序列化技术:序列化工具:Google的protobufJava的序列化后的文件不能很好的被其他语言识别,实际情况如果夸语言需要用json或者XML存储序列化后的数据。NIO的使用:NIOsocket请求过程:Buffer的工作方式:DirectByteBuffer和Non-direct-Buffer对比:使用:ByteBuffer.allocateDirector(size)Filechannel.mapLinux下磁盘的IO吞吐量通过iostat查看。Linux下可以查看/proc/sys/net/ipv4/ip_local_port_range文件当前主机端口可使用的范围TCP网络参数调优:网络IO优化;第三章:深入分析javaweb中的中文编码问题Js得编解码:深入WEB请求过程词法分析:词法分析的过程是在JavacParse的parseCompilationUnit方法中完成的。语法分析:关于语法分析器还有一点要说明的是,所有语法节点的生成都是在TreeMaker类中完成的,TreeMarker实现了JCTree.Factory接口中定义的所有节点的构成方法,从该类中你也能够发现java中到底有多少种语法节点。语义分析器: 代码生成器:设计模式解析之访问者模式:深入class文件结构Java的编译器的设计模式是:访问者模式查看class文件格式:javap—verboseOrderDom>OrderDom.txt第六章:深入分析classloader工作机制通过实现ClassLoader的findclass实现自定义的加载规则,然后调用defineclass生成class对象。如果你想让类加载到jvm的时候就被连接,可以调用resolveClass。也可以先泽让jvm什么时候连接这个类。如果我们要向定义自己的类加载器,只需要ClassLoader即可,一般继承它的一个子类URLClassLoader此类已经封装了大部分的加载操作。第七章jvm体系结构及工作方式 第八章jvm的内存管理Java内存分析:使用jvm自带的工具分析:Jstat–gcutil[pid][intervel][count]另一种使用方式:Jstat–gcold41581000Jvm自身存在的问题发生jvm退出,这时候错误日志的指定:—XX:ErrorFile=/tmp/log/hs_error_%p.log关于MAT:1、MAT是什么?

MAT(MemoryAnalyzerTool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVAheap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象。

2。为什么使用MAT?

当服务器应用占用了过多内存的时候,会遇到OutOfMemoryError。如何快速定位问题呢?EclipseMAT的出现使这个问题变得非常简单。它能够离线分析dump的文件数据.

EclipseMAT是SAP公司贡献的一个工具,可以在Eclipse网站下载到它,完全免费的.它可比Sun提供的内存镜像分析工具jhat要强太多了。

3。

首页:

插件更新地址:

先调用jdk的工具得到heap使用情况我安装的是jdk1.6C:/>java—versionjavaversion"1。6。0_11”Java(TM)SERuntimeEnvironment(build1。6.0_11-b03)JavaHotSpot(TM)ClientVM(build11。0-b16,mixedmode,sharing)调用jdk工具jps查看当前的java进程C:/>jps3504Jps3676Bootstrap3496org。eclipse.equinox。launcher_1。0。201。R35x_v20090715.jar调用jmap工具得到信息C:/〉jmap—dump:format=b,file=heap.bin3676DumpingheaptoC:/heap。bin。。.Heapdumpfilecreated这时,我们的C盘根目录,就生成了heap。bin文件,用eclipse的file————>open打开这个文件,首先是一个启动图:这里可以选择查看1、内存泄露报表,自动检查可能存在内存泄露的对象,通过报表展示存活的对象以及为什么他们没有被垃圾收集;2、对象报表,对可颖对象的分析,如字符串是否定义重了,空的collection、finalizer以及弱引用等。我这里选择的是查看内存报表,以下是截的简略图:

通过报表展示,蛮清楚的,下面还有详细的说明,这里就没有帖图了,有兴趣的可以继续探究.查看NIO的工具:Sudojava–classpath。:$JAVA_HOME/lib/sa-jdi。jarDirectMemorySize4158小记:Apache.mina框架Jstack命令:jstackpid热点分析工具:Oprofiler分析程序中的热点代码。第九章servlet工作原理解析Tomcat的设计模式是:观察者模式应用的web。xml文件对应一个WebXml对象,每个servlet被包装为一个StandardWarper,StandardWarper作为context的元素。Servlet的实例化是warpper的loadServlet方发,获得servletclass,然后交由InstanceManager去实例化,初始化servlet是在standardWrapper的inintservlet方法中,这个方法很简单就是调用servlet的init()方法,同时把包装了standardWrapper对象的standardWrapperFacade作为servletconfig创递给servlet(门面设计模式),完成servlet的初始化工作。Request和respose同样适用的也是门面模式,完成数据的封装:Servlet中的listener:Filter是一种责任链设计模式深入理解session和cookie分布式session缓存框架:夸域名session共享:Cookie的压缩及加密解密: ByteArrayOutputStreambos=newByteArrayOutputStream(); DeflaterOutputStreamdos=newDeflaterOutputStream(bos); dos。write(c。getValue().getBytes()); dos。close(); System.out.println("beforecompresslength:”+c。getValue()。getBytes()。length); Stringcompress=newsun。misc.BASE64Encoder().encode(bos。toByteArray()); res。addCookie(newCookie("compress”,compress)); System。out。println("aftercompresslength:"+compress。getBytes()。length); }catch(Exceptione){ e。printStackTrace(); }}privatevoidumcompressCookie(Cookiec){ try{ ByteArrayOutputStreamout=newByteArrayOutputStream(); byte[]compress=newsun。misc.BASE64Decoder().decodeBuffer(newString(c.getValue()。getBytes())); ByteArrayInputStreambis=newByteArrayInputStream(compress); InflaterInputStreaminflater=newInflaterInputStream(bis); byte[]b=newbyte[1024]; intcount; while((count=inflater。read(b))〉=0){ out.write(b,0,count); } inflater.close(); System。out.println(out。toByteArray()); }catch(Exceptione){ e.printStackTrace(); }}表单重复提交问题:tomcat的系统架构及设计模式四个容器的关系图:Engine和host处理请求的时序图:这里有一些valve(阀门),standardEn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论