java学习笔记(2) java内存和GC

背景知识

Java GC(Garbage Collection,垃圾收集,垃圾回收)机制:
1. 确定哪些内存需要回收,确定什么时候需要执行GC,如何执行GC。
2. 该机制对JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(Nerver Stop)的保证JVM中的内存空间,防止出现内存泄露和溢出问题。

关于JVM,需要说明一下的是,目前使用最多的Sun公司的JDK中,自从1999年的JDK1.2开始直至现在仍在广泛使用的JDK6,其中默认的虚拟机都是HotSpot。2009年,Oracle收购Sun,加上之前收购的EBA公司,Oracle拥有3大虚拟机中的两个:JRockit和HotSpot,Oracle也表明了想要整合两大虚拟机的意图,但是目前在新发布的JDK7中,默认的虚拟机仍然是HotSpot,因此本文中默认介绍的虚拟机都是HotSpot,相关机制也主要是指HotSpot的GC机制。

继续阅读“java学习笔记(2) java内存和GC”

(转)搜索引擎索引数据结构和算法

原文链接

最近一直在研究Sphinx的工作机制,在[搜索引擎]Sphinx的介绍和原理探索简单地介绍了其工作原理之后,还有很多问题没有弄懂,比如底层的数据结构和算法,于是更进一步地从数据结构层面了解其工作原理。在网上搜了很多资料,发现没有很多介绍这方面的文章,后来找到了一本书,《这就是搜索引擎》,拜读了本书的第三章,介绍了主流搜索引擎用的数据结构及其工作原理,sphinx使用的数据结构也是一样的,用的也是倒排索引。

继续阅读“(转)搜索引擎索引数据结构和算法”

oracle释放锁操作

  1. 释放锁表

    • 查看锁表进程SQL语句1:
    select sess.sid, 
       sess.serial#, 
       lo.oracle_username, 
       lo.os_user_name, 
       ao.object_name, 
       lo.locked_mode 
       from v$locked_object lo, 
       dba_objects ao, 
       v$session sess 
    where ao.object_id = lo.object_id and lo.session_id = sess.sid; 
    
    • 查看锁表进程SQL语句2:
    select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID; 
    
    • 杀掉锁表进程:
      如有記錄則表示有lock,記錄下SID和serial# ,將記錄的ID替換下面的738,1429,即可解除LOCK
      alter system kill session '738,1429';

java学习笔记(1)

类加载

  • 当程序创建了第一个对类的静态成员的引用(如类的静态变量、静态方法、构造方法——构造方法也是静态的)时,才会加载该类。
  • RTTI
    • 向上转型或向下转型(upcasting and downcasting),在java中,向下转型(父类转成子类)需要强制类型转换
    • Class对象(用了Class对象,不代表就是反射,如果只是用Class对象cast成指定的类,那就还是传统的RTTI)
    • instanceof或isInstance()

继续阅读“java学习笔记(1)”