自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【golang】多个defer的执行顺序以及器相关练习

defer陷阱、注意事项

2022-08-09 11:10:55 549 1

原创 【golang】关于for range 中只存储最后一个元素的问题

golang中for range的陷阱

2022-08-09 10:56:54 1035 1

原创 【golang】pprof性能调优工具的具体使用(带案例)

golang、pprof性能调优

2022-08-09 10:51:45 1627

原创 【golang】分布式缓存-lru算法实现

lru算法、GeeCache缓存

2022-08-09 10:24:20 541

原创 【golang】分布式缓存 - 一致性哈希算法

一致性哈希算法、分布式缓存、geeCache

2022-08-09 10:17:44 321

原创 【docker】使用docker部署一个go项目

docke部署go项目,dockerfile的使用

2022-06-22 11:04:51 3085

原创 【go】使用jwt库生成token

go使用token,jwt

2022-06-15 17:42:50 1292

原创 【bcrypt】go使用bcrypt进行加密和验证

在注册功能中,使用golang中bcrypt库进行加密和验证

2022-06-15 16:10:46 1039 1

原创 【gorm】记一次gorm In 的问题

gorm中where in查询,失效的可能是....

2022-06-15 14:37:20 4862 1

原创 【压力测试】go-stress-testing

go的压力测试工具,go-stress-testing的下载以及使用

2022-06-13 22:18:07 2591 1

原创 【操作系统】 僵尸进程和孤儿进程

一、前言博主之前学习操作系统的时候,还真没了解过这两个进程,偶然间,看到,所以打算记录一下这两个知识点。二、孤儿进程1.是什么顾名思义,就是没有父亲的进程。(有点直白了…)2.发生在什么情况下一般是父进程早于其子进程先结束,那么当前的子进程就没有了父亲,所以称为孤儿进程。3.危害由于没有了父进程,当该子进程结束的时候,没有了能够处理它的进程,那么该进程会一直占用着系统资源。4.处理方式linux中会让进程号为1的进程去领养孤儿进程,从而对孤儿进程进行释放。在liunx中输入ps -au

2022-05-15 17:25:02 949

原创 [go包]sort包的使用

前言今天写题,用到了sort包,当时不是很了解改包的使用方法,晚上下课后,过来看了下,故写下此篇文章,助于自己的学习1.常用方法1.Ints() // 针对于整数类型排序2.Float64s() // 浮点数类型排序3.Strings() //字符串类型排序4.StringsAreSotred() // 判断传入的string类型数组或者切片是否有序5.IntsAreSorted()6.Float64sAreSorted()测试代码:// 1.整数类型排序 intValue :=

2022-05-02 22:23:40 254

原创 【redis】一致性哈希算法

前言这周复习redis,被集群和分布式搞得头大,也接触到一致性哈希算法, 因此博主进行了一定得学习,故,写下这篇文章。一、普通哈希算法普通得哈希算法是对服务器得数量进行一定得取模预算得出,常见得公式如下:index = hash(key)%NN就是服务器得数量。我们可以想象到,如果服务器数量改变,那么index也会进行改变。例如:一台服务器宕机,服务里器的数据暂时丢失(系统会进行一定的备份,用户发送的请求经过哈希运算后,因为N的改变,会访问其他的服务器,但是该台服务器还没有拷贝过来宕机的数

2022-05-01 15:18:45 2315

原创 【mysql】mysql近期知识点梳理

一、写在前面本周博主深入mysql底层研究了一番,有些夸张了~,其实就是看了mysql中几大难点,如日志、锁、索引。截至今天,感觉需要进行输出了,所以写下这篇文章。本文从mysql的CRUD和故障恢复两个方面讲起,希望能给大家带来帮助。二、mysql CRUD这里并不是要将mysql的执行流程,而是查询中涉及的一些mysql知识点。1. 索引当我们进行CRUD的时候,一定会涉及的概念就是索引,mysql采用B+树作为索引的存储结构,大家一定是耳熟能详了。这里呢,我想根据自己的理解讲一下B+树索引结

2022-04-24 10:51:24 450

原创 【计算机网络】聊一聊https的加密方式

一、写在前面老是听见我的朋友讨论https的加密方式,讨论不一,最后查询资料后,给出我自己的理解当然了,这需要一定的网络安全方面的知识,如果你还不了解这些基础知识,建议看一下这两篇文章手👇🎉常见的加密方式🎉数字签名和数字认证二、https的加密方式基于前面两篇的知识,博主个人是这样理解https的加密方式的:1.在连接建议阶段采用的是非对称加密2.连接建立后,通信过程中使用的是对称加密我们都知道https是http+SSL/TLS,SSL数字证书。用来验证服务器的身份。当Client向S

2022-04-17 15:22:53 4445 1

原创 【计算机网络】数字签名和数字认证

写在前面要不是学习https,咱可能也不会了解到这~大家可以先看下这篇加密方式👉常见的加密方式,不然可能对本文章充满疑惑~一、数字签名1.介绍签名是什么,是Signature(废话)我们先把签名带入自己的日常生活中,签名用来保证所承诺的一些内容,在法律上,具有不可抵赖性~【一般是指签合同啦】那么,网络中要什么签名???网络中签名主要保证数据的完整性,主要指的是给数据签名。这个完整性,一般是指的你发送的报文是不能被修改的~2.如何实现签名这就涉及到了加密技术,我们知道非对称加密是公钥

2022-04-17 15:00:17 6767

原创 【计算机网络】常见加密方式

写在前面这周了解了https是如何实现安全传输的,其中涉及到了s加密的技术。所以,博主去又去学习了常见的加密方式,故写下这篇博客一、 对称加密1.介绍这个比较好理解,也就是说加密和解密使用的是同一把钥匙。就好比自己家的钥匙一样,开门和锁门都用同一把钥匙。给大家看个例子:这里钥匙是string,当我点击加密后,会出现相应的密文。下面清空明文然后点击解密可以看到明文又被解析回来。这个过程中,我们加密和解密都使用的同一个密钥String.这就是对加密。PS:最早的对称加密应该是凯撒加

2022-04-17 14:22:01 8677

原创 【复盘指南-计算机网络】你真的搞懂传输层了吗

写在前面hello~,周更小博主又来了(纯属是懒 ε=ε=ε=┏(゜ロ゜;)┛),本篇文章带领大家一起来看看传输层相关的知识。1.可靠连接1.1 TCP都说tcp是面向连接的可靠的协议,那么为什么可靠呢?tcp为什么可靠?因为tcp保证了用户发送的数据的完整性、顺序性。你想想,如果传来的数据是乱序的,那么接受方收到的数据不就和发送方不一致嘛,哪能管这叫可靠?乱序情况丢失情况重复情况(比较抽象,画个简单的图,好丑ε=ε=ε=┏(゜ロ゜;)┛)这问题又来了,tcp怎么保证数据的可靠

2022-04-10 18:07:00 2211

原创 【golang】对net包中http的简单理解及使用

写在前面博主很早之前就接触过net包,使用过里面的方法来进行前后端的一个交互。当时,对于这一块知识是一点都不理解。也不明白为什么HandFunc后面加个函数就可以处理请求了。时隔多日,博主终于再次捡起昔日的“科研精神”,直面自己内心的恐惧,对net/http进行基础的学习,也算是小于收获。写下此文,希望能给各位带来一定的帮助。1.看图首先给大家画一幅图…,如下通过这张图,我们大致能看到Client和Sever通过http通信的过程,博主在这里简单描述一下:1.客户端发送请求,通过多路复用器选

2022-04-01 21:15:36 519

原创 【golang】实现动态数组

前言在go中,slice可以当作是一种动态数组,但是博主还是想借助slice手动实现一下。代码结构体// array 切片结构体type array struct { arr []int len int cap int}创建func makeArr(len,cap int) *array{ a := new(array) if len > cap { fmt.Println("invalid,len large than cap") return nil } a

2022-04-01 16:40:07 2660 1

原创 【go】defer的使用

卸载前面第一次看go基础语法的时候,用使用到了defer。但是一直不知道它到底是什么,有什么用途。这几天通过查询、学习。算是对defer有了一点浅显的认识。1.什么是deferdefer是go中一种延迟调用机制,defer后面的函数只有在当前函数执行完毕后才能执行,通常用于释放资源。2.defer的特点defer遵循先进后出的原则,类似于栈的结构。补充下:为什么要把defer设计成这种机制?因为后申请的资源和可能对前面申请的资源有依赖。如果先将前面申请的资源释放掉了。对于后面的资源可能

2022-03-26 20:57:18 11211 2

原创 【redis】go+redis模拟验证码功能

写在前面在B站看redis教程,老师做了一个java+redis模拟验证码验证得功能。于是,我把它转换成了go来实现。1.要求1.每个手机每天只能发送3次验证码2.每次接收得验证码2分钟内有效。2.分析1.对于要求1,我们可以每个手机号一天内发送得验证码次数2.对于要求2,我们可以设置该验证码得过期时间为2min。3.实现1.连接数据库var rdb *redis.Clientvar codeKey string var ctx = context.Background()func

2022-03-23 14:09:18 2060

原创 【链表】go实现链表

写在前面最近在复习数据结构,尝试用go实现了下单链表和双向循环链表。(详细内容在注释里面)仅供参考,有错误的话,希望大家能指出。单链表链表结构// ListNode 链表的数据结构type ListNode struct { Data interface{} NextNode *ListNode}创建链表// creatHead 头插法实现单链表 [带头节点]func (l *ListNode) creatHead(n int) *ListNode { if n <

2022-03-23 13:51:08 1829

原创 【mysql】对聚簇和非聚簇索引的简单认识

写在前面这两天博主在看mysql索引有关的文章。故写下这篇简单的理解。以下仅为个人理解,如果错误,欢迎指正。1.使用索引的目的减少访问磁盘的I/O次数。提高mysql查询速度。2.聚簇和非聚簇索引1.什么是聚簇索引?将数据和索引存储在了一起,找到索引就找到了数据。参考下图:(ps,这是在别人的文章中,截取过来的。忘记哪篇文章了…)上图中,出现了辅助索引,那么我们来介绍下辅助索引:2.什么是辅助索引?在聚簇索引之上创建的索引称为辅助索引,辅助索引存储的是主键值。通过上图,我们可以发现

2022-03-16 13:06:52 818

原创 对cookie、session、token的简单理解

1.无状态协议是指协议对于交互的场景,没有记忆能力2.引入cookie、session、token的目的使得交互场景中,协议具有记忆能力。3.cookie1.cookie是早期的用户状态机制2.交互流程:如上图,每次请求的时候都需要带上一定数量的id,根据物品的id,在数据库中进行相应的查找,才能显示出用户选择的商品。从而达到记忆的功能。4.session1.基于cookie,我们发现服务端本来就存放着用户的数据,那么,我们不需要每次都把用户选择物品的id都存储到cookie中,而是

2022-03-13 11:57:03 5170

原创 【gorm】ErrRecordNotFonud错误

写在前面这几天在写一个demo。涉及到数据库查询的时候,遇到了这个问题。后来去网上查询了一下。才知道ErrRecordNotFound这个错误。内容 e := DB.Where("post_id = ?",post.PostId).Find(postRes).Error if e != nil { fmt.Println("查询失败") }接着,无论我怎么测试,都会提示我查询失败…经过查询,改成了 e := DB.Where("post_id = ?",post.PostId).Fin

2022-03-09 09:11:31 2012

原创 【算法打卡】数字三角形

写在前面看到这道题目,直觉告诉我可以用动态规划求解。在代码实现过程中,我忘记考虑了左右走的步数不能大于1,好多时间都浪费在了这个点。在最后又忘记考虑层数数量的问题代码 Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int arr[][] = new int[n][n]; for (int i = 0; i < n; i++){ for (i

2022-03-07 21:05:33 190

原创 【算法打卡】回文日期

写在前面这到没有什么技术含量的题目,卡了半天。原因是因为忘记考虑了日期的有效性。也就是月和天数是否有效。浪费了一个多小时…题目描述2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年

2022-03-05 20:23:39 157

原创 【gorm】“invalid memory address or nil pointer dereference“报错问题

今天使用gorm连接数据库,报了这样一个错误。刚开始以为是自己函数内部的存在空指针变量导致的。修改了一上午。兜兜转转又回到了连接数据库语句这边。如图:我声明了全局的DB,又写了一个DB初始化函数。看起来没有问题。但是这就是问题的关键。因为:gorm.open()会返回一个db,但是因为这里我使用的是 := 赋值,所以,全局的DB对象并没有被赋上值,而是产生了一个局部的DB解决办法:声明一个全局的 err。将 “:=” 修改为 = 即可。这样全局的DB就会被赋上相应的值...

2022-03-05 14:47:03 3158 5

原创 【算法打卡】单词分析

1.说在前面这是蓝桥杯官网的一道题目。这种类型的题目,见过很多次,写倒是第一次。2.题目描述3.代码 Scanner sc = new Scanner(System.in); String s = sc.next(); int size = s.length(); if (size == 0){ System.out.println(""); System.out.println(0);

2022-03-04 21:54:45 219

原创 【gin】初识中间件

1.写在前面对于中间件的概念,一直不是特别清楚。但是今天写着程序,突然有些意识到中间件是干嘛的。个人觉得可以把中间件看作一个第三方的代理。复杂的工作交给它去做。我们只需要拿到想要的结果就行。2.看个例子:1.自定义一个中间件func myselfWare() gin.HandlerFunc { return func(c *gin.Context) { t := time.Now() fmt.Println("自定义的中间件开始执行了.....") // 设置值到上下文中 c.S

2022-03-04 16:26:41 97

原创 【golang】channel讲解

1.什么是channelchannel的中文意思就是通道。在go中channel主要是用于协程之间的通信channel可以在同一时间保证只有一个携程在操作,从而避免了数据的竞争,实现的同步操作。2.channel使用1.在go中,channel需要使用make函数进行内存分配。可以使用make函数,指定缓冲区的大小。ch := make(chan int,6)如果不指定缓冲区,则成为无缓冲区通道。该通道只有sender和receiver都准备好时,才能进行通信。例如:func pu

2022-03-02 17:02:42 1808

原创 【golang】nil切片和空切片的区别

1.什么是空切片空切片就是长度为0的切片例如:var s []ints1 := make([]int,0)2.什么是nil切片nil切片简单来说就是切片的零值。输出:3.区别:1.首先我们要知道切片是有以下3部分组成nil切片:指针并不指向底层的数组,而是指向一个没有实际意义的地址len = 0 且 cap = 0空切片指针指向底层数组的地址len=0,容量有指向的底层数组决定总结nil切片和空切片的区别主要在于指向的地址不同。...

2022-03-02 16:22:08 979

原创 【动态规划】 习题总结

1.整数拆分递归公式dp(n,k) = 1 n =1,k =1dp[n,k] = dp[n,n] n < kdp[n,k] = dp[n,n-1]+1 n =kdp[n,k] = dp[n,k-1] + dp[n-k,k] n > k代码// 题目描述:将正整数n无序拆分成最大数为k的拆分情况。拆分方案不重复 public static int split(int n,int k){ int [][] dp = new int[n

2022-02-20 18:42:25 387 1

原创 redis中RDB和AOF的概念

一.RDB1.是什么rdb是指在指定的时间间隔内将内存中的数据集快照写入磁盘2.如何进行备份【原理】redis会单独创建一个子进程进行持久化。先将数据写入到一个临时文件中,持久化过程结束后,再用这个临时文件替换上次持久划好的文件。3.优势1.适合大规模的数据恢复2.对数据完整性和一致性要求不高更适合使用3.节省磁盘空间4.恢复速度快二.AOF1.是什么1.AOF 【Append Only File】以日志的形式来记录每个写操作【修改操作】。2.将redis执行过的所有写指令记

2022-02-13 17:06:44 354

原创 【JWT】

1.什么是JWTJWT是Json Web Token的缩写,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便从服务器获取资源,也可以增加一些额外的其他业务逻辑所必须的声明信息。2.组成1.头部【header】需要对头部里面的内容进行base64加密,这样才构成第一部分头部一般存放加密的方式和token类型2.载荷 【payload】1.载荷一般是存放有效信息的地方。包含三个部分 1.

2022-01-23 17:44:54 1535

原创 【golang】切片复习

文章目录前言一、什么是切片 ?二、声明切片三、切片赋值1.基于数组或者切片2.使用append()方法四、如何判断一个切片是否为空五、总结前言对于切片的知识有些薄弱,今天复习了一遍。整理为改篇博客一、什么是切片 ?1.个人理解,切片就是动态的数组。官方上面说,切片实现的原理就是在数组底层做了一层封装。2.需要注意的是,切片和数组不同,切片是引用类型二、声明切片var x [] inta := [] int三、切片赋值1.基于数组或者切片 d1 := [3]int{4.

2022-01-15 22:55:02 177

原创 算法打卡【二分查找】

题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1解题代码: // 中间坐标 int mid = (end+start)/2;// 判断是否等于中间值 if(a[mid] == k){ return mid+1; }

2022-01-10 20:06:39 65

原创 【计算机网络】- 网络层 -学习笔记

本章节重点内容1.子网划分(不讲解)2.网络层上数据如何传输3.ip协议一、网络层提供的两种服务1.无连接2.不可靠(尽最大努力交付)二、ip地址1.用途整个互联网是一个单一的、抽象的网络,ip地址就是给互联网上的每一台主机的每一个接口分配一个在全世界范围内唯一的32位标识符。方便我们在网上进行寻址。2.分类ip地址1.定义:所谓分配ip地址就是将ip地址划分为若干个固定类.(A、B、C、D、E)2.格式(二级结构)网络号+主机号3.CIRD1.为什么会有

2021-12-19 14:39:22 910

原创 【计算机网络】-数据链路层-学习笔记

一、本章节讨论重点本章节重要讨论局域网中,分组怎样从一台主机传送到另一台主机。但并经过路由转发。二、本章节主要出发点:1.数据链路层使用的信道类型和协议2.数据链路层的三个基本问题3.以太网的mac层的硬件地址4.网卡、转发器、集线器、网桥、以太网交换机的作用和使用场景。三、信息类型和协议1.点对点信道数据单元:帧如何进行通信:通信步骤:1.A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧2.A封装好后发送给B的数据链路层3.B若收到的帧无差错,则提取IP

2021-12-11 21:47:22 1984

空空如也

空空如也

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

TA关注的人

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