- 博客(76)
- 资源 (3)
- 收藏
- 关注
原创 go - grpc入门
proto文件是符合Protocol Buffers语言规范的数据交换协议文件,就像以前WebService定义服务时使用的XML文件。这个协议很简单,有个名字为Hello的服务,提供一个名字为Say的rpc方法,这个方法有输入输出,输入信息中有一个名为Name的参数,输出信息中有一个名为Message的返回值。
2025-03-27 15:12:36
323
原创 grpc工具使用
访问,根据系统型号,下载对应版本的protoc工具,并将下载到的可执行文件存放于$path中安装完成后,可通过指令校验是否安装成功。
2025-03-05 15:07:07
498
原创 mysql - 为什么MySQL不建议使用NULL作为列默认值?
由于Redundant较少使用, 且Dynamic和Compressed是基于Compact的, 故这里以Compact为例。综上所述, 不建议允许列为null, 可使用其他默认值(如空字符串, 0等)如, 有7个字段允许为null, 则有7个。
2024-05-23 19:00:37
684
2
原创 浅谈mysql中的null - 能不能用索引
照旧,在开始前,先附上本次试验的ddl, 然后插入数据,随机抽取几条幸运数据的name设为null。
2024-05-23 11:14:25
1212
原创 mysql - 索引原理
文中的查询, 以该表结构为例在没有索引的情况下, 如果需要查询id为1的数据, 需要进行全表扫描。而通过索引, 查询id为1的数据, 可通过索引快速定位到该数据的地址, 从而快速查询到该数据。
2024-05-22 17:47:48
1012
原创 mysql - explain执行计划
explain是mysql中一关键字,用于, 模拟执行器执行sql查询语句, 从而分析sql语句或表结构的性能瓶颈或优化方向。
2024-05-20 14:56:35
1118
原创 mysql - DDL、DML和DQL
(Data Define Languge):数据定义语言, 用于的创建、修改、删除(Data Manipulate Language):数据操纵语言, 用于, 并检查数据完整性(Data Query Language):数据查询语言, 用来。
2024-05-17 10:18:09
458
1
原创 浅谈内存泄漏
在JavaScript中,内存泄漏是指应用程序在不再需要使用某块内存时仍然保持对其的引用,导致内存不能被垃圾回收机制释放,最终导致内存占用过高,性能下降。
2024-05-15 17:47:21
419
原创 javascript - 浅谈var let const
在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量使用var声明的变量存在变量提升的情况使用var,可对一个变量进行多次声明,后面声明的变量会覆盖前面的变量声明在函数中使用使用var声明变量时候,该变量是局部的,否则是全局的。
2024-05-12 12:23:20
375
原创 vue3.0+echarts, 图正常渲染, 但tooltip不显示
使用vue3+echarts画统计图时, 图能正常显示, 但配置的tooltip不显示。原因: echarts实例赋值给ref响应式Proxy对象,导致tooltip不显示。解决办法:echarts实例赋值给普通变量。鼠标悬浮, tooltip不显示。
2022-09-30 14:45:03
3457
2
原创 github access token
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
2022-08-03 11:31:56
3816
原创 go - cron定时任务
本文重点gin结合cron实现定时任务定时任务cron执行不成功?定时任务原理(todo, 有时间再补充)gin结合cron实现定时任务传送门cron代码库cron文档V3cron文档简单示例话不多说, 先上一个最简单, 开箱即用的例子相关依赖 go get github.com/robfig/cron/v3@v3.0.0示例代码package mainimport ( "fmt" "github.com/gin-gonic/gin" "github.com/rob
2022-05-26 18:16:03
3273
原创 qq成员一览
前期准备qq安装自行访问qq官网下载并安装qqpython环境安装访问python官网选择自己心仪的版本进行下载懒得找的话, 可访问同版本python传送门: 3.7.9版本ps: 由于临时使用, 这里不浪费篇幅解释python环境变量的配置安装时注意勾选pip安装一般默认勾选上了安装路径不建议安装在c盘, 安装时建议调整路径为心仪的路径代码依赖包下载打开cmd, 逐行输入下列内容快捷键: win+r, 输入"cmd", 回车pip install seleniu
2022-04-15 18:08:31
1008
原创 golang time类型常见问题解决方案
前言背景大概如下:项目框架为gin, 数据库orm为gorm, 一个比较简单的model, 包含某个time类型字段(如: CreateTime), 返回数据给前端时, 返回的格式为2022-01-17T00:00:00+08:00, 这种数据结构, 返回给前端时, 前端如果直接用来渲染, 这种格式的时间的可读性不高, 故需要转换成用户较好理解的格式, 如: 2022-01-17 00:00:00解决方案// 示例modeltype demo struct { Id int
2022-03-31 17:50:17
3568
1
原创 go - 异常处理&错误堆栈获取
背景最近调整gin项目框架的时候, 想起, 框架的异常处理还没完善, 目前只是把简单的error信息打印到日志里优化优化前package middlewareimport ( "net/http" "github.com/gin-gonic/gin")func HandleException() gin.HandlerFunc { return func(ctx *gin.Context) { defer func() { if err := recover(); err
2022-03-16 11:46:49
3127
原创 排序算法-随笔
排序算法排序算法时间复杂度 (平均)时间复杂度 (最好)时间复杂度 (最坏)空间复杂度稳定性排序方式冒泡排序O( n2 )O( n )O( n2 )O( 1 )稳定In-place插入排序O( n2 )O( n )O( n2 )O( 1 )稳定In-place选择排序O( n2 )O( n2 )O( n2 )O( 1 )不稳定In-place希尔排序O( nlogn )O( n2 )O( n2 )O( 1 )不
2022-02-17 18:36:18
368
原创 数据结构(树)-随笔
基础概念树存储的是具有“一对多”关系的数据元素的集合树的深度(高度)从一棵树的树根开始,树根所在层为第一层,根的孩子结点所在的层为第二层,依次类推, 一棵树的深度(高度)是树中结点所在的最大的层次兄弟节点都有相同的父结点的子结点二叉树满足以下两个条件的树:本身是有序树;树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2;拥有的子树数(结点有多少分支)称为结点的度(Degree)二叉树的性质:二叉树中,第 n 层最多有 2n-1 个结点。如果二叉树的深度为
2022-02-08 18:24:26
2310
原创 mysql - 浅谈mysql的MyISAM 和 InnoDB异同
存储结构MyISAM:存储成三个文件。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。InnoDB:所有表保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表大小只受限于操作系统文件的大小,一般为2GB。存储空间MyISAM:可被压缩,存储空间较小。支持三种不同的存储格式:静态表、动态表、压缩表。InnoDB:需要更多内存和存储,会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。事..
2022-01-27 15:11:35
288
原创 api接口规范
协议接口的通信协议, 尽量使用https协议, 提高数据传输的安全性路由统一前缀未使用版本控制的项目, 路由统一使用/api开头, 方便在nginx反向代理时, 用/api将接口请求转发到后端服务的服务器版本控制将api的版本号放在url内, 如: domain/api/v{n}版本号使用整形表示大版本功能接口, 使用浮点型表示补充功能版本接口为了避免版本混乱, 建议最多保留3个版本如果使用了版本控制, 可以无需使用/api前缀, nginx反向代理只需要用正则匹配/v\d+/即可匹配路
2021-12-15 16:07:14
3169
原创 浅谈消息队列 (半成品, 待完善)
背景作为一个有点年纪的开发, 消息队列, 竟然还是我的知识盲区(不全盲, 盲一半吧), 主要是之前项目基本用不上, 或者对应模块是其他同事负责的, 秉承着不懂就学的精神, 开始了几个晚上的自学相关链接github上的官方教程github上的官方教程(基于go)官网教程基本思想核心思想: 异步, 解耦, 削峰, 生活中比较熟悉常见的场景, 点外卖算其中一个吧, 就取今晚点的m记做例子吧未接受任何广告合作, 欢迎m记来撩商城取用户从下单到订单结算成功这个流程, 简单分析一下吧异步简单支
2021-12-14 19:59:21
251
原创 [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available
背景最近做前端项目的时候, 有些比较特殊的业务, 需要用到template 模板, 但是, 当我把template 模板写好之后, 运行不报错, 访问页面时, 报一下内容:[Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available原因分析vue默认配置下, 使用的是不包含运行时编译器的 Vue 构建版本, 即 Runtime only, 如果你需要在客户端编
2021-11-08 19:44:41
562
原创 go - gorm使用过程中遇到的问题和解决
时间默认值当使用的gorm为 "github.com/jinzhu/gorm"时, 可通过以下方式, 实现插入数据前赋予默认值db.Callback().Create().Replace("gorm:update_time_stamp", updateTimeStampWhileCreate)func updateTimeStampWhileCreate(scope *gorm.Scope) { if !scope.HasError() { nowTime := time.Now() if
2021-10-21 15:09:41
3953
2
原创 使用realize实现gin框架的热更新
背景使用gin框架编写项目,每次修改完后,想验证效果时,总是忘了重启服务,导致验收时总是质疑人生据闻beego是有热更新的,不过这里先不展开讨论预研于是寻思着是否有现成的办法实现了这个功能呢,毕竟,按理来说,应该不止我一个遇到这个问题,经过若干年的发展,go应该也成熟起来了,至少,应该有不少前人造了类似的轮子了。百度了一下,说有若干种方法,其中,在github上star比较多的,应数 realize 和 gin 了(这里的gin不是gin框架),都看了一下两个的源码,虽然都已经有些年份没有维护
2021-10-11 20:17:10
1551
原创 go - gin快速入门指引
相关链接gin文档gin源码地址gin最最最简单的一个demo创建一个test.go文件,并键入以下内容:package mainimport "github.com/gin-gonic/gin"func main() { r := gin.Default() r.GET("/test", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "success", }) }) r.Run() // 监听并在 0.
2021-09-28 16:59:44
916
原创 chrome插件vue-devtools安装
什么是vue-devtools?vue-devtools是一款基于chrome游览器的插件,用于调试vue应用,这可以极大地提高我们的调试效率.怎么安装?chrome应用商城直接搜索安装,但是,貌似这个不太可行源码编译和安装源码编译和安装访问vue-devtools的github地址, 在右侧的Releases处可以看到,当前最新稳定版本为5.3.4当然了, 可以无需访问查看,直接使用5.3.4版本也行拉取5.3.4版本的源码 git clone -b v5.3.4 https
2021-09-27 10:49:25
408
原创 浅谈gin
内容概览分析几种常见的启动http服务的方式ListenAndServe剖析启动gin时的warning是哪里输出的gin.Default()和gin.New()的主要做的是什么gin封装了什么,基本思路是怎样的(todo: 还没整理)1. 分析几种常见的启动http服务的方式引入对应的包go get -u github.com/gin-gonic/gin几种启动http服务的方法方式一:func main() { router := gin.Default() router.
2021-09-24 19:43:04
331
原创 奇奇怪怪的问题的解决方案
set: Illegal option -问题描述在linux执行sh文件时,报错set: line 3: illegal option -解决方案把文件内的\r去掉sed -i 's/\r$//' filename
2021-09-24 14:57:22
926
原创 go指令和mod文件解析
前言go开发前期准备go常用指令go getgo get用于拉取新的依赖(以下例子内的[module-path]是依赖的地址)go get [module-path]@latest 拉取最新的版本(优先择取 tag)go get [module-path]@master 拉取 master 分支的最新 commitgo get [module-path]@v1.1.1 拉取 tag 为 v1.1.1 的 commitgo get [module-path]@123abc 拉取 hash 为
2021-09-18 23:27:25
961
原创 go开发前期准备
安装本文主要介绍的是windows环境配置.访问: https://golang.org/dl/ 或 https://golang.google.cn/dl/下载安装包 windows下载msi文件即可。安装完随便运行一段go代码,运行正常即可package mainimport "fmt"func main() { fmt.Println("Hello, World!")}环境配置假设go的安装路径是: D:\Gogo项目的开发路径是: E:\GoProject环境变量
2021-09-17 22:45:32
192
原创 svn迁移
结论迁移前后,svn仓库id不变过程旧代码库备份创建一个svn仓库 svnadmin create D:\Repositories\testSvnRepo检出目录 svn checkout 【svn服务路径】 【本地目录全路径】在检出的目录,查看这个svn仓库的信息(主要查看svn的uuid)svn info这里代码块的id为lqqsgdsb-1234-1a3e-96ca-d0117d906e9b备份这个svn仓库 svnadmin dump D:\Repositorie
2021-08-25 16:50:53
1816
原创 浅谈redis持久化
redis持久化前面说过, Redis是一个基于内存的非关系型的数据库,数据保存在内存中,但是内存中的数据也容易发生丢失。Redis提供了持久化的机制,分别是 RDB(Redis DataBase) 和 AOF(Append Only File) 。RDBRDB持久化就是将当前进程的数据以生成快照的形式持久化到磁盘中。RDB持久化的时候会单独fork一个子进程来进行持久化,因此RDB持久化有如下特点:开机恢复数据快。写入持久化文件快。RDB的持久化也是Redis默认的持久化机制,
2021-08-07 17:39:12
136
原创 Redis的五种数据类型底层实现原理
前言Redis的五种数据类型底层实现原理章节摘抄自: Redis的五种数据类型底层实现原理是什么正文Redis是一个Key-Value型的内存数据库, 它所有的key都是字符串, 而value常见的数据类型有五种:string, list, set, zset, hash。Redis的这些数据结构, 在底层都是使用redisObject来进行表示。redisObject中有三个重要的属性, 分别是type、 encoding 和 ptr。type : 保存的value的类型encoding :
2021-08-04 15:01:55
615
djangoDockerCompose.zip
2020-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人