方法的使用
方法的Local-type
今天学习casbin的时候,因为受老板的代码形式的影响,想把最基本的代码封装开来,无意间对方法的使用有了新的理解
本来我以为方法就是函数,随便一个函数,只要在函数名前加个方法类型即可,后来才发现我忽略了一个细节
GPT回答:
在Go语言中,方法的接收者类型必须是在同一个包内定义的命名类型(named type)。这意味着你无法在其他包中定义的类型上直接添加方法。如果你需要为非本地类型添加方法,你可以通过创建一个新的类型来包装它,然后为新类型添加方法。
版本一(最简单)
123456789101112131415161718192021222324func GenCasbin() { e, err := casbin.NewEnforcer("./casbin/model.conf", "./casbin/policy.csv") if err != nil { fmt.Println("NewEnforce err:", err) return } su ...
奖学金系统v4-3
今天做了文件接口迁移,说白了就是复制黏贴
很想记录一下项目的某个大功能的结构
123456789101112131415161718192021222324252627282930313233│ init.go│├─dao│ init.go│ project.go│├─dto│ project.go│├─handler│ project.go│ ├─model│ apply.go│ form.go│ project.go│ review.go│ rule.go│ workflow.go│├─router│ project.go│├─service│ ├─gw│ │ service.go│ ││ └─upload│ upload.go│└─utils utils.go
internal/appproject
dao
写一些数据库的操作和初始化
在这里写的是最底层的代码—基本CRUD的实现
下面有个很巧 ...
Casbin-model
在使用casbin之前,要理解他的model
PERM元模型
单商户模型
多商户模型
PERM元模型
1234567891011[request_definition]r = sub, obj, act[policy_definition]p = sub, obj, act, (eft)[policy_effect]e = some(where (p.eft == allow))[matchers]m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
P [policy_definition] 策略
E [policy_effect] 效果
R [request_definition] 请求
M [matchers] 匹配
sub(subject)=请求实体 obj(object)=访问资源
act(action)=访问方法 (write,r ...
提交规范
常规提交 (conventionalcommits.org)
在git中提交,需要规范操作
feat: 用于新功能或特性的提交
fix: 用于修复 bug 的提交
docs: 用于文档的修改
**chore:**用于对构建过程或者辅助工具的修改
style: 用于代码样式(不影响代码含义的更改,比如空格、格式化等)的提交
refactor: 用于重构代码的提交
test: 用于添加缺失的测试或修正现有的测试的提交
perf: 用于性能优化的提交
build: 用于构建系统或外部依赖的修改
ci: 用于持续集成配置的修改
revert: 用于撤销先前的提交
具体格式:
12345<type>[optional scope]: <description>[optional body][optional footer(s)]
一般来说:
123feat : msg........fix : msg........chore : Update........
奖学金系统v4-2
老板让我手搓游标………………
最后让老板帮我搓,反正我搓不出来……………
游标实现
主要用于分页查询
目前主流的分页模式有两种——基于偏移量的分页和基于游标的分页。
基于偏移量的分页:
1SELECT * FROM metric_type WHERE type_name LIKE %name% ORDERBY id LIMIT offset,limit
客户端需要提供本次请求每页所需的结果数(limit)和偏移量(offset),偏移量通常由服务端通过page和size计算得出。这种分页方式十分简单,只需跳过前面Offset指定的结果数,按需返回Limit个结果数就可以了,它很容易与数据库查询语句对应。
你有100本书,每一页展示10本,那么基于偏移量的分页方式如下。
第一页:Offset:0, Limit:10
第二页:Offset:10, Limit:10
第三页:Offset:20, Limit:10
…
第十页:Offset:90, Limit:10
我们可以写出查询第二页图书的SQL:
1SELECT id, title FROM books ORDER BY id A ...
奖学金系统v4-1
给老板打打小工…………
需求
批量导入项目学生污点
实现要求 :
可以通过excel导入学生的成绩
可以通过学生的Id
可以通过学年-学期-班级导入(未实现)
同时需要实现
导入成绩是批量导入的,且每批学生都要有个batch,可以直接删除某批学生
当学生的id重复时,需要提醒老师是合并还是连接污点
APIfox接口 /project/{id}/user/batch
form-data :
参数名
参数值
说明
file
upload(excel)
上传excel文件
uploadType
id/excel/class
分别对应三种上传形式
year
–
学年
class
–
班级
semester
–
学期
coverType
merge/cover
覆盖/添加
data
[{“staff_id”:”55600”,”taints”:[“a”,”b”]},{“staff_id”:”300”,”taints”:[“a”,”b”]}]
学号+污点切片
Par ...
git
Git 操作
Modified 已修改/未修改
staged 暂存
commited 提交
工作区
暂存区
本地仓库
远程仓库
git bash快捷键
复制–Shift+insert
粘贴–Ctrl+insert
创建仓库1git init
克隆仓库1git clone url
暂存区
添加
123git add . #添加全部git add fileName #添加特定的文件 git add *.type #添加特定的类型文件
删除(未修改)
123git rm --cache fileName #从暂存区中删除git rm --cache -f fileName #强制从暂存区中删除git reset #返回到上一次的暂存状态+也可以撤销提交
删除(已修改)
12git restore --staged fileName #将暂存区的修改重新放回工作区git restore fileName #丢弃工作区的修改
提交至本地仓库12git commit -m "comm ...
redis开篇
Redis是一个key-value的数据库,key一般是String类型,value的类型很多
用途
数据库
缓存系统
消息队列
不要把他看作简单的数据库,而是根据实际应用的需求去使用
对数据库操作redis 有16个数据库,默认使用0号数据库
12# 切换数据库 3 select 3
一些常见的数据库指令
12345# 获取当前数据库的大小DBSIZE # 0 # 若给他输入一个值set name qinDBSIZE # output : 1
123# 查看所有的 key keys * # output name -- 因为上面我set了一个name
1234567# 清空# 清空当前库flushdb#清空所有库flushall
redis 单线程Redis是基于内存操作的,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络的带宽
既然可以使用单线程来实现,就使用了单线程
为什么Redis单线程还这么快
误区1:
>高性能的服务器一定是多线程的
误区2:
> 多线程(CPU上下文会切换)一定比单线程效率高
一般来说速度: CP ...
初试CSS1
[TOC]
CSS的导入方式
内联样式
内部样式表
外部样式表
内联样式 > 内部样式表 > 外部样式表 (优先级)
ID > 类 > 标签
内联样式1<h1 style="color: brown; font: 100px" >这是一个应用了CSS样式的文本</h1>
内部样式表12345678910111213141516171819<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=>, initial-scale=1.0"> <link rel="stylesheet" href="index.css"> <title>Docu ...
Nosql概述
Nosql
结构化的弊端
表中的字段是固定的,业务固定
关系型数据库的查询时间长
有些数据不变更却频繁被访问,消耗大量的系统资源
Nosql-非结构化
非结构化
无关联(表与表之间)
非SQL语句
redis键值型的Nosql数据库,key可以自定义
123---------|------- name | "hyc" age | 20
文档型Document(文档性) : 可以把数据变成JSON的字符串类型,但是再JSON之中包含着更多的数据类型
12345{ id : 2, name: "hyc", age: 20,}
使用JSON格式数据插入,字段约束小
图
Mysql概述
Redis 是什么
Redis (Remote Dictionary Server) ,即远程字典服务
是C语言编写,支持网络,基于内存可持久化的日志型,Key-Value数据库
免费和开源,被人们称之为结构化数据库
Redis 能干嘛
内存存储,持久化(内存是断电即失,持久化很重要)
效率高,可以用于高速缓存
发 ...