04 2020 档案

摘要:一、简介 Session是一段保存在服务器上的信息,当客户端第一次访问服务器时创建Session,同时也会创建一个名为beegosessionID,值为创建的Session的id的Cookie。 这个beegosessionID对应服务器中的一个Session对象,通过它就可以获取到保存用户信息的S 阅读全文
posted @ 2020-04-27 13:54 Ethan_Cheng 阅读(712) 评论(0) 推荐(0)
摘要:1.简介 (1)Http是无状态的协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否是同一个客户端,这样的设计严重阻碍了web程序的设计。 (2)Cookie是解决Http协议无状态的方案之一。 (3)Cookie实际上就是服务器保存在浏览器上的一段信息,浏览器有了Cookie 阅读全文
posted @ 2020-04-27 01:12 Ethan_Cheng 阅读(340) 评论(0) 推荐(0)
摘要:参考链接(查看更多):https://beego.me/docs/mvc/controller/router.md 基础路由 从 beego 1.2 版本开始支持了基本的 RESTful 函数式路由,应用中的大多数路由都会定义在 routers/router.go 文件中。最简单的 beego 路由 阅读全文
posted @ 2020-04-27 01:07 Ethan_Cheng 阅读(334) 评论(0) 推荐(0)
摘要:一.框架 框架:可复用的设计组件,它规定了应用的体系结构,明确了整个设计,协作各个组件之间的依赖关系,责任分配,和流程控制。通俗解释框架就是一堆代码的集合,为了提高软件的开发效率和质量,一般都会使用框架。 二.Beego简介 1.作者 谢孟军 2.简介 beego 是一个快速开发 Go 应用的 HT 阅读全文
posted @ 2020-04-26 19:20 Ethan_Cheng 阅读(504) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "sync/atomic" ) /* 用原子来替换锁,其主要原因是: 原子操作由底层硬件支持,而锁则由操作系统提供的API实现 若实现相同功能,原子操作通常会更有效率 */ func main() { var a int64 = 123 //保 阅读全文
posted @ 2020-04-26 01:28 Ethan_Cheng 阅读(409) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "sync" "time" ) func main() { //要监听的变量 bitcoinRising := false //创建条件 cond := sync.NewCond(&sync.Mutex{}) go func() { for { 阅读全文
posted @ 2020-04-25 21:38 Ethan_Cheng 阅读(247) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "sync" "time" ) /* 读写锁 多路只读 一路只写 读写互斥 */ /*读写锁API介绍*/ func main101() { var rwm sync.RWMutex //锁定为写模式 一路只写 rwm.Lock() //解锁写 阅读全文
posted @ 2020-04-25 01:43 Ethan_Cheng 阅读(326) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "sync" "time" ) /* mt.Lock() 抢锁 一次只能被一个协程锁住 其余想要抢到这把锁的协程阻塞等待至前面的协程将锁释放 mt.Lock()的可能性有两种: ①抢到锁,继续向下执行 ②没抢到,阻塞等待至前面的协程将锁释放 m 阅读全文
posted @ 2020-04-25 00:45 Ethan_Cheng 阅读(601) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "sync" "time" ) /*等待组API介绍*/ func main071() { var wg sync.WaitGroup fmt.Println(wg) //向等待组添加一个协程(注册) wg.Add(1) //从等待组减掉一个协 阅读全文
posted @ 2020-04-24 23:31 Ethan_Cheng 阅读(489) 评论(0) 推荐(0)
摘要:秒表 package main import ( "fmt" "time" ) /*每秒大喊我要去浪,共9次,然后退出计时*/ func main() { var tickerStopped = false ticker := time.NewTicker(time.Second) go func( 阅读全文
posted @ 2020-04-24 20:36 Ethan_Cheng 阅读(1029) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "time" ) /* ·循环从一写两读三条管道中随机选择一条能走的路 ·等所有路都走不通了就退出循环 */ func main041() { chA := make(chan int, 5) chB := make(chan int, 4) 阅读全文
posted @ 2020-04-24 19:37 Ethan_Cheng 阅读(530) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "math" "strconv" "time" ) /* ·100条协程并发求1-10000平方根 ·最大并发数控制在5 ·管道实现 */ func GetSqrt(name string, n int, chSem chan string) 阅读全文
posted @ 2020-04-24 19:36 Ethan_Cheng 阅读(285) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "strconv" "time" ) /* 改进生产者消费者模型 ·生产者每秒生产一件商品,并通知物流公司取货 ·物流公司将商品运输到商店 ·消费者阻塞等待从商店消费 ·消费10轮就主协程结束 ·尝试在整分钟时通知生产者罢工,生产者罢工时主协程 阅读全文
posted @ 2020-04-24 19:34 Ethan_Cheng 阅读(494) 评论(0) 推荐(0)
摘要:server package main import ( "fmt" "net" "os" "time" ) func SHandleError(err error, when string) { if err != nil{ fmt.Println("err=", err, when) os.Ex 阅读全文
posted @ 2020-04-21 16:35 Ethan_Cheng 阅读(450) 评论(0) 推荐(0)
摘要:server端: package main import ( "bufio" "encoding/binary" "fmt" "net" "os" "unsafe" ) func SHandleError(err error, when string) { if err != nil{ fmt.Pr 阅读全文
posted @ 2020-04-20 01:18 Ethan_Cheng 阅读(738) 评论(0) 推荐(0)
摘要:string与int互转 #string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 64) #int到string string:=strconv.Itoa(i 阅读全文
posted @ 2020-04-20 00:48 Ethan_Cheng 阅读(1275) 评论(0) 推荐(0)
摘要:server: package main import ( "fmt" "net" "os" ) func SHandleError(err error, when string) { if err != nil{ fmt.Println("服务端异常退出,err=", err, when) os. 阅读全文
posted @ 2020-04-19 22:09 Ethan_Cheng 阅读(345) 评论(0) 推荐(0)
摘要:server端: package main import ( "fmt" "net" ) func main() { //建立监听 listener, err := net.Listen("tcp", "localhost:8080") if err != nil{ fmt.Println("建立t 阅读全文
posted @ 2020-04-18 19:33 Ethan_Cheng 阅读(438) 评论(0) 推荐(0)