- 博客(68)
- 收藏
- 关注
原创 SpringIoc
Ioc 代码的依赖关系被Ioc集中管理起来,清晰明了 每个类只需要关心自己的业务逻辑 修改依赖关系很容易 通过一个Ioc容器感受一下什么是IoC package car; public interface Car { public void start(); public void turnLeft(); public void turnRight(); public void stop(); } package car; public class Audi imp
2022-05-01 21:09:06
384
原创 Java多线程总结
基础知识 多线程的实现方式 继承Thread类 实现Runnable接口 注意点 Thread 也是实现了 Runnable 接口的类 启动一个线程中要执行的代码都Runnable接口的run()方法中实现 线程安全问题 线程安全问题是由于多个线程共同操作同一个变量和实例而产生的 在非原子操作中,一个线程多变量的操作还没有完成,另一个线程对这个变量进行操作,就导致错误的发生 在没有同步的方法中,线程是异步执行的 常用Thread类API currentThread() , 返回当前正在执行的线
2022-04-25 20:03:41
556
原创 会话管理的方法
会话管理基本原理 会话管理的背景:HTTP协议是无状态的,服务器不会记得多次请求之间的关系,但是有些功能需要多次请求来完成 Cookie cookie是一种将会话信息保存在浏览器中, 进行管理 package servlet; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.Cookie; import jakarta.ser
2022-04-23 17:42:08
1198
原创 计算机总体概述
概述:计算机组成原理是一门关于计算机如何能够将各种硬件进行设计来解决进行计算的一门科学。 计算机组成原理是建立在硬件电路之上 计算机的发展 计算机系统 : 由硬件与软件组成 硬件的发展 电子管时代 晶体管时代 集成电路时代 早期冯诺依曼 提出了存储程序,事先将指令与数据输入进存储器,然后按照规定的顺序执行 包括输入设备,输出设备,运算器,控制器,存储设备 早期的冯诺依曼计算机是以运算器为核心 指令与数据有同等的地位位于存储器,用二进制来表示 指令由操作码和地址码组成 缺点:以运算器为中心的结构,
2021-11-08 19:02:32
224
原创 java大总结1
文章目录基本数据类型与基本运算整形浮点类型char 类型隐式数据类型转化强制数据类型转化结合赋值运算符字符串StringStringBuilder 构建字符串输入与输出读取输出数组数组申明数组的拷贝Date类 与 LocalDate类基于类的访问权限final实例字段静态字段静态常量静态方法静态工厂方法()方法参数对象构造初始化块包包名静态导入继承super多态final类与方法抽象类ObjectArrayList对象包装器与自动装箱参数数量的可变的方法枚举类接口概念属性注意点默认方法冲突回调与接口Comp
2021-10-30 20:17:51
973
原创 线性查找与二叉排序树
文章目录线性表上的查找分块查找树表的查找二叉排序树二叉排序的查找二叉排序的插入二叉排序的生成二叉排序的删除 线性表上的查找 顺序查找 . 折半查找 . 分块查找 分块查找 将表分成若干块 块间有序,块内无序(或者有序) 树表的查找 表结构在查找过程中动态生成 二叉排序树, 平衡二叉树 , B- 树, B+ 树,键树 二叉排序树 若左子树非空, 则左子树所有结点的值均小于根结点的值 若右子树非空,则右子树所有结点的值均大于根结点的值 左右子树本身又是一棵二叉排序树 二叉排序的查找 key
2021-10-29 20:41:50
252
原创 最短路径与拓扑排序
迪杰特斯拉算法 初始化:找出源点到周围顶点(通过一条弧到达)的直达路径 选择:从这些路径中,找出一条最短的路径 更新:对其余路径进行调整 如果存在(u,Vk),且 (V0 , U) + (U ,Vk) < (v0 , vk),则用更短的路径来代替 重复上述步骤 拓扑排序 在有向图中选一个没有前驱的顶点输出 在图中删除该顶点和以它为尾的弧 重复上述俩步,直到全部顶点均已输出或者当前图不存在无前驱的图为止 关键路径 求ve(i) , vl(j) 求 e(i) , l(i) 求l(i) -
2021-10-22 11:30:44
237
原创 最小生成树
生成树:所有顶点都有边连在一起,但不存在回路的图 特点: 生成树是图的极小连通图 一个n个顶点的连通图的生成树有n-1条边 生成树任意俩个顶点间的路径是唯一的 无向图的生成图: 深度优先生成树 广度优先生成树 最小生成树 定义:给定一个无向网络,在该网的生成树中,使得各边的权值之和最小的那棵树称为最小生成树 MST性质:具体可以使用反证法来证明 构造最小生成树 prim算法 设TE是最小生成树的边的集合 初始令 U = {u₁},TE = {} 在所有u属于U,v属于V-U中,找一个权值最下的边
2021-10-19 18:22:34
143
原创 图的定义与基本术语
图 定义:定点V与边长E的集合 基本术语 无向图:简单来说就是顶点与顶点之间的边是没有方向的 有向图:简单来说就是顶点与顶点之间的边是有方向的 稀疏图:边数很少的图称为稀疏图(e < nlogn) 稠密图:与稀疏图的定义相反 领接:有边或者弧相连俩个定点之间的关系 权和网:实际中每条边有实际的意义,这个数值称为边上的权,带权的图称为网 度:顶点的度是与顶点相关联的边的数目 完全图:任意俩个点都有一条边相连,有向完全图有n*(n-1)条边,无向完全图有*(n-1)*n/2 入度:是以定点v为终点的有向
2021-10-13 15:50:02
221
原创 哈夫曼树与哈夫曼编码
哈夫曼树与哈夫曼编码 基本概念 路径:树中一个结点到另一个结点之间分支构成的这俩个结点之间的路径 结点的路径长度:俩结点间路径上的分支数 树的路径长度:从树根到每一个结点的路径长度之和 权:将树中的结点赋值一个有着某种含义的值 结点的带权路径长度:根结点到该结点的路径长度乘该结点结点的权(路径长度*权) 树的带权路径长度:树中所有叶子结点的带权路径长度之和 哈夫曼树:带权路径长度最短的二叉树(最优二叉树) 哈夫曼树的构造算法(贪心思想) 根据给定的权值构成n棵二叉树的森林 F = {T1 , T2 ,
2021-10-05 19:10:52
200
原创 代码块执行顺序
class A{ static { System.out.println("父类静态代码块"); } public A(){ System.out.println("父类构造方法"); } { System.out.println("父类初始化块"); } } public class B extends A{ static{ System.out.println("子类静态代码块"); } public B(){ System.out.println("子类构造方法"
2021-10-05 09:30:22
116
原创 树与森林及其与二叉树的转换
文章目录树与森林树的存储结构双亲表示法孩子链表表示法孩子兄弟表示法(二叉链表表示法)树与二叉树的转化树转化为二叉树二叉树转化为树森林转化为二叉树二叉树转化为森林二叉树转化为森林 树与森林 森林:m棵互不相交的树的集合 树的存储结构 双亲表示法 数据域:存放结点本身的信息 双亲域:指示本结点双亲在数组中的位置 结点结构的表示 typedef struct node{ int data; int parent; }Node; 树的结构 typedef struct { Node nod
2021-10-04 19:57:03
176
原创 二叉树存储与基本算法
文章目录树与二叉树树的定义树的基本术语二叉树的定义二叉树的性质满二叉树:深度为k且有2^ - 1 个结点的二叉树特点完全二叉树特点:性质顺序存储链式存储二叉链表的结点形式三叉链表遍历二叉树递归前序遍历非递归前序遍历递归实现中序遍历非递归实现中序遍历递归实现后序遍历非递归后序遍历二叉树二叉树的层次遍历建立二叉树前序递归建立二叉树的复制树的深度的计算树的结点数的计算计算叶子结点数 树与二叉树 树的定义 树是n个结点的有限集合 若n等于0,称为空树 若n>0,满足一下条件 有且仅有一个根(root) 其
2021-09-18 21:20:40
485
原创 朴素匹配与KMP
串的匹配方式 串的朴素匹配方式 #include<stdio.h> #include<string.h> int index (char * s , char * t ) { int i ,j ; for (i = 0 ; i < strlen(s) ; i ++) { if (s[i] == t[0]){ for (j = 0 ; j < strlen(t); j ++ , i ++)
2021-07-21 16:27:42
194
原创 机器学习的基本概念
机器学习的基本概念 基本术语 特征:反映事件或者对象在某方面的表现或者特征的事项。也称属性 属性值:在某个属性上的取值 属性空间:属性张成的空间,称为属性空间,样本空间或者输入空间。 特征向量:空间中每个点,对应的一个坐标向量 维数:每一个示例的属性的个数 学习:根据数据学习到模型的过程,也称为训练 训练数据:训练过程中使用的数据 训练样本:训练数据中每个样本称为一个训练样本 训练集:所有训练样本的集合称为训练集 假设:学习数据中某种潜在的规律。 真实:数据中潜在规律本身,称为真实。学习过程就是假设逼近真
2021-07-17 19:40:06
498
原创 队列基本内容
队列 循环队列 队列的通用长度为**(tail - front + queue_size) % queue_size(数组的长度)** 循环队列是为了解决假溢出的问题 为了方便表示规定front == tail时为空队列 (q->tail + 1)% max == q->front 判断队列是否已经满了 顺序储存 #include<stdio.h> #define max 200 typedef struct { int data[max]; int fron
2021-07-11 18:02:38
200
原创 中缀表达式转后缀表达式
中缀表达式转后缀表达式 四则表达式 四则表达式的计算,我们通常所见的表达式形式为中缀表达式。这是易于我们人类所理解的。机器更适合与理解后缀表达式。 中缀表达式**“9+(3 - 1)* 3 + 10 / 2 ”,转化为后缀表达式就是9 3 1 - 3 * + 10 2 / +** 中缀表达式是将以运算符为中心的计算的树形结构,用栈的来实现 ###中缀表达式转化为后缀表达式的方法 若是数字将其压入到数字栈中 若是**‘(’**,压入运算符栈中 若是**‘)’,计算‘(’**表达式的值
2021-07-09 16:49:01
168
原创 栈的顺序储存和链式储存
栈 ##顺序栈的定义 栈是一种先进后出的结构,属于一种线性结构 栈顶指针用于控制数据的压入与弹出 当栈为空时top == -1 #define max 20 typedef struct { int data[20]; int top; }stack; ##顺序栈的压入与弹出 int push(stack *p , int data) { if (p ->top == max - 1) return 0; p ->top ++; p ->d
2021-07-08 11:36:56
150
原创 numpy
#numpy 1 数组的属性 1 a.ndim 返回矩阵的行数 2 a.shape 返回矩阵的形状 3 a.size 返回矩阵的总的元素个数 4 a.dtype 返回元素的数据类型 其它的属性上菜鸟教程看吧,更加详细 2 创建数组 没有已知数据创建矩阵 1 a.empty([],dtype = int , order =) 三个参数分别是形状 , 类型 ,计算机中的存储顺序 2 a.zeros([] , dtype , order) 与empty一样但是创建出的是全0 的矩阵 3
2021-06-05 20:55:28
286
原创 单链表的基本操作
#动态单链表的基本操作 #include<stdio.h> #include<stdlib.h> struct node { int data; struct node *next; }; typedef struct node *linklist; //头插法生成链表 void createlist (linklist *head , int n) { linklist p , s; int i; //srand(time(0));
2021-06-03 19:43:08
124
原创 动态链表!!!
#动态链表 #include<stdio.h> #include<stdlib.h> struct node { int data; struct node * next; }; typedef struct node Node; void add (Node **head , int data)//增加结点 { Node *p = *head; Node * newnode = (Node *)malloc(sizeof(Node));
2021-05-29 10:06:21
117
原创 2017HBCPC
#2017HBCPC L 奇异王国里有很多奇怪的事物.比如奇怪的人(每个人都拥有一个智慧值),奇怪的商店… 这不,奇异糖果屋今天开业了,老板在门口拉上了“糖果送送送”的横幅来吸引顾客. 糖果的具体赠送方案为对于一个智慧值为x的人来说,他所能获得的糖果数量f(x)满足如下条件: f(0) = 0, f(2x) = f(x), f(2x+1) = f(2x) + 1, 整天搞怪的小A带着朋友们闻讯而来,他想出了一个游戏,游戏的规则是这样的:每个人根据自己的智慧值拿到糖果后互相比较开心值,开心值最大的人即为胜者
2021-05-28 07:52:47
333
1
原创 搜索与图论
#搜索与图论 首先花费了好长时间才弄明白,邻接表的储存原理。这个笔记上有。 第二就树的重心这个题,也是花费将近一个小时才弄明白。 还有就是链表的范围至少是数据范围的俩倍,否则就会越界。产生错误答案,这题就遇到了。 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int h[N] , e[N] , ne[N] ,idx ,ans = N ,n; bool st[N];//用于记录状态 void a
2021-05-09 20:05:39
139
原创 总结
##总结 以前一直觉得自己做不出题,是因为算法不够过关,但是当自己去做题的时候发现语法知识,和基本的调试能力都不过关。 所以说接下来的目标 1 巩固已经学习的算法 2 练好基本功 3 跟着小组中机器学习的进度 4 计算机网络好好听课 ...
2021-04-24 18:44:33
157
原创 试除法求约数
##试除法求约数 #include<bits/stdc++.h> using namespace std; vector<int> get_divisor(int x) { vector<int>ans; for (int i = 1 ; i <= x / i ; i ++) { if (x % i == 0) { ans.push_back(i); if (i
2021-04-21 15:57:17
160
原创 试除法判断质数
##试除法判断质数 #include<bits/stdc++.h> using namespace std; int a[110]; bool prime(int x)//一个数的因子,必然是一个大于x^0.5 和一个小于x^0.5,所以说我只需要判断小于的那部分 { if (x < 2) return false; for (int i = 2 ; i <= x / i ; i ++) //这里用 i <= x / i 而不是 i*i <= x 是因为i
2021-04-20 16:42:26
212
原创 筛法
##筛法 //埃筛 #include<bits/stdc++.h> using namespace std; const int N = 1e6; int cnt; bool st[N]; int prime(int n) { for (int i = 2 ; i <= n ; i ++) { if (!st[i]) { cnt ++; for (int j = i + i ; j <
2021-04-20 16:41:47
120
原创 哈希表
##哈希表 哈希表的拉链储存 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 3; int h[N] , idx , e[N] , ne[N];//h[N]用于储存每一个的头结点 //idx 是一个下标的索引 void insert_(int x) { int k = (x % N + N) % N; e[idx] = x; ne[idx] = h[k]; h[k] = idx ++
2021-04-18 19:48:28
142
原创 单调队列
##单调队列 给定一个大小为 n≤106 的数组。 有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: 该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。 窗口位置 最小值 最大值 [1 3 -1] -3 5 3 6 7 -1 3 1 [3 -1 -3] 5 3 6 7 -3 3 1 3 [-1 -3 5] 3 6 7 -3 5 1 3 -1 [-3 5 3] 6 7 -3 5 1 3 -1
2021-04-17 19:04:25
116
原创 tire树储存数字并且求最大异或值
###tire树储存数字并且求最大异或值 在给定的 N 个整数 A1,A2……AN 中选出两个进行 xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数 N。 第二行输入 N 个整数 A1~AN。 输出格式 输出一个整数表示答案。 数据范围 1≤N≤105, 0≤Ai<231 首先我们来进行这道题目的分析,首先呢,来分析一下数据范围。每个数字转化为2进制占31位,那么一个数字占31位,那么最坏的情况就是每个数字都占31位,当然这种情况不可能达到,所以说我们开的数据范围为3
2021-04-15 15:26:12
207
原创 堆的初始化,以及排序
##堆的初始化,以及排序 //无映射关系的堆 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int a[N]; int cnt ; void down(int x) { int t = x; if ((2*x) <= cnt && a[2*x] < a[t]) t = 2 * x; if ((2 * x + 1) <= cnt &&
2021-04-13 22:45:11
276
原创 Tire树
##Tire树 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; char str[N]; int a[N][26] ,cnt[N] ,idx;//cnt[N]是一个字符串结尾标记有几个字符串,idx是标记下一个字符应该去哪儿找。a[N][26]用于储存字符串树 void insert1(char str[]) { int p = 0; for (int i = 0 ; str[i] ; i
2021-04-13 22:44:36
122
原创 离散化
###离散化 首先呢,何谓离散化,在一个无限长的数轴上,有一些不连续的点,开这么大连续空间的数组,太浪费资源,因此需要将这些离散的数据映射到一个连续的数组中。就是所谓的离散化。 1 离散化的第一步把不连续的元素的位置储存到一个新的容器中,如vectoralls ,并且把位置和值储存到vector add ,(PII 是pair 类型) 中 。 2 把 alls中重复中重复位置去掉,去掉重复的位置可以使用c++的stl库函数 sort(alls.begin(),alls.end());//先进行排序 al
2021-04-10 18:55:03
195
原创 对一个容器中的元素进行去重
##对一个容器中的元素进行去重 #include<bits/stdc++.h> using namespace std; int main() { int a[n] sort(a, a+n); //首先对a数组进行排序 int j = 0; for (int i = 0 ; i < n ; i ++) { if (!i || a[i] != a[j-1]) a[j ++] = a[i];//此时就达到了除去重复元素的效果。 } } ...
2021-04-10 16:26:46
212
原创 位运算
###位运算 首先介绍一种位运算的操作 lowbit () , llowbit 的作用返回 数字2进制中 最后一个1和1后面的0. 实现的原理 int lowbit(int x) { return x & (-x) } 这里呢 , 在计算机 负数是以反码的形式储存的。忘了就去复习一下。 以10 为例 二进制位1010 , 那么-10 的二进制就位 0110 进行与运算 得到的就是 二进制的10, 给定一个长度为 nn 的数列,请你求出数列中每个数的二进制表示中 11 的个数。 输入格
2021-04-10 10:29:03
118
原创 双指针算法
#双指针算法 首先给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 输入格式 第一行包含整数 n。 第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。 输出格式 共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。 首先呢我们通过这个题来分析一下双指针算法 , 首先看到这个题,我最开始应该想到的是最简单的朴素做法。 for (int i = 0 ; i < n ; i ++) { for (int j = 0 ; j <= i
2021-04-10 08:31:16
121
原创 差分数组
###差分数组 差分数组其实是前缀和数组的逆运算 一维差分 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int a[N] , b[N];//a[N]是b[N]的前缀和 ,b[N]是a[N]的差分数组 //差分数组,可以用于在他的前缀和组中增加一个数c //比如在[l , r]数组中增加 c 那么只需在 吧b[l] += c 而 b[r+1] -= c就可以 int main() { int n
2021-04-08 19:09:16
138
原创 前缀和
###前缀和 前缀和数组的目的是为了查询某些区间时进行O(1)的时间,不是重新遍历。 一维前缀和 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int a[N] , s[N]; int main() { int n,m; cin>>n>>m; for (int i = 1 ; i <= n ; i ++) cin>>a[i]; fo
2021-04-08 17:06:01
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅