12月17日

Go语言学习

1、【一文Go起来】快速上手篇
2、 IDE:GoLand的安装,破解版
3、 golang安装
4、运行第一个go程序
5、 彻底搞懂golang的GOROOT和GOPATH
6、 Go语言中 Print,Println 和 Printf 的区别
7、 Go 语言切片(Slice)
8、 Golang 内置函数:make()
9、 golang make的使用
10、 Go语言的格式化输出中%d%T%v%b等的含义
11、 Go中的格式化打印:“%+v”和“%v”的区别
12、 %v %+v %#v的区别
13、 Golang之nil的妙用
14、Golang中的nil,没有人比我更懂nil!
15、 go语言,ok和_,ok模式
16、 关于逗号ok模式
17、 go语言中fallthrough用法
18、 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别

笔记

Go是一种静态、强类型、编译型、并发型的编程语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性,是开发者平常常用的语言之一,也是云原生开发的通用语言。

感悟

其实,还真不是学习语法就好了呢,其中包含了很多 Go 的设计理念。
正所调好记性不如敲烂键盘,学过的东西,还是要沉淀沉淀,也可以分享出来一起探讨,更有助于成长,于是我就简单记录了一下我的 Go 语吉学习笔记。

12月18日

asyncflow项目

1、开会,听项目的报告分析

笔记:

整个项目是为了解决什么问题?
考虑到在多场景的情况下会有很多相同的操作,我们可以把**“ 任务的调度、异常的处理、数据的存储、流量控制”**等这部分共性的东西抽象出来,做成通用化组件化的框架,也就是做一个通用的任务异步处理框架,节省开发时间,提高开发效率。

12月19日

asyncflow项目

1、 姜睿的方案设计
2、 生产者消费者模型
3、 并发、并行、异步、同步(可以看看评论区)
4、 并发和异步从概念上理解有什么区别?
5、 多线程和并发
6、 Kafka 百度百科
7、 小朋友也可以懂的Kafka入门教程
8、 认识gin

笔记:

1、什么是broker?broker是指一个独立的Kafka服务器。
2、客户端发送出来任务可以看成是生产者生成出来任务,框架就相当于消费者,去处理这些任务。生产者和消费者通过内存缓冲区去通讯。
3、go语言设计的时候没有一定的设计标准,没有规定一定是面向对象或者一定是面向过程,它有自己的一套规则,代码既可以写成面向对象的,也可以写成面向过程的,甚至可以是go风格的代码,所以比较灵活,因此就诞生了众多不同类型的框架,各具特色,满足不同开发人员的喜好。
4、go的框架其实是可以理解为库,并不是说用了某一个框架就不能用别的框架,go允许可以选择性的使用各个库中的优秀组件,进行组合。因为每个框架都不可能是十全十美的,都会有各自的优点特色,而go语言拥有的这种集成的特性对于我们解决问题是非常有帮助的。
5、broker是由服务(用gin得到的web服务)+ 存储组成。存储做成通用接口性的,而要想访问这个接口,就需要gin起一个web服务来作为入口,对外是透明的。
6、Worker的作用是拿任务来做,也就是去拿取待执行的任务,然后去处理。

12月20日

Go语言学习

1、 Golang的设计思想就是用通信代替共享内存
2、 channel有缓冲与无缓冲同步问题
3、 面试高频问题:有缓冲和无缓冲通道的区别?
4、 侵入式和非侵入式的区别
5、 线程和协程的区别的通俗说明

asyncflow项目

1、 简单理解消息队列

笔记

1、需要有一个任务治理的服务,在例如线程挂掉了,长期得不到更新的时候,可以派上用场。这个服务可以写在broker的服务部分,共享一个服务,因为broker本身做的事情不多,当然也可以抽出来,抽出来的话就会更加解耦的。
2、更新任务的结果到Backend,最后client去获取。
3、存储的话,一般是全部放在broker里面,因为它要做一个任务的管理,放到broker里面,可以实时查到任务的状态。
4、状态机没有考虑到。任务到底有几种状态,这其实是很重要的。
5、有三个worker同时从broker取一个东西,那么如何处理竞争关系呢?(多机竞争)可以用分布式锁,因为任务的调度需要不少时间,所以通常来说是状态更新之后,就可以释放锁了,不用专门等到任务完成、任务超时、任务异常。比如一开始worker都是待执行状态的,拿到任务之后是执行中状态,更新成功之后就马上释放锁,这样锁的力度也不会太大,锁的力度能小就小,不然会很慢,会成为一个瓶颈的,减少锁占用的时间也是一种优化方式。分布式锁是一个最常规的,很多时候也是最行之有效的解决方案。

课外扩展

1、B站的直播架构演进之路分享

笔记

1、微服务可以理解为是一种设计思想,就是把系统里面的业务全部拆开,变成一个个系统,需要用到的时候我们再去访问它,比如现在有一个很热门的主播,大家疯狂给它刷弹幕,打挂了弹幕系统,但是只要礼物系统还没有挂,就丝毫不会影响给主播刷礼物。而且业务拆分之后,单服务的扩展也十分的方便了,大家继续给他刷礼物,快刷爆礼物系统了,我们可以临时去服务器的厂商那边租一些服务器,把礼物系统的代码部署上去,然后重新上线,去分摊一下礼物系统的流量,等主播下播之后,流量下去了,我们再把服务器还回去,流量的压力得到了缓解,钱一分是没感知的。

12月21日

asyncflow项目

1、 什么是任务调度?什么是分布式任务调度?
2、 【分布式存储】与【传统存储】的区别是什么?
3、 一分钟让你轻松了解清楚什么是分布式存储
4、 能不能通俗的讲解下什么是状态机?

笔记

1、统一异常处理属于微服务治理的重要环节,不管公司规模大小,并发量多大,都要做。比如eBay这种大厂,它的交易量非常大,但它的框架层和业务层错误处理做得非常细致,反倒是一些中小公司常常忽略异常处理。异常处理发生时的确有一定的性能损耗,但是这个是必须的,而且生产级代码是建议尽可能细致全面的做错误处理,目前没有证据显示,细粒度的错误处理会引发性能问题。另外,很多大厂的服务框架都有统一异常处理逻辑,统一异常处理有利于规范和后续的运维。
2、某大牛的回答(关于微服务异常设计实践的问题) :
我之前设计框架的时候,一般只设计两类异常,一类是框架异常(或者你说的系统异常),另一类是业务异常(业务开发自己定制扩展)。

异常种类不需要太多,但是错误码(error code)和错误消息(error message)可以按需定义。你提到的回滚操作可以根据错误码判断。
3、状态机: 多个状态和状态之间的转换组成状态机

12月22日

asyncflow项目

1、 什么是负载均衡?
2、 什么是分库分表?何时进行分库分表?

12月23日

感悟

1、主线进度优先级最高,然后是项目=算法练习>workshop

Golang后端开发学习之路相关推荐

  1. 【实验室培训】大学生的Java后端开发学习之路(从App开发讲起)

    文章目录 前言 一.浅谈如何开发一款App 1.一个好的idea 2.根据这个idea完善好具体的需求 3.分工合作 4.设计阶段 ①UI设计 ②接口设计 ③架构设计 5.开发阶段 6.测试阶段 7. ...

  2. android开发学习之路——连连看之游戏逻辑(五)

    GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖, ...

  3. web后端开发学习路线_学习后端Web开发的最佳方法

    web后端开发学习路线 My previous article described how you can get into frontend development. It also discuss ...

  4. golang游戏开发学习笔记-开发一个简单的2D游戏(基础篇)

    此文写在golang游戏开发学习笔记-创建一个能自由探索的3D世界之后,感兴趣可以先去那篇文章了解一些基础知识,在这篇文章里我们要创建一个简单的2D游戏场景以及配套的人物,并实现人物运动和碰撞检测功能 ...

  5. golang游戏开发学习笔记-创建一个能自由探索的3D世界

    此文写在golang游戏开发学习笔记-用golang画一个随时间变化颜色的正方形之后,感兴趣可以先去那篇文章了解一些基础知识,在这篇文章里,我们将创建一个非常简单(只有三个方块)但能自由探索的的3D世 ...

  6. android开发用百度识别图片格式,Android开发学习之路-机器学习库(图像识别)、百度翻译...

    对于机器学习也不是了解的很深入,今天无意中在GitHub看到一个star的比较多的库,就用着试一试,效果也还行.比是可能比不上TensorFlow的,但是在Android上用起来比较简单,毕竟Tens ...

  7. python后端开发学习重点

    python后端开发学习 最近在学习python后端开发,简单的总结了python后端开发所需的技术栈,希望对自学python的同学有一点帮助. 1.python语言基础 python的语法特点 py ...

  8. android开发学习之路——连连看之加载图片(三)

    正如前面AbstractBoard类的代码中看到的,当程序需要创建N个Piece对象时,程序会直接调用ImageUtil的getPlayImages()方法去获取图片,该方法将会随机从res\ dra ...

  9. python后端开发学习内容有哪些?

    python后端开发学习内容有哪些? [导语]Python是一个强大的面向对象的程序设计语言,在人工智能领域,在网络爬虫.服务器开发.3D游戏.网络编程.数据分析.Web开发.运维.测试等多个领域都有 ...

最新文章

  1. 陶哲轩实分析 习题 7.5.2
  2. 追溯了解Ubuntu之------基本命令操作(叁)
  3. 如何学习——为什么不想听课
  4. python简单编程例子-python简单实例训练(21~30)
  5. C++阶段01笔记08【结构体(基本概念、定义与使用、数组、指针、嵌套、const使用)】
  6. 这是我见过最全面的Python装饰器详解!没有学不会这种说法
  7. zabbix-server-mysql安装_zabbix server 安装部署
  8. Activiti源码 ProcessEngineConfiguration
  9. HTMLCSS 超简单的前端设计入门-2!
  10. 很有用很有效的操作之批量操作一组图片
  11. 开发人员如何有效的进行数据库设计
  12. 魅族16s封胶事件结果:属极个别封胶漏点 双方协商执行一赔二
  13. 基于深度神经网络的动作检测:问题与解决方案
  14. 有关java中的集合List,set,Map 等
  15. 手推RNN BPTT(back propagation through time)反向传播
  16. raspberrypi 与 arduino 使用 nRF24L01+ 通信 -- arduino为接收端
  17. 向日葵远程控制第一人称3D鼠标无法操作旋转问题
  18. 物联网项目设计 (七) 基于RT-thread的MQTT协议物联网辉光钟
  19. 怎么删除远程桌面连接计算机,win10系统强制删除远程桌面连接软件的方法
  20. 老王利用这个方法引流3个满微信号,半年变现几十万,你学会了你也能做到

热门文章

  1. 第21节 ACL——控制路由器上接口大门的进出规则
  2. NPM js 包管理器介绍
  3. 抓取微信运动真实数据
  4. mqtt简介及在web端的应用(接入阿里iot)
  5. PS_变量批量生产名片
  6. Java —— 日期时间 API
  7. 怎样用自己电脑做服务器供他人访问自己的网站
  8. java上传微博图床_php上传图片到微博图床
  9. ContentProvider--共享文件(.jepg文件)
  10. 全面的IE兼容性调试问题