摘要: 今天看到一段代码,思考了一下觉得挺精妙的,围绕的是一个接口包装的问题,下面举个小栗子。 场景: 通常我们会利用接口来观测具有相同行为的对象,从而进行具体行为的派发,目的是为了解除调用方和行为对象的耦合,我们可以很方便的再次变换行为对象;但是我们往往会忽略,在调用方处理接口时形成的耦合。 设想一个常见 阅读全文
posted @ 2018-07-03 01:56 小z同学 阅读(614) 评论(0) 推荐(0) 编辑
摘要: 最近写了颇多笔试,下面归纳一下遇到过的经典排序算法 1、为了方便调试这些排序算法,这里设计了一个的简易测试框架 具体功能:当我们实现不同算法时,只需要关注方法本身的正确性和完整性,框架会自动化帮助我们完成对该方法的测试用例 实现方式:我们在外层调用封装好的框架,将对象传入框架中进行自我检查,使目标方 阅读全文
posted @ 2018-03-26 01:20 小z同学 阅读(922) 评论(0) 推荐(0) 编辑
摘要: 在最早学习四则运算的过程中,我们其实就已经掌握了进制算法,这一次我将对二进制运用这个进制算法来实现四则运算。 四则运算 math.c 从递归角度看待代码 递归是函数调用,考虑值的传递过程,适合阅读。 迭代是具体的实现过程,往往代码效率更加充分。 通常我们在写代码时,往往注重代码的效率和正确性,而忽略 阅读全文
posted @ 2018-02-13 02:38 小z同学 阅读(375) 评论(0) 推荐(1) 编辑
摘要: Java的方法调用过程 Java变量:基本类型变量、指针变量 push 压入新的栈桢 在栈桢内部创建局部基本类型变量,接收参数值 在栈桢内部创建局部指针变量,接收参数值后,该指针变量指向堆上实例 pop 弹出栈桢 基本类型变量和指针变量均被销毁 弹出原始栈桢 指针变量被销毁,堆上实例被垃圾回收 当然 阅读全文
posted @ 2018-02-07 01:56 小z同学 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 今天看JVM的过程中收获颇丰,但一想到这些学习心得将来可能被遗忘,便一阵恐慌,自觉得以后要开始坚持做读书笔记了。 操作系统层面的内存管理 物理内存是一切内存管理的基础,Java中使用的内存和应用程序的内存一样是从物理内存申请下来的内存。物理内存也就是寄存器,通过地址总线与CPU相连,通常情况下地址总 阅读全文
posted @ 2018-01-23 00:19 小z同学 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 我对代码风格的理解就是能使作者更好的写代码,能使阅者更好的读代码。 方法如段落,类如章节,代码的美感正如文字的美感,代码应是一种艺术。 代码该如何写 在写代码的过程中最重要的便是对章节和段落的安排。和写文章一样,段落之间存在着引用,如同盘根错节的树结构。当行文没有着重点,有血肉却无骨架时,说明该分章 阅读全文
posted @ 2018-01-21 12:18 小z同学 阅读(139) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-01-01 21:14 小z同学 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 接昨天的文章顺便理一理方法的执行过程,这里借许令波大牛的图一用 方法执行之前 调用昨天的run工具,完成了目标源码的编译后;获取ClassLoader对象,加载目标字节码至方法区,在堆上创建Class对象并初始化(总之对象就是一种有场景的半持久型数据)。 方法的执行过程 调用对象的方法,开始执行方法 阅读全文
posted @ 2017-12-31 23:56 小z同学 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 看了一下老陈写的模仿JDK动态代理,从中取一部分单独扩展,模拟一下IDE上的run过程(不愧是老陈,去年写的东西我要现在才能理解) 对run过程的猜想 在点击run的过程中应该做了不少事。先编译运行run工具,执行引擎增加一个线程开始执行被加载的run工具的字节码指令;线程执行过程中将目标源码进行编 阅读全文
posted @ 2017-12-30 19:09 小z同学 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 今天初步接触了一下Java的动态加载概念,发现很多情景下我们都会遇到这种用法,自己当初并没有意思到,只是把它当做那种奇奇怪怪的感觉... 首先,程序是如何跑起来的 第一步,编译检查、通过编译 第二步,构建加载器对象、构建字节码对象,完成静态加载 第三步,在一切准备完成后,对已经加载的目标上跑线程 第 阅读全文
posted @ 2017-12-21 01:17 小z同学 阅读(6913) 评论(1) 推荐(1) 编辑