go学习
profileName: majia
postId: "200"
postType: post
脑图
go介绍
指针
- 取地址*
- 取值&
函数里使用,参数是指针就可以修改指针的指向;函数不加就是值传递,把数据拷贝一份
跟C比
* 符号
C指针比较繁琐的在于指针运算
go语言没有指针运算。
& 符号
go语音这个符号就是取地址
C/C++ 引用(别名)同时也是取地址符
函数
函数是go语言的一等公民
不带*的名就是指向函数的指针!!!
go并发
java并发是线程
go并发是routine(协程)

为什么协程快?
- 不快:并不比线程池快;协程也是只用那几个线程,所以go的协程调优也是线程数量调优。(netty>go)
- 有些情况比线程快:起一万个协程要比1w个线程快。
是否完全等同于线程池的任务?
- 线程池的task,不具备协调能力
- golong中可以用channel做(任务)协程协调;channel就是个阻塞队列(类似java的syncqueue)
- 在用户空间模拟了cpu切换
- 执行完回收
- golong中的异步(导出都是异步,但写法都是同步写法)
- 同步的写法实现异步操作(流行起来的原因,写起来简单)
NEXT
channel
同步sync wait mutex
Map slice channel函数传递
go没有切面编程(动态代理)
生态
没有泛型(目前)
go的内存模型GC
电脑上每个应用都有自己的虚拟空间,对象放到虚拟空间page中,用到就放到内存page中;用不到直接在虚拟空间就干掉,这样就减少内存中移动对象的操作;这是go gc和javagc的差异;

67 最大最想是32k,超出的是0,精确分配;67中是向上分配,比如 8k的空间要分配大小为5的对象,浪费3k!!67种默认都是span=8k,8k里方的对象个数随之对象线上变大,个数变小。
spans别称叫*mspan
bitmap记录两个信息:
该位置有没有对象
该位置是不是已经扫描过了(垃圾回收算法)
!
也会有碎片化问题,要把碎片整理出内存给新对象使用就要长时间stw(线程暂停)
go本来是为了替代c的,如果把泛型,aop等加进来反而会写起来复杂如java;不太好了。
go格式化:gofmt -w test.go

老方式GOPATH方式有vendor目录,现在用go.mod方式
beego脚手架:自动创建mvc工程目录,热部署,可以创建api工程(前后端分离),web工程(前后端不分离)

iris的框架基于fasthttp:性能高不稳定

gin 和beego基于net http:beego大而全,gin自由

总结

Gin
Gin入门

gin的http请求与返回

参数的泛绑定

绑定静态文件

多种请求类型crud

路由分组

参数获取






PYTHON
pip install --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com Image
引用
社交
每日都有工作和生活记录,赏一个


浙公网安备 33010602011771号