![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 60
Ethan3014
头发多睡眠足有妹子的程序员
展开
-
静态语言和动态语言的类
什么是类类class就是对对象object的抽象描述。class描述了object的特征,定义了object的属性和方法。在程序里面,只有知道了该object所属的class,我们才能正确的操作该object。静态语言中的类编译型语言完美的诠释了class的概念,编译器强制要求每一个object的属性和行为都在它所属的class里面有明确的定义。在object的整个生命周期,它都不会改变,object只能改变自身属性的value,不能改变属性的type,也不能增加或者减少属性。object不能改变自身原创 2021-10-14 22:09:39 · 105 阅读 · 0 评论 -
秒杀场景的挑战和解决方案
挑战秒杀是商品促销的常用手段,该用户场景的特点就是集中大量的下单,同时由于下单流程的特殊性,扣库存,下订单都要求很高的数据一致性,不能出现超卖错卖,所以下单请求其实是存在单点问题的(主要是数据库的处理速度不够快),不能做到平行扩展,在单位时间内对同一商品的下单请求存在上限。所以问题的核心就在于如何限制单位时间内用户的下单请求数量,也就是限流,同时又不能伤害用户的体验。面对秒杀场景,有很多相关的技术分析,大多都能分析到某一些技术优化点。其实这就是一些最佳实践。但是从更高一点的层次上来看,所有的优化方案(不原创 2021-10-14 10:48:19 · 2857 阅读 · 0 评论 -
软件工程师的技术层级
程序员的技术层级原创 2022-12-11 14:11:33 · 695 阅读 · 0 评论 -
乘法问题,次方问题
m*n的问题,其实操作系统是用位移来代替乘法的,这才实现了o1的复杂度,对32bit的乘法,最多执行32次的位移和加法运算次方问题归根到底是乘法问题,而每次乘法可以看作o1,所以算法就只能在减少乘法的次数上做功夫,我们可以把n做分解,表示成二进制形式,并且计算出前面的后面的也好计算。也可以使用递归,反正最后只需要logn次乘法...原创 2020-02-15 22:56:09 · 381 阅读 · 0 评论 -
排序问题
对于topn的问题,一般用最小堆来实现。唯一能实现On复杂度的就是桶排序,前提条件是待排序的key是有限集合,比如用户的年龄,用这个方式我们都能在on的时间复杂度以内找到排名m~n的元素。但是对于key无限大的情况,要取第m个元素也只需要on的复杂度,具体的算法就是利用快排的思路,每次找一个元素,快排一次,就可以得出左右两边分别有多少个元素,这样每次范围缩小一半,最终的平均复杂度是on...原创 2020-02-15 22:45:05 · 81 阅读 · 0 评论