自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (6)
  • 问答 (5)
  • 收藏
  • 关注

原创 Java基础 - 图论的起源于发展

一、图论的起源图论是一个古老的但又十分活跃的数学学科,也是一门很有实用价值的学科,它在自然科学、社会科学等各领域均有很多应用。近年来它受计算机科学蓬勃发展的刺激,发展极其迅速。应用范围不断拓广,已渗透到诸如语言学、逻辑学、物理学、化学、电讯工程、计算机科学以及数学的其它分支中。1736年是图论的历史元年。这一年,欧拉(L•Euler)研究了哥尼斯堡城(Königsberg)的七桥问

2016-12-31 23:29:19 2779

转载 一图读懂JVM架构解析

每个Java开发人员都知道字节码经由JRE(Java运行时环境)执行。但他们或许不知道JRE其实是由Java虚拟机(JVM)实现,JVM分析字节码,解释并执行它。作为开发人员,了解JVM的架构是非常重要的,因为它使我们能够编写出更高效的代码。本文中,我们将深入了解Java中的JVM架构和JVM的各个组件。JVM虚拟机是物理机的软件实现。Java的设计理念是WORA(Write On

2016-12-31 23:11:56 2975 1

原创 Java基础 - 2-3树

定义和二叉树不一样,2-3树运行每个节点保存1个或者两个的值。对于普通的2节点(2-node),他保存1个key和左右两个自己点。对应3节点(3-node),保存两个Key,2-3查找树的定义如下:1. 要么为空,要么:2. 对于2节点,该节点保存一个key及对应value,以及两个指向左右节点的节点,左节点也是一个2-3节点,所有的值都比key有效,有节点也是一个2-3节

2016-12-30 15:43:49 1830

原创 JVM/HotSpot-Java对象头的HotSpot实现分析

java对象头的HotSpot实现分析HotSpot虚拟机中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。对象头对象头包括两部分:Mark Word 和 类型指针。Mark WordMark Word用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,占用内存大小与虚拟机位长一

2016-12-29 14:10:57 1169

原创 JVM之-GC垃圾收集器(一)

JVM源码分析之堆内存的初始化前言Java堆是被所有线程共享的一块内存区域,所有对象和数组都在堆上进行内存分配。为了进行高效的垃圾回收,虚拟机把堆内存划分成新生代、老年代和永久代(1.8中无永久代,使用metaspace实现)三块区域。堆初始化Java堆的初始化入口位于Universe::initialize_heap方法中,实现如下:其中U

2016-12-29 13:48:39 597

转载 JVM-由常量池 运行时常量池 String intern方法想到的(三)之String内存模型

由常量池 运行时常量池 String intern方法想到的(三)之String内存模型在这篇博文中描述的,所有在运行时常量池中出现的字符串其实都是一个String对象。因为,java是一种强类型的语言,要求每一种变量都要有具体的数据类型。但是基本数据类型存放的不是对象(String不属于基本数据类型)。基本数据类型的常量在运行时常量池中存放的是字面值。貌似JVM会自动将boolean、byt

2016-12-26 19:58:05 1413

原创 占小狼之-Java进阶之路-深入分析String.intern和String常量的实现原理

深入分析String.intern和String常量的实现原理背景字符串类型在实际应用场景中使用非常频繁,如果为每个字符串常量都生成一个对应的String对象,明显会造成内存的浪费,针对这一问题,虚拟机实现一个字符串常量池的概念,提供了如下实现:1、同一个字符串常量,在常量池只有一份副本;2、通过双引号声明的字符串,直接保存在常量池中;3、如果是String对象,可

2016-12-25 23:25:46 995

转载 Unsupported major.minor version 51.0解决

Unsupported major.minor version 51.0解决环境:Eclipse-j2ee + JDK 1.6.0_45。问题:别人的项目使用的是JDK 1.7,而本机采用的是JDK 1.6,当引入工程(或者说是JDK由1.7变成了1.6),配置好JDK,运行程序时会报“Unsupported major.minor version 51.0”错误。解决:项目---

2016-12-25 23:14:34 436

原创 占小狼之-JVM-JVM源码分析之Java对象的创建过程

JVM源码分析之Java对象的创建过程接着上篇《JVM源码分析之Java类加载过程》,本文将基于HotSpot实现对Java对象的创建过程进行深入分析。定义两个简单的类AAA和BBB通过``javap -c AAA```查看编译之后的字节码,具体如下:Java中的new关键字对应jvm中的new指令,定义在InterpreterRunti

2016-12-25 20:32:14 1492

原创 占小狼之-JVM-JVM源码分析之Java类加载过程

JVM源码分析之Java类加载过程背景最近对Java细节的底层实现比较感兴趣,如Java类文件是如何加载到虚拟机的,类对象和方法是以什么数据结构存在于虚拟机中?虚方法、实例方法和静态方法是如何调用的?本文基于openjdk-7的OpenJDK实现Java类在HotSpot的内部实现进行分析。HotSpot内存划分在HotSpot实现中,内存被划分成Java堆、方法区

2016-12-25 20:25:14 1614

原创 占小狼之-JVM-JVM内存的那些事

JVM内存的那些事前言对于C语言开发的程序员来说,在内存管理方面,必须负责每一个对象的生命周期,从有到无。对于Java程序员你来说,在虚拟机内存管理的帮助下,不需要为每个new对象都匹配free操作,内存泄露和内存溢出等问题也不太容易出现,不过也正是因为把内存管理交给了虚拟机,一旦运行中的程序出现了内存泄露问题,给排查过程造成很大困难。所以只有理解了Java虚拟机的运行机制,才

2016-12-25 20:09:23 1832

原创 江南白衣之-Java性能优化-高性能场景下,Map家族的优化使用建议

高性能场景下,Map家族的优化使用建议。1. HashMap 在JDK 7 与 JDK8 下的差别顺便理一下HashMap.get(Object key)的几个关键步骤,作为后面讨论的基础。1.1 获取key的HashCode并二次加工因为对原Key的hashCode质量没信心,怕会存在大量冲突,HashMap进行了二次加工。JDK7的做法: h ^

2016-12-23 20:41:43 2138

原创 江南白衣之-Java进阶-StringBuffer在高性能场景下的正确用法

StringBuilder在高性能场景下的正确用法。关于StringBuilder,一般同学只简单记住了,字符串拼接要用StringBuilder,不要用+,也不要用StringBuffer,然后性能就是最好的了,真的吗吗吗吗?还有些同学,还听过三句似是而非的经验:1. Java编译优化后+和StringBuilder的效果一样;2. StringBuilder

2016-12-23 20:21:29 1374

原创 占小狼-Java进阶之路-浅谈StringBuffer

浅谈StringBuilder连接符号 "+" 本质在 浅谈Java String内幕(1) 中,字符串变量(非final修饰)通过 "+" 进行拼接,在编译过程中会转化为StringBuilder对象的append操作,注意是编译过程,而不是在JVM中。public class StringTest { public static void main(Stri

2016-12-23 19:56:20 1115

原创 占小狼-Java进阶之路-浅谈Java String内幕(二)

浅谈Java String内幕(2)String.intern()原理String.intern()是一个Native方法,底层调用C++的 StringTable::intern 方法,源码注释:当调用 intern 方法时,如果常量池中已经该字符串,则返回池中的字符串;否则将此字符串添加到常量池中,并返回字符串的引用。package com.ctrip.ttd.

2016-12-23 19:44:40 630

原创 占小狼-Java进阶之路-浅谈Java String内幕(一)

浅谈Java String内幕:前言String字符串在Java应用中使用非常频繁,只有理解了它在虚拟机中的实现机制,才能写出健壮的应用,本文使用的JDK版本为1.8.0_3。常量池Java代码被编译成class文件时,会生成一个常量池(Constant pool)的数据结构,用以保存字面常量和符号引用(类名、方法名、接口名和字段名等)。package com.

2016-12-23 19:27:09 647

转载 Java基础 - 字典树(Trie树)

本文转载由http://blog.csdn.net/jiutianhe/article/details/8076835提供1. Trie树Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率

2016-12-23 11:06:01 3687

原创 Java基础 - 跳表(SkipList)

跳表(skiplist)是一个非常优秀的数据结构,实现简单,插入、删除、查找的复杂度均为O(logN)。LevelDB的核心数据结构是用跳表实现的,redis的sorted set数据结构也是有跳表实现的。跳表同时是平衡树的一种替代的数据结构,但是和红黑树不相同的是,跳表对于树的平衡的实现是基于一种随机化的算法的,这样也就是说跳表的插入和删除的工作是比较简单的。下面来研究一下跳表的核心思想:

2016-12-22 01:52:24 906

原创 Java基础 - 树状数组Java版

下面的文字说明引用了  int64Ago 的一篇博文。  写下这个标题,其实心里还是没底的,与其说是写博帖,不如说是做总结。第一个接触树状数组还是两年前,用什么语言来形容当时的感觉呢?……太神奇了!真的,无法表达出那种感觉,她是那么的优雅,10行不到的代码,却把事情干的如此出色!没有了解她原理的前提下即使把代码倒背如流也理解不了!其中,我就是一直没搞懂地在使用她。时隔两年,又无意遇到了

2016-12-19 17:00:47 2354

原创 Java基础 - 线段树Java版的链式存储结构(Segment Tree)

区间[i,i+1]表示第i个元素。

2016-12-18 20:09:48 515

原创 JAVA性能优化全攻略

Java性能优化全攻略2016-12-14 22:53程序员之家部落让Java应用程序运行是一回事,但让他们跑得快就是另外一回事了。在面对对象的环境中,性能问题就像来势凶猛的野兽。但JVM的复杂性将性能调整的复杂程度增加了一个级别。这里Refcard涵盖了JVM internals、class loading(Java8中更新以映射最新的元空间)、垃圾回收、故障诊断、检测、并发性,等等

2016-12-17 13:42:36 596

原创 Java中关于String类型的10个问题

Java中关于String类型的10个问题2016-12-16 14:50程序员之家部落1. 如何比较两个字符串?用“=”还是equals简单来说,“==”是用来检测俩引用是不是指向内存中的同一个对象,而equals()方法则检测的是两个对象的值是否相等。只要你项检测俩字符串是不是相等的,你就必须得用equals()方法。如果你知道“字符串保留(string inter

2016-12-17 11:45:13 412

转载 Java基础 - 线段树C/C++版(Segment Tree)三

本文转载自JustDoIt 的一片博文,下面是链接地址:http://www.cnblogs.com/TenosDoIt/p/3453089.html一 概述线段树,类似区间树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(logn)。线段树的每个节点表示一个区间,子

2016-12-14 21:42:38 508

转载 Java基础 - 线段树C/C++版(Segment Tree)二

本文转载自懂的微博,下面是转载地址:http://dongxicheng.org/structure/segment-tree/1、概述线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,它基本能保证每个操作的复杂度为O(lgN)。2、线段树基本操作线段树的基本操作主要包括构造线段树,区间查

2016-12-14 20:37:04 539

转载 Java基础 - 线段树C/C++版(Segment Tree)一

本文转自NULL00大神的一篇文章,下面是原文地址:http://www.cnblogs.com/shuaiwhu/archive/2012/04/22/2464583.html下图是一棵线段树:1.线段树基本性质和操作线段树是一棵二叉树,记为T(a, b),参数a,b表示区间[a,b],其中b-a称为区间的长度,记为L。线段树T(a,b)也

2016-12-14 19:51:07 400

原创 Java基础 - 替罪羊树(Scapegoat Tree)

package com.yc.tree;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;/** * @author wb * @param * * 替罪羊树的定义: * 1.是一种二叉排序树 * 2.根节点存储了树的节

2016-12-12 17:02:18 2355 1

原创 Java基础 - 节点自平衡树(Size Balanced Tree,简称SBT)

package com.yc.tree;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;public class SizeBalancedTree >{ public class Node{ //data域:存放数据项 T

2016-12-09 16:08:59 1306 1

原创 Java基础 - 伸展树(SplayTree)

伸展树的基本操作有:1.查询2.添加3.删除4.树的最大节点5.树的最小节点6.节点的前驱7.节点的后继8.合并9.分离下面是我完成的部分功能代码(除节点的后继,大家可以仿照求节点的前驱的方法来求后继,很简单):package com.yc.tree;import java.util.ArrayDeque;import java.util.Arra

2016-12-05 20:54:39 1924

原创 Java基础 - 树堆(Treap = tree+heap)

一棵treap是一棵修改了结点顺序的二叉查找树,如图,显示一个例子,通常树内的每个结点x都有一个关键字值key[x],另外,还要为结点分配priority[x],它是一个独立选取的随机数。

2016-12-04 00:43:27 2564 4

原创 Java基础 - 平衡二叉查找树(AVL树)

平衡二叉查找树(height balanced binary search tree)在1962年由Adelson-Velskii和Landis提出,因此又称为AVL树。AVL树定义为:一棵空树是平衡二叉查找树;假设T不是空的树,TL和TR分别是此 二叉树的左子树和右子树,如符合下列两个条件,则称T为平衡二叉查找树:(1)TL和TR亦是平衡二叉查找树;(2) |hL - hR| <= 1,其中hL和hR分别是TL和TR的高度。

2016-12-01 21:58:15 890

wine-mono-4.5.6.msi

wine的mono插件镜像

2019-02-05

emacs-25-x86_64-deps.zip

emacs-25 的 deps.zip 是让windows支持更多的gnu库,比如使得org-mode可以显示png格式的图片等。

2018-06-20

ajax+zTree 文件树

zTree的js和css文件 + 可供参考的demo的fileCatalog.js文件

2018-04-18

win64_ssl_curl 插件

解压后进入curl.exe所在目录,然后打开命令行,输入 curl -V 可查看适用协议。由于要适用协议https,所有还得安装Win64-openSSL

2018-03-16

redis-trib.rb

redis集群工具redis-trib.rb

2017-05-05

Redis-x64-3.2.100.zip

该压缩包为windows64位操作系统下的redis

2017-05-05

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

TA关注的人

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