当前位置:网站首页>实习日报-2022-7-29
实习日报-2022-7-29
2022-08-01 15:14:00 【阿联爱学习】
今日完成
- 安装项目开发的软件-GoLang
- 学习Go语言并发
- 协程:共享堆空间,独立的栈空间,调度由用户自己控制。使用方式:go+func(函数或者匿名函数),go + { 代码块}
- 协程之间的通信
- Channel是进程内协程之间通信的方式
- 进程之间的通信可以采用HTTP协议或者RPC完成
- Channel:基于消息机制的消息通信方式,而非给予内存的通信方式
- Channel分为带缓冲的和不带缓冲的channel,不带缓冲的channel要求发送和接收的channel同时准备好,而带缓冲的channel则可以缓存数据。
- Channel的接受方式:阻塞式接受,非阻塞式接受,接受不处理,循环接收。
- 锁
- 可以通过go build – race 来检测数据竞争检测。
- sync.WaitGroup类似于循环栅栏,先用add申明由多少资源,在用done去表示资源被消费掉,最后用wait()方法表示等待所有协程到来。
- sync.Mutex:悲观锁
- sync.RWMutex:乐观锁
- 原子atomic
- Atomic.AddInt32()安全相加
- Atomic.LoadInt32()安全读取
- 协程之间的调度
- GMP调度,G代表goroutine,M代表内核线程,P表示处理器对应为内核,P上面由本地队列,还有一个全局队列。M先执行完本地队列的任务,在执行其他队列的任务,最后执行全局队列的任务。
- Go语言版本的快排,熟悉Go的语法
package main import "fmt" func main() { nums := []int{1,3,5,7,9,0,2,4,8,10} println(len(nums)) Qsort(nums,0,len(nums)-1) for i := range nums{ fmt.Println(i) } } func Qsort(nums []int,left int,right int){ if(left >= right){ return } mid := partition(nums,left,right) Qsort(nums,left,mid-1) Qsort(nums,mid+1,right) } // 切片进行传递 func partition(nums []int,left int,right int)(int) { flag := left index := left + 1 for i := index ; i <= right ;i++{ if(nums[i] < nums[flag]){ swap(nums,index,i) index++; } } swap(nums,index-1,left) return index -1 } func swap(nums []int,i int,j int) { tep := nums[i] nums[i] = nums[j] nums[j] = tep }
- 协程之间的调度
- 遇到的问题:用两个协程打印奇偶1-100的数字,遇到了主协程比两个从协程先执行完,导致无法进行打印,通过询问吴金龙导师才解决问题,只需要让主协程等待从协程一会就行。
- 周会:从下午四点到六点,听的很困难,学习空间很大!
- 明日计划
- 继续学习Go语言技术文档并逐步学习支付中台业务流程。
边栏推荐
- MySQL [create and manage tables]
- MySQL中字符串比较大小(日期字符串比较问题)
- LeetCode50天刷题计划(Day 10—— 三数之和(20.50-22.40)
- 分布式数据库难题(一):数据分区
- gconf/dconf编程实战(1)gconf和dconf介绍
- 透过现象看本质,如何针对用户做好需求分析
- The soul asks: How does MySQL solve phantom reads?
- kubelet node pressure eviction
- 数据抽取过滤的时候,数据库字段update_at类型是timestamp,抽取T-1日数据这个变量条
- DHCP配置命令(DHCP配置命令)
猜你喜欢

Break the limit of file locks and use storage power to help enterprises grow new momentum

1161. 最大层内元素和

openEuler 社区完成首批顾问专家聘用,共同为社区的发展贡献力量

The soul asks: How does MySQL solve phantom reads?

openEuler 社区12位开发者荣获年度开源贡献之星

LeetCode50天刷题计划(Day 9—— 整数转罗马数字(20.40-22.10)

JSON数据转换总结(VIP典藏版)

Range query based on date in MySQL

leetcode:33. 搜索旋转排序数组

Kernel pwn 入门 (6)
随机推荐
游戏元宇宙发展趋势展望分析
请问下怎么取数据库中上一个小时的数据到odps进行实时节点的同步呢
js判断是pc端还是移动端(包括ipad)
May 20, 2022 The most complete fish game navigation
细读《阿里测试之道》
c语言rand函数生成随机数,详解C语言生成随机数rand函数的用法[通俗易懂]
LeetCode50天刷题计划(Day 9—— 整数转罗马数字(20.40-22.10)
“查找附近的商铺”|Geohash+MySQL实现地理位置筛选
大神们,ODPS用的是MySQL吗?
解读selenium webdriver
打破文件锁限制,以存储力量助力企业增长新动力
Zhaoqi Science and Technology Innovation Platform attracts talents and attracts talents, and attracts high-level talents at home and abroad
2.8K 120Hz触控双屏加持 灵耀X 双屏Pro 2022让办公无惧想象
CSDN配置功能总结
Pytorch - Distributed Model Training
MySQL:索引
What is a closure?
MySQL data processing of authorization 】 【
MBI5020 LED Driver
0-1背包问题的一维数组优化解析