自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Oeljeklaus的博客

读书二十载,风雨任平生

  • 博客(21)
  • 资源 (7)
  • 收藏
  • 关注

转载 先序遍历和后序遍历为什么不能唯一地确定一棵树?

以前大学学数据结果的时候,我们就知道,根据一棵树的先序遍历和中序遍历,或者后序遍历和中序遍历序列,都可以唯一地确定一棵树。树中的节点,分为度为0,1,2的结点。如果树中只有一个节点,那么可以唯一确定一棵树,即只有一个节点的树。当树中结点个数大于等于2的情况,树中的叶子结点和它的父亲结点中,至少有一种存在如下的情况。(为方便起见,我们先从叶子节点入手)             case 1:    ...

2018-04-29 21:19:06 4523

原创 Java内存模型与线程(六):Java与线程

我们知道,线程是CPU调度的基本单位。线程实现的3种方式:使用内核线程实现、使用用户线程实现和使用用户线程加轻量级进程混合实现。线程调度,主要分为协同式线程调度和抢占式线程调度。Java的线程调度主要是抢占式线程调度。 Java语言定义了5中线程状态:新建:创建后尚未启动的线程处于这种状态。运行:也饿就是对应于操作系统状态中的Running和Readdy。无限期等待:这种状态不会被分配CPU执行时...

2018-04-29 19:08:01 1182

原创 Java内存模型与线程(五):先行发生原则

1.程序次序规则:同一个线程,按照代码次序,准确来说是按照控制流顺序而不是程序代码顺序2.管道锁定规则:unlock操作先行于后面对同一个锁的lock操作3.volatile变量规则:对于修饰的变量,这里的写操作先行发生于读操作。4.线程启动规则:Thread对象的start方法先行于发生于此线程的每一个动作。5.线程终止规则:线程所有的操作都先行发生于对此线程的终止检测。6.线程中断规则:对线程...

2018-04-29 18:29:24 1258

原创 Java内存模型与线程(四):long和double的特殊规则和原子性、可见性和有序性

JVM将没有被volatile修饰的64为数据的读写操作划分为两次32位的操作,也就是long和double的非原子协定吗,多个线程共享一个long或者是double类型的变量是,可能读到一个"半个变量"的数值。不过以上这种情况非常罕见,所以这两种类型不需要volatile修饰。Java内存模型定了3个特性:原子性、可见性、有序性。原子性,也就是说上几节我们讲到的几个操作都是原子的,要么全部成功,...

2018-04-29 18:02:32 1329

原创 Java内存模型与线程(三):volatile型变量的规则

volatile变量一般是比较难以理解,这里坐着希望列举几个小例子让大家充分理解它的使用方法。对于定义了volatile的变量,这里有两条特性需要大家记住:第一、保证此变量对所有的线程都是可见性,这里的可见行是指一个线程修改了这个变量的值,新值对于其他的线程来说是可知的。这里,volatile变量不存在一致性问题,volatile变量在并发情况下并非安全。这通过一段程序说明:package cn....

2018-04-29 16:42:38 1186

原创 Java内存模型与线程(二):内存间交互操作

上一节,我们介绍了线程与Java内存模型之间的关系。这一节,我们将会介绍内存间交互操作,主要是Java内存与各线程之间的关系。也就是说一个变量如何从主内存拷贝到工作内存、如何让从工作内存同步回主内存之类的实现细节。首先,我们需要了解下面8种操作。lock(锁定):作用于主内存的变量;它把这一个变量标识为一个线程独占的状态。unlock(解锁):作用域主内存的变量,把一个变量释放。read(读取):...

2018-04-29 15:48:35 1384

原创 Java内存模型与线程(一):概述

我们知道,衡量一个服务性能的高低好坏,每秒事物处理数(TPS)是重要的指标之一,它代表着一秒内服务端平均能响应的请求总数。我们知道计算机硬件中,引进了缓存技术,大大提高了程序执行速度,但是这也带来了相关问题,例如缓存一致性问题。下面是计算机处理器和高速缓存驻内存之间的交互关系。Java内存模型Java内存模型的主要目的是定义程序中哥哥变量的访问规则,记载虚拟机中将变量存储到内存和从内存中取出变量的...

2018-04-28 21:16:44 1169

原创 数据库中join、left outer join 、right join、 inner join的比较

首先我们使用下列语句进行数据库的相关表的创建。create table user( id int primary key, name varchar(20) not null, age int );insert into user(id,name,age)values(1,"Marry",20),(2,"Mike",18),(3,"Nike",23);create tabl...

2018-04-28 17:50:13 1928

原创 JVM类加载机制(二):类加载详细描叙

前一节我们讲解了JVM类加载的5个阶段,主要是加载、验证、准备、解析和初始化。加载阶段主要完成3件事情:1.通过类的全限定名来获取定义此类的二进制字节流2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构3.在内存中生成一个代表这个类的java.lang.Class对像,作为方法区这个类的各种数据的访问入口。需要注意的是,加载与连接阶段的部分额呢绒时交叉进行的,可能加载并未结束,连接可...

2018-04-28 17:01:38 1163

原创 JVM类加载机制(一):类初始化触发条件以及几个例子

    JVM把描述类的数据从Class文件加载到内存,对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是JVM类加载机制。    Java的类型加载、连接和初始化过程都是在程序运行期间完成的。    类加载到内存,和到卸载出内存为止,整个生命周期:加载、验证、准备、解析、初始化、使用和卸载,等7个阶段,验证、准备、解析3个部门统称为连接。生命周期如下:对类进行初...

2018-04-28 15:40:23 1681

原创 JVM:类文件结构

Java实现语言无关的基石是JVM和字节码存储格式。任何一个Class文件都对应唯一一个类或接口的定义信息。,但是反过来说,类或者接口不一定定义在文件中,有可能通过类加载器直接生成。Class文件以8字节为基本单位二进制流存储,当遇到8字节以上时,会按照高位在前的方式分割成若干8字节进行存储。Class文件的格式如下:Class文件的头4个字节表示魔数,主要用来判断是够能被JVM所接受。紧接着4个...

2018-04-28 14:55:25 1315

转载 一致性Hash(Consistent Hashing)原理剖析

引入在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为: 图1:加入缓存的数据读取过程对于分布式缓存,不同机器上存储不同对象的数据。为了实现这些缓存机器的负载均衡,可以使用式子1来定位对象缓存的存储机器:其中,o为对象的名称,n为机器的数量,m为机器的编号,h...

2018-04-27 19:48:31 1182

原创 二叉树(五)堆和优先队列(heap)

1.堆的定义:堆是一颗完全二叉树,堆中存储的数据局部有序。2.最大堆的性质:任意一个节点的值,大于等于其子节点的值,所以根据这一特性,我们知道最大堆中,根节点一定是最大的值。3.最小堆的性质:任意一个节点的值,小于等于其子节点的值,所以根据这一特性,我们知道最小堆中,根节点一定是最小的值。堆和BST的区别:这两者没有任何关系,BST主要是左子树一定小于右子树的节点,但是堆中,左子树的所有节点可以大...

2018-04-27 17:48:17 1782

原创 二叉树(四) 二叉查找树(BST)

二叉查找树:对于二叉查找树的任何一个节点,设这个节点的值为K,这个节点的左子树的任意一个节点的值都小于K,右子树的任何一个节点的值都大于等于K。对于任何的二叉查找树,使用中序遍历(左根右),可以将值从小到大打印出来。对于二叉查找树的检索,例如图a,需要检索32,那么首先需要检索根节点,发现37大于32,进入二叉搜索树的左子树,发现24小于32,然后在进入右子树,发现根节点等于32,那么就返回找到了...

2018-04-27 16:02:14 1639

原创 二叉树(三) 完全二叉树的实现

首次,我们来复习一下完全二叉树的定义:高度为d的二叉树,除了d-1层(即最后一层)以外,其他层都是满的。我们可以按照编号填充完全二叉树,填充的顺序如下我们可以得出一下规律:leftChild=parent*2+1;rightChild=parent*2+2;parent=(child-1)/2;对于一个节点数量为n的完全二叉树,在数组中从0开始填充,非叶子结点最大的下标值为(n-2)/2;...

2018-04-27 15:14:37 1691

原创 二叉树(二) 二叉树的几种遍历(前序、中序、后序)

前序遍历,先访问根节点,在访问坐左子树节点,在访问右子树节点。上图的前序遍历:A B D C E G F H I 中序遍历,先访问左子树,后访问根,在访问右子树,上图中序遍历B D A G E C H F I 后序遍历,先访问左子树,后访问右子树,在访问根节点,上图后序遍历D B G E H I F C A 代码实现:#include <iostream>#include <s...

2018-04-27 11:49:45 1235

原创 二叉树(一)定义与特征;

基本概念,系形如上图结构的树为二叉树。针对于某个节点,根节点到该节点的长度为深度,该节点的层数为深度。默认的,对与根节点,深度为0,高度为1,层数为0.任何深度为d的节点的层数都是d。面试中,经常问到的几个问题。满二叉树:每一个节点或者是一个分支节点,并恰好有两个非空子节点;或者是叶节点。完全二叉树:从根节点开始从左到右填充,一颗高度为d的完全二叉树,除了d-1层意外,其他的层都是满的。注意:满二...

2018-04-27 11:16:27 1536

原创 ArrayList和LinkedLIst底层实现以及源码解析

首先,看一下两者在jdk的具体位置可以看出ArrayList和LinkedList都是实现了List接口,而LIst接口继承了Collection接口,在Java中,基本上所有的集合类,都实现了Iterable接口,用于迭代。以下所有的源码基于jdk1.8让我们来看一下ArrayList源码:/** * Default initial capacity. ...

2018-04-27 10:33:24 2589 1

原创 单例模式的创建

package cn.edu.hust;import java.util.concurrent.locks.ReentrantLock;//剑指offer面试题,设计一个类,单例类public class OfferSingleton { //private static OfferSingleton offerSingleton=null; private Off...

2018-04-27 09:40:17 1144

原创 HashMap与HashTable的区别与联系

HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很久了。在Java 4中被重写了,实现了Map接口,所以自此以后也成了Java...

2018-04-26 10:58:41 1206

原创 HashMap的工作原理

HashMap的基本特点:1.非线程安全2.可以让null作为key和value3.存储原理是hash4.hashMap的初始容量大小是16,默认装载因子为0.75HashMap的主要结构图在这里可以看出,HashMap主要是由数组和链表组成,链表主要是为了解决Hash冲突。这里的源代码主要是jdk1.8根据HashMap的源代码:/** * Implements Map.put and...

2018-04-26 10:53:19 1177

servet&jsp;学习指南

本书共18章:第1章介绍Servlet API和几个简单的Servlet;第2章讨论Session追踪,以及保持状态的4种技术;第3章和第4章系统讲解JSP的语法以及JSP中的重要特性之一:Expression Language;第5~7章分别阐述JSTL中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论Servlet中的事件驱动编程、过滤器,以及Model 2架构;第11章展示如何利用Servlet 3的文件上传特性,以及如何在客户端改善用户的体验;第12章解释如何通过编程方式将资源发送到浏览器;第13章介绍如何利用Decorator模式以及类来改变Servlet请求和响应的行为;第14章讨论Servlet 3中的一项新特性,用来处理异步的操作;第15章阐述如何通过声明和编程方式来保护Java的Web应用程序;第16章讨论Servlet/JSP应用程序的部署过程,以及部署描述符中的元素;第17章阐述Servlet 3中的两项新特性;第18章介绍Struts 2的用法。

2018-12-08

Scala编程学习教程

Scala语言学习教程PPT,主要包含有Scala的基础、以及Scala语言的高级用法

2018-06-03

WEB服务器日志信息

WEB服务器数据

2017-08-08

fastdfs-nginx-module_v1.15.tar.gz

fastdfs-nginx-module_v1.15.tar.gz

2016-12-20

酒店管理系统

酒店管理系统,这是用java写的酒店管理系统

2015-12-19

阿帕奇的各种jar包

包含阿帕奇各个jar包,适合作为java开发人员的你们

2015-12-19

el表达式jar包

该jar包是基于阿帕奇的基础之上开发的,其功能更加强大,下载者可以放心

2015-12-19

空空如也

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

TA关注的人

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