获得徽章 0
- #青训营 x 字节后端训练营#
day 17
学习pdqsort排序算法,pdqsort(pattern - defeating - quicksort)
是一种不稳定的混合排序算法,对常见的序列类型做了特殊的优化,使得在不同条件下都拥有不错的性能,时间复杂度较低展开评论点赞 - #青训营 x 字节后端训练营#
day 16 系统架构
从宽角度来看,系统架构可以分为:
1. 单机架构:整个系统运行在单个服务器上,所有模块和存储都在同一物理节点。
2. 分布式架构:系统运行在多台服务器上,通过网络互联。包括集群架构、SOA架构、微服务架构等。
3. 服务架构:将系统按业务域拆分为多个服务,每个服务对应一个子系统,服务之间通过消息或API相互调用。代表有SOA架构和微服务架构。
4. 事件驱动架构:通过事件触发服务调用,实现各个服务的解耦。代表有EDA架构。
5. 数据中心架构:处理大规模数据的架构,包括 lambda 架构 、kappa 架构 等。
6.面向流的架构:处理流式数据的架构,代表有SMACK架构(Spark、Mesos、Akka、Cassandra、Kafka)。
除此之外,还有P2P架构、Grid架构、云计算架构等。单机架构属于最基本的架构类型,其特点是系统部署在单个物理机器上。随着需求规模变大和可靠性要求提高,系统会向分布式架构、服务架构等演进。展开赞过评论1 - #青训营 x 字节后端训练营#
day 15 go语言性能优化和自动内存管理
需要注意的事项,减少内存分配
1. 避免过度分配内存。`Go`语言的垃圾回收机制会定期回收无用内存,但分配过多内存还是会降低性能。所以应避免在热循环内分配内存。
2. 用指针代替大结构体。传递指针而不是结构体可以减少内存分配和复制。展开评论点赞 - #青训营 x 字节后端训练营#
day 14
看课程性能优化的内容,整理了一下笔记。
性能调优原则:
1. 前置优化:选择高效的算法和数据结构,避免过早优化。
2. 找到性能瓶颈:使用profiler工具分析程序,找到CPU/内存占用高的函数。
3. 避免过度优化:只优化真正的性能瓶颈,不要过度优化非瓶颈部分。
4. 优化循环:循环体内的代码会被执行多次,优化循环体能获得更大收益。
5. 减少性能损耗:减少CPU缓存未命中、内存抖动等,提高局部性。
pprof工具功能:
1. CPU分析:分析程序的CPU使用情况,找到CPU使用率高的函数。
2. 内存分析:分析内存分配情况,查找内存占用高的函数。
3. 阻塞分析:分析程序的阻塞时间以及阻塞原因。展开评论点赞 - #青训营 x 字节后端训练营#
day 13
最近一堆考试,感觉要寄了。最近就看了一下git的常用指令,并尝试着将自己之前写的项目弄到sourcetree里面,就是在提交到远程仓库的时候,老是会出现一些权限不足,或是其他的bug评论点赞 - #青训营 x 字节后端训练营#
day 12
6种排序法,比较简单的冒泡在数据量一大起来就耗时,而新了解到的快速排序就能比较好的处理大数据,他的平均时间复杂度为O(nlogn),最坏时间复杂度为O(n2),空间复杂度为O(logn)。快速排序采用分治法思想,通过选取pivot将数组递归划分为左右两个子数组,从而达到整个数组有序。展开评论点赞 - #青训营 x 字节后端训练营#
day 11
学习数据结构里面的链表,栈。链表中的元素在内存中可以是非连续的。每个元素由节点来表示,每个节点包含元素值和指向下一个节点的指针。栈是一种LIFO(后入先出)的数据结构评论点赞 - #青训营 x 字节后端训练营#
day 10
感冒了,今天就只看了一下数据结构这篇文章。
算法是一系列程序指令,用于处理特定的运算和逻辑问题。衡量算法优劣的主要标准是时间复杂度和空间复杂度。数据结构是数据的组织、管理和存储格式,其使用目的是为了更高效地访问和修改数据展开评论点赞 - #青训营 x 字节后端训练营#
day 09
go里的defer,defer语句会将其后面跟随的语句进行延迟处理。在defer归属的函数即将返回时,将延迟处理的语句按defer定义的逆序进行执行,也就是说,先被defer的语句最后被执行,最后被defer的语句,最先被执行展开评论点赞 - #青训营 x 字节后端训练营#
day 08
学习map,在go中map 是由 key-value 对组成的,key 只会出现一次。和 map 相关的操作主要是增加一个 k-v 对、删除一个 k-v 对、修改某个 k 对应的 v 和查询某个 k 对应的 v。简单说就是最基本的增删查改展开赞过评论1