SF
风继续吹
风继续吹
注册登录
关注博客
注册登录
主页
关于
RSS
Java™ 教程(Lock对象)
博弈
2019-01-17
阅读 3 分钟
2.4k
同步代码依赖于简单的可重入锁,这种锁易于使用,但有许多限制,java.util.concurrent.locks包支持更复杂的锁定语法,我们不会详细检查这个包,而是将重点放在其最基本的接口Lock上。
Java™ 教程(不可变对象)
博弈
2019-01-17
阅读 4 分钟
2.1k
程序员通常不愿意使用不可变对象,因为他们担心创建新对象的成本而不是就地更新对象的成本,对象创建的影响经常被高估,并且可以通过与不可变对象相关联的一些效率来抵消,这些包括由于垃圾收集而减少的开销,以及消除保护可变对象免于损坏所需的代码。
Java™ 教程(守护阻塞)
博弈
2019-01-16
阅读 4 分钟
1.7k
线程通常必须协调他们的操作,最常见的协调用法是守护阻塞,这样的阻塞首先轮询一个条件,该条件必须为真,然后阻塞才能继续,要正确执行此操作,需要执行许多步骤。
Java™ 教程(并发活性)
博弈
2019-01-16
阅读 2 分钟
1.7k
Alphonse和Gaston是朋友,是礼貌的忠实信徒,礼貌的一个严格规则是,当你向朋友鞠躬时,你必须一直鞠躬,直到你的朋友有机会还礼,不幸的是,这条规则没有考虑到两个朋友可能同时互相鞠躬的可能性,这个示例应用程序Deadlock模拟了这种可能性:
Java™ 教程(同步)
博弈
2019-01-14
阅读 5 分钟
1.8k
线程主要通过共享对字段和引用对象的引用字段的访问来进行通信,这种通信形式非常有效,但可能产生两种错误:线程干扰和内存一致性错误,防止这些错误所需的工具是同步。
Java™ 教程(Thread对象)
博弈
2019-01-14
阅读 6 分钟
2.5k
Thread对象 每个线程都与Thread类的实例相关联,使用Thread对象创建并发应用程序有两种基本策略。 要直接控制线程的创建和管理,只需在每次应用程序需要启动异步任务时实例化Thread。 要从应用程序的其余部分抽象线程管理,请将应用程序的任务传递给执行器。 本节介绍Thread对象的使用,Executors将与其他高级并发对象一...
Java™ 教程(进程和线程)
博弈
2019-01-13
阅读 1 分钟
1.8k
计算机用户想当然地认为他们的系统一次可以做不止一件事,他们设想他们可以继续在文字处理器中工作,而其他应用程序则下载文件、管理打印队列和流音频,即使是单个应用程序通常也希望一次完成多个任务。例如,流式音频应用程序必须同时从网络上读取数字音频、解压缩、管理回放并更新其显示,甚至文字处理器应始终准备好...
Java™ 教程(对象流)
博弈
2019-01-12
阅读 2 分钟
1.9k
对象流类是ObjectInputStream和ObjectOutputStream,这些类实现ObjectInput和ObjectOutput,它们是DataInput和DataOutput的子接口。这意味着数据流中涵盖的所有原始数据I/O方法也在对象流中实现,因此,对象流可以包含原始值和对象值的混合。ObjectStreams示例说明了这一点,ObjectStreams创建与DataStreams相同的应用程...
Java™ 教程(数据流)
博弈
2019-01-12
阅读 2 分钟
1.9k
数据流支持原始数据类型值(boolean、char、byte、short、int、long、float和double)以及String值的二进制I/O,所有数据流都实现DataInput接口或DataOutput接口,本节重点介绍这些接口最广泛使用的实现,DataInputStream和DataOutputStream。
Java™ 教程(命令行I/O)
博弈
2019-01-12
阅读 3 分钟
2.2k
标准流是许多操作系统的一个特性,默认情况下,它们从键盘读取输入并将输出写入显示器,它们还支持文件和程序之间的I/O,但该功能由命令行解释器控制,而不是程序。
Java™ 教程(格式化流)
博弈
2019-01-12
阅读 3 分钟
2.4k
你可能需要的唯一PrintStream对象是System.out和System.err(有关这些对象的更多信息,请参阅命令行中的I/O),当你需要创建格式化的输出流时,请实例化PrintWriter,而不是PrintStream。
Java™ 教程(扫描)
博弈
2019-01-12
阅读 2 分钟
1.8k
编程I/O通常涉及转换人们喜欢使用的整齐格式的数据,为了帮助你完成这些工作,Java平台提供了两个API,扫描器API将输入分解为与数据位相关联的单个标记,格式化API将数据组装成格式良好、可读的形式。
Java™ 教程(缓冲流)
博弈
2019-01-12
阅读 1 分钟
2.4k
到目前为止,我们看到的大多数示例都使用无缓冲的I/O,这意味着每个读取或写入请求都由底层操作系统直接处理,这可以使程序效率低得多,因为每个这样的请求通常触发磁盘访问、网络活动或一些相对昂贵的其他操作。
Java™ 教程(字符流)
博弈
2019-01-12
阅读 3 分钟
2.3k
Java平台使用Unicode约定存储字符值,字符流I/O自动将此内部格式与本地字符集进行转换,在Western语言环境中,本地字符集通常是ASCII的8位超集。
Java™ 教程(字节流)
博弈
2019-01-12
阅读 2 分钟
2k
有许多字节流类,为了演示字节流的工作原理,我们将重点关注文件I/O字节流,FileInputStream和FileOutputStream,其他类型的字节流以大致相同的方式使用,它们的不同之处主要在于它们的构造方式。
Java™ 教程(I/O流)
博弈
2019-01-11
阅读 1 分钟
2k
I/O流 I/O流表示输入源或输出目标,流可以表示许多不同类型的源和目标,包括磁盘文件、设备、其他程序和内存数组。 流支持许多不同类型的数据,包括简单字节、原始数据类型、本地化字符和对象,有些流只是传递数据,其他人以有用的方式操纵和转换数据。 无论它们如何在内部工作,所有流都为使用它们的程序提供相同的简单...
Java™ 教程(管理源文件和类文件)
博弈
2019-01-11
阅读 2 分钟
1.8k
管理源文件和类文件 Java平台的许多实现依赖于分层文件系统来管理源文件和类文件,尽管Java语言规范不要求这样做,策略如下。 将类、接口、枚举或注解类型的源代码放在文本文件中,该文件的名称是类型的简单名称,其扩展名为.java,例如: {代码...} 然后,将源文件放在一个目录中,该目录的名称反映了该类型所属的包的...
Java™ 教程(使用包成员)
博弈
2019-01-11
阅读 3 分钟
1.8k
使用包成员 组成包的类型称为包成员。 要从其包外部使用公共包成员,你必须执行以下操作之一: 通过其完全限定名称引用该成员 导入包成员 导入成员的整个包 每种情况都适用于不同的情况,如以下各节所述。 通过其完全限定名称引用包成员 到目前为止,本教程中的大多数示例都通过简单名称引用类型,例如Rectangle和StackO...
Java™ 教程(创建和使用包)
博弈
2019-01-11
阅读 3 分钟
2.3k
定义:包是一组提供访问保护和名称空间管理的相关类型,请注意,类型引用类、接口、枚举和注解类型,枚举和注解类型分别是特殊的类和接口,因此在本课中通常将类型简称为类和接口。
Java™ 教程(泛型的限制)
博弈
2019-01-11
阅读 4 分钟
2.9k
泛型的限制 要有效地使用Java泛型,必须考虑以下限制: 无法使用基元类型实例化泛型类型 无法创建类型参数的实例 无法声明类型为类型参数的静态字段 无法对参数化类型使用强制类型转换或instanceof 无法创建参数化类型的数组 无法创建、捕获或抛出参数化类型的对象 无法重载将每个重载的形式参数类型擦除为相同原始类型...
Java™ 教程(类型擦除)
博弈
2019-01-11
阅读 7 分钟
2.7k
类型擦除 泛型被引入到Java语言中,以便在编译时提供更严格的类型检查并支持通用编程,为了实现泛型,Java编译器将类型擦除应用于: 如果类型参数是无界的,则用它们的边界或Object替换泛型类型中的所有类型参数,因此,生成的字节码仅包含普通的类、接口和方法。 如有必要,插入类型转换以保持类型安全。 生成桥接方法...
Java™ 教程(泛型通配符使用指南)
博弈
2019-01-10
阅读 2 分钟
2.3k
“in”变量向代码提供数据,想象一下带有两个参数的复制方法:copy(src, dest),src参数提供要复制的数据,因此它是“in”参数。
Java™ 教程(泛型通配符捕获和Helper方法)
博弈
2019-01-10
阅读 4 分钟
4.2k
在某些情况下,编译器会推断出通配符的类型,例如,列表可以定义为List<?>,但是在评估表达式时,编译器会从代码中推断出特定类型,此场景称为通配符捕获。
Java™ 教程(泛型通配符)
博弈
2019-01-10
阅读 4 分钟
2.6k
在泛型代码中,称为通配符的问号(?)表示未知类型,通配符可用于各种情况:作为参数、字段或局部变量的类型,有时作为返回类型(尽管更好的编程实践是更加具体),通配符从不用作泛型方法调用、泛型类实例创建或超类型的类型参数。
Java™ 教程(类型推断)
博弈
2019-01-10
阅读 4 分钟
2.7k
类型推断是Java编译器查看每个方法调用和相应声明的能力,以确定使调用适用的类型参数,推理算法确定参数的类型,如果可用,还确定分配或返回结果的类型,最后,推理算法尝试查找适用于所有参数的最具体类型。
Java™ 教程(泛型、继承和子类型)
博弈
2019-01-10
阅读 2 分钟
2.2k
如你所知,只要类型兼容,就可以将一种类型的对象分配给另一种类型的对象,例如,你可以将Integer分配给Object,因为Object是Integer的超类型之一:
Java™ 教程(有界类型参数)
博弈
2019-01-10
阅读 3 分钟
1.8k
有时你可能希望限制可用作参数化类型中的类型参数的类型,例如,对数字进行操作的方法可能只想接受Number或其子类的实例,这是有界类型参数的用途。
Java™ 教程(泛型方法)
博弈
2019-01-10
阅读 2 分钟
2.3k
泛型方法是引入其自己的类型参数的方法,这类似于声明泛型类型,但类型参数的范围仅限于声明它的方法,允许使用静态和非静态泛型方法,以及泛型类构造函数。
Java™ 教程(泛型原始类型)
博弈
2019-01-10
阅读 2 分钟
2k
泛型原始类型 原始类型是没有任何类型参数的泛型类或接口的名称,例如,给定Box泛型类: {代码...} 要创建参数化类型的Box<T>,请为形式类型参数T提供实际类型参数: {代码...} 如果省略实际的类型参数,则创建一个原始类型Box<T>: {代码...} 因此,Box是泛型Box<T>的原始类型,但是,非泛型类或接口...
Java™ 教程(泛型类型)
博弈
2019-01-10
阅读 3 分钟
1.9k
由于它的方法接受或返回一个Object,所以你可以自由地传入任何你想要的东西,前提是它不是一种原始类型,无法在编译时没有办法验证如何使用该类,代码的一部分可能会在box中放置一个Integer并期望从中获取Integer,而代码的另一部分可能会错误地传入String,从而导致运行时错误。
上一页
1
…
More
4
5
6
(current)
7
8
…
More
下一页
上一页
6
(current)
下一页