千恋*万花

  • 首页
  • 个人简历
  • 文章分类
    • 后端开发
    • 运维
    • 基础知识
    • 笔记
    • 工作运维记录
    • 随笔
    • 未分类文章
  • 管理
    • 后台管理
    • 登出
golang
golang

通过实践 总结 golang defer 的用法

前言 用golang也用了挺长时间了,我对 defer 这个设计还比较满意,而且对其使用也产生了一些依赖,在使用其他编程语言写的入迷的时候,经常写出来 unknow type defer 的操作。 项目中,我用defer,一般是在 io 的时候使用,开启文件后,紧跟一个关闭,现在已经成为我的一种习惯了。 最近面试的时候,被问到了defer一些不常用的用法,虽然我都答出来了,但是答的过程有点曲折。我能把defer的大白话说出来,但是还是缺少总结语言的能力。 所以今天我想把 defer 用法的大白话,用代码让自己记住。…

2023-02-03 0条评论 187点热度 1人点赞 初音萌奈 阅读全文
golang

基于 go-redis 与 Lua 实现简易且高效的分布式锁

分布式锁的应用场景 在分布式业务中,若涉及到共享的资源,未防止多个进程同时访问、处理该资源,那么则需要一个分布式锁 来保证该共享资源在同一时刻只能被一个对象进行处理。 设计理论 为了实现锁互斥能力,则一定涉及到 Redis 的SETNX指令(SET if Not eXist) 锁只能由创建锁的对象解开,所以需要记录锁是由哪个对象创建的,解锁时需要验证锁的所有权 为了防止死锁,第一 需要允许强制解除锁,第二 每个锁必须要有 超时时间 综上,便可以编写出一个锁的定义了 type lock struct { contex…

2023-01-03 0条评论 194点热度 0人点赞 初音萌奈 阅读全文
golang

记 leetcode Q1805 解题思路

题目连接 Q1805 题目详情: 给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123  34 8  34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123"、"34"、"8" 和 "34" 。 返回对 word 完成替换后形成的 不同 整数的数目。 只有当两个整数的 不含前…

2022-12-06 0条评论 465点热度 0人点赞 初音萌奈 阅读全文
golang

深入探讨 Go 多变量赋值

使用go语言时,会经常把一些变量放在同一行来声明、赋值或计算。那么,这种赋值方法到底是以什么样的实现方法来赋值的呢? 先说结论,就两步: 一、先计算等号右侧所有表达式的值,将结果存储临时变量中。 二、将临时变量的值赋给等式左侧的变量。 多个变量一同声明并赋值 a, b := 1, 5 //情况一 c, d := a+b, a-b //情况二 对于情况一来说,很简单,直接按照从左到右的顺序,把1、2两个值赋值给a、b ; -----情况一 相关汇编代码 开始---------- (.\main.go:4) MOVQ …

2021-02-08 1条评论 3209点热度 1人点赞 初音萌奈 阅读全文
golang

Go命令行程序(CLIs)框架——Cobra

什么是 CLIs 命令行界面(英语:Command-Line Interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(character user interface, CUI)。 虽然现在很多操作系统都提供了图形化的操作方式,但是却都保留了命令行界面,甚至有很多系统更加强了这部分功能。例如服务器端常用的Linux系统,目前就连以可视化桌面为主的Windows,也在强化自己命令行操作指令的功…

2021-01-27 0条评论 4349点热度 1人点赞 初音萌奈 阅读全文
gin

Gin框架中使用数据库——Go Gin框架(七)

安装MySQL数据库 MySQL官方链接:https://dev.mysql.com/downloads/mysql/ Debian:sudo apt install mysql-5.7 安装过程:略 Go 安装MySQL驱动 go get "github.com/go-sql-driver/mysql" 在项目中使用MySQL 在go mod模式下,还需要在项目中引用mysql模块 go.mod文件 module MonaGinWeb go 1.15 require ( github.com/gin-gonic/…

2020-10-08 0条评论 3757点热度 0人点赞 初音萌奈 阅读全文
gin

Gin 中间件的编写和使用——Go Gin框架(六)

中间件 在web应用服务中,完整的一个业务处理在技术上包含客户端操作、服务器端处理、返回处理结果给客户端三个步骤。 在实际的业务开发和处理中,会有更负责的业务和需求场景。一个完整的系统可能要包含鉴权认证、权限管理、安全检查、日志记录等多维度的系统支持。 鉴权认证、权限管理、安全检查、日志记录等这些保障和支持系统业务属于全系统的业务,和具体的系统业务没有关联,对于系统中的所有业务都适用。 由此,在业务开发过程中,为了更好的梳理系统架构,可以将上述描述所涉及的一些通用业务单独抽离并进行开发,然后以插件化的形式进行对接。…

2020-10-04 0条评论 4631点热度 0人点赞 初音萌奈 阅读全文
gin

Gin使用路由组分类处理请求——Go Gin框架(五)

路由组功能 在实际项目开发中,均是模块化开发。同一模块的API接口一般会有相同的接口前缀。 例如,对于一个xx管理模块,会有“xx添加”、“xx删除”、“xx修改”、“xx查询”。 一个学生管理模块的API如下: 学生注册:/student/Add 学生删除:/student/Delete 学生修改:/student/Modify 学生查询:/student/Search 路由组 Gin框架为我们提供了路由组功能。 func group(engine *gin.Engine) { userGroup := engi…

2020-10-04 0条评论 2958点热度 0人点赞 初音萌奈 阅读全文
gin

Gin多数据返回请求结果——Go Gin框架(四)

完整的请求 一个完整的请求应该包含请求、处理请求和返回结果三个步骤,在服务器端对请求处理完成之后,应该将结果返回给客户端。 Gin框架中提供了一下返回请求的数据格式 []byte 和 string 之前的实例中,我们都用[]byte来返回数据。 func (ResponseWriter) Write([]byte) (int, error):用于向接收端输出[]byte切片。该方法被定义于官方的http包中 func (ResponseWriter) WriteString(string) (int, error)…

2020-10-03 0条评论 4628点热度 2人点赞 初音萌奈 阅读全文
gin

Gin请求参数绑定与多数据格式处理——Go Gin框架(三)

请求参数绑定 在开发中,我们总会写username := context.PostForm("username")//解析POST类似的功能,每次只能实现对一个数据操作的方法。 Gin框架提供了实体绑定的功能,可以将表单数据与结构体绑定,从而达到简化上诉过程的方法。 用用户注册功能来实践表单实体绑定的操作: type UserRegister struct{ Username string `form:"username" binding:"required"` Password string `form:"pas…

2020-10-03 0条评论 3227点热度 0人点赞 初音萌奈 阅读全文
12

初音萌奈

我是练习时长 一年半 的后端开发程序员
谢谢你参观我的博客!
本网站现已支持IPv6
☞ 个人简历 ☜

分类
  • 后端开发 / 24篇
    • Elasticsearch (ES篇 / 2篇
    • gin / 6篇
    • golang / 12篇
    • lua / 1篇
    • MySQL / 8篇
    • PHP / 1篇
    • PostgreSQL (pgSQL篇 / 1篇
    • Redis / 1篇
  • 基础知识 / 6篇
    • 算法与数据结构 / 5篇
    • 计算机原理 / 1篇
  • 工作运维记录 / 7篇
  • 笔记 / 9篇
  • 运维 / 9篇
    • bash / 3篇
    • Docker / 1篇
    • Kubernetes (k8s篇 / 1篇
    • Linux / 4篇
    • Server / 2篇
    • 开发环境 / 1篇
    • 网络 / 3篇
  • 随笔 / 5篇
    • 微博(字面意思) / 3篇
站点统计
  • 111
  • 8,757
  • 141,488
  • 74,973
  • 0
  • 50
  • 6

COPYRIGHT © 2023 HatsuneMona ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

晋ICP备17007130号-4