自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 [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 the sum of zero.Note: The solution set must

2016-06-17 09:14:29 1704

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

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

2016-06-16 19:26:07 2729 1

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

Q:Write a function to find the longest common prefix string amongst an array of strings.A:这题的大概意思就是说给你一组字符串找出其中最长的哪个通用的前缀出来。这个东西不难找,但是如何找的又快又好不简单。其实这题本来就是easy题,但是却让我联想到了《数据结构与算法分析》上的一道题目,那道题目是

2016-06-15 13:12:37 3903 3

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

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

2016-06-15 10:28:39 1779

原创 [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:以下解法和代码没有借阅以往任何资料,如果有更好的解法请在评论区留言看到这一题我真是感叹城会玩,昨天刚刚解过一个int转罗马字母,今天又反过来解。

2016-06-14 10:36:50 2674

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

重载和重写是分派中的两个重要体现,也是因为这个原因我们才把重载和重写写在了标题上。这一章我们的很多部分都在代码试验上。总的来说分派分为静态分派和动态分派两种。静态分派:首先我们来看一段源码:public class Dispatch { public static void main(String[] args){ Animal a = new Dog();

2016-06-14 08:50:08 1664

原创 [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,我去查了一下合着是罗马字体,这题目意思也很简单就是说我要输入一个数字可以保证是1~3999但是你要把这个阿拉伯数字转

2016-06-13 09:57:08 1925

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

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

2016-06-13 08:34:33 2386 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 the two endpoints of line i is at (i, ai) and (i,

2016-06-12 14:16:19 2191

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

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

2016-06-12 12:31:54 2953

原创 [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 preceding element.The matching should cover the entire

2016-06-11 14:38:15 2780

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

通过前面好几章的或详细或不详细的介绍,我们终于把字节码的结构分析的差不多了。现在我们面临这样一个问题,如何运行一个字节码文件呢?首先,java语言不同于其他的编译时需要进行链接工作的语言不通,java语言有一个很明显的特性,那就是动态加载,一个字节码的加载往往都是在程序运行的时候加载进来的,很多时候这种方式给我们带来了便利。虽然从某种意义上来说他可能消耗了一定的资源降低了性能。类的生命周期

2016-06-11 10:25:26 2143

原创 [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 2171 1

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

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

2016-06-10 11:30:53 4429

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

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

2016-06-08 20:38:10 1235

原创 [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 not see below and ask yourself what are the possible

2016-06-07 12:19:18 1750 1

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

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

2016-06-07 08:35:55 1636

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

Q:Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321A:以下解法和代码没有借阅以往任何资料,如果有更好的解法请在评论区留言这题我们很久之前就做过了,相当年我还只会C++的时候老师就布置这种题目给做了,当时的解法应该是先判断

2016-06-06 15:57:38 1973 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 in a fixed font for better legibility)P A H NA P

2016-06-06 14:29:53 3719 1

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

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

2016-06-06 09:13:25 1902

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

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

2016-06-06 09:04:48 1481

原创 [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 unique longest palindromic substring.A;以下解法和代码没有借

2016-06-05 13:48:00 966

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

上回说到如何鉴别一个垃圾。这回咱们讲讲怎么收集垃圾收集垃圾有几种算法如下:1、标记-清除算法这个算法最为基础,我们先讲算法再说优缺点。实现过程:标记出所有需要回收的对象,当标记完成后统一回收。图解如下:优缺点:可能画出来图的时候大家都发现了,这个算法有一个很明显的问题,那就是大量的不连续的内存碎片,这样的内存碎片遇到大对象分配的时候很可能遇到内存不足的情况,当然

2016-06-05 13:27:25 565

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

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

2016-06-04 22:40:43 8286 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 complexity should be O(log (m+n)).A:这个题目大致是说给你两个被排序

2016-06-04 20:25:59 566

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

垃圾回收就想垃圾车,每次天亮就会沿着街区开一圈,把垃圾都带走。有的区域不需要这种垃圾车,也许它们不造垃圾吧,作为一个中级图钉我对这种地区很无奈,但是它们就是很少有垃圾甚至没有垃圾。首先应该是程序计数器,这玩意要什么垃圾回收,我都不用讲。下一个应该是虚拟机栈本地方法栈,栈帧的进出都受到控制,谁的垃圾谁带走,在进门的时候就算清楚了你要用多少内存,最后你再全部带走一点垃圾也不剩也不需要。(还有一个原

2016-06-04 15:23:50 935

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

上回说到Jvm内存的分配,犹如划地分治,把一块本机内存分裂成了6块。这回我们就讲讲java堆的详细信息java堆里也不是铁板一块,类似jvm的分治,java堆内部也好不到哪里去,大致上可以分成新生代和老年代,他们内部也不和谐,新生代又可以细分为Eden和两个survivor空间。图片如下:是不是看着大小比例很别扭呢,没办法呀,就是按照内存大小画的-。-iii至于他们的作用的,请

2016-06-04 14:28:21 1088

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

学过操作系统的同学应该比较清楚,一个操作系统必须要有完善的内存管理系统(页/段式的管理),相应的jvm全称java虚拟机应该也有类似的一种管理内存的方式,这种方式是建立在真实的操作系统内存管理方式之上的,他把内存分配成了不同的区域,形成了java内存模型。那么,对于其他博客讲解这种题目要先抛一个图解出来,我并不想这样。因为这种模型的出现肯定是要解决问题的,我们需要顺延着前人设计jvm内存模型的

2016-06-02 10:48:18 1827

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

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

2016-06-02 09:53:18 2254

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

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.out.println(method(a)); } public static int method(

2016-06-02 08:33:25 582

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

A:Given a string, find the length of the longest substring without repeating characters.Q:以下解法和代码没有借阅以往任何资料,如果有更好的解法请在评论区留言大致意思就是给你一个字符串,找出里面最长的不重复的字符串。反正我的第一反应如下(灵感来源于Android源码中对双击,三击的判

2016-06-01 18:34:14 724

原创 [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 single digit. Add the two numbers and return it as

2016-06-01 16:34:44 3236

原创 [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 would have exactly one solution.A:以下解法和代码没有借阅以往任

2016-06-01 16:23:30 1717

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

上一篇讲到事务的四大特性,其中有一个是事务的隔离性,即两个事物之间不会互相影响,为了实现这样的功能,就引入了事务的隔离性。事务的隔离性为了保证事务的隔离性,自然我们可以把事务设计成单线程的,这样的话效率就会极其低下,为了保证隔离性,又不失效率我们把丧失隔离性的情况分为三种。脏读:读到另一个未提交事务的数据幻读:在一个事务过程中已经读取了一次表,此时恰巧另一个事务commit,导致这

2016-06-01 14:43:09 1558

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

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

2016-06-01 13:31:37 6709

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

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

2016-05-20 23:46:54 5803

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

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

2016-05-20 23:30:11 2973

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

媒体服务器应该是4.4以上版本出现的,其作用是不断扫描存储内容,分类加载到多媒体里,比如图库。所以android的图库里经常分为很多文件夹并且扫描了存储内的全部多媒体文件(你存的乱七八糟的东西都能在图库里看得到)。那么在存储内多媒体文件多,大的情况下,多媒体服务器是非常耗电的,而且是系统进程不可杀死。当然我们也不希望他死掉,他死掉应该会引起图库没有图片。那么我们如何控制多媒体服务器的扫描范

2015-10-25 14:44:42 805

使用socket在andorid中相互传送文件

利用wifi和socket传送文件,主要解决了file的封装问题,socket延迟连接,file的文件结构和socket识别标志的问题

2016-05-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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