获得徽章 0
#青训营 x 字节后端训练营#
常见的编程原则:
1. KISS原则(保持简单和直接):使用简单和直接的方式编写代码,以减少复杂性和可能的错误。
2. DRY原则(不要重复自己):避免在代码中重复相同的逻辑或代码段。
3. SOLID原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖反转原则。
4. YAGNI原则(您不需要它):只编写您需要的功能,避免在代码中添加不必要的功能。
5. 高内聚低耦合:模块内部的各项功能高度相关,模块间的耦合度尽量低。
6. 鲁棒性:程序需要具有良好的鲁棒性,能够处理各种异常情况。
7. 可读性和可维护性:代码应该易于阅读和理解,能够方便地进行维护和修改。
常见的编程原则:
1. KISS原则(保持简单和直接):使用简单和直接的方式编写代码,以减少复杂性和可能的错误。
2. DRY原则(不要重复自己):避免在代码中重复相同的逻辑或代码段。
3. SOLID原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖反转原则。
4. YAGNI原则(您不需要它):只编写您需要的功能,避免在代码中添加不必要的功能。
5. 高内聚低耦合:模块内部的各项功能高度相关,模块间的耦合度尽量低。
6. 鲁棒性:程序需要具有良好的鲁棒性,能够处理各种异常情况。
7. 可读性和可维护性:代码应该易于阅读和理解,能够方便地进行维护和修改。
展开
评论
点赞
#青训营 x 字节后端训练营#
协程并发
协程:coroutine。也叫轻量级线程。
与传统的系统级线程和进程相比,协程最大的优势在于“轻量级”。可以轻松创建上万个而不会导致系统资源衰竭。而线程和进程通常很难超过1万个。这也是协程别称“轻量级线程”的原因。
一个线程中可以有任意多个协程,但某一时刻只能有一个协程在运行,多个协程分享该线程分配到的计算机资源。
多数语言在语法层面并不直接支持协程,而是通过库的方式支持,但用库的方式支持的功能也并不完整,比如仅仅提供协程的创建、销毁与切换等能力。如果在这样的轻量级线程中调用一个同步 IO 操作,比如网络通信、本地文件读写,都会阻塞其他的并发执行轻量级线程,从而无法真正达到轻量级线程本身期望达到的目标。
在协程中,调用一个任务就像调用一个函数一样,消耗的系统资源最少!但能达到进程、线程并发相同的效果。
在一次并发任务中,进程、线程、协程均可以实现。从系统资源消耗的角度出发来看,进程相当多,线程次之,协程最少。
协程并发
协程:coroutine。也叫轻量级线程。
与传统的系统级线程和进程相比,协程最大的优势在于“轻量级”。可以轻松创建上万个而不会导致系统资源衰竭。而线程和进程通常很难超过1万个。这也是协程别称“轻量级线程”的原因。
一个线程中可以有任意多个协程,但某一时刻只能有一个协程在运行,多个协程分享该线程分配到的计算机资源。
多数语言在语法层面并不直接支持协程,而是通过库的方式支持,但用库的方式支持的功能也并不完整,比如仅仅提供协程的创建、销毁与切换等能力。如果在这样的轻量级线程中调用一个同步 IO 操作,比如网络通信、本地文件读写,都会阻塞其他的并发执行轻量级线程,从而无法真正达到轻量级线程本身期望达到的目标。
在协程中,调用一个任务就像调用一个函数一样,消耗的系统资源最少!但能达到进程、线程并发相同的效果。
在一次并发任务中,进程、线程、协程均可以实现。从系统资源消耗的角度出发来看,进程相当多,线程次之,协程最少。
展开
评论
点赞
#青训营 x 字节后端训练营#
Go语言的进阶知识:
1. 接口与多态:Go语言中的接口是一种高级的灵活特性。它可以实现多态,使得代码更具扩展性。
2. 并发模型:Go语言对并发编程提供了很好的支持。它使用goroutine和channel的并发模型,能够实现高效的并发编程。
3. 内存管理:Go语言的内存管理比C++、Java和Python都更具优势,它有自己的垃圾回收机制,能够自动管理内存。
4. 反射:Go语言支持反射,允许程序在运行时检查和修改部分数据类型、变量或者函数等信息,让代码更具灵活性。
5. Web开发:Go语言的快速开发和高效性能使得它在Web开发领域受到广泛关注。常用的Web框架有gin、echo、beego等等。
6. 分布式系统:由于Go语言天生具备并发的能力,因此在分布式系统的开发中也有很好的应用。常用的分布式框架有etcd、consul、raft等。
在学习Go语言过程中可以尝试掌握这些知识点,能够更好地了解Go语言的特点和优势,提高开发效率和代码质量。
Go语言的进阶知识:
1. 接口与多态:Go语言中的接口是一种高级的灵活特性。它可以实现多态,使得代码更具扩展性。
2. 并发模型:Go语言对并发编程提供了很好的支持。它使用goroutine和channel的并发模型,能够实现高效的并发编程。
3. 内存管理:Go语言的内存管理比C++、Java和Python都更具优势,它有自己的垃圾回收机制,能够自动管理内存。
4. 反射:Go语言支持反射,允许程序在运行时检查和修改部分数据类型、变量或者函数等信息,让代码更具灵活性。
5. Web开发:Go语言的快速开发和高效性能使得它在Web开发领域受到广泛关注。常用的Web框架有gin、echo、beego等等。
6. 分布式系统:由于Go语言天生具备并发的能力,因此在分布式系统的开发中也有很好的应用。常用的分布式框架有etcd、consul、raft等。
在学习Go语言过程中可以尝试掌握这些知识点,能够更好地了解Go语言的特点和优势,提高开发效率和代码质量。
展开
评论
点赞
#青训营 x 字节后端训练营#
Kafka问题总结:
第一,因为有数据复制的问题,所以Kafka运维的时间成本和人力人本都不低
第二,对于负载不均衡的场景,我们需要有一个较为复杂的解决方案进行数据迁移,从而来权衡IO升高的问题
除了以上两个问题以外,Kafka自身还存在其他的问题
比如,Kafka没有自己的缓存,在进行数据读取的时候,只有Page Cache可以用,所以不是很灵活
另外在前面的介绍当中,相信大家也了解到了,Kafka的Controller和Coordinator都是和Broker部署在一起的,Broker因为承载大量IO的原因,会导致Controller和Coordinator的性能下降,如果到一定程度,可能会影响整个集群的可用性
Kafka问题总结:
第一,因为有数据复制的问题,所以Kafka运维的时间成本和人力人本都不低
第二,对于负载不均衡的场景,我们需要有一个较为复杂的解决方案进行数据迁移,从而来权衡IO升高的问题
除了以上两个问题以外,Kafka自身还存在其他的问题
比如,Kafka没有自己的缓存,在进行数据读取的时候,只有Page Cache可以用,所以不是很灵活
另外在前面的介绍当中,相信大家也了解到了,Kafka的Controller和Coordinator都是和Broker部署在一起的,Broker因为承载大量IO的原因,会导致Controller和Coordinator的性能下降,如果到一定程度,可能会影响整个集群的可用性
展开
评论
点赞