学习记录(部分myeclipse快捷键,一些面试题),有点乱,但是挺有用

时间:2021-12-30 09:32:29

 

网页有错看最下面的错误的第一行

 

API:网页制作完全手册

系统管理步骤-1-设计实体(JAVABEAN

-2-写映射文件(Action)

-3-JSP-4-struts-5-Action/Service/Impl

6-BaseAction 申明

 

自动提示功能

打开 Eclipse  -> Window -> Perferences -> Java -> Editor -> Content Assist,在右边最下面一栏找到 auto-Activation ,下面有三个选项,找到第二个“Auto activation triggers for Java选项  在其后的文本框中会看到一个“.”存在。这表示:只有输入“.”之后才会有代码提示和自动补全,我们要修改的地方就是这里。把该文本框中的“.”换掉,换成“abcdefghijklmnopqrstuvwxyz.”,这样,你在Eclipse里面写Java代码就可以做到按“abcdefghijklmnopqrstuvwxyz.”中的任意一个字符都会有代码提示

 

查找类

Ctrl shift T

 

配置struts2spring整合

E:\java教学视频\OA传智播客_人事管理系统项目实战视频资料\上课用的开发包与软件\spring-framework-2.5.6.SEC01\docs\reference\html_single\index.html

15.2. Common configuration

 

开启提示快捷键

Alt+/

 

整块缩进

Shift+tab

 

修改行长度

Formatt

 

重命名文件

Alt+Shift+R

 

打叉时自动创建方法

Ctrl+1

 

切换窗口

Alt+方向键左/

 

整体注释

Ctrl+/

 

替换

Ctrl+F

 

搜索文件

Ctrl+shift+R

 

标注

Service实现类加:

@Service-服务

@Transactional-事务

 

@Resource-注入(BaseAction)

Spring配置:(Action

@Controller-交给容器管理

@Scope("prototype") (多例的)  配完到struts.xml

 

关闭JSP可视化

http://jingyan.baidu.com/article/1e5468f909e467484961b78d.html

 

把代码按整块选取

Alt+shift+a

 

MD5密码包

E:\java教学视频\OA传智播客_人事管理系统项目实战视频资料\上课用的开发包与软件\spring-framework-2.5.6.SEC01\lib\jakarta-commons\commons-codec.jar

设置权限回显和点文字可以选中方法

方法1<%--  <s:checkboxlist name="privilegeIds" list="#privilegeList" listKey="id" listValue="name"></s:checkboxlist> -%>

 

方法2<s:iterator value="#privilegeList">

<input type="checkbox" name="privilegeIds" value="${id}" id="cb_${id}"

<s:property value="%{id in privilegeIds ? 'checked' : ''}"/>

/>

<label for="cb_${id}">${name}</label>

<br/>

</s:iterator>

没样是可以填空格

<td><s:a action="user_delete?id=%{id}" onclick="return delConfirm()" >删除</s:a>

                    <s:a action="user_editUI?id=%{id}">修改</s:a>

<s:a action="user_initPassword?id=%{id}" onclick="return window.confirm('您确定要初始化密码为1234吗?')">初始化密码</s:a>

 

                </td>

标记问题 

//TODO 

查看 Tasks

 

页面排序

<!-- children属性,本类与Department(下级)的一对多关系 

order-by属性:指定的是sqlorderby字句内容-->

<set name="children" cascade="delete" order-by="id ASC">

 

帖子排序

例子:

Select id, name, (CASE gender WHEN 1 THEN ‘男’ ELSE ‘女’ END) from user;

 

public List<Topic> findByForum(Forum forum) {

return getSession().createQuery(//

//排序:所有置顶帖在最上面,并按最后更新时间排序,让新状态的在上面

"FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE END) DESC, t.lastUpdateTime DESC")//

.setParameter(0, forum)//

.list();

}

 

query did not return a unique result: 6

 

查询没有返回唯一结果啊,说明你的SQL语句有问题,出现重复值了,要不就是你的唯一索引没有建好~~

 

光标在中间换行

End+回车

全局查找

Ctrl+H

 

编译包

Javac  -d  .  Package.java 

 

Myeclipse默认布局

window-->reset perspective

 

导入javaee

在你的项目上 右键---properties ---java build path----libraries--add library---myeclipse library---j2ee 1.4 library

 

项目全体编码

右键项目的名字-->Properties-->左边选 Resource-->右边选 Text file encoding  这一栏-->other-->这里选原项目的字符编码   如果你不知道的话   就选gbk  或者  utf-8  试一下

 

 

 

字符串转换二进制

//将字符串转换成二进制字符串,以空格相隔 private String StrToBinstr(String str) { char[] strChar=str.toCharArray(); String result=""; for(int i=0;i<strChar.length;i++){ result +=Integer.toBinaryString(strChar[i])+ " "; } return result; }

 

反射机制创建类

Class c;  c = Class.forName(class_path);//class_path 为类路径,包含包名,例如java.lang.String Object classObj = c.newInstance();

 

向上转型和向下转型

比如有2个类 A B  B继承A

向上转型(子类到父类):A a = b

向下转型(父类到子类需要强转):b = (B)a

 

hashmaphashtable的区别。 常问。

hashmap可以看做是hashtable的替代者,HashMapValueKey都可为NULL,HashTable不可以,同时,HashTable是线程同步的,HashMap不是.HashTableIterator遍历,HashMapEnumeration遍历.HashTablehash数组默认大小是11,增加的方式是 old*2+1HashMaphash数组的默认大小是16,而且一定是2的指数。计算index的方法不同,HashTable直接利用hashcode()得出,HashMaphashcode重新计算得出.

 

 

 

 

 

 

 

collectioncollections的区别。 你千万别说一个是单数一个是复数。

collection是结合类的上级接口,子接口有ListSet,Collections是java.util下的一个工具类,提供一些列静态方法对集合搜索排序,线程同步化等.

 

 

gc是什么?为什么要有gc? 基础。

GC 即 garbage collection(垃圾收集),JAVA用于回收内存的一种方式,主要的实现方法有引用计数,标记回收,复制清除等,GC可以避免内存泄露和堆栈溢出,有效提高内存的利用效率,同时将程序员从繁琐的内存管理中释放出来.

 

sleep()wait()有什么区别? 搞线程的最爱。

1,sleep()java.lang.Thread中的静态方法,wait()java.lang.Object中的方法

2,sleep()用作当前线程阻塞自己,并在制定时间后恢复,wait()用于当前线程决定其他线程阻塞,是线程通信的表现.

3,sleep()不释放资源,wait()释放资源.

4sleep()必须捕获异常,wait()不需要.

 

 

Abstract classinterface有什么区别?

抽象类可以有抽象方法和普通方法,也可以有自己的数据成员.接口只允许有常量,抽象方法和静态类成员.接口可以被多继承,抽象类不行.接口被实现时,所有方法必须被重写.抽象类被继承时如果有抽象方法没被重写,则子类也为抽象类.

Synchronized

编辑Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然可以访问该object中的非加锁代码块。

 

 

 

 

 

去掉数组中重复

1Set 

Integer[] integer = {1,2,2,4,2,5,6,75,5,5,5,5,89,7};

HashSet<Integer> hashSet = new HashSet<Integer>();

for(int i=0 ; i<integer.length;i++){

 

hashSet.add(integer[i]);

}

for(Iterator<Integer> iterator = hashSet.iterator();iterator.hasNext();){

System.out.print(iterator.next()+"'");

}

 2,List

Integer[] integer = {1,2,2,4,2,5,6,75,5,5,5,5,89,7};

ArrayList<Integer> arrayList = new ArrayList<Integer>();

 

for (int i = 0; i < integer.length; i++) {

if(!arrayList.contains(integer[i])){

arrayList.add(integer[i]);

}

}

System.out.print(arrayList);

 

Web.xml

<url-pattern>/servle/RegisterServlet</url-pattern>

<form action="${pageContext.request.contextPath}

/servle/RegisterServlet" method="post">

<web-app>

<servlet>

<servlet-name>

<servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>

<url-pattern>

</servlet-mapping>

 

 

 

<filter>

<filter-name>

<filter-class>

</filter>

</web-app>

 

Switch语句

switch 语句的格式:

switch ( 整型或字符型变量 )

{

     case 变量可能值

         分支一;

         break;

   case 变量可能值: 

         分支二;

         break;

   case 变量可能值: 

         分支三;

         break;

   ...

   default :

       最后分支;

 

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

答:引用变量不能变;对象可以改变

 

 

==”和“.equals”区别

前者:比较对应内存的数值及引用的地址

后者:比较内容

 

静态变量和实例变量的区别?

实例变量必须创建对象后才可以通过这个对象来使用(基本数据和引用的地址在栈;new出在堆

静态变量则可以直接使用类名来引用(储存:全局区(静态区))

 

1. if(username.equals(“zxx”){}

username可能为NULL,会报空指针错误;改为"zxx".equals(username)

abstract class和interface有什么区别?

  Class Person         Inteface Person

     抽象类  接口

1.抽象类可以有构造方法,接口中不能有构造方法(无构造 public Person(){})

2.抽象类中可以有普通成员变量,接口中没有普通成员变量(无普员 int id; String name; )

3.抽象类中可以包含非抽象的普通方法,

接口中的所有方法必须都是抽象的(方法抽象 public abstract say(){}),不能有非抽象的普通方法。

4. 抽象类中的抽象方法的访问类型可以是publicprotected和(默认类型,虽然

eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5. 抽象类中可以包含静态方法,接口中不能包含静态方法(无静态 public static say(){})

6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,

但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

7. 一个类可以实现多个接口,但只能继承一个抽象类。

 

 

String s = new String("xyz");

创建了几个String Object?

1,字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个

2,New String每写一遍,就创建一个新的对象

 

String和StringBuffer的区别

 

String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题。

finally中的代码比returnbreak语句后执行

 

最常见到的5runtime exception

ClassCastException(类转型)

ArithmeticException(除以0)

NullPointerException(空指针)

ArrayIndexOutOfBoundsException(数组越界)

 

 

 

 

Java语言如何进行异常处理,关键字:throwsthrowtrycatchfinally

throws是获取异常,

throw是抛出异常,

try是将会发生异常的语句括起来,从而进行异常的处理,

catch是如果有异常就会执行他里面的语句,

finally不论是否有异常都会进行执行的语句。

 

类集框架的完整结构

答:类级框架的最大接口:CollectionMapIteratorEnumeration

Collection:存放单值 

|-List:允许有重复内容 

|-ArrayList:异步处理,新的操作类,非线程安全 

|-Vector:同步处理,旧的操作类,线程安全,支持Enumeration 

|-Set:不允许有重复的内容,依靠hashCode()equals()进行重复的验证 

|-HashSet:无序存放 

|-TreeSet:有序存放,按Comparable排序 

|-Map:存放一对值 

|-HashMap:新的类,异步处理,非线程安全,允许有null 

|-HashTable:旧的类,同步处理,线程安全,不允许有null 

|-TreeMap:有序排列,按key配需 

|-Iterator:迭代输出,依靠collection接口中的iterator方法输出,是新的输出标准

 

 

 

 

 

 

设计4个线程,2个加,2个减

public class ThreadTest1 {

private int j;

 

public static void main(String[] args){

ThreadTest1 tt1 = new ThreadTest1();

Inc inc = tt1.new Inc();

Dec dec = tt1.new Dec();

for (int i = 0; i < 2; i++) {

Thread thread = new Thread(inc);

thread.start();

thread = new Thread(dec);

thread.start();

}

}

private synchronized void inc(){

j++;

System.out.println(Thread.currentThread().getName()+"-inc:"+j);

}

private synchronized void dec(){

j--;

System.out.println(Thread.currentThread().getName()+"-dec:"+j);

}

class Inc implements Runnable{

public void run(){

for(int i=0;i<10;i++){

inc();

}

}

}

class Dec implements Runnable{

public void run(){

for(int i=0;i<10;i++){

dec();

}

}

}

}

 

 

 

 

List       和      Map          区别?

一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,

List存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。

 

说出一些常用的类,包,接口,请各举5

要让人家感觉你对java ee开发很熟,所以,不能仅仅只列core java中的那些东西,要多列你在做ssh项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。

常用的类:BufferedReader  BufferedWriter   FileReader   FileWirter  String    Integer  java.util.DateSystemClassList,   HashMap

常用的包:java.lang   java.io   java.util   java.sql,   javax.servlet, org.apache.strtuts.action,   org.hibernate

常用的接口:Remote  List  Map  Document  NodeList,  Servlet, HttpServletRequest,  HttpServletResponse,  Transaction(Hibernate)Session(Hibernate),   HttpSession

 

heap和stack有什么区别。

java的内存分为两类,一类是栈内存,一类是堆内存。

栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。

堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用new创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。

GC是什么?为什么要有GC?

GC是垃圾收集的意思(Gabage Collection,

内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

 

java中会存在内存泄漏吗,请简单描述。

所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。

java中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景

内存泄露的两个条件:无用,无法回收

Request对象的主要方法: setAttribute(Stringname,Object):设置名字为name的request的参数值 getAttribute(String name):返回由name指定的属性值 getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组 getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的Body的长度 getHeader(String name):获得HTTP协议定义的文件头信息 getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例 getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向服务器端传送数据的方法 getParameter(String name):获得客户端传送给服务器端的有name指定的参数值 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例 getParametervalues(Stringname):获得有name指定的参数的所有值 getProtocol():获取客户端向服务器端传送数据所依据的协议名称 getQueryString():获得查询字符串 getRequestURI():获取发出请求字符串的客户端地址 getRemoteAddr():获取客户端的IP地址 getRemoteHost():获取客户端的名字 getSession([Booleancreate]):返回和请求相关Session getServerName():获取服务器的名字 getServletPath():获取客户端所请求的脚本文件的路径 getServerPort():获取服务器的端口号 removeAttribute(Stringname):删除请求中的一个属性

 

 

 

 

JAVArequest.getHeader(String param)获取的什么值?

包头文件。。可以拿很多东西。。

如:getHeader("Host"):请求的地址。

getHeader("Referer"):请求的完整地址.

getHeader("Accept-Language"):语言

 

Class.forName("A").newInstance();

new A();的区别

1:区别 一个是通过反射机制创建实例,一个是直接new创建实例

2:反射机制简单来说:就是通过一个字符串(类地址)可以创建这个类的实例

3:前者效率小于后者

 

查询语句

select * from user where username=? and password=?

 

数据库路径错误

正确:jdbc:mysql:///spark

错误:jdbc:mysql///spark

 

 

 

 

 

 

 

由于单词写错,少了个R造成错误

错误:

正确:

数字类之间转换

方法:.intValue(),doubleValue().....等(类型加Value

查看继承结构

Ctrl+T