Browse Source

3.30提交笔记

zhouxinzhong/feature-20260327150147-学习笔记
zhouxinzhong 2 weeks ago
parent
commit
1089adc0d3
  1. BIN
      周新忠学习笔记/3.30/1.jpg
  2. BIN
      周新忠学习笔记/3.30/2.jpg
  3. BIN
      周新忠学习笔记/3.30/3.jpg
  4. BIN
      周新忠学习笔记/3.30/4.jpg
  5. BIN
      周新忠学习笔记/3.30/5.jpg
  6. BIN
      周新忠学习笔记/3.30/6.jpg
  7. 145
      周新忠学习笔记/3.30/周新忠3.30笔记.md

BIN
周新忠学习笔记/3.30/1.jpg

After

Width: 1080  |  Height: 1920  |  Size: 1.3 MiB

BIN
周新忠学习笔记/3.30/2.jpg

After

Width: 1080  |  Height: 1920  |  Size: 1.2 MiB

BIN
周新忠学习笔记/3.30/3.jpg

After

Width: 1080  |  Height: 1920  |  Size: 1.2 MiB

BIN
周新忠学习笔记/3.30/4.jpg

After

Width: 1080  |  Height: 1920  |  Size: 1.3 MiB

BIN
周新忠学习笔记/3.30/5.jpg

After

Width: 1080  |  Height: 1920  |  Size: 1.3 MiB

BIN
周新忠学习笔记/3.30/6.jpg

After

Width: 1080  |  Height: 1920  |  Size: 1.3 MiB

145
周新忠学习笔记/3.30/周新忠3.30笔记.md

@ -0,0 +1,145 @@
# 技术部分
### 手动编写SQL的方法:
g.DB().Query(ctx,sql,g.Array{}) //查询sql
g.DB().Exec(ctx,sql,g.Array{}) //修改的sql
### Dao代码生成
config 中需要配置:
gfcli:
gen:
dao:
link:
tables:
执行gf gen dao命令 //即逆向工程
或直接执行gf gen dao -l "link" -t "tables" 可不用改配置
生成代码:
entity包 数据库表对应结构体
do包 经过包装的结构体,与entity区别是普通字段类型为interface{}而不是基本类型,可用来区分空值和空指针
dao包 直接隶属dao包的go文件写自定义业务代码,隶属于internal包的go文件用来存储框架预设代码(再次执行gen命令会被覆盖)
### 级联查询
#### 一对一关系
结构体中添加字段: Struct *Struct `orm:"with:id=s_id"` //标签指定关联规则
查询时使用model.With(entity.Struct{})设置级联的表
#### 一对多关系
结构体中添加字段: Structs []*Struct `orm:"with:id=s_id"` //标签指定关联规则
#### 多级级联
直接在With()中添加多个结构体就行
### Service和Logic层
根据logic包生成service接口:gf gen service
#### service
组成部分:
接口
type IExample interface{ //命名以I开头
定义业务函数
}
定义接口变量
var localExample() IExample //私有化防止外部修改
定义获取接口方法
func Example () IExample{
if localExample==nil{
panic(".....")
}
return localExample
}
定义注册方法
func RegisterExample(i IExample){
localExample=i //用接口实现给接口变量赋值
}
#### Logic层
定义结构体
type sExample struct{} //以s开头命名
初始化方法中注册
func init(){
service.RegisterExample(&sExample{})
}
实现service的接口中的业务方法
#### 初始化接口
在logic.go中统一import logic,然后再在main.go 中import一次logic.go 实现单例初始化服务接口
### 模板输出
1. req.Response.Writef() //其实就是write套了层Sprintf
2. req.Response.WriteTplContent(string,g.Map{}) //此法是在string中预留{{}}占位符,用g.Map中的value替换占位符
3. req.Response.WriteTpl(path string, g.Map{}) //此法与上一个区别是第一个参数是HTML文件路径,在文件路径中可以预留占位符进行替换,形式类似于JSP或Thymeleaf
4. 模板中的流程控制语句:
条件判断
{{if [compare] variable1 variable2}}
{{else}}
{{end}}
循环遍历切片
{{range.slice}}
{{end}}
循环遍历map
{{range $key,$value := .map}}
{{end}}
### 文件上传
file:=req.GetUploadFile("name")
规范路由写法:
属性: File *ghttp.UploadFile `p:"name"`
全局配置文件大小限制:
config文件中
server:
clientMaxBodySize: ""
局部配置文件大小限制:
标签:v:"max-size: xxx MB"
### 文件下载
req.Response.ServerFile("/path") // 图片会显示在前端而不主动下载
req.Response.ServerFileDownload("/path","name") //无论是不是图片都会立刻开始下载
### Cookie和Session
req.Cookie.Set("key","value")
req.Cookie.SetCookie// 有多项设置,自由度较高
req.Cookie.Remove("key") //移除cookie
req.Session.Set("key","value")
req.Session.Remove("key")
### 时间工具
gtime.Now() Date() DateTime() New() Format() TimeStamp()....
### 随机工具
grand.Intn() grand.N() grand.S() grand.Letters().....
### 中间件
固定签名格式:
func 函数名 (r *ghttp.Request){
前置中间件业务逻辑
r.Middleware.Next()
后置中间件业务逻辑
}
挂载方法:
1.全局中间件 2.分组路由中间件
# 业务部分
## 超级云脑-云脑探秘 功能总结
首先是可以根据股票代码或名称搜索股票
#### 股票估值
搜索出具体的股票后,显示当前股票估值和上一收盘日的基本情况
#### 安全级别
显示六色罗盘,分析支撑和压力情况,据此显示风险分级
#### 压力支撑
显示支撑位和压力位,根据支撑压力数据显示简短的总结
#### 趋势研判
显示K线图,并总结趋势
#### 庄家成本
显示筹码模型,根据筹码模型分析陈本价格
#### 情绪价值
对该支股票进行简短的总结陈述
Loading…
Cancel
Save