1 file.separator,文件路径分隔符
path.separator,路径
line.separator,换行
不同的操作系统不一样。
2 多线程编程尽量不要引用全局静态变量,尽量用局部变量解决。
如果引用全局静态变量,则应该保证多线程之间有synchronized限制。
3 重写变成了重载。
如:要创建自己的类做键值,需要对equals()和hashCode()两个方法进行重写。
不小心参数类型写错,导致容器中的对象无法取出。
4 单实例类中的类属性其实也是一个全局变量,在多线程使用时,需要注意会话、
事务相关的变量不能作为单实例类的类属性存在。
全局变量保存在ServletContext中,会话变量保存在ServletSession中,
事务相关变量保存在ServletRequest中。
5 不要对捕获的异常再对其进行一般流程处理,可能导致程序再次出现异常。
异常要进行细分处理;
常量与变量比较时尽量将常量统一放到左边。
6 使用字符串比较时,
==是用来判断两个变量是否物理上相等;equeals()方法是用来判断两个变量是否逻辑上相等。
7 对于端口,文件句柄,套接字句柄等非内存资源的操作,
在使用完后在程序中要进行关闭,以释放所占的资源,JVM的GC不会清除这些。
8 出现多次操作数据库后发现数据库异常,重启后问题不在重现。
注意在数据库操作、IO操作在使用结束后要close()的对象必须在try-catch-finally的finally中close()。
9 编写代码不仅要考虑正常情况下的检测,最好也考虑异常情况下的检测。
10 进行大规模sql语句的批量操作时,创建的PreparedStatement对象,在使用addBatch(String sql)方法将sql命令
添加到命令列表中,调用executeBatch()方法将sql命令逐一执行。一定要注意命令列表中的sql语句的数量是否会内存溢出,最后
还要调用clearBatch()方法清空命令列表中的sql语句。
11 Java中对象的引用调用,在循环体内每循环一次定义一个对象与在循环体外定义一个对象而在循环体内不定义对象是完全不一样的。
12 不允许方法局部变量和类变量重名,杜绝错误发生。
13 当一个对象保存了一些公共信息时,这些信息在其它多个地方需要修改,则应采用对象clone()来传递这个clone过的对象。这样不会发生对象内存的共享。注意浅拷贝(影子克隆)与深拷贝(深度克隆)区别。
14 尽量对容器判断为null或者size()==0情况,防止抛出异常情况。
15 尽量对接口调用中输入参数的合法性校验。
16 建立文件通道的流在打开了要关闭。获得源文件和目标文件的通道getChannel(), 然后transferTo(..)传输数据。
17 子类继承父类时尽量不要覆盖父类的属性。
18 尽量明确的使用new声明对象,不要依赖于Java的自动转换基本数据类型,比如Integer.valueOf(i)会重新生成一个Integer对象,所以对象之间的比较应该用equals而不用==。
19 HttpSession会话的超时时间的两种方法,如果同时设置以较小的为准。
20 较长生命周期对象使用时注意内存泄漏问题。
21 大对象存储到数据库中的两种方法:
一是通过jdbc,此时数据库相应字段必须是Long Row类型。二是如果数据库用Blob类型,就必须用Oracle自己的方法。
22 文件锁FileLock Java进程级锁
23 采用数据库连接池技术节省连接数据库的时间,尽量减少与数据库连接次数,采用批量提交或存储过程可提高执行效率。使用Jdbc时尽可能使用PreparedStatment,它具有预编译功能,性能比Statement好。
24 new Date()场景:游览器时间,web服务器时间,发布EJB的时间,数据库SysDate时间。
25 当客户端不支持Cookie时,要对页面链接使用encodeRedirectURL("URL")方法对URL进行重写,输入参数一定要是完整的URL地址,否则会在正确的URL中间加上jsession=xxxxx造成无法解析请求。
26 尽量少在try区中发出对return的呼唤。注意finally是否会改变函数返回的值。
27 如果分隔符在字符串末尾,不论末尾分隔符的个数,split方法也是忽略掉。
28 Filter的执行过程按照web.xml的配置顺序来的。设置字符集的Filter尽量在其它的
Filter前面,字符编码和解码之间有其它操作可能会导致乱码出现。
29 wait(long timeout)方法等待的时间并不精确。
30 同步会导致并发请求串行处理,影响程序性能。
31 在精度要求较高的计算中就采用BigDecimal运算。
32 如果是常量连接用"+"保存在String中快,如果是字符串变量或者变量和常量无规律的连接,则用StringBuffer
33 Vector,ArrayList的toArray()方法都是依赖System.arraycopy()实现,效率比通过循环遍历Vector和
ArralyList来生成数组要高很多,因为System.arraycopy()是一个本地方法,它可以不通过JVM来操作内存,
因此它的执行速度较快。
34 对查询数组结果进行分析时,不仅是否为null,还应该增加判断是否为0。
35 自定义的异常尽量是Exception的子类而不能是RuntimeException的子类,外层应该捕获内层方法中可能抛出的运行时异常,避免异常扩散导致线程挂起。
36 jre虚拟内存设置Java_opts环境变量。注意Excel的行数限制,在导入文件时对大数据量进行分页处理。
37 在main()方法之前,先装载类,后按顺序初始化。
38 字符串中包含中文时,String.length()和String.getBytes().length的结果是不同的。
39 多个事务不要对同一张表进行操作,容易锁表;需要前一个事务提交后再创建一个新的事务或者放在同一个事务中进行处理。
40 对java中的对象操作前做是否为空的判断,否则容易引发NullPointException。
41 如果把资源文件放到Jar中一定要注意访问方式,要通过生成一个URL来访问它;但更方便的方法是通过类装载器来获得定位资源,如getClass().getResouce()的访问,这样无论资源文件是否在Jar包中,程序都可以正常访问资源。
42 多线程访问共享资源时,一定要使用信号量和等待唤醒机制。
43 先唤醒后等待情况出现,要引入控制变量的方法保证了跳出等待循环之前条件已被满足。
44 尽量保持服务端和客户端的字符集的一致,在必要时进行编解码转换。
45 Java通过Runtime.getRuntime.exec()运行外部命令抛出异常,要检查使用的流是否都关闭了。
46 System.currentTimeMillis()的精度在不同的操作系统会有所不同,按照中断频率在18.2--100Hz计算,
中断最快也就是100Hz左右(每秒钟100次,间隔为10ms)。所以精度小于10ms的系统则不能满足。
47 使用正则表达式不能区分后面多余的分隔符,会忽略掉后面的分隔符。
48 对于标签、资源型的内容,尽量放到Resource类或Property文件中定义,修改资源内容,不会影响其引用类,维护方便。
49 补丁中修改了内部类,不要丢失内部类的.class文件。
50 大数据量查询在前台显示时,要使用数据库分页,而不是Web服务器分页(一次查询所有记录然后在内存中分页)。
进行一定量的压力测试检测性能目标。
51 对系统中调用比较昂贵(调用频繁、性能影响较大)资源,需要考虑采取缓存的机制将这些资源缓存起来
分享到:
相关推荐
Java知识总结: Java是一种广泛使用的面向对象的编程语言,以其跨平台、安全性高和可移植性强的特点而闻名。Java的核心特性包括封装、继承、多态和抽象,这些构成了面向对象编程的基础。Java虚拟机(JVM)使得Java...
在Java知识总结中,我们涵盖了多个关键领域,包括基础语法、类库、并发处理、网络编程以及数据库访问等。 1. 面向对象:Java的核心特性之一就是面向对象编程(OOP)。它支持类、对象、封装、继承和多态等概念,使得...
毕向东老师作为Java教育领域知名的讲师,在他的Java知识总结中涵盖了Java编程语言的各个方面,包括基础知识、语法基础、开发环境配置以及面向对象编程等核心概念。为了帮助理解,我们接下来将详细解析毕向东Java知识...
### Java知识总结——关键知识点详解 #### 一、Java概述 - **面向对象特性**:Java是一种完全面向对象的编程语言,它继承了C++的一些面向对象特性,并且简化了一些复杂的概念,如去掉了指针操作,使得程序更加安全...
java知识总结.md
Java知识总结测试测试测试
【Java知识总结】 Java是一种由Sun Microsystems公司(后被甲骨文公司收购)于1991年开发的面向对象的编程语言,由James Gosling等人设计。最初名为Oak,1994年更名为Java。Java的核心理念是“Write Once, Run ...
这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...
此资料为本人培训整理的基础知识,相信对于初学java的人有一定的帮助
《JAVA核心知识点总结》 Java作为一款广泛应用的编程语言,其核心知识点对于开发者来说至关重要。本资料旨在为准备面试或者系统学习Java的人员提供一个全面的复习框架。以下是对其中部分关键知识点的详细阐述: **...
Java是一种广泛使用的高级编程语言,由...掌握这些基础知识对于理解和编写Java代码至关重要,同时也是面试中常见的考察点。通过深入学习和实践,可以逐步提高Java编程技能,从而在各种应用场景中有效利用Java进行开发。
Java后端核心知识总结:JVM篇 Java后端核心知识总结:并发编程篇 Java后端核心知识总结:MySQL篇 Java后端核心知识总结:Redis Java后端核心知识总结:RabbitMQ Java后端核心知识总结:Kafak Java后端核心知识总结:...
Java基础知识是学习Java编程的基础,涵盖了类、对象、数据类型、控制结构、异常处理、集合框架等多个方面。 1. **Java语法基础** - **变量与数据类型**:Java支持基本数据类型(如int, double, char等)和引用数据...
### Java基础知识总结(超级经典) #### 一、Java概述 - **起源与发展**:Java语言始于1991年Sun公司的James Gosling等人发起的Oak项目,最初目标是为了控制嵌入式设备,如有线电视交换盒和个人数字助理(PDA)。...
这是北京北京圣思园java培训的课堂笔记,记录了CoreJava的重点知识,在与java相关的职业笔试中考到的较多知识的记录。
JAVA基础知识总结 JAVA基础知识总结 JAVA基础知识总结