- 博客(18)
- 收藏
- 关注
原创 快速排序(数组+链表)、归并排序(数组+链表)、堆排序(数组)的实现
快速排序数组实现#include<iostream>#include<vector>//第一个数当中轴void quickSort(int start, int end, std::vector<int> &arr) { if(start >= end) return ; int i = start, j = end; int base = arr[start]; while(i < j) {
2022-02-24 22:59:38 385
原创 MySQL总结
1. 事务的四大特性原子性: 要么都执行,要么都不执行隔离性: 所有操作全部执行完以前,其他会话看不到结果一致性: 保证数据的状态操作前和操作后保持一致持久性: 一个事务一旦提交,则数据将持久化到本地,除非其他事务对其进行修改2. 事务的实现原理以MySQL的InnoDB引擎为例:使用redo log(重做日志)保证事务的持久性,使用undo log(回滚日志)保证事务的原子性。使用锁机制、MVCC等手段保证事务的隔离性(默认的隔离级别是REPEATABLE-READ)。保证了事务的持久性、
2022-02-24 22:54:27 612
原创 操作系统总结
1、操作系统中的程序的内存结构一个程序本质上都是由BSS段、data段、text段三个组成的。可以看到一个可执行程序在存储(没有调入内存)时分为代码段、数据区和未初始化数据区三部分。BSS段(未初始化数据区):通常用来存放程序中未初始化的全局变量和静态变量的一块内存区域。BSS段属于静态分配,程序结束后静态变量资源由系统自动释放。数据段:存放程序中已初始化的全局变量的一块内存区域。数据段也属于静态内存分配代码段:存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域属
2022-02-19 20:55:16 493
原创 计算机网络总结
1. HTTP总结1.1. HTTP报文格式HTTP请求由请求行、请求头部、空行和请求体四个部分组成。请求行:包括请求方法,访问的资源URL,使用的HTTP版本。请求头:格式为“属性名:属性值”,服务器会根据请求头来获取客户端的信息,主要有cookie,host,connection,accept-language,accept-encoding,user-agent。请求体:用户的请求数据如用户名、密码等。请求报文示例:POST /xxx HTTP/1.1 请求行Accep
2022-02-19 20:49:39 1552
原创 C++总结
1、C++和C的区别设计思想上C++是面向对象的语言,而C是面向过程的结构化编程语言语法上C++具有封装、继承、多态三种特性C++相比C,增加了许多类型的安全功能,比如强制类型转换C++支持范式编程,比如模板类、函数模板等2、C/C++编译与执行的几个阶段参考资料1)预编译:根据文件中的预处理指令来修改源文件的内容2)编译:编译成汇编代码3)汇编:把汇编代码翻译成目标机器指令4)链接:链接目标代码生成可执行程序总结起来编译过程就上面的四个过程:预编译处理(.c) -
2022-02-15 17:27:30 1061
原创 通过Wireshark捕捉访问网页的全过程
通过Wireshark捕捉访问网页的全过程整个过程可以概括为以下几个部分:1)域名解析成IP地址2)与目的主机进行TCP连接(三次握手)3)发送与收取数据(浏览器与目的主机开始HTTP访问过程)4)与目的主机断开TCP连接(四次挥手)1. 打开Wireshark并开始捕捉2. 访问网页打开一个无痕浏览器,并访问网站www.4399.com访问完成后,停止抓包3. DNS解析域名过程DNS域名解析时用的是UDP协议。整个域名解析的过程如下:1)浏览器向本机DNS模块发
2022-02-15 17:17:17 22019
原创 C++智能指针
智能指针 C/C++ 语言最为人所诟病的特性之一就是存在内存泄露问题,因此后来的大多数语言都提供了内置内存分配与释放功能,有的甚至干脆对语言的使用者屏蔽了内存指针这一概念。这里不置贬褒,手动分配内存与手动释放内存有利也有弊,自动分配内存和自动释放内存亦如此,这是两种不同的设计哲学。有人认为,内存如此重要的东西怎么能放心交给用户去管理呢?而另外一些人则认为,内存如此重要的东西怎么能放心交给系统去管理呢?在 C/C++ 语言中,内存泄露的问题一直困扰着广大的开发者,因此各类库和工具的一直在努力
2022-01-18 20:51:38 734
原创 C++基础知识
C++基础知识1 函数的分文件编写创建.h后缀名的头文件创建.cpp后缀名的源文件在头文件中写函数的声明在源文件中写函数的定义newadd.h文件#include<iostream>void newadd(int a, int b);newadd.cpp文件#include<iostream>void newadd(int a, int b) { std::cout << a + b << std::endl;}test.
2022-01-18 14:14:36 762
原创 网络流24题(圆桌问题)
1.圆桌问题题目链接题目大意:m 个不同单位的代表参加一次国际会议。第 i 个单位派出了 r_i 个代表。会议的餐厅共有 n 张餐桌,第 i 张餐桌可容纳 c_i 个代表。同一个单位来的代表不在同一个餐桌就餐。思路:首先想怎么建图,因为同一个单位来的代表不在同一个餐桌就餐,所以就可以将每一个单位与每一张餐桌连一条边,容量为1。然后自己建立一个源点,所以把源点与每个单位连边,容量为单位的人数。再建立一个汇点,每张桌与汇点连边,容量为每张桌的容量。所以就类似于建成了这样一张图:然后从源点
2021-08-06 22:33:09 226
原创 最小费用最大流(模板题)
poj2125题目大意:给你一个无向图,有n个点,m条边,求从1 ~ n,然后再从n ~ 1 ,且每一条边只能走一次,求最短路径是多少。思路:因为每一条边只能走一次,所以可以将每一条边的流量设置为1,要么用流过该条边,要么都不流。将每一条边的权值置为该条边的费用,然后跑两遍spfa最短路求最小费用就好了。模板:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm&
2021-08-05 21:32:26 785
原创 Codeforces Round #720 (Div. 2)
Codeforces Round #720 (Div. 2)题目:题目大意:有长度为n的隐藏排列p,长度为n,由1到n的整数组成。要你通过最多3*n/2+30次查询得到这个排列。思路:可以使用以下询问:t=1 : max(min(x,pi),min(x+1,pj));t=2 : min(max(x,pi),max(x+1,pj));最多可以使用3*n/2+30次询问查找排列p,因此可以通过n/2次找到最大值n的位置,然后n次找到每个位置的值。首先通过t=1 : max(min(x,pi)
2021-05-09 14:25:06 94
原创 POJ1061青蛙的约会(拓展欧几里得)
poj青蛙的约会https://www.cnblogs.com/james1207/p/3318191.htmlhttps://www.cnblogs.com/comeon4mydream/archive/2011/07/18/2109060.html
2021-03-17 21:47:07 220
原创 dijkstra求次短路(易理解)
步骤1.找起点到每个点的最短路并用dis1数组记下来;2.找终点到每个点的最短路并用dis2数组记下来;3.访问每条边(如果为无向图需要遍历给的边数*2),用u表示这条边的起点,v表示这条边的终点,w表示权值,用k记下起点到u的最短路加上v到终点的最短路再加上w;4.比较k和dis1[ t ]的大小,如果k > dis1[ t ],就与ans比较,如果小于ans,则更新ans的值为k;5.次短路就为ans;代码:#include<iostream>#include<a
2020-10-11 11:35:49 638
原创 数据库基础语法学习
一.新建数据库1.图形界面手动创建右击数据库–新建数据库2.使用代码进行创建3.还有一种创建数据库语法,就是指定数据库文件参数和日志文件参数,语法如下:create database 数据库名 on [primary] ( <数据文件参数> [,…n] [<文件组参数>] ) [log on] ( <日志文件参数> [,…n] )二.新建表1.图形界面手动创建右击表–新建表2.使用代码进行创建3.表中插入数据方法:(1)插入一条数据(4种方法):
2020-10-02 11:34:36 1397
原创 区间dp入门
区间dp,顾名思义,在区间上dp,大多数题目的状态都是由区间(类似于dp[l][r]这种形式)构成的,就是我们可以把大区间转化成小区间来处理,然后对小区间处理后再回溯的求出大区间的值,主要的方法有两种,记忆化搜索和递推。在用递推来求解时,关键在于递推是for循环里面的顺序,以及dp的关键:状态转移方程。当然大部分的区间dp都是有特点的,我们可以考虑符合什么条件下,大区间可以转化成小区间,然后找出边界条件,进行dp求解。例题1:石子合并(可形成环)Problem Description在一个...
2020-07-10 12:49:39 133
原创 Dijkstra算法求最短路(邻接表+优先队列实现)
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。详细算法原理实现参考博客:数据结构–Dijkstra算法最清楚的讲解代码实现:#include <iostream>#include <algorithm>#include <queue>#include <cstdio>#include <cstring>.
2020-06-19 11:08:01 916
原创 离散数学编程实现真值表赋值
代码:#include<stdio.h>#include<math.h>#define LEN 666 //定义数组长度int arr[LEN]; //用来存放2^n次方个字符,n表示变量个数int brr[LEN][4+10]; //brr用来存放真值表int beg = 80; //字符P对应的ASCII码int sta1 = 0, sta2 = 0; //sta1表示真值为1的个数,sta2表示真值为0的个数int mai
2020-06-17 11:04:33 1856
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人