Java 基础
文章平均质量分 84
宗轩浚兮
这个作者很懒,什么都没留下…
展开
-
关于this和super使用的JAVA面试试题
面试例题1:下面程序的结果是什么?[Trend公司面试题] class Tester { int var; Tester(double var) { this.var = (int)var; } Tester(int var)转载 2008-11-09 11:10:00 · 2600 阅读 · 0 评论 -
Java性能调优
http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html调优步骤:衡量系统现状、设定调优目标、寻找性能瓶颈、性能调优、衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈)、性能调优结束。寻找性能瓶颈性能瓶颈的表象:资源消耗过多、外部处理系统的性能不足、资源消耗不多但程序的响应速度却仍达不到要求。转载 2013-12-27 13:34:17 · 959 阅读 · 0 评论 -
java多线程中的异常处理 - 异常处理在多线程中的原则
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉。这一点是通过java.lang.Runnable.run()方法声明(因为此方法声明上没有throw exception部分)进行了约束。但是线程依然有可能抛出unchecked exception,当此类异常跑抛出时,线程就会终结,而对转载 2014-01-17 14:23:29 · 979 阅读 · 0 评论 -
零拷贝
很多 Web 应用程序都会提供大量的静态内容,其数量多到相当于读完整个磁盘的数据再将同样的数据写回响应套接字(socket)。此动作看似只需较少的 CPU 活动,但它的效率非常低:首先内核读出全盘数据,然后将数据跨越内核用户推到应用程序,然后应用程序再次跨越内核用户将数据推回,写出到套接字。应用程序实际上在这里担当了一个不怎么高效的中介角色,将磁盘文件的数据转入套接字。数据每遍历用户内核一转载 2014-02-26 20:55:15 · 1507 阅读 · 0 评论 -
JAVA中的反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能: 在运行时分析类的能力,判断任意对象所属类,类中有哪些方法,有哪些成员变量;在运行时控查对象,比如,只写一个toString()方法供所转载 2008-11-10 23:03:00 · 629 阅读 · 0 评论 -
一些基础算法基础编程思维
1. 数组中两个元素相加等于指定数的所有组合(仅用一次循环且不能创建新的数组或者集合)思路:从数组的前后两端(i=0,j=array.lengths)分别利用指针(计数器)来扫描数组,如果满足相加等于目标则打印,否则当sum// 快速寻找满足条件的两个// 数组中两个数的和满足指定结果public class Test{ static int[] arr = {原创 2014-12-25 13:31:35 · 1012 阅读 · 0 评论 -
HashMap的工作原理-hashcode和equals原理的再次深入
前言首先再次强调hashcode (==)和equals的真正含义(我记得以前有人会说,equals是判断对象内容,hashcode是判断是否相等之类):equals:是否同一个对象实例。注意,是“实例”。比如String s = new String("test"); s.equals(s), 这就是同一个对象实例的比较;等号(==):对比对象实例的内存地址(也即对象实例的ID),原创 2014-12-21 23:30:12 · 11655 阅读 · 6 评论 -
Java中“引用”的几种类型
强引用:无论内存是否足够,不会回收。软引用:内存不足时,回收该引用关联的对象。弱引用:垃圾回收时,无论内存是否足够,都会回收。虚引用:任何时候都可能被垃圾回收器回收。在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软转载 2016-05-28 10:59:56 · 4571 阅读 · 0 评论 -
Java基础知识点收集
1. ThreadLocal 内存模型对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响ThreadLocal本质上是一个类似Map的结构,以各个线程对象本身为Key,将其值存放进去。这个结构在所有的基于同一个线程类原创 2016-06-02 10:34:39 · 644 阅读 · 0 评论 -
Java锁 到底锁的是哪个对象?
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在java里边就是拿到某个同步对象的锁(一个对象只有一把锁);如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列中)。取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中等待的某个线程就可以拿到锁原创 2013-01-12 20:02:06 · 11440 阅读 · 6 评论 -
Java线程池使用
1. 为什么要用线程池? 在Java中,如果每当一个请求到达就创建一个新线程,开销是相当大的。在实际使用中,每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在实际处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个JVM中创建太多的线程,可能会导致系统由于过度转载 2013-11-13 13:09:06 · 3575 阅读 · 2 评论 -
java解析XML四种方式
1.介绍1)DOM(JAXP Crimson解析器)DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处原创 2008-11-10 16:18:00 · 580 阅读 · 0 评论 -
Java HashCode
关于的方法:想要明白hashCode的作用,你必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。那么这里就有一个比较严重的问题了:要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢?这就是Object.equals方法了。但是,如果每增加一个转载 2009-01-19 10:45:00 · 2639 阅读 · 0 评论 -
Java Double-Checked Locking 已死,C++ 呢?
double-checked locking 模式在 Java 下面无法正常工作,这里先简要的总结一下。 根本原因在于 Java 的 memory model 允许所谓的 out-of-order write ,对于下面的 Java 代码,out-of-order write 可能导致灾难性的结果 public static Singleton getInstance() { if (转载 2009-09-14 16:56:00 · 877 阅读 · 0 评论 -
使用JConsole 监测自己的应用,尤其对多线程的情况很有用
一、JConsole是什么 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。二、如何启动JConsole如果是从命令行启动,使 JD转载 2013-01-05 08:48:46 · 3079 阅读 · 0 评论 -
InputStream与OutputStream的比较
记得刚学习程序流一章的时候,就是搞不清楚In和Out,不知道什么时候用in什么时候用out,所以一部分人采取死记硬背的方式BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("infilename")));不管你从磁盘读,从网络读,或者从键盘读,读到内存,就是Input转载 2011-12-14 21:45:28 · 6400 阅读 · 7 评论 -
Lock 实现简单存取钱逻辑
这里还是经典的账户存取钱的问题,因为在学习线程的通信,学习了java的lock机制,试着自己用lock的await()、signalAll()、signalAll()重现了一下synchronized的wait、notify、notifyAll的机制,算是加深印象吧要实现的逻辑是先存钱,再取钱,再存再取的执行顺序这是账户类:经典的模型,还是这样,里面有存取和取钱方法 1转载 2013-02-26 09:07:30 · 602 阅读 · 0 评论 -
Map 按值排序 (Map sort by value) - Java
按照value排序(倒序),取前N位----------------------------------------------------------------------------------------------------public class RelationSpanSorter { private RelationSpanSorter() {转载 2013-03-15 09:12:21 · 1674 阅读 · 0 评论 -
再一次 - Java的引用传递与值传递
传值意味着传的是副本,不会改变被传递对象本身。传引用既是传内存地址,如果传递的对象发生了改变,那么被传递的对象也将改变(所有某些场景需要深拷贝)1、对象是按引用传递的,原始数据类型是按值传递的2、Java 应用程序有且仅有的一种参数传递机制,即按值传递,如果对象被当作参数传递,外部对象(实参)不变,函数内容的对象(实参)会变以代码下来证明3,4,哪一个是正确转载 2013-09-30 16:50:12 · 974 阅读 · 0 评论 -
CAS-比较&交换并发处理策略
这是一种可以称为基于冲突检测的乐观锁。这种模式下,已经没有所谓的锁概念了,每条线程都直接先去执行操作,计算完成后检测是否与其他线程存在共享数据竞争,如果没有则让此操作成功,如果存在共享数据竞争则可能不断地重新执行操作和检测,直到成功为止,可叫CAS自旋。乐观锁的核心算法是CAS(Compareand Swap,比较并交换),它涉及到三个操作数:内存值、预期值、新值。当且仅当预期值和内存值相转载 2016-08-25 17:42:13 · 2902 阅读 · 0 评论