- 博客(26)
- 收藏
- 关注
原创 Java——this引用逃逸
本文部分内容引用自this引用逃逸补充说明匿名类 this应用逃逸在这篇文章中已经说的比较清楚了,同时Java并发编程实践中举了例子,说明this逃逸:package com.example.demo.test1;public class ThisEscape { interface Event { } interface EventListener ...
2019-02-27 22:22:07
1433
转载 Java——logback中appender、logger、root的配置理解
本文内容转载自logback 配置详解(一)——logger、root
2019-02-25 19:33:52
6125
原创 Java——从druid数据连接池获取不到连接
问题 有线上环境,在并发量高的时候,会出现从druid中获取不到数据连接的问题。无法获取连接,无非两种原因,1、数据库socket连接确实少,看了下最大连接数(show variables like ‘%max_connections%’;),不少哇;2、连接泄露,看druid官网连接泄漏监测文档,引出方法1“方法1” 数据库连接配置中增加如下配置: <bean id="dat...
2019-02-22 18:34:50
9514
1
转载 Java——Unsafe应用解析
本文内容转载自Java魔法类:Unsafe应用解析前言Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内存空间的能力,这无疑也增加了程序发生相关指针问题的风...
2019-02-21 19:34:45
333
转载 设计模式——单例模式创建
单例模式创建的三种方式本文部分内容转载自单例模式创建的三种方式懒汉式public class HungerSingleton { private HungerSingleton() { } private static HungerSingleton hungerSingleton = new HungerSingleton(); public st...
2019-02-18 14:59:51
130
转载 Java——非阻塞同步算法与CAS(Compare and Swap)无锁算法
学些CAS,这篇文章还是挺不错的:非阻塞同步算法与CAS(Compare and Swap)无锁算法 作者从硬件层对CAS的支持做了描述,同时将CAS与锁在CPU指令数量做简单对比;描述了原子整型等、非阻塞堆栈、非阻塞链表中CAS的用法(直接看Java中AtomicInteger、ConcurrentLinkedQueue有CAS的身影);同时扩展了描述了无锁同步算法的其他思路、应用。挺好...
2019-02-17 21:53:33
257
转载 JVM——双亲委派模型
本文部分内容转载自https://www.cnblogs.com/wxd0108/p/6681618.html其实,双亲委派模型并不复杂。自定义类加载器也不难!随便从网上搜一下就能搜出一大把结果,然后copy一下就能用。但是,如果每次想自定义类加载器就必须搜一遍别人的文章,然后复制,这样显然不行。可是自定义类加载器又不经常用,时间久了容易忘记。相信你经常会记不太清loadClass、fin...
2019-02-16 20:48:29
180
原创 算法与数据结构——Dijkstra算法
单源最短路径 给定一个带权有向图G=(V,E),其中每条边的权是一个实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到其他所有各顶点的最短路径长度。这里的长度就是指路上各边权之和。这个问题通常称为单源最短路径问题。 Dijkstra算法和图的广度优先搜索算法有很多相似,不同之处除了距离(在广度优先搜索中称为度数)和权重有关外,算法遍历过程是从队列中取距离最小的节点,即使用优先队列,...
2019-02-15 21:45:57
926
转载 算法与数据结构——编程判断两个单向链表是否相交
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html编程判断两个单向链表是否相交 题目来源 《编程之美》3.6节。 给出两个单向链表的头指针,判断这两个链表是否相交。假设两个链表都不带环。 分析 这个题目需要得出的结论是两...
2019-02-14 17:42:30
280
原创 算法与数据结构——图表示与搜索
图表示无向图表示有向图表示 ; 个人偏向于邻接链表表示法,比较简单方便,占用空间也不大。图遍历广度优先搜索 每个结点初始颜色为白色,被发现后,变为灰色,并将其插入队列,其邻接链表扫描完成后变为黑色;深度优先搜索 与广度优先基本相同,只是不再使用队列保存未扫描结点,而改为递归深度扫描。#代码(包括图表示、BFS、DFS)import java.util.*;pu...
2019-02-13 16:17:06
227
转载 算法和数据结构——B树、B+树
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 浅谈算法和数据结构: 十 平衡查找树之B树 前面讲解了平衡查找树中的2-3树以及其实现红黑树。2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key。 ...
2019-02-13 08:39:22
247
原创 算法——红黑树
定义近似平衡的二叉搜索树 二叉搜索树可能退化成链表,也就有了“平衡”搜索树,树高h=O(log(n)),保证了树高,也就保证了基本操作时间复杂度的稳定性。红黑树是一种“平衡”二叉搜索树。当然不是严格平衡,“红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡的”。性质或者说定义每个结点或者是红色的,或者是黑色的。根结点是黑色的。每个叶结点(叶结点即指树尾端NIL结点)是黑色...
2019-02-12 09:27:57
518
原创 算法——二叉搜索树
二叉搜索树定义首先应该是二叉树;其次某节点左子树键值小于该节点键值,其右子树键值大于等于该节点键值。基本性质二叉搜索树的基本操作(search、min、max、insert、delete)和树高成正比;随机构造的二叉搜索树,树高期望值为O(log(n)),说明两点:A.无论如何变化,树高在O(log(n))上下变化;B.二叉搜索树可能退化成链表,也就是树高就是节点个数,红黑树就是...
2019-02-11 16:28:50
316
原创 算法——二叉树遍历
二叉树前序、中序、后序,递归、非递归遍历import java.util.ArrayList;import java.util.List;import java.util.Stack;public class BinaryTree { static class Node { public Node left; public Node right...
2019-02-10 19:15:22
186
原创 算法——分治、动态规划、贪心算法
分治、动态规划、贪心算法的对比 文章分治法,动态规划及贪心算法区别中比较三种算法思路,简而言之,很多问题都可以用分治思路求解,将复杂问题转化为多个稍微简单的子问题,问题分解为子问题,犹如树形结构一般,但树的分叉(问题的分级扩展)有二叉树、B树,分叉等级不同;但一些问题的子问题,相互独立,且有重叠,导致树的分叉(问题的分级扩展)很少,子问题的数目约等于子子问题的数目。至于贪心算法,问题直接转化为...
2019-02-09 09:46:57
432
原创 算法——找出N个整数中最大的K个数(Java实现)
引言 算法思路来自找出N个整数中最大的K个数,可以看出,TopK问题,基本上是排序算法的延伸:利用全排序,再倒数K个数;快速排序,分区分治;类似快速排序,分区找第K大的数;堆排序,建立最小堆;计数排序,先计数,再倒数K个数;实现import java.util.Arrays;import java.util.Random;public class TopK { ...
2019-02-08 12:17:08
2983
1
原创 算法——排序
十种排序算法实现import java.util.*;public class Test { private static int[] getRandomInts(int count, int max) { if (count &lt;= 0 || max &lt;= 0) { return null; } ...
2019-02-07 09:56:02
189
原创 算法——排序之三
计数排序、桶排序、基数排序 /** * 计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 * 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 * &lt;p&gt; * 算法描述: * 1.找出待排序的数组中最大和最小的元素; * 2.统计数组中每个值为i的...
2019-02-07 09:35:56
158
原创 算法——排序之二
归并排序、快速排序、堆排序 /** * 归并排序是建立在归并操作上的一种有效的排序算法。 * 该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 * 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 * 若将两个有序表合并成一个有序表,称为2-路归并。 * &lt;p&gt;...
2019-02-05 20:09:27
146
原创 算法——排序算法
冒泡排序、选择排序、插入排序、希尔排序import java.util.Arrays;import java.util.Random;public class Test { private static int[] getRandomInts(int count, int max) { if (count <= 0 || max <= 0) { ...
2019-02-04 17:10:36
125
原创 设计模式——Memento(备忘录)模式
备忘录模式意图 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 这两句第一眼看上去无法理解,看似矛盾,不破坏封装,同时又能够保存、恢复内部状态。备忘录类图 实现备忘录模式意图中所描述的关键在于:管理者(Caretaker)只能看到备忘录的窄接口——它只能将备忘录传递给其他对象。相反,原发器(Originat...
2019-02-03 18:20:07
306
原创 设计模式——设计模式空间
GOF中对设计模式的分类(以范围分类) GOF中对23中设计模式,有两种分类方法,通常对目的准则分类的方法比较清楚,因为章节设计就是根据这种方式来的,但是忽略了范围准则——指定模式主要用于类还是对象。 类模式处理类和之类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了。对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具动态性。从某种意义上说,几乎所有模式都...
2019-02-03 17:14:49
360
原创 设计模式——Bridge
意图将抽象部分与它的实现部分分离,使它们都可以独立地变化。 GOF中对桥接模式的意图描述,是这样写的,在我第一次理解的过程中,对“抽象部分”、“实现部分”的理解,很不具体。 通常,我对于“抽象部分”的理解,更偏重于“接口”、“抽象类”等,“实现部分”,更偏重于“子类”、“实现类”,但如果以这种方式理解,Bridge模式就没有任何意义了。实例 左侧Window层次,是一种对视窗...
2019-02-03 09:13:58
304
原创 设计模式——工厂模式
简单工厂、工厂方法、抽象工厂工厂模式简单工厂工厂方法抽象工厂总结工厂模式工厂方法和抽象工厂在GOF中都在创建型模式章节中,但是看了两遍都不明白两者的区别,直到我看到了这篇文章——结合实例分析简单工厂模式&工厂方法模式&抽象工厂模式的区别。这篇文章逐层递进,一一举例说明了简单工厂、工厂方法、抽象工厂三种模式,这里根据例子,再读工厂方法和抽象工厂,加深理解。简单工厂简单工厂模...
2019-02-02 19:10:21
176
原创 设计模式——Builder
序作为不太明白的模式之一,对Builder模式一直没有形成清晰的概念,主要在于:1、Builder不常用,个人认为流行的builder构造(类似https://blog.csdn.net/qq_33487412/article/details/78960785,这篇文章举例)不是Builder模式;2、之前对GOF书籍中的Builder模式理解不够深入,一直使用Java开发,GOF中使...
2019-02-01 20:27:05
195
原创 我的第一个技术博客
工作六年至今,经历大大小小上百个问题(至于有没有上千,不敢说),到目前为止,90%的问题,都会在一番思考,将业务场景分离开之后,从某篇技术博客中找到答案。跟随作者的步骤,大多数情况下,问题都能够得到,感谢大牛、感谢你的博客。 从来没有分享技术博客的欲望,但是受人恩惠却不知回馈、...
2018-07-09 17:51:38
196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人