写过
Java
程序的同学,都遇到过NullPointerException
,为了防止空指针异常,程序中往往要添加很多非Null
判断。这些判断不仅麻烦,还影响程序的欣赏性和可读性。既然非空判断不可避免,那有没有合适的框架来优雅的解决这一问题呢,java8
之前,官方并未提供这样的语法糖,可以使用Guava
等外部API来解决这一问题。直到java8
提供了Optional API
。
《阿里巴巴JAVA开发手册》也推荐开发者使用Optional API
来避免NPE
。
BIO、NIO与AIO(一)
本文对
java
中三种I/O
方式的用法以及性能进行比较。这三种I/0
方式对应着五大模型中的阻塞模型、多路复用模型、异步模型。I/O
的应用场景通常包含磁盘I/O
和网络I/O
,本文从这两个方面介绍三种IO
方式,比较三者之间的性能。
五大IO模型
对程序员而言,
I/O
操作是程序中最常见的操作之一。比如说磁盘文件的读写、数据的网络传输等等。程序=数据结构+算法,其中数据元素的获取就必须通过I/O
操作来完成。在当今这个数据大爆炸时代,I/O
问题尤其突出,很容易成为一个性能瓶颈。
然而很多程序员甚至是高级程序员对I/O
操作只是停留在会用的阶段,遇到相应的业务场景只是去COPY一段代码,小型项目这样当然没问题,对于I/O
密集型的项目,如果理解不深,有可能会造成严重的问题。实际工作中我也是这样,经常在网上找一段代码不去分析他的原理,从而走了不少弯路。作为Java
程序员,深入的理解I/O
操作很有必要,所以在这里做一个系统的整理。
跳一跳辅助的java实现
最近微信跳一跳小游戏在朋友圈着实火了一把,为了争第一,朋友圈的最高分一次一次刷新,随后好多人晒出了自己刷分攻略,有制作物理外挂的,有程序外挂的。作为程序员,特别动手能力比较强的程序员,这时候就闲不住了。
GitHub
上已经有Python
版外挂(https://github.com/wangshub/wechat_jump_game),这里我用Java
实现。