`
eriol
  • 浏览: 407944 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
Java程序需要编译,但是没有直接编译成机器语言,而是编译成.class字节码再由JVM以解释方式执行。
经常听说SQLServer最难的部分是性能优化,不禁让人感到优化这个工作很神秘,这种事情只有高手才能做。很早的时候我在网上看到一位高手写的博客,介绍了SQL优化的问题,从这些内容来看,优化并不都是一些很复杂的问题,掌 ...
1.什么是索引?   索引类似于书的目录,主要用于提高查询效率。在按条件查询的时候,数据库会先查询索引,再通过索引找到相关的数据。因此,索引记录了对某个关键词指定到不同的文件,或者文件里的不同位置,当然索引自身也是通过文件来保存的。     2.索引的类型   有两种基本的索引结构,即索引文件的保存方式。一个是顺序索引,就是根据值的顺序排序的(这个文件里面的值就是为其建索引的字段值,它被顺序地放在索引文件里面);另外一个是散列索引,就是将值平均分配到若干散列桶中,通过散列函数定位的。   2.1 顺序索引 如果被索引的字段本身按照一定的顺序排序,那么这种索引叫做聚集索引。否 ...
在网络编程中,最基本的操作就是在两台机器之间建立点对点通信,Socket能够帮助我们实现这个功能。其实现原理为: 在服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求;在客户连接后,产生会话;在完成会话后,关闭连接。  在客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。   服务端代码 ...
我们知道Java是一种平台无关性的语言,平台对于上层的java代码来说是透明的,所以在多数时间我们是不需要调用本地方法,但是假如你遇到了以下情况,你可能就需要使用Java调用本地方法了: 你的Java代码需要得到一个文件的 ...
最近用httpclient做performance testing时,发现当线程加到150时服务端就会抛出socket资源用尽的错误,根本没法再往上加,响应的速度也是相当的慢,后来经过研究,发现在server.xml中修改以一部分,增加节点数目,可以很好的提高性 ...
先给出一个问题,下面程序的输出结果是多少?   import java.util.Date; public class Test extends Date{ public static void main(String[] args) { new Test().test(); } public void test(){ System.out.println(super.getClass().getName()); } }   你可能会认为是Date,但是实 ...
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。     2、Java有没有goto? java中的保留字,现在没有在java中使用。     3、说说&和&&的区别。 &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。 &&还具有短路的功能,即如果第一个表 ...
使用Java实现一些文件操作。   import java.io.*; public class FileOperator { public FileOperator() { } /** * Create new folder * @param folderPath String as c:/test */ public void newFolder(String folderPath) { try { File myFilePath = new File(folderPath); if (!myFilePath ...
在JDK1.5中,线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler) 其中: corePoolSize: ...
线程池的作用:        线程池作用就是限制系统中执行线程的数量。      根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;如果线程少了会浪费系统资源,多了又会造成系统拥挤效率不高。用线程池控制线程数量,使得其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有任务等待进程,则线程池中的线程处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了;否则进入等待队列。     为什么要用线程池:         减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。也可以根据系统的承 ...
当调用start()后,此线程就处于就绪状态,但并没有运行。之后该线程通过调用方法run()来完成操作。方法run()称为线程体,它包含了要执行的这个线程的内容。run()方法运行结束后,该线程终止,CPU再运行其它线程。   如果直接用run()方法,相当于只是调用一个普通的方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条, 并没有创建新的线程来运行run()中的代码。
1. 内部类的对象隐含一个外部类的对象引用,可以直接引用外部类的方法和属性,此外内部类不能定义静态的属性和方法,创建内部类对象必须依赖于一个外部对象。   2. 嵌套类不能直接引用外部类的non-satic属性和方法,创建嵌套类对象时不依赖外部类对象。

JVM垃圾回收机制

    博客分类:
  • Java
1. JVM的gc概述       gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。     在充分理解了垃圾收集算法和执行过程后,才能有效的优化它的性能。有些垃圾收集专用于特殊的应用程序。比如,实时应用程序主要是为了避免垃圾收集中断,而大多数OLTP应用程序则注重整体效率。理解了应用程序的工作负荷和jvm支持的垃圾收集算法,便可以进行优化配置垃圾收集器。     垃圾收集的目的在于清除不再使用的对象。gc通过确定对象是否被活动对象 ...
1. 给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url?   两个50亿个url的文件,大概有50 0000 0000 * 64 B = 640G的大小,肯定不能全部读入内存,可以分组解决。准备1030个桶,读 ...
Global site tag (gtag.js) - Google Analytics