04 2023 档案
摘要:这个是前端请求的用户相关接口。 路由:routers/apiRouters.go func ApiRouter(router *gin.Engine) { //会员登录 router.POST("users/login", controllers.UserLogin) //使用JWT对用户的请求进行
阅读全文
摘要:积分管理效果图 变更积分效果图: 会员日志管理效果图 控制器代码:admins/controllers/users.go //积分列表 func SocreList(c *gin.Context) { list := modes.ScoreList(c) c.HTML(http.StatusOK,"
阅读全文
摘要:会员角色管理效果: 添加角色: 会员管理效果: 会员编辑效果: 控制器代码:admins/controller/users.go //角色列表 func UsersCateList(c *gin.Context) { list := modes.UsersCateList(c) c.HTML(htt
阅读全文
摘要:山高万仞,只登一步! 登山的时候,不要老想着山太高太远太难走,这样会产生严重的心理内耗。 只要一步一步的向上走,就能到顶! 有了远大的目标后,不要焦虑,走好每一步即可。
阅读全文
摘要:前言: 文章分类管理,文章管理,文章回收站 正文: 分类管理效果: 添加分类: 文章列表效果: 添加文章效果: 文章回收站效果: 控制器代码:admins/controllers/news.go //文章分类列表 func NewsCateList(c *gin.Context) { list:=m
阅读全文
摘要:前言: 管理员日志管理,添加日志,删除日志。 管理员在后台的每个操作,都记录对应的地址,以及操作参数。 正文: 管理员管理列表页面效果: 控制器代码:controllers/adminLog.go //日志列表 ,带翻页 func AdminLogList(c *gin.Context) { //获
阅读全文
摘要:管理员管理列表效果: 添加管理员效果: 编辑管理员效果: 管理员权限设置: 管理员管理控制器:controllers/admins.go var db = common.DB // 管理员列表 func AdminList(c *gin.Context) { //获取列表 users := mode
阅读全文
摘要:管理后台的栏目管理,及权限设置。 栏目列表效果: 功能:添加栏目,修改栏目,搜索栏目,删除栏目 添加栏目效果: 分类:是左侧菜单里面的大分类。无URL,仅为名称,及分类 菜单:是分类下的具有具体功能的 链接 操作:是某个菜单下的,例如添加,删除,修改 等动作,用户权限判断 控制器:admins/co
阅读全文
摘要:前言: 管理员登录到管理后台后,显示管理员信息,修改管理员密码,退出登录功能 正文: 管理中心显示 个人信息页面: 修改密码页: 文件:admins/controllers/admins.go 管理后台首页控制器 后台首页,退出登录 var db = common.DB //后台首页 func Ad
阅读全文
摘要:控制器文件:admins/controllers/login.go package controllers import ( "github.com/gin-gonic/gin" "github.com/gorilla/sessions" "goadmin/common" "goadmin/mode
阅读全文
摘要:由俭入奢易,由奢入简难! 保持简约的生活,也是一种轻松!
阅读全文
摘要:使用效果: 使用说明: 1、点击图片 或者 点击看不清 换一张,会自动更换。 2、输入错误,也会自动再更换一张。确保安全 验证码文件:common/captcha.go package common import ( "github.com/gin-gonic/gin" "github.com/go
阅读全文
摘要:文件:common/mysql.go 数据库连接文件 package common import ( "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/schema" "log" ) var DB *gorm.DB //全局定义DB var db
阅读全文
摘要:前言: 项目中公用的一些方法,配置,常量等 正文: 文件:common/inc.go package common const TimeTem = "2006-01-02 15:04:05" const AdminSecret = "jO4s4QcGs4B8brP2" //随机秘钥 // 定义一个统
阅读全文
摘要:爬到山顶, 就是为了吃碗素面, 感受不一样的风景!
阅读全文
摘要:这世上两个我 一个举杯邀明月, 一个跪地捡碎银!
阅读全文
摘要:前言: 管理后台中间件主要作用, 登录判断, 获取管理员及权限信息, 记录日志 正文: 文件:admins/middleware/adminMid.go //声明一个接收用户基本信息的结构体 type UserInfo struct { UserName string UserTrueName st
阅读全文
摘要:main.go: func main() { //使用gin框架 1.9 router := gin.Default() //加载管理后台路由 routers.AdminRouter(router) //加载API路由 routers.ApiRouter(router) //没有匹配上路由,走这里
阅读全文
摘要:运行环境 go version:go version go1.19.5 ,framework:gin 1.9 ,mysql版本:5.7 ,redis版本:redis 6.0.6 里面的代码由于是初学go写的,会有瑕疵,还有很多优化空间。仅供参考。 代码在github上面也有,地址是:https://
阅读全文
摘要:流程: 1、main.go 中定义路由login 调用 user.Login方法 2、user.login方法验证用户名,和密码,并生成token返回 3、main.go中定义getUserInfo路由,调用 user.GetUserInfo的方法 4、getUserinfo中调用中间件对用户传过来
阅读全文
摘要:前言: Token 和 Session Session 是一种记录服务器和客户端会话状态的机制,使服务端有状态化,可以记录会话信息。 而 Token 是令牌,访问资源接口(API)时所需要的资源凭证。Token 使服务端无状态化,不会存储会话信息。 正文: Gin JWT 基于JWT的Token认证
阅读全文
摘要:前言: Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。 GORM是golang写的ORM库 网址:https://gorm.io/ 正文
阅读全文
摘要:你讲原则,谁都敬你三分;你有底线,谁都不敢触碰;无论做人,还是做事,太讲情,是对自己的伤害;无情一点,方显真性情
阅读全文
摘要:单文件上传示例: main.go router := router.InitRouter() router.Run() router/router.go var router = gin.Default() func init() { //加载自定义函数 if v, ok := binding.Va
阅读全文
摘要:前言: go验证码演示地址: https://captcha.mojotv.cn/ 正文: 验证码包下载 go version > 1.11 go get -u github.com/mojocn/base64Captcha 验证码展示到页面示例: 使用go net http包显示验证码 impor
阅读全文
摘要:谁欺负你的善良你就要及时回击不能让善良受伤不能让恶人得逞你硬一点,别人才会怕你你强一点,别人才会敬你亮出自己的底线坚持做人的原则
阅读全文
摘要:前言: Context 对象提供了很多内置的响应形式,JSON、HTML、Protobuf 、MsgPack、Yaml 、 String等。它会为每一种形式都单独定制一个渲染器。 Context是Gin最重要的部分。它允许我们在中间件之间 传递变量,管理流程,验证请求的JSON 并 呈现JSON响应
阅读全文
摘要:前言: 中间件 middleware,也是一种处理器。主要用于在多个业务逻辑中间重用代码,例如认证校验,日志处理等。 中间件需要附加在路由上,使用 router.Use() 方法 正文: gin.Default() 初始化路由对象时,会随之附加两个中间件 Logger 和 Recovery gin.
阅读全文
摘要:这个不知道算不算空气缸了。 养的密度有点大, 锦鲤鱼的状态都还可以。 有一条鲫鱼,是去年钓的~_~ 缸是50*30*35的
阅读全文
摘要:随心记录,内容仅供参考! 2023/04/09 gin框架介绍及安装 2023/04/09 gin框架路由router 2023/04/10 gin框架中间件 2023/04/10 Context响应,重定向,自定义函数,Abort 2023/04/12 go验证码的使用 2023/04/12 go
阅读全文
摘要:前言: gin框架中采用的路由库是基于httprouter做的 正文: 需要安装postman 发送请求 各种请求方法: GET(string, ...HandlerFunc) POST(string, ...HandlerFunc) DELETE(string, ...HandlerFunc) P
阅读全文
摘要:前言: Gin 是一个用 Go (Golang) 编写的 web 框架。封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点,它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。 借助框架开发,不仅可以省去很多常用
阅读全文
摘要:必须培养一些爱好来支撑生活的疲惫和琐碎,哪怕是随拍路边的花草,都能让生活充满期待和快乐,用生活治愈生活! 运动,养鱼,写代码!
阅读全文
摘要:又一窝迷你鹦鹉鱼苗起飞啦!!! 就过来拍个照,看得出来鱼爸爸妈妈很紧张。
阅读全文
摘要:运动一上午, 轻松一星期, 划算! 爬到山顶,泡个茶,吹吹风, 抽根烟,拜拜佛,吃碗素面,很惬意的感觉!
阅读全文
摘要:先下载包: go get github.com/bradfitz/gomemcache/memcache window下打开memcache服务: cd C:\Program Files\memcached memcached.exe start 再打开一个cmd窗口 连接memcached tel
阅读全文
摘要:前言: 使用第三方开源的redis库: github.com/gomodule/redigo/redis 需要先安装redis包 go get github.com/gomodule/redigo/redis 正文: window下打开redis服务: 打开cmd命令行窗口 cd C:\Progra
阅读全文
摘要:数据库连接: 使用database/sql包时必须注入(至少)一个数据库驱动。 go get github.com/go-sql-driver/mysql 导入包: import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 通过Init
阅读全文
摘要:君不见高堂明镜悲白发,朝如青丝暮成雪。人生得意须尽欢,莫使金樽空对月。
阅读全文
摘要:前言: 如果两个或者多个 goroutine ,访问某个共享的资源,比如同时对该资源进行读写时,就会处于相互竞争的状态,这就是并发中的资源竞争。 一个工具帮助我们检查是否存在共享资源竞争的问题 go build -race 正文: go语言中多个协程操作一个变量时会出现冲突的问题,这种情况会发生竞态
阅读全文
摘要:前言: 协程的创建和使用,Go语言中使用goroutine非常简单, 只需要在调用函数的时候在前面加上go关键字,就可以为一个函数创建一个goroutine。 正文: 函数创建goroutine语法: go 函数名( 参数列表 ) 函数名:要调用的函数名。 参数列表:调用函数需要传入的参数。 gor
阅读全文
摘要:前言: 进程,线程,协程,并发,并行介绍 正文: 线程,进程介绍: 1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位; 2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线 3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间 4. 调度和切换:线
阅读全文
摘要:钱装在自己口袋里是钱,不论什么理由借钱,不论明天还还是下周还,从口袋里掏出来的那一刻,你就不再有主动权!
阅读全文
摘要:前言: 在一些前后端不分离的Web架构中,我们通常需要在后端将一些数据渲染到HTML文档中,从而实现动态的网页(网页的布局和样式大致一样,但展示的内容并不一样)效果。 正文: 模板文件通常定义为.tmpl和.tpl为后缀(也可以使用其他的后缀.html,.htm) 模板文件中使用{{和}}包裹和标识
阅读全文
摘要:前言: HTTP 协议是无状态的,所以用户的每一次请求都是无状态的, 不知道在整个 Web 操作过程中哪些连接与该用户有关。 应该如何来解决这个问题呢? Web 里面经典的解决方案是 Cookie 和 Session。 正文: cookie 机制是一种客户端机制,把用户数据保存在客户端, 而 Ses
阅读全文
摘要:前言: Go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现。 使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序。 正文: 包的文档地址:https://go-zh.org/pkg/net/http net/http 包 使用说明: 注册路由 h
阅读全文
摘要:如果一个人教你赚钱,无非就三个目的第一,他想赚你的钱;第二,他想让你帮他赚钱;第三,他想让你来填坑
阅读全文
摘要:清明时节雨纷纷, 路上行人欲断魂, 借问酒家何处有? 牧童遥指杏花村。
阅读全文
摘要:前言: 接口只有方法,并且方法里没有方法体,没有变量 接口中每个方法都要被一个类型实现,那么该类型就实现了该接口 接口定义了某个类型(对象)必须具备的功能,接口里面的方法是该类型最基本的功能,所以需要都实现。 那么实现接口后,直接实例化对象调用接口即可。 正文: 接口命名: 接口类型名,命名时一般在
阅读全文
摘要:数组定义: 固定长度,只能有一种数据类型 数组必须指定长度,或使用...通过编译器自动识别长度 数组定义形式: 1、 var users [3]string users = [3]string{"liudehua", "guofucheng", "liming"} 2、 var users = [3
阅读全文
摘要:定义时间模板: const TimeTem = "2006-01-02 15:04:05" //Format里必须用“2006-01-02 15:04:05” 表示24小时时间制显示时间 //Format里必须用“2006-01-02 03:04:05” 表示12小时时间制显示时间 //打印当前时间
阅读全文
摘要:20230403 linux压缩命令 tar,zip,gzip的使用
阅读全文
摘要:前言: tar ,zip,gzip 命令的使用 正文: 使用tar命令 压缩 -- 将 home 目录压缩为 myhome.tar.gz 压缩包 tar -czf myhome.tar.gz /home 使用tar命令解压缩 -- 将 myhome.tar.gz 解压到/home/test 目录 t
阅读全文
摘要:前言: 包是多个 Go 源码的集合,是一种高级的代码复用方案。 Go语言中为我们提供了很多内置包,如 fmt、os、io,strconv,strings 等 Go 语言的入口 main() 函数所在的包(package)叫 main。 main 包想要引用别的代码,必须同样以包的方式进行引用。 go
阅读全文
摘要:前言: 结构体是go中对象操作中用的最多的类型。 json是作为数据交换最方便的类型 两个类型怎么做转换呢? 正文: 结构体的命名和成员命名必须遵循第一个字母大写,否则json库将结构体或成员作为私有的,进行忽略 json库文档: https://go-zh.org/pkg/encoding/jso
阅读全文
摘要:前言: Go 语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。 通过结构体的方式来实现了面向对象 ,去除了传统的oop语法,继承,重载,构造,析构,隐藏this的特性, 仍然有面向对象三大特性,实现和面向对象方法有所不同,没有extends关键字 , 结构体的内嵌配合接口比面向对象具有
阅读全文
摘要:前言: defer 语句会将其后面跟随的语句进行延迟处理, 在return前,将延迟处理的语句按 defer 的逆序进行执行 正文: defer 实例1: fmt.Println("hello") defer fmt.Println("a") defer fmt.Println("b") defer
阅读全文
摘要:前言: 函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段, 可以提高应用的模块性和代码的重复利用率。 正文: 函数定义语法: func 函数名(形式参数列表)(返回值列表){ 函数体 } 函数定义示例1: func getSum(a int, b int) int { return a
阅读全文
摘要:万般算计皆下策,唯有真诚最自然。心若向阳万事顺,积德行善获安良!
阅读全文