自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (3)
  • 收藏
  • 关注

原创 【读书&学习笔记】积累

厚积而薄发

2021-12-20 15:22:19 1424

原创 【算法笔记】笔记目录

《算法笔记》笔记

2021-12-20 15:15:15 1074

原创 MySQL问题记录

1. mysql里面为什么用B+树?mysql访问数据要通过页,一个页就是B+树上的一个节点,访问一个节点就相当于一次I/O,所以访问节点越少,I/O次数越少,性能也就越好。而B+树的特点就是够爱够胖,一般情况下,B+树都不会超过4层,所以如果我们通过主键去查找某条记录最多只需要4个节点,所以,使用B+树可以有效的减少访问节点,提升性能。2. 那能不能用哈希呢?不能使用k-v键值对存储数据,把索引值做hash运算,并存放到hash表中,可能会存在hash冲突,拉链法(解决冲突的方法之一)。有点:k.

2022-03-05 21:28:26 598 1

原创 谷粒商城开发代码笔记记录

目录项目架构一、开发准备?1.linux开发环境配置2.开发工具配置3.使用git拉取仓库并创建各服务模块4.数据库初始化5.人人开源-后台前后端快速开发6.人人开源-crud代码生成器7.SpringCloud分布式环境配置项目架构一、开发准备?1.linux开发环境配置2.开发工具配置3.使用git拉取仓库并创建各服务模块4.数据库初始化5.人人开源-后台前后端快速开发...

2022-01-25 16:01:38 9535

原创 SpringCloud分布式环境配置

技术选择注册中心:SpringCloud Alibaba Nacos配置中心:SpringCloud Alibaba Nacos负载均衡:SpringCloud Ribbon声明式HTTP客户端:SpringCloud Feign ——调用远程服务负载均衡:SpringCloud Ribbon —— feign中已经整合,无需显示引用服务容错:SpringCloud Alibaba Sentinel ——限流、降级、熔断API网关:SpringCloud Gateway ——webflux .

2022-01-25 15:49:54 552

原创 人人开源-crud代码生成器

代码生成器:https://gitee.com/renrenio/renren-generator​克隆项目git clone https://gitee.com/renrenio/renren-generator删除克隆项目里的.git目录​导入项目到idea模块将克隆的项目复制到idea中作为模块运行。修改配置文件application.yml,主要是配置数据源修改配置文件generator.properties修改controller模板文件,因为此项目权限验证使用的是spr

2022-01-25 15:48:48 789

原创 人人开源-后台前后端快速开发

后台管理系统:https://gitee.com/renrenio/renren-fast后台管理前端:https://gitee.com/renrenio/renren-fast-vue克隆项目通过git 克隆人人开源后台前后端项目# 克隆人人开源后台管理系统git clone https://gitee.com/renrenio/renren-fast# 克隆人人开源后台管理系统前端git clone https://gitee.com/renrenio/renren-fast-vue

2022-01-25 15:47:41 2291

原创 使用git拉取仓库并创建各服务模块

创建并拉取仓库在github上创建项目仓库gulimall在idea上拉取github上的仓库并设置版本控制创建各服务模块这里我使用springboot初始化工程模块共同点:依赖spring web, OpenFeign服务包名 com.pumpkin模块名优惠券服务:gulimall-coupon用户服务:gulimall-member订单服务:gulimall-order商品服务:gulimall-product仓储服务:gulimall-ware​目录结构

2022-01-25 15:45:57 169

原创 数据库初始化

根据sql脚本依次创建数据库mall_oms:订单服务mall_pms:商品服务mall_sms:营销服务mall_ums:用户服务mall_wms:库存服务新建数据库时,字符集选用utf8mb4

2022-01-25 15:44:58 697

原创 开发工具及配置

JDK保证JDK8以上,我使用的是JDK11。​maven安装maven配置阿里云镜像maven安装/conf目录下的settings.xml添加<mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/group

2022-01-25 15:44:12 8266

原创 linux开发环境配置

该项目很多软件都安装在linux系统上,我使用的是阿里云服务器。这里使用docker配置环境​安装Dockerdocker官方文档1. 删除老版本,如果没有安装过docker忽略 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-l

2022-01-24 01:42:25 808

原创 docker

1. docker简介1.1 docker是什么为什么会有docker出现?一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的

2022-01-20 00:28:54 865

原创 SpringCloud & SpringCloud alibaba

概述本文基本环境技术版本couldHoxton.SR1boot2.2.2.RELEASEcloud alibaba2.1.0.RELEASEJava11Maven3.5及以上Mysql5.7及以上现阶段主要的微服务(×表示已经停更)文章导航环境搭建服务注册中心服务调用服务调用2服务降级服务网关服务配置服务总线微服务环境搭建EurekaRibbonFeignHystrixZuulConfi

2022-01-16 02:07:13 184

原创 Nginx基础

Nginx正向代理反向代理负载均衡动静分离1. Nginx概述1.1 正向代理Nginx不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。正向代理: 如果把局域网外的internet想象成为一个巨大的资源库,则局域网中的客户端要访问internet,则需要通过代理服务器来访问,这种代理服务器就称为正向代理。1.2 反向代理反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向..

2022-01-07 22:11:24 138

原创 【并发编程】

1. 什么是JUC1.1 JUC简介在Java中,线程部分是一个重点。JUC就是java.util.concurrent工具包的简称。这是一个处理线程的工具包,JDK1.5开始出现。1.2 进程与线程**进程(Process)**是计算机中的程序关于某数集合上的一次运行活动,是系统进行资源分配的调度的基本单位,是操作系统结构的基础。在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分

2021-12-25 23:24:57 352

原创 linux超内存自动杀进程问题

linux超内存自动杀进程问题最近搭完oj系统,出现一运行判题机此博客进程便会莫名其妙的被杀掉导致博客无法运行(oj跟此博客是搭在同一台服务器上的。)百度很久没有结果,查看/var/log/message发现当 Linux 系统内存不足时,系统会把当前系统占用系统内存过高的进程当做流氓进程,然后系统发出信号将这个流氓进程杀掉,最后导致 Java 应用服务不能使用解决方法解决方法方法1:通过调整 JVM 参数限制最大可使用内存方法2:启用 swap 分区方法3:增加物理内存或增加机器方法4

2021-12-24 23:16:01 4004 1

原创 《Java核心技术 卷一》 笔记

第3章 Java基本的程序设计结构 第4章 对象与类 第5章 继承 第6章 接口与内部类 第8章 事件处理 第10章 部署应用程序 第11章 异常、日志、断言和调试 第12章 泛型程序设计 第13章 集合 第14章 多线程 ...

2021-12-24 23:09:30 348

原创 《Java核心技术卷一》 第3章 Java基本的程序设计结构

3.1 简单的Java程序Java语言中,对大小写敏感。3.2 注释Java中的注释不会出现在可执行程序中。在Java中,有三种注释方式:最常用的方式是// ,从//开始到本行结束/* */ 将一段比较长的注释括起来。/** */ 这种注释用来自动生成文档。3.3 数据类型 Java是一种强类型语言。 在Java中,一共有8种基本类型(primitive type),其中包含4种整型(byte, short , int , long),2种浮点型(float , double) ,

2021-12-24 23:08:24 399

原创 《算法笔记》10.3 图的遍历-算法笔记103图的遍历

10.3 图的遍历图的遍历是指对图的所有顶点按一定顺序进行访问,遍历方法一般有两种:深度优先搜索和广度优先搜索。10.3.1 DFS遍历图两个概念:连通分量:在无向图中,如果两个顶点之间可以相互到达(可以是通过一定路径间接到达),那么就称这两个顶点连通。如果图G(V,E)的任意两个顶点都连通,则称图G为连通图;否则,称图G为非连通图,且称其中的极大连通子图为连通分量。v1v2v3 , v4v5v6v7 , v8v9 形成三个连通分量强连通分量:在有向图中,如果两个顶点可以各自通过一条有向

2021-12-24 23:00:08 472

原创 《算法笔记》10.2 图的存储

10.2 图的存储一般来说,图的存储方式有两种:邻接矩阵和邻接表。这两种存储方式各有优势,需要在不同的情况下选择使用。10.2.1 邻接矩阵设图G(V,E)的顶点标号为0,1 ,…… ,N-1 ,那么可以令二维数组G[N][N]的两维分别表示图的顶点标号,即如果G[i][j]为1,则说明顶点i和顶点j之间有边;如果G[i][j]为0,则说明顶点i和顶点j之间不存在边,而这个二维数组G[N][N]则被称为邻接矩阵。另外,如果存在边权,则可以令G[i][j]存放边权,对不存在的边可以设边权为0、-1或是一

2021-12-24 22:58:29 508

原创 【JavaEE】笔记

xmlTomcatServletSession和CookieFilter过滤器Json和AJAX

2021-12-24 22:56:03 175

原创 《算法笔记》10.1 图的定义和相关术语

10.1 图的定义和相关术语图由顶点(Vertex)和边(Edge)组成,每条边的两端都必须是图的两个顶点(可以是相同的点)。而记号G(V,E)表示图G的顶点集为V、边集为E。一般来说,图可分为有向图和无向图。有向图的所有边都有方向,即确定了顶点到顶点的一个指向;而无向图的所有边都是双向的,即无向边所连接的两个顶点可以相互到达。。在一些问题中,可以把无向图当作所有边都是正向和负向的两条有向边组成,这对解决一些问题很有帮助。顶点的度是指和该顶点相连的边的条数。特别是对于有向图来说,顶点的出边条数称为

2021-12-21 13:15:09 110

原创 【Java基础】笔记

Java基础笔记索引

2021-12-21 13:12:36 374

原创 《算法笔记》9.8 哈夫曼树

9.8 哈夫曼树9.8.1 哈夫曼树先介绍经典的合并果子问题。有n堆果子,每堆果子的质量已知,现在需要把这些果子合并成一堆,但是每次只能把两堆果子合并到一起,同时会消耗与两堆果子质量之和等值的体力。显然,在进行n-1次合并之后,就只剩下一堆了。为了尽可能节省体力,请设计出合并的次序方案,使得耗费的体力最少,并给出消耗的体力值。例如有3堆果子,质量依次为1、2、9,那么可以先将质量为1和2的果堆合并,新堆质量为3,因此耗费体力为3。接着,将新堆与原先的质量为9的果堆合并,又得到新的堆,质量为12,因

2021-12-21 13:06:57 4093 1

原创 《算法笔记》9.7 堆

9.7 堆9.7.1 堆的定义与基本操作堆是一棵完全二叉树,树中每个结点的值都不小于(或不大于)其左右孩子结点的值。其中,如果父亲结点的值大于或等于孩子结点的值,那么称这样的堆为大顶堆,这时,每个结点的值都是以它为根结点的子树的最大值。相反,则为小顶堆。那么对于一个给定的初始序列,怎样把它建成一个堆呢?从最后一个元素开始,从下往上,从右往左。假设当前元素X,让x与X的孩子结点比较,如果发现比X更大的元素Y,则交换X与Y的位置,这样Y就成了根结点,而X则成为了孩子结点。交换之后让X继续与其孩子结点比较

2021-12-21 13:05:33 464

原创 《算法笔记》9.6 并查集

9.6 并查集9.6.1 并查集的定义并查集是一种维护集合的数据结构,他的名字中“并”、“查”、“集”分别取自Union(合并)、Find(查找)、Set(集合)。也就是说,并查集支持下面两个操作:合并:合并两个集合查找:判断两个元素是否在一个集合。那么并查集用什么实现呢?其实就是用一个数组:int father[N] ;其中father[i]表示元素i的父亲结点,而父亲结点本身也是这个集合内的元素。如果fatjer[i]==i,则说明元素i是该集合的根结点。但对同一个集合来说只存在一个

2021-12-21 13:04:06 193

原创 《算法笔记》9.5 平衡二叉树(AVL)

9.5 平衡二叉树(AVL)考虑使用序列{1,2,3,4,5}构建二叉查找树。显然这棵二叉查找树是链式的。那么,一旦需要对有10^5级别个递增元素的序列构建二叉查找树,也将会得到一棵长长链条式的树,此时对这棵树中结点进行查找的复杂度就会达到0(N),起不到使用二叉查找树来进行数据查询优化的目的。于是需要对树的结构进行调整,使树的高度在每次插入元素后仍然能保持O(logn)的级别,这样能让查询操作仍然是O(logn)的时间复杂度,于是就产生了平衡二叉树。AVL树仍然是一棵二叉查找树,只是在其基础上增加

2021-12-21 13:02:26 608

原创 《算法笔记》9.4 二叉查找树(BST)

9.4 二叉查找树(BST)9.4.1 二叉查找树的定义二叉查找树是一种特殊的二叉树,又称为排序二叉树、二叉搜索树、二叉排序树。二叉查找树的递归定义:要么二叉查找树是一颗空树要么二叉查找树由根结点、左子树和右子树组成,其中左子树和右子树都是二叉查找树,且左子树上所有结点的数据域均小于根结点数据域,右子树上所有节点数据域均大于根结点数据域。9.4.2 二叉查找树基本操作1.查找查找将会是从树根到查找结点的一条路径,故最坏复杂度是O(h),其中h是二叉查找树的高度。如果当前根节点root为

2021-12-21 13:00:28 349

原创 《算法笔记》9.3 树的遍历

9.3 树的遍历9.3.1 树的静态写法这里的“树”指的是一般意义上的树,即子节点个数不限且子节点没有先后次序的树。struct node{ typename data ; //数据域 vector<int> child ; //指针域,存放当前节点所有子节点下标}Node[maxn]; //节点数组,maxn为节点上限个数一般都是很人性化地给出了结点的编号,并且编号一定是0,1,…N-1(其中N为结点个数)或是1,2,.,N。在这种情况下,就不需要ne

2021-12-21 12:59:13 145

原创 《算法笔记》9.2 二叉树的遍历

9.2 二叉树的遍历二叉树的遍历是指通过一定顺序访问二叉树的所有节点。遍历方法一般有4种:先序遍历,中序遍历,后序遍历,层序遍历。其中,前三种一般使用DFS实现,而层序遍历一般使用BFS使用。先序遍历顺序为:根节点->左子树->右子树中序遍历顺序为:左子树->根节点->右子树后序遍历顺序为:左子树->右子树->根节点9.2.1 先序遍历先序遍历顺序为:根节点->左子树->右子树void preOrder( Node* root ){ if

2021-12-21 12:57:27 356

原创 《算法笔记》9.1 树与二叉树

9.1 树与二叉树9.1.1 树的性质树可以没有结点,这种情况下把树称为空树(empty tree)树的层次(layer)从根结点开始算起,即根结点为第一层,根结点子树的根结点为第二层,以此类推。把结点的子树棵数称为结点的度(degree),而树中结点的最大的度称为树的度(也称为树的宽度),例如图9-1中的三棵树的度分别为2、3、5.由于一条边连接两个结点,且树中不存在环,因此对有n个结点的树,边数一定是n-1,且满足连通、边数等于顶点数减1的结构一定是一棵树。叶子结点被定义为度为0的结点,因

2021-12-21 12:56:10 163

原创 《算法笔记》6.9 algorithm头文件下常用函数

6.9 algorithm头文件下常用函数6.9.1 max()、min()、abs()max(x,y)和min(x,y)分别返回x和y中的最大值和最小值,且参数必须是两个(可以是浮点数)。如果想要返回三个数x、y、z的最大值,可以使用max(x , max(y,z))的写法。abs(x)返回x的绝对值。注意:x必须是整数,浮点型的绝对值请用math头文件下的fabs()。6.9.2 swap()swap(x,y)用来交换x和y的值int a = 1 , b = 2 ;swap(a,b);/

2021-12-20 15:36:05 290

原创 《算法笔记》6.8 pair详解

6.8 pair详解pair是一个很实用的“小玩意”,当想要将两个任意类型的元素绑定在一起作为一个合成元素、又不想要因此定义结构体时,使用pair可以很方便地作为一个代替品。也就是说,pair实际上可以看作一个内部有两个元素的结构体,且这两个元素的类型可以指定。1. pair的定义要使用pair,需要添加头文件和命名空间。#include<utility>using namespace std ;由于map的内部实现涉及了pair,因此添加map头文件会自动添加utility头文件

2021-12-20 15:34:41 288

原创 《算法笔记》6.7 stack详解--suan-fa-bi-ji-67stack-xiang-jie

6.7 stack详解stack翻译为栈,是STL中实现的一个先进后出的容器。要使用stack,需要添加头文件和命名空间。#include<stack>using namespace std ;1. stack的定义与其他STL容器相同stack< typename > s ;2. stack容器元素的访问由于stack本身就是一种先进后出的限制性数据结构,在STL中stack只能通过**top()**来访问栈顶元素 st.top() ;3. stack常

2021-12-20 15:33:41 107

原创 《算法笔记》6.6 priority_queue详解

6.6 priority_queue详解priority_queue又称为优先队列,其底层是用堆来进行实现的。在优先队列中,队首元素一定是当前队列中优先级最高的那一个。当然,可以在任何时候往优先队列里面加入(push)元素,而优先队列底层的数据结构堆会随时调整结构,使得每次的队首元素都是优先级最大的。要使用queue,需先添加头文件和命名空间。#include<queue>using namespace std ;1. priority_queue的定义priority_queu

2021-12-20 15:32:29 996

原创 《算法笔记》6.5 queue详解

6.5 queue详解queue翻译为队列,在STL中主要则是实现了一个先进先出的容器。要使用queue,需先添加头文件和命名空间。#include<queue>using namespace std ;1. queue的定义queue< typename > name ;2. queue容器内元素的访问由于队列(queue)本身就是一种先进先出的限制性数据结构,因此在STL中只能通过front()来访问队首元素,或是通过back()来访问队尾元素。 queue&

2021-12-20 15:31:20 179

原创 《算法笔记》6.4 map详解-算法笔记64map详解

6.4 map详解map翻译为映射,也是常用的STL容器。map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器),也就可以建立string类型到int类型的映射。如果要使用map,需要添加头文件和命名空间。#include<map>using namespace std ;1.map的定义单独定义一个mapmap<typename1 , typename2> mp ;而如果将字符串映射到整型,只能是string而不能是char数组map&

2021-12-20 15:29:49 296

原创 《算法笔记》6.3 string详解--suan-fa-bi-ji-63string-xiang-jie

6.3 string的常见用法详解如果要使用string,需要添加头文件和命名空间。#include<string>using namespace std ;注意:string.h与string是不一样的头文件。1. string定义方式string ste ;如果要初始化string str = "abc" ;2. string中内容访问(1)下标访问一般来说,可以直接像字符数组那样去访问stringfor( int i = 0 ; i < str.leng

2021-12-20 15:28:50 231

原创 《算法笔记》6.2 set详解

6.2 set详解set翻译为集合,是一个内部自动有序 且不含重复元素 的容器。如果使用set,需添加头文件和命名空间。#include<set>using namespace std ;1. 单独定义setset<typename> name ;基本定义与vector基本一样。2.set容器内元素访问set只能通过迭代器访问:set<typename>::iteartor it ;如for( auto it = st.begin() ;

2021-12-20 15:25:54 1183

原创 《算法笔记》8.2 深度优先搜索DFS

深度优先搜索是一种枚举所有完整路径以遍历所有情况的搜索方法,记住使用递归来实现DFS的本质其实还是栈——使用递归时,系统会调用系统栈 来存放递归中的每一层状态。通过例子学习理解DFS题目一   有n件物品,每件物品的重量为w[i],价值为c[i],现在需要选出若干件物品放入一个容量为V的背包中,使得在选入背包的物品重量和不超过容量V的前提下,让背包中物品的价值之和最大,求最大价值,(1<n<20)题解   显然,每件物品都有装入背包与不装入背包两种选择,因此DFS函数的参数中必须记录当

2021-12-18 19:17:40 669

nginx软件.rar

linux下nginx安装包及其所需要的依赖

2022-01-07

RabbitMQ.rar

RabbitMQ安装包及其插件(linux)

2021-12-10

halo-theme-xue.zip

雪主题

2021-03-06

空空如也

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

TA关注的人

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