`

Java笔记

 
阅读更多

1. entrySet问题

如果映射表的类型不确定,需要把entrySet()的返回值转换为Set<Map.Entry>,否则编译出错。

 

 

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test2 {
    public static final void main(String[] args) {
	Map<String, String> map = new HashMap();
	for (Map.Entry entry : map.entrySet()) {
	    System.out.println(entry.getKey() + "," + entry.getValue());
	}
	Map map2 = map;
	for (Map.Entry entry : (Set<Map.Entry>)map2.entrySet()) {
	    System.out.println(entry.getKey() + "," + entry.getValue());
	}
	System.out.println("Hello, world!");
    }
}

map2.entrySet()前的类型转换不能省略。

 

 

2. 泛型T通过返回值的类型进行判定,有时会导致编译错误。

例如Collections.emptyList()的返回值类型为List<T>

 

 

    public List<Integer> getID(int i) {
	    return (i == 0) ? (List)Collections.emptyList() : new ArrayList<Integer>();
    }

  这里的Collections.emptyList()前的类型转换不能省略。

 

 

3. 从转储(Dump)文件中调试并除错

http://www.ibm.com/developerworks/cn/java/j-memoryanalyzer/

 

4. 生产环境jvm内存运行1小时,就接近xmx,系统奇慢。

http://www.iteye.com/topic/1116650?page=5

 

5. 远程调试Java程序

 

 

http://www.infoq.com/cn/articles/basic-java-debugging 写道
-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=8000
你现在可以利用下面的命令行用JDB连接:
jdb -attach 8000
或者在Windows上:
jdb -connect com.sun.jdi.SocketAttach:port=8000

 

Java调试——回归基础

http://www.infoq.com/cn/articles/basic-java-debugging

 

使用 Eclipse 远程调试 Java 应用程序

http://www.ibm.com/developerworks/cn/opensource/os-eclipse-javadebug/

 

6. 调整AWT窗口客户区大小

如果用setSize,只能修改整个窗口的大小(包括标题栏)

可以先创建一个Panel(或者是Canvas,Applet),添加到Frame,然后用

 

 

setPreferredSize(new Dimension(800, 600))

 

修改Panel的Preferred大小,再用

 

frame.add(panel); //如果是JFrame则是.getContentPane().add()
frame.pack();

 

让Frame自己计算大小。

(有些控件如Button可以不用setPreferredSize,

因为它自己会自动扩大成按钮文本的大小)

 

由于上面的Panel被套在里面,所以一开始是无法监听键盘事件(除非用鼠标点击),

所以最好在setVisible后让其马上获取焦点。

 

		frame.setVisible(true);
		panel.requestFocus(); 

 

 

7. 取消AWT窗口的最大化和添加关闭事件(用于游戏窗口)

 

	frame.setResizable(false);
	frame.setLocationRelativeTo(null);
	frame.addWindowListener(new WindowAdapter() {
	    @Override
	    public void windowClosing(WindowEvent e) {
		System.exit(0);
	    }
	});
	frame.setVisible(true);

 

8. -XX:+ShowMessageBoxOnError

http://www.iteye.com/topic/1119313?page=2

http://www.oracle.com/technetwork/java/javase/clopts-139448.html#gbmui

 

9. 异常的性能问题

http://www.iteye.com/topic/857722

http://www.blogjava.net/stone2083/archive/2010/07/09/325649.html

 

10. JPEGCodec编译错误

http://rxxluowei.iteye.com/blog/671893

http://blog.csdn.net/defonds/article/details/6314723

删除JRE,然后再次添加。

 

11. 收录各种猥琐的Java笔试/面试题目

http://blog.csdn.net/smcwwh/article/details/7315041

 

12. asArray()类型转换异常问题:

String files [] = (String []) arrList.toArray ();会抛异常。

解决方法是改为使用asArray()的带参数重载版本

String files [] = (String []) arrList.toArray (new String [arrList.size ()]);

见:

http://www.coderanch.com/t/378558/java/java/Class-Cast-exception-ArrayList-toArray

 

13. SIGTERM信号处理

kill -15

Runtime.getRuntime().addShutdownHook()

http://www.iteye.com/topic/1122093?page=2

 

(20120617)

14. 讲解如何在C/C++中调用Java的方法

http://tech.ccidnet.com/art/297/20050413/237901_1.html

http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html

 

 

(20131202)

15. Applet改写为Application问题

(参考自

https://github.com/Amarang/RPGgit

* getDocumentBase()会抛异常,需要做一些处理,例如(用于复杂目录树,不能使用getClass()的情况下)

 

	public Image getImage(URL url, String name) {
		if (!isApplet) {
			try {
				return ImageIO.read(new File(".", name));
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		} else {
			return super.getImage(url, name);
		}
	}

 

* main函数书写

 

	private boolean isApplet = true;
	public static void main(String[] args) { 
		Frame frame = new Frame();
		XXXApplet app = new XXXApplet();
		app.isApplet = false;
		app.init();
		frame.add(app);
		frame.setSize(800, 600);
		frame.setVisible(true);
	} 

 * 读取简单文件流(使用getClass(),无需判断是否为Applet)

			InputStream is = getClass().getClassLoader().getResourceAsStream(fileName);
		

 

* 读取图片或音频(单一目录,使用URL,无需判断是否为Applet)

 

			URL soundURL = getClass().getResource("music/glory.wav");
			intro = Applet.newAudioClip(soundURL);

 

 

(20140610:)

16. BufferdInputStream方法出现异常:Resetting to invalid mark

在构造函数参数中指定更大的缓存大小(默认为8K)

 

//Exception in thread "main" java.io.IOException: Resetting to invalid mark
    		InputStream inputStream = new BufferedInputStream(new FileInputStream(filename), 1024 * 1024 * 5);
    		

 

(20141211)

17. 避免Eclipse的jsp引用搜索,提高搜索速度

Eclipse预设:Window->Preferences->Web->JSP Files->Search->Include JSP matches in Java searches.

去掉勾选

 

 

(20150106)

18. SWT中List控件不需要长按Ctrl键实现多选

方法是添加SWT.SIMPLE风格位,例如:

 

listName = new List(compositeBody, SWT.BORDER | SWT.MULTI | SWT.SIMPLE | SWT.H_SCROLL | SWT.V_SCROLL);

 

参考:

http://bbs.csdn.net/topics/320187649?list=lz

或参考List的实现(OS.LBS_EXTENDEDSEL表示需要按Ctrl键才能多选)

 

int widgetStyle () {
	int bits = super.widgetStyle () | OS.LBS_NOTIFY | OS.LBS_NOINTEGRALHEIGHT;
	if ((style & SWT.SINGLE) != 0) return bits;
	if ((style & SWT.MULTI) != 0) {
		if ((style & SWT.SIMPLE) != 0) return bits | OS.LBS_MULTIPLESEL;
		return bits | OS.LBS_EXTENDEDSEL;
	}
	return bits;
}

 

 (20150320)

19. maven用法(mvn命令行)

(1) 复制依赖jar:

mvn dependency:copy-dependencies -DoutputDirectory=lib   -DincludeScope=compile 

参考:

http://www.iteye.com/problems/56981

(2) 打印依赖树

mvn dependency:tree

(3) 编译

mvn compile

(4) 打包jar

mvn package

(5) 插件帮助

mvn xxx:help

 

 

(2015/04/16)

20. 从v2.3.0开始jogl的javax包名改变(查看jogl-all.jar)

写道
javax.media.opengl is now com.jogamp.opengl

旧项目如果要兼容,需要使用v2.2.4或之前版本的jogl

 

参考:

http://stackoverflow.com/questions/7210194/where-can-i-find-the-package-javax-media-opengl

http://jogamp.org/deployment/archive/rc/

 

 

20161115

跳过测试

方式1:

mvn install -Dmaven.test.skip=true

方式2:在pom.xml里面配置

<plugins>

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-surefire-plugin</artifactId>

        <configuration>

          <skip>true</skip>

        </configuration>

      </plugin>

</plugins>

参考:

https://my.oschina.net/u/865478/blog/159657

 

 

(TODO)

 

 

分享到:
评论

相关推荐

    大佬的java笔记

    专业的Java笔记可能会涉及这些内容,帮助学习者掌握Java的最新发展。 遗憾的是,由于【部分内容】部分不包含实际的笔记内容,无法进一步提供具体的编程示例和深入的解释。如果要学习Java,最好的方式是从学习Java的...

    java笔记java笔记

    java笔记java笔记java笔记java笔记java笔记java笔记java笔记

    宋红康java笔记.rar

    【宋红康java笔记】是一份综合性的Java学习资料,由知名编程教育者宋红康编撰。这份压缩包文件包含了大量的Java编程知识点,旨在帮助初学者和有经验的开发者深入理解和掌握Java语言的核心概念与高级特性。以下是根据...

    非常好的java笔记适合初学者

    这份"非常好的java笔记"无疑是初学者踏入这个领域的宝贵资源。笔记由培训班的专业老师编写,内容详细且全面,旨在帮助初学者系统地学习和理解Java的基础知识。 首先,Java基础部分会涵盖变量、数据类型、运算符、...

    狂神说Java笔记资料

    《狂神说Java笔记资料》是一份全面涵盖Java开发基础知识的文档集,旨在帮助学习者系统地掌握Java编程。这份笔记包含多个章节,每个章节都深入讲解了一个特定的主题,覆盖了从初学者到进阶开发者必备的知识点。 1. *...

    马士兵JAVA笔记(全).docx

    马士兵JAVA笔记(全) 本资源是马士兵的JAVA笔记,涵盖了JAVA语言的基础知识,包括标识符、常量、变量、数据类型、运算符、控制流语句等。 标识符是JAVA中的一种符号,用于命名变量、方法、类等。标识符由字母、...

    韩顺平java笔记完整版.zip(无笔记,只是代码)

    【标题】"韩顺平java笔记完整版.zip(无笔记,只是代码)"指的是一个包含韩顺平老师Java教学视频中所有代码的压缩文件。这个压缩包不包含笔记,而是专注于提供实际的编程示例,使得学习者可以直接查看和学习Java编程...

    18天java笔记(txt版)

    这份"18天Java笔记"提供了一个快速学习Java的核心内容精华,适合初学者和有一定经验的开发者进行回顾和巩固。txt版的格式使得笔记易于阅读和在不同设备上分享。 Java的基础知识包括语法、数据类型、控制流、类与...

    韩顺平java笔记完整版

    【标题】:“韩顺平java笔记完整版”是著名IT教育家韩顺平关于Java编程的全面学习资料,涵盖了从基础到高级的Java知识体系。 【描述】:这份笔记是韩顺平老师教学经验的结晶,旨在帮助学习者系统地理解和掌握Java...

    java笔记全套下载

    "java笔记全套下载" 提供的可能是一系列详细的学习资料,涵盖了从基础到高级的Java知识体系,帮助学习者系统地掌握这门语言。 Java的基础知识包括: 1. **Java语法**:了解变量、数据类型、运算符、流程控制(如if-...

    java笔记整理,java课堂笔记

    全套java笔记整理,侧边栏目录结构方便查看,纯手工整理。达内笔记整理。 已整理成带侧边栏目录的网页结构,方便复习大纲和跳转查看。大部分都带有笔记代码。 (默认设置为深珊瑚蓝色调,不喜欢可以把配置文件里的...

    Java笔记桌面程序

    【Java笔记桌面程序】 在IT领域,开发个人定制的桌面应用程序是解决特定需求的有效方法。本项目名为"Java笔记桌面程序",它是由一个热衷于编程的开发者为解决其所在公司无法使用网络笔记客户端的问题而自创的。这个...

    java笔记.zip

    2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 2020-4-10 java笔记 枚举类 2020-4-10 java 注解(Annotation) 2020-4-11 ...

    韩顺平java笔记整理

    韩顺平java笔记整理,整理了韩顺平java上课的视频的代码笔记,以及归纳总结

    java笔记 java笔记

    ### Java基础知识概述 #### 1. 前言 Java是一种广泛使用的面向对象的编程语言,因其跨平台性、安全性和强大的功能而受到欢迎。Java的设计理念是“一次编写,到处运行”,这意味着编写的Java程序可以在任何安装了...

    达内Java_笔记整理.rar_Java 达内笔记_Java笔记_java 笔记_笔记_达内

    达内是一家知名的教育机构,其整理的Java笔记通常会覆盖从基础到进阶的各种主题,以系统化的方式帮助学员掌握这门广泛使用的编程语言。 首先,Java的基础知识是必不可少的,这些笔记可能包括变量、数据类型、运算符...

    全套java笔记数据库部分

    标题中的“全套java笔记数据库部分”表明这是一份关于Java编程语言中数据库操作的全面学习资料,涵盖了从基础到进阶的各种主题。描述提到“最新的全套javaEE开发笔记”,暗示了这些笔记可能针对的是Java企业版(Java...

    java笔记本功能实现

    - 文件I/O操作:使用`java.io`包,如`FileWriter`和`BufferedReader`,将笔记内容写入和读取文件。可能需要JSON或XML序列化技术来保存额外的元数据,如撤销历史。 - 文件对话框:`JFileChooser`类提供了一种让用户...

Global site tag (gtag.js) - Google Analytics