如何高效拓展Java技术栈

随着Java技术圈的不断壮大,架构环境的日益提升,Java程序员要学习的东西也在不断增加。都想要快速充电并Get到技能点,但是不是苦于孤身一人而无法坚持下来研磨技术,就是自身没有培养出来好的学习方法而万事蹉跎,再者就是基础知识不够牢固而止步不前,所以,在这里,就分享一下个人的一些小经验与方法。

由一段Java代码渗析原因

前段时间,看到了一段如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.jangz.syntax.scary;

public class ScaryExpression {

public static void autoIncrement() {
int count = 0;
for (int i = 0; i < 100; i++)
count = count++;
System.out.printf("count is %d.\n", count);
}

public static void main(String[] args) {
autoIncrement();
}
}

然后这段代码的运行结果如下:
2018-04-23_232405.png

你真的懂得Java-OOP吗?

众所周知,Java是纯面向对象编程的一门语言,然而这就造成很多Java Programmer自以为自己随随便便写出来的代码就是面向对象编程的结晶。

我们以一个简单的案例来切入主题:“人吃饭”。

面向对象编程我们需要注意一下几点:

  • 要围绕对象来展开一系列的活动

  • 对象应该具备什么,不应该具备什么(也就是与生俱来与后天养成)

数据结构与算法整理

  1. 数据结构整理
  • 线性:数组,链表,堆栈,队列,hash表,块状数组,双端队列,位图(bitmap)

  • 树:堆,二叉排序/查找树,B+/B-树,AVL树,红黑树,树状数组,后缀树,后缀树组,splay树,线段树,Trie树(字母树 or 字典树),Treap(树堆)(后两个以前我都不知道)

  • 图:图

  • 其他:并查集

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器