自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 [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 1503 0

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

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

2016-06-16 19:26:07 2421 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 3511 3

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

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

2016-06-15 10:28:39 1490 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 2444 0

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

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

2016-06-14 08:50:08 1508 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 1743 0

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

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

2016-06-13 08:34:33 1869 2

原创 [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 1996 0

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

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

2016-06-12 12:31:54 2643 0

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

Q: Implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*&...

2016-06-11 14:38:15 2549 0

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

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

2016-06-11 10:25:26 1922 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 2026 1

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

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

2016-06-10 11:30:53 3263 0

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

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

2016-06-08 20:38:10 974 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 1476 1

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

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

2016-06-07 08:35:55 1364 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 1765 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 3447 1

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

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

2016-06-06 09:13:25 1638 0

原创 [数据结构与算法分析]栈的应用-学习笔记

平时我们很少接触到一个栈的使用,但是今天看了如下三个例子后感触颇深,对于栈应用的情况理解更深了。分享如下: 1、平衡符号 平衡是个动词,意思就是用来平衡符号的,例如关于方法里{}左右大括号的匹配问题,在许多的语言里一旦发生缺少{}很难找到错误的位置,我们这样来平衡符号,当读到{[(时压入栈中如...

2016-06-06 09:04:48 1205 0

原创 [LeetCode][5]Longest Palindromic Substring解析 -Java实现

Q: Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one un...

2016-06-05 13:48:00 820 0

原创 [jvm解析系列][四]Java的垃圾回收(二)垃圾收集算法,内存分配和回收策略

上回说到如何鉴别一个垃圾。 这回咱们讲讲怎么收集垃圾收集垃圾有几种算法如下: 1、标记-清除算法 这个算法最为基础,我们先讲算法再说优缺点。 实现过程: 标记出所有需要回收的对象,当标记完成后统一回收。图解如下: 优缺点: 可能画出来图的时候大家都发现了,这个算法有一个很明显的问...

2016-06-05 13:27:25 455 0

原创 为什么使用迭代器iterator遍历Linkedlist要比普通for快

大家可以搜索一下普通情况遍历linkedlist应该是O(n)但是使用iterator就是常数,这让我很好奇。于是我去查了源码。。 一路顺着找找到了Collection,确实有一个iterator但是是个interface还没有实现。 网上找list,有一个listiterator还是这样...

2016-06-04 22:40:43 5725 3

原创 [LeetCode][4]Median of Two Sorted Arrays解析 -Java实现

Q: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexi...

2016-06-04 20:25:59 429 0

原创 [jvm解析系列][三]Java的垃圾回收(一)如何鉴别垃圾,四种引用类型

垃圾回收就想垃圾车,每次天亮就会沿着街区开一圈,把垃圾都带走。 有的区域不需要这种垃圾车,也许它们不造垃圾吧,作为一个中级图钉我对这种地区很无奈,但是它们就是很少有垃圾甚至没有垃圾。首先应该是程序计数器,这玩意要什么垃圾回收,我都不用讲。下一个应该是虚拟机栈本地方法栈,栈帧的进出都受到控制,谁的垃...

2016-06-04 15:23:50 773 0

原创 [jvm解析系列][二]Java堆的详细讲解和对象的分配过程和访问

上回说到Jvm内存的分配,犹如划地分治,把一块本机内存分裂成了6块。 这回我们就讲讲java堆的详细信息 java堆里也不是铁板一块,类似jvm的分治,java堆内部也好不到哪里去,大致上可以分成新生代和老年代,他们内部也不和谐,新生代又可以细分为Eden和两个survivor空间。图片如下: ...

2016-06-04 14:28:21 937 0

原创 [jvm解析系列][一]Java内存区域分配和内存溢出异常OOM

学过操作系统的同学应该比较清楚,一个操作系统必须要有完善的内存管理系统(页/段式的管理),相应的jvm全称java虚拟机应该也有类似的一种管理内存的方式,这种方式是建立在真实的操作系统内存管理方式之上的,他把内存分配成了不同的区域,形成了java内存模型。 那么,对于其他博客讲解这种题目要先抛一个...

2016-06-02 10:48:18 1198 0

原创 Servlet监听器/Session钝化和活化

Servlet监听器平时用的比较少,但是还是有用的。 监听器一共有八个,分为3类 第一类:用来监听Request,Session,ServletContext的创建和销毁 ServletContextListener 用来监听ServletContext对象创建和销毁的监听器 HttpSe...

2016-06-02 09:53:18 1895 0

原创 [数据结构与算法分析]最大子序列和问题 -学习笔记

Q: 给定整数A1,A2,A3.....An,求Aj-Ak相加的最大值 A: public class MaxSub { public static void main(String[] args){ int[] a = {-2,11,-4,13,-5,-2}; System.ou...

2016-06-02 08:33:25 462 0

原创 [LeetCode][3]Longest Substring Without Repeating Characters解析 -Java实现

A: Given a string, find the length of the longest substring without repeating characters. Q: 以下解法和代码没有借阅以往任何资料,如果有更好的解法请在评论区留言 大致意思就是给你一个字符...

2016-06-01 18:34:14 612 0

原创 [LeetCode][2]Add Two Numbers解析 -Java实现

Q: You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a si...

2016-06-01 16:34:44 2906 0

原创 [LeetCode][1]Two Sum解析 -Java实现

Q: Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input w...

2016-06-01 16:23:30 1523 0

原创 Mysql事务详解(二)事务的隔离性和容易引起的问题

上一篇讲到事务的四大特性,其中有一个是事务的隔离性,即两个事物之间不会互相影响,为了实现这样的功能,就引入了事务的隔离性。 事务的隔离性 为了保证事务的隔离性,自然我们可以把事务设计成单线程的,这样的话效率就会极其低下,为了保证隔离性,又不失效率我们把丧失隔离性的情况分为三种。 脏读:读到另...

2016-06-01 14:43:09 1224 0

原创 Mysql事务详解(一)事务的概念,四大特性,使用和回滚

以往的时候在java中,下面一个语句就可以操作一条数据库语句Class.forName("com.mysql.jdbc.Driver");//加载相应的字节码文件,把类加载到java虚拟机的方法区中(以后会详细讲解jvm的内存模型)conn = DriverManager.ge...

2016-06-01 13:31:37 5980 0

原创 关于mysql存储图片,时间,大量文字的情况

对于图片,mysql提供了blob的数据类型,当然我们也可以把byte数组翻译成string存储。 首先创建数据库,然后blob一般接受blob和inputstream,然后我们就可以这样把一个icon存放在blob里 对于时间,我们可以有很多选择,一般都是timeXXX但是我比较喜欢用big...

2016-05-20 23:46:54 4325 0

原创 mac下mysql5.7修改字符编码为utf-8(或许通用)

网上的很多都说mysql需要加client之类,你会发现根本找不到了好吗? 修改utf-8教程如下: 1、首先关闭mysql服务,进入mysql根目录 2、跟着提示你可以看到这样的一个文件夹是的,打开里面有我们的配置文件 3、这个文件不同于以前的文件,他是作为一个模版存在的我们可以打开它 ...

2016-05-20 23:30:11 2651 0

原创 关于媒体扫描器耗电问题或者android图库扫描到不该看的东西预防尴尬

媒体服务器应该是4.4以上版本出现的,其作用是不断扫描存储内容,分类加载到多媒体里,比如图库。 所以android的图库里经常分为很多文件夹并且扫描了存储内的全部多媒体文件(你存的乱七八糟的东西都能在图库里看得到)。那么在存储内多媒体文件多,大的情况下,多媒体服务器是非常耗电的,而且是系统进程不...

2015-10-25 14:44:42 441 0

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