摘要: 查了一圈都没有找到建表时添加备注信息的方法,查看gorm文档后发现,gorm确实没有提供设置表备注的方法 但是在文档里面找到这个,直接改改就能用了 //检查表是否存在 if !domain.DB().Migrator().HasTable(db.M) { err = domain.DB().Set( 阅读全文
posted @ 2022-12-12 18:17 安心晨 阅读(700) 评论(0) 推荐(0) 编辑
摘要: 正常情况下在使用gorm做修改操作时,会使用omit过滤一些字段,比如上图中修改的时候就不应该修改创建时间和创建人字段的值。 关键点在于上图如果omit中没有增加id字段,会造成gorm的全局查询条件问题, 简单来讲在下次查询的时候如果查询id=1的数据时,gorm会自动把上图中的查询条件拼接上去 阅读全文
posted @ 2022-11-15 18:16 安心晨 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 使用gorm自动生成数据的时候发现结构体字段为int时,数据库字段类型变成了bigint。 只需要把结构体字段类型int改为int32就可以了 下图为gorm源码对于字段类型的处理 每个字段都会有一个field结构来记录字段的一些属性。生成sql语句时,会通过该结构体来用作生成sql语句的一个判断依 阅读全文
posted @ 2022-10-26 15:44 安心晨 阅读(681) 评论(0) 推荐(0) 编辑
摘要: 原始sqlselect phone,Replace(phone,SUBSTR(phone,4,4),'****') from userswhere phone in( '15115111641','17395081916','15391826880','13576717250') 查询结果 原始数据 阅读全文
posted @ 2022-06-24 11:58 安心晨 阅读(592) 评论(0) 推荐(0) 编辑
摘要: 经过使用移动已经有了195号码段 增加了195号码段验证 //VerifyPhone func VerifyPhone(phone string) bool { regular := "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9 阅读全文
posted @ 2022-03-15 11:54 安心晨 阅读(411) 评论(0) 推荐(0) 编辑
摘要: context包定义了 Context 接口,Context 的具体实现包括 4 个方法,分别是Deadline、Done、Err 和 Value,如下所示: 下面来具体解释下这 4 个方法。 Deadline 方法会返回这个 Context 被取消的截止日期。如果没有设置截止日期,ok 的值是 f 阅读全文
posted @ 2021-10-08 12:05 安心晨 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 获取锁的机制 如果当前没有goroutine获取到锁则直接获取 如果锁已经被获取,则goroutine会被休眠加入一个先进先出的队列 解锁的机制 1.尝试解锁,如果本来就没有加锁,则抛异常 2.正常解锁后,通过信号量的方式唤醒等待中的goroutine,开始争抢锁(因为新的goroutine正在cp 阅读全文
posted @ 2021-09-28 16:53 安心晨 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 1.byte[] 切片转uint32 使用binary.BigEndian.Uint32方法转换 buf := make([]byte, 8096) binary.BigEndian.Uint32(buf[:4]) 并发使用建议 1. 共享资源的并发访问使用传统并发原语(如锁,atomic); 2. 阅读全文
posted @ 2021-08-26 18:48 安心晨 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 基本介绍 1.反射可以在运行时动态获取变量的各种信息,比如变量的类型(type),类别(kind) 2.如果是结构体变量还可以获取到结构本身的信息(包括字段和方法) 3.通过反射可以修改变量的值,可以调用关联的方法 4.使用反射需要引入reflect包 reflect包介绍 import "refl 阅读全文
posted @ 2021-08-24 16:26 安心晨 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 前言:要了解协程和管道首先得了解以下四个概念 进程和线程简单说明 1.进程就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位 2.线程是进程的一个执行实例,是程序执行的最小单元,它是比进程更小的独立运行的基本单位 3.一个进程可以创建销毁多个线程,同一个进程的多个线程可以并发执行 阅读全文
posted @ 2021-08-23 23:08 安心晨 阅读(452) 评论(0) 推荐(0) 编辑