树形DP模板
三个经典例题
通过三个例题了解解题模板,让你用模板越用越爽判断一棵树是否是满二叉树
判断一棵树是否是平衡二叉树
判断一棵树是否是搜索二叉树
模板定义一个返回信息
12345678910private static class info{ // 需要的信息可以有多个 private int height; // 树的高度 private int nodes; // 树的节点个数 info(int n, int h){ this.height = h; this.nodes = n; } }
递归套路(认真看)
1234567891011121314151617private static info process(TreeNode head ){ // 判断空树情况 if(head == null){ return new info(0,0); ...
git基本用法
git 的三种状态
已修改表示修改了文件,但还没保存到数据库中。
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已提交表示数据已经安全地保存在本地数据库中。
已修改已暂存已提交修改文件但未添加和提交操作
12345678910echo 123 >> a.txt // 写入数据// 查看给i他状态$ git statusOn branch masterChanges not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: a.txt //已修改no changes added to commit (use "git add" and/or "git commit -a ...
IDEA配置Maven和使用
为什么使用Maven这样的构建工具【why】
一个项目就是一个工程如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。借助于maven就可以将一个项目拆分成多个工程
项目中使用jar包,需要“复制”、“粘贴”项目的libs中
同样的jar包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作。借助于maven,可以将jar包保存在“仓库”中,不管在哪个项目只要使用引用即可就行。
jar包需要的时候每次都要自己准备好或到官网下载
借助于maven我们可以使用统一的规范方式下载jar包,规范
jar包版本不一致的风险
不同的项目在使用jar包的时候,有可能会导致各个项目的jar包版本不一致,导致未执行错误。借助于maven,所有的jar包都放在“仓库”中,所有的项目都使用仓库的一份jar包。
一个jar包依赖其他的jar包需要自己手动的加入到项目中
FileUpload组件->IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar
极大的浪费了我们导入包的 ...
博客写法合集
请先安装大佬的插件
前置:前置知识https://akilar.top/posts/615e2dec/
卡片式菜鸟解法大佬方案1hello1world
时间轴式更新记录
2022/08/09
version1
2022/08/06
version2
2022/02/14
version3
文本样式行内文字样式行内文本主题的note写法。插件的note写法。
带 下划线 的文本
带 着重号 的文本
带 波浪线 的文本
带 删除线 的文本
键盘样式的文本 command + D
密码样式的文本:这里没有验证码
彩色文字红色、黄色、绿色、青色、蓝色、灰色。
超大号文字pantherA Wonderful Theme for Hexo
默认 提示块标签
default 提示块标签
primary 提示块标签
success 提示块标签
info 提示块标签
warning 提示块标签
danger 提示块标签
default
info
success
error
warning
bolt
ban
home
sync
cogs
key
bell ...
汇编概述
汇编概述
8086cpu有14个寄存器:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW
8086所有的寄存器都是16位的,可以存储2个字节
AX BX CX DX通常用来存放一般性数据,称为通用寄存器不同的寻址方式(1) [idata]用一个常量来表示地址,可用于直接定位一个内存单元;(2) [bx]用一个变量来表示内存地址,可用于间接定位一个内存单元;(3) [bx+idata]用一个变量和常量表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元;(4) [bx+si]用两个变量表示地址;(5) [bx+si+idata]用两个变量和一个常量表示地址。可以看到,从[idata]一直到[bx+si+idata],我们可以用更加灵活的方式来定位一个内存单元的地址。这使我们可以从更加结构化的角度来看待所要处理的数据。下面我们通过个问题的系列来体会CPU提供多种寻址方式的用意,并学习一些相关的编程技巧。通用寄存器| 名称 | 中英文含义 | 作用 ||-|-|-|| AX | 累加器 | 使用频率最高,用于算术、逻辑运算以及与外设传送信息等 || ...
指令讲解
指令div指令div除法指令,需要注意一下几点
除数:有8位和16位两种,存放在reg或内存单元中
被除数:默认放在AX或DX和AX中,如果除数为8位被除数则为16位,默认在AX中存放,如果除数为16位被除数则为32位默认在DX和AX中存放DX存放高16位AX存放低16位
结果:如果除数为 8 位,则 AL存储除法操作的商,AH 存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。1234567div byte ptr ds:[1]al = (ax)/(ds*16+1)//地位存放商ah = (ax)%(ds*16+1)//高位存放余-----------------------------------------div word ptr es:[1]ax = (dx*10000H+ax)/(es*16+1)//ax存放商dx = (dx*10000H+ax)%(es*16+1)//dx存放余
例如100001/100
首先100001大于65535则需要32位寄存器
100小于255但是被除数为32位所以要16位寄存器1234mov dx,1mov ...
内中断
内中断的产生当CPU的内部有什么事情发生的时候,将产生需要马上处理的中断信息呢?对于8086CPU,当CPU内部有下面的情况发生的时候,将产生相应的中断信息。
除法错误,比如,执行div指令产生的除法溢出:
单步执行:
执行into指令:
执行int指令。中断处理程序CPU在收到中断信息后,应该转去执行该中断信息的处理程序。我们知道,若要8086CPU执行某处的程序,就要将CS:IP指向它的入口(即程序第一条指令的地址)。可见首要的问题是,CPU在收到中断信息后,如何根据中断信息确定其处理程序的入口。CPU的设计者必须在中断信息和其处理程序的入口地址之间建立某种联系,使得CPU根据中断信息可以找到要执行的处理程序。中断向量表
中断向量表,就是中断程序入口地址的列表
中断向量表在内存中存放,其中包含256个中断程序所对应的入口中断过程CPU收到中断信息后,要对中断信息进行处理,首先将引发中断过程。硬件在完成中断过程后,CS:P将指向中断处理程序的入口,CPU开始执行中断处理程序。有一个问题需要考虑,CPU在执行完中断处理程序后,应该返回原来的执行点继续执行下面的指令。所以在中断过程 ...
Nginx概述
nginx
反向代理
负载均衡
动静分离方向代理代理代理简单来说,就是如果我们想做什么,但又不想直接去做,那么这时候就找另外一个人帮我们去做。例子:中介公司就是给我们做代理服务的,我们委托中介公司帮我们找房子。正向代理这里我再举一个例子:大家都知道,现在国内是访问不了 Google的,那么怎么才能访问 Google呢?我们又想,美国人不是能访问 Google吗,如果我们电脑的对外公网 IP 地址能变成美国的 IP 地址,那不就可以访问 Google了。你很聪明,VPN 就是这样产生的。我们在访问 Google 时,先连上 VPN 服务器将我们的 IP 地址变成美国的 IP 地址,然后就可以顺利的访问了。
这里的 VPN 就是做正向代理的。正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。这里客户端是要进行一些正向代理的设置的。
反向代理反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服 ...
十大经典排序
交换排序冒泡排序经典排序,重点掌握123456789101112131415161718void BubbleSort(LineList R[], int n){ int flag = 1; for (int j = 0; j < n && flag == 1; j++) { flag = 0;//记录最后几个排序,if没交就直接退出 for (int i = 0; i < n - 1 - i; ++i) { if (R[i].key > R[i + 1].key) { LineList tem = R[i]; R[i] = R[i + 1]; R[i + 1] = tem; flag = 1; } } }}冒泡 ...
sql进阶知识
常见约束 六大约束:
NOT NULL:非空约束,保证字段不能为空
CHEAK:检查约束,限定字符(mysql不支持)
UNIQUE:唯一约束,保证字段唯一性,可以为空
DEFAULT:默认约束,字段的默认值
PRIMARY KEY : 主键约束,主键字段唯一且不为空
FOREIGN KEY:外键约束,保证字段的值必须来至主表的关联列的值
约束添加分类:
列级约束:
六大约束都可以写,但是外键没有效果
表级约束:
除了非空和默认都可以写
主键和约束的比较
主键:唯一性 最多一个 可以组合
唯一:唯一性 可以为空 可以多个 可以组合
列级约束
只需在创建字段时在后面添加约束即可12345678CREATE TABLE stuinfo( stuid int PR ...