2019 有赞测试沙龙

明年就要毕业了,三月份我会去有赞领薪水,这是职场的第一站。有赞在杭州每年会组织一次测试技术沙龙,今年是第三次,作为准有赞新青年,我去现场支持了一下。

Read More

NIO - Buffer、Channel 和 Selector

转载 https://javadoop.com/post/java-nio

本文将介绍 Java NIO 中三大组件 Buffer、Channel、Selector 的使用。

本来要一起介绍非阻塞 IO 和 JDK7 的异步 IO 的,不过因为之前的文章真的太长了,有点影响读者阅读,所以这里将它们放到另一篇文章中进行介绍。

Read More

Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

转载 https://javadoop.com/post/hashmap

今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍。本来以为花不了多少时间的,不过最终还是投入了挺多时间来完成这篇文章的。

网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚。终归是希望能降低大家学习的成本,不希望大家到处找各种不是很靠谱的文章,看完一篇又一篇,可是还是模模糊糊。

阅读建议:四节基本上可以进行独立阅读,建议初学者可按照 Java7 HashMap -> Java7 ConcurrentHashMap -> Java8 HashMap -> Java8 ConcurrentHashMap 顺序进行阅读,可适当降低阅读门槛。

阅读前提:本文分析的是源码,所以至少读者要熟悉它们的接口使用,同时,对于并发,读者至少要知道 CAS、ReentrantLock、UNSAFE 操作这几个基本的知识,文中不会对这些知识进行介绍。Java8 用到了红黑树,不过本文不会进行展开,感兴趣的读者请自行查找相关资料。

Read More

设计模式也可以这么简单

转载 https://javadoop.com/post/design-pattern

一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写得不错的😂😂😂,花了不少心思来写这文章和做图,力求让读者真的能看着简单同时有所收获。

设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four (GoF) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。

有一些重要的设计原则在开篇和大家分享下,这些原则将贯通全文:

  1. 面向接口编程,而不是面向实现。这个很重要,也是优雅的、可扩展的代码的第一步,这就不需要多说了吧。
  2. 职责单一原则。每个类都应该只有一个单一的功能,并且该功能应该由这个类完全封装起来。
  3. 对修改关闭,对扩展开放。对修改关闭是说,我们辛辛苦苦加班写出来的代码,该实现的功能和该修复的 bug 都完成了,别人可不能说改就改;对扩展开放就比较好理解了,也就是说在我们写好的代码基础上,很容易实现扩展。

创建型模式比较简单,但是会比较没有意思,结构型和行为型比较有意思。

Read More

学期总结 2018-2019(二)

317实验室的学期总结来了,像我这样优秀的人当然是积极参与。

Read More

JVM - 参数配置影响线程数

一道面试

找工作是个脑力活也是个体力活啊,最近秋招给我累得够呛,昨天面了杭州大华,被一道 JVM 参数的问题难住了。

Read More

算法 - PNPoly处理点和多边形

最近做了一个算法题【盒马配货】:

(题目大意)盒马店的配送范围由一些点组成的多边形确定,给定一个点判断其是否在配送范围内,若在,则此点不需要挪动,打印”no 0”;若不在,则给出此点需要挪动到配送范围的最短距离,打印”yes 距离”。

Read More

JVM - 运行时内存区域

Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。

那在整个程序执行过程中,JVM中怎么存取数据和相关信息呢?

事实上在JVM中是用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。

Read More

JVM - 类加载过程

开启Java程序员进阶之旅,比较难啃的JVM。

Read More

设计模式 - 6大原则

关于设计模式的六大设计原则的资料网上很多,但是很多地方解释地都太过于笼统化,我也找了很多资料来看,发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂,因此转载过来。

Read More