
go语言 - 后端学习
文章平均质量分 65
bytedance第三届后端青训营学习心得
故土潮声
python大法好,go也不是不行
ps:找工作还得是java
展开
-
Go语言 - RPC框架
1.什么是RPCRPC - Remote Procedure Calls 远程函数调用相当于本地将参数上传到云端,云端根据形参计算返回结果,并返还给本地。2.RPC需要解决的问题函数映射数据转换成字节流网络传输3.一次RPC的完整过程IDL文件:通过一种中立的方式来描述接口,使得不同平台上运行的对象可以互相通信,例如thrift,proto生成代码:通过编译器工具把IDL文件转换成语言对应的静态库编解码:传输过程中用于打包与解压通信协议:规范了数据在网络中原创 2022-05-27 17:03:35 · 974 阅读 · 0 评论 -
Go语言 - 架构初探
1.什么是架构?架构:有关软件整体结构与组件的抽象描述,用于直到软件系统各个方面的设计。架构在方法选择上起着重要的指导作用。2.蛋糕问题与架构种类如何做蛋糕?如何卖蛋糕?1.只开一家蛋糕店,自己动手做,边做边卖:单机架构All in one,所有的东西都在一个进程里,部署在一个机器上。优点:简单缺点:运维需要停服,用户体验较差承载能力有限2.雇佣多个蛋糕师傅,并用大堂经理管理师傅:单体架构在单机架构的基础上,将进程部署到多个机器上。优点:具备水平扩容原创 2022-05-22 14:58:45 · 534 阅读 · 0 评论 -
Go语言 - 网络与服务
1.从输入URL到显示网页都经历了哪些步骤呢?DNS解析 - TCP建连 - TLS握手 - HTTP请求2.域名1.Host管理:时效差,维护难2.DNS:全球有13台根服务器,树状结构3.自建DNS系统:提高效率与安全性4.企业角度来看,更需要搭建权威DNS如何搭建?常见开源DNS:bind、nsd、knot、coredns3.接入HTTPS协议1.http是明文请求,容易被抓包与篡改2.对称加密:客户端与服务器同时持有一份密钥,但存在密钥被截获的问题3.非对原创 2022-05-21 13:14:21 · 512 阅读 · 0 评论 -
Go语言 - 后端网络
1.网络接入协议/概念MAC地址路由协议同网段:配置网段即可默认添加静态路由。获取对端MAC直接发包跨网段:配置网关路由。获取网关MAC地址发包ARP协议逻辑同网段才能发送ARP,因为广播不能跨网段ARP请求广播,ARP应答单播 免费ARP:新加来的机器没收到广播,就积极告诉其他机器自身的mac地址,以便于其他机器更新,防止IP冲突 ARP代理:虚拟网络,劫持ARP请求去做一些操作...原创 2022-05-20 13:49:04 · 797 阅读 · 0 评论 -
Go语言 - 内存管理
1.自动内存管理又称GC,保证内存使用的正确性与安全性任务:为新对象分配内存, 找到存活对象, 回收死亡对象的内存空间GC的一些概念:Mutator:业务线程,分配新对象,修改对象指向关系Collector:GC线程,找到存活对象,回收死亡对象的内存空间,必须感知对象指向关系的改变,防止父对象被回收而子对象没有被回收Serial GC:只有一个collector执行Parrallel GC:支持多个collector同时回收GCConcurrent GC:mutator(原创 2022-05-14 15:51:01 · 471 阅读 · 0 评论 -
Go语言 - 高质量编程与性能调优
1.高质量编程边界条件考虑完备异常处理易读易维护规范编码:格式化代码格式注释:解释作用,返回值,或是报错原因命名:缩略词大写,变量不需要导出时全小写作用域小的变量命名尽量简洁作用域广的变量,或是函数的形参命名要有上下文信息函数名不要携带包名上下文信息控制流程:冗余的else尽量省略尽量保持代码最短缩进,例如if err := doSomething(); err != nil { return err}错误判定与输出日志原创 2022-05-11 13:22:32 · 272 阅读 · 0 评论 -
Go语言 - 并发实践
1.一些并发相关概念Goroutine协程:协程:用户态,轻量级线程,栈MB级别线程:内核态,线程跑多个协程,栈KB级别使用go func(){}()匿名函数即可启用协程通过通信共享内存,channel:make(chan type, cap),分为有缓冲与无缓冲通道无缓冲通道,即cap为0,要求发送方和接收方的goroutine同时准备好,才能完成发送和接收操作,如果有一个还没准备好,会导致另一个goroutine被阻塞。有缓冲通道,cap不为0,可以缓解生成消费的压力。原创 2022-05-08 13:10:56 · 319 阅读 · 0 评论 -
Go语言 - 基础
1.什么是Go语言高性能、高并发语法简单标准库丰富静态编译,占用空间小快速编译跨平台垃圾回收2.语法特性变量与常量声明可以不声明类型,编译器隐式判断if条件语句不加括号,执行语句必须加大括号没有while,用for替代switch的case默认自带break,switch条件语句可以为空支持切片以及切片操作range快速遍历索引与值变量类型后置使用指针来实现引用传递定义函数时,函数名前指定结构体等对象可以实现接口功能字符串支持 ‘+’原创 2022-05-07 13:42:03 · 677 阅读 · 0 评论