美文网首页
互联网开发常见招式

互联网开发常见招式

作者: 柠檬小猪 | 来源:发表于2022-03-21 11:25 被阅读0次

脉冲式

数据库刷盘,Nacos心跳包

为了减少交互,采用先保存到缓存,然后定期打包发送的方式。

搭便车式

MySql修改缓存,TCP的确认标识符ack

由于信息太少,不值得单独发送,等待其他数据一起打包发送。

上面两个经常一起用,像地铁一样。

清单式

就像外出旅行不带行李,只带清单到站了再买一样。

Http/2压缩表头,JVM栈的动态链接(指向JVM的常量池)

一些常用的数据,使用静态表的方式保存,交流的时候传递id,然后自己去查找。

二分查找式

MySql的B+Tree,MongoDB的B-Tree,HashMap的红黑树,Redis的跳表

由于数组需要申请连续空间,而且扩容不灵活,所以数据库大多使用链表;但是链表不能随机查找,只能从头遍历,查找效率底下。

数据库为了提高查找效率,把链表改进成树(现在有点网的趋势,比如跳表)。

预加载

先将数据注入内存。

数据库的热库,Spring的IOC

计算机的操作就是从内存中取值去CPU运算,再把结果存到另一块内存上;现在内存越来越大,预先把可能要用到的东西存到内存里,可以大大提高效率。

顺序头式

TCP头,Http/2二进制分帧

通过管道传输信息虽然快,但很可能会顺序错乱,有一个标记信息顺序的头就很重要了。

日志控制式

各种数据库恢复和同步;好处是日志可以随时记录,而存储数据需要排列,压缩,申请连续空间等复杂操作,耗时更久。所以日志先行,刷盘在后。

权力反转式

公共消息通知,消息队列(kafka)的某些实现(另一些是脉冲式),AIO

平时都是A向B发送消息,但是有时B忙不过来或者B根本就不在,这时候可以换成B向A请求。

就向候诊室一样,医生一次只能看一个病人,但是病人不会一个一个的生病;所以需要候诊室来等待叫号。

轮询式

进程,线程,NIO,springMVC,vue的双向绑定

实际上管事的只有一个人,但是他不停的运行,可以管理好几条线。

多个进程是一个CPU在管,多个线程是一个进程在管,多个controller层方法是DispatchServlet在管,vue监听器监听所有属性。

临时空间式

消息队列,GC的幸存者区,GC的复制法

虽然用法不一样,但都是用来整理数据;一个缓冲区,内存也是一个这种临时空间,有的硬件I/O速度快,有的慢,那么都预先复制到内存,然后由内存传输,大家都不耽误事。

所谓优化,就是空间和时间的平衡

内存够大就多放一点到内存里,内存不够大就懒加载。

类加载是异步的,但是spring容器变成了启动时就加载;

堆内存是可变的,但是内存足够大的情况下会将最小值和最大值设成一样,防止它动态变化影响性能;

链表只能从头开始一个一个查询(比如1-100),但是跳表在链表的基础上新增了一级表(1,3,5,7),二级表(1,10,20)等,间隔越来越大,通过增加链表来达到加快查找的效果。(从高级表开始快速定位)

相关文章

网友评论

      本文标题:互联网开发常见招式

      本文链接:https://www.haomeiwen.com/subject/evhzkrtx.html