查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。本文详细介绍了常见的数据查找算法,比如顺序查找/线性查找、二分查找/折半查找、插值查找、斐波那契查找等,并且提供了相应的Java代码实现。
找到数组中点的位置 判断待查找的元素在中点值的左面还是右面 在中点值的左面时就让右边界等于中点 在中点值的右面时就让左边界等于中点 + 1 重复此过程,直到待查找的值等于终点值时退出,否则返回-1 public class BinarySearchOptimize { public static void main(String[] args) { int[] arr = new int[]{1, 2, 3, 4, 5}; int i = binarySearch(arr, 2); System.out.println("i = " + i); }
public static int binarySearch(int[] arr, int key) { int left = 0; int right = arr.length - 1; while(left < right) { int mid = left + (key - arr[left]) / (arr[right] - key) * (right - left);
if(arr[mid] > key) { right = mid; } else if(arr[mid] < key) { left = mid + 1; } else { return mid; } }
return -1; } }
作者:lightingsui 链接:https://juejin.cn/post/6874508671351685128 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
首先从系统设计层面,去看看是否有改进的可能,是不是可以引入一些设计模式、是不是可以引入缓存机制等方法,来屏蔽潜在的性能问题。
然后从代码层面,看看代码是否有优化的可能。
接着去看看 Java 程序运行的环境,也就是通过调整 JVM 的参数来提升一下性能。
接着到数据库层面,看看是否有调优的可能。
最后到操作系统层面,看看是否可以进行调优。
Java应用程序在Java虚拟机(JVM)中运行。因此,要优化Java应用程序,需要了解JVM操作过程。我以前在博客上写过理解JVM内部在这里,您可以找到关于JVM的深刻见解。
本文中有关JVM运行过程的知识主要是指垃圾收集(GC)和热点方面的知识。虽然您可能无法仅利用GC或Hotpot方面的知识来调优各种Java应用程序的性能,但这两个因素在大多数情况下都会影响Java应用程序的性能。
值得注意的是,从操作系统的角度来看,JVM也是一个应用程序进程。要创建一个JVM运行良好的环境,您应该了解OS如何将资源分配给进程。这意味着,要优化Java应用程序的性能,您应该了解操作系统或硬件以及JVM本身。
另一方面,Java语言领域的知识也很重要。理解锁或并发性以及熟悉类加载或对象创建也很重要。
当您执行Java应用程序性能调优时,您应该通过集成所有这些知识来处理它。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。