内容主要收集于网络关于JAVA中的序列化java中的序列化(serialization)反序列化序列化序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。
java试题与答案
面向对象的Java2高级编程访问控制符-修饰属性和方法public:可以被任何类访问。缺省:可以被包任何类访问。private:只能被本类的方法访问。protected:本包内和所有的子类。privateprotected:所有的子类。静态属性、静态方法和静态初始化器static属性:属于类,而不是对象,类属性。static返回类型方法名:属于类,而不是对象static{}非方法,用来初始化静态属性。
表达式:EL表达式规定为:eval-expression和literal-expression,同时EL表达式支持Compositeexpressions,很多EL表达式(eval-expressions和literal-expressions)被聚合在一起。EL表达式被解析成数值表达式和方法表达式。其中,取值表达式去引用一个值,而方法表达式则是关联一个方法。
Java线程:线程的调度-守护线程守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。
Java API是Java系统提供的预先定义好的软件组件的集合,它们提供了许多可供程序员调用的常用功能 丰富的API为程序员提供了极大的方便,但也是学习的难点
问题提出视窗操作系统中的钩子(Hook)方法通过编写动态链接库并注册成为系统钩子用于拦截某些WindowAPI或者某个系统消息在Java中如何拦截某个方法的执行.…..如果可以拦截,那么拦截了又有什么用?方法拦截的目的屏蔽某个函数的执行动态改写函数的代码通过在某个函数执行前和执行后增加代码来增强原有函数的功能跟踪函数被调用的情况疑问
java小游戏源代码
一、JavaMail概述:JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类。但它并没有包含在JDK中,而是作为JavaEE的一部分。厂商所提供的JavaMail服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括:lSMTP:简单邮件传输协议,用于发送电子邮件的传输协议;lPOP3:用于接收电子邮件的标准协议;lIMAP:互联网消息协议,是POP3的替代协议。
JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。在 developerWorks 上其新系列的第一篇文章中,软件工程师 Mark Kolb 向您展示了如何使用 JSTL 标记来避免在 JSP 页面中使用脚本编制元素。您还将了解如何通过从表示层删除源代码来简化软件维护。最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。
发展史:出生地,时间,Java之父,版本,架构体系(三个方向)环境变量配置(JVM,JRE,JDK)类和对象的概念(创建的类中可以有属性和方法,创建对象就是为了调用属性和方法)垃圾回收机制GC属性和方法的声明访问权限修饰符:private,default,protected,public对于方法的声明“返回值”和“参数”参数:方法运行所需要的数据返回值:方法运行结束之后返回给调用者的数据无参无返回值:obj.method();无参有返回值:reTypeattr=obj.method();
JAVA EE 回顾 从灵活性和新特性两个方面介绍JavaEE6 实战演示使用JavaEE6新能力快速开发web应用
2常见配置汇总 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。
为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。
垃圾回收的悖论 所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。
JVM调优工具Jconsole,jProfile,VisualVMJconsole:jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。
可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。
1以下配置主要针对分代垃圾回收算法而言。 堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。
分代垃圾回收流程示意 选择合适的垃圾收集算法串行收集器 用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高。但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器。当然,此收集器也可以用在小数据量(100M左右)情况下的多处理器机器上。