自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 finalize方法的原理

1.什么是finalize()?有时当撤消一个对象时,需要完成一些操作。例如,如果一个对象正在处理的是非Java 资源,如文件句柄或window 字符字体,这时你要确认在一个对象被撤消以前要保证这些资源被释放。为处理这样的状况,Java 提供了被称为收尾(finalization )的机制。使用该机制你可以定义一些特殊的操作,这些操作在一个对象将要被垃圾回收程序释放时执行,在java的主类Ob...

2020-06-03 19:21:22 599

原创 并发编程系列一:多线程基础

1.什么是线程?什么是进程?线程和进程的关系。2.线程创建与运行。创建一个线程有那几种方式?有何区别?3.线程通知与等待,多线程同步的基础设施,等待通知模型。4.线程的虚假唤醒是什么?如何避免?5.Object中finalize()是什么?该如何使用?6.让线程睡眠的 sleep ()、yield()和join(),sleep 的线程会释放持有的锁?7.线程中断。什么是协作式中断?什么...

2019-08-17 20:23:03 237

原创 数据库之存储

无论是什么数据库,其本质还是以数据的形式存储在计算机的物理介质上的,所以,我们先来看看什么是物理存储介质。物理存储介质:高速缓冲存储器->主存储器->快闪存储器->磁盘->光盘->磁带,从左到右性能由高到低,价格也由高到低。1.磁盘性能的度量:容量,访问时间,数据传输率和可靠性 平均寻道时间:磁盘臂移动到正确的磁道花费的时间...

2019-08-17 10:32:41 1070

原创 经典线程问题之哲学家进餐问题

关于哲学家就餐问题,如何确保哲学家们都能就餐而不产生死锁,这个是哲学家就餐问题需要关注的基本也是核心的问题,如何确保在不产生死锁的情况下尽可能的提高并发度也是我们需要去考虑的问题。package demo.ConcurrentDemo.practice.demo1;import java.util.concurrent.ExecutorService;import java.ut...

2019-07-15 09:38:39 449

原创 JDK1.7下的ConcurrentHashMap

ConcurrentHashMap为什么高效? 在HashTable中,实现线程安全是通过使用synchronized来保证的,但是,当线程之间的竞争非常激烈的时候,HashTable的效率是非常低下的,就例如:当线程A在使用put操作时,此时线程B和线程C如果想要对HashTable进行put或者get操作,因为线程A已经持有了锁,线程B和C只能等待线程A释放锁。这样就导致了当竞争激烈...

2019-06-28 09:24:52 539

原创 Spring常用模块

每次在创建一个maven项目的时候,构建pom.xml文件时,每次都不清楚应该导入哪些jar包,只能去找到以前写过的pom.xml文件或者去网上查找其他人的pom结构,今天,我就来整理一下Spring框架中,每部分jar包的功能以及jar包之间的依赖关系,方便以后进行工程的创建。Spring3.0提供了一张结构图:图中将Spring的功能划分为DataAccess、Web、AOP、Core以及...

2019-06-19 11:17:56 917

原创 leetcode-95 不同的二叉搜索树 II

给定一个整数 n,生成所有由 1 ...n 为节点所组成的二叉搜索树。示例:输入: 3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 ...

2019-06-13 22:56:03 295

原创 浅谈Java类加载:ClassLoader

关于java文件的编译,我们都知道这是通过虚拟机JVM将源代码装换为源指令,并且以.class为扩展名的类文件中,每个类文件都包含某个类或者接口的定义和代码实现。下面是JVM加载Test.class文件的步骤:(摘录自《java核心技术 卷二》)1.虚拟机JVM有一个用于加载类文件的机制,例如,从磁盘上读取文件或者请求web上的文件;虚拟机使用该机制来加载Test类文件中的内容。2.如果T...

2019-05-29 21:47:16 417

原创 Spring之循环依赖

Spring在Bean的实例化过程中,提供了对循环依赖的解决方案,但是这部分代码非常的生涩难懂,今天,我们就从一个Spring的源码来看看这个循环依赖到底是何方神圣!首先Spring中的循环依赖到底是什么呢?循环依赖就是循环引用,就是在类A中引用了类B,而类B中引用了类C,而类C中又引用了类A,如图:图一在图一中,我们可以看到A中存在属性B,B中存在属性C,而C中有又存在属...

2019-05-27 21:50:20 9262

原创 Java非阻塞IO NIO之Selector选择器

NIO自从JDK1.4版本以来就添加的一个非阻塞I/O框架,NIO是Java为解决网络通讯中高并发问题的一个类库,Selector是java NIO的一个组件,用于检查一个或多个NIO Channel的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络链接,所以Selecotr是实现了多路复用的关键。为什么要使用Selector呢?用单线程处理多个c...

2019-05-26 15:56:11 642

原创 Spring的DefaultListableBeanFactory

spring容器的实现从根源上来看的话是通过BeanFactory实现的,但是BeanFactory只是一个接口类,真正作为一个可以独立使用的容器还是通过DeafultListableBeanFactory实现的,Spring中XML文件的解析的核心类XmlBeanFactory就是继承了DefaultListableBeanFactory的子类,是Spring注册以及加载bean的默认实现,接下...

2019-05-25 15:37:55 2850

原创 二分搜索

3.二分查找(Binary Search)——在线性数组中找特定值的算法,每个步骤去掉一半不符合要求的数据。Technique for finding a particular value in a linear array, by ruling out halfof the data at each step.二分查找是也称作折半查找,是一种效率较高的查找,但是,折半查找要求线性表必须采...

2019-05-24 09:32:09 216

原创 集束搜索BeamSearch

在开始写关于集束搜索的文章之前,我发现我对很多相关的算法都不是很熟悉,这严重影响到了我对集束搜索的理解,为了能让自己更好的理解集束搜索,我又回顾了一些基础。我的回顾之旅:BFS算法中,我总结了两篇二叉树的BFS搜索和无向图的BFS搜索,在理解BFS搜索算法的过程中又额外涉及到了通过树的中序和先序遍历生成二叉树和存储无向图的邻接矩阵和邻接链表这两个知识点,有兴趣的朋友可以查看我的文集“算法之...

2019-05-23 10:30:05 931

原创 无向图的BFS搜索

关于如何存储无向图的问题,想要详细了解的朋友可以阅读本人的另一篇博文存储无向图的邻接矩阵和邻接链表。想更方便阅读代码的朋友可以点。无向图的BFS遍历,其思想是,从某个点(该点可随机取得)一直把其邻接点走完,然后再将其邻接点的未被遍历的邻接点走完,如此反复直到走完所有结点。类似于树的层序遍历。所以我们需要一个visitd数组来表示当前点有没有被访问过。算法流程:1.访问指定起始点。...

2019-05-22 11:10:07 946

原创 leetcode-62. 不同路径

题目描述:一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m和n的值均不超过 100。示例1:输入: m = 3, n = 2输出...

2019-05-21 09:43:16 224

原创 二叉树的BFS搜索

广度优先搜索算法(Breadth First Search),又叫宽度优先搜索,或横向优先搜索。 搜索是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。如右图所示的二叉树,A 是第一个访问的,然后顺序是 B、C,然后再是 D、E、F、G。 那么,怎样才能来保证这个访问的顺序呢?...

2019-05-19 14:55:54 396

原创 通过树的中序和先序遍历生成二叉树

关于二叉树的概念:百度百科给的定义是:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。二叉树是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:图一(1)...

2019-05-19 11:25:42 775

原创 A*搜索算法(Java实现)

引言 1968年,的一篇论文,“P. E. Hart, N. J. Nilsson, and B. Raphael. A formal basis for the heuristic determination of minimum cost paths in graphs. IEEE Trans. Syst. Sci. and Cybernetics, SSC-4(2):100-...

2019-05-17 18:39:28 3026

原创 分治思想之大整数相乘

假设数字X,Y均为二进制整数,求解X*Y的值,使用分治的思想:上图显示了递归的公式,但是上述的算法的时间复杂度仍旧是T(n) = 4 * T(n / 2) + θ(n) =O(n^2),这个和通过使用小学数学计算方法的时间复杂度是一样的,这样使用分治的思想并没有改进算法的执行效率,这个时候,我们可以换位思考一下,将公式变形为:XY=AC2^n+[(A-B)(D-C)+AC+BD]...

2019-05-16 15:56:58 610

原创 递归之汉诺塔问题

我的个人博客:汉诺塔问题一.起源:  汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。二.抽象为数学问题:  如下图所示,从左到右有A、B、C三根...

2019-05-15 18:07:41 190

原创 分而治之—最近点对问题详解

其他平台网址导航:我的简书最近点对问题,即平面上有n个点P1,P2,...,Pn,n>1,Pi的直角坐标为(Xi,Yi),i=1,2,...,n.求距离最近的两个点及他们之间的距离。 对于这个问题,我们如果使用暴力求解的方法的话,n个点之间存在(n-1)*n/2个点对,将全部点对之间的距离计算出来并得到最短的距离,这个暴力算法将花费O(n^2)的时间,这个时间复杂度显然...

2019-05-15 17:55:36 2932 1

原创 Java Proxy和CGLIB动态代理原理

动态代理在Java中有着广泛的应用,比如Spring AOP、RPC,Java注解对象获取等。静态代理的代理关系在编译时就确定了,而动态代理的代理关系是在编译期确定的。静态代理实现简单,适合于代理类较少且确定的情况,而动态代理则给我们提供了更大的灵活性。今天我们来探讨Java中两种常见的动态代理方式:JDK原生动态代理和CGLIB动态代理。 JDK原生动态代理先从 直观的示例说起,假...

2019-05-12 20:56:54 223

原创 数据结构之HashMap 源码解析

参考博文:https://fangjian0423.github.io/2016/03/29/jdk_hashmap/参考文章:http://wiki.jikexueyuan.com/project/java-enhancement/java-twentythree.html1. HashMap实现了Map 接口,继承 AbstractMap。其中 Map 接口定义了键映射到值的规...

2019-05-04 23:19:32 1293 1

原创 个人博客网站(一) 搭建SSM框架

这是本人可开发的一个简易的博客系统:我的个人博客系统SSM框架,Spring+SpringMVC+Mybatis+maven,下面我先简单介绍一下三大框架1.Spring Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesi...

2019-05-04 11:54:10 1991

转载 Redis几个工具类

1.Redis连接池import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class RedisUtil { //Redis服务器IP private static String ADDR ...

2019-04-24 09:46:44 170

原创 tomcat配置虚拟路径

文件上传是一个很普遍的功能,但是我们一般不建议直接保存在数据库内,往往是讲图片等资源保存在服务器的某个文件夹下,传统做法是上传到部署目录下,通过相对路径进行访问。这样当我们系统需要进行升级,进行全量更新的时候,就需要我们先将静态资源拷贝出来,然后项目部署成功之后又复制进部署目录。为了以后软件版本升级的方便,这时就需要这些静态资源放置在服务器tomcat目录外面。下面是关于tomcat配...

2019-04-09 20:57:57 151

转载 Ford-Fulkerson算法

该博客仅做一个参考资料的汇集算法分析:算法——最大流:Ford-Fulkerson方法C++对该算法的分析即实现:最大流之Ford-Fulkerson方法详解及实现java代码实现: ①Ford-Fulkerson算法求最大流Java实现   ②图的匹配问题与最大流问题(三)——最大流问题Ford-Fulkerson方法Java实现 ...

2018-11-30 11:06:01 1789

原创 回溯法之数独 详解

我从高中起就很喜欢数独这种娱乐方式,喜欢那种为了解出一个数独的执着,喜欢那份坚持,出于这种心情,我选择用java来实现一个数独从无到有的过程。喜爱玩数独的人应该知道,数独的限制条件很有意思:首先,一个9*9的九宫格被分成了九个区域,如图所示,不同颜色区域划分成不同区域。限制条件1:同一个格子内(色块)不能出现相同的数;限制条件2:同一行内不能出现相同的数字限制条件3:同一列内不能出...

2018-11-09 16:24:52 1039

原创 回溯法之八皇后问题 详解

关于八皇后的介绍我就不再这里多啰嗦了,大家可以自行百度。现在,我来说明一下八皇后的限制条件:1.在同一行内,皇后不能出现两次;2.在同一列内,皇后不能出现两次;3.在同一条对角线内,皇后不能出现出现两次。问题是:找出一个位置使得八皇后同时存放在棋盘上且互相不能进行攻击?根据回溯的思想,我们可以从第一行开始查找位置,遍历第一行,判断是否存在可以放置的位置,如果有,就将皇后放置...

2018-11-09 15:46:20 572

原创 算法设计之贪心法

问题建模与描述:  我们先来看一个简单的例子:调度问题,有n项任务,每项任务的加工时间已知,从0时刻开始陆续安排到一台机器上加工,每个任务的完成时间是从0时刻到任务加工截止的时间。求:总完成时间(所有任务完成时间之和)最短的安排方案。实例:任务集S={1,2,3,4,5},加工时间t1=3,t2=8,t3=5,t4=10,t5=15算法:按加工时间将上述任务从小到大排序,  解:1...

2018-11-03 08:27:22 451

原创 贪心算法

问题建模与描述:  我们先来看一个简单的例子:调度问题,有n项任务,每项任务的加工时间已知,从0时刻开始陆续安排到一台机器上加工,每个任务的完成时间是从0时刻到任务加工截止的时间。求:总完成时间(所有任务完成时间之和)最短的安排方案。实例:任务集S={1,2,3,4,5},加工时间t1=3,t2=8,t3=5,t4=10,t5=15算法:按加工时间将上述任务从小到大排序,  解:1...

2018-10-13 15:29:55 1163

原创 归并算法

归并排序归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。递归法(Top-down) 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设定两个指针,最初位置分别为两个已经排序序列的起始位置 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重...

2018-09-28 10:48:05 372

原创 java之多叉树遍历

给出一棵多叉树,每个节点的任意两个子节点都有左右之分。从根节点开始尽量往左走,走不通就回溯,把遇到的字母记录下来,可以得到一个序列,给定一个序列,问有多少棵树与之相应。分析:设输入的序列为S,d(i,j)为子序列Si~Sj对应树的个数,那么边界条件有1,当i=j时,d(i,j)=12,当i=j&&Si!=Sj时,d(i,j)=0,因为遍历的起点应该与终点是同一点。3...

2018-08-09 09:25:54 1244

原创 表达式求值详解​​​​​​​

简书:表达式求值详解 表达式求值时对数据结构中栈结构的灵活应用,对于一个表达式而言,它由操作数和运算符组合而成,我们现实中常见的表达式:A+B-C,类似这种格式的我们称之为中缀表达式,但是,计算机的计算方式是有别于人的,所以,我们可以先将表达式转换为后缀表达式,再对后缀表达式进行计算,这个过程就是我们常用的表达式求解的过程。首先,我们要解决的问题是如何将中缀表达式转换成后缀表达式。下面...

2018-07-30 11:26:20 959

原创 XML解析之dom4J

第一步:配置好XML文件,下面是我配置的context.xml文件<?xml version="1.0" encoding="UTF-8"?> <config> <db_info> <mysql_driver>com.mysql.jdbc.Driver</mysql_driver> <mysql_...

2018-05-12 22:34:18 154

Multiplication.java

通过使用分治的思想解决大数相乘的问题,资源中仅为一个java类

2019-05-16

SpringMVCC.txt

SpringMVC是一个模型 - 视图 - 控制器(MVC)的Web框架建立在中央前端控制器servlet(DispatcherServlet),它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。Spring MVC 是 Spring 产品组合的一部分,它享有 Spring IoC容器紧密结合Spring松耦合等特点,因此它有Spring的所有优点。这份资源是关于SpringMVC的视频详解。。。

2019-05-16

空空如也

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

TA关注的人

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