自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 操作系统总结

操作系统

2023-02-08 18:47:57 281

原创 mysql总结

mysql面试题

2023-02-02 21:09:39 628

原创 SpringIoc

Ioc代码的依赖关系被Ioc集中管理起来,清晰明了每个类只需要关心自己的业务逻辑修改依赖关系很容易通过一个Ioc容器感受一下什么是IoCpackage 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 305

原创 Java多线程总结

基础知识多线程的实现方式继承Thread类实现Runnable接口注意点Thread 也是实现了 Runnable 接口的类启动一个线程中要执行的代码都Runnable接口的run()方法中实现线程安全问题线程安全问题是由于多个线程共同操作同一个变量和实例而产生的在非原子操作中,一个线程多变量的操作还没有完成,另一个线程对这个变量进行操作,就导致错误的发生在没有同步的方法中,线程是异步执行的常用Thread类APIcurrentThread() , 返回当前正在执行的线

2022-04-25 20:03:41 462

原创 会话管理的方法

会话管理基本原理会话管理的背景:HTTP协议是无状态的,服务器不会记得多次请求之间的关系,但是有些功能需要多次请求来完成Cookiecookie是一种将会话信息保存在浏览器中, 进行管理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 1082

原创 计算机总体概述

概述:计算机组成原理是一门关于计算机如何能够将各种硬件进行设计来解决进行计算的一门科学。计算机组成原理是建立在硬件电路之上计算机的发展计算机系统 : 由硬件与软件组成硬件的发展电子管时代晶体管时代集成电路时代早期冯诺依曼提出了存储程序,事先将指令与数据输入进存储器,然后按照规定的顺序执行包括输入设备,输出设备,运算器,控制器,存储设备早期的冯诺依曼计算机是以运算器为核心指令与数据有同等的地位位于存储器,用二进制来表示指令由操作码和地址码组成缺点:以运算器为中心的结构,

2021-11-08 19:02:32 128

原创 java大总结1

文章目录基本数据类型与基本运算整形浮点类型char 类型隐式数据类型转化强制数据类型转化结合赋值运算符字符串StringStringBuilder 构建字符串输入与输出读取输出数组数组申明数组的拷贝Date类 与 LocalDate类基于类的访问权限final实例字段静态字段静态常量静态方法静态工厂方法()方法参数对象构造初始化块包包名静态导入继承super多态final类与方法抽象类ObjectArrayList对象包装器与自动装箱参数数量的可变的方法枚举类接口概念属性注意点默认方法冲突回调与接口Comp

2021-10-30 20:17:51 820

原创 线性查找与二叉排序树

文章目录线性表上的查找分块查找树表的查找二叉排序树二叉排序的查找二叉排序的插入二叉排序的生成二叉排序的删除线性表上的查找顺序查找. 折半查找. 分块查找分块查找将表分成若干块块间有序,块内无序(或者有序)树表的查找表结构在查找过程中动态生成二叉排序树, 平衡二叉树 , B- 树, B+ 树,键树二叉排序树若左子树非空, 则左子树所有结点的值均小于根结点的值若右子树非空,则右子树所有结点的值均大于根结点的值左右子树本身又是一棵二叉排序树二叉排序的查找key

2021-10-29 20:41:50 147

原创 最短路径与拓扑排序

迪杰特斯拉算法初始化:找出源点到周围顶点(通过一条弧到达)的直达路径选择:从这些路径中,找出一条最短的路径更新:对其余路径进行调整如果存在(u,Vk),且 (V0 , U) + (U ,Vk) < (v0 , vk),则用更短的路径来代替重复上述步骤拓扑排序在有向图中选一个没有前驱的顶点输出在图中删除该顶点和以它为尾的弧重复上述俩步,直到全部顶点均已输出或者当前图不存在无前驱的图为止关键路径求ve(i) , vl(j)求 e(i) , l(i)求l(i) -

2021-10-22 11:30:44 139

原创 最小生成树

生成树:所有顶点都有边连在一起,但不存在回路的图特点:生成树是图的极小连通图一个n个顶点的连通图的生成树有n-1条边生成树任意俩个顶点间的路径是唯一的无向图的生成图:深度优先生成树广度优先生成树最小生成树定义:给定一个无向网络,在该网的生成树中,使得各边的权值之和最小的那棵树称为最小生成树MST性质:具体可以使用反证法来证明构造最小生成树prim算法设TE是最小生成树的边的集合初始令 U = {u₁},TE = {}在所有u属于U,v属于V-U中,找一个权值最下的边

2021-10-19 18:22:34 86

原创 图的定义与基本术语

图定义:定点V与边长E的集合基本术语无向图:简单来说就是顶点与顶点之间的边是没有方向的有向图:简单来说就是顶点与顶点之间的边是有方向的稀疏图:边数很少的图称为稀疏图(e < nlogn)稠密图:与稀疏图的定义相反领接:有边或者弧相连俩个定点之间的关系权和网:实际中每条边有实际的意义,这个数值称为边上的权,带权的图称为网度:顶点的度是与顶点相关联的边的数目完全图:任意俩个点都有一条边相连,有向完全图有n*(n-1)条边,无向完全图有*(n-1)*n/2入度:是以定点v为终点的有向

2021-10-13 15:50:02 128

原创 哈夫曼树与哈夫曼编码

哈夫曼树与哈夫曼编码基本概念路径:树中一个结点到另一个结点之间分支构成的这俩个结点之间的路径结点的路径长度:俩结点间路径上的分支数树的路径长度:从树根到每一个结点的路径长度之和权:将树中的结点赋值一个有着某种含义的值结点的带权路径长度:根结点到该结点的路径长度乘该结点结点的权(路径长度*权)树的带权路径长度:树中所有叶子结点的带权路径长度之和哈夫曼树:带权路径长度最短的二叉树(最优二叉树)哈夫曼树的构造算法(贪心思想)根据给定的权值构成n棵二叉树的森林 F = {T1 , T2 ,

2021-10-05 19:10:52 130

原创 代码块执行顺序

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 57

原创 树与森林及其与二叉树的转换

文章目录树与森林树的存储结构双亲表示法孩子链表表示法孩子兄弟表示法(二叉链表表示法)树与二叉树的转化树转化为二叉树二叉树转化为树森林转化为二叉树二叉树转化为森林二叉树转化为森林树与森林森林:m棵互不相交的树的集合树的存储结构双亲表示法数据域:存放结点本身的信息双亲域:指示本结点双亲在数组中的位置结点结构的表示typedef struct node{ int data; int parent;}Node;树的结构typedef struct { Node nod

2021-10-04 19:57:03 103

原创 二叉树存储与基本算法

文章目录树与二叉树树的定义树的基本术语二叉树的定义二叉树的性质满二叉树:深度为k且有2^ - 1 个结点的二叉树特点完全二叉树特点:性质顺序存储链式存储二叉链表的结点形式三叉链表遍历二叉树递归前序遍历非递归前序遍历递归实现中序遍历非递归实现中序遍历递归实现后序遍历非递归后序遍历二叉树二叉树的层次遍历建立二叉树前序递归建立二叉树的复制树的深度的计算树的结点数的计算计算叶子结点数树与二叉树树的定义树是n个结点的有限集合若n等于0,称为空树若n>0,满足一下条件有且仅有一个根(root)其

2021-09-18 21:20:40 289

原创 朴素匹配与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 115

原创 机器学习的基本概念

机器学习的基本概念基本术语特征:反映事件或者对象在某方面的表现或者特征的事项。也称属性属性值:在某个属性上的取值属性空间:属性张成的空间,称为属性空间,样本空间或者输入空间。特征向量:空间中每个点,对应的一个坐标向量维数:每一个示例的属性的个数学习:根据数据学习到模型的过程,也称为训练训练数据:训练过程中使用的数据训练样本:训练数据中每个样本称为一个训练样本训练集:所有训练样本的集合称为训练集假设:学习数据中某种潜在的规律。真实:数据中潜在规律本身,称为真实。学习过程就是假设逼近真

2021-07-17 19:40:06 399

原创 队列基本内容

队列循环队列队列的通用长度为**(tail - front + queue_size) % queue_size(数组的长度)**循环队列是为了解决假溢出的问题为了方便表示规定front == tail时为空队列(q->tail + 1)% max == q->front 判断队列是否已经满了顺序储存#include<stdio.h>#define max 200typedef struct { int data[max]; int fron

2021-07-11 18:02:38 132

原创 中缀表达式转后缀表达式

中缀表达式转后缀表达式四则表达式四则表达式的计算,我们通常所见的表达式形式为中缀表达式。这是易于我们人类所理解的。机器更适合与理解后缀表达式。中缀表达式**“9+(3 - 1)* 3 + 10 / 2 ”,转化为后缀表达式就是9 3 1 - 3 * + 10 2 / +**中缀表达式是将以运算符为中心的计算的树形结构,用栈的来实现###中缀表达式转化为后缀表达式的方法若是数字将其压入到数字栈中若是**‘(’**,压入运算符栈中若是**‘)’,计算‘(’**表达式的值

2021-07-09 16:49:01 104

原创 栈的顺序储存和链式储存

栈##顺序栈的定义栈是一种先进后出的结构,属于一种线性结构栈顶指针用于控制数据的压入与弹出当栈为空时top == -1#define max 20typedef 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 85

原创 numpy

#numpy1 数组的属性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 198

原创 单链表的基本操作

#动态单链表的基本操作#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 72

原创 动态链表!!!

#动态链表#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 61

原创 2017HBCPC

#2017HBCPCL奇异王国里有很多奇怪的事物.比如奇怪的人(每个人都拥有一个智慧值),奇怪的商店… 这不,奇异糖果屋今天开业了,老板在门口拉上了“糖果送送送”的横幅来吸引顾客. 糖果的具体赠送方案为对于一个智慧值为x的人来说,他所能获得的糖果数量f(x)满足如下条件:f(0) = 0,f(2x) = f(x),f(2x+1) = f(2x) + 1, 整天搞怪的小A带着朋友们闻讯而来,他想出了一个游戏,游戏的规则是这样的:每个人根据自己的智慧值拿到糖果后互相比较开心值,开心值最大的人即为胜者

2021-05-28 07:52:47 224 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 79

原创 总结

##总结以前一直觉得自己做不出题,是因为算法不够过关,但是当自己去做题的时候发现语法知识,和基本的调试能力都不过关。所以说接下来的目标1 巩固已经学习的算法2 练好基本功3 跟着小组中机器学习的进度4 计算机网络好好听课...

2021-04-24 18:44:33 101

原创 试除法求约数

##试除法求约数#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 82

原创 试除法判断质数

##试除法判断质数#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 124

原创 筛法

##筛法//埃筛#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 73

原创 哈希表

##哈希表哈希表的拉链储存#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 82

原创 单调队列

##单调队列给定一个大小为 n≤106 的数组。有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k 个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -1

2021-04-17 19:04:25 56

原创 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 129

原创 堆的初始化,以及排序

##堆的初始化,以及排序//无映射关系的堆#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 &&amp

2021-04-13 22:45:11 201

原创 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 76

原创 离散化

###离散化首先呢,何谓离散化,在一个无限长的数轴上,有一些不连续的点,开这么大连续空间的数组,太浪费资源,因此需要将这些离散的数据映射到一个连续的数组中。就是所谓的离散化。1 离散化的第一步把不连续的元素的位置储存到一个新的容器中,如vectoralls ,并且把位置和值储存到vector add ,(PII 是pair 类型) 中 。2 把 alls中重复中重复位置去掉,去掉重复的位置可以使用c++的stl库函数sort(alls.begin(),alls.end());//先进行排序al

2021-04-10 18:55:03 91

原创 对一个容器中的元素进行去重

##对一个容器中的元素进行去重#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 128

原创 位运算

###位运算首先介绍一种位运算的操作 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 57

原创 双指针算法

#双指针算法首先给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式 第一行包含整数 n。第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。首先呢我们通过这个题来分析一下双指针算法 , 首先看到这个题,我最开始应该想到的是最简单的朴素做法。for (int i = 0 ; i < n ; i ++){ for (int j = 0 ; j <= i

2021-04-10 08:31:16 73

原创 差分数组

###差分数组差分数组其实是前缀和数组的逆运算一维差分#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 76

原创 前缀和

###前缀和前缀和数组的目的是为了查询某些区间时进行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 58

空空如也

空空如也

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

TA关注的人

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