DAY2-2017-11-16

来源:互联网 发布:滑雪服品牌 知乎 编辑:程序博客网 时间:2024/05/16 17:07

有些长的解析懒得自己写了,而且大神写的很好就直接复制过来了,免得狗尾续貂。

1,

在java中,抽象方法不能有方法体,但是可以有方法声明,接口只能用public和abstract,若是没有写,就默认是这两个关键词修饰


2,非纯数字的字符串转化为Integer对象会报数字格式异常


3,类中静态语句块仅在类加载时被执行一次



4,(直接粘贴的某大神的答案)

   运行时数据区包括:程序计数器、虚拟机栈、本地方法栈、Java堆、方法区以及方法区中的运行时常量池

     1》程序计数器: 线程私有,是当前线程所执行的字节码的行号指示器,如果线程正执行一个java方法,计数器记录正在执行的虚拟机字节码指令的      地址,如果线程正在执行的是Native方法,则计数器值为空;

     2》虚拟机栈: 即栈区, 线程私有 ,为虚拟机执行 Java 方法(字节码)服务,每个方法在执行的时会创建一个栈帧用于存放局部变量表、操作数      栈、动态链接和方法出口等信息,每个方法的调用直至执行完成对应于栈帧的入栈和出栈;

3》本地方法栈: 为虚拟机使用的 N ative 方法服务,也是 线程私有 ;

4》Java 堆: 在虚拟机启动时创建, 线程共享 ,唯一目的是存放对象实例,是垃圾收集器管理的主要区域——” GC 堆“,可以细分为新生代和老年代,新生代又可以细分为 Eden 空间、 From Survivor 空间和 To Survivor 空间;物理上可以不连续,但逻辑上连续,可以选择固定大小或者扩展;

5》方法区: 线程共享 ,用于存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。被称为“永久代”,是因为H otSpot 虚拟机的设计团队把 GC 分代收集扩展到方法区,即使用永久代来实现方法区,像 GC 管理 Java 堆一样管理方法区,从而省去专门为方法区编写内存管理代码,内存回收目标是针对常量池的回收和堆类型的卸载;

6》运行时常量池: 线程共享 ,是方法区的一部分, C lass 文件中存放编译期生成的各种字面量和符号引用,类加载后进入方法区的运行时常量池中。

5,

String s=null;没有给s开辟任何空间,当执行length()方法时候,
因为没有具体指向的内存空间,所以报出NullPointerException没有指向的错误。
A选项中 &是与运算,两个都得执行,执行到s.length()自然就报错了。
B 选项中S!=null  结果为false 整体就为false ,&& 后面就不会执行。
C选项中|是或运算两个都会检查一下是否符合再根据结果运算,而D中||只要前面的符合了后面的就不会检测了

6,java线程中,resume与suspended一起使用,wait与notify(notifyAll)一起使用,sleep会让线程暂时不执行

7,c++虚类相当与java里面的抽象类,c++中没有接口的概念,与之对应的是纯虚类,对应的是java的接口

8,
java.awt: 包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面

java.lang: 提供java编成语言的程序设计的基础类

java.io:  包含提供多种输出输入功能的类,
java.net:  包含执行与网络有关的类,如URL,SCOKET,SEVERSOCKET,
java.applet: 包含java小应用程序的类
java.util:  包含一些实用性的类

9,JDBC statement中的PReparedStatement的占位符对应着即将与之对应当值,并且一个占位符只能对应一个值,如果能对应多个就会引起混淆。sql语句是确定的,那么一个占位符必定只能对应一个值

10,
a.Statement:  
普通的不带参的查询SQL;支持批量更新,批量删除;  
b.PreparedStatement:  
可变参数的SQL,编译一次,执行多次,效率高;  
安全性好,有效防止Sql注入等问题;  
支持批量更新,批量删除;  
c.CallableStatement:  
继承自PreparedStatement,支持带参数的SQL操作;  
支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持;  

Statement每次执行sql语句,数据库都要执行sql语句的编译 ,  
最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement。  

PreparedStatement是预编译的,使用PreparedStatement有几个好处  
1》. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。  
2》. 安全性好,有效防止Sql注入等问题。  
3》.  对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch;  
4》.  代码的可读性和可维护性。

11,java中
<<表示左移位
>>表示带符号右移位
>>>表示无符号右移
但是没有<<<运算符

12线程局部存储:
如果需要在一个线程内部的各个函数调用都能访问、但其它线程不能访问的变量(被称为static memory local to a thread 线程局部静态变量),就需要新的机制来实现。这就是TLS

13,


14
解析:实现会话跟踪的机制(直接复制的大神的解析)

Cookies,URL重写,隐藏式表单域,Session机制

Cookies

      Cookies是使用最广泛的会话跟踪机制,Cookies是有服务器创建,并把Cookies信息保存在用户机器上的硬盘上,下次用户再次访问该站点服 务器的时候,保存在用户机器上硬盘的Cookies信息就被送回给服务器。一般Cookies一般不多于4KB,且用户的敏感信息如信用卡账号密码不应该 保存在Cookies中。

URL重写

       URL重用户在每个URL结尾附加标识回话的数据,与标识符关联的服务器保存有关与会话的数据,如我们访问某个新闻的时候,在地址栏我们一般会看到这样的 信息:http://www.XXX.com/news?id=??,通常的话id后面的问号表示该条新闻在后台数据库中的新闻表的id。URL重写能够 在客户端停用cookies或者不支持cookies的时候仍然能够发挥作用。

隐藏表单域

      通常,在表单中我们使用隐藏表单域的时候会有这么一句代码:<input type=”hidden” name=”XXX”  value=”XXX”/>。通过给type属性赋值为hidden值来实现隐藏,这样用户在浏览的时候看不到这行代码的数据,但是当用户通过查看 源代码还是可以看到的。

Session机制

       这个机制要慎用,特别是对于访问量很大的站点,因为这种机制是吧Session信息保存在服务器端。如果访问量特别大的话,对于服务器的承受力的要求有多高是可想而知的。