错题集锦(二) -- Java专项

标签(空格分隔): 找工作


JVM的内存模型

线程共享:

  • 堆(Heap):主要存放一些对象实例
  • 方法区(Method Area / Non-Heap):用于存储已被JVM加载的类的信息、常量、静态变量等数据。

线程自有:

  • 程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器。
  • 虚拟机栈(JVM Stack,也可称作Java方法栈):主要存放基本数据类型、对象引用、returnAddress类型。
  • 本地方法区(Native Method Stack):主要为Native方法服务。

Servlet与CGI(Common Gateway Interface)的比较

与CGI程序一样,Servlet可以相应用户的指令,也可以收集用户白丹的信息并给予动态反馈。

  1. 调用一个CGI程序时,服务器端就要新启动一个进程(当用户访问量高的时候,就会消耗系统越多的处理时间);而Servlet充分发挥了服务器端资源并高效的利用,每次调用Servlet时并不是新启用一个进程。
  2. CGI程序不具备平台无关性;而Servlet具备java的平台无关性,可移植行好;
  3. 传统的技术中,一般为二层的结构:Web服务器+数据库服务器,当网站访问量大的时候,无法克服CGI程序与数据库连接时速度慢的瓶颈;而Servlet有线程池的概念,可以利用多线程的优点,在系统缓存中事先建立好若干与数据库的连接,当需要时只需要要一个连接即可,速度快。

Servlet的生命周期

Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。

  1. 加载:容器通过类加载器使用Servlet类对应的文件加载Servlet;
  2. 创建:通过Servlet构造函数创建一个Servlet对象;
  3. 初始化:调用init方法进行初始化;
  4. 处理客户请求:每当有一个客户请求,容器会创建一个线程来处理用户请求;
  5. 卸载:调用destroy方法让Servlet自己释放其占用的资源。

Servlet是线程不安全的,在Servlet类中可能会定义共享的变量,在并发的多线程访问下,不同的线程对成员变量的修改会引发错误。

Struts1和Struts2的对比

  1. Action类:
  • Struts1要求Action类继承一个抽象对象;
  • Struts2的Action类可以实现一个Action接口,也可以实现其他接口;
  1. Servlet依赖:
  • Struts1 Action依赖于Servlet API;
  • Struts2 Action不依赖于容器,允许Action脱离容器单独被测试;
  1. 线程模式:
  • Struts1 Action是单例模式并且必须是线程安全的;(单例的)
  • Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(多例的)

AWT与Swing

  • AWT:是通过调用操作系统的native方法实现的,所以在Window系统上的AWT就是Windows风格,在Linux系统上的AWT就是XWindows风格;
  • Swing:是通过Lightweight组件,不是通过native方法实现的,所以Swing的窗口风格更加多样化。

forward和redirect

redirect:请求重定向。客户端行为,本质上为2次请求,地址栏改变,前一次请求对象消失。
forward:请求转发。服务器行为,地址栏不变。

new

JVM中一个字节以下的整形数据会在JVM启动的时候加载进内存。除非用new Integer()显式的创建对象,否则都是同一个对象。
基本数据类型int,double等比较的时候比较的是数值。

JVM配置参数含义

  • -Xmx:最大堆大小;
  • -Xms:初始堆大小;
  • -Xmn:年轻代大小;
  • -XXsurvivorRatio:年轻代中Eden区与Survivor区的大小比值;

错题集锦(二) -- Java专项的更多相关文章

  1. 20175316盛茂淞 《java程序设计》第三周课堂测试错题总结

    20175316盛茂淞 <java程序设计>第三周课堂测试错题总结 出现问题 错题总结 题目1 在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15 1. 修改代 ...

  2. 【笔试题】Java 易错题精选

    笔试题 Java 易错题精选 1.写出下列程序的运行结果( )String 不变性Java 值传递 public class Test { public static void main(String ...

  3. Java 整体测试重点题 错题积累

    重点题    错题积累 1: 解析: %d:用来设置输出日志的日期和时间 %m:用来输出代码中指定的消息 %n:用来输出一个回车换行符 %l:用来输出日志事件的发生位置 %p:用来输出优先级 %f:用 ...

  4. Java多线程习题 ===重点 ,错题积累

    多线程重点,错题分析 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: . 12: 13: 14: 15:

  5. 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告

    20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...

  6. 20145208 实验二 Java面向对象程序设计

    20145208 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  7. COJ 0802 非传统题(二)

    (颓了这么多天是时候干点正事了QAQ) 非传统题(二) 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 还是很久很久以前,chx ...

  8. 20165306 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验要求 1.提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号.本提交点考查JUnit会不会使用,测试 ...

  9. 项目报错:Caused by: java.lang.ClassNotFoundException: Didn't find class "..."on path: DexPathList

    项目报错: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.eshore.njb.MyApplicat ...

随机推荐

  1. android初体验——HelloWord

    一.新建项目: 打开 eclipse ,选择File – New – Android Application Project 输入项目名称,程序名称,包名. 包名不能重复,它是项目的唯一标示,我理解为 ...

  2. zw版【转发·台湾nvp系列Delphi例程】HALCON OverpaintRegion2

    zw版[转发·台湾nvp系列Delphi例程]HALCON OverpaintRegion2 unit Unit1;interfaceuses Windows, Messages, SysUtils, ...

  3. 【pyQuery】抓取startup news首页

    #! /usr/bin/python # coding: utf-8 from pyquery import PyQuery c=PyQuery('http://news.dbanotes.net/' ...

  4. 使用 Delphi Xe 的 TDictionary

    原本一直使用 TList, 将定义的一个个 Record 保存在TList 里面, 为了能把某些对象管理起来, 例如一个类的 n 多实例,可以进行索引.查找.释放等 今天刚看到原来已经有了一个叫 TD ...

  5. 【python cookbook】【数据结构与算法】5.实现优先级队列

    问题:要实现一个队列,它能够以给定的优先级对元素排序,且每次pop操作时都会返回优先级最高的那个元素: 解决方案:采用heapq模块实现一个简单的优先级队列 # example.py # # Exam ...

  6. jdk8飞行记录器配置

    jdk8提供了jmc工具,应该比visualvm厉害吧 下面贴一份tomcat的配置,自己留个备份,把下面的内容粘贴到tomcat setenv.sh就可以了 nowday=`date +%Y%m%d ...

  7. 如何优化tomcat配置(从内存、并发、缓存4个方面)优化

    Tomcat有很多方面,我从内存.并发.缓存四个方面介绍优化方法.  ** 一.Tomcat内存优化 ** Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚 ...

  8. (转)java线程安全问题之静态变量、实例变量、局部变量

    java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如 ...

  9. Java生产者消费者模型

    在Java中线程同步的经典案例,不同线程对同一个对象同时进行多线程操作,为了保持线程安全,数据结果要是我们期望的结果. 生产者-消费者模型可以很好的解释这个现象:对于公共数据data,初始值为0,多个 ...

  10. 对于改善 MySQL 数据装载操作有效率的方法是怎样

    多时候关心的是优化SELECT 查询,因为它们是最常用的查询,而且确定怎样优化它们并不总是直截了当.相对来说,将数据装入数据库是直截了当的.然而,也存在可用来改善数据装载操作效率的策略,其基本原理如下 ...