获得徽章 0
- #青训营 x 字节后端训练营#
打卡day13
今天阅读了关于for-range的一些易错点
总的来说值得注意的有以下两点:
在循环开始前,会将数组或切片赋值给一个新变量,在赋值过程中就发生了拷贝,迭代的实际上是副本。
在循环过程中,会将迭代元素赋值给一个临时变量,这又发生了拷贝。如果取地址的话,每次都是一样的,都是临时变量的地址。
展开评论点赞 - #青训营 x 字节后端训练营#
打卡day12
今天阅读了为什么rust和go会放弃继承,选择组合
继承和组合是面向对象编程中两种常见的代码重用方式。它们都可以实现代码的复用。两者最大的区别是继承关系的耦合度高,子类和父类之间是紧密耦合的关系。而组合对象之间的关系是松散的,修改一个对象不会影响到其他对象
在实际使用中,继承会遇到这样的问题:要设计一个关于车的类。按照面向对象编程的思想,我们将“车类”这样一个事务抽象成一个BaseCar类,默认有run的行为。那么所有车类都可以继承这个抽象类。比如,汽车,卡车等。上面的设计有三个隐患:
第一个,如果把基类的行为实现都放到基类里面,虽然能提高复用性,但是也会改变所有子类的功能,这也会导致代码的复杂性提升。
第二个点是,对于没有没有那些功能的对象,比如自行车,就不应该把修引擎的功能暴露到自行车类里面。
第三个点是,如果扩展到其他对象怎么办,比如说人也会跑,飞机也会跑。那么这个设计后面就不好扩展了,也不够灵活。
但其实我们可以通过先实现接口,然后通过组合、委托的方式来解决。这样代码就会清爽很多。展开评论点赞 - #青训营 x 字节后端训练营#
day11
今天阅读学习了go的静态编译机制
go程序是通过 runtime 这个库实现与操作内核系统交互的。go自己实现了 runtime,并封装了syscall,为不同平台上的用户层面代码提供封装完成的、统一的go标准库。
go默认情况下是采取的静态编译,在编译时会将依赖库一起编译进二进制文件,所以go编译出来的二进制文件比 C 语言编译出来的文件会大的多
同时go语言也提供 Cgo,可以用以在 Go 语言中调用 C语言库。当使用 Cgo 进行构建时,如果我们使用的包里用着使用 C 语言支持的代码,那么最终编译的可执行文件都是要有外部依赖的。这样不可避免会使用一些外部的动态链接库。
如果要使我们编译的程序有着更好的可移植性,可以进行纯静态编译。有两种方式可以帮助我们进行纯静态编译:CGO_ENABLED=0(关闭cgo);采用external linker展开评论点赞 - #青训营 x 字节后端训练营#
打卡day10
今天学习了http框架
其使用 TCP 协议,通过网页浏览器、网络爬虫或者其它的工具,客户端(user agent,用户代理程序)发起一个 HTTP 请求到服务器上指定端口(默认端口为80)。
应答的服务器(origin server)上存储着一些资源,比如 HTML 文件和图像,服务器在那个端口监听客户端的请求。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。
一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。
每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。HTTP/2 中的连接具有复用性,即每个目标地址建立连接后,可以永久被利用,所以每个来源仅需要一个连接。展开评论点赞 - #青训营 x 字节后端训练营#
打卡day9
今天粗浅学习了go性能调优
以下是优化的大致流程:
1.建立服务性能评估手段
2.分析性能数据,定位性能瓶颈
3.重点优化项改造
4.优化效果验证
(期末周ORZ,完全没空细看ToT)展开评论点赞 - #青训营 x 字节后端训练营#
打卡day8
今天学习了Go语言引入的新型排序算法pdqsort
pdqsort (pattern-defeating-quicksort)是一种不稳定的混合排序算法,它的不同版本被应用在C++ BOOST、Rust 以及Go 1.19中。它对常见的序列类型做了特殊的优化,使得在不同条件下都拥有不错的性能。
最后也复习了之前在数据结构中学习过的各种经典的排序算法,如quicksort、heapsort等展开评论点赞 - #青训营 x 字节后端训练营#
打卡day7
今天学习的内容比较轻松,主要是了解了一下公司中后端的开发流程。
后端开发流程是指在软件开发生命周期中,从需求分析到部署上线,后端开发人员所需要遵循的一系列规范和流程。一个高效的后端开发流程可以帮助团队提高开发效率,降低开发成本,提高软件质量,保证软件按时上线。
后端开发流程包含以下几个阶段:
需求分析:在这个阶段,开发团队需要对客户需求进行深入分析,明确软件功能和性能等要求,并将其转化为开发可理解的技术需求。
设计阶段:在这个阶段,开发人员将需求分析阶段确定的技术需求转化为具体的设计方案,包括数据模型、接口设计、数据存储设计等。
编码阶段:在这个阶段,开发人员开始根据设计方案进行具体的编码实现,其中需要遵循一系列的编码规范和标准。
测试阶段:在这个阶段,开发人员需要进行单元测试、集成测试、系统测试、性能测试等一系列测试,确保代码的正确性和稳定性。
部署上线:在测试阶段通过后,将代码部署到生产环境中并上线。展开评论点赞 - #青训营 x 字节后端训练营#
打卡day6
今天学习了中间件——消息队列的有关知识。
消息队列在实际应用中包括:应用耦合、异步处理、限流削峰、消息驱动的系统。
之后学习了消息队列的点对点模式:消息发送者生产消息发送到queue中,然后消息接收者从queue中取出并且消费消息。消息被消费以后,queue中不再有存储,所以消息接收者不可能消费到已经被消费的消息。同时也学习了消息队列的发布模式:发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
最后学习了热门的Kafka消息队列、BMQ以及RockeMQ展开评论点赞 - #青训营 x 字节后端训练营#
打卡day5
今天复习了git的相关知识并且学习了一些细节。
之前使用的一般都是http方式拉取远程库等,今天过了一遍ssh方式。
把git中一些文件的作用了解了一下。
最重要的是把之前理解的不清晰的branch相关知识重新学习梳理了一遍。展开评论点赞