摘要: 1.如何在运行时确定对象类型 运行时类型识别(Run-time Type Identification, RTTI)主要有两种方式, 一种是在编译时和运行时已经知道了所有的类型,另外一种是反射机制。 类型信息在运行时是如何表示的,是由Class对象完成的,它包含了与类有关的信息。类是程序的重要组成部 阅读全文
posted @ 2015-12-26 20:45 越哥聊AI 阅读(419) 评论(0) 推荐(0)
摘要: 动态查找树主要有二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree), 红黑树 (Red-Black Tree ), 都是典型的二叉查找树结构,查找的时间复杂度 O(log2-N) 与树的深度相关,降低树的深度会提高查找效率,于 阅读全文
posted @ 2015-12-24 10:23 越哥聊AI 阅读(5178) 评论(0) 推荐(1)
摘要: 一、线程创建的基本知识 1.创建线程 创建线程有两种方式:继承Thread或实现Runnable。Thread实现了Runnable接口,提供了一个空的run()方法,所以不论是继承Thread还是实现Runnable,都要有自己的run()方法。 一个线程创建后就存在,调用start()方法就开始 阅读全文
posted @ 2015-12-19 22:04 越哥聊AI 阅读(597) 评论(0) 推荐(0)
摘要: 二叉查找树(BSTree)中进行查找、插入和删除操作的时间复杂度都是O(h),其中h为树的高度。BST的高度直接影响到操作实现的性能,最坏情况下,二叉查找树会退化成一个单链表,比如插入的节点序列本身就有序,这时候性能会下降到O(n)。可见在树的规模固定的前提下,BST的高度越低越好。 1.平衡二叉树 阅读全文
posted @ 2015-12-14 15:57 越哥聊AI 阅读(1447) 评论(0) 推荐(0)
摘要: ReentrantLock和synchronized两种锁定机制 1.应用synchronized同步锁 把代码块声明为 synchronized,使得该代码具有 原子性(atomicity)和 可见性(visibility)。原子性意味着一个线程一次只能执行由一个指定监控对象(lock)保护的代码 阅读全文
posted @ 2015-12-05 20:42 越哥聊AI 阅读(1466) 评论(0) 推荐(0)
摘要: 依赖于引用判断的内存管理机制 Java中对内存对象的访问,使用的是引用的方式。在Java代码中我们维护一个内存对象的引用变量,通过这个引用变量的值,我们可以访问到对应的内存地址中的内存对象空间。在Java程序中,这个引用变量本身既可以存放堆内存中,又可以放在代码栈的内存中(与基本数据类型相同)。GC 阅读全文
posted @ 2015-11-28 20:09 越哥聊AI 阅读(3526) 评论(1) 推荐(1)
摘要: 1.Hibernate和ORM ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据 阅读全文
posted @ 2015-11-26 20:50 越哥聊AI 阅读(3467) 评论(0) 推荐(1)
摘要: Binary Tree Level Order Traversal 题目描述: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by 阅读全文
posted @ 2015-11-21 14:31 越哥聊AI 阅读(299) 评论(0) 推荐(0)
摘要: MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 使用索引的目的在于提高查询效率,这篇文章梳理一下索引的实现原理和应用。 不同的存储引擎索引实现的数据结构不同 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类 阅读全文
posted @ 2015-11-16 14:26 越哥聊AI 阅读(956) 评论(0) 推荐(0)
摘要: B+、B- Tree(mysql,oracle,mongodb) 主要用在关系数据库的索引中,如oracle,mysql innodb;mongodb中的索引也是B-树实现的;还有HBase中HFile中的DataBlock的索引等等。 动态查找树主要有:二叉查找树(Binary Search Tr 阅读全文
posted @ 2015-11-10 18:30 越哥聊AI 阅读(4112) 评论(0) 推荐(0)
摘要: 一、40亿数据排序问题 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文件中至少缺失这样一个数——为什么?)。在具有足够内存的情况下,如何解决该问题?(编程珠玑) 二、应用BitMap存储大数据 数据的存在性可以使用bit位上的1或0来表示;一个bit具有 阅读全文
posted @ 2015-11-07 11:35 越哥聊AI 阅读(31723) 评论(0) 推荐(1)
摘要: 类似物理上的计算机系统,Java虚拟机规范中也定义了一种Java内存模型,即Java Memory Model(JMM),来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果。 现在最新的Java内存模型规范是JSR-133,即Java内存模型与线程规范, 阅读全文
posted @ 2015-11-03 19:55 越哥聊AI 阅读(772) 评论(0) 推荐(0)
摘要: 内存查看与分析工具,下面是日常监控可以使用的一些工具, 在调试时应用比较多的是堆栈信息,查看这篇文章: Java Thread Dump 性能分析 gc日志输出 在jvm启动参数中加入 jvm将会按照这些参数顺序输出gc概要信息,详细信息,gc时间信息,gc造成的应用暂停时间。如果在刚才的参数后面加 阅读全文
posted @ 2015-11-01 19:39 越哥聊AI 阅读(922) 评论(0) 推荐(0)
摘要: JVM的类加载机制是指虚拟机 把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的实现过程。 类加载过程具体可以分成下面几个步骤: (1)装载:查找和导入Class文件; (2)链接:把类的二进制数据合并到JRE中; 校验:检查载 阅读全文
posted @ 2015-10-31 16:32 越哥聊AI 阅读(542) 评论(0) 推荐(0)
摘要: Java虚拟机在执行java程序时会把它所管理的内存会分为若干个不同的数据区域,不同的区域在内存不足时会抛出不同的异常。 一、运行时数据区域的划分 (1)程序计数器程序计数器(Program Counter Register)是一块比较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器;P 阅读全文
posted @ 2015-10-25 10:17 越哥聊AI 阅读(2052) 评论(0) 推荐(0)