[LeetCode][15]3Sum解析与快速排序算法-Java实现

Q: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives ...

2016-06-17 09:14:29

阅读数 1405

评论数 0

[jvm解析系列][十四]动态代理和装饰模式,带你看源码深入理解装饰模式和动态代理的区别。

不知道大家知不知道设计模式中有一种叫做装饰,举一个简单的例子。 一天一个年轻领导小王讲话:咳咳,我们一定要xxx抓紧xxxx学习xxx的精神!好,今天的会议结束! 然后有一个老领导李同志接过来说:那个我在补充两点,个别同志xxx,一定要注意xxx。好散会。 然后另一天小王同志又在讲话:xxx...

2016-06-16 19:26:07

阅读数 2209

评论数 1

[LeetCode][14]Longest Common Prefix解析 两种算法和底层源码的深入对比-Java实现

Q: Write a function to find the longest common prefix string amongst an array of strings. A: 这题的大概意思就是说给你一组字符串找出其中最长的哪个通用的前缀出来。这个东西不难找,但是如何找的又快又...

2016-06-15 13:12:37

阅读数 3288

评论数 3

[jvm解析系列][十三]字节码指令小节,从字节码看JVM的栈解释器执行过程。

众所周知,JVM以前一直采用的是解释执行,但是后来在历代的版本更迭中也加入了编译执行。所以总的来说JVM是包含了解释执行和编译执行。这一部分不属于JVM的范畴了,已经属于编译了,大多数都是进行词法分析之类的,以后有时间会补充。 同时大家都知道现在大体上分为两种指令集架构,第一种就是基于栈的第二种...

2016-06-15 10:28:39

阅读数 1420

评论数 0

[LeetCode][13]Roman to Integer解析 罗马字符转int类型关于栈的常数实现-Java实现

Q: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. A: 以下解法和代码没有借阅以往任何资料,如果有更好...

2016-06-14 10:36:50

阅读数 2349

评论数 0

[jvm解析系列][十二]分派,重载和重写,查看字节码带你深入了解分派的过程。

重载和重写是分派中的两个重要体现,也是因为这个原因我们才把重载和重写写在了标题上。这一章我们的很多部分都在代码试验上。 总的来说分派分为静态分派和动态分派两种。 静态分派: 首先我们来看一段源码: public class Dispatch { public static...

2016-06-14 08:50:08

阅读数 1454

评论数 0

[LeetCode][12]Integer to Roman解析 int转罗马字符时间复杂度为常数的实现-Java实现

Q: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. A: 俺是真不知道啥是roman,我去查了一下合...

2016-06-13 09:57:08

阅读数 1695

评论数 0

[jvm解析系列][十一]字节码执行之栈帧,你的字节码是如何运行的?

在之前的章节中我们讲解了jvm的内存分配和管理,class的文件结构,就差之行了。那么从第十一章开始我们就开始讲java虚拟机是如何执行一个class文件的。 首先我们应该明确虚拟机是区别于物理机的一种说法,物理机的执行引擎是建立在处理器,硬件 ,指令集之上的。而我们的虚拟机则由自己实现。在虚拟...

2016-06-13 08:34:33

阅读数 1592

评论数 0

[LeetCode][11]Container With Most Water解析 时间复杂度为O(n) -Java实现

Q: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that ...

2016-06-12 14:16:19

阅读数 1955

评论数 0

[jvm解析系列][十]类加载器和双亲委派模型,你真的了解ClassLoader吗?

上一章我们讲到,一个类加载到内存里我们可以操作的部分只有两个,一个是加载部分一个是static{},我相信static{}不用多讲了。 接下来我们就来解析一下ClassLoader即类加载器,他就是用来加载字节码到方法区的类。 当年出现ClassLoader这个东西动态加载类的字节码主要还是为...

2016-06-12 12:31:54

阅读数 2411

评论数 0

[LeetCode][10]Regular Expression Matching解析 -Java实现

Q: Implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the preced...

2016-06-11 14:38:15

阅读数 2380

评论数 0

[jvm解析系列][九]类的加载过程和类的初始化。你的类该怎么执行?为什么需要ClassLoader?

通过前面好几章的或详细或不详细的介绍,我们终于把字节码的结构分析的差不多了。现在我们面临这样一个问题,如何运行一个字节码文件呢? 首先,java语言不同于其他的编译时需要进行链接工作的语言不通,java语言有一个很明显的特性,那就是动态加载,一个字节码的加载往往都是在程序运行的时候加载进来的,很多...

2016-06-11 10:25:26

阅读数 1868

评论数 0

[LeetCode][9]Palindrome Number解析与StringBuilder.reverse()源码实现 -Java实现

Q: Determine whether an integer is a palindrome. Do this without extra space. A: 这个题目说实话,我是后半句没有看懂的。。。这个without extra space不知道是不是单纯的只是不让用多余空间,如果我理解错...

2016-06-10 20:11:43

阅读数 1972

评论数 1

[jvm解析系列][八]方法表集合,Code属性和Exceptions属性,你的字节码存在哪里了?

根据我们第五章的总构图来看,这一章我们正该讲到方法表集合: 大家可能注意到在java中声明一个方法和声明一个变量很相似,public int a = 0;和public int a(){};于是在方法表集合中和字段表集合也很相似。 一个方法表的结构应当和下图一样: 对比字段表应该发现几乎是一样...

2016-06-10 11:30:53

阅读数 2868

评论数 0

[jvm解析系列][七]字段表集合、volatile、volatile和属性表集合,你的变量该如何存储?

上段我们说到一个类的基本构成,今天我们来讲一下类的内部结构。类的内部一般情况下由类的成员变量(类字段),方法和内部类等构成。 1、字段表: 不好意思我们这一次需要先上字段表的内容然后一个一个讲解,不能像前面那样像设计者一样一个一个的推出来了,主要原因还是字段表里包含了属性表。 access_f...

2016-06-08 20:38:10

阅读数 854

评论数 0

[LeetCode][8]String to Integer (atoi)解析与模仿Java源码实现 -Java实现

Q: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do no...

2016-06-07 12:19:18

阅读数 1415

评论数 1

[jvm解析系列][六]class里的常量池,访问标志,类的继承关系,如何把一个类在字节码中描述清楚?

上回我们说到了魔数和版本号,今天我们接着说。为了方便起见,我把那幅图拉过来方便大家看 由图可见接下来是一个叫constant_pool_count翻译过来叫常量池数量,前面我们说到class文件中只有两种数据结构,无符号数和表,而且整篇没有分隔符,在没有分隔符的情况下我们怎么区别数量非1的表的...

2016-06-07 08:35:55

阅读数 1207

评论数 0

[LeetCode][7]Reverse Integer解析与位运算实现 -Java实现

Q: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 A: 以下解法和代码没有借阅以往任何资料,如果有更好的解法请在评论区留言 这题我们很久之前就做过...

2016-06-06 15:57:38

阅读数 1720

评论数 1

[LeetCode][6]ZigZag Conversion解析与特殊解法 -Java实现

Q: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern...

2016-06-06 14:29:53

阅读数 3323

评论数 1

[jvm解析系列][五]类文件结构,魔数,最大最小版本号

上一会讲完了JVM的内存分配和垃圾回收策略我们该讲一讲如何组织一个class文件了 一个class文件怎么被加载运行的? 我们可以说java的野心很大,早在97年的时候JVM虚拟机规范中就说以后可以支持其他语言,到JDK1.7的时候基本已经实现了,怎么做到的呢? 这是JVM做的语言无关性即JAVA...

2016-06-06 09:13:25

阅读数 1503

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭