自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 三门问题(Monty Hall problem)

三门问题,亦称为蒙特霍尔(英文:Monty Hall problem),是一个源自博弈论的数学游戏问题,大致出自美国的电视游戏节目Let’s Make a Deal。问题的名字来自该节目的主持人Monty Hall。这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车或者是奖品,选中后面有车的那扇门就可以赢得该汽车或奖品,而另外两扇门后面则各藏有一只山羊或者是后面没有任何东西。当...

2018-04-21 17:01:47 1970

原创 Tomcat系统架构

Server   控制着Tomcat的整个生命周期,Server作为Service的载体,给Service提供了一个生存环境Service   Service值是作为Connector和Container的载体在外面多包了一层,把它们组装在一起,向外面提供服务。一个Service可以设置多个Connector,但只能有一个Container。Service中所有组件的声明周期都通过Li...

2018-04-17 23:05:14 293

原创 JVM GC策略

静态内存   在Java中静态内存分配是指在Java被编译时就已经能够确定需要的内存空间,当程序被加载时系统把内存一次性分配给它。这些内存不会在程序执行时发生变化,直到程序执行结束时内存才会被回收。在Java的类和方法中的局部变量包括原生数据类型和对象的引用都是静态分配内存的。静态内存空间实在Java栈上分配的,当方法运行结束时,对应的栈帧也就撤销了,所以分配的静态内存空间也就被回收了。...

2018-04-17 20:16:38 4957

原创 JVM内存结构

PC寄存器   严格来说这是一个数据结构,用于保存当前正常执行的程序的内存地址。同时Java程序是多线程执行的,所以不可能一直按照线性执行下去,当有多个线程交叉执行时,被中断线程的程序当前执行到哪条的内存地址必然要保存下来,以便于它被恢复执行再按照被中断时的指令地址继续执行下去。这很好理解,它就像一个记事员一样记录下哪个线程当前执行到哪条指令了。这仅限于Java方法,对于Native方法并没有要...

2018-04-17 10:48:52 156

原创 Java使用内存的组件

Java堆:Java堆是用于存储Java对象的内存区域,堆的大小在JVM启动时就一次向操作系统申请完成,通过-Xmx和-Xms两个选项来控制大小,Xmx表示堆的最大大小,Xms表示初始大小。一旦分配完成,堆的大小就将固定,不能在内存不够时再像操作系统重新申请,同时当内存空闲时也不能将对于的空间交还给操作系统。在Java堆中内存空间的管理由JVM来控制,对象创建由Java应用程序控制,但是对象所占的...

2018-04-17 10:03:50 227

原创 Javac工作原理分析(4):代码生成器

经过语义分析器后的语法树已经非常完善了,接下来就是要遍历语法树生成最终的Java字节码,分为以下两个步骤: 1)将java方法中的代码块转化成符合JVM语法的命令形式,JVM的操作都是基于栈的,所有的操作都必须经过出栈和进栈来完成 2)按照JVM的文件组织形式将字节码输出到以class为扩展名的文件中 这个操作主要涉及到com.sun.tools.javac.jvm包三个类: Gen:遍历...

2018-04-15 14:05:31 271

原创 Javac工作原理分析(3):语义分析器

java代码经过词法分析器和语法分析器后形成一棵结构化、可造作的语法树,但是这棵语法树太粗糙了,离我们的目标java代码字节码的产生还有点差距。必须要在这棵语法树的基础上在做一些处理,如给类添加默认的构造函数,检查变量在使用前是否已经初始化,将一些常来进行合并处理,检查操作变量类型是否匹配,检查所有的操作语句是否可达,检查checked exception异常是否已经捕获或抛出,解除Java的语法...

2018-04-14 12:26:32 1368

原创 Javac工作原理分析(2):语法分析器

语法分析器是将词法分析器分析的Token流组建成更加结构化的语法树,也就是将一个个单词组装成一句话,一个完整的语句。哪些词组合在一起是主语、哪些是谓语、宾语、定语…要做进一步区分。 语法树及各种语法节点对应的类关系图如下: 每个语法树上的节点都是com.sun.tools.javac.tree.JCTree的一个实例,关于语法树有如下规则: 1).每个语法节点都会实现一个接口xxxT...

2018-04-13 17:30:01 970

原创 Javac工作原理分析(1):词法分析器

Javac分四个模块:词法分析器,语法分析器,语义分析器,代码生成器。 整个流程如下图: 本文先记录词法分析器的工作过程,文中出现的源码出自Jdk9 首先来看一下词法分析器设计的类图: Lexer和Parser:Javac的主要词法分析器的接口类 Scanner:Lexer的默认实现类,逐个读取java源文件的单个字符,对读取到的词法进行归类 JavacParser:规...

2018-04-13 14:53:35 1161

android增量更新

这是android增量更新demo

2017-02-08

空空如也

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

TA关注的人

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