自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QuinnNorris的博客

ECNUsei_qnz2015

  • 博客(13)
  • 资源 (2)
  • 收藏
  • 关注

原创 java JVM运行时栈帧结构

JVM中数据区域分为虚拟机栈、JAVA堆、方法区、运行时常量池、程序计数器(PC寄存器)这几类。在这五类中,虚拟机栈用来表示各个线程中方法执行情况的区域,而栈帧是虚拟机栈中的栈元素。栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构。每一个方法从调用开始到执行完成的过程都可以看作是一个栈帧于虚拟机栈中从入栈到出栈的过程。一个线程中有很多个栈帧,只有位于这个栈最上方的栈帧才是有效的,最上方栈顶的栈帧

2017-07-31 20:07:30 2877

原创 LeetCode 461 617 500 476 575 637

461. Hamming Distance描述: The Hamming distance between two integers is the number of positions at which the corresponding bits are different. Given two integers x and y, calculate the Hamming distance

2017-07-26 09:29:26 489

原创 java 观察者模式

观察者模式定义了一个一对多的依赖关系,当被观察者(主题)更新时会自动更新观察者们。在观察者模式中,被观察者无需知道有哪些观察者在观察它,只是在发生变化的时候调用更新的方法即可;观察者无需知道具体观察了什么对象,只是在被调用更新方法时自动更新自己的信息即可。观察者模式最大的优点即在于此,通过松耦合达到了对象间信息的传递。无论是JDK源码还是各种框架应用都大量的使用了这个模式。观察者模式流程:创建主题

2017-07-22 23:23:44 788

原创 java 策略模式

设计数据结构时,有句经典的哲理叫做:多用组合,少用继承。相比较继承,组合能提供更高的灵活性。策略模式通过使用组合代替继承的方法将不同的算法族整理成在主类之外的其他类,并在主类中添加算法族的对象,达到了一种组合的效果,这种方法使得主类与算法族耦合性降低,主类的方法只需要调用算法族对象中固定的方法即可,而不用再关心算法族具体是如何实现的。这也是面向接口编程的思想。下面结合具体的例子来分析。 一个父类

2017-07-20 21:22:00 707

原创 一个例子学通JAVA编译的原理

本文用一个简单的例子深度分析JAVA是如何将.java文件进行编译得到字节码,需要用到的工具有:NotePad++ Cmder(用windows自带cmd亦可)UltraEdit java环境配置希望大家有兴趣可以跟着本文动手实战,必能深刻的理解JAVA编译之详细流程。第一步:配置java环境相信大家配置最基本的java环境没有任何问题,这里需要说明的一点是,配置环境后在CMD中java

2017-07-18 13:29:17 934

原创 java class文件布局架构

c语言将.c文件编译生成与硬体相关的二进制机器指令,问题在于不同的系统中的机器指令不同,所以c语言所编写的程序可移植性差。而java号称一次编写,到处运行(Write Once,Run Anywhere),java语言将.java文件经过编译成固定格式的.class文件,并在JVM上执行来达到这种平台无关的效果。也就是说:JVM不与任何包括java在内的语言做绑定,JVM只与固定格式的二进制cla

2017-07-17 23:00:26 986

原创 java 对象存活分析——引用计数法&可达性分析

java虚拟机总共分为五个区域,其中三个是线程私有:程序计数器,虚拟机栈,本地方法栈,两个是线程共享:堆,方法区。线程私有的区域等到线程结束时(栈帧出栈时)会自动被释放,空间比较容易清理。而线程共享的java堆和方法区中的空间较大而且没有线程的回收容易产生很多垃圾信息,GC垃圾回收真正关心的就是这部分。java堆和方法区主要存放各种类型的对象(方法区中也存储一些静态变量和全局常量等信息),那么我们在

2017-07-13 09:36:04 17447 3

原创 java int与byte类型转换的2种方法

int是四字节,32位数。byte是一字节,8位数。在日常的格式转换中,我们只需要将byte类型数据前加括号加(int)即可转换成int类型数据。但是最近接触到一种全新的转换方法,虽然得到的结果是相同的,但在某些特殊情况时会用到。第一种方法(普通): int a = (int) aByte;常规方法,我们只需要将byte数据类型前加上int关键字即可。第二种方法:第一种方法可以应付绝大多数的情

2017-07-09 13:55:39 9460 1

原创 java 弱哈希映射表WeakHashMap原理

弱哈希映射表的原理其实很好理解,首先我们要知道HashMap的原理。如果我们将一个对象a以及他的引用A作为一个key值关联某个Value值后put入HashMap中,那么这个a对象的引用不仅仅有A,而且有一个HashMap中持有的引用,一共两个引用。WeakHashMap的原理也相同,此时在WeakHashMap中的a也持有两个引用,一个是A,另一个是WeakHashMap的散列表持有的引用。那么现

2017-07-09 11:41:33 2228 1

原创 java 深度解析JVM内存分布机制

Java与C++之间有一堵由**内存动态分配**和**垃圾回收机制**技术围成的高墙,墙外面的人想进去,墙里面的人想出来。像往常一样的某天清晨,程序员来到公司打开电脑,从使用new创建一个对象开始,开始了这一天的工作。当他在电脑屏幕上用new创建一个对象的时候,他不知道,是JAVA虚拟机通过一系列的操作,让这个对象在内存适当的位置上真正的

2017-07-08 15:53:34 2872

原创 java MD5(Message Digest Algorithm 5)加密算法

在工作项目中,我们接受用户的个人信息和类似账号密码此类数据时必须对其进行加密,否则可能会导致信息的泄露引发安全性问题。加密的方式有很多种,其中较为常用的加密方式是MD5加密算法和SHA-1加密算法,这两种算法中MD5较为常用。MD5用于确保信息传输完整一致,是一种计算机广泛使用的哈希算法,主流编程语言普遍已有MD5实现。MD5算法MD5是一种通过固定的算法将任意位长的数据转化为固定长度128位(16

2017-07-04 18:53:39 1841

原创 java 观察者模式利与弊分析

观察者模式是比较常用的一种设计模式,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监听一个主题对象。当被观察者状态发生改变时通知相应的观察者,使得这些观察者对象能够自动更新。但当我们使用这种模式时需要进行利弊权衡,观察者模式并不像我们想象中的那么简单。观察者模式简例抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对

2017-07-04 14:31:34 1611

原创 java 效率极高的查询数据结构——SkipList 跳表

前一阵子和朋友聊天,他和我讲在面试中被问到跳表。当时我也很迷从来没听说过跳表,赶快学习了一下,学习了之后才发现这个数据结构不是很难,而且效率非常高,在平均情况下查找的时间复杂度约为O(log n)堪比平衡树。而且具体的数据结构的实现也非常有趣。SkipList 跳跃列表原理跳跃列表是一种由多条链表组合而成的允许快速查询有序元素的数据结构。跳跃列表中的每条链表表示一个层,每一层存在的元素都是前一层(前

2017-07-01 11:21:23 4642

官方MySQL数据库教程 MySQL Tutorial.pdf

几篇Tutorial的英文原版pdf,可供英文较好的朋友们学习。如果想看中文翻译,可以点击我头像查看我的博文。

2017-05-04

JAVA实现贪吃蛇源代码(带注释超详细)

超详细的java贪吃蛇简单代码,所有变量方法都有注释,原创所以设了1分下载,如果有什么问题可以回复提问哦。

2017-04-12

空空如也

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

TA关注的人

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