自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 接雨水

【代码】leetcode 接雨水。

2024-01-14 16:33:17 382

原创 Go 并查集

return parent[x]=get(parent[x]) //路径压缩,向上查询根节点时,把路径经过的节点都 挂到根节点下,减少树高。秩合并,通过h[]数组记录每个集合的深度,树低的挂在树高下,如果相等都可以,一般优化get即可;var parent [size]int //size为实际问题数组长度。parent[i]=i //自身为根节点。

2024-01-12 11:37:18 420

原创 Http 状态码

303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。通常,这只是暂时状态。413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。

2024-01-11 16:06:34 640

原创 Go基础 Channel

recvq和sendq本质是链表,sudog 代表goroutine;

2023-11-17 15:02:51 137

原创 Go基础 Map

2.原key进行hash后取低B位,新桶比旧桶B位多一位,所以key的新位置 有两种,一种还是原来的桶,一种是多出一位的B为1的二进制桶,可以 归纳为hash&(2n-1)确定原来桶hash在新桶的位置;结构体也是类似,如果结构体只包括基础类型,可以比较,如果包括slice、map、channel则不能直接比较;

2023-11-17 15:02:17 112

原创 Go基础 Slice

2. 传值与传指针,go中均是值传递,但由于slice的底层结构为指针,所以传slice的值时候在函数中更改会影响原来slice,但不会影响cap和len,如果想改变这两值,需要传入silce指针;(2) var s = []int{} // 空切片,与nil比较false,原因为底层结构array=0xc42003bda0(所有都是这个地址),len=0,cap=0。(1) s:=make([]int,5) // 零切片,len和cap不为0,只为0或nil的切片。4. 遍历slice。

2023-11-17 15:01:23 96

原创 计算机网络 close_wait、time_wait原因与排查

解决方法:keep-alive、允许time wait端口复用、快速处理资源及复用,改配置文件;大部分是程序原因,发了ack包未发送fin包,大多是代码问题;time wait状态是主动关闭连接方存在的状态;close wait是被动关闭的一方存在的状态;原因是出现大量的短连接,过多会吃资源;1.调用close前出现死循环;3.未释放连接导致阻塞;未调用close()2.调用前抛出异常;

2023-11-17 15:00:19 132

原创 分布式一致性原理与算法

TODO(占位,有时间整理)

2023-11-17 14:51:56 35

原创 消息队列基础

可将发邮件和发短信非核心逻辑异步处理,在信息入库后写入mq,后两个逻辑进行异步调用,最终的时间为sum(50,5(写入mq的时间,一般比较快))=55ms。2.发布订阅模式:通过topic,一个消息可以被多个消费者消费,即可以被重复消费;mq解耦:A系统数据写入mq,下游系统如需要进行订阅,不需要不订阅,基于此,A系统的影响不大;B系统新增接口后A系统需要更改代码,C系统废弃后A系统需要删除调用C系统的逻辑;:场景如用户注册,信息入库50ms,发邮件50ms,发短信50ms。:A系统调用B、C系统;

2023-11-17 14:39:07 48

原创 数据库存储 LSM Tree、b、b+ Tree

TODO(占位,有时间整理)

2023-11-17 14:35:56 41

原创 Mysql server层binlog 存储层undo redo log

TODO(占位,有时间整理)

2023-11-17 14:33:22 31

原创 数据库类别及选型

TODO(占位,有时间整理)

2023-11-17 14:30:49 31

原创 Go 协程池

并发处理task,限制goroutine数量

2022-09-20 11:16:26 254 1

原创 vim配置go

【代码】vim配置go

2022-09-16 16:36:35 970

原创 vim go ycm

安装vim go ycm

2022-09-09 14:35:44 156

原创 Redis 基础

底层数据结构动态字符串(sds),redis基于c开发,字符数组为char[],redis没有采用这种,自己构建了一个结构体struct{intlen;sds获取长度更快(直接len字段o(1),c为o(n)),可以防止缓存区溢出,有free字段,空间够直接拼接,不够再扩容;rdb快照(n分钟m次记录),二进制写入磁盘,重启会丢数据,但相比于aof快,fork子进程,共享内存,边同步边执行业务,会丢失一次记录;底层数据小用压缩列表,多用字典+跳表,查找o(1),排序,范围获取o(logn);........

2022-07-25 13:49:13 343

原创 Go 逃逸分析

逃逸分析主要是进行内存优化,go没有直接操作内存的方法,采用自动gc,了解内存分配机制,可以写 高质量的代码;go有两种方式分配内存,堆和栈,堆分配昂贵,栈分配廉价,所有内存优先栈分配,但栈分配要求变量生命周期和内存足迹(和一个变量相关的所有内存块)在编译时确定;逃逸分析是用于堆和栈分配进行选择,通过在编译时期做gc,编译器追踪变量在代码块的作用域,判断变量在整个运行周期是否在运行时完全可知,通过校验可以在栈上分配;否则逃逸到堆上;go build -gcflags '-m' 可以显示变量逃逸分

2022-05-10 21:00:13 785

原创 Go gmp调度模型

协程调度模型:协程是轻量的线程,在线程基础上,没有上下文切换,无锁,效率高;协程有自己的调度模型,即gmp模型;g:代表go关键字开的协程;p:逻辑处理器,绑定一个m处理g;包括上下文信息,维护了自己需要调度的g的局部队列,一个go新建优先放入局部队列,局部队列小于256,超过拿一半放入全局队列;由GOMAXPROCS设置个数;m:对应一个系统线程,内核态;m绑定p处理局部go队列,如果没有从全局队列拿一批,若全局队列没有,从其他p局部队列偷一半(即m空闲时,会从其他队列偷取,不会直接销毁线程)

2022-04-22 14:25:18 367

原创 Go gc屏障

golang gc:三色标记法,1.5版本开始三色:黑白灰过程:1.开始所有节点均为白色;2.stw,扫描所有根节点,标记为灰色;(根节点为编译时确定的全局变量,堆上指针,goroutine栈上指针,扫描过程中新指向堆的指针)3.扫描灰色节点,找到灰色节点引用的节点,将引用的节点置为灰色,当前灰色节点置为黑色;4.循环扫描灰色这个过程,(分层,每次一层递归),直到灰色节点为空;5.三色标记法,gc过程是和业务代码并行执行,业务代码会产生新的指针指向变动,会产生新的堆指针分配,需要

2022-04-16 14:50:46 618

原创 Go 快排、堆排序、二叉树各种遍历

快排二分+分治func QSort(arr []int,low,high int){ if low<high{ lo,hi:=low,high key:=arr[low] //可以优化key,取中位数 for lo<=hi{ for arr[i]<key{ i++ } for arr[j]>ke

2022-02-16 19:01:31 342

原创 Goland安装

1.下载:https://www.jetbrains.com/go/download/other.html2.地址:http://www.zzvips.com/article/137092.html http://www.520xiazai.com/soft/jetbrains-eval-reset.html3.GOLINT:https://blog.csdn.net/jinglexy/article/details/79673262...

2022-01-14 11:03:35 232

原创 计算机网络、操作系统、数据库基础

base:1.计算机网络2.数据库3.操作系统special:1.算法2.项目other:1.软技能2.沟通3.逆商

2022-01-09 17:53:20 1322

转载 C++ 并查集

例子就是杭电上的畅通工程:http://acm.hdu.edu.cn/showproblem.php?pid=1232首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图上的点都连起来了,不用再修路了;如果是2个连通分支,则只

2020-05-20 20:29:36 147

原创 C++ 各种排序算法分类、时间空间复杂度、实现

分类:比较排序、非比较排序比较排序:通过元素间的比较进行排序,时间复杂度不能超过O(nlogn),不在乎数据规模和分布情况。包括:交换(冒泡,快排)、插入(简单插入,希尔)、选择(简单选择,堆排序)、归并排序。非比较排序:不通过元素比较进行排序,时间复杂度O(n),但需要空间确定位置,对数据规模与分布有要求。包括:基数排序、计数排序、桶排序。算法复杂度排序方法 时间复杂度(平...

2020-04-07 19:59:10 4087

原创 C++ const*修饰 指针数组与数组指针

int *const ptr //看const后边修饰的值,此为ptr为指针,即ptr指向不能改变int const * ptr //const修饰* 表示*ptr不能改变,即ptr指向的内容不能改变const int *ptr = int const *ptr在英文里,”*“ 被念做,pointer to...

2019-09-16 13:42:05 876

原创 C++ 直接插入排序

最基本代码:#include <iostream>using namespace std; int main(){ vector<int > a; int k=a.size(); int j; for (int i = 1; i < k; i++) { if (a[i] < a[i - 1]) { int temp...

2019-09-05 20:18:30 125

转载 C++ 智能指针shared_ptr,unique_ptr,weak_ptr,auto_ptr

C++四种智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 后三个是c++11支持,第一个被c++11废弃。智能指针作用:管理指针,在函数结束时忘记释放指针造成内存泄漏时,使用智能指针可以很大程度避免内存泄露,在函数结束时自动释放内存空间,不需要手动释放内存空间。1. auto_ptr(c++98,c++11废弃)采用所有权模式。a...

2019-09-01 17:19:39 178

原创 C++ kmp代码

kmp简洁代码:#include "cstdio"#include "iostream"#include "cstring"using namespace std;int _next[20];void getNext(string p){ int len = p.size(); int i = 0, j = -1;//前后缀 _next[0] = ...

2019-08-25 13:44:07 239

转载 C++ kmp

1. 引言本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟迟没有修改本文。然近期因开了个算法班,班上专门讲解数据结构、面试、算法,才再次仔细回顾了这个KMP,在综合了一些网友的理解、以及算法班的两位讲师朋友曹博、邹博的理解之后,写了9张PPT,发在微博上...

2019-08-25 13:07:29 238

原创 C++ static与const

static作用:static全局变量:限定了作用域,隐藏作用。普通全局变量和static全局变量均存储在静态存储区,普通全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,普通全局变量在各个源文件中都是有效的;静态全局变量的作用域只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。static全局变量只初使化一次,防止在其他文件单元中被引用。static局...

2019-08-24 12:40:42 151

原创 C++ ASCII表

保存表

2019-08-18 20:39:17 2809

原创 360 内推笔试编程题1

罗列正方体求表面积,在二维数组存储数据,所存的数据代表当前坐标摆放多少正方体,求最后的表面积(各个正方体的面,存在覆盖问题),只记得这么多AC代码#include <iostream>#include <cstdio>using namespace std;int main(){ int n,m; int a[1009][1009]={0...

2019-08-18 19:51:31 161

原创 C++ 符号优先级

优先级 操作符 描述 例子 结合性 1 () [] -> . :: ++ -- 调节优先级的括号操作符 数组下标访问操作符 通过指向对象的指针访问成员的操作符 通过对象本身访问成员的操作符 作用域操作符 后置自增操作符 后置自减操作符 (a + b) / 4; arra...

2019-08-18 14:51:13 19230

转载 C++ 指针数组与数组指针

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; //将该二...

2019-08-16 14:40:10 260

原创 C++ define与const

(1)define作用于编译的预处理阶段,const作用于编译、运行(2)define无数据类型,只是简单的字符串替换,const有数据类型检查(3)define替换多少次就有多少个副本,const只有一个副本(4)define不能调试,在预编译阶段已经替换掉(5)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。(6)const可节省空间,避免不必要...

2019-08-16 13:32:37 193

原创 C++ 数据类型占字节数

16位:(byte) 32位: 64位:char:1 char:1 ...

2019-08-16 10:46:02 503

转载 SLAM BA优化

https://www.cnblogs.com/Jessica-jie/p/7739775.html

2019-07-12 15:49:13 306

原创 DP通配符匹配

给定一个字符串(s) 和一个字符模式(p) ,实现一个支持'?'和'*'的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符?和*。输入:s = "adceb"p = "*a*b"...

2019-07-03 21:00:13 307

转载 【算法】堆,最大堆(大顶堆)及最小堆(小顶堆)的实现

转:http://blog.csdn.net/cdnight/article/details/11650983此坑待埋。点击打开漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析链接白话经典算法系列之七 堆与堆排序二叉排序树与二叉堆堆排序(注:这篇文章说明了如何从一个数组构建一个最大堆,推荐看)最大堆的插入/删除/调整/排序操作...

2019-06-13 16:13:25 13966

原创 二叉搜索树第k个节点

给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。二叉搜索树的中序遍历后的排列顺序为从小到大的排列,中序遍历即可。代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; ...

2019-06-13 15:24:11 63

terminus 下载包

terminus 下载包

2022-08-27

空空如也

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

TA关注的人

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