java优化总结

[STM32]HAL STM32F103 软件I2C读写MPU6050(附DMP库移植) 本文介绍了如何在STM32F103C8T6上通过I2C协议与MPU6050传感器通信并实现DMP功能。首先,使用STM32CubeMX配置项目,设置时钟和I2C接口。然后,编写软件I2C协议的读写函数与MPU6050交互。接着,移植DMP库并进行必要修改,获取加速度计和陀螺仪数据,并将其转换为欧拉角显示在OLED上。最后,利用Keil的逻辑分析仪监测I2C时序。 阅读详情
(1)减少对象生命周期
对象生命周期=销毁时间-创建时间
实际上减少对象生命周期有2个途径:尽早地销毁对象和尽量晚地创建对象
大多数人都只注意尽早地销毁对象,但是却很少人注意尽量晚地创建对象。特别是耗费内存比较大的对象应该尽量晚地被创建。只有真正需要的时候才开始创建它.除了对象以外,比如连接数据库。只有所有准备就绪的时候,才再连接数据库,使用完成数据库连接就立刻关闭。最短时间使用连接,包括数据流也一样
(2)线程启动得越早越好
当准备线程的工作都已经好了以后,创建线程,就要马上启动线程,线程启动得越早越能提前获取数据
(3)用字符代替单字符串
StringBuilder str=new StringBuilder();
那么str.append("m")不如str.append('m')快
(4)StringBuilder可以连续增加
StringBuilder的append方法返回自身可以继续增加,无需重新获取StringBuilder对象
Java code
1
2
3
4
StringBuilder str= new  StringBuilder();
str.append( "abc" );
str.append( "ddd" );

可以写成
Java code
1
2
3
StringBuilder str= new  StringBuilder();
str.append( "abc" ).append( "ddd" );

(5)无顺序遍历数组
其实有的时候遍历数组无关顺序,只需要把数组对象都遍历一遍即可
通常写法是
Java code
1
2
3
4
5
6
int [] a= new  int [ 10000 ];
for ( int  i= 0 ,len=a.length;i<len;i++){
     int  b=a[i];
           //然后处理
}

其实我在无关顺序遍历数组的时候我这么写:
Java code
?
1
2
3
4
5
6
int [] a= new  int [ 10000 ];
for ( int  i=- 1 ,len=a.length;++i<len;){
     int  b=a[i];
            //然后处理
}
有的时候这么写
Java code
1
2
3
4
5
6
int [] a= new  int [ 10000 ];
for ( int  i=a.length;i> 0 ;){
     int  b=a[--i];
            //然后处理
}

充分利用++i或者--i.最后一个不用计算len,直接--i可以取值,比较的时候与常数0比较

(6)不要有多余的操作
Java code
1
2
3
4
String a=getA(),b=getB();
if (a!= null &&b!= null ){
}

最好为
Java code
1
2
3
4
5
6
7
String a=getA();
if (a!= null ){
      String b=getB(); //这样a为null,就不需要获取b了。
      if (b!= null ){
      }
}

还有像
Java code
1
2
3
4
if (getValue()!= 2 &&getValue()!= 0 ){
...
}

直接写为
Java code
1
2
3
4
5
int  value=getValue();
if (value!= 2 &&value!= 0 ){
...
}
要调用方法浪费性能,其次是访问对象属性,最快是局部变量,利用下标访问数组系统还要判断越界问题也浪费性能.
(7)还有一些数组复制用'system.arraycopy (),还有使用局部变量要比使用全局变量快。大家可以看不变性的String类源代码就知道了
(8)关于锁java有读写锁还有尝试获取锁的功能,可以参看ReadWriteLock类
为什么一个“时间片”能折腾 Linux 十年? 时间片扩展不是抢占调度器的控制权,也不是提升优先级。在“非常短暂、非常确定”的用户态临界区内,避免线程被不必要地抢占。用户态自旋锁(user-space spinlock)无系统调用的极短临界区高并发、低延迟的数据结构操作RSEQ(Restartable Sequences)保护区间一旦线程在临界区被抢占,系统整体性能反而下降。线程 A 拿着一个用户态锁线程 B 被调度上来,开始自旋等这个锁但 A 因为时间片用完,被调度器切走CPU 白白空转,所有线程都在浪费时间。 阅读详情

相关推荐

Mac用户看过来!M1/M2芯片安装CiteSpace完整指南(从Homebrew到成功运行)

本文为Mac M1/M2芯片用户提供CiteSpace安装的完整指南,从Homebrew安装适配的Java环境到最终成功运行CiteSpace。详细步骤包括环境检查、Java配置、CiteSpace下载与优化,解决常见问题如内存分配、图形渲染和中文显示乱码,确保科研人员能顺利使用这一文献可视化工具。

weixin_42530458的博客 308

Java 对象的生命周期

Java对象的生命周期          在Java中,对象的生命周期包含下面几个阶段: 1.      创建阶段(Created) 2.      应用阶段(In Use) 3.      不可见阶段(Invisible) 4.      不可达阶段(Unreachable) 5.      收集阶段(Collected) 6.      终结阶段(Finalized) ...

weixin_33728708的博客 211

PADS安装教程(超详细)

声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录

qq_42057393的博客 5万+

java常见面试题——适用于2-5年后端开发面试(二)

1、说一说HashMap的实现原理 在JDK8中,HashMap底层是采用“数组+链表+红黑树”来实现的。 HashMap是基于哈希算法来确定元素的位置(槽)的,当我们向集合中存入数据时,它会计算传入的Key的哈希值,并利用哈希值取余来确定槽的位置。如果元素发生碰撞,也就是这个槽已经存在其他的元素了,则HashMap会通过链表将这些元素组织起来。如果碰撞进一步加剧,某个链表的长度达到了8,则HashMap会创建红黑树来代替这个链表,从而提高对这个槽中数据的查找的速度。 HashMap中,数组的默认初始

m0_63270506的博客 2679

AD从原理图到PCB超详细教程

我在学习AD的时候,看了网上很多教程,但是东西很杂,有很多条理不清而且废话很多,所以相信大家学习的时候也是遇到一样的困难。我就特地写一篇帖子,整理了一下AD从画原理图开始一直到画完PCB文件的所有步骤,一方面是供大家参考学习,另一方面可以方便我自己学习记忆更加深刻。我用的版本是AD16中文版,大家用新的版本AD20或者AD22应该操作都是差不多的。

人生寂寞如雪 18万+

VS2015编译配置GDAL(图文并茂、超详细!!!)

文章目录一、GDAL介绍二、下载GDAL三、修改源代码四、工具命令提示符操作五、编译GDAL六、安装GDAL七、在VS2015的项目中配置GDAL八、添加环境变量九、测试是否配置成功 一、GDAL介绍 GDAL(Geospatial Data Abstraction Library)是一个在XMIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。OGR是GDAL项目的一个分支,功能与GDAL类似,只不过它提供对矢量数据的支持。因此

weixin_46196863的博客 3758

谈谈Java对象的生命周期

经过前面的分析 ,我们现在来看一下创建的对象到底是什么东西,并且完整的总结一下一个对象从创建到回收到底经过了哪些阶段。

纵横千里 捭阖四方 的专栏 861

【翼型】基于Matlab的NACA翼型气动性能仿真与优化【附源码】

本文详细介绍了如何使用Matlab进行NACA翼型的气动性能仿真与优化。内容涵盖从生成NACA翼型坐标、利用面板法快速估算升阻力,到进阶的粘性流模拟与优化设计入门。通过清晰的代码示例和分步指南,帮助读者掌握基于Matlab的翼型分析与优化流程,为飞行器或叶片设计提供实用工具和方法。

weixin_29032489的博客 412

对象的生命周期

在JVM的运行空间中,对象的生命周期大概可以分为7各阶段: 创建阶段(creation) 应用阶段(Using) 不可见阶段(invisible) 不可到达阶段(Unreachable) 可收集阶段(Collected) 终结阶段(Finalized) 释放阶段(Free) 创建阶段(creation) 在创建对象阶段,系统要通过下面步骤,完成对象的创建过程: 1).为对象分配存储空间 2).开始构造对象 3)递归调用其他超类的构造方法(递归调用该类所扩展的所有父类的构造方法) 4

sayhitoloverOvO的博客 1126

Unable to negotiate with XXXX port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

打开ssh_config此文件,滑动到最下面,新增自己git主机地址(这里我直接默认*)执行命令 git clone git@xxxxxxxxxxxxx.git。代码仓库已经添加了ssh公钥之后,克隆代码到本地时就报了这个问题。首先是找到git安装目录(根据自己安装时选项,找到这个目录)再进入ssh目录,找到 ssh_config 配置文件。配置完成后,保存配置文件后再次去clone代码。直接复制下面这一段到文件中最底部位置即可。然后进入 etc目录,找到ssh目录。终于可以克隆下来了。

萌兔兔MMQ!! 3359

手把手教你用BQ Studio给BQ40Z50电量计“做体检”:从Golden Learning到精度验证的全流程实操

本文详细介绍了如何使用BQ Studio对BQ40Z50电量计进行全流程调试,从Golden Learning到精度验证。通过硬件连接、参数配置和优化技巧,帮助工程师提升电池管理系统的精度和性能,适用于BMS开发和电量计校准的实际应用场景。

weixin_30824599的博客 452

Java 对象生命周期和类生命周期

Java 对象生命周期 在JVM运行空间中,对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。上面的这7个阶段,构成了 JVM中对象的完整的生命周期。下面分别介绍对象在处于这7

huangzhen0914的专栏 1万+

RK3588,V4l2 读取Gmsl相机, Rga yuv422转换rgb (dma), 实现零拷贝

RK3588, 使用V4l2 读取 gmsl 相机,获得yuv422格式图像, 使用 rga 转换 rgb 图像。减少cpu占用率. 内存管理方式采用 dma,实现零拷贝.

J。 1263

Java中的常量优化机制

问题抛出:静态常量可以再编译器确定字面量,但常量并不一定在编译期就确定了, 也可以在运行时确定.所以Java针对某些情况制定了常量优化机制。 常量优化机制:给一个变量赋值,如果等于号的右边是常量的表达式并且没有一个变量,那么就会在编译阶段计算该表达式的结果,然后判断该表达式的结果是否在左边类型所表示范围内,如果在,那么就赋值成功,如果不在,那么就赋值失败。 但是注意如果一旦有变量参与表达式,那么就...

xxx 4841

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java编译阶段的优化

一、常量折叠编译器在编译时会对常量表达式进行计算,并将结果替换为常量值。例如,“int a = 2 + 3;” 会被优化为 “int a = 5;”,这样在程序运行时就不需要再进行加法运算,可以提高程序的执行效率。二、方法内联如果一个方法被频繁调用,并且方法体比较小,编译器可能会将该方法的代码直接插入到调用处,从而减少方法调用的开销。比如,一个简单的获取数组长度的方法,如果在程序中多处被调用,编译器可能会将这个方法内联到调用它的地方,避免了方法调用的栈帧创建和参数传递等操作。三、逃逸分析。

AlbenXie的博客 1693

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java 最优化_Java 性能优化的五大技巧

要对你的 java 代码进行优化,需要理解 java 不同要素之间的相互作用,以及它是如何与其运行时的操作系统进行交互的。。。让我们开始吧性能优化取决于多个因素,包括垃圾收集、虚拟机和底层操作系统(OS)设置。有多个工具可供开发人员进行分析和优化时使用,你可以通过阅读 Java Tools for Source Code Optimization and Analysis 来学习和使用它们。如果你...

weixin_31845243的博客 874

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

如何优化 Java 应用的性能

Java 应用的性能优化涉及多个层面,包括代码优化、JVM 调优、数据库优化和并发优化等。通过细致地分析应用中的瓶颈,并采取针对性的优化措施,能够大大提升系统的响应速度和处理能力。如果你正在开发高性能的 Java 应用,建议定期使用性能分析工具进行监控,及时发现并解决性能问题。同时,不要忽视基础设施层面的优化,如数据库索引、缓存使用和多线程/异步编程等。通过上述优化方法,你可以有效提升 Java 应用的性能,让你的系统更加高效、稳定,并能够应对更高的负载。

m0_54187478的博客 2773

java优化技巧_Java 性能优化的五大技巧

Java 性能优化的五大技巧java的性能优化可是一个大课题, 要对你的 java 代码进行优化,需要理解 java 不同要素之间的相互作用,以及它是如何与其运行时的操作系统进行交互的。下面小编给大家介绍Java 性能优化的五大技巧,欢迎阅读!性能优化取决于多个因素,包括垃圾收集、虚拟机和底层操作系统(OS)设置。有多个工具可供开发人员进行分析和优化时使用,你可以通过阅读 Java Tools f...

weixin_36041020的博客 320

java 编译优化

java 编译优化java编译泛型擦除Integer. Double 自动装箱与拆箱foreach循环遍历变长参数int short 优化 java编译 java编译器为我们做了很多优化,比如在java中泛型并不是真正的泛型,在编译的时候会进行泛型擦除,使用的时候再进行类型转换.或者Integer自动装箱和拆箱.foreach循环遍历等等. 泛型擦除 在java中泛型并不是真正的泛型,因为有一个j...

申老皮的博客 1406

Java 锁优化详解

锁优化是提升并发程序性能的重要手段,Java 提供了多种锁优化机制,如锁粗化、锁消除、偏向锁、自旋锁等。通过合理使用这些优化技术,开发者可以减少锁的开销,提高程序的并发性能。在实际开发中,选择合适的锁策略和优化方法至关重要。对于读多写少的场景,可以使用读写锁;对于频繁访问的共享资源,可以使用无锁的并发类。理解锁优化的原理和最佳实践,可以帮助开发者编写高效的并发程序。

m0_38053034的博客 1192

Java反射优化

公司转正答辩的时候被问到,在利用反射的时候,如果并发量比较大的情况下,如何进行优化,当时比较紧张,大脑一片空白,时候回来查找了一些资料,在这里做一些总结 首先先了解一下,java的反射为什么慢 反射Field/get 跟着源码看下,最后是使用FieldAccessor来获取的: 都是写使用Unsafe类来访问的,Unsafe类是Java中可以像C语言

linkun3299的专栏 1814

Java性能优化之——多核平台下的Java优化

多核平台下的Java优化         Java 利用多核技术也带来了一些问题,主要是多线程共享内存引起了。目前内存和 CPU 之间的带宽是一个主要瓶颈,每个核可以独享一部分高速缓存,可以提高性能。         现在多核 CPU 是主流。利用多核技术,可以有效发挥硬件的能力,提升吞吐量,对于 Java 程序,可以实现并发垃圾收集。但是 Java 利用多核技术也带来了一些问题,主要是多线...

KiTong的专栏 1537

java内存优化

1、java内存如何优化 了解jvm内存管理看这里:jvm是如何管理内存的 了解堆内存看这里:java堆内存是什么样的 Java内存的优化主要是通过合理的控制GC来实现,主要原则: 1. 不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况(因为GC过后这个值是不会变化的)。 2. 使用JDK提供的内存查看工具,比如JConsole和J

一个人的博客 1959

性能优化实践总结——JAVA

从JVM、高并发、数据库、缓存、生成环境实践等多方面总结了Java应用程序的性能优化实践方案!

码说芯语的博客 3585

Java代码优化指南

代码优化是通过改进算法和数据结构,使代码运行得更快、更节省内存、更易于维护。在这方面,主要可以从算法优化、数据结构优化和代码层面的优化入手。本文将详细介绍这些优化方法,并通过具体示例说明如何在Java中进行代码优化。

微笑听雨 6367

Java代码如何进行优化?

Java代码优化是Java编程开发很重要的一个步骤,Java代码优化要注重细节优化,一个两个的细节的优化,产生的效果不大,但是如果处处都能注意代码优化,对代码减少体积、提高代码运行效率是有巨大帮助的,还能在一定程度上避免未知错误,常用的Java代码优化细节如下:1. 为类、方法指定final修饰符为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写,如果指...

lmseo5hy的博客 4150
上一篇: java时间处理
javaBenface
博客等级 码龄15年 21粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值