- 博客(14)
- 收藏
- 关注
转载 这10种神级性能优化手段,你用过几个?
以ROI的视角看软件开发,初期人力成本的投入,后期的维护成本,计算资源的费用等等,选一个合适的方案而不是一个性能最高的方案。本篇结合个人经验总结了常见的性能优化手段,这些手段只是冰山一角。在初期就设计实现出一个完美的高性能系统是不可能的,随着软件的迭代和体量的增大,利用压测,各种工具(profiling,vmstat,iostat,netstat),以及监控手段,逐步找到系统的瓶颈,因地制宜地选择优化手段才是正道。有利必有弊,得到一些必然会失去一些,有一些手段要慎用。
2023-05-13 22:25:40
711
转载 线性哈希-line hash
如果哈希结果小于分裂号,那么表示这个key所插入的桶已经进行了分割,那么我就采用h1再次进行哈希,而h1的哈希结果就这个key所该插入的桶号。如果算出的桶号小于了分裂点,表示桶已经进行的分裂,我们采用h1进行hash运算,算出key所对应的真正的桶号。2:现在0桶被分裂了,新数据的插入怎么才能保证没分裂的桶能正常工作,已经分裂的桶能将部分插入到新分裂的桶呢?5:虽然进行了分裂,但桶3并不是分裂点,所以桶3会将多出的key,放于溢出页.,一直等到桶3进行分裂。3:线性哈希的论文中是按上面的规则来进行分裂的。
2023-05-07 14:51:19
427
1
转载 jion和in
使用DISTINCT关键字去重的JOIN查询语句:SELECT DISTINCT CONCAT(first_name,last_name) FROM customer AS a INNER JOIN rental AS b ON a.customer_id = b.customer_id WHERE rental_id
2023-04-29 17:46:35
389
转载 mysql插入一条数据的过程
之后,我们就可以正式开始更新这行记录了,更新的时候,先是会更新缓冲池中的记录,此时这个数据就是脏数据。接着我们来思考一个问题,按照上图的说明,现在已经把内存里的数据进行了修改,但是磁盘上的数据还没修改。至于锁的详细分析,我们后续也会有,大家不用着急,在这里先初步了解即可,我们看下面的图。其实是不要紧的,因为你一条更新语句,没提交事务,就代表他没执行成功,此时。突然宕机的时候,用来恢复你更新过的数据的,但是我们现在还没法直接讲解。中更新过的数据还没刷新到磁盘里去,此时内存里的数据是已经更新过的。
2023-04-11 17:20:47
1536
转载 磁盘io对齐以及磁盘读写放大产生的原因
第二个是性能的开销:物理硬件是跟真实世界的设计匹配的,对于机械磁盘的写是利用磁化介质来存储数据,如果磁盘上是1 个字节,甚至 1 个 bit 来独立存储,那磁盘磁头的次数将无比庞大,性能也将无比的下降(每一次都是写数据+校验)。格式化文件系统的时候,一定要注意对齐的偏移,不要故意搞成非对齐的偏移,不然一旦文件系统格式化的时候都不对齐,后面谁也救不了,除非你重新格式化文件系统。写是比较复杂的,用户现在手握 1 个字节的数据,想要写到磁盘,但是磁盘的 IO 单元是扇区,所以本质上是读改写的方式。
2023-03-29 10:39:50
785
转载 sql 算法 : Nested Loop,Hash Join,Merge Join介绍
对于被连接的数据子集较小的情况,Nested Loop是个较好的选择。Nested Loop就是扫描一个表(外表),每读到一条记录,就根据Join字段上的索引去另一张表(内表)里面查找,若Join字段上没有索引查询优化器一般就不会选择 Nested Loop。
2023-03-22 22:07:33
652
转载 进程组、session、前台任务、后台任务、守护进程
shell里面启动一个进程后,一般都会将该进程放到一个单独的进程组,然后该进程fork的所有进程都会属于该进程组,比如多进程的程序,它的所有进程都会属于同一个进程组,当在shell里面按下CTRL+C时,该程序的所有进程都会收到SIGINT而退出。对于daemon进程,在会话中创建,但是不依赖于会话,是常驻在后台的进程。shell中启动一个进程时,默认情况下,该进程是一个前台进程组的leader,可以收到用户的输入,并且可以将输出打印到终端,只有当该进程组退出后,shell才可以再响应用户的输入。
2023-03-21 19:06:55
506
转载 redis 八股
利用系统调用函数,使多个描述符的I/O操作都能在一个线程内并发交替地顺序完成(理解为监控室可以看到多个摄像头的视频,做统一监控)这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程(单线程),redis同时对多个IO进行监控参考相关链接:什么是多路I/O复用模型redis的多路复用是什么鬼RDB和AOF都有,优先加载AOF出现意外,AOF丢失数据比RDB少一致性hash算法主要应用于分布式存储系统中,可以有效地解决分布式存储结构下普通余数Hash算法带来的伸缩性差的问题。
2023-03-19 17:04:28
3854
转载 一致性hash
一致性哈希算法也是使用取模的方法,但是取模算法是对服务器的数量进行取模,而一致性哈希算法是对 2^32 取模,具体步骤如下:步骤一:一致性哈希算法将整个哈希值空间按照顺时针方向组织成一个虚拟的圆环,称为 Hash 环;步骤二:接着将各个服务器使用 Hash 函数进行哈希,具体可以选择服务器的IP或主机名作为关键字进行哈希,从而确定每台机器在哈希环上的位置。
2023-03-03 19:33:48
79
转载 红黑树简介
这里节点的实现相较于AVL树我们依旧是创建成KV模型三叉链结构,唯一有所改变的是这里要通过枚举的方式把红色和黑色定义好,并在节点类内部定义变量_col表示节点颜色,最后记得写上构造函数。enumColourRed,Black,//节点类templateclassKclassVstructRBTreeNode//三叉链结构//存储的键值对//节点的颜色//构造函数RBTreeNodeconst:_left(nullptr。
2023-03-03 17:01:23
145
转载 web服务器项目常见面试题目(C++)
举个例子,我们现在有一个生产者-消费者队列和三个线程。1) 1号线程从队列中获取了一个元素,此时队列变为空。2) 2号线程也想从队列中获取一个元素,但此时队列为空,2号线程便只能进入阻塞(cond.wait()),等待队列非空。3) 这时,3号线程将一个元素入队,并调用cond.notify()唤醒条件变量。4) 处于等待状态的2号线程接收到3号线程的唤醒信号,便准备解除阻塞状态,执行接下来的任务(获取队列中的元素)。
2023-03-03 14:02:12
2446
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人