- 博客(36)
- 资源 (30)
- 收藏
- 关注
转载 Java核心技术卷I:基础知识(原书第8版):14.11 线程与Swing
铁文整理14.11 线程与Swing 在有关本章的介绍里已经提到,在程序中使用线程的理由之一是提高程序的响应性能。当程序需要做某些耗时的工作时,应该启动另一个工作器线程而不是阻塞用户接口。 但是,必须认真考虑工作器线程在做什么,因为这或许令人惊讶,Swing不是线程安全的。如果你试图在多个线程中操纵用户界面的元素。那么用户界面可能崩溃。 要了解这一问题
2014-10-31 14:23:19 993
转载 Java核心技术卷I:基础知识(原书第8版):14.10 同步器
铁文整理14.10 同步器 java.util.concurrent包包含了几个能帮助人们管理相互合作的线程集的类,见表14-3。这些机制具有为线程之间的共用集节点模式(common rendezvous patterns)提供的“预置功能”(canned functionality)。如果有一个相互合作的线程集满足这些行为模式之一,那么应该直接重用合适的库类而不要试图提
2014-10-31 14:22:07 944
转载 Java核心技术卷I:基础知识(原书第8版):14.9 执行器
铁文整理14.9 执行器 构建一个新的线程是有一定代价的,因为涉及与操作系统的交互。如果程序中创建了大量的生命期很短的线程,应该使用线程池。一个线程池中包含许多准备运行的空闲线程。将Runnable对象交给线程池,就会有一个线程调用run方法。当run方法退出时,线程不会死亡,而是在池中准备为下一个请求提供服务。 另一个使用线程池的理由是减少并发线程的数目。创建
2014-10-31 14:20:58 914
转载 Java核心技术卷I:基础知识(原书第8版):14.8 Callable与Future
铁文整理14.8 Callable与Future Runnable封装一个异步运行的任务,可以把它想像成为一个没有参数和返回值的异步方法。Callable与Runnable类似,但是有返回值。Callable接口是一个参数化的类型,只有一个方法call。public interface Callable { V call() throws Exception
2014-10-31 14:20:17 711
转载 Java核心技术卷I:基础知识(原书第8版):14.7 线程安全的集合
铁文整理14.7 线程安全的集合 如果多线程要并发地修改一个数据结构,例如散列表,那么很容易会破坏这个数据结构(有关散列表的详细信息见第13章)。例如,一个线程可能要开始向表中插入一个新元素。假定在调整散列表各个桶之间的链接关系的过程中,被剥夺了控制权。如果另一个线程也开始遍历同一个链表,可能使用无效的链接并造成混乱,会抛出异常或者陷入死循环。 可以通过提供锁来保护
2014-10-31 14:18:20 1038
转载 Java核心技术卷I:基础知识(原书第8版):14.6 阻塞队列
铁文整理14.6 阻塞队列 现在,读者已经看到了形成Java并发程序设计基础的底层构建块。然而,对于实际编程来说,应该尽可能远离底层结构。使用由并发处理的专业人士实现的较高层次的结构要方便得多、要安全得多。 对于许多线程问题,可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生产者线程向队列插入元素,消费者线程则取出它们。使用队列,可以安全地从一个线程向另一个
2014-10-31 14:17:06 705
转载 Java核心技术卷I:基础知识(原书第8版):14.5 同步
铁文整理14.5 同步 在大多数实际的多线程应用中,两个或两个以上的线程需要共享对同一数据的存取。如果两个线程存取相同的对象,并且每一个线程都调用了一个修改该对象状态的方法,将会发生什么呢?可以想像,线程彼此踩了对方的脚。根据各线程访问数据的次序,可能会产生讹误的对象。这样一个情况通常称为竞争条件(race condition)。14.5.1 竞争条件的一个例子
2014-10-31 14:16:52 1227
转载 Java核心技术卷I:基础知识(原书第8版):14.4 线程属性
铁文整理14.4 线程属性 下面将讨论线程的各种属性,其中包括:线程优先级、守护线程、线程组以及处理未捕获异常的处理器。14.4.1 线程优先级 在Java程序设计语言中,每一个线程有一个优先级。默认情况下,一个线程继承它的父线程的优先级。可以用setPriority方法提高或降低任何一个线程的优先级。可以将优先级设置为在MIN_PRIORITY(在Thre
2014-10-31 14:11:51 783
转载 Java核心技术卷I:基础知识(原书第8版):14.3 线程状态
铁文整理14.3 线程状态 线程可以有如下6种状态:newrunnableblockedwaitingtimed waitingterminated 下一节对每一种状态进行解释。 要确定一个线程的当前状态,可调用getState方法。14.3.1 新生线程 当用new操作符创建一个新
2014-10-31 14:11:26 824
转载 名词王国里的死刑
翻译自Steve Yegge的大作《Execution in the Kingdom of Nouns》原文在 这里另外第一次翻译,很多地方不准确或根本翻译不出来,见谅~翻译正文Hello,world!今天我给大家讲一个关于Java魔鬼国王和他在全国范围内驱逐动词的故事。注意:这个故事并没有什么圆满结局。如果你心灵脆弱或者吹毛求疵的话,这个故事不适合你。如果你易于动
2014-10-29 09:42:42 971
转载 Java核心技术卷I:基础知识(原书第8版):13.4 算法
铁文整理13.4 算法 泛型集合接口有一个很大的优点,即算法只需要实现—次。例如,考虑一下计算集合中最大元素这样一个简单的算法。使用传统方式,程序设计人员可能会用循环实现这个算法。下面就是找出数组中最大元素的代码。 …… 当然,为找出数组列表中的最大元素所编写的代码会与此有微小的差别。 …… 链表应该怎么做呢?对于链表来说,无法实施高效
2014-10-24 09:25:53 695
转载 Java核心技术卷I:基础知识(原书第8版):13.5 遗留的集合
铁文整理13.5 遗留的集合 本节将讨论Java程序设计语言自问世以来就存在的集合类;Hashtable类和非常有用的子类Properties、Vector的子类Stack以及BitSet类。13.5.1 Hashtable类 Hashtable类与HashMap类的作用一样,实际上,它们拥有相同的接口。与Vector类的方法一样。Hashtable的方法也是同
2014-10-24 09:24:29 888
转载 Java核心技术卷I:基础知识(原书第8版):13.2 具体的集合
铁文整理13.2 具体的集合 这里并不打算更加详细地介绍所有的接口,但我们认为先介绍一下Java类库提供的具体数据结构还是很有用途的。透彻地介绍了人们想使用的类之后,再回过头研究一些抽象的概念,看一看集合框架组织这些类的方式,表13-1展示了Java类库中的集合,并简要描述了每个集合类的用途(鉴于简单起见,省略了将在第十四章中介绍的线程安全集合)。在表13-1中,除了以Map
2014-10-24 09:19:03 1598
转载 Java核心技术卷I:基础知识(原书第8版):13.3 集合框架
铁文整理13.3 集合框架 框架是一个类的集,它奠定了创建高级功能的基础。框架包含很多超类,这些超类拥有非常有用的功能、策略和机制。框架使用者创建的子类可以扩展超类的功能,而不必重新创建这些基本的机制。例如,Swing就是一种用户界面的机制。 Java集合类库构成了集合类的框架。它为集合的实现者定义了大量的接口和抽象类(见图13-10),并且对其中的某些机制给予了描
2014-10-24 09:17:40 851
转载 Java核心技术卷I:基础知识(原书第8版):13.1 集合接口
铁文整理13.1 集合接口 Java最初版本只为最常用的数据结构提供了很少的一组类:Vector、Stack、Hashtable、BitSet与Enumeration接口,其中的Enumeration接口提供了一种用于访问任意容器中各个元素的抽象机制。这是一种很明智的选择,但要想建立一个全面的集合类库还需要大量的时间和高超的技能。 随着Java SE 1.2的问世,
2014-10-21 14:41:22 714
转载 Java核心技术卷I:基础知识(原书第8版):12.9 反射和泛型
铁文整理12.9 反射和泛型 现在,Class类是泛型的。例如,String.class实际上是一个Class类的对象(事实上是惟一的对象)。 类型参数十分有用,这是因为它允许Class方法的返回类型更加具有针对性。下面Class中的方法就使用了类型参数: T newInstance() T cast(Object obj) T[] g
2014-10-21 12:59:37 1327
转载 Java核心技术卷I:基础知识(原书第8版):12.8 通配符类型
铁文整理12.8 通配符类型 固定的泛型类型系统使用起来并没有那么令人愉快,类型系统的研究人员知道这一点已经有一段时间了。Java的设计者发明了一种巧妙的(仍然是安全的)“解决方案”:通配符类型。例如,通配符类型 Pairextends Employee> 表示任何泛型Pair类型,它的类型参数是EmPloyee的子类,如Pair,但不是Pair。
2014-10-21 11:01:27 837
转载 Java核心技术卷I:基础知识(原书第8版):12.4 类型变量的限定
铁文整理12.4 类型变量的限定 有时,类或方法需要对类型变量加以约束。下面是一个典型的例子。我们要计算数组中的最小元素: class ArrayAlg { public static T min(T[] a) // almost correct { if (a ==null || a.length == 0)
2014-10-21 09:41:22 758
转载 Java核心技术卷I:基础知识(原书第8版):12.6 约束与局限性
铁文整理12.6 约束与局限性 在下面几节中,将阐述使用Java泛型时需要考虑的一些限制。大多数限制都是由类型擦除引起的。12.6.1 不能用基本类型实例化类型参数 不能用类型参数代替基本类型。因此,没有Pair,只有Pair。当然,其原因是类型擦除。擦除之后,Pair类含有Object类型的域,而Object不能存储doubIe值。 这的确令人烦
2014-10-21 09:40:33 893
转载 Java核心技术卷I:基础知识(原书第8版):12.3 泛型方法
铁文整理12.3 泛型方法 前面已经介绍了如何定义一个泛型类,实际上,还可以定义一个带有类型参数的简单方法。 public static T getMiddle(T[] a) { return a[a.length / 2]; } 这个方法是在普通类中定义的,而不是在泛型类中定义的。然而,这是一个泛型方法,可以从尖括号和类
2014-10-21 09:40:00 921
转载 Java核心技术卷I:基础知识(原书第8版):12.5 泛型代码和虚拟机
铁文整理12.5 泛型代码和虚拟机 虚拟机没有泛型类型对象——所有对象都属于普通类。在泛型实现的早期版本中,甚至能够将使用泛型的程序编译为在1.0虚拟机上运行的类文件!这个向后兼容性在Java泛型开发的后期被放弃了。如果使用Sub的编译器来编译使用_Java泛型的代码,结果类文件将不能在5.0之前的虚拟机上运行。 注释:如果想拥有泛型的优势,同时又保留旧的虚拟机字节
2014-10-21 09:39:04 1034
转载 Java核心技术卷I:基础知识(原书第8版):12.2 简单泛型类的定义
铁文整理12.2 简单泛型类的定义 一个泛型类就是具有一个或多个类型变量的类。本章使用一个简单的Pair类作为例子。对于这个类来说,我们只关注泛型,而不会为数据存储的细节烦恼。下面是Pair类的代码:public class Pair { public Pair() { first = null; second = n
2014-10-21 09:34:49 708
转载 Java核心技术卷I:基础知识(原书第8版):11.4 断言
铁文整理11.4断言 在一个具有自我保护能力的程序中,断言是一个常用的习语。假设确信某个属性符合要求,并且代码的执行依赖于这个属性。例如,需要计算 double y = Math.sqrt(x); 我们确信,这里的x是一个非负数值。原因是:x是另外一个计算的结果,而这个结果不可能是负值;或者x是一个方法的参数,而这个方法要求它的调用者只能提供一个
2014-10-17 14:17:29 780
转载 Java核心技术卷I:基础知识(原书第8版):11.1-11.3 异常
<>11.1.1异常分类 在Java程序设计语言中,异常对象都是派生于ThrowabIe类的一个实例。稍后还可以看到,如果Java中内置的异常类不能够满足需求,用户可以创建自己的异常类。 图11-1是Java异常层次结构的一个简化示意图。 需要注意的是,所有的异常都是由ThrowabIe继承而来,但在下一层立即分解为两个分支: Error
2014-10-17 13:31:45 773
转载 Java核心技术卷I:基础知识(原书第8版):10.4 应用程序存储的配置
铁文整理10.4应用程序存储的配置 应用程序的用户通常期待能够自行对应用程序进行配置,并能够将其保存起来。日后再次运行这个应用程序时将能够读取这些配置。下面首先介绍一种直接将配置信息存储在属性文件中的传统方式。然后,再介绍Java SE 1.4中的一种功能更加强大的机制。10.4.1属性映射 属性映射(property map)是一种存储键/值对的数据结构。
2014-10-16 16:34:42 843
转载 Java核心技术卷I:基础知识(原书第8版):6.5 代理
铁文整理6.5代理 在本章的最后,讨论一下代理,这是Java SE 1.3新增加的特性。利用代理可以在运行时创建一个实现了一组给定接口的新类。这种功能只有在编译时无法确定需要实现哪个接口时才有必要使用。对于应用程序设计人员来说,遇到这种情况的机会很少。如果对这种高级技术不感兴趣,可以跳过本节内容。然而,对于系统程序设计人员来说,代理带来的灵活性却十分重要。 假设有一
2014-10-16 09:35:55 983
转载 Java核心技术卷I:基础知识(原书第8版):6.4 内部类
铁文整理6.4内部类 内部类是定义在另一个类中的类。为什么需要使用内部类呢?其主要原因有以下三点:内部类方法可以访问该类定义所在作用域中的数据,包括私有的数据。内部类可以对同一个包中的其他类隐藏起来。当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。 我们将这个比较复杂的内
2014-10-16 08:46:39 1413
转载 Java核心技术卷I:基础知识(原书第8版):6.2 对象克隆
铁文整理6.2对象克隆 当拷贝一个变量时,原始变量与拷贝变量引用同一个对象,如图61所示。这就是说,改变一个变量所引用的对象将会对另一个变量产生影响。 Employeeorigina1 = newEmployee("John Public", 50000); Employeecopy = origira
2014-10-15 14:53:33 982 1
转载 Java核心技术卷I:基础知识(原书第8版):6.1 接口
铁文整理6.1接口 在Java程序设计语言中,接口不是类,而是对类的一组需术描述,这些类要遵从接口描述的统一格式进行定义。 我们经常听到服务提供商这样说:“如果类遵从某个特定接口,那么就履行这项服务”。下面给出一个具体的示例,Arrays类中的sort方法承诺可以对对象数组进行排序,但要求满足下列前提:对象所属的类必须实现了Comparabl
2014-10-15 14:12:22 871
转载 Java核心技术卷I:基础知识(原书第8版):5.2.2 相等测试与继承
铁文整理5.2.2相等测试与继承 如果隐式和显式的参数不属于同一个类,equals方法将如何处理呢?这是一个很有争议的问题。在前面的例子中,如果发现类不匹配,equals方法就返回false。但是,许多程序员却喜欢使用instanceof进行检测: if (!(otherObjectinstanceof Employee))r
2014-10-14 09:56:44 998
原创 Android的weight、lanyout_weight属性
官方正统的解释:LinearLayout也支持子元素的权重(layout_weight)。权重属性为子元素指定了一个“重要程度”,并允许子元素填充父元素的剩余空间(注意,所谓剩余空间,参看下面的示例)。权重值是一个整数,各个子元素根据权重值按比例分配父元素的剩余空间。默认的权重值为0,表示子元素仅占用适合于该子元素内容的空间。 LinearLayout.weight表示元素额外空间的大小
2014-10-06 17:30:45 773
原创 AndroidStudio0.8.9创建工程老是download Gradle的问题
经本人亲自验证,解决办法很简单:从网上下载gradle的最新版,如
2014-10-04 11:46:08 2123
理解专业程序员
2014-11-21
Windows程序调试.docx
2013-04-25
C++2011标准(英文版)
2013-03-01
ViewIE V1.01
2012-05-17
jQuery插件editable
2012-05-12
查看网页的运行时源代码
2012-05-11
WebGL自修教程 V2011-10-19
2011-10-19
《OpenGL ES 2.0编程指南》翻译
2011-09-24
Effective C++(SecondEdition) & More Effective C++.chm
2011-04-10
C++ Standard Library(英文版) chm格式
2011-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人