
java
文章平均质量分 75
stefanie860624
这个作者很懒,什么都没留下…
展开
-
Java并发基础
一.Java并发基础当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题。在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1的这个过程不是原子操作。要想对i进行递增,第一步就是获取i的值,当A获取i的值为0,在A将新的值写入A之前,B也获取了A的值0,然后A写入,i变成1,然后B也写入i,i这个时候依然是1.当然j翻译 2012-05-09 15:52:46 · 437 阅读 · 0 评论 -
java.util.concurrent概述
java.util.concurrent 包含许多线程安全、测试良好、高性能的并发构建块。不客气地说,创建 java.util.concurrent 的目的就是要实现 Collection 框架对数据结构所执行的并发操作。通过提供一组可靠的、高性能并发构建块,开发人员可以提高并发类的线程安全、可伸缩性、性能、可读性和可靠性。如果一些类名看起来相似,可能是因为 java.util.concurr转载 2012-05-09 11:21:51 · 740 阅读 · 0 评论 -
java 动态代理 和 cglib代理
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为转载 2012-04-28 16:59:52 · 461 阅读 · 0 评论 -
探究gc
基本收集算法复制:将堆内分成两个相同空间,从根(ThreadLocal的对象,静态对象)开始访问每一个关联的活跃对象,将空间A的活跃对象全部复制到空间B,然后一次性回收整个空间A。因为只访问活跃对象,将所有活动对象复制走之后就清空整个空间,不用去访问死对象,所以遍历空间的成本较小,但需要巨大的复制成本和较多的内存。 标记清除(mark-sweep):收集器先从根开始访问所有活跃对象,标翻译 2012-04-26 15:38:59 · 597 阅读 · 0 评论 -
深究jvm类加载器
Jvm两种机制:1, 装载具有合适名称的类,---类装载子系统2, 负责执行一个负责执行包含在已装载的类和接口中的指令,---运行引擎每个jvm又包含方法区,栈区,堆区,程序计数器和本地方法类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK1.0 就出现了,最初翻译 2012-04-26 15:25:03 · 480 阅读 · 0 评论 -
线程总结
a,线程是进程中乱序执行的代码流程。对于一个进程中的多个线程来说,多个线程共享进程的内存块,当有新的线程的时候,共享原有的进程块的内存。线程间的通信很容易,速度很快。不同进程因为处于不同的内存块,因此进程之间的通信相对困难。(进程:一个内存中运行的应用程序,有自己独立的内存空间,一个进程中可以启动多个线程;线程:一个执行流程,一个进程可以运行多个线程,线程属于某个进程,进程中的多个翻译 2012-03-02 16:20:45 · 397 阅读 · 0 评论 -
大数据量处理
第一部分、 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。 同样可以采用转载 2012-03-02 14:47:48 · 1284 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap的高并发性主要来自于三个方面:用分离锁实现多个线程间的更深层次的共享访问。用 HashEntry 对象的不变性来降低执行读操作的线程在遍历链表期间对加锁的需求。通过对同一个 Volatile 变量的写 / 读访问,协调不同线程间读 / 写操作的内存可见性。原创 2012-03-02 14:46:31 · 418 阅读 · 0 评论 -
Concurrent应用
一般的服务器都需要线程池,比如Web、FTP等服务器,不过它们一般都自己实现了线程池, 比如以前介绍过的Tomcat、 Resin和Jetty等,现在有了JDK5,我们就没有必要重复造车轮了,直接使用就可以,何况使用也很方便,性能也非常高。package concurrent;import java.util.concurrent.ExecutorService;import java翻译 2012-03-02 14:45:57 · 533 阅读 · 0 评论 -
NIO应用
NIO:1,为所有的原始类型提供buffer缓存支持。2,字符集编码解码解决方案。3,channel 一个新的IO对象。4,支持锁和内存映射文件的文件访问接口。5,提供多路非阻塞式的高伸缩性网络IOpackage thread;import java.io.IOException;import java.net.InetSocketAddress;impor原创 2012-03-02 14:43:46 · 340 阅读 · 0 评论 -
LinkedHashMap的实现原理
深入Java集合学习系列:LinkedHashMap的实现原理文章分类:Java编程1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不原创 2012-02-09 17:53:13 · 1572 阅读 · 0 评论 -
LinkedHashSet的实现原理
深入Java集合学习系列:LinkedHashSet的实现原理文章分类:Java编程1. LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不原创 2012-02-09 17:52:37 · 1234 阅读 · 0 评论 -
hashMap的实现原理
深入Java集合学习系列:HashMap的实现原理文章分类:Java编程1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个原创 2012-02-09 17:51:49 · 601 阅读 · 0 评论 -
HashSet的实现原理
深入Java集合学习系列:HashSet的实现原理文章分类:Java编程1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2. HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,Ha原创 2012-02-09 17:51:10 · 2746 阅读 · 0 评论 -
java集合框架图
java集合框架图简化图:Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。 Java 2集合框架图 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类(实线表示),对接口的具原创 2012-02-09 16:03:54 · 8412 阅读 · 0 评论 -
ArrayList的实现原理
深入Java集合学习系列:ArrayList的实现原理1. ArrayList概述: ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等原创 2012-02-09 15:23:56 · 2527 阅读 · 0 评论 -
JDK动态代理和CGLIB代理
JDK动态代理为什么必须针对接口?其与CGLIB的对比示例代码:public interface AopService { public void doService();}public class AopServiceImpl implements AopService { private String singal; public转载 2012-02-08 18:02:59 · 596 阅读 · 0 评论 -
jdk配置
<br /><br />1,JDK安装完成后,就进行环境变量的设置。<br /> <br /> 1、右击“我的电脑”->“属性”,选择“高级”,点击“环境变量”的按钮。<br /> <br /> 2、在系统变量里,点击“新建”,在变量名输入java_home ;变量值输入D:/Program Files/Java/jdk1.6.0_10 <br /> <br /> 同上,新建一个系统变量,变量名为:classpath;变量值:.;%ja原创 2010-12-14 16:34:00 · 331 阅读 · 0 评论 -
字符串中找出固定字符串出现n次的索引值
<br /> //找出letter在str中出现num次时的索引值<br /> public static int findNumber (String str,String letter,int num){<br /> int i = 0;<br /> int m = 0;<br /> char c = new String(letter).charAt(0);<br /> char []原创 2010-12-14 16:33:00 · 517 阅读 · 0 评论