自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

转载 SpringBoot事务注解@Transactional(转载)

看到的一篇讲的比较详细的,放在这里https://blog.csdn.net/wkl305268748/article/details/77619367?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task...

2020-03-03 09:20:48 335

转载 Mybatis源码解析优秀博文汇总

最近阅读了许久的mybatis源码,小有所悟。同时也发现网上有许多优秀的mybatis源码讲解博文。本人打算把自己阅读过的、觉得不错的一些博文列出来。以此进一步加深对mybatis框架的理解。其实还有一个目的是,本人也想写一系列博文来分享自己对mybatis的理解。然而。个人文笔太差,列出的这些别人的文章我也会细心研读,并希望在阅读这些文章的同时既加深我对mybatis的理解,又能探索出一种更加通...

2019-11-22 15:35:10 261

转载 MySQL5.7创建用户并授权

MySQL 5.7版本的user表中已经没有了password字段,取而代之的是 authentication_string,同时user表中还有一些没有默认值的字段,如果还通过insert的方式插入新用户,会很麻烦。在网上找到一篇写的挺好的,转载到这里。一. 创建用户命令:CREATEUSER'username'@'host'IDENTIFIEDBY'password';...

2019-10-31 11:05:13 13066

转载 IntelliJ Idea 常用11款插件(提高开发效率)

原文链接:https://blog.csdn.net/weixin_41846320/article/details/82697818

2019-09-24 08:56:55 816

转载 字符串相关算法汇总

1)求最长回文串:Manacher算法(“马拉车”算法):https://blog.csdn.net/dyx404514/article/details/42061017 

2018-09-14 10:08:06 213

转载 最长公共子序列

看了很多相关文章,把觉得好的放在这里,方便以后查看,文章1:简洁文章2:全面 文章1: https://www.cnblogs.com/en-heng/p/3963803.html文章2:https://blog.csdn.net/wangdd_199326/article/details/76464333...

2018-09-05 16:56:29 189

转载 MySQL InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析

MySQL InnoDB支持三种行锁定方式:l   行锁(Record Lock):锁直接加在索引记录上面,锁住的是key。l   间隙锁(Gap Lock):锁定索引记录间隙,确保索引记录的间隙不变。间隙锁是针对事务隔离级别为可重复读或以上级别而已的。l   Next-Key Lock :行锁和间隙锁组合起来就叫Next-Key Lock。 默认情况下,InnoDB工作在可重...

2018-09-04 14:10:52 1344

转载 页面置换算法--LFU算法实现-O(1)时间复杂度

eetcode题目地址https://leetcode.com/problems/lfu-cache/?tab=Description题目描述Design and implement a data structure for Least Frequently Used (LFU) cache. It should support the following operations: ge...

2018-09-02 19:59:12 2749

转载 源码阅读:全方位讲解LongAdder

原文地址:https://blog.csdn.net/zqz_zqz/article/details/70665941高并发下计数功能最好的数据结构就是LongAdder与DoubleAdder,低并发下效率也非常优秀,这是我见过的java并发包中设计的最为巧妙的类,从软硬件方面将java并发累加操作优化到了极致,所以应该我们应该弄清楚它的每一行代码为什么要这样做,它俩的实现大同小异,下面以L...

2018-09-02 18:15:41 2949 1

翻译 transient关键字

原文地址:https://blog.csdn.net/u013207877/article/details/525729751,transient的用途及使用方法1,用途  我们知道,当一个对象实现了Serilizable接口,这个对象就可以被序列化,我们不关心其内在的原理,只需要了解这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。而在开发过程中,我们可能...

2018-09-01 16:40:32 147

转载 一个Sqrt函数引发的血案

我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢?虽然有可能你平时没有想过这个问题,不过正所谓是“临阵磨枪,不快也光”,你“眉头一皱,计上心来”,这个不是太简单了嘛,用二分的方法,在一个区间中,每次拿中间数的平方来试验,如果大了,就再试左区间的中间数;...

2018-08-28 21:05:35 305

转载 ThreadPoolExecutor线程池及线程扩展策略

一、概述 1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务; 2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。 3、先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障。同时可以根据自己的需求实现自己的线程池 二、核心构造...

2018-08-13 14:32:04 268

转载 数据库索引以及优化

是看到的关于数据库索引以及优化的比较好的文章汇总,会慢慢更新,碰到了就搬运过来:讲解索引的原理和作用:https://www.cnblogs.com/aspwebchh/p/6652855.html讲解利用联合索引对非聚集索引的优化问题:https://www.cnblogs.com/aspwebchh/p/8383532.html#4014903...

2018-08-12 22:36:48 279

转载 平衡二叉树(AVL树)深入解读

平衡二叉树又称AVL树性质:它或者是颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。 若将二叉树节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有节点的平衡因子只可能为-1,0,1. 只要二叉树上有一个节点的平衡因子的绝对值大于1,那么这颗平衡二叉树就失去了平衡。 根据上述性质我...

2018-08-12 22:00:25 11418 4

转载 倒排索引原理和实现

关于倒排索引搜索引擎通常检索的场景是:给定几个关键词,找出包含关键词的文档。怎么快速找到包含某个关键词的文档就成为搜索的关键。这里我们借助单词——文档矩阵模型,通过这个模型我们可以很方便知道某篇文档包含哪些关键词,某个关键词被哪些文档所包含。单词-文档矩阵的具体数据结构可以是倒排索引、签名文件、后缀树等。倒排索引源于实际应用中需要根据属性的值来查找记录,lucene是基于倒排索引实现...

2018-08-12 21:56:19 1890

转载 Linux虚拟地址空间布局以及进程栈和线程栈总结

本文转自多个博客 一:Linux虚拟地址空间布局(转自:Linux虚拟地址空间布局)  在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-A...

2018-08-12 15:28:35 475

转载 平衡二叉树(AVL树)深入解读

https://blog.csdn.net/zxnsirius/article/details/52137704

2018-08-12 13:11:57 248

转载 java集合类深入分析TreeMap/TreeSet

简介     TreeMap和TreeSet算是java集合类里面比较有难度的数据结构。和普通的HashMap不一样,普通的HashMap元素存取的时间复杂度一般是O(1)的范围。而TreeMap内部对元素的操作复杂度为O(logn)。虽然在元素的存取方面TreeMap并不占优,但是它内部的元素都是排序的,当需要查找某些元素以及顺序输出元素的时候它能够带来比较理想的结果。可以说,TreeM...

2018-08-12 12:44:34 799 1

转载 Java内部类详解

内部类说简单能很简单,但是刨根到底彻底搞明白又很难。在看了一些书籍和很多博客之后,觉得下面两篇最好。https://blog.csdn.net/u014344668/article/details/72547986第二篇最出彩的地方是将为什么局部内部类和匿名内部类只能访问局部final变量这个问题讲的最清楚的一个。之前自己想了很久,看到这里才恍然大悟,其实就从final下手就行。htt...

2018-08-08 16:04:43 115

转载 一篇很好的动态规划总结的地址

https://blog.csdn.net/u013309870/article/details/75193592

2018-07-22 22:20:37 278

转载 使用序列化方式实现深度克隆

首先我们创建对象Person、Carpackage cn.qblank.test; import java.io.Serializable; public class Person implements Serializable{ private static final long serialVersionUID = -6833164004862850059L; private String ...

2018-07-11 22:07:02 2019

转载 Java中的clone和深度clone

Java中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?1 使用new操作符创建一个对象2 使用clone方法复制一个对象那么这两种方式有什么相同和不同呢? new操作符的本意是分配内存。程序执行到new操作符时...

2018-07-11 21:47:05 8786 2

转载 float和double的数值怎么保存在二进制中

稍微浅学过二进制的人,都清楚二进制是个什么东西。我们都了解正整数是怎么转化成二进制的,那么计算机中,又是怎么保存folat,double类型的数值的呢?要像弄清楚这个问题,首先得清楚二进制是怎么表示小数的。(这一点请注意了)十进制是怎么表示小数的呢?比如,125.456     其实可以分解成 1*10^2+2*10^1+5*10^0+4*10^-1+5*10^-2+6*10^-3如果用指数表示的...

2018-06-26 20:35:53 515

转载 Java中double类型比较大小或相等的方法

在Java中int类型数据的大小比较可以使用双等号,double类型则不能使用双等号来比较大小,如果使用的话得到的结果将永远是不相等,即使两者的精度是相同的也不可以。下面介绍两种比较double数据是否相等的方法。第一种方法:转换成字符串如果要比较的两个double数据的字符串精度相等,可以将数据转换成string然后借助string的equals方法来间接实现比较两个double数据是否相等。注...

2018-06-26 20:15:22 66874 15

转载 二叉树遍历的递归、非递归算法(Java实现)

二叉树的先序和中序遍历大家都是差不多的,但是后序遍历有很多不同的实现方法,在查了很多资料之后,感觉这一种是比较直观而且很巧妙的利用stack和queue的实现方式。构造二叉树采用二叉链表为二叉树的存储结构,实现基于带空子树的遍历序列构造二叉树的方法 //基于带空子树的遍历序列构造二叉树 private int i = 0; //[1] private BinaryNode&l...

2018-06-25 16:59:07 1529 1

转载 JAVA的协程实现

1. 前言         在Java中使用协程,一般会用到kilim( https://github.com/kilim/kilim )这个框架。但是看了看其用法,比较难懂。跟之前python所理解的协程的使用有很大的区别。所以就上github看看有没有别的协程框架可以用。然后发现了这个框架( https://github.com/offbynull/coroutines),也就是下面实现协程所...

2018-06-21 10:32:08 6041

转载 Boyer-Moore算法

一.简述        在当前用于查找子字符串的算法中,BM(Boyer-Moore)算法是当前有效且应用比较广的一中算法,各种文本编辑器的“查找”功能(Ctrl+F),大多采用Boyer-Moore算法。比我们在学习的KMP算法快3~5倍。        Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strothe...

2018-06-17 10:01:04 2898

转载 Redis的五种对象类型及其底层实现

Redis对象类型简介Redis是一种key/value型数据库,其中,每个key和value都是使用对象表示的。比如,我们执行以下代码:[plain] view plain copyredis>SET message "hello redis"  其中的key是message,是一个包含了字符串"message"的对象。而value是一个包含了"hello redis"的对象。Redis共...

2018-06-15 16:31:57 121

转载 细说反射,Java 和 Android 开发者必须跨越的坎

原文地址:https://blog.csdn.net/briblue/article/details/74616922写作是门手艺,笑对需要勇气。写下这个题目的时候,我压力比较大,怕的是费力不讨好。因为反射这一块,对于大多数人员而言太熟悉了,稍微不注意就容易把方向写偏,把知识点写漏。但是,我已经写了注解和动态代理这两个知识点的博客,阅读量还可以,这两个知识点是属于反射机制中的,现在对于注解和动态代...

2018-05-25 16:11:13 138

转载 反射进阶,编写反射代码值得注意的诸多细节

原文地址:https://blog.csdn.net/briblue/article/details/76223206前面一段时间,我编写了一篇关于 Java 反射基础知识的博文,内容挺多的,涉及到了 Class 的获取,Field、Method、Constructor、Array 及 Enum 的获取与操作。如果学会了这些知识,就能阅读或者是编写大多数反射相关代码。但是,因为反射这一块的内容实在...

2018-05-25 16:05:07 134

转载 电话号码排序

编程珠玑第一章,电话号码排序,问题是这样的,给你大约1000万个数字,让你用最快的方式进行排序,限制如下:1. 内存大约1M2. 数字都是整数,且不重复3. 数字的范围最大是7位数。文章提到了大约三种解法,第一种是归并算法,只不过不在内存,在外存上做归并排序。大致思路是将原始文件读入,然后按照数字的大小划分10份,写到10个文件里。这样每个文件就小于1M,然后对每个文件进行排序,排序之后,将文件合...

2018-05-08 00:31:47 4339

转载 MySQL索引原理

本文将只关注于B Tree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。MySQL索引数据结构与算法分析我们建立索引,其实就是为了构建一种数据结构,可以在上面应用一种高效的查询算法,最终提高数据的查询速度。1. 索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结...

2018-05-08 00:24:16 180

转载 《Java源码分析》:CopyOnWriteArrayList/ CopyOnWriteArraySet

《Java源码分析》:CopyOnWriteArrayList/CopyOnWriteArraySetCopyOnWriteArrayList/CopyOnWriteArraySet的基本思想是一旦对容器有修改,那么就“复制”一份新的集合,在新的集合上修改,然后将新集合复制给旧的引用。当然了这部分少不了要加锁。显然对于CopyOnWriteArrayList/CopyOnWriteArraySet...

2018-05-07 19:51:08 144

转载 ArrayList源码剖析

注:本文转自:http://blog.csdn.net/ns_code/article/details/35568011ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(Lis...

2018-05-01 13:23:59 102

转载 OpenJDK 源代码阅读之 TimSort

概要这个类在 Oracle 的官方文档里是查不到的,但是确实在 OpenJDK 的源代码里出现了,Arrays 中的 sort 函数用到了这个用于排序的类。它将归并排序(merge sort) 与插入排序(insertion sort) 结合,并进行了一些优化。对于已经部分排序的数组,时间复杂度远低于 O(n log(n)),最好可达 O(n),对于随机排序的数组,时间复杂度为 O(nlog(n)...

2018-04-27 15:35:18 150

转载 Java8 Arrays.sort VS Arrays.parallelSort

所有的开发者都会用到Arrays.sort来进行对象和原生数组进行排序,这个API会使用归并排序或者Tim排序来进行排序,源码如下所示:123456public static void sort(Object[] a) {  if (LegacyMergeSort.userRequested)    legacyMergeSort(a);  else    ComparableTimSort.so...

2018-04-27 15:20:58 350

转载 Redis为什么用跳表而不用平衡树?

Redis里面使用skiplist是为了实现sorted set这种对外的数据结构。sorted set提供的操作非常丰富,可以满足非常多的应用场景。这也意味着,sorted set相对来说实现比较复杂。同时,skiplist这种数据结构对于很多人来说都比较陌生,因为大部分学校里的算法课都没有对这种数据结构进行过详细的介绍。因此,为了介绍得足够清楚,本文会比这个系列的其它几篇花费更多的篇幅。我们将...

2018-04-23 21:56:04 923

转载 SkipList 跳表 的原理和使用例子

跳表的原理与特点跳跃链表是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(log n)平均时间),并且对并发算法友好。基本上,跳跃列表是对有序的链表增加上附加的前进链接,增加是以随机化的方式进行的,所以在列表中的查找可以快速的跳过部分列表(因此得名)。所有操作都以对数随机化的时间进行。跳跃列表是按层建造的。底层是一个普通的有序链表。每个更高层都充当下面列表的"快...

2018-04-23 21:47:53 3109

转载 跳跃表的原理及实现

1. 跳跃表的原理      学过数据结构的都知道,在单链表中查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过2分的方式缩减时间复杂度。       如上图,我们要查询元素为55的结点,必须从头结点,循环遍历到最后一个节点,不算-INF(负无穷)一共查询8次。那么用什么办法能够用更少的次数访问55呢?最直观的,当然是新开辟一条捷径去访问55。       如上图,我们要查询...

2018-04-23 21:34:28 44443 3

转载 Redis 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级

分布式缓存问题:Redis 的缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等概念一、缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。缓存正常从Redi...

2018-04-21 16:18:05 780

空空如也

空空如也

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

TA关注的人

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