10 2022 档案
摘要:Innodb引擎里面的锁 Lock和Latch lock和latch是两种不一样的东西,在mysql里面都有使用,lock锁的是事务,latch锁的是线程间的共享数据。 锁的分类 锁最基础的分类就是共享锁和排它锁了 共享锁:S锁,可理解为读锁排它锁:X锁,可理解为死锁 他们互相间的阻塞和读写锁是一样
阅读全文
摘要:go-zero 开始学习go-zero咯 https://github.com/Mikaelemmmm/go-zero-looklook 环境配置 https://github.com/Mikaelemmmm/go-zero-looklook/blob/main/deploy/script/genc
阅读全文
摘要:WebSocket WebSocket(ws)也可以称之为一种协议,提供给我们基于TCP之上的,能够让服务器和客户端互相发送信息的这么一种协议。 why not http 最开始我其实没有搞清楚http和ws的区别,也没有搞懂tcp,但是我发现了一件事,http的请求都是单次的,随之伴随着一个回复。
阅读全文
摘要:redo log redo log所做的事情就是在重启或者宕机以后,恢复到之前的正常状态。 其中各种配置的设定也是有一定学问的。 redolog的大小设定 它不能设置的太大,因为每次遍历一个大文件也是很耗费时间的 同时也不能设置的很小,因为当redolog不够用的时候,就会触发checkpoint进
阅读全文
摘要:记录一下平时使用GORM遇到的好玩的特性 Preload 在Preload中是可以使用函数去筛选预加载的东西的 tx := DB.Model(new(SubmitBasic)).Preload("ProblemBasic", func(db *gorm.DB) *gorm.DB { return d
阅读全文
摘要:平时使用的Go包积累 数据库相关 要使用redis去做多列的排序真的比较困难,这里使用ali提供的TairZset可以做到多列排序 https://github.com/alibaba/TairZset Go基础数据结构 https://github.com/emirpasic/gods 协程池 a
阅读全文
摘要:JWT JWT(JSON WEB TOKEN) 说白了也就是一种token罢了,但是它由于不用任何其他包含状态的信息,无状态的jwt轻量,也符合restful的风格。 最最最简单的JWT原理 JWT分为三部分 从上面最简单的原理可以得知,JWT的组成应该分成了三部分,也就是用这三部分按.拼接而成,8
阅读全文
摘要:OJ项目环境搭建 数据库 建库: problem,user,submit,category /* Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL Source Server Vers
阅读全文
摘要:Innodb文件系统 不管数据库再怎么牛掰,最后它一定也是落到了文件当中,但也不仅仅有数据库文件,在Innodb中有各种文件去支撑它的功能实现 参数文件 这个文件当然很重要了,这决定了我们启动数据库时的各种参数配置 日志文件 错误日志 错误日志对Mysql的启动、运行、关闭过程进行了记录,记录了SQ
阅读全文
摘要:Gin 都说学一门技术,先用就完事了,所以我也是这样想的。 获取Gin go get github.com/gin-gonic/gin Gin是支持RESTFUL风格的请求的 直接上实例 package main import "github.com/gin-gonic/gin" func main
阅读全文
摘要:IO模型个人理解 目前经常使用并了解到的IO模型有,BIO(同步阻塞IO),NIO(同步非阻塞),AIO(异步非阻塞),多路复用IO,使用很多但感觉了解不深,所以单独一章来学习一下。 BIO 阻塞IO,这个阻塞指的是阻塞住后面还要用IO的人,同步指的是我要等着IO执行完我才执行后面的动作。 NIO
阅读全文
摘要:Innodb特性 两次写 两次写是刷新进磁盘的时候,先1MB 1MB的刷新到DoubleWriter里面,再刷新到db磁盘中,这样做的目的是为了保证持久性 插入缓冲 这个特性是对于二次索引而言,并不会一下子把数据插入,而是会等一下,先插入插入缓冲中。插入缓冲的数据结构是B+树 AIO Innodb的
阅读全文
摘要:Go中的异常 Go异常笼统的分为两种:Panic和Error 一般情况下,我们都要避免去使用Panic,使用Error并输出结果才是我们想要的 装饰器模式处理Error http服务器hanlderFunc 其中要用到一个handler函数,我们觉得不能就暴力的返回系统自身的错误出去,所以进行装饰器
阅读全文
摘要:玩转TCP 目前已经有了Netty基础,正在学习Go的net包,以此出发进行TCP的学习。 沾包和半包 当不存在任何的处理方式的时候 一份数据可能会超出MSS,那这样可能就会超出我们的一个包的范围,那就会导致半包的出现。 一份数据太小了,所以TCP没想着直接给它传出去,性价比太低,所以和其他的一起传
阅读全文
摘要:缓冲池 缓存这个东西是在开发当中使用特别多的东西,理解他也特别重要 虽然我们现在工业开发都是使用的第三方的缓存如redis,但是Mysql的缓存也是比较重要的东西。 如果出现了update,redis无法解决要到Mysql里去改,那就可能会命中Mysql的缓存,这个时候就能帮上大忙。 对于这些在缓存
阅读全文
摘要:反射 反射常用于各种框架类当中,它可以做到十分优雅的帮我们读取值、设置值 Go语言当中感觉很多反射的工具类,比如Java中的hutool,并没有很好的支持 我总结下来反射可以分为两块,一块是TypeOf,一块是ValueOf. TypeOf可以做到获取类型,名字,别名等,ValueOf用来获取值,设
阅读全文
摘要:Docker的基本使用 Docker的使用个人觉得就是有便捷性和隔离性,它十分便捷的给你布置出了一个你想要的环境,并且多个相同环境的不同版本之间可以做到隔离,就可以无缝切换。 Docker基本使用 docker pull nginx #这一步是从远程仓库中拉取到nginx 现在已经可以在deskto
阅读全文
摘要:虽然自己有一些docker基础,但一堆东西很难在租的服务器里面部署。所以尝试在win下部署一下docker,也算是打破舒适圈了...提高一下自己的动手能力,感觉做云原生这块离不开docker。 1.下载DockerDesktop https://www.docker.com/products/doc
阅读全文
摘要:Mysql的内部结构 总览Mysql,真的是干了很多事情。而这些事情肯定是要有线程去做的,那为了提高CPU的利用率,多线程再所难免,Innodb也在一次次的更新中把多线程处理得更加完善。如今的多线程分为以下的情况 Master Thread 其实我甚至可以认为,最早的Innodb肯定是单线程的,那就
阅读全文
摘要:IO IO应该是在我们的编程中一直存在的一个东西。理解好IO也是重中之重。自己总是忘记了各种IO的定义,在这里给自己提个醒,自己后续也慢慢补充 AIO AIO是一个比较特殊的东西,异步非阻塞IO,用粗暴的话来理解,就是对于每一个IO流的处理,它会分派一个线程去照看,哪个ok了就执行哪个,不必等待不必
阅读全文
摘要:理解Go的接口 在Go中其实更好理解接口的定义,接口就是对一类结构体的规范,属于这个接口的结构体都实现了一些方法 但是在Go中其实是一种隐式的方法,并没有像Java一样用implement的方法去实现一个接口 只要你实现了一个接口的所有方法,那么你就实现了这个接口,其实某种程度上也是Go多态的体现
阅读全文
摘要:学习Go基础之后的一些重要注意事项 Slice 切片可以理解为三个指针维护下的数组 ptr, len, cap var arr = [5]int // 标准数组,标准数组直接可以==比较,切片只是个引用,是不能直接比较的 var b = []int{} // 这是已经进行了初始化的,它不等于nil
阅读全文
