人间忽晚, 山河已秋.

Find me on

Writing

服务加载器

利用 ServiceLoader 可以实现接口与实现的分离, 并且可以让一个 接口有多种实现以供不同情况下的选择, 也可以用于 API 模块 和 实现 模块的分బ

爱尔兰哨笛入门选购指南

前言: 想必你是听到了某首哨笛曲才想入坑的, 这是一门小众的乐器(至少国内是这样), 网上的教程不多, 本文主要针对 "入门" 哨笛的选购, 对于提到的中端哨笛可以考虑, 高端哨笛可以做个了解. 这篇文章并不谈工艺 / 历史背景等等等等, 只做入门指南. 这个圈子很小, 但瓜却不少, 且行且珍惜..

Java - Lambda表达式

Lambda 语法: 使用 lambda 表达式的一般语法是: (Parameters) -> { Body } 参数括在括号中, 与方法相同, 而 lambda 表达式主体是用大括号括起来的代码块 lambda 表达式主体可以有局部变量和语句 我们可以在 lambda 表达式主体中使用 break

Java - 多线程基础

多任务: 真正的多任务是在多核 CPU 之后, 在此之前所有多任务都是伪多任务 高并发: 多个任务抢占少量资源 高并发三大要素: 可见性 原子性 排序性 Java 代码, 底层最后都会编译成汇编指令, 汇编指令做优化时代码执行顺序可能改变, 这样可能导致双重检查锁失效 时间片: 每个任务运行的时间,

Java - 泛型

介绍: 泛型的本质是为了参数化类型 (在不创建新的类型的情况下, 通过泛型指定的不同类型来控制形参具体限制的类型), 也就是说在泛型使用过程中, 操作的数据类型被指定为一个参数, 这种参数类型可以用在类、接口和方法中, 分别被称为泛型类、泛型接口、泛型方法 泛型保证了类型的统一 泛型只支持对象不支持

Java - 注解

元注解: @Retention @Target @Document @Inherited @Retention: 定义注解的保留策略 @Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中, 在 class 字节码文件中不包含, 用于编译时, 典型为@Gette

Java - 反射

介绍: 是一门Java提供的专门技术, 这门技术让 Java 成为一门准动态语言 存在性能问题, 会占用额外内存, 速度也会较慢 一个类在内存中只有一个 Class 对象 一个类被加载后, 类的整个结构都会封装在 Class 对象中 Class 类: class 的类, 所有类都指向了 Class

Java - IO

介绍: Input Output Stream 狭义: 数据在内存中输入和输出, 本地进程间的数据流动 广义: 不同电脑之间的数据流动, 远程进程间的数据流动 流的流动方式(数据的传输方向) : 输入流 输出流 流的数据格式: 字节流 字符流 File对象: Java封装的一个操作文件及文件夹的对象

Java - 抽象

抽象方法: 如果一个方法, 不需要实现体(函数内容), 就可以声明抽象方法 抽象方法: 没有方法体的方法, java 中使用 abstract 关键字声明的方法 访问修饰符 abstract 返回值类型 方法名称 抽象方法必须写在抽象类中 抽象类: 被 abstract 关键字声明的类, 不能直接实

Java - 面向对象

面向对象专业术语: OO (Oriented Object) : 面向对象 OOP (Oriented Object Programming) : 面向对象的编程 OOD (Oriented Object Design) : 面向对象的设计 OOA (Oriented Object Analysis