记录:专栏-进击的Java新人

地址:进击的Java新人

https://zhuanlan.zhihu.com/hinus

第一周:

进制及计算机表示

尾递归优化

谈递归时,我们在谈什么?

面试官的一次面试经历分享

  • JVM有没有尾递归优化?
  • 里面m的n次方优化解法

Java语言的品味(一)

Java语言的品味(二)

第二周:

构建工具的进化:ant, maven, gradle

Java中的设计模式:适配与装饰

Java语言的品味(三)

数据结构(一):栈

用栈进行表达式求值

第三周:

深入理解函数调用(上)

深入理解函数调用(下)

递归下降做表达式求值

位操作

第四周:

数据结构(二):链表

数据结构(三):队列

泛型

数据结构(四):Java中的容器

第五周:

数据结构(五):二叉树

数据结构(六):二叉树的遍历

Java中的设计模式之迭代器

数据结构(七):二叉树的删除和应用举例

Java网络编程(一):初体验

分层网络协议

Java网络编程(二):套接字

多线程编程基础

进程的内存

第六周:

平衡二叉树

代码实现平衡二叉树

红黑树(一):插入

红黑树(二):删除

第七周:

红黑树(三):TreeMap源码解析

Unicode字符集与UTF-8编码

哈希表

HashMap源码解析

第八周:

Java网络编程(一)

分层网络协议

Java网络编程(二):套接字

多线程编程基础

第九周:

Java反射

Class对象

代理模式

动态代理

第十周:

面向对象编程(一)

面向对象编程(二)

排序算法

面向对象编程(三)

第十一周:

算法(一):贪心

数据结构:堆

堆排序和PriorityQueue源码解析

算法设计(二):分治

第十二周:

强大的二分法

快速排序

归并排序

Java反射

Class对象

代理模式

map-reduce中的分治思想

第十三周:

计数排序

基数排序

构建自己的RPC

序列化与反序列化

第十四周:

多线程服务端

多线程的内幕

线程的共享互斥

纯函数和CAS

第十五周

第一课:Atomic变量

第二课:线程池

第三课:工厂模式

第四课:线程池的结构和原理

第十六周

第一课:nio(1):buffer

第二课:nio(2):channel

第三课:Java NIO(3): IO模型

第四课:Java NIO(4): 阻塞与非阻塞

第十七周

第一课:Java NIO(5): IO多路复用

第二课:Java NIO(6): Selector

第三课:Java NIO (7):Epoll版的Selector

第四课:Java NIO(8) : 异步模型之状态机

第十八周

第一课:Java NIO(9) : 状态机

第二课:Java NIO(10): 异步模型之Callback

第三课:Direct Buffer

第四课:Direct Buffer的回收(待GC课程完成后补充)

第十九周

第一课:FileChannel的基本操作

第二课:内存映射(memory map)

第三课:FileChannel的map

第二十周

第一课:协程,高并发IO的终级杀器(1)

第二课:协程,高并发IO的终极杀器(2)

第三课:协程,高并发IO终极杀器(3)

第二十一周

第一课 : 图算法:图的表达

第二课:图的广度优先搜索

第三课:习题课:八数码问题(上)

第四课:习题课:八数码问题(下)

第二十二周

第一课:图的深度优先搜索

第二课:DFS构造全排列

第三课:垃圾回收与图算法

第四课:图的非递归遍历

第二十三周

第一课:垃圾回收:基本概念

第二课:GC算法之引用计数

第三课:Python的引用计数

第四课:C++智能指针(上)

第二十四周

第一课:C++智能指针(下)

第二课:copy gc(1)

第三课:Copy GC(2) : 非递归的遍历

第四课:Copy GC(3) : JVM中的实现

第二十七周

第一课:GIT的使用(动手操作,小密圈专有课程)

第二十八周

第一课:Gradle的使用(动手操作,小密圈专用课程)

第二十九周

第一课:单例模式

谈递归时,我们在谈什么?

8086通用寄存器 EAX EBX ECX EDX ESI EDI ESP EBP EIP

EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。

EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。

ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。

EDX 则总是被用来放整数除法产生的余数。

ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串

ESP寄存器里存储的是在栈的栈顶

EBP寄存器里存储的是是栈的栈底指针,通常叫栈基址。

EIP寄存器里存储的是CPU下次要执行的指令的地址。

ESP     栈顶     Extended stack pointer

EBP     栈底     extended base pointer

EIP      指令     extended instruction pointer

Java语言的品味(二)

自动拆装箱的坑

Integer类型可用 = 直接比较

Long直接使用new构造一个长整型的时候,会生成一个新的对象。而使用 valueOf 的时候,如果参数位于[-128, 127]这个区间内,则直接从cache数组中取一个对象。

System.out.println(new Long(1).equals(1)); //false 右边自动装箱成Int

System.out.println(new Long(1) == 1); //true 左边自动拆箱,变成1

字面量都不是对象

class JvmEqualsTest {

    public static void main(String[] args) {

            String s3 = "s";

            String s4 = "s";

            System.out.println(s3==s4);  //true

            Integer i = 2017;

            Integer j = 2017;

            System.out.println(i==j);   //false

            i = 127;

            j = 127;

            System.out.println(i==j);   //true

            String s1 = new String("s");

            String s2 = new String("s");

            s1.concat("b");

            System.out.println(s1.intern()==s2.intern());       //true

    }   

}

Unicode字符集与UTF-8编码

unicode字符集      把数字与汉字对应起来

UTF-8                  一种unicode编码方式

java.nio.ByteBuffer中flip、rewind、clear方法的区别

http://www.blogjava.net/sdjxsgb/archive/2013/06/18/400703.html

UTF_8的源码没看懂

第十四周:线程的共享互斥

static synchronized 锁住的是类的Class对象

发表评论

邮箱地址不会被公开。 必填项已用*标注