加载中
博客目录

1 JAVA 1.1 JAVA JVM JAVA内存模型 JAVA内存结构和内存管理 JAVA垃圾回收器 JAVA Class文件和类加载机制 jvm学习总结之【一个类的前世今生】 JAVA对象的创建和内存分配策略 1.2 线程与并发控...

JAVA内存泄漏和内存溢出

1 内存泄漏(memory leak) 内存泄漏是指你向系统申请分配内存进行使用(allocate),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了...

02/18 20:24
297
Spring的循环依赖和三级缓存

循环依赖 循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图: 注意,这里不是函数的循环调用,是对象的相互...

行为型设计模式(模板/策略/命令/职责链/状态/观察者/中介者/迭代器/访问者/备忘录/解释器)

前言 因为设计模式种类多,且重理解重回忆,所以本文尽量言简意赅,便于时时温习。 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,...

详解分布式锁的三种实现方式

前言 分布式锁的背景 我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美的运行,毫无Bug。 但注意这...

JAVA中浮点型数据的存储方式

前言 在JAVA中,我们知道int和float占用4个字节,double和long占用8个字节。 那为何int和long的取值范围分别是[-2^31,2^31],float的取值范围却是[-3.40282346638528860e+38 , -1.4012984643...

01/18 22:20
336
【I/O设计总结三】详解Reactor/Proactor高性能IO处理模式

前言 随着IO多路复用技术的出现,出现了很多事件处理模式,其中Reactor/Proactor模式是其中的佼佼者。 Reactor模式是非阻塞同步的I/O模型,Proactor模式是非阻塞异步I/O模型。 平时接触的开源...

MySQL的分区/分库/分表总结

前言 本文一切基于MySql InnoDB 概念 分区:把一张表的数据分成多个区块,在逻辑上看最终只是一张表,但底层是由多个物理区块组成的 分表:把一张表按一定的规则分解成多个具有独立存储空间的...

2020/12/29 22:40
102
动态规划的分析和简述

1 动态规划的概念 1.1 定义 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的数学方法。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策...

ios
2020/12/23 22:31
117
排序算法汇总和整理

前言 排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间...

2020/12/14 22:45
42
【I/O设计总结一】五种I/O模型总结

前言 在了解IO设计之前,我们首先的搞明白几个概念:什么是阻塞和非阻塞,什么是同步和异步; 同步和异步是针对应用程序和内核的交互而言的; 同步指的是应用程序触发IO操作并等待或者轮询的...

通俗易懂的二叉树的前中后序遍历

前言 二叉树的遍历是指不重复地访问二叉树中所有结点,主要指非空二叉树,对于空二叉树则结束返回。二叉树的遍历主要包括前序遍历、中序遍历、后序遍历。 一棵二叉树由根结点、左子树和右子树...

cef
2020/12/07 22:01
384
简述二叉堆和优先级队列

1 堆和树的区别 堆是一类特殊的树,就类似一堆东西一样(金字塔结构),按照由大到小(或由小到大)“堆”起来。 其中容易混淆的是二叉堆和二叉树。 二叉堆的特点是双亲结点的值必然小于等于...

分布式事务的概念论述和方案总结

1 分布式事务的概念 事务在分布式计算领域也得到了广泛的应用。在单机数据库中,我们很容易能够实现一套满足ACID特性的事务处理系统,但是在分布式数据库中,数据分散在各台不同的机器上,如...

JAVA监控和调优工具操作指南

前言 我们在日常的开发和维护工作中,免不了需要对JAVA程序进行监控、调优以及问题排查。 给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里...

2020/10/21 22:27
99
JAVA内置排序Arrays.sort实现简述

前言 在JAVA开发中,我们经常需要操作数组和集合,其中数组和链表的排序是重中之重。 Arrays.sort方法用来对数组排序。Collections.sort()方法用来对链表排序,而Collections.sort()的底层,...

2020/10/13 23:15
1K
算法类型分析和汇总——理论方法篇(此坑未填)

1 拓扑排序 【定义】:拓扑排序实质上只是将DAG图的顶点排成一个线性序列,得到一个顶点的全序集合,其排序的顺序依据就是节点的指向关系。 【适用场景】:在图的环路判断和输出线性序列的场...

2020/10/09 22:15
32
【图论】拓扑排序详解

前言 在正文开始前,我们先来了解一下有向无环图(Directed Acyclic Graph简称DAG) 如下图就是一个DAG图,DAG图是我们讨论拓扑排序的基础。 AOV网:数据在顶点 可以理解为面向对象 AOE网:数据...

【图论】广度/深度优先搜索算法

前言 我们首次接触广度优先搜索和深度优先搜索时,应该是在数据结构课上讲的 “图的遍历”。还有就是刷题的时候,遍历二叉树/拓扑排序我们会经常用到这两种遍历方法。 广度优先搜索算法(Bre...

mst
2020/09/15 20:55
406
【InnoDB详解四】redo log和undo log

1 redo log 首先我们先明确一下InnoDB的修改数据的基本流程,当我们想要修改DB上某一行数据的时候,InnoDB是把数据从磁盘读取到内存的缓冲池上进行修改。这个时候数据在内存中被修改,与磁盘...

2020/09/01 22:17
352

没有更多内容

加载失败,请刷新页面

返回顶部
顶部