摘要:
状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。 1、状态码类别 200 OK 表示从客户端发来的请求在服务器端被正常处理了。 在响应报文中,随状态码一起返回的信息会因为方法的不同而发生改变。 204 No Content 该状态码代表服务器接收请求已成功处理,但在返回的响应报文中不 阅读全文
摘要:
1、概述 GC需要完成的3件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,需要对这些“自动化”的技术实施必要的监控和调节。 程序计数器、虚拟机栈、本地方法栈不需要过多考虑回收的问题,因为方法结束或者线程结束时 阅读全文
摘要:
目的:第一,通过代码验证Java虚拟机规范中描述的各个运行时区域存储的内容;第二,工作中遇到实际的内存溢出异常时,能根据异常的信息快速判断是哪个区域的内存溢出,知道什么样的代码可能会导致这些区域内存溢出,以及出现这些异常后该如何处理。 1、Java堆溢出 Java堆用于存储对象实例,只要不断地创建对 阅读全文
摘要:
基于使用优先的原则,以常用的虚拟机HotSpot和常用的内存区域Java堆为例,深入探讨HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。 1、对象的创建 划分可用空间 在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(主要讨论的对象限于普 阅读全文
摘要:
注:有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。 1、程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,互不影响,独立存储,称为“线程私有” 阅读全文
摘要:
命令模式: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 实例代码: Command类,用来声明执行操作的接口。 ConcreteCommond类,将一个接收者对象绑定到于一个动作,调用接收者相应的操作,以实现Execute。 I 阅读全文
摘要:
享元模式: 运用共享技术有效地支持大量细粒度的对象。 示例代码: Flyweight类,它是所有具体享元类的超类或接口,通过这个接口,Flyweight可以接受并作用于外部状态。 ConcreteFlyweight是继承Flyweight超类或实现Flyweight接口,并为内部状态增加存储空间。 阅读全文
摘要:
建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 示例代码: Product类————产品类,由多个部件组成。 Builder类————抽象建造者类,确定产品由两个部件PartA和PartB组成,并声明一个得到产品建造后结果的方法GetResult。 Conc 阅读全文
摘要:
设计模式: 它定义了算法家族,分别封装起来,让它们之间可以替换,此模式让算法的变化,不会影响到使用算法的客户。 示例代码: Strategy类,定义所有支持的算法的公共接口 ConcreteStrategy,封装了具体的算法或行为,继承于Strategy Context,用一个ConcreteStr 阅读全文
摘要:
责任链模式: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 代码示例: Handler类,定义一个处理请示的接口。 ConcreteHandler类,具体处理者类,处理它所负责的请求,可访问它的后继者 阅读全文