- 博客(18)
- 资源 (203)
- 收藏
- 关注
转载 排序二叉树,平衡二叉树和红黑树的概念以及相关的操作讲解
1. 排序二叉树 排序二叉树是一种特殊结构的二叉树,可以非常方便地对树中所有节点进行排序和检索。排序二叉树要么是一棵空二叉树,要么是具有下列性质的二叉树:若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;它的左、右子树也分别为排序二叉树。图 1 显示了一棵排序二叉树:
2017-09-17 15:34:52 432
转载 二叉查找树、平衡二叉树、红黑树、B-/B+树性能对比
1. 二叉查找树 (Binary Search Tree)BST 的操作代价分析:(1) 查找代价:任何一个数据的查找过程都需要从根结点出发,沿某一个路径朝叶子结点前进。因此查找中数据比较次数与树的形态密切相关。 当树中每个结点左右子树高度大致相同时,树高为logN。则平均查找长度与logN成正比,查找的平均时间复杂度在O(logN)数量级上。 当先后插入的关键字有
2017-09-17 15:29:42 497
转载 PostgreSQL SQL的性能调试方法 查看执行计划
1.下面简单介绍一下执行计划结果的读法①Explaining → Widths =# EXPLAIN SELECT oid FROM pg_proc;QUERY PLAN------------------------------------------Seq Scan on pg_proc(cost=0.00..87.47 rows=1747 widt
2017-09-15 23:06:48 2812
转载 sql中in和exists的区别效率问题
in 和existsin是把外表和内表作hash 连接,而exists 是对外表作loop 循环,每次loop 循环再对内表进行查询。一直以来认为exists 比in 效率高的说法是不准确的。如果查询的两个表大小相当,那么用in 和exists 差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A
2017-09-15 22:55:55 331
转载 使用 Eclipse Memory Analyzer 进行堆转储文件分析 Eclipse Memory Analyzer(MAT)
Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消耗。本文主要介绍如何安装配置 Memory Analyzer,并结合一个实例,介绍如何利用 MAT 来进行堆转储文件分析,找到内存泄露的根源。
2017-09-08 23:18:21 223
转载 SpringMVC工作原理
SpringMVC的工作原理图:SpringMVC流程1、 用户发送请求至前端控制器DispatcherServlet。2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给Dispatc
2017-09-08 23:12:44 286
转载 struts2的核心和工作原理
在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处?设计目标 Struts设计的第一目标就是使MVC模式应用于web程序设计。在这儿MVC模式的好处就不在提了。技术优势 Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The Java
2017-09-08 23:10:46 298
转载 spring 启动过程分析(二)
首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境;其次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到这个事件,其contextInitiali
2017-09-08 23:06:54 295
转载 Spring启动过程分析(一)
1、 spring简介spring的最基本的功能就是创建对象及管理这些对象之间的依赖关系,实现低耦合、高内聚。还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,还能帮我们管理最头疼的数据库事务,本身提供了一套简单的JDBC访问实现,提供与 第三方数据访问框架集成(如Hibernate、JPA),与各种Java EE技术整合(如Java Mail、任务调度等等),提供一
2017-09-08 23:04:54 444
转载 Java集合框架之Map---HashMap和LinkedHashMap源码分析
1、HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2、HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。所有的数据结构都可以用这两个基本结构来构造的数组:数组存储区间是连续的,占用内
2017-09-08 19:14:32 442
转载 JAVA REENTRANTLOCK、SEMAPHORE 的实现与 AQS 框架
引言ReentrantLock是JDK提供的一个可重入互斥锁,所谓可重入就是同一个锁允许被已经获得该锁的线程重新获得。可重入锁的好处可以在递归算法中使用锁,不可重入锁则导致无法在递归算法中使用锁。因为第二次递归时由于第一次递归已经占有锁,而导致死锁。本文我们将探讨JDK中ReentrantLock的实现。Semaphore是JDK提供的一个可共享的同步组建,有n个许可,多个线程可以
2017-09-05 21:56:12 322
转载 Java IO : 流,以及装饰器模式在其上的运用
流概述Java中,流是一种有序的字节序列,可以有任意的长度。从应用流向目的地称为输出流,从目的地流向应用称为输入流。Java的流族谱Java的java.io包中囊括了整个流的家族,输出流和输入流的谱系如下所示:InputStream和OutputStreamInputStream和OutputStream分别是输入输出流的顶级抽象父类,只定义了一些抽象方法供
2017-09-03 20:46:30 335
转载 (十)装饰器模式详解(与IO不解的情缘)
LZ到目前已经写了九个设计模式,回过去看看,貌似写的有点凌乱,LZ后面会尽量改进。 那么本章LZ和各位读友讨论一个与JAVA中IO有着不解情缘的设计模式,装饰器模式。 定义:装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
2017-09-03 20:22:42 240
转载 AAA《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。一、MyBatis的框架设计 注:上图很大程度上参考了iteye 上的chenjc_it 所写的博文原理分析之二:框
2017-09-03 16:03:12 441
转载 深入Java源码解析容器类List、Set、Map
参考文献:Java容器相关知识全面总结Java官方API文档1 常用容器继承关系图并且Map不应该继承自Collection。所以自己整理了一个常用继承关系图如下New集合继承关系图如上图所示,接下去会自顶向下解释重要的接口和实现类。2 Collection和Map在Java容器中一共定义了2种集合, 顶层接口分别是Collection和Ma
2017-09-03 14:22:32 372
转载 JUC源码解析(6)-locks-AbstractQueuedSynchronizer
功能简介:AbstractQueuedSynchronizer(以下简称AQS)是Java并发包提供的一个同步基础机制,是并发包中实现Lock和其他同步机制(如:Semaphore、CountDownLatch和FutureTask等)的基础。AQS内部包含一个FIFO的同步等待队列,简单的说,没有成功获取控制权的线程会在这个队列中等待。AQS内部管理了一个原子的int域作为内部状态信
2017-09-03 09:16:59 281
转载 AQS源码分析
1.AQS介绍 AQS是为实现依赖于先进先出 (FIFO) 等待队列 的阻塞锁和相关同步器(信号量、事件,等等)提供一个框架。它使用了一个原子的int value status来作为同步器的状态值(如:独占锁。1代表已占有,0代表未占有),通过该类提供的原子修改status方法(getState, setState and compareAndSetState),我们可以把它作为同步器的基础框
2017-09-03 09:02:02 285
转载 《Redis源码学习笔记》键过期
《Redis源码学习笔记》文章列表 Redis可以为数据库中的每一个键关联一个过期时间,当到达指定时间后Redis就会把该键从数据库中删除,eg: Shell代码 redis 127.0.0.1:6379> setex name 5 diaocow # 为键name设置5秒的过期时间 OK redis 127.0.0.1:6379> 5 秒
2017-09-02 21:53:25 247
vuepress 前后端在一起部署时,需要把前端生成文件放到 springboot识别的目录中
2023-10-05
spring-boot-route-master.zip
2021-08-25
技术案例课职场生涯回顾介绍.zip
2021-01-10
springcloud-demo.zip
2020-12-07
vue2+springbootPRE.zip
2020-11-05
token_demo.zip
2020-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人