自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

做一只熊猫不好吗?

山登绝顶我为峰!

  • 博客(488)
  • 收藏
  • 关注

原创 GMP调度模型总结

Golang的一大特色就是Goroutine。Goroutine是Golang支持高并发的重要保障。Golang可以创建成千上万个Goroutine来处理任务,将这些Goroutine分配、负载、调度到处理器上采用的是G-M-P模型。Goroutine是golang实现的协程,是用户级线程。相比线程,其启动的代价很小,以很小栈空间启动(2Kb左右)能够动态地伸缩栈的大小,最大可以支持到Gb级别工作在用户态,切换成本很小。

2023-03-09 11:09:18 659 1

原创 Go垃圾回收原理

golang垃圾回收

2023-03-08 21:34:35 757

原创 GO 常用设计模式

常见设计模式总结 + Go实现

2022-09-11 11:41:21 3711 2

原创 Go踩坑记录分享

Go常见错误踩坑记录分享

2022-08-15 16:12:44 750 1

原创 单向认证与双向认证

单向认证与双向认证

2022-06-12 10:58:44 5025

原创 docker Ubuntu18.04 装中文命令手册教程

前言在安装中文命令手册的时候遇到的很多奇奇怪怪的问题,说出来都是泪啊😂,所以想写一个尽量详细的小总结出来,防止大家踩坑,与大家一起共勉。本机环境介绍1. 本机macos Monterey 版本12.2.12. docker + ubunt18.04(精简版)1. 更新apt-getapt-get update注意这里Ubuntu是默认自带apt-get工具的,如果其他Linux版本没有的话,自己搜一个教程看看怎么下载2. 安装sudo命令apt-get i..

2022-05-17 08:00:00 1253

原创 路由选择协议(二) OSPF协议

d d的#include

2022-04-27 17:59:26 1635

原创 路由选择协议(一) RIP协议

在介绍路由协议(RIP、OSPF、BGP)之前会向大家介绍补充一些基本的概念,以便能够更容易的理解本文。废话不多说我们开始!一、自治系统自治系统(Autonomous system)通俗的讲就是我们把全球互联网分成若干个区域,每个区域由一定数量的路由器组成且每个区内部使用相同的内部网管协议协议(RIP或OSPF)去通信,而在区域之间进行通信会使用外部外部网关协议(BGP)去通信。为什么要分自治域呢?不分可以吗?答案是不行的。分自治域主要有两个原因:因特网非常庞大,而我们的路由器的路由表存储.

2022-04-27 15:29:34 13324

原创 C++实现互斥锁与读写锁

互斥锁#include <bits/stdc++.h>using namespace std;// 锁标志位// true 表示以上锁,false表示未加锁bool lock_flag;// CPU硬件指令支持,此函数执行一气呵成bool TestAndSet(bool *lock_flag) { bool old = *lock_flag; *lock_flag = true; return old;}void use(){ whil

2022-04-22 17:42:37 358

原创 HTTP学习总结

简介HTTP(Hyper Text Transfer Protocol)超文本传输协议为万维网(www)客户端(浏览器)与服务端提供数据通信的协议。HTTP由请求和响应两部分构成,是一个标准的客户服务器通信模型。HTTP是应用层协议,通过TCP/IP协议族来传输数据(HTML文件、图片文件、查询数据等)工作过程主要特性HTTP是灵活可扩展的,只规定了报文的基本格式,比如用空格分隔单词,用换行分隔字段,header+body 等,方便扩充功能。HTTP是可靠传输协议,.

2022-03-15 21:12:06 2098 2

原创 昨天临时题解

J1001 gcd题解KaTeX parse error: Expected 'EOF', got '&' at position 253: …d(k, t) = 1] &̲ \text{if }t = …$\phi(n) = n * \prod(1 - \frac{1}{p_i}) = n * \prod{\frac{p_i - 1}{p_i}} & [\text{if }n = \prod{p_i^{a_i}}, p_i\text{为质因子}] \$​​时间复杂度:O

2022-02-27 12:39:12 890

原创 Linux 常用命令总结

Linux 基本指令格式指令名称(空格隔开)指令选项(空格隔开)操作对象一、基础指令man 指令含义:manual手册(包含了Linux中全部命令手册), 查询某个指令的用法man 指令例:man cp ——查询 cp 指令的使用方法ls 指令含义:列出指定目录的文件夹及文件用法1. ls ——列出当点工作区的文件、文件夹2. ls 路径 ——列出指定“路径”的文件夹及文件3. ls 选项 路径 ——按“选项”要求列出“路径”中的文件夹及文件 选项解释: -l ——以详细的方

2021-12-28 18:54:57 917 1

原创 AcWing 1321. 取石子(博弈dp)

代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f.

2021-11-25 10:30:20 416

原创 AcWing 1319. 移棋子游戏(sg 博弈)

思路n 个图是 n 个独立的游戏,我们可以求每个图的 sg 值异或起来,等于 0 必败否则必胜。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p ma.

2021-11-25 10:09:40 2733

原创 AcWing 135. 最大子序和(单调队列优化 dp)

思路这题与普通的最大子段和不同,这题的最大子段和的长度不超过:m,我们设 fif_ifi​ 表示 i 结尾的最大子段和,那么:fi=Max(sumi−sumj),(1<=i−j<=m)f_i=Max(sum_i-sum_j),(1<=i-j<=m)fi​=Max(sumi​−sumj​),(1<=i−j<=m) 观察当我们在枚举第 i 个位置的时候:sumisum_isumi​ 是变量,所有我们将sumi sum_isumi​ 从上面的式子提出来,那么原式变成:.

2021-11-25 10:02:39 311

原创 AcWing 1073. 树的中心(两边 dfs)

代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f.

2021-11-25 09:45:09 173

原创 AcWing 1072. 树的最长路径(两边 dfs)

代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f.

2021-11-25 09:40:57 112

原创 AcWing 1069. 凸多边形的划分(区间 dp)

代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f.

2021-11-25 09:36:08 439

原创 AcWing 479. 加分二叉树(区间 dp)

思路一道看着很像树形 dp 的题,但其实是区间 dp。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x.

2021-11-25 09:31:57 274

原创 AcWing 1058. 股票买卖 V(状态机dp)

思路盗一张一位大佬的:状态机图。从题目中我们得知状态转移非常复杂,如果我们使用状态机的思想:引入三个状态:手中有票、手中无票、冷冻期,那么我们能思路清晰的进行状态转移了。注意状态机中的边表示对应的:花费。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi firs.

2021-11-25 09:23:40 87

原创 AcWing 1057. 股票买卖 IV(状态机 dp)

思路盗用一张别人的图。在上图中:手中有货 与手中无货是两个状态,这两个状态之间相互转换。图中的入口和出口对应:初始化 和 答案。y 总的状态机模型,把一些复杂的状态表示,状态转移,变的生动。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#defi.

2021-11-25 09:15:53 81

原创 AcWing 734. 能量石(贪心排序+01背包)

思虑对能量石排序排完序用 01 背包求解。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x.

2021-11-25 09:08:07 122

原创 AcWing 487. 金明的预算方案(dp+dp 预处理)

代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f.

2021-11-24 21:11:50 213

原创 AcWing 187. 导弹防御系统(dfs)

题意直接 dfs,dp 不好 dp代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#.

2021-11-24 21:04:22 124

原创 AcWing 272. 最长公共上升子序列(dp 求最想公共子序列)

思路这题是在求最长公共子序列的基础上求要求递增。我们可以简单的三层 for 循环进行枚举 ,但是我们的第三层 for 循环是在第二层 for 循环的时候用一个 mx 变量进行,不断维护的。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define .

2021-11-24 20:56:07 97

原创 AcWing 275. 传纸条(高维 dp)

思路高维 dp,开四维(i,j,k,l)表示两个人的位置,进行暴力状态转移。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#de.

2021-11-24 20:40:27 137

原创 AcWing 1027. 方格取数(高维 dp)

思路高维 dp,开四维,去暴力状态转移。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f.

2021-11-24 20:35:31 229

原创 acwing907. 区间覆盖(贪心)

思路从左向右贪心遇到没覆盖的点就选选段。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3.

2021-11-24 20:23:23 85

原创 acwing148. 合并果子(贪心)

思路贪心合并的小的。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define .

2021-11-24 20:12:15 90

原创 AcWing 840. 模拟散列表(类似 map 的哈希用法)

题意#include <cstring>#include <iostream>using namespace std;const int N = 1e5 + 3; // 取大于1e5的第一个质数,取质数冲突的概率最小 可以百度//* 开一个槽 hint h[N], e[N], ne[N], idx; //邻接表void insert(int x) { // c++中如果是负数 那他取模也是负的 所以 加N 再 %N 就一定是一个正数 int.

2021-11-23 15:35:36 369 1

原创 AcWing 839. 模拟堆(二叉堆)

思路和 set 的用途差不多。代码#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int h[N], ph[N], hp[N], sz, m; //m 表示被插入的数的计数器void heap_swap(int a, int b){ swap(h[a], h[b]); swap(ph[hp[a]], ph[hp[b]]); swap(hp[a], h.

2021-11-23 15:32:49 125

原创 acwing838. 堆排序

思路代码#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int h[N], sz;void down(int u){ int v = u; if (u * 2 <= sz && h[v] > h[u * 2]) v = u * 2; if (u * 2 + 1 <= sz && h[v] > h[u * 2 + .

2021-11-23 15:29:11 224

原创 acwing837. 连通块中点的数量(并查集)

并查集的有的神奇妙用是把一个问题我们倒过来考虑的时候,比如题目让我们分割一个数组或集合,我们考虑这个的逆过程,我们考虑用并查集考虑合并。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_b..

2021-11-23 15:25:24 78

原创 acwing836. 合并集合(并查集)

思路并查集可以判断连通块的数量,可以判断集合的大小。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3.

2021-11-23 15:19:02 86

原创 acwing143. 最大异或对(01字典树)

思路把 n 个数的二进制位建立 01 字典树,如下图所示:0、2、7 ,从二进制高位向低位建立二进制字典树。然后我们 O (n) 枚举每个一个数 x,然后在字典树上匹配找另一个数,从 x 的最高二进制为位开始看,如果这位是 0,我们则在对应的树中找 1,如果没 1, 我们迫不得已才要走 0。如果这位是 1,我们则在对应的树中找 0,如果没 0,我们迫不得已才要走 1。代码#include <bits/stdc++.h>using namespace std;#def.

2021-11-23 15:14:13 105

原创 AcWing 835. Trie字符串统计(字典树 trie)

思路对每个字符串建立字典树即可快速查询。代码#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int son[N][26], cnt[N], idx;char ch, s[N];void insert(char s[]){ int u = 0; for (int i = 0; s[i]; i ++) { int v = s[i] - 'a'; .

2021-11-23 11:15:57 106

原创 acwing831. KMP字符串

思路kmp 求单个字符串在主串 s 中的出现的位置、次数,还要考虑能不能算法重叠算不算贡献。代码#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int n, m;char s[N], t[N];int nxt[N], mk[N];void get_nxt(){ int j = 0, k = -1; nxt[0] = -1; while (j < m) .

2021-11-23 11:12:28 136

原创 AcWing 154. 滑动窗口(单调队列)

思路利用单调维护递增或递减的序列,从而在队头得出我们想要的极值。代码#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int a[N], q[N];int main(){ int n, k; scanf("%d %d", &n, &k); for (int i = 1; i <= n; i ++) scanf("%d", &a[i]).

2021-11-23 11:07:55 57

原创 acwing3302. 表达式求值(双栈模拟)

## 思路这题的思路核心就是通过使用两个栈,一个是存放操作数的栈,一个是存放 运算符的栈,通过这两个栈进行模拟。代码#include<iostream>#include<map>#include<stack>using namespace std;map<char, int> isp, icp;const char opers[6] = {'+', '-', '*', '/', '(', ')'};const int isps[6] =

2021-11-23 11:03:38 106

原创 题目顶顶顶顶

2021-11-14 15:16:29 344 1

空空如也

空空如也

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

TA关注的人

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