blog

首页

一些简明概念

Java 标识符

Java 修饰符 & 变量

Java 面向对象语言

多态

封装

给私有的成员变量和方法提供共有或者保护的操作方法。

Java 的基本类型

byte,char,short -> int -> long -> folat -> double

引用类型

读写文件

读取文件

数据结构

Java集合框架

Java集合框架

Socket相关概念

同步和异步

同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO 操作并等待或者轮询的去查看IO 操作是否就绪,而异步是指用户进程触发IO 操作以后便开始做自己的事情,而当IO 操作已经完成的时候会得到IO 完成的通知。

阻塞和非阻塞

阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作方法的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入方法会立即返回一个状态值。

Java 多线程编程

Java 注释

标签 描述 示例
@author 标识一个类的作者 @author description
@deprecated 指名一个过期的类或成员 @deprecated description
{@docRoot} 指明当前文档根目录的路径 Directory Path
@exception 标志一个类抛出的异常 @exception exception-name explanation
{@inheritDoc} 从直接父类继承的注释 Inherits a comment from the immediate surperclass.
{@link} 插入一个到另一个主题的链接 {@link name text}
{@linkplain} 插入一个到另一个主题的链接,但是该链接显示纯文本字体 Inserts an in-line link to another topic.
@param 说明一个方法的参数 @param parameter-name explanation
@return 说明返回值类型 @return explanation
@see 指定一个到另一个主题的链接 @see anchor
@serial 说明一个序列化属性 @serial description
@serialData 说明通过writeObject( ) 和 writeExternal( )方法写的数据 @serialData description
@serialField 说明一个ObjectStreamField组件 @serialField name type description
@since 标记当引入一个特定的变化时 @since release
@throws 和 @exception标签一样. The @throws tag has the same meaning as the @exception tag.
{@value} 显示常量的值,该常量必须是static属性。 Displays the value of a constant, which must be a static field.
@version 指定类的版本 @version info

文件头部添加

/*
 * <p>项目名称: ${project_name} </p> 
 * <p>文件名称: ${file_name} </p> 
 * <p>描述: [类型描述] </p>
 * <p>创建时间: ${date} </p>
 * <p>公司信息: ************公司 *********部</p> 
 * @author <a href="mail to: *******@******.com" rel="nofollow">作者</a>
 * @version v1.0
 * @update [序号][日期YYYY-MM-DD] [更改人姓名][变更描述]
 */

方法上添加

/**
 * @Title:${enclosing_method}
 * @Description: [功能描述]
 * @Param: ${tags}
 * @Return: ${return_type}
 * @author <a href="mail to: *******@******.com" rel="nofollow">作者</a>
 * @CreateDate: ${date} ${time}</p> 
 * @update: [序号][日期YYYY-MM-DD] [更改人姓名][变更描述]     
 */

getter & setter

/**
 * 获取  ${bare_field_name}
 */

/**
 * 设置   ${bare_field_name} 
 * (${param})${field}
 */

Java 8 特性

java 8 Lambda表达式

(parameters) -> expression;

(parameters) -> {expression;}
- 可选的类型声明
- 可选的参数圆括号
- 可选的大括号
- 可选的反正关键字

> 例如
() -> 5;
x -> x + 5;
(x, y) -> x - y;
(int x, int y) -> x + y
(String s ) -> System.out.print(s)


lambda 表达式只能引用标记了final的外层局部变量不能在lambda内部修改定义在域外的局部变量

Java 8 方法引用

构造器引用Class<T>::new
> final Car car = Car.create(Car::new;)
> final List<Car> cars = Arrays.asList(car);

静态方法引用语法Class::static_method
>cars.forEach( Car::collide );

特定类的任意方法引用Class::method
>cars.forEach( Car::repair );

特定对象的方法引用
> final Car police = Car.create( Car::new);
> cars.forEach( police::follow );

Java 8 函数式接口

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

Java 8 增加接口的默认方法

首先之前的接口是个双刃剑好处是面向抽象而不是面向具体编程缺陷是当需要修改接口时候需要修改全部实现该接口的类目前的 java 8 之前的集合框架没有 foreach 方法通常能想到的解决办法是在JDK里给相关的接口添加新的方法及实现然而对于已经发布的版本是没法在给接口添加新方法的同时不影响已有的实现所以引进的默认方法他们的目的是为了解决接口的修改与现有的实现不兼容的问题

Java 8 Stream

Stream是一个来自数据源的元素队列并支持聚合操作
- 元素是特定类型的对象形成一个队列 Java中的Stream并不会存储元素而是按需计算
- 数据源 流的来源 可以是集合数组I/O channel 产生器generator 
- 聚合操作 类似SQL语句一样的操作 比如filter, map, reduce, find, match, sorted等

和以前的Collection操作不同 Stream操作还有两个基础的特征

- Pipelining: 中间操作都会返回流对象本身 这样多个操作可以串联成一个管道 如同流式风格fluent style)。 这样做可以对操作进行优化 比如延迟执行(laziness)和短路( short-circuiting)

- 内部迭代 以前对集合遍历都是通过Iterator或者For-Each的方式, 显式的在集合外部进行迭代 这叫做外部迭代 Stream提供了内部迭代的方式 通过访问者模式(Visitor)实现
    - forEach
    - map
    - filter
    - limit
    - sorted
    - stream / parallelStream
    - collect
    - count
    - sum
    - summaryStatistics
    - 等等