自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 资源 (1)
  • 收藏
  • 关注

原创 剑指offer II 024. 反转链表

传送门题意解析:注意此题中链表头结点含有数据,我们可以先把头结点取下来,然后遍历链表使得每一个元素都插在头结点前面,实现就地扭转链表。时间复杂度是O(n)空间复杂度O(1);/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode

2021-11-07 22:14:07 130

原创 基于UDP协议模拟停止等待协议

停止-等待协议:(stop-and-wait)是最简单但也是最基础的数据链路层协议。所谓停止等待就是发送方发送一个数据帧便停止发送,等待接收方发送一个确认帧后继续发送下一个帧以此来实现无差错传输。停止等待协议用于通信系统中,两个相连的设备相互发送信息时使用,以确保信息不因丢包或包乱序而丢失,是最简单的自动重传请求方法。当发送方发送一个数据帧的同时会立即启动一个计时器,当在计时器到期还没有收到接收方的确认帧,就默认该帧丢失在链路中了,则重新发送。如果接收方收到重复的帧,则丢弃该帧,并重复回复该帧的确认帧

2020-12-20 20:45:38 1314

原创 王道408——数据结构-栈-逆波兰式(后缀表达式)求值

日常生活中我们常常可以见到各种各样的表达式例如这样:1+2*(3+5)-4=?这样:3*5*(2*(1+3))-4=?如果我们需要使用程序来解决这样的问题那么我们首先需要考虑的是如何区分各种符号的优先级?如何使括号内的数优先计算?为了解决这个问题波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。HOW(如何将中缀表达式转换成后缀表达式)?实现这一操作就用到了栈这种数据结构,

2020-12-20 20:31:46 645

原创 C++ 基于模板类实现的自定义数组

#pragma once#include <iostream>using namespace std;template<class T>class Vector{public: Vector(int capacity) { this->m_Capacity = capacity; this->m_Vector = new T[thi...

2020-12-11 17:37:27 204

原创 高并发——epoll 反应堆模型

================================下面代码实现的思想:epoll反应堆模型:( libevent 网络编程开源库 核心思想)1.  普通多路IO转接服务器: 红黑树 ―― 添加待监听的结点 ―― epoll_ctl ―― EPOLLIN ―― fd ―― 监听 ―― epoll_wait ――返回满足监听事件的fd的总个数 ―― 传出参数 events数组 ――...

2020-12-11 17:37:02 268

原创 Linux UDP实现广播

有些时候今日事今日毕未必是好事,今天解决不了的bug留到明天或许就解决了特点:较TCP来讲UDP无需建立连接可以直接发送消息,UDP是对网络环境完全不弥补的协议,所以使用DUP就要允许有一定的丢包率,UDP广播是面向局域网内所有的设备的。对比TCP连接时服务端的IP地址的重要性来讲,UDP广播中本机的IP显得并不重要了。广播地址:我们知道在IPV4地址中是采用点分十进制的方法来表示IP地...

2020-12-11 17:36:48 2438 1

原创 你见过最长的hello word 有多长?

assume cs:codesg, ds:datasg, es:tablesgdatasg segment db 'hello word!' ;db 'welcome to masm!'datasg endstablesg segment dw 4000 dup(0)tablesg endscodesg segmentstart: mov ax, datasg mov ds, ax ;将数据段地址赋值给ds寄存器 mov ax, 0B800H ;0B800H是显存地址

2020-12-11 17:36:26 240

原创 汇编实现模块化编程实现乘方计算——纪念第一个不需调试的汇编程序

assume cs:codesg, ds:datasgdatasg segment dw 1, 2, 3, 4, 5, 6, 7, 8 dw 8 dup(0)datasg endscodesg segmententry: mov ax, datasg mov ds, ax mov si, 0 mov cx, 8s0: mov bx, ds:[si] call pow mov ds:[si + 16], ax mov ds:[si + 16 + 2], dx add si,

2020-05-13 20:12:23 300 1

原创 超简单的Notepad++安装visimulator插件教程

本篇博客仅以记录一个vim党的高兴心情这段时间一直在学assembly,vim对于assembly的语法高亮十分不友好,被迫下只能使用notepad++但是notepad的操作有点让vim党十分不适,notepad++的官方插件下载不能下载visimulator,笔者在这里准备了离线安装包(提取码:bady)下载离线安装包后解压安装包打开Notepad++选择设置==》导入 ==》导入插件 然后选择解压好的插件重新启动就ok了不需要更改任何配置文件...

2020-05-10 14:37:53 2688 5

原创 关于win10下的汇编语言的环境搭建

本文主要对于学习王爽老师的汇编语言而不能搭建环境的同学指点迷津【狗头滑稽】王爽老师的汇编语言教学环境是Windows2000的环境,对于我们0202年的同学来讲实在是不友好,因为M$在win10中已经移除了dos所以我们需要自己搭建======================== 分割线 ==========================在开始之前先行下载两个文件包DOSBOX提取码:2...

2020-05-02 16:34:19 316

原创 洛谷 P3373 线段树2——致卑微的我

谨以此片博客记录一上午的debug#include <iostream>#include <algorithm>#include <cstdio>#define lson l, m, rt << 1#define rson m + 1, r, rt << 1 | 1using namespace std;const...

2020-04-17 13:08:53 128 1

原创 ZOJ 3261 Connections in Galaxy War 离线并查集 逆向处理

题目大意给你n个数,接下来给你m个数的关系,有q个操作,分别是删除关系和询问当前集合的最大值这道题目和显然普通的并查集是无法解决的,我们采用离线操作#include <iostream>#include <algorithm>#include <cstdio>#include <vector>#include <map>...

2020-04-13 23:09:19 118 2

原创 CodeForces 1325D. Ehab the Xorcist

题目大意给你连个数u v你需要找出一个数组a使得a1a2a3^ … ^an =u 并且 a1 + a2 + … + an = v我们知道^运算不会改变操作数的奇偶性,并且如果a&b == 0则a^b =a+b反之是a 和b mod2的和,#include <iostream>#include <cstdio>using namespace std;...

2020-04-13 16:49:51 110 1

原创 CodeForces 1150C Prefix Sum Primes

解题思路题目说给你一个个只有1和2的序列让你重新排列顺序,使前缀和具有更多的素数,每一个素数都是奇数,所以我们的排列过后应该不能放过任何一个奇数的组合可能,#include <iostream>using namespace std;const int MAXN = 1e5 + 5;int num;int main(){ int n; cin >&g...

2020-04-02 20:53:50 125 1

原创 CodeForces 1282B2(hard version) K for the Price of One

解题思路一道假的dp,dp[i]表示前i个产品花费最小#include <iostream>#include <algorithm>#include <string>using namespace std;const int MAXN = 1e5 + 5;int price[MAXN], dp[MAXN];int main(){ in...

2020-03-31 22:05:28 148

原创 LeeCode 1162 地图分析(每日打卡)

BFS解法class Solution {public: int n, m; int MAXN = 1005; int vis[105][105]; int dx[5] = {-1, 0, 1, 0}; int dy[5] = {0, 1, 0, -1}; struct Node { int x, y, step; ...

2020-03-29 22:23:53 137

原创 CodeForeces1313C Skyscrapers

解题思路题意是指找出一个数作为整个序列的最大值以这个数为中点向左向右递减,找出这样一个数使整个序列的和最大,暴力即可#include <iostream>#include <algorithm>#include <string>#include <vector>using namespace std;const int MAXN...

2020-03-28 00:51:44 99

原创 CodeForces 1269C Long Beautiful Integer

解题思路注意特判第k位为9的情况#include <iostream>#include <string>#include <algorithm>using namespace std;const int MAXN = 1e5 + 5;//char str[MAXN], s1[MAXN];int main(){ string str...

2020-03-27 00:07:10 115

原创 CodeForces 1300C Anu Has a Function

解题思路只有在某一位上有唯一的1才会对答案做出贡献,我们把所有的数字转化成二进制,然后遍历每一位上的1,剩下的直接随意输出就ok#include <iostream>#include <algorithm>#include <cstdio>using namespace std;const int MAXN = 1e5 + 5;int a[...

2020-03-25 23:51:28 110 1

原创 CodeForces 1285C Fadi and LCM

解题思路先说这是我见过最水的C题了,分解因数找互质的一对因数的最大值中的最小值注意一下数据范围就可以了#include <iostream>#include <stdlib.h>#include <algorithm>#include <math.h>#include <cstdio>using namespace s...

2020-03-24 23:46:15 111

原创 Codeforces 1291C Mind Control

解题思路题意给你那个数,共有n个人,你在第m个位置,n个数存在双端队列中,每人每次可以选择队首或队尾的元素作为自己的得分,你可以决定k个人的选择,问你最坏的情况最多可以的分多少,那么我们考虑一下可以被我们决定的K个人中只有两种情况要么在前面要门在后面,所以我们可以枚举每一种情况来解决问题#include <iostream>#include <string>#in...

2020-03-24 00:34:46 123

原创 Codeforces 1255C League of Leesins

解题思路在整个元组中只出现一次的数字一定是第一位或者是最后一位,第二位或者是倒数第二位一定出现两次,但是序列可以倒序,所以我们任取一个只出现一次的数字作为第一个出现的数字,然后依次向后推#include <iostream>#include <cstdio>#include <algorithm>#include <string>#in...

2020-03-22 20:48:04 109

原创 Codeforces 1301C. Ayoub's function

那么我们先说一下题意:给你一个二进制字符串长度为n包含m个1,问含1的子串最多有多少个,很显然 难 ? 直接求包含1的子串 : 总字符串减去包含0的子串那么最佳的贪心策略是把(n - m)个0平均分到(m + 1)个区间中,但是肯定是不能完全平均分的也就很有可能会存在(n - m)% (m + 1)个区间有(n - m)/ (m + 1) + 1个0;总而言之是一道水题#include...

2020-03-20 23:35:22 133

原创 C++ 友元函数

作用:是非成员函数可以访问私有成员、关键字:friend三种调用方式:· 全局函数做友元· 类访做友元· 成员函数做友元类就像是一个家庭,在家里有招待朋友的客厅,也有装载着隐私的卧室,对于卧室你是不希望外人可以进入的,但是凡事无绝对嘛!比如你的好基友就可以进入。这便是友元,假设说你的好基友是一个单身青年,没有自己的家庭我们让基友访问我们的卧室我们可以这样做:· 全局函数做友元cla...

2020-03-20 13:04:06 93

原创 c++ 常函数与常对象

常函数:**·**在成员函数后加const修饰为常函数**·**常函数不能修改成员变量**·**如果一定要修改成员变量要在成员变量前加mutable常对象**·**在对象生命前加const为常对象**·**常对象只能访问常函数和mutable修饰的成员变量class Person{public: void showPersonA() const { // 加const修饰则变为...

2020-03-20 11:18:33 126

原创 C++空指针调用函数

在C++中是允许空指针调用函数的,但是在我们使用空指针调用成员函数的时候,一定要注意有没有用到this指针如果用到了this指针要加以判断以保证程序的健壮性。例如以下程序class Person{public: void Print() { cout << "I'm LiHua." << endl; } void getfd() { cout <...

2020-03-20 10:44:02 1114

原创 C++this指针

this指针主要有两个作用:1) 防止类内变量重名2)非静态函数返回本身时可以return *this举例:防止类内变量重名class Person{public: void setAge(int Age){ Age = Age; }private: int Age;}例如上边的程序运行显然会出错那么怎么办呢?我们可以改成如下写法class Person{pu...

2020-03-19 19:26:31 81

原创 C++深拷贝和浅拷贝问题

深拷贝浅拷贝是一个常见的问题也是一个坑浅拷贝: 简单的赋值操作(编译器写的就是浅拷贝)深拷贝:在堆区重新申请空间进行拷贝操作说到深拷贝可能有些抽象,不过没关系我们举例说明我们创建一个人类有身高,年龄两种属性,#include <iostream>#include <string.h>using namespace std;class Person{p...

2020-03-19 16:41:48 80

原创 C++ 引用

语法数据类型 &变量名 = 被引用对象作用实际上相当于给变量起了一个别名,我们通过别名可以操作原来的变量例如#include <iostream>using namespace std;void swap(int &a, int &b){ int tmp = a; a = b; b = tmp;}int main(){ int...

2020-03-18 20:05:17 134

原创 C++new运算符的应用

#include <iostream>using namespace std;/* *new 运算符的用法 */int main(){ /* * new 在堆区开辟数据 * new int(10) new 数据类型(数值) */ int *p = new int(10); cout << *p << endl; /* *...

2020-03-18 19:31:39 157

原创 C++程序的内存模型

C++的程序总共分成四个区域:· 代码区· 全局区· 栈区· 堆区不同的区域存放不同的数据,赋予不同的生命周期,可以使程序更加灵活----------------------程序执行前存在的区域-------------------------代码区:用于存放二进制代码,由操作系统控制,代码区具有只读、共享的特性全局区:用于存放全局变量,静态变量,常量--------------...

2020-03-18 19:18:03 88

原创 Centos7 yum源配置

2.配置本地yum源1)挂载Linux镜像到/mnt目录下(Linux镜像文件中包含yum源)mount -o [rw:读写方式挂载][ro:只读模式挂载][loop:挂载一个文件] 需要挂载文件的目录 要挂载到的目录2)进入到/etc/yum.repos.d 目录 创建配置文件,文件必须以.repo结尾[name] #yum仓库的名字name=**** #描述yum仓库的信息bas...

2020-03-15 18:06:09 127

原创 vim personal config

hi Normal ctermbg=DarkGrey ctermfg=White guifg=White guibg=grey20" Groups used in the ‘highlight’ and ‘guicursor’ options default value.hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=...

2020-03-03 14:20:41 164

原创 Linux 线程同步、互斥锁、生产者消费者模型详解

线程同步:协同步调,对公共区域数据按序访问。防止数据混乱,产生与时间有关的错误。锁的使用:建议锁!对公共数据进行保护。所有线程【应该】在访问公共数据前先拿锁再访问。但,锁本身不具备强制性。使用mutex(互斥量、互斥锁)一般步骤:pthread_mutex_t 类型。 1. pthread_mutex_t lock; 创建锁2 pthread_mutex_init; 初始...

2019-12-17 17:13:40 246

原创 Linux 守护进程详解

守护进程:daemon进程。通常运行与操作系统后台,脱离控制终端。一般不与用户直接交互。周期性的等待某个事件发生或周期性执行某一动作。不受用户登录注销影响。通常采用以d结尾的命名方式。守护进程创建步骤:1. fork子进程,让父进程终止。2. 子进程调用 setsid() 创建新会话3. 通常根据需要,改变工作目录位置 chdir(), 防止目录被卸载。4. 通常根据需要,...

2019-12-17 17:12:37 213

原创 Linux 信号详解

信号共性:简单、不能携带大量信息、满足条件才发送。信号的特质:信号是软件层面上的“中断”。一旦信号产生,无论程序执行到什么位置,必须立即停止运行,处理信号,处理结束,再继续执行后续指令。所有信号的产生及处理全部都是由【内核】完成的。信号相关的概念:产生信号: 1. 按键产生 2. 系统调用产生 3. 软件条件产生 4. 硬件异常产生 5. 命令产生概念:...

2019-12-17 17:12:07 200

原创 Linux 进程间通讯详解

pipe管道: 用于有血缘关系的进程间通信。 ps aux | grep ls | wc -l父子进程间通信:兄弟进程间通信:fifo管道:可以用于无血缘关系的进程间通信。命名管道: mkfifo 无血缘关系进程间通信: 读端,open fifo O_RDONLY 写端,open fifo O_WRONLY文件实现进程间通信:打开的文件是内核中的一块缓冲区。...

2019-12-17 17:11:31 95

原创 Linux 进程、管道详解

gdb调试:设置父进程调试路径:set follow-fork-mode parent (默认)设置子进程调试路径:set follow-fork-mode childexec函数族:使进程执行某一程序。成功无返回值,失败返回 -1int execlp(const char *file, const char *arg, ...); 借助 PATH 环境变量找寻待执行程序 参...

2019-12-17 17:10:51 219

原创 Linux 递归遍历目录 dup、fork、fcntl详解

./a.out ls.c /home/itcast/28_Linux ./abc/ /home/itcast/28_Linux/testdir/递归遍历目录:ls-R.c1. 判断命令行参数,获取用户要查询的目录名。 int argc, char *argv[1] argc == 1 --> ./2. 判断用户指定的是否是目录。 stat S_ISDIR(); -...

2019-12-17 17:09:54 198

原创 Linux文件OI 阻塞详解

open函数:int open(char *pathname, int flags) #include <unistd.h>参数: pathname: 欲打开的文件路径名 flags:文件打开方式: #include <fcntl.h> O_RDONLY|O_WRONLY|O_RDWR O_CREAT|O_APPEND|O_TRUNC|O_EXCL|O_N...

2019-12-17 17:08:51 449

线段树超经典

这是有ACM大牛总结的线段树经典专辑,非常值得我们看,

2019-03-26

空空如也

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

TA关注的人

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