数据库原理 MySQL 体系结构和存储引擎MySQL 被设计成一个可移植数据库,几乎在当前所有系统上都能运行,如 Linux,Solaris,Mac 和 Windows。 数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合。 实例:MySQL 数据库由后台线程以及一个共享内存区组成。数据库实例才是真正用于操作数据库文件的。 MySQL 数据库实例在系统上的表现就是一个进程。 MySQL 体系结 2021-12-03 Java后端 数据库 MySQL
分布式锁 前言 与分布式锁相对应的是单机锁,我们在写多线程程序时,避免同时操作一个共享变量产生数据问题,通常会使用一把锁来互斥,以保证共享变量的正确性,其适用范围是在同一个进程中。 那么换做是多个进程同时操作一个共享资源,这些资源已经不是在线程之间共享了,而是属于进程之间共享的资源。比如一个应用部署到几台机器上做负载均衡,如下图: 如上图所示,变量 A 存在三个服务器的内存中(这个变量 A 主要体现是在一 2021-11-28 Java后端 redis
计网学习笔记 因特网概述 网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成。 多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网。 因特网(Internet)是世界上最大的互联网络(用户数以亿计,互连的网络数以百万计)。 ISP(Internet Service Provider)因特网服务提供者,普通用户接入因特网的过程就是通过ISP。 ISP 2021-11-13 计算机基础 计算机网络
Spring的IOC IOC 是什么IOC(Inversion Of Control),即控制反转 什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术。 由容器控制程序之间的关系,而不是由代码直接控制。 由于控制权由代码转向了容器,所以称为反转。 对 IOC 的理解IOC 是面向对象中的一种编程思想或原则。在传统方式中,当依赖一个对象时,需要主动去创建它并进行属性赋值,然后才能去使用这个对 2021-10-12 Java后端 Spring IOC DI
背包问题 什么是背包问题 01背包(重点) 有N件物品和一个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 以上就是一个经典的01背包问题。 二维dp数组01背包假设背包最大重量为4,物品为: 重量 价值 物品0 1 15 物品1 3 20 物品2 4 30 2021-10-11 数据结构与算法 动态规划 背包
回溯算法 什么是回溯法回溯法是一种搜索方式,只要有递归就会有回溯 回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案。对回溯进行优化可以加一些剪枝的操作,但是也不会改变回溯法就是穷举的本质 剪枝精髓是:for循环在寻找起点的时候要有一个范围,如果这个起点到集合终止之间的元素已经不够题目要求的k个元素了,就没有必要搜索了 应用 组合问题:N个数里面按一定规则找出k个数的集合 切割问题:一个字符串按一定规则 2021-09-28 数据结构与算法 递归 回溯
红黑树 预备知识二叉查找树二叉查找树又叫二叉排序树,也叫二叉搜索树,左节点小于根节点,右节点大于根节点。没有键值相等的结点。 示例图: 实现: 12345678910111213public class BinarySearchTree<T> { T data; BinarySearchTree<T> left; BinarySearchTree< 2021-08-23 数据结构与算法 二叉查找树 平衡二叉树 红黑树
二叉树 简介二叉树的特点是每个结点最多只能有两颗子树,且有左右之分。 定义: 二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。 一些类型: 满二叉树:只有度为0的结点和度为2的结点,并且度为0的结点在同一层上 完全二叉树:深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应。 完全二叉树的特点: 叶子结点 2021-08-19 数据结构与算法 树 二叉树
十大经典排序算法 算法概述算法分类十种常见的排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序 排序算法 平均时间复杂度 空间复杂度 稳定性 冒泡排序 O(n^2) O(1) 2021-08-14 数据结构与算法 排序
堆 大根堆大根堆就是根节点是整颗树的最大值(根节点大于等于左右子树的最大值),对于他的任意子树,根节点也是最大值。小根堆则相反 要求: 根节点的关键字既大于或等于左子树的关键字值,又大于或等于右子树的关键字值 为完全二叉树,所以可以用数组来存储。i结点的父结点下标就为 (i – 1) / 2 它的左右子结点下标分别为2 * i + 1和2 * i + 2 创建大根堆比如一棵树有 N 个元素, 2021-08-12 数据结构与算法 堆 大根堆