2024学习节奏与进度
八月
8.02
[x] 分布式锁
[x] redisson
[x] 短网址项目有
8.03
[x] 记忆化搜索
[x] springCloud
8.04
记忆化搜索
线性dp
leetocde72编辑距离的状态转移理解
SpringCloud
Nacos原理与配置
OpenFign 使用
GateWay 网关原理
8.05
动态规划 01背包 完全背包 线性dp 记忆化搜索的方式处理
springCloud
8.06
区间dp问题 最长回文子序列
状态机dp 股票买卖问题
树形dp 二叉树的直径
布隆过滤器原理
登陆场景下使用redission 分布式锁
登陆场景下 token 验证
防止检查用户名缓存穿透,使用bloomfilter
分组管理 部分接口管理
8.07
项目接口测试
8.08
短网址原理/创建/如何支持高并发/ 为什么使用布隆过滤器/使用goto路由表映射
短网址跳转原理(区分状态码301 还是 302 )/分布式锁解决缓存击穿问题/双重判定锁/使用lock 还是trylock 使用场景 以及区别
缓存穿透处理思路
缓存预热问 ...
MySQL_tutorial
安装
下载
下载地址, 版本选择 ARM 64-bit DMG
配置密码
选择 :USE Legacy Password Encryption
root passwd 81604152
环境变量配置
123sudo vim ~/.zshrcexport PATH=$PATH:/usr/local/mysql/binsource ~/.zshrc
登陆
1mysql -u root -p
基础
基础操作
刚刚使用mysql时, 进行简单的实验代码
登陆mysql数据库
1mysql -u root -p
创建一个简单的数据库
1create database db01; # 如果需要删除的话 drop databasename;
选择当前自己创建的的数据库
1use databasename;
查询数据表
1show tables; #初始的状态下就是 empty set
创建数据库表
创建表一个简单的表
1234567CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, n ...
数据结构考研代码练习
第二章 线性表
c语言中的链表
回顾c中的链表是如何是现实的:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101#include <stdio.h>#include <stdlib.h>struct NODE{ int data; //数据域 struct NODE *next; //指向自身的指针 指针域;};typedef struct NODE node;node *head;void Init(){ head = (node *)malloc(sizeof(node)); node *cur = head, *s; //cur 表示当前位置的结点指向 s 表示每 ...
PAT甲级题目整理分类
PAT甲级题目所有题目整理汇总
字符串类型题目
1001 A+B Format
计算 a+b, a+b 并以标准格式输出总和----也就是说,从最低位开始每隔三位数加进一个逗号(千位分隔符),如果结果少于四位则不需添加。
解题代码
12345678910111213141516171819#include <cstdio>int a, b, sum, len, c[100];bool flag;int main(){ scanf("%d %d", &a, &b); sum = a + b; if (sum < 0) sum = -sum, flag = true; if (sum == 0) c[len++] = 0; while(sum > 0){ c[len ++] = sum % 10; sum /= 10; } if (flag) printf("-"); for (int i = len ...
Linux基础学习
linux基础命令行学习整理
C++中字符和数字之间的转换
C++中字符和数字之间的转换,遇到一些字符转换的一些整理
C++中字符和数字之间的转换
最近遇到看书和做题遇到的一些关于字符串和数字转化之间的问题,做一个整理。
sscanf 与 sprinf
具体可以参考《算法笔记》p53页
sscanf的使用
sscanf 是将字符数组的内容以对应数字形式(也可以是字符串的形式, 本篇主要讨论字符与数字的转化)传输到n中(从左到右),例如:
12345678910111213#include <cstdio>int main(){ int n; char c[100] = "8160"; sscanf(c, "%d", &n); printf("%d", n / 2); // 4080 /* char c[100] = "8160", t[20]; sscanf(c, "%s", t); printf("%s", t); // 8160 * ...
二叉树的遍历以及从转化
二叉树遍历, 给定中序遍历和后序遍历(或前序)求出任意一种其他遍历的方式。
题目:
给出后序遍历和中序遍历。 求出层序遍历
输入
12372 3 1 5 7 6 41 2 3 4 5 6 7
输出
14 1 6 3 5 7 2
思路以及图示:
根据给出后序遍历和中序遍历,构建一个二叉树
通过bfs输出层序遍历的结点
解题代码:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <iostream>#include <cstdio>#include <queue>#include <algorithm>using namespace std;const int N = 50;int n;struct node{ int data; node* lchild; node* rchild;};int pre[N], in[N], post[N] ...
银行家算法(C++)
银行家算法代码实现, 以及求出全部的安全序列。
银行家算法
概述银行家算法概述
银行家算法就是一种避免死锁的一种机制,能够让进程有效的合理的分配资源
代码实现
不说废话,代码实现方式 ,解析日后:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154#include <iostream>#include <cstdio ...
算法基础模板题
在将近期学的模板放到到这里,日后整理出文章
基础模板
给出基础算法的模板题,以及算法的模板。
快速排序
图示:
思路
快速排序中首先找到 分界点
通过分界点 x 实现划分区间 排序 让 x左边的值 小于x 游标的值大于x
递归此过程实现排序
注意:
选择的分节点是任意的。注意边界的问题如果是 使用的是 quick_sort(a, l, i - 1), quick_sort(a, i , r); 这个边界,那么使用的 temp 的位置就是( l + r + 1) / 2 注意上取整
如果使用的是quick_sort(a, l, j), quick_sort(a, j + 1 , r); 这个边界 确定使用的 边界指的位置就是(l + r ) / 2
当给定的序列有序时,如果每次选择区间左端点进行划分,每次会将区间[L, R]划分成[L, L]和[L + 1, R],那么相当于每次递归右半部分的区间长度只会减少1,所以就需要递归 n−1次了,时间复杂度会达到 n^2。但每次选择区间中点或者随机值时,划分的两个子区间长度会比较均匀,那么期望只会递归 logn层。
代 ...
离散化
离散化的实现
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283#include <iostream>#include <vector>#include <algorithm>using namespace std;typedef pair<int, int> PII;const int N = 300010;int n, m;int a[N], s[N];vector<int> alls;vector<PII> add, query;int find(int x){ int l = 0, r = alls.size() - 1; while (l < r) { int mid = l + r ...