全新552B架构全面超越V4 Pro,闲时缓存命中价降至每百万0.02元。 [..]
Read More和其他多数语言不同,Java 内置支持多线程。多线程程序包含两条或两条以上并发运行的部分,每一部分叫一个线程(thread),各有独立执行路径。多线程是多任务处理的一种特殊形式。 多任务处理几乎被所有现代操作系统支持,但分两种:基于进程的和基于线程的。把两者分清很重要。 一、进程与线程 进程(pro…
学过数据结构的人对双向链表都不陌生。用 Java 怎么实现?链表在内存里并不连续,逻辑顺序靠指针串起来。每个结点有数据域,还有指向其它结点的引用。 单链表只有后继。要对某个结点的前驱动手,只能从头再走一遍,很麻烦。双向链表多一个指向父结点的引用,前后都能走。 一、结点:数据 + 父指针 + 子指针 …
线性表、链表、哈希表是常用数据结构。做 Java 开发时,JDK 已经在 java.util 里准备好了一套类。下面按接口把各自的职责和使用方式理清。 记住两棵树:Collection(单列)和 Map(键值)。SDK 不提供直接实现 Collection 的类,实现都落在 List、Set 这些子…
很多新手学 Java,一上来就被"JDK、JVM、JRE、环境变量、面向对象、多态"这一堆词砸晕,不知道先抓哪头。这篇文章把 Java 入门必须过的 18 个知识点串成一条线:先让程序跑起来,再学语言基础,最后进到面向对象和高级特性。跟着这条线走,你会对 Java 有一个完整而不混乱的骨架。 说明:…
线程是一个程序内部的顺序控制流:一个进程相当于一个任务,一条线程相当于这个任务里的一条执行路径。多进程是操作系统同时跑多个程序;多线程是同一个应用程序里有多条顺序流同时执行。Java 的线程通过 java.lang.Thread 实现。 JVM 启动时会有一个由 public static void…
继「多线程程序模型研究」之后,再给出一个更复杂、但功能比较完整、可以直接套用的线程池。实例改写自 Apache 项目源码(原文约 800 行,跑在 Tomcat 等服务器上),这里做了精简,只留核心,并配测试类。 学完可以直接模仿套用,不必自己从零再写一遍池。关键两块:线程池类 ThreadPool…
多线程是复杂程序里几乎躲不开的一块。为了把运行性能拉上来,把工作拆成多条线程是常见做法。下面用扫描主机端口的例子,把单线程、一端口一线程、以及两种线程池模型都走一遍。 阅读前提:有一定 Java 基础,对 Socket 不陌生。原文程序在 Java SDK 1.4.2 下编译运行通过。 一、单线程扫…
从学 Java 才真正碰到 OOP。习惯用 C 的人,往往会嫌 Java 慢、代码长、一件小事要拆好多类。抵触很正常;真正别扭的,是不知道该怎么提炼类,一不小心又滑回过程式思路。 面向对象的精髓,是从现实世界的人类思维习惯出发:先谈业务要什么,再翻译成程序能懂的结构。封装的是业务逻辑,不是 sele…
输入输出(I/O)是程序与外部设备或其他计算机交互的操作:从键盘读、从本地或网络文件读、往外写。Java 把这些操作用流统一接口表示,程序设计更简单。 流(Stream)指输入输出时各部件之间的数据流动。按传输方向分成输入流与输出流。流里既可以是原始二进制,也可以是按某种格式编码后的数据。 一、输入…
Java 的 IO 可以按三个轴来记:方向(输入 / 输出)、数据单位(字节 / 字符)、功能(节点流 / 处理流)。四个抽象基类是 InputStream、OutputStream、Reader、Writer。 分类轴 一类 另一类 方向 输入流 输出流 数据单位 字节流 InputStream …