- 博客(50)
- 收藏
- 关注
原创 MySQL日期时间函数
1、日期格式化:DATE_FORMAT(date,format) SELECT DATE_FORMAT(now(), '%Y-%m-%d'); 结果:2020-01-042、时间戳:UNIX_TIMESTAMP(),UNIX_TIMESTAMP(date) SELECT UNIX_TIMESTAMP() 结果:1578153160 SELE...
2020-01-04 23:36:45 228
原创 JMM与volatile
Java内存模型JMM(全称Java Memory Model)1、JMM数据原子操作read(读取):从主内存读取数据 load(载入):将主内存读取到的数据写入工作内存 use(使用):从工作内存读取数据来计算 assign(赋值):将计算好的值重新赋值到工作内存中 strore(存储):将工作内存数据写入主内存 write(写入):将store过去的变量值赋值给主内存中的变...
2019-10-08 14:35:24 182
原创 斐波那契数列算法JAVA几种实现
问题:斐波那契数列(Fobonacci):1,1,2,3,5,8,13,... ;给定下标n,根据下标n求下标n所对应的值实现方式如下5种:1、递归实现2、while循环实现3、循环数组实现4、for循环实现5、尾递归实现(比递归实现性能好)/** * 1,1,2,3,5,8,13... 斐波那契数列(Fobonacci) */public class Fobo...
2019-09-25 15:34:33 1608
原创 MySQL数据库事物隔离级别
MySQL数据库事物隔离级别:隔离级别 脏读 不可重复读 幻读 读未提交(READ-UNCOMMITTED) 是 是 是 读已提交(READ-COMMITTED) 否 是 是 可重复读(REPEATABLE-READ)(默认) 否 否 是 串行化(SERIALIZABLE) 否 否 否 ...
2019-09-24 21:27:17 139 1
原创 Linux—vim相关
vim里搜索/+关键字,回车即可。此为从文档当前位置向下查找关键字,按n键查找关键字下一个位置; ?+关键字,回车即可。此为从文档挡圈位置向上查找关键字,按n键向上查找关键字; 例如搜索 the写法:/the + 回车键...
2020-05-21 18:01:36 197
原创 Redis布隆过滤器安装
RedisBloom下载地址:https://github.com/RedisBloom/RedisBloom解压文件:unzip RedisBloom-master.zip进入目录:cd RedisBloom-master执行命令:make目录下生成文件:redisbloom.so拷贝:cp redisbloom.so /usr/local/redis/bin/redisbloom.soRedis引入该模块1、在redis.conf配置文件里加入如下引入配置: loa.
2020-05-19 16:12:46 776
原创 二叉树遍历
定义所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。遍历方案从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:⑴访问结点本身(N),⑵遍历该结...
2020-01-13 16:34:01 576
原创 红黑树与AVL树的区别
AVL树1)和红黑树相比,AVL树是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差不超过1)。不管是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转是非常耗时的,由此我们可以知道AVL树适合用于插入与删除次数比较少,但查找多的情况。2)AVL树追求绝对平衡,条件比较苛刻,实现起来比较麻烦,每次插入新节点之后需要旋转的次数不能预知。3)由于维护这种...
2020-01-13 11:44:42 5390
原创 AVL树
定义AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。特点AVL树本质上还是一棵二叉搜索树,它的特点是: 1.本身首先是一棵二叉搜索树。2.带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。也就是说,AVL树,本质上是带了平衡功能的二...
2020-01-13 10:27:57 146
原创 红黑树
定义红黑树(Red Black Tree) 是一种自平衡二叉查找树性质红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:1)节点是红色或黑色。2)根节点是黑色。3 )每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)4)从任一节点到其每个叶子的所...
2020-01-12 17:50:20 186
原创 平衡二叉查找树
平衡二叉搜索树(英语:Balanced Binary Tree)是一种结构平衡的二叉搜索树,即叶节点高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。它能在O(logN)内完成插入、查找和删除操作,最早被发明的平衡二叉搜索树为AVL树。常见的平衡二叉查找树有:AVL树...
2020-01-12 17:46:11 144
原创 平衡树
定义平衡树,即平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等...
2020-01-12 17:42:07 419
原创 完全二叉树
定义若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。(1)所有的叶结点都出现在第k层或k-l层(层次最大的两层)(2)对任一结...
2020-01-12 17:33:19 441
原创 满二叉树
国内满二叉树定义一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。性质1、一个层数为k 的满二叉树总结点数为:因此满二叉树的结点数一定是奇数个。2、第i层上的结点数为:3、一个层数为k的满二叉树的叶子结点个数(也就是最后一层):例图如下...
2020-01-12 17:24:42 1696
原创 二叉排序树
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。定义一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。...
2020-01-12 17:02:53 166
原创 二叉树
定义在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。性质...
2020-01-12 16:57:18 131
转载 树、森林与二叉树的转换
树转换为二叉树(1)加线。在所有兄弟结点之间加一条连线。(2)去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。(3)层次调整。以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子)森林转换为二叉树(1)把每棵树转换为二叉树。(2)第一棵二叉树不动,从第二棵...
2020-01-12 16:43:55 182
原创 树
树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 1)每个结点有零个或多个子结点; 2)没有父结点的结点称为根结点; 3)每一个非根结点有且只有一个父结点; 4)除了根结点外,每个子结点可以分为...
2020-01-12 15:34:27 165
原创 数据库查询优化器
查询优化器两种分类:1、RBO:Rule-Based Optimizer 基于规则的优化器 这是一种比较老的技术,简单说基于规则的优化就是当数据库执行一条query语句的时候必须遵循预先定义好的一系列规则来确定执行过程,它不关心访问表的数据分布情况,仅仅凭借规则经验来确定,所以说是一种比较粗放的优化策略。 RBO所用的判断规则是一组内置的规则,这些规则是硬编码在数据库的...
2020-01-09 10:19:02 365
原创 JDK和CGLIB动态代理的区别
1、JDK和CGLIB动态代理的区别1)JDK代理使用的是反射机制实现AOP的动态代理;CGLIB代理使用字节码处理框架asm,对代理对象类的class文件加载进来,通过修改字节码生成子类。2)JDK创建代理对象效率较高,执行效率较低;CGLIB创建效率较低,执行效率高。3)JDK动态代理机制是委托机制,具体说动态实现接口类;CGLIB则使用的继承机制,具体说被代理类和代理类是继承关系...
2019-11-15 10:12:24 1614
原创 notepad++批量处理文本
1、批量加前缀1、光标定位到待处理文本的最前面2、notepad++工具栏—>编辑—>列块编辑—>插入文本—>输入要插入的前缀—>点击确定即可如图所示2、批量加后缀1、notepad++工具栏—>搜索—>查找—>选择替换选项卡2、在“查找目标”中输入:$,在“替换为”中输入所要插入的后缀,点击全部替换即可如图所示:...
2019-11-12 15:21:23 11718
原创 OSI网络模型
OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。七层网络模型七层网络模型说明七层网络模型协议...
2019-11-07 21:37:57 166
原创 语法糖
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。例如:JAVA中的增强的for循环其实是一种语法糖。...
2019-10-30 15:57:59 95
原创 缓存穿透
缓存穿透1、定义缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。2、解决方案1)如果查询数据库也为空,直接设置一个默认值存放到缓存,这样第二次到缓冲中获取就有值了,而不会继续访问数据库。缓存有效时间可以设置短点(设置太长会导致正常情况也没法使用),这样可以防止...
2019-10-27 16:08:17 109
原创 缓存预热
缓存预热1、定义缓存预热就是系统上线后,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!2、解决方案1)直接写个缓存刷新页面,上线时手工操作下。2)数据量不大,可以在项目启动的时候自动进行加载。3)定时刷新缓存。...
2019-10-27 16:07:42 1500
原创 缓存击穿
1、定义缓存击穿是指热点key在某个时间点过期的时候,而恰好在这个时间点对这个Key有大量的并发请求过来,从而大量的请求打到db。2、解决方案1)设置热点数据永远不过期2)使用互斥锁3)设置过期标志更新缓存(同缓存雪崩)...
2019-10-27 16:01:41 123
原创 缓存雪崩
缓存雪崩1、定义缓存雪崩是指缓存中数据大批量到过期时间,导致所有请求都会去查数据库,而查询数据量巨大,引起数据库压力过大甚至down机。2、缓存雪崩原因和解决方案缓存大面积失效1)避免缓存设置相近的有效期;为有效期增加随机值;统一规划有效期,失效时间均匀分布。有效期本身的缺陷2)设置热点数据永远不过期。热点数据持续高并发3)使用互斥锁:JVM锁机制;分布式锁机制...
2019-10-25 18:32:11 146
原创 线程的优缺点
1、线程的优点1)发挥多处理器的强大性能2)建模的简单性3)异步事件的简化处理4)响应更灵敏的用户界面2、线程的缺点1)安全性问题2)活跃性问题3)性能问题...
2019-10-25 10:38:28 1443
原创 线程池的几种策略
线程池针对请求处理的四种饱和策略线程池的资源是有限的,当线程池没有可用的资源时,后面接收进来的任务请求如何处理,线程池有以下几种方式。1、AbortPolicy默认策略(中止策略)新任务提交时直接抛出未检查的异常RejectedExecutionException,该异常可由调用者捕获。2、CallerRunsPolicy为调节机制,既不抛弃任务也不抛出异常,而是将某些任务回退...
2019-10-24 09:44:49 2939
原创 Linux文件描述符
1、定义内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。文件描述符是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符;文件描述符是一个简单的非负整数,用以表明每个被进程打开的文...
2019-10-22 17:53:25 328
原创 同步和异步、阻塞和非阻塞
同步和异步的概念描述的是用户线程与内核的交互方式1、同步同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行。2、异步异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式3、阻塞阻塞是指IO操作需要彻底完成后才返回到用户空...
2019-10-22 14:57:00 76
原创 IO、BIO、NIO、AIO
1、IOIO的全称是:Input/Output的缩写。2、BIOBIO 是 blocking I/O 的缩写,同步阻塞I/O。例如:Socket3、NIONIO 是 non-blocking I/O的缩写,同步非阻塞I/O。例如:java nio框架4、AIOAIO 是 Asynchronous I/O的缩写,异步非阻塞I/O。适用场景 BIO方式适用...
2019-10-22 10:25:38 274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人