diff --git a/周新忠学习笔记/3.30/1.jpg b/周新忠学习笔记/3.30/1.jpg new file mode 100644 index 0000000..4ad5fbe Binary files /dev/null and b/周新忠学习笔记/3.30/1.jpg differ diff --git a/周新忠学习笔记/3.30/2.jpg b/周新忠学习笔记/3.30/2.jpg new file mode 100644 index 0000000..de7837d Binary files /dev/null and b/周新忠学习笔记/3.30/2.jpg differ diff --git a/周新忠学习笔记/3.30/3.jpg b/周新忠学习笔记/3.30/3.jpg new file mode 100644 index 0000000..3b0ba74 Binary files /dev/null and b/周新忠学习笔记/3.30/3.jpg differ diff --git a/周新忠学习笔记/3.30/4.jpg b/周新忠学习笔记/3.30/4.jpg new file mode 100644 index 0000000..60a1c23 Binary files /dev/null and b/周新忠学习笔记/3.30/4.jpg differ diff --git a/周新忠学习笔记/3.30/5.jpg b/周新忠学习笔记/3.30/5.jpg new file mode 100644 index 0000000..fd95c45 Binary files /dev/null and b/周新忠学习笔记/3.30/5.jpg differ diff --git a/周新忠学习笔记/3.30/6.jpg b/周新忠学习笔记/3.30/6.jpg new file mode 100644 index 0000000..7d3c76a Binary files /dev/null and b/周新忠学习笔记/3.30/6.jpg differ diff --git a/周新忠学习笔记/3.30/周新忠3.30笔记.md b/周新忠学习笔记/3.30/周新忠3.30笔记.md new file mode 100644 index 0000000..ccc15ad --- /dev/null +++ b/周新忠学习笔记/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线图,并总结趋势 +#### 庄家成本 +显示筹码模型,根据筹码模型分析陈本价格 +#### 情绪价值 +对该支股票进行简短的总结陈述