学习记录(部分myeclipse快捷键,一些面试题),有点乱,但是挺有用
网页有错看最下面的错误的第一行
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
配置struts2和spring整合
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属性:指定的是sql的orderby字句内容-->
<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
hashmap和hashtable的区别。 常问。
hashmap可以看做是hashtable的替代者,HashMap的Value和Key都可为NULL,而HashTable不可以,同时,HashTable是线程同步的,而HashMap不是.HashTable用Iterator遍历,HashMap用Enumeration遍历.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。计算index的方法不同,HashTable直接利用hashcode()得出,HashMap对hashcode重新计算得出.
collection和collections的区别。 你千万别说一个是单数一个是复数。
collection是结合类的上级接口,子接口有List和Set等,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()释放资源.
4,sleep()必须捕获异常,而wait()不需要.
Abstract class和interface有什么区别?
抽象类可以有抽象方法和普通方法,也可以有自己的数据成员.接口只允许有常量,抽象方法和静态类成员.接口可以被多继承,抽象类不行.接口被实现时,所有方法必须被重写.抽象类被继承时如果有抽象方法没被重写,则子类也为抽象类.
Synchronized
编辑Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然可以访问该object中的非加锁代码块。
去掉数组中重复
1,Set
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 变量可能值1 :
分支一;
break;
case 变量可能值2 :
分支二;
break;
case 变量可能值3 :
分支三;
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. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
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中的代码比return和break语句后执行
最常见到的5个runtime exception
ClassCastException(类转型)
ArithmeticException(除以0)
NullPointerException(空指针)
ArrayIndexOutOfBoundsException(数组越界)
Java语言如何进行异常处理,关键字:throws,throw,try,catch,finally
throws是获取异常,
throw是抛出异常,
try是将会发生异常的语句括起来,从而进行异常的处理,
catch是如果有异常就会执行他里面的语句,
finally不论是否有异常都会进行执行的语句。
类集框架的完整结构
答:类级框架的最大接口:Collection、Map、Iterator、Enumeration
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.Date,System,Class,List, 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):删除请求中的一个属性
JAVA中request.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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。