- 博客(43)
- 收藏
- 关注
原创 Go单元测试入门
因此,Go 语言在 1.9 版本中引入了 t.Helper(),用于标注该函数是帮助函数,报错时将输出帮助函数调用者的信息,而不是帮助函数的内部信息。不要返回错误, 帮助函数内部直接使用 t.Error 或 t.Fatal 即可,在用例主逻辑中不会因为太多的错误处理代码,影响可读性。如果只想运行其中的一个用例,例如 TestAdd,可以用 -run 参数指定,该参数支持通配符 *,和部分正则表达式,例如 ^、$。运行 go test,报错信息如下,可以非常清晰地知道,错误发生在第 20 行。
2023-09-09 16:28:09
216
原创 pprof火焰图性能优化
火焰图(flame graph)是性能分析的利器,在go1.1之前的版本我们需要借助go-torch生成,在go1.1后go tool pprof集成了此功能,今天就来说说如何使用其进行性能优化在你启动http server的地方直接加入导入: _ “net/http/pprof”获取cpuprofile获取最近10秒程序运行的cpuprofile,-seconds参数不填默认为30。等10s后会生成一个: pprof.samples.cpu.001.pb.gz文件。
2023-09-09 16:22:12
811
原创 Grafana 图表配置快速入门
例如我这里是用来显示 CPU 的变化率的,所以我填入的是:「rate(system_cpu_usage[1m])」,这表示使用 1 分钟的数据变化率来显示 CPU 的变化情况。图例可以设置图例的显示数值是什么,例如这里我写了:「{{instance}}-1m」,这表示使用实例名为前缀,后面再加上「-1m」字符串,最终显示为:「localhost:8080-1m」,其中 localhost:8080 为实例名。这表示其数据精度是怎样的,是 1 比 1 的精度,还是原有的 1/2,还是 1/3 等等。
2023-09-09 16:17:43
3305
原创 快速排序的五种优化(高频面试)
快速排序的五种优化(高频面试)未优化void quick_sort_v1(int *arr, int l, int r) { if (l >= r) return ; int x = l, y = r, z = arr[l]; while (x < y) { while (x < y && arr[y] >= z) --y; if (x < y) arr[x++] = arr[y]; w
2021-03-14 10:15:49
336
1
原创 Leetcode字符串刷题顺序
5. 最长回文子串知识准备:8. 字符串转换整数 (atoi)13. 罗马数字转整数14. 最长公共前缀28. 实现 strStr()36. 有效的数独58. 最后一个单词的长度125. 验证回文串文章目录[5. 最长回文子串](https://leetcode-cn.com/problems/longest-palindromic-substring/)知识准备:[8. 字符串转换整数 (atoi)](https://leetcode-cn.com/problems/string-to
2021-01-01 13:28:54
665
原创 Leetcode栈刷题顺序
文章目录[20. 有效的括号](https://leetcode-cn.com/problems/valid-parentheses/)[225. 用队列实现栈](https://leetcode-cn.com/problems/implement-stack-using-queues/)[232. 用栈实现队列](https://leetcode-cn.com/problems/implement-queue-using-stacks/)20. 有效的括号难度简单1402给定一个只包括 '(',')
2021-01-01 13:27:11
204
原创 Leetcode树刷题顺序
100. 相同的树难度简单312给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \ 2 2
2021-01-01 13:25:42
635
原创 leetcode并查集刷题顺序
文章目录[128. 最长连续序列](https://leetcode-cn.com/problems/longest-consecutive-sequence/)[130. 被围绕的区域](https://leetcode-cn.com/problems/surrounded-regions/)[200. 岛屿数量](https://leetcode-cn.com/problems/number-of-islands/)[684. 冗余连接](https://leetcode-cn.com/problems
2021-01-01 13:24:24
190
原创 leetcode链表刷题顺序
文章目录链表leetcode[19. 删除链表的倒数第N个节点](https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/)(找同步位置)[24. 两两交换链表中的节点](https://leetcode-cn.com/problems/swap-nodes-in-pairs/)[83. 删除排序链表中的重复元素](https://leetcode-cn.com/problems/remove-duplicates-from-sor
2021-01-01 13:21:09
417
原创 Leetcode应该怎么刷?【笔试】
数据结构篇二叉树maximum-depth-of-binary-tree二叉树的最大深度balanced-binary-tree平衡二叉树binary-tree-maximum-path-sum二叉树中的最大路径和lowest-common-ancestor-of-a-binary-tree二叉树的最近公共祖先binary-tree-level-order-traversal二叉树的层序遍历binary-tree-level-order-traversal-ii二叉树的层次遍历 II..
2021-01-01 13:14:23
612
原创 分别使用select、poll、epoll实现echo服务器
1. 封装一些必要的C/S架构头文件(放在common文件夹中)common├── head.h├── common.c├── common.h├── tcp_client.c//可以省略├── tcp_client.h//可以省略,后面用telnet来测试就行├── tcp_server.c├── tcp_server.hhead.h#ifndef HEAD_H#define HEAD_H#include <stdio.h>#include <stdlib.
2021-01-01 13:00:38
423
2
原创 带你深度理解select、poll和epoll区别
1、IO复用模型2、目前的常用的IO复用模型有三种:select,poll,epoll(1)select时间复杂度O(n)他仅仅知道有I/O事件发生了,却不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有的流,找出能读出数据,或者能写入数据的流,对他们进行操作。所以select具有o(n)无差别轮询的时间复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll时间复杂度O(n)poll本质上与select没有区别,他讲用户传入的数组拷贝到内核空间,然后查询每个fd对应
2020-12-31 18:14:28
1836
2
原创 IO多路复用的引出(为什么要用IO多路复用)
高并发服务器中的多线程多进程缺陷问题:多进程:进程数量有限代价太高(销毁,上下文切换)受限于CPU内存隔离进程间通信代价高以上都是不可避免的的多线程:受限于CPU那么影响的是响应能力(例如1000个线程都在发收)全部调度,响应能力肯定受影响阻塞那么会有同学说改为非阻塞不就行了吗?那么改为非阻塞不能完成收发信息就会结束,那么循环检测(eagain)虽然可以,但是无法感知IO,需要更多的CPU时间,效率明显不高。以上都是不可避免的,所以引出了IO多路复用(IO多路转接
2020-12-31 18:02:06
970
1
原创 平衡二叉查找树
二叉排序树名称:二叉排序树、二叉搜索树性质: 1、左子树 < 根节点 2、右子树 > 根节点用途: 解决与排名有关的检所需求二叉查找树插入例如插入10, 10 < 20插入到左子树,10<17插入到左子树,10 > 3插入到右子树,右子树为空放置10二叉查找树的删除1、删除叶子节点2、删除出度为1的结点3、删除出度为...
2020-04-21 23:29:32
151
原创 LINUX网络编程-day02-socket编程
1.socket模型创建流程图2.网络套接字:socket 一个文件描述符指向一个套接字(该套接字内由内核借助两个缓冲区实现。) 通信过程中,套接字成对出现的,2.1 套接字通信原理...
2020-04-21 11:20:53
218
原创 相似的数集(集合的相似度)
题目描述 给出两个数集,它们的相似程度定义为 Nc/Nt×100。其中,Nc 表示两个数集中相等的、两两互不相同的元素个数,而 Nt 表示两个数集中总共的互不相同的元素个数。请计算任意两个给出数集的相似程度。输入 第一行一个正整数 N(N≤50),表示数集的个数。 接下来的 N 行,每行首先给出一个正整数 M(M≤10000),之后给出的 M 个正整数为此数集中的元素(可能有重复,小...
2020-02-04 23:20:16
1148
1
原创 高精度阶乘
高精度阶乘:每一个大数都将存在ans数组中,ans[0]始终存的是得到的阶乘数的位数;#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<iomanip>#include<algorithm>#include<...
2019-12-24 00:34:41
154
原创 扩展欧几里得算法
扩展欧几里得算法先来介绍一下贝祖定理 :所谓贝祖定理就是说:两个整数a b 是互质的。等价于ax + by = 1是有整数解。贝祖定理另一种更一般的形式,说的是两个整数 a、b有最大公因数是c,等价于方程 ax+by=c有整数解。即如果a、b是整数,那么一定存在整数x、y使得ax+by=gcd(a,b)。换句话说,如果ax+by=m有解,那么m一定是gcd(a,b)的若干倍。有一个直接...
2019-12-08 11:32:18
194
原创 C++中istringstream()函数的用法
看到了一个比较有用的C++的输入输出控制类。因为之前没有使用过,故特地学习了一下,在此总结。程序源码中使用了这样的语句:ifstream fin(fname);int a,b,c;string s;getline(fin, s);istringstream ss(s);ss >> a>>b>>c;将读入的一行中的三个整数存储到了a, b, c中...
2019-12-04 23:06:44
1240
原创 0 1背包
0 1背包每件物品只能选一次N个数, V体积v[i]体积 w[i]每个价值输入 :4 5 // N, V1 2 // v[i] w[i]2 43 44 7输出:8分析:dp可以分析其f[i][j]集合,可以分为两个集合 , (1). 不包含i (2).包含i(1)不包含 i时,为f[i - 1][j ];(2)包含i,直接求不好求,可以先去...
2019-11-30 11:46:48
135
原创 位运算技巧
位运算符按位与& :0 & 0 = 00 & 1 = 01 & 1 = 1按位或| :0 | 0 = 00 | 1 = 11 | 1 = 1按位异或 ^ :0 ^ 0 = 00 ^ 1 = 11 ^ 1 = 01 ^ 0 = 1左移 << :左移一位相当于乘上2 (左移补0)右移>> :右移一位相当于除...
2019-11-29 12:05:57
250
1
转载 ubantu快捷键
常用:不要用ctrl+alt+F1,因为是root帐号,有可能更改系统。用ctrl+alt+F2,F2~F6都可以。 ctrl+alt+F7回到图形界面。Ctrl + Alt + T:打开终端Ctrl + Shift + T:在同一个窗口新建终端标签页Ctrl + Shift + W:关闭标签页Ctrl + Shift + N:新建终端窗口Ctrl + Shift + Q:关闭终端窗...
2019-11-29 00:45:37
356
原创 linux配置
sudo apt-get updatesudo apt-get upgratesudo apt-get upinstallsudo apt-get install gitsudo apt-get install dpkg//安装包安装软件//sudo apt-get install tar//解压缩 软件sudo apt-get ifcongigwget -qO- https://r...
2019-11-29 00:34:25
256
原创 acwing基础算法
文章目录基础算法快速排序归并排序整数二分浮点数二分高精度加法高精度减法高精度乘法高精度除法一维前缀和 —— 模板题二维前缀和 —— 模板题一维差分 —— 模板题二维差分 —— 模板题基础算法快速排序void quick_sort(int q[], int l, int r){ if(l >= r)return; int i = l - 1, j = r + 1, x = q...
2019-11-29 00:32:45
7089
原创 分解合数的质因子
for(int i = 2; i <= n; i++) { // 暴力 int num = i; for(int j = 2; j * j <= num; j++) { if(num % j) continue; // 只要是素数就不进行下一步 while(num % j == 0) { // 分解合数的质数因子 ...
2019-11-29 00:30:48
398
原创 做题笔记
文章目录1.如果想把一个多位数的各个位表示怎么办?2.如果想知道最长连号 eg.3 5 6 2 3 4 5 6 8 9 ,最长为5;?3.如果题目给了很大的数?4.当遇见很大的数不行的话可以定义在外面?5.各种应用7.t+=(a[i]-'0')*j++;后面的那个 -"0" 是什么意思?8.当gets()时必须用这个头文件#include9.当遇见字母密码向后移动n时,求其后的东西10.控制格式长...
2019-11-29 00:28:54
506
原创 单链表完整代码
单链表#include <stdio.h>#include <stdlib.h>typedef struct Node{ int data; struct Node *next;}Node, *LinkedList; Node insert(LinkedList head, Node *node, int index) { Node *...
2019-11-29 00:26:51
1227
原创 顺序表完整代码
##顺序表#include <stdio.h>#include <stdlib.h>#define ERROR 0#define OK 1typedef struct Vector { int size, length; int *data;} Vector;void init(Vector *vector, int size) { ...
2019-11-29 00:25:38
1268
原创 最小生成树算法
关于图的几个概念定义:连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图。强连通图:在有向图中,若任意两个顶点vi与vj都有路径相通,则称该有向图为强连通图。连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表着连接连个顶点的代价,称这种连通图叫做连通网。生成树:一个连通图的生成树是指一个连通子图,它含有图中全部n个顶点,但只有足...
2019-11-29 00:23:41
260
原创 hz错题笔记
1. 挑战队员题目描述鸣人所教班级的 MM 名学生都非常优秀,学习成绩差别不大,现在要选出不少于 NN 名学生参加一项夏令营活动,但以什么标准挑选让鸣人犯了难。为了体现公平,鸣人进行了一次综合测评,他希望找到的这些同学的测评成绩必须是相同的,而且越高越好,对同一测评分数的学生,要么都选上,要么都不被选。加入得到的测评成绩一定能满足鸣人的要求,请你编写程序帮助鸣人计算按照上述规则能够挑选出多少名...
2019-11-29 00:21:48
712
原创 Leetcode链表
Leetcode 19. 删除链表的倒数第N个节点给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.struct ListNode { int val; struct ListNode *next;};struct ListNode* removeNthF...
2019-11-29 00:18:44
124
转载 配置强大的vim
打开终端,执行下面的命令就自动安装好了:wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh -x
2019-11-29 00:14:15
113
原创 设置免密登录
1.修改主机名sudo vim /ect/hostname 修改主机名2.免密登录服务器$ ssh-keygen$ ls -a$ cd .ssh~/.ssh$ cat id_rsa.pub复制公钥在另一个终端确保已经登录pi输入pwd由于此处初次使用,所以cd .ssh所以会报错-bash: cd: .ssh: No such file or director...
2019-11-29 00:07:57
228
原创 超牛逼gcd(a,b)
#include<iostream>using namespace std;#include<algorithm> int main(){ int a, b; cin >>a >> b; cout<< __gcd(a,b); return 0;}
2019-05-13 19:42:54
449
原创 高精度快速幂
高精度快速幂 a^n类似大数阶乘的算法代码:#include <iostream>using namespace std;int main(){ int c[5002]; int n , a; c[0] = 1; c[1] = a; int di = 1; int num = 0; cin >> a>&...
2019-05-01 11:15:07
1047
3
原创 快速幂模板
快速幂模板#include<iostream>using namespace std;int f(int a, int b){ if(b==0)return 1; if(b%2==1)return a*1ll*f(a,b-1); else { int t = f(a,b/2); return t*t; }}int main(){...
2019-05-01 10:20:31
148
原创 如何构建链表
构建链表#include<iostream>using namespace std;struct Node{ int data; Node *next;};int main(){ Node *head, *p,*q; int n; head = NULL; cin >> n; int t; for(int i = 0; i < n; i+...
2019-05-01 00:39:57
977
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人