编程技巧 - 文章列表

  • 这些请求都进入服务器

    一、前言在软件开发过程中,总会遇到一些瓶颈。开发效率瓶颈,人员技术瓶颈,运行效率瓶颈,服务器瓶颈,磁盘IO瓶颈,CPU、内存瓶颈。这些都限制了我们的软件无法尽善尽美。我们的目的就是为了克服和改善这些难题,使软件比想象中更完美。二、具体问题在数据库或者是流程工作时,很多操作都是由于最初软件设计的原因,或者是当初一些产品设计的原因,或者因为时间紧迫,或者逼不得已必须如此做,然后被设计成同步操作,导致工作效率产生瓶颈,没有充分发挥CPU和内存的功能,但是软件工作起来慢的要死。这时候就需要重构代码了。三、解决方案在CPU和内存还有磁盘IO并没有充分利用的时候,就

  • 最大空间(-Xmx)是物理内存的1/4

    Java的内存溢出,主要是两方面的异常:堆内存溢出、非堆内存溢出。一、 java.lang.OutOfMemoryError: Java heap space。 Heap size 设置 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Genera

  • Java :ArrayList和LinkedList的大致区别

      一般大家都知道ArrayList和LinkedList的大致区别:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。  2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。  3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。  ArrayList 和LinkedList是两个集合类,用于存储一系列的对象引用(references)。例如我们可以用ArrayList来存储一系列的Stri

  • Java构造函数中显示的调用父类A的有参构造函数

    class Personpublic Person}class Student extends Personpublic Studentpublic Student}class Test}/=======================================输出如下:E:“JavaWorkjava Testst1:person无参数构造函数student 无参数的构造函数---------------------------st2:person无参数构造函数student 3 参数的构造函数---------------------------

  • 高响比优先是根据公式计算出优先权选出优先权最高的执行

    首先我们先介绍一下这三个算法,先来先服务是指按照进程到来的时间,谁先来谁执行。短作业优先是指作业服务时间短的先执行。高响比优先是根据公式计算出优先权选出优先权最高的执行,计算高响比优先权的公式:优先权=(等待时间+服务时间)/服务时间。计算中用到的三个公式:完成时间=上一个进程的执行时间+服务时间。程序中上一个服务时间是preFinished。周转时间=完成时间-到达时间。带权周转时间=周转时间/服务时间。下面是程序的代码:下面的是另一个类:\n

  • 对Java类加载器(Class Loader)认识

    本文主要总结一下我对Java类加载器(Class Loader)认识,如有不准确之处还望大侠不吝赐教!关键字:Java,类加载器(Class Loader)主要从如下几个部分进行介绍:类加载的过程 类加载器的层级 类加载器的操作原则 为什么要个性化类加载器 其它相关问题类加载的过程类加载器的主要工作就是把类文件加载到JVM中。如下图所示,其过程分为三步:加载:定位要加载的类文件,并将其字节流装载到JVM中; 链接:给要加载的类分配最基本的内存结构保存其信息,比如属性,方法以及引用的类。在该阶段,该类还处于不可用状态; 验证:对加载的字节流进行验证,比如格

  • windows xp下配置JDK环境变量

    windows xp下配置JDK环境变量: 1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:/java/jdk1.5.0_08;  2.安装完成后,右击“我的电脑”,点击“属性”; 3.选择“高级”选项卡,点击“环境变量”; 4.在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”; 5.JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:/java/jdk1.5.0_08,此路径下包括lib,bin,jre等文件

  • Java-栈与堆都是Java用来在Ram中存放数据的地方

    栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 栈的优势是,存取速度比堆要快,仅次于

  • 多核能带来性能的大幅增长-Java 构造高可扩展应用

    为什么性能没有增长? 多核能带来性能的大幅增长,这很容易通过简单的一些测试来观察到。如果我们写一个多线程程序,并在每个线程中对一个本地变量进行累加,我们可以很容易的看到多核和并行带来的成倍的性能提升。这非常容易做到,不是吗?然而,与我们的测试相反,我们很少在实际软件应用中看到这样完美的可扩展性。阻碍我们获得完美的可扩展性有两方面的因素存在。首先,我们面临着理论上的限制,其次软件开发过程中也经常出现实现上的问题。让我们看看 图 1 中的三条性能曲线:图 1. 性能曲线 作为追求完美的软件工程师,我们希望看到随着线程数目的增长程序的性能获得线性的增长,也就是

  • Java的内存管理就是对象的分配和释放问题

    1、Java的内存管理就是对象的分配和释放问题。 在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。 对象的释放是由GC决定和执行的。 在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线的方法简化了程序员的工作。但也加重了JVM的工作。这也是Java程序运行速度较慢的原因之一。 GC释放空间方法: 监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等。当该对象不再被引用时,释放对象。 2、内存管理结构 Java使用有向图的方式进行内存管