摘要: JVM 通过 垃圾收集-GC 自动管理内存堆中对象内存的分配和回收。JVM 通常采用分代垃圾收集器,以便于整理内存碎片。分代垃圾收集器就是基于对象不同生命周期,将堆分成不同的内存区域,然后组合使用不同的垃圾收集算法,可简单认为分为两部分组成: Young Generation:年轻代,由Eden和两 阅读全文
posted @ 2017-03-17 10:31 创心coder 阅读(545) 评论(0) 推荐(1) 编辑
摘要: JVM 是一种抽象的计算机,基于堆栈架构,它有自己的指令集和内存管理,是 Java 跨平台的依据,JVM解释执行字节码,或将字节码编译成本地代码执行。Java 虚拟机体系结构如下: Class File Class File 是平台无关的二进制文件,包含着能被JVM执行的字节码,其中多字节采用大端序 阅读全文
posted @ 2017-03-10 23:30 创心coder 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 在计算机内部,所有信息都是由一串位来表示,代表的数据对象取决于它所处的上下文,可能是数字、字符串或其他。当为字符串时,相信很多人遇到过乱码问题,产生乱码的根本原因和字符集及其编码有关。 字符集(Character set):各种文字和符号的总称,如ASCII字符集、Unicode字符集。 字符编码( 阅读全文
posted @ 2017-03-08 15:29 创心coder 阅读(363) 评论(0) 推荐(0) 编辑
摘要: Java采用UTF-16编码作为内码,也就是说在JVM内部,文本是用16位码元序列表示的,常用的文本就是字符(char)和字符串(String)字面常量的内容。注:UTF-16是Unicode字符集的一种编码方案。 Java字符和字符串存在于以下几个地方: Java源码文件,*.java,可以是任意 阅读全文
posted @ 2017-02-28 15:01 创心coder 阅读(6574) 评论(0) 推荐(0) 编辑
摘要: 大二就买了这本书,如今再看这本书,看到了一些以前没看的细节,也有了不同的体会。本文使用第4版,整理每章的笔记心得。老外的书有个特点,他会花费大量的文字去阐述一个概念,这比堆代码强多了。 第 1 章 对象导论 1.1 抽象 抽象是计算机最重要的概念之一。抽象就是从杂乱的事物表象中,提取出对待解决问题来说最关键的部分内容。C 在解决问题时,主要是基于计算机的结构进行抽象,而不是基于所要解决的问... 阅读全文
posted @ 2016-12-16 18:37 创心coder 阅读(513) 评论(0) 推荐(1) 编辑
摘要: HSDB 是专门用于调试 HotSpot VM 的调试器,它是一个图形化界面。与之对应的还有个 CLHSDB-Command Line HotSpot Debugger,命令行调试界面。下面是启动命令:java -cp .;%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.HSDB # 启动图形界面 java -cp .;%JAVA_HOME%/lib/sa... 阅读全文
posted @ 2016-12-03 21:38 创心coder 阅读(1252) 评论(0) 推荐(0) 编辑
摘要: jdb 是一个简单的命令行调试器,可以调试本地或远程 Java Virtual Machine。jdb [ options ] [ class ] [ arguments ] options 命令行参数 class 调试的类名称 arguments main函数的参数 1. 开始调试 有两种方式启动调试,一个是新启动一个 JVM 加载指定的类,然后在开始执行指令时停止;另一个是连接到一个... 阅读全文
posted @ 2016-12-03 19:10 创心coder 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 一个 Class 文件描述了类或接口的字段,方法,父类,访问权限等全部信息。其实,它只是一种能被 JVM 识别的数据格式,就和 UDP 8字节头部一样,这就是规范,标准!所谓“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之,学至于行而止矣,行之,明也”。本文最后将动手分析一个 Class 文件的字节和反编译后的伪汇编语言,来探讨其结构。 本文将介绍: Class 头部信息 Cl... 阅读全文
posted @ 2016-11-24 21:37 创心coder 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 整理如下,用于以后查找: Opcode Mnemonics Note Constants 0x00 nop 无动作 0x01 aconst_null 把 null 推到操作数栈 0x02 iconst_m1 把 int 常量 –1 推到操作数栈 0x03 iconst_0 把 int 常量 0 推到操作数栈 0x04 iconst_1 把 int 常量 1 推到操作数栈 ... 阅读全文
posted @ 2016-11-24 14:59 创心coder 阅读(584) 评论(0) 推荐(1) 编辑
摘要: 这是最基本的三种数据结构,每个程序中都至少使用一种,比如说栈,递归程序其实就是借助方法调用栈来实现的,站在计算机的角度,没有什么问题是栈解决不了的。本文对这些数据结构进行说明。随后会在这个 GitHub 整理出相应的练习题和对应标签的 LeetCode 题目解答。 本文将讨论: 表、栈和队列相关概念,特点和基本操作 1. 表 表是一种逻辑结构,表示元素之间的相邻关系。按照元素在内存中... 阅读全文
posted @ 2016-11-14 13:21 创心coder 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 算法就是一系列解决问题的指令,对于给定的输入,能够在有限时间内获得预期的输出。一个好的算法和一篇好的文章一样,都是不断努力,反复修正的结果。算法分析主要从运行时间和存储空间两方面讨论算法的效率。相信有些人会有这样的感觉,对于一些算法,有时一眼就能看出它的时间复杂度,但就是无法比较规范的表达出来。本文就系统的整理一下如何规范推导算法的时间和空间复杂度。 算法分析的一个依据是,输入规模(又称问... 阅读全文
posted @ 2016-11-11 21:17 创心coder 阅读(766) 评论(0) 推荐(0) 编辑
摘要: Shell 是一门脚本语言(又称解释型语言),Shell 其实就是一个纯文本文件,通常以【#!/bin/bash】开始。脚本自上而下,从左至右分析并执行,其中【#】后面的为注释。脚本有以下几种运行方式:(1) 【bash shell.sh】 (2)【sh shell.sh】(3)【./shell.sh】当前目录下执行,用户必须有可执行权限 (4)【. ./shell.sh】或【source s... 阅读全文
posted @ 2016-11-08 14:10 创心coder 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 1 概念 又称二叉查找树,简称BST。具有以下性质的二叉树: (1) 若左子树非空,则左子树上所有结点值均小于根结点的值 (2) 若右子树非空,则右子树上所有结点值均大于根结点的值 (3) 左,右子树本身也分别是一棵二叉排序树 也是一个递归的数据结构。下图是一个二叉排序树。 对其进行中序遍历得到一个 阅读全文
posted @ 2016-05-29 10:40 创心coder 阅读(1516) 评论(0) 推荐(0) 编辑
摘要: 1.树的存储结构 树的存储方式有很多,既可以采用顺序存储,也可采用链式存储,不管采用哪种方式,都需要唯一地反映出树中各节点之间的逻辑关系,树有以下3中常用的存储结构。 1.1 双亲表示法 使用一组连续的空间存储每个结点,同时增加一个伪指针,指示其双亲结点在数组中的位置,如图所示,根节点下标为0,伪指 阅读全文
posted @ 2016-05-28 13:39 创心coder 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 1. 基本概念 在链式存储中,发现二叉链表中存在大量的空指针,如果利用这些空指针指向其直接前驱或后继的指针,则可以更方便地运用某些二叉树操作算法。二叉树的线索化,是为了加快查找结点前驱和后继的速度。 在有N个结点的二叉树中,存在N+1个空指针。每个叶结点有2个空指针,度为1的结点有1个空指针,总的空 阅读全文
posted @ 2016-05-28 12:28 创心coder 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 1 二叉树的链式存储 1.1 链式存储 顺序存储对空间利用率较低,所以,二叉树一般采用链式存储结构,用一个链表来存储一颗二叉树。二叉链表至少包含3个域:数据域data,左指针域lchild和右指针域rchild,如果再加上一个指向双亲结点的指针就变成了三叉链表。 二叉树的链式存储结构如下: 根据完全 阅读全文
posted @ 2016-05-27 07:55 创心coder 阅读(1420) 评论(0) 推荐(0) 编辑
摘要: 前言 MongoDB数据库的版本为3.0.7。记录在使用MongoDB数据库时遇到的各种问题,目前是遇到一个整理一个,没有进行分类,等整理较多的时候,进行分类整理一下。 1.使用可视化工具连接时,身份验证失败,Authorization failed 当使用MongoVUE或者Robomongo连接 阅读全文
posted @ 2016-05-25 13:16 创心coder 阅读(643) 评论(0) 推荐(0) 编辑
摘要: 1 二叉树的存储 1.1 顺序存储 使用数组自上而下,自左至右存储完全二叉树上的结点元素,即将完全二叉树上编号为i的结点元素存储在某个数组下标为i-1的分量中,然后通过一些方法确定结点在逻辑上的父子和兄弟关系。 根据二叉树的性质,完全二叉树和满二叉树树采用顺序存储比较合适,树中结点的序号可以唯一地反 阅读全文
posted @ 2016-05-23 22:00 创心coder 阅读(3219) 评论(0) 推荐(0) 编辑
摘要: 前言 本文主要涉及一下内容:数据库的备份和恢复,对于任一数据库来说备份至关重要;数据的导入和导出;数据库修复;数据库状态监控工具mongostat;在使用过程遇到其他命令会总结在此。 1.数据库的备份和恢复 1.1 复制数据文件 备份:使用此方法时必须保证数据文件不发生变化,可以使用fsyncloc 阅读全文
posted @ 2016-05-23 16:29 创心coder 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 1.分片 分片是什么?分片就是将数据存储在多个机器上。当数据集超过单台服务器的容量,服务器的内存,磁盘IO都会有问题,即超过单台服务器的性能瓶颈。此时有两种解决方案,垂直扩展和水平扩展(分片)。 垂直扩展就是增加CPU,增加容量,但高性能系统的CPU和容量不成比例,这样扩展成本大,并且有上限。 水平 阅读全文
posted @ 2016-05-23 14:22 创心coder 阅读(5358) 评论(1) 推荐(1) 编辑