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
引用
社交
每日都有工作和生活记录,赏一个
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)