Vue3(项目搭建)
node.jsnpmvue3 的创建前端UI框架vue3 + ElementPlus 项目搭建
Springboot(项目搭建)
Web应用概述Web技术基础目前市面上的软件主要可分为两种:
BS:(Browser/Server,浏览器/服务器架构模式)。
CS:(Client/Server,客户端/服务器架构模式)。
架构对比
C/S架构主要特点是交互性强,具有安全访问模式,网络流量低,响应速度快,因为客户端负责大多数业务逻辑和UI演示,所以也被称为胖客户端,C/S结构的软件需要针对不同的操作系统开发不同版本的软件。
随着互联网的兴起,CS架构不适合Web,最大的原因是Web应用程序的修改和升级非常迅速,而CS架构需要每个客户端逐个升级桌面App,因此,Browser/Server模式开始流行,简称BS架构。
B/S架构的主要特点是分散性高、维护方便、开发简单、共享性高、总拥有成本低
BS架构原理 在BS架构下,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web页面,并把Web页面展示给用户即可。
开发工具JDK : (Java Development Kit) Java 开发工具包
IDEA : 编辑器
Maven:是一个项目管理工具, ...
图论
图论稀疏图与稠密图 概念: 有很少条边或弧的图称为稀疏图,反之称为稠密图。 这里稀疏和稠密是模糊的概念,都是相对而言的。目前为止还没有给出一个量化的定义。比方说一个有 100 个顶点、200 条边的图,与 100 个顶点组成的完全图相比,他的边很少,也就是所谓的稀疏了。用n表示图中顶点数目,用e表示图中边或弧的数目 稀疏图: e < nlogn 稠密图: e > nlogn若图中边或弧上有权,则该图称为网 稠密图用邻接矩阵存储 稀疏图用邻接表存储
原因: 邻接表只存储非零节点,而邻接矩阵则要把所有的节点信息(非零节点与零节点)都存储下来。 稀疏图的非零节点不多,所以选用邻接表效率高,如果选用稠密图就会造成很多空间的浪费,矩阵中大多数都会是零节点!稠密图的非零界点多,零节点少,选用邻接矩阵是最适合不过!
树与图的dfs树的重心重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。
删除 1 号点,剩余各个连通块中点数的最大值最小为 4 .
思路 : 统计删除结点中(包括删除的结点 size)的每 ...
动态规划dp
dp线性dp最长上升子序列 I ($O(n^2)$)求数值严格单调递增的子序列的长度最长是多少?
状态:$f[i]$ 表示 i 位置记录的严格单调递增的子序列的最大长度for( int i = 1; i <= n; i ++ ){ f[i] = 1; // 每个数最小长度为 1 for( int j = 1; j < i; j ++ ){ if(arr[j] < arr[i]){ // 遍历 i 位置前的数,比 i 位置小的数的位置 j 的严格单调递增的子序列的最大长度 + 1 f[i] = max(f[i], f[j] + 1); // 状态转移 取max } } res = max(f[i], res);}
最长上升子序列 II ($nlogn$)思路:首先数组arr中存输入的数(原本的数),开辟一个数组f用来存结果,最终数组f的长度就是最终的答案;假如数组f现在存了数,当到了数组a的第i个位 ...
动态规划(背包问题)
背包问题01背包每个物品最多取一次
for(int i = 1; i <= n;i ++ ){ cin >> v >> w; //边输入边处理 for(int j = m; j >= v; j -- ){ //容量必须大于可选体积 f[j] = max(f[j],f[j - v] + w); //f[i][j] = max(f[i - 1][j], f[i - 1][j - v] + w) j 正序 //f[j]不选,f[j-v]+w 选择 取两者最大 } /*关于一维为什么j要逆序。 因为正序f[j]的可能取到i(本轮)轮的f[j]而不是i-1轮的。 如果j正序: 在i轮,在j>=v的条件下v=4,w=5 f[j](j取4,5,6,7, 8) =max(f[j],f[j-v]( j-v 取0,1,2,3, 4(而这个4,则会计算f[i][4],而不是f[i-1][4]) )+w); 如果j逆序: 在i轮, ...
排序合集(上)
常见排序
冒泡排序
比较相邻的元素。如果第一个比第二个大,就交换它们两个;
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
针对所有的元素重复以上的步骤,除了最后一个;
重复步骤1~3,直到排序完成。
void bubbleSort(int arr[]){ for(int i = n - 1; i > 0; i--){ if_swap = false; for(int j = 0; j < i; j++){ if(arr[j] > arr[j + 1]){ swap(arr[j + 1],arr[j]); if_swap = true; } } if(if_swap==false){ break;//如果没有发生交换,说明已经是有序序列 ...
Mathjax语法
Mathjax 语法MathJax简介MathJax是一款运行在浏览器中的开源数学符号渲染引擎,使用MathJax可以方便的在浏览器中显示数学公式,不需要使用图片,支持 Markdown 编辑,可解析 LateX 。对于在文本编制中,规范数学数学公式非常的 nice。
公式显示
行类显示
$....$
块内显示
$$....$$
希腊字母
上下标上标 ^ , 下表 _
x_2^4 log_2^4 x^{2^5}
$x_i^2$ , $log_24$ , $x^{2^5}$
括号1. 小括号与方括号:使用原始的(),[]即可,(2+3)[4+4]
(2+3)[4+4]2. 大括号:由于大括号{}被用来分组,因此需要使用\{和\}表示大括号,也可以使用\lbrace和\rbrace来表示。如\{a*b\}: ,\lbrace a*b \rbrace
\{a*b\}3. 尖括号:使用\langle和\rangle表示左尖括号和右尖括号。如\langle x \rangle :
4. 上取整:使用\ ...
Markdown语法
Markdown 语法前言建站的第一件事就是先去学习了一下 Markdown 语法 , 方便对于博客的编写 。
Markdown 对于文本的编辑与 HTML 相比可以说是非常的通俗易懂 , 下面是我对与 Markdown 常用语法使用的一些总结 。
标题 # ~ ###### 一到六级标题
# 一级标题
以此类推
换行在一行的末尾添加两个或多个空格 ,然后按回车键 , 即可创建一个换行 。
强调斜体: *斜体* , 效果:斜体
粗体: **粗体** , 效果:粗体
粗体+斜体:***粗体+斜体 *** , 效果:粗体+斜体
删除线 ~~删除线~~ ,效果: 删除线
引用在段落前添加一个 > 符号 ,可嵌套其他元素 。
> this is my blog
this is my blog
welcome!
列表
有序列表 ,可嵌套
标题
一级标题
换行
br
无序列表
- title - br
title
title
代码`markdown` ,markdown
``using namespace `std` `` ,usin ...