上一页 1 ··· 4 5 6 7 8 9 10 11 下一页
摘要: ObjectPoolObjectPool 定义了一个简单的池接口 BaseObjectPool以下三个类的父类 A simple base implementation of ObjectPool. Optional operations are implemented to either do nothing, return a value indicating it is unsupported or throw UnsupportedOperationException. GenericObjectPool: 采用LIFO/FIFO结构实现ObjectPool接口。池的默认行为是一个LI 阅读全文
posted @ 2011-06-02 15:29 跳刀的兔子 阅读(9334) 评论(0) 推荐(2) 编辑
摘要: java GC工作在分代的模型上。大多数的对象要么很快的死亡,要么持续较长的时间。例如,方法栈中创建的对象只会持续几毫秒时间,而缓存中的对象会持续几分钟。既然对象有两种不同的什么周期,直觉认为,使用不同的垃圾收集算法也许能够在不同的周期中更好的完成工作。所以,JVM把堆空间拆封为两个不同的区域,新生代,旧生代。当对象刚开始创建的时候,会被分配到新生代。当对象在新生代中经过多次gc后,依然存活时,就假设这个对象将持续较长时间,就把这个对象复制到旧生代中去。JVM加上启动参数-XX:+UseParNewGC 和 -XX:+UseConcMarkSweepGC将为新生代启用Parallel New 阅读全文
posted @ 2011-06-02 15:12 跳刀的兔子 阅读(2430) 评论(0) 推荐(0) 编辑
摘要: SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。 实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方. 阅读全文
posted @ 2011-06-02 12:24 跳刀的兔子 阅读(2244) 评论(0) 推荐(0) 编辑
摘要: Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为: 并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,Executor.execute(Runnalbe) 。Executor在执行时使用内部的线程池完成操作。一、创建线程池Executors类,提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorServi 阅读全文
posted @ 2011-06-01 16:42 跳刀的兔子 阅读(10621) 评论(0) 推荐(0) 编辑
摘要: 1.关键字synchronized 如果一个方法声明为synchronized,那么调用这个方法要求拥有对象的锁。如果这个锁被另一个线程所拥有,线程又调用synchronized方法块,那么线程会被放入对象锁的进入集合。进入集合表示等待锁 可用线程的集合。 如果当调用一个synchronized方法时,锁可用,那么调用线程成为对象锁的所有者,可进入该方法。 当线程退出方法时,释放锁。如果释放锁时锁的进入集合不为空,JVM任意选择该集合中的线程作为锁的所有者(“任意”,大多数虚拟机按照FIFO策略排列等待集合中的线程)。2.Java中的线程同步 同步可重入锁 信号量 条件变量 线程Synchro 阅读全文
posted @ 2011-05-28 20:33 跳刀的兔子 阅读(1519) 评论(0) 推荐(0) 编辑
摘要: 进程同步之经典同步问题1.有限缓存问题 生产者通过调用insert()函数,将一个数据项放入缓冲区;消费者通过调用remove()移出数据项。public class BoundedBuffer { private static final int BUFFER_SIZE = 5; //缓冲区的容量 private Object[] buffer; private int in,out; private Semaphore mutex; //提供了对缓冲区访问的互斥要求,初始化为1 private Semaphore empty; //表示空缓冲项的个数,初始化为缓冲区的容量 private 阅读全文
posted @ 2011-05-28 18:38 跳刀的兔子 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 1.Java IO里主要类的继承关系java.lang.Object java.io.File文件和目录路径名 java.io.InputStream字节流输入 java.io.FileInputStream 把文件作为源进行流式输入的FileInputStream类 java.io.FilterInputStream java.io.BufferedInputStream 可以对流数据进行缓冲,实现类似“缓输出”的功能 java.io.DataInputStream java.io.OutputStream 字节流输出 java.io.FileOutputStream把文件作为源进行流式输入 阅读全文
posted @ 2011-05-23 21:30 跳刀的兔子 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 1.StringBuffer和StringBuilder都是单线程安全的,功能类似如果被单线程使用时,建议使用StringBuilder,它比StringBuffer要快如果需要同步时,使用StringBuffer2.throws和throw的区别throws语句 throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是Error或 RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序的正常部分中是不期待出现的。 如果你想明确地抛出一 阅读全文
posted @ 2011-05-22 12:49 跳刀的兔子 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 1.shell(外壳)--命令解释程序有的操作系统在其内核部分包括命令解释程序。其他操作系统,如WindowsXP和UNIX,将命令解释程序作为一个特殊程序,当一个任务开始时或用户首次登录时,该程序会运行。命令解释程序的作用:获取并执行用户指定的下一条命令。提供的命令主要是操作文件的:create,delete,list,print,copy,execute。2.系统调用时向操作系统传递参数方法:第一种、通过寄存器来传递参数;第二种、当参数比寄存器多时,保存在内存的块和表中,并将块的地址通过寄存器来传递(如Linux和Solaris);第三种、参数通过程序放在或压入栈中,并通过操作系统从栈中弹 阅读全文
posted @ 2011-05-21 15:31 跳刀的兔子 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 1.内存与CPU的交互通过load和store指令:load将内存中的字移到CPU的寄存器中,store将寄存器的内容移到内存。2.指令执行周期(冯诺依曼)首先从内存中获取指令--将指令保存在指令寄存器中--对指令解码--从内存中获取操作数--将操作数存在某个寄存器中--在指令完成对操作数的执行后,其结果可以存回到内存3.内存(memory)内存是CPU所能直接寻址和访问的唯一大容量存储器。例如,CPU需要处理磁盘内的数据,那么这些数据必须首先通过CPU生成的I/O调用传送到内存中。同样,如果CPU需要执行指令,那么这些指令必须在内存中。如果一个程序要执行,必须先变换成绝对地址并装入内存,随着 阅读全文
posted @ 2011-05-21 11:08 跳刀的兔子 阅读(546) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 下一页