【再次讨论】【转】Java程序性能和速度优化实例

例一:应用具有I/O Buffer功能Class

  import java.io.*;
  public class IoTest
  {
   public static void main(String args[])
   {
    try
    {
     FileReader fr = new FileReader(args[0]);
     BufferedReader br = new BufferedReader(fr);
     while ( br.readLine() != null )
     {
      System.out.println(" The file content are :" + br.readLine());
     }
     fis.close();
    }
    catch ( IOException ioe )
    {
     System.out.println("The I/O exception is " + ioe);
    }
   }
  }
   
  在上例中,程序使用了具有Buffer功能的Class,使得Disk I/O的读取速度大大提高。BufferedReader 是取代DataInputStream 而提高读写速度的Java Class。在新的Java版本中,已不建议使用DataInputStream,因为其读写是基于字符为单位的。
   
  例二:字符串运算处理
   
  public class StringOperation
  {
   public static void main(String args[])
   {
    String sqlQuery = null;
    String sqlCondition = " conditionC = conditionD ");
    StringBuffer sb = new StringBuffer();
    sb.append("select * from database table where ");
    sb.append(" conditionA = conditionB and ");
    if ( ! sqlCondition.equals(null)
    {
     sb.append(sqlCondition);
    }
    else
    {
     sb.append(" conditionE = conditionF ");
    }
    sqlQuery = sb.toString();
    // Then connect to the database then excute the database query
    // .......
   }
  }
   
  在上例中,使用StingBuffer class来完成数据库查询建立,避免使用String class的"+="操作,以减少JVM在内存中创建新的对象,占用资源,增加JVM回收资源负担。读者可以使用Java Proflier功能来具体比较使用不同的String操作,JVM需要完成多少资源回收和运行时间。因此在JVM中对String直接进行"+="是非常昂贵的运算。

  例三:处理昂贵的数据库初始化

  目前许多网站可以透过Web服务器查询数据库,如何提高数据库查询速度成为许多程序员关注的问题。在Java Servlets或JSP中可以通过init() 或Jspinit()来实现,以下是一具体Java Servlet与数据库对话实例。
    
  import java.io.*;
  import java.sql.*;
  import javax.servlet.*;
  import javax.servlet.http.*;
   
  public class DatabaseServlet extends HttpServlet
  {
   public void init( ServletConfig conf) throws ServletException
   {
    super.init(conf);
    Connection conn = null;
    try
    {
     Class.forName("sun.jdbc.odbc.JdcOdbcDriver");
     Conn = DriverManager.getConnection("jdbc:odbc:yourDSN,"","");
    }
    catch ( SQLException sqle )
    {
     System.err.println("your error exception is " + sqle);
    }
    catch ( ClassNotFoundException cnfe )
    {
     System.err.println("your error exception is " + cnfe);
    }
   }
   public void doGet( HttpServletRequest req, HttpServletResponse res) throws
   ServletException, IOException
   {
    res.setContentType("text/html");
    ServletOutputStream out = null;
    // Your HTML formatter
    out.println(" Your HTML");
    try
    {
     Statement stmt = conn.creatStatement();
     ResultSet rs = stmt.excuteQuery("select * from yourDatabasetable ");
     while ( rs.next() )
     {
      // Processing your data
     }
    }
    catch ( SQLException sqle )
    {
     out.println("The SQL error is " + sqle);
    }
    // output your processing result to HTML page
    out.println(" your HTML");
    rs.close();
    stmt.close();
   }
   public void destroy()
   {
    try
    {
     conn.close();
    }
    catch ( SQLException sqle )
    {
     System.err.println("your SQL error is " + sqle);
    }
   }
  }
   
  在上例中,由于Java Servlet运行机制的特点,将昂贵的数据库初始化运算在整个Servlet运行中仅只调用一次的init()中完成,以减少不必要的重复性数据库运算。读者可以根据应用的具体情况,甚至将数据库的Statement和ResultSet部分移至init()中完成,或者调用PreparedStatement与CallableStatement来优化数据库的运算。同时,对数据库的连接的关闭由destroy()一次性完成

深入探索 Java AOT 编译与 Native Image:提升 Java 启动速度性能 AOT(Ahead-of-Time)编译是一种在应用启动之前将字节码换为机器代码的技术,与 JVM 的即时编译(JIT)不同,JIT 会在程序运行时进行编译,而 AOT 编译则是在编译时就将所有必要的代码预编译成机器代码。这样可以显著减少应用的启动时间,并且在某些情况下能进一步提高运行时性能Java 从 JDK 9 开始引入了JEP 295,使得 AOT 编译成为可能。 阅读详情

相关推荐

FPGA实战:基于Basys3的多功能数字钟设计与实现

本文详细介绍了基于Basys3开发板的多功能数字钟设计与实现过程,涵盖FPGA开发、SystemVerilog编程及7段数码管驱动等关键技术。通过模块化设计实现时钟分频、时间计数、按键处理等功能,并提供了优化显示驱动调试技巧,帮助开发者快速掌握数字电路设计核心概念。

weixin_29186249的博客 640

SQL工具(自动生成StringBuilder sb=new StringBuilder())

自动生成如下格式的SQL语句;很方便哦! StringBuilder sb=new StringBuilder(); sb.Append("SELECT * FROM Table \n"); sb.Append("WHERE A="B" \n"); return sb.ToString();

Ubuntu22.04安装ros(一键搞定)

然后发现可以一键安装,话不多说,直接终端输入如下指令。回车之后系统会自动安装ros。

m0_47313541的博客 7373

Java性能优化的48条+七个案例

Java性能优化的50条 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问; 第二,控制实例的产生,以达到节约资源的目的; 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 尽量避免随意使用静态变量 ...

晓宇博客 2281

Java程序性能优化

一、避免在循环条件中使用复杂表达式在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。例子:import java.util.Vector;class CEL {    void method (Vector vector) {        for (int i = 0; i             ; // ...    }

845

Java调优案例分析与实战

本章内容将着重考虑如何在应用部署层面去解决问题,我们主要探讨如何在不改变已有软硬件版本规格的前提下, 调整部署配置策略去解决或者缓解问题。

怪咖@的博客 2917

上线半天下载量破100W 美团某哥的Java性能调优实战手册,超详细

俗话说,知己知彼百战百胜,想要克服“性能优化”这一难题,先要了解性能优化的特点,并抓住其关键本质。作为面试必考内容,很多应聘者反映说面试官的一些问题会让其陷入模棱两可的境地,不知如何作答,比如很多人就搞不懂缓冲与缓存的区别。这种问题的答案,只能靠体系化的整理,依靠零零散散的知识是行不通的。你需要具备触类旁通的能力,才能对面试的散点知识既有深度又有广度地做进一步升华,才会让面试官眼前一亮。性能优化是个系统性工程,对工程师的技术广度深度都有要求。它不仅需要你精通编程语言,还需要深刻理解。

the shy 170

Java虚拟机-调优案例

如何进行虚拟机性能调优?知识,工具,数据,经验。首先要有基础的Java虚拟机知识,借助专业的监控工具,监控的数据,再融合自己已有的经验做出问题定位,并解决问题。1.案例一场景:一个考核系统,员工可以浏览自己的所有考核项,有图表展示。环境:内存64G。问题:经常有用户反映长时间出现卡顿的现象。处理思路:通过内存监控工具发现经常会发生FullGC,由于系统中经常创建大对象,所以直接会在老年代分配内存...

qq_22866497的博客 645

Java程序性能速度优化实例

          Java程序性能速度优化实例   David Lee 例一:应用具有I/O Buffer功能Classimport java.io.*;  public class IoTest {public static void main(String args[]) { 

iBreathe的专栏 1205

Java接口性能优化实例

Java接口性能优化实例 文章目录Java接口性能优化实例概述用到的工具环境工具环境找瓶颈 概述 最近公司的下单接口有些慢,老板担心无法支撑双11,想让我优化一把,但是前提是不允许大改,因为下单接口太复杂了,如果改动太大,怕有风险。另外开发成本测试成本也非常大。对于这种有挑战性的任务,我向来是非常喜欢的,因为在解决问题的过程中,可以学习到很多东西。 当时我只是知道下单接口慢,但是没人告诉我慢在...

少年乖 7102

Java 性能优化:减少内存使用与提升程序执行速度

Java 性能优化是一个复杂的过程,涉及内存管理、程序执行速度资源利用等多个方面。通过合理地优化对象创建、内存泄漏、数据结构选择、计算逻辑算法等,我们可以有效地提升 Java 应用的性能。记住,性能优化是一个持续的过程,我们需要不断地根据实际的应用场景进行调整优化,选择合适的策略工具。希望本文所分享的优化技巧能够帮助你提高 Java 程序性能,为你的项目提供更高效、更稳定的基础。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1127

Java面试-如何优化 Java 应用的启动速度

摘要:《Java面试200问》系列探讨如何优化Java应用启动速度,从JVM参数调优、Spring Boot懒加载到GraalVM Native Image等方案。文章分析启动慢的根源(类加载、反射、JAR膨胀),提供类加载策略(懒加载vs预加载)、Spring Context初始化优化、微服务架构适配等实战技巧,并附监控工具(Arthas/JFR)面试应答策略,帮助开发者实现"秒级启动"目标。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

java开发——程序性能优化方法

jvm(Java Virtual Machine),java虚拟机Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。jvm的内存模型:堆的垃圾回收分区:

weixin_52115456的博客 2574

如何优化Java程序性能

优化Java程序性能是一个多方面的任务,它涉及到代码设计、算法选择、内存管理、并发处理等多个方面。

wudixiuluo的博客 1311

优化Java应用程序性能的技巧策略

通过选择合适的数据结构算法、避免频繁的对象创建销毁、合理使用并发编程、垃圾回收调优、使用高效的I/O操作、进行代码优化以及进行性能测试调优,可以显著提高Java应用程序性能响应速度。避免频繁的对象创建销毁: Java的垃圾回收机制会自动管理对象的创建销毁,但频繁的对象创建销毁会增加垃圾回收的负担。设置合适的堆大小、调整垃圾回收器的参数、减少垃圾对象的创建等方式可以优化垃圾回收的性能。使用合适的I/O操作方式,如使用缓冲区、使用非阻塞I/O、使用NIO等,可以提高I/O操作的效率。

ZWH的博客 880

性能优化实践总结——JAVA

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

码说芯语的博客 3567

正点原子探索者STM32407+MLX90640+LCD

基于正点原子探索者STM32F407,双线性插值算法,直接在原子的屏幕上显示,2.8,3.5,4.3都可以直接显示不需要改任何代码

上一篇: 有关java远程读取文件的方法
下一篇: 有关java的断言
iteye_2180
博客等级 码龄8年 1粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值