java 备忘录

 

  • Lambda表达式在大多数虚拟机中采用invokeDynamic指令实现,相对于匿名内部类在效率上会更高一些。List<User> userList = ...;Collections.sort(userList, (user1, user2) -> {    Long userId1 = user1.getId();    Long userId2 = user2.getId();    ...    return userId1.compareTo(userId2);});
  • 2.5.尽量指定类的final修饰符

    为类指定final修饰符,可以让该类不可以被继承。如果指定了一个类为final,则该类所有的方法都是final的,Java编译器会寻找机会内联所有的final方法。内联对于提升Java运行效率作用重大,具体可参见Java运行期优化,能够使性能平均提高50%。

    反例:public class DateHelper { }正例:public final class DateHelper { ...}注意:使用Spring的AOP特性时,需要对Bean进行动态代理,如果Bean类添加了final修饰,会导致异常

3.1.把跟类成员变量无关的方法声明成静态方法

public static int getHeight(){}

3.4.协议方法参数值非空,避免不必要的空指针判断

协议编程,可以@NonNull和@Nullable标注参数,是否遵循全凭调用者自觉。

public static boolean isValide(@NotNull User user){..... return true}

3.5.协议方法返回值非空,避免不必要的空指针判断

协议编程,可以@NonNull和@Nullable标注参数,是否遵循全凭实现者自觉。

public interface OrderService{

@NonNull

public User getUser(int userID)

}

被调用方法已支持判空处理,调用方法无需再进行判空处理

UserDO user = JSON.parseObject(value, UserDO.class);

3.7.尽量避免不必要的函数封装

方法调用会引起入栈和出栈,导致消耗更多的CPU和内存,应当尽量避免不必要的函数封装。当然,为了使代码更简洁、更清晰、更易维护,增加一定的方法调用所带来的性能损耗是值得的。

3.8.尽量指定方法的final修饰符

方法指定final修饰符,可以让方法不可以被重写,Java编译器会寻找机会内联所有的final方法。内联对于提升Java运行效率作用重大,具体可参见Java运行期优化,能够使性能平均提高50%。

注意:所有的private方法会隐式地被指定final修饰符,所以无须再为其指定final修饰符。

4.3.尽量使用移位来代替正整数乘除

 

用移位操作可以极大地提高性能。对于乘除2^n(n为正整数)的正整数计算,可以用移位操作来代替。

 int count=a < <10; 2的十次方 1024

4.4.提取公共表达式,避免重复计算

4.5.尽量不在条件表达式中用!取反 if (!(a >= 10)) {     if (a < 10) {

if-else语句,每个if条件语句都要加装计算,直到if条件语句为true为止。switch语句进行了跳转优化,Java中采用tableswitch或lookupswitch指令实现,对于多常量选择分支处理效率更高。经过试验证明:在每个分支出现概率相同的情况下,低于5个分支时if-else语句效率更高,高于5个分支时switch语句效率更高。

5.2.尽量使用字符替换字符串

 

字符串的长度不确定,而字符的长度固定为1,查找和匹配的效率自然提高了。

String target=soure.repalce(':',‘+’)

6.1 不要使用循环拷贝数组,尽量使用System.arraycopy拷贝数组

7.7.尽量使用HashSet判断值存在

在Java集合类库中,List的contains方法普遍时间复杂度是O(n),而HashSet的时间复杂度为O(1)。如果需要频繁调用contains方法查找数据,可以先将List转换成HashSet。

Hastable 的查找性能 == HashSet 的查找性能,用不了 HashSet 可以用 Hashtable 替换。

8.2.尽量避免在循环中捕获异常

9.2.尽量重复使用同一缓冲区  setLenth缓冲区从0开始

9.3.尽量设计使用同一缓冲区

为了提高程序运行效率,在设计上尽量使用同一缓冲区。

9.4.尽量使用缓冲流减少IO操作

 

使用缓冲流BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream等,可以大幅较少IO次数并提升IO速度。

10.1.在单线程中,尽量使用非线程安全类

 

使用非线程安全类,避免了不必要的同步开销。

 

反例:

  •  
  •  
StringBuffer buffer = new StringBuffer(128);buffer.append("select * from ").append(T_USER).append(" where id = ?");

 

正例:

  •  
  •  
StringBuilder buffer = new StringBuilder(128);buffer.append("select * from ").append(T_USER).append(" where id = ?");

 

10.2.在多线程中,尽量使用线程安全类

 

使用线程安全类,比自己实现的同步代码更简洁更高效。

反例:

private volatile int counter = 0;

public void access(Long userId) {    synchronized (this) {        counter++;    }    ...}

 

正例:

private final AtomicInteger counter = new AtomicInteger(0);

public void access(Long userId) {    counter.incrementAndGet();    ...}同步代码块是有性能开销的,如果确定可以合并为同一同步代码块,就应该尽量合并为同一同步代码块。// 处理单一订单
public handleOrder(OrderDO order) {    ...}// 处理所有订单public synchronized void handleOrder(List<OrderDO> orderList) {    for (OrderDO order : orderList) {        handleOrder(order);    }}

10.5.尽量使用线程池减少线程开销

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
Java备忘录课程设计是一个以Java语言为基础,设计并实现一个备忘录应用的课程项目。备忘录应用通常用于用户记录和管理重要的信息和事件,帮助用户在日常生活中更有效地组织和安排时间。 在设计这个备忘录应用时,我们需要考虑以下几个方面。 首先,我们需要设计一个用户界面,使用户能够方便地进行备忘录的添加、编辑和删除操作。可以使用Java的图形界面库,如Swing或JavaFX来实现用户界面。 其次,我们需要设计一个数据模型,用于存储备忘录的相关信息。可以使用Java的对象和集合来实现数据模型,在其中定义备忘录的属性(如标题、内容、日期等)以及相应的操作方法(如添加、编辑和删除备忘录)。 然后,我们需要实现备忘录的数据持久化功能,以确保备忘录的信息能够长期保存。可以使用Java的文件操作或者数据库等技术来实现数据持久化。 此外,我们还可以考虑为备忘录应用添加一些其他的功能,如备忘录的分和标签、提醒功能、搜索和过滤功能等,以提高用户体验。 最后,在实现备忘录应用的过程中,我们还应该注重代码的可维护性和可扩展性。可以使用面向对象的设计原则和设计模式,如单一职责原则、开闭原则、工厂模式等来提高代码的质量和灵活性。 总之,Java备忘录课程设计是一个通过使用Java语言和相关技术实现一个备忘录应用的项目。通过这个项目,我们可以学习和应用Java的面向对象编程思想、图形界面编程和数据持久化等技术,提升我们的软件开发能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值