Java基础
文章平均质量分 79
csu3m
这个作者很懒,什么都没留下…
展开
-
Java中的Wait() 和notify()方法(转)
转自:http://www.360doc.com/content/13/1109/17/14567867_327938303.shtml1)sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep 不会释放对象锁。wait 是Object 类的方法,对此对象调用wait 方法导致本线程放弃对象锁转载 2014-03-04 20:55:24 · 482 阅读 · 0 评论 -
HashTable和ConcurrentHashMap的学习
一、HashTable的内部存储结构HashTable和HashMap采用相同的存储机制,二者的实现基本一致,不同的是:1、HashMap是非线程安全的,HashTable是线程安全的,内部的方法基本都是synchronized。2、HashTable不允许有null值的存在。在HashTable中调用put方法时,如果key为null,直接抛出NullPointe原创 2014-03-09 00:10:49 · 470 阅读 · 0 评论 -
进程间通信与线程间通信
以前一直想找个机会总结一下进程和线程的通信机制,但由于技术和平台的局限性,一直没有找准切入点。由于马上要毕业了,对自己技术的总结和梳理的前提下写了本篇文章,如有错误之处,敬请拍砖和指教。 操作系统的主要任务是管理计算机的软件、硬件资源。现代操作系统的主要特点是多用户和多任务,也就是程序的并行执行,windows如此linux也是如此。所以操作系统就借助于进程来管理计算机的软转载 2014-03-14 14:35:17 · 452 阅读 · 0 评论 -
聊聊并发-Java中的Copy-On-Write容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。转载 2014-03-09 14:27:02 · 473 阅读 · 0 评论 -
Java中的ReentrantLock和synchronized两种锁定机制的对比
原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造转载 2014-03-09 14:59:24 · 439 阅读 · 0 评论 -
JVM内存配置详解
转自:http://www.open-open.com/lib/view/open1324736648468.html前段时间在一个项目的性能测试中又发生了一次OOM(Out of swap sapce),情形和以前网店版的那次差不多,比上次更奇怪的是,此次搞了几天之后啥都没调整系统就自动好了,死活没法再重现之前的OOM了!问题虽然蹊跷,但也趁此机会再次对JVM堆模型、GC垃圾算法等进行了一次转载 2014-03-18 19:16:50 · 480 阅读 · 0 评论 -
Servlet 3.0 新特性概述
Servlet 3.0 新特性概述Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋,同时也获得了 Java 社区的一片赞誉之声:异步处理支持:有了该特性,Servlet 线程不再需转载 2014-03-20 00:15:45 · 494 阅读 · 0 评论 -
java集合类深入分析之HashSet, HashMap篇
(转)java集合类深入分析之HashSet, HashMap篇http://shmilyaw-hotmail-com.iteye.com/blog/1700600简介 Map和Set是比较常用的两种数据结构。我们在平常的编程中经常会用到他们。只是他们的内部实现机制到底是怎么样的呢?了解他们的具体实现对于我们如何有效的去使用他们也是很有帮助的。在这一篇文章里,转载 2014-03-08 23:02:47 · 485 阅读 · 0 评论 -
探秘Java虚拟机——内存管理与垃圾回收
本文主要是基于Sun JDK 1.6 Garbage Collector(作者:毕玄)的整理与总结,原文请读者在网上搜索。1、Java虚拟机运行时的数据区2、常用的内存区域调节参数-Xms:初始堆大小,默认为物理内存的1/64(-Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的转载 2014-03-31 17:08:40 · 580 阅读 · 0 评论 -
深入理解Java内存模型(一)——基础
转自:http://ifeve.com/java-memory-model-1/本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-1并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制转载 2014-03-21 16:00:50 · 448 阅读 · 0 评论 -
httpSession的正确理解
关于HttpSession的误解实在是太多了,本来是一个很简单的问题,怎会搞的如此的复杂呢?下面说说我的理解吧:一个session就是一系列某用户和服务器间的通讯。服务器有能力分辨出不同的用户。一个session的建立是从一个用户向服务器发第一个请求开始,而以用户显式结束或session超时为结束。其工作原理是这样的:1.当一个用户向服务器发送第一个请求时,服务器为其建立一个ses转载 2014-03-21 22:56:08 · 497 阅读 · 0 评论 -
百度笔试题1
1. 假设一个 mp3 搜索引擎收录了 2^24 首歌曲,并记录了可收听这些歌曲的 2^30 条 URL,但每首歌的 URL 不超过 2^10 个。系统会定期检查这些 URL,如果一个 URL 不可用则不出现在搜索结果中。现在歌曲名和 URL 分别通过整型的 SONG_ID 和 URL_ID 唯一确定。对该系统有如下需求:1) 通过 SONG_ID 搜索一首歌的 URL_ID,给出 URL转载 2014-03-23 22:42:28 · 445 阅读 · 0 评论 -
数据结构和算法之:图的深度优先和广度优先遍历及其Java实现
转载自:图的遍历,所谓遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略,深度优先遍历和广度优先遍历。 深度优先遍历:深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点。总结起来可转载 2014-04-19 19:55:19 · 980 阅读 · 0 评论 -
java中equals方法和“==”的比较
在做项目的过程中也没去研究过这两个用法,之前准备面试看了一些面试题,关于equals和==的比较看了之后似乎懂了,可是之后看了在一篇将这个的文章后又有点迷糊了,今天看到以下这篇文章后才又清晰了。(转)------------------------------------------------------------------------------------------转载 2014-03-04 21:42:08 · 928 阅读 · 0 评论 -
ConcurrentHashMap之实现细节
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码转载 2014-03-09 16:13:31 · 532 阅读 · 0 评论 -
Java中Vector类学习之深入学习
在学习的过程中,发现Vector的有些方法看起来差不多,比较疑惑。1.有两个增加元素的方法add()和addElement(),。通过查看源代码和API文档比较: public synchronized void addElement(E obj) { modCount++; ensureCapacityHelper(elementCount + 1原创 2014-03-06 02:25:21 · 561 阅读 · 0 评论 -
关于int和Integer比较的问题
在看到好几道有关这个int和Integer的值比较的问题,于是捣腾了一番,也释了疑惑。1. Integer a = new Integer(12); Integer b = new Integer(12); System.out.println(a == b);输出结果:false分析:是两个integer引用的比较,==比较的是引用(内存地址)2. Inte原创 2014-03-06 22:57:32 · 2212 阅读 · 0 评论 -
java socket编程
转自:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html一,网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TC转载 2014-03-12 22:47:10 · 407 阅读 · 0 评论 -
重新学习一下Java中的几个关键字(final/static/volatile......)
1、 final关键字 final关键字可以修饰类,方法和变量,对于每一种修饰都有不同的意义,但目的是相同的,保持完整性防止改变。 例如,在Java中final类不可以被继承,final变量的值不可以修改,final方法不可以被重载。 在Java中,我们无法让对象被修饰为final,而只能修饰对象的引用,这意原创 2014-03-11 17:21:05 · 1386 阅读 · 0 评论 -
java中关键字volatile的作用
用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) =========================分割线1=======转载 2014-03-11 17:22:36 · 686 阅读 · 0 评论 -
进程的状态转换
进程是操作系统为了控制多个程序而创建的数据,操作系统是通过修改进程的状态来完成对相应程序的控制,用户程序的一些操作也可以修改一些进程的状态。那么进程的状态都有哪些呢?状态之间是如何装换的呢? 进程三态状态装换图 注意:创建和退出不是进程的状态。创建操作不做重点解释。阻塞也叫等待,和就绪的区别:等待是等待除CPU以外的资源,而就绪等待的是CPU资源。转载 2014-03-11 20:15:10 · 604 阅读 · 0 评论 -
Hash冲突解决办法
(转载)HashMap解决hash冲突的方法http://xiaolu123456.iteye.com/blog/1485349在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:转载 2014-03-08 22:33:25 · 1650 阅读 · 0 评论 -
随机访问文件RandomAccessFile 与 内存映射文件MappedByteBuffer
RandomAccessFileRandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。RandomAccessFile不属于InputStream和OutputStream类系的。实际上,除了实现DataInput和DataOutput接口之转载 2014-03-12 20:33:30 · 595 阅读 · 0 评论 -
深入研究servlet的线程安全问题(转)
Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。然而,很多人编写Servlet/JSP程序时并没有注意到多线程安全性的问题,这往往造成编写的程序在少量用户访问时没有任何问题,而在并发用户上升到一定值时,就会经常出现一些莫明其妙的问题。 Ser转载 2014-03-13 17:00:15 · 335 阅读 · 0 评论 -
Java中Vector类和Stack类的学习
1.Vector类API文档的解释: Vector类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。每个向量可通过维护 capacity 和capacityIncrement 来优化存储空间的管理。capacity 至少和向量大小一样原创 2014-03-06 01:25:52 · 833 阅读 · 0 评论 -
通过分析 JDK 源代码研究 Hash 存储机制
通过 HashMap、HashSet 的源代码分析其 Hash 存储机制集合和引用就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java 对象放入数组中,只是把对象的引用放入数组中,每个数组元素都是一个引用变量。实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合转载 2014-03-08 22:54:09 · 441 阅读 · 0 评论 -
Hashtable、synchronizedMap、ConcurrentHashMap 比较
util.concurrent包除了包含许多其他有用的并发构造块之外,还包含了一些主要集合类型List和Map的高性能的、线程安全的实现。Brian Goetz向您展示了用ConcurrentHashMap替换Hashtable或synchronizedMap,将有多少并发程序获益。 在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK 1.0的一部分。Hashtable提转载 2014-03-09 13:41:55 · 722 阅读 · 0 评论 -
cvte笔试(web后台)
1.下列语句在控制台输出的是什么?(B)public class A {}public class B extends A {}public class Test { public static void main(String[] args) { A a1=new A(); B b=new B(); A a2=b; System.out.println(a2.ge原创 2014-03-25 15:36:16 · 3708 阅读 · 0 评论