HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    前端排行榜(前端排行榜页面)

    发布时间:2023-03-23 12:25:27     稿源: 创意岭    阅读: 143        问大家

    大家好!今天让小编来大家介绍下关于前端排行榜的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,相关业务请拨打电话:175-8598-2043,或添加微信:1454722008

    文章目录列表:

    前端排行榜(前端排行榜页面)

    一、射频前端模组,看这一篇就够了

    姓名:刘轩     学号:19020100412   学院:电子工程学院

    转自:https://zhuanlan.zhihu.com/p/297965743

    【嵌牛导读】射频前端模组技术介绍

    【嵌牛鼻子】射频前端  滤波器  

    【嵌牛提问】中国企业如何克服“拿来主义”,快速迭代发展?

    【嵌牛正文】

    射频前端(RFFE, Radio Frequency Front-End)芯片是实现手机及各类移动终端通信功能的核心元器件,全球市场超过百亿美金级别。过去10年本土手机的全面崛起,为本土射频前端产业的发展奠定了坚实的产业基础;而5G在中国的率先商用化,以及全球贸易环境的变化,又给本土射频行业加了两捆柴火。射频前端芯片产业在我国也已经有了15年以上的发展历史,创新和创业活动非常活跃,各类企业数十家,也是市场和资本高度关注的领域。本文作者有幸在射频芯片行业从业11年,从2G时代做到今天的5G,也在外企、民企、国企都工作过,直接开发并大量量产过射频的每一类型产品。这篇文章总结了作者与一些行业朋友近些年的讨论,尝试对射频模组产品的技术市场及商业逻辑进行梳理。同时,本土射频发展了十余年,竞争是行业主线,合作与友谊是非常稀缺的资源。本文将会重点分享“模组化”的相关知识,也是希望更多的本土厂商去通过“合作”分享模组化的巨大机遇。

    引言

    根据魏少军教授在“2020全球CEO峰会”的《人间正道是沧桑-关于大变局下的战略定力》主题演讲,统计得出对中国市场依赖度最高(依营收占比计算)的美国公司,如下图。我们可以看到SKYWORKS、Qualcomm、Qorvo、Broadcom这四家美国射频巨头(其中SKYWORKS和Qorvo以射频业务为主;Qualcomm和Broadcom包含了射频业务)恰好占据了排行榜前4名。

    射频前端的国际情况

    射频前端技术主要集中在滤波器(Filter)、功率放大器(PA, Power Amplifier)、低噪声放大器(Low Noise Amplifier)、开关(RF Switch)。目前全球射频市场由引言提到的四家美国射频公司Skyworks、Qualcomm、Qorvo、Broadcom与日本Murata这五大射频巨头寡占。

    五家射频巨头在PA与LNA等市场占有率超过九成。滤波器方面,则分为声表面波(SAW, Surface Acoustic Wave)与体表面波(BAW, Bulk Acoustic Wave)滤波两种主要技术。目前,SAW滤波器市场由Murata占据一半,Skyworks约10%,Qorvo约4%,其余则被太阳诱电、TDK等大厂瓜分。BAW滤波器的市场则由美国企业占据9成市场。

    由此可见,射频前端是巨大的市场,能容纳5家国际巨头持续发展。国际巨头的技术跨度大,模组化能力强;模组化产品是国际竞争的主赛道。每家巨头都拥有BAW技术或其替代方案。

    射频前端的国内情况

    关于射频前端的国内情况有很多文章都曾提到,这里不赘述,只给几个共识比较多的结论:

    1.本土公司普遍以分立器件为主要方向;分立器件是当前本土竞争的主赛道。2.本土公司缺乏先进滤波器技术及产品,模组化能力普遍不强。

    5G模组化挑战及机遇的来源

    PCB布线空间及射频调试时间的挑战,下沉到了入门级手机,打通了国产模组芯片的迭代升级路径。

    射频模组芯片,不是一个新生的产品系列。事实上,射频模组芯片的使用几乎与LTE商业化同时发生。过去10年内,各种复杂的射频模组已经普遍应用在了各品牌的旗舰手机中;与此同时,在大量的入门级手机上,分立器件的方案也完全能够满足各方面的要求。因此在过去10年就出现了泾渭分明的两个市场:旗舰机型用模组方案;入门机型用分立方案。模组方案要求“高集成度和高性能”,因而价格也很高;而分立方案要求“中低集成度和中等性能”,售价相对而言就低不少。两种方案之间存在巨大的技术和市场差异,我们可以把这个称作4G时代的“模组鸿沟”。

    4G时代的“模组鸿沟”

    5G的到来,彻底改变了这个状况。

    相比于4G入门级手机的2~4根天线,5G入门级手机的天线数目增加到了8~12根;需要支持的频段及频段组合也在4G的基础上显著增加。大家知道,射频元器件的数目,与天线数目及频段强相关,这就意味着射频元器件的数目出现了急剧地增长。与此同时,由于结构设计的要求,5G手机留给射频前端的PCB面积是无法增加的,因此分立方案的面积大大超过了可用的PCB面积。这是空间带来的约束。

    还有一个挑战,来自于调试时间。4G使用分立器件方案的射频调试时间,一般在一周以内。随着5G射频复杂度的显著提升,假设使用分立方案,可能会带来3~5倍的调试时间增加;从成本上来讲,还需要消耗更贵的5G测试设备、熟悉5G测试的工程师资源。如果使用模组,大部分的调试已经在模组设计过程中在内部实现了,调试工作量将更多地移到软件端,因此调试效率大大提升。这是时间带来的约束。

    时间和空间的约束,强烈而普遍。因此在入门级5G手机中,就天然出现了对“中低性能和高集成度”模组的需求,与旗舰手机的“中高性能和高集成度”模组形成了管脚统一。既然都需要高集成度的模组,只是指标要求不一样,这样国产的模组芯片就可以从“中低性能”(5G入门级手机)向“中高性能”(5G旗舰手机)迭代演进。因此,“模组鸿沟”便被填平了。

    任何事情都是两面的。“模组鸿沟”被填平以后,分立市场的空间也出现了风险;对专长于分立芯片的本土企业来讲,也需要巨大的资源和力量去在模组产品中找到自身的位置;如果不能突破,就会在不远的未来进入到瓶颈阶段。

    在5G的早期阶段,目前市场上也出现了一种混合方案,即用分立器件和模组混搭的方案。这个方案的出现,有很多客观的原因,其中就包括历史上形成的“模组鸿沟”。这种方案是妥协的产物,牺牲了一些关键指标,而且面积上也做了让步。如果没有专注做国产化模组的芯片公司,就不会有优秀的国产模组芯片;如果没有优秀的国产模组芯片,模组方案的价格永远高高在上。

    滤波器技术简要分类

    BAW 滤波器: 即体声波滤波器。具有插入损耗小、带外衰减大等优点,同时对温度变化不敏感,BAW滤波器的尺寸大小会随着频率升高而缩小,因此尤其适用于1.7GHz以上的中高频通信,在5G与sub-6G的应用中有明显优势。

    SAW滤波器: 即声表面波滤波器。采用石英晶体、铌酸锂、压电陶瓷等压电材料,利用其压电效应和表面波传播的物理特性而制成的一种滤波专用器件。SAW滤波器具有性能稳定、使用方便、频带宽等优点,是频率在1.6GHz以下的应用主流。但存在插入损耗大、处理高频率信号时发热问题严重等缺点,因此在处理1.6GHz以上的高频信号时适用性较差。

    LC型滤波器: 即电感电容型滤波器。LC滤波器一般是由滤波电容、电抗和电阻适当组合而成,电感与电容一起组成LC滤波电路。

    射频模组简要分类

    射频前端模组是将射频开关、低噪声放大器、滤波器、双工器、功率放大器等两种或者两种以上的分立器件集成为一个模组,从而提高集成度和性能,并使体积小型化。根据集成方式的不同,主集天线射频链路可分为:FEMiD(集成射频开关、滤波器和双工器)、PAMiD(集成多模式多频带PA和FEMiD)、LPAMiD(LNA、集成多模式多频带PA和FEMiD)等;分集天线射频链路可分为:DiFEM(集成射频开关和滤波器)、LFEM(集成射频开关、低噪声放大器和滤波器)等。

    主集天线射频链路

    分集天线射频链路

    射频前端的“价值密度”

    既然5G手机PCB面积是受限制的资源,同时我们需要在5G手机内“挤入”更多的射频功能器件,因此我们评价每一类型射频器件时,需要建立一个参数来进行统一描述,作为反映其价值与PCB占用面积的综合指标。

    ValueDensity=(平均销售价格ASP)/(芯片封装大小)

    接下来,我们使用VD值这个工具,分别分析一下滤波器、功率放大器、射频模组三类产品的情况。

    1. 滤波器的VD值

    首先说明一点,由于通常情况下滤波器还需要外部的匹配电路,实际的VD值比器件的VD值还要再低一些。我们先忽略这个因素。根据以上的数据,我们可以得到一些结论:从LTCC到四工器,VD值持续增加,从1.2到10.0,增加比较快速。

    2. 功率放大器的VD值

    根据以上数据,也可以看到: a) 从2G到4G,VD值从0.6增加到了1.5。b) 4G向CAT1演进的小型化产品,以及向HPUE或者Phase5N演进的大功率PA,VD值增加到了2附近。

    3. 射频模组的VD值

    根据以上数据,可以观察到: a) 接收模组普遍的VD值在5附近;b) 接收模组中的小封装H/M/L LFEM,VD值非常突出,大于10;c) 发射模组(除FEMiD以外),VD值在4~6之间;d) FEMiD具有发射模组最高的VD值。因此当FEMiD与VD值较低的MMMB PA混搭时,也能达到合理的PCB布图效率。

    表格汇总的同时,我们也增加了技术国产化率和市场国产化率的参考数据。一般来讲,市场国产化率较低的、或者技术国产化率远远超过国产化率数字的细分品类,VD值会虚高一些。在本土相应产品市占率提高以后,未来还会有比较明显的降价空间。

    射频发射模组的五重山

    发射1: PA与LC型滤波器的集成,主要应用在3GHz~6GHz的新增5G频段,典型的产品是n77、n79的PAMiF或者LPAMiF。这些新频段的5GPA设计非常有挑战,但由于新频段频谱相对比较“干净”,所以对滤波器的要求不高,因此LC型的滤波器(IPD、LTCC)就能胜任。综合来看,这类产品属于有挑战但不复杂的产品,其技术和成本均由PA绝对掌控。

    发射2: PA与BAW(或高性能SAW)的集成,典型产品是n41的PAMiF或者Wi-Fi的iFEM类产品,频段在2.4GHz附近。这类产品的频段属于常见频段,PA部分的技术规格有一定挑战但并不高。由于工作在了2.4GHz附近,频段非常拥挤,典型的产品内需要集成高性能的BAW滤波器来实现共存。这类产品由于滤波器的功能并不复杂,PA仍有技术控制力;但在成本方面,滤波器可能超过了PA。综合来讲,这类产品属于有挑战但不复杂的产品,PA有一定的控制力。

    发射3: LowBand发射模组。LB (L)PAMiD通常集成了1GHz以下的4G/5G频段(例如B5、B8、B26、B20、B28等等),包括高性能功率放大器以及若干低频的双工器;在不同的方案里,还可能集成GSM850/900及DCS/PCS的2GPA,以进一步提高集成度。低频的双工器通常需要使用TC-SAW技术来实现,以达到最佳的系统指标。根据系统方案的需要,如果在LB PAMiD的基础上再集成低噪声放大器(LNA),这类产品就叫做LB LPAMiD。可以看到,这类产品的复杂度已经比较高:PA方面,需要集成高性能的4G/5GPA,有时候还需要集成大功率的2GPA Core;滤波器方面,通常需要3~5颗使用晶圆级封装(WLP)的TC-SAW双工器。总成本的角度来看(假设需要集成2GPA),PA/LNA部分和滤波器部分占比基本相当。LB (L)PAMiD是需要有相对比较平衡的技术能力,因此第三级台阶出现在了PA和Filter的交界处。

    发射4: FEMiD。这类产品通常包含了从低频到高频的各类滤波器/双工器/多工器,以及主通路的天线开关;并不集成PA。FEMiD产品通常需要集成LTCC、SAW、TC-SAW、BAW(或性能相当的I.H.PSAW)和SOI开关。村田公司定义了这类产品,并且过去近8年的时间内,占据了该市场的绝对主导权。三星、华为等手机大厂,曾经或正在大量使用这类产品在其中高端手机中。如前文所述,有竞争力的PAMiD供应商主要集中在北美地区;出于供应链多样化的考虑,一些出货量非常大的手机型号,就可能考虑使用MMMB(Multi-Mode Multi-Band) PA加FEMiD的架构。MMMB PA的合格供应商广泛分布在北美、中国、韩国,而日本村田的FEMiD产能非常巨大(主要表现在LTCC和SAW)。又如前文所述,FEMiD的VD值非常高,整体方案的空间利用率也在合理范围内。

    发射5: M/H (L)PAMiD。这类产品是射频前端最高市场价值也是综合难度最大的领域,是射频前端细分市场的巅峰。M/H通常覆盖的频率范围是1.5GHz~3.0GHz。这个频段范围,是移动通信的黄金频段。最早的4个FDDLTE 频段Band1/2/3/4在这个范围内,最早的4个TDD LTE频段B34/39/40/41在这个范围内,TDS-CDMA的全部商用频段在这个范围内,最早商用的载波聚合方案(Carrier Aggregation)也出现在这个范围(由B1+B3四工器实现),GPS、Wi-Fi 2.4G、Bluetooth等重要的非蜂窝网通信也都工作在这个范围。可以想象,这段频率范围最大的特点就是“拥挤”和“干扰”,也恰恰是高性能BAW滤波器发挥本领的广阔舞台。由于这个频率范围商用时间较长,该频率范围内的PA技术相对比较成熟,核心的挑战来自于滤波器件。

    先解释一下为什么这段频率是移动通信的黄金频率。在很长的发展过程中,移动通信的驱动力来自移动终端的普及率,而移动终端普及的核心挑战在于终端的性能和成本。过高的频率,例如3GHz以上、10GHz以上,半导体晶体管的特性下降很快,很难做出高性能;而过低的频率,例如800MHz以下、300MHz以下,需要天线的尺寸会非常巨大,同时用来做射频匹配的电感值和电容值也会很大,在终端尺寸的约束下,超低频段的射频性能很难达到系统指标。简而言之,从有源器件(晶体管)的性能角度出发,希望频率低一些;从无源器件(电容电感和天线)的性能角度出发,希望频率高一些。有源器件与无源器件从本质上的冲突,到应用端的折衷,再到模组内的融合,恰如两股强大的冷暖洋流,在人类最波澜壮阔的移动通信主航道上,相汇于1.5~3GHz的频段,形成了终端射频最复杂也最有价值的黄金渔场:M/HB (L)PAMiD。多么地美妙!

    这类高端产品的市场,目前主要由美商Broadcom、Qorvo、RF360等厂商占据。下图是Qorvo公司在其官方公众号上提供的芯片开盖分析。可以看到,该类产品包含10颗以上的BAW,2~3颗的GaAs HBT,以及3~5颗SOI和1颗CMOS控制器,具有射频产品最高的技术复杂度。该类产品通常需要集成四工器或者五/六工器这类超高VD值的器件。

    M/H LPAMiD开盖图

    射频接收模组的五重山

    接收模组的五重山模型,如上图所述。

    接收1: 使用RF-SOI工艺在单颗die上实现了射频Switch和LNA。虽然仅仅是单颗die,但从功能上也属于复合功能的射频模组芯片。这类产品主要的技术是RF-SOI,在4G和5G都有一些应用。

    接收2 :使用RF-SOI工艺实现LNA和Switch的功能,然后与一颗LC型(IPD或者LTCC)的滤波器芯片实现封装集成。LC型滤波器适合3~6GHz大带宽、低抑制的要求,适用于5G NR部分的n77/n79频段。这类产品也是SOI技术主导,主要应用在5G。

    接收3: 从接收3往上走,接收模组开始需要集成若干SAW滤波器,集成度越来越高。通常需要集成单刀多掷(SPnT)或者双刀多掷(DPnT)的SOI开关,以及若干通路支持载波聚合(CA)的SAW滤波器。封装方式上,由于“接收3”的集成程度还不极限,因此有多种可能的路径。其中国际厂商的产品主要以WLP技术为主,除了在可靠度及产品厚度方面有优势,主要还是可以在更高集成度的其他产品中进行复用。

    接收4: 这类产品叫做MIMO M/H LFEM。主要是针对M/H Band的频段(例如B1/3/39/40/41/7)应用了MIMO技术,增加通信速率,在一些中高端手机是属于入网强制要求。看起来通信业对M/H这个黄金频段果然是真爱啊。技术角度出发,这类产品以RF-SOI技术实现的LNA加Switch为基础,再集成4~6个通路的M/H高性能SAW滤波器。国际厂商在这些频段已经开始普遍使用TC-SAW的技术,以达到最好的整体性能。

    接收5: 接收芯片的最高复杂度,就是H/M/L的LFEM。这类产品以非常小的尺寸,实现了10~15路频段的滤波(SAW Filter)、通路切换(RF-Switch)以及信号增强(LNA),具有超高的Value Density值(10左右),在5G项目上能帮助客户极大地压缩Rx部分占用的PCB面积,把宝贵的面积用在发射/天线等部分,提升整体性能。这类产品需要的综合技能最高,也基本必须要用WLP形式的先进封装方式才能满足尺寸、可靠度、良率的要求。

    总结

    1.射频模组的核心要求是多种元器件的小型化及模组集成。

    2.无论是发射模组还是接收模组,纯5G的模组是困难但不复杂,最有挑战也最具价值的是4G/5G同时支持的高复杂度模组。

    二、程序员培训机构排名前十

    程序员培训机构排名前十如下:

    1、动力节点

    作为CCTV专访的品质企业,从2009年建校以来,专注Java培训13年。

    这家机构极具特色,别家机构可能C/C++、UI/UE设计,软件测试、人工智能等等,全线发展。他们只教Java,深知Java语言的优势。

    前端排行榜(前端排行榜页面)

    因为Java涉及范围广,前端,后端,大数据,游戏开发,移动端开发等等都能做,所以动力节点在Java界深耕13年,甚至有自己独创的PDT4教学法。并且凭借断层式的高就业率被业界誉为“口口相传的Java黄埔军校”。

    所以如果大家想学习Java,小编比较推荐动力节点。毕竟集全公司之力,十几年只专注研发培训一门Java课程,确实是很难得的品质机构。

    2、黑马程序员

    黑马程序员是传智教育下的IT教育品牌。主要培养人工智能、python大数据开发、智能制造、软件、互联网等数字化专业人才及数据分析、网络营销、新媒体等数字化应用人才。

    据调查资料分析,如果大家想学习大数据开发可以好好了解一下黑马。

    3、千锋教育

    千锋教育开设HTML5大前端培训、JavaEE+分布式开发培训、Python人工智能+数据分析培训、全链路UI/UE设计培训、云计算培训等等、等等、等等课程。我就不一一介绍了。

    这些“等等”课程里面,他家小编只比较推荐前端类的课程。至于其他的课程,你们自己再参悟参悟?

    4、北大青鸟

    北大青鸟和“北大”没关系,大家不要误会。这家公司目前主要推出了BCSP软件开发专业、BCNT网络运维专业、BCUI全链路UI设计、BCVE视频特效专业等课程。

    这里值得一提的是研发团队还行,网络工程类的课程可以考虑。

    5、云和数据

    这家机构专注IT职业教育、主要做大数据采集、大数据清洗、大数据存储、大数据分析、大数据可视化、大数据运维、Web前端开发、UI/UE等方向的课程。

    所以云和数据的大数据方向的课程可以!

    6、中软国际

    香港主板上市的大公司,本身就是做软件的,自身具备很多优势。这个公司我比较推荐信息安全方面的课程。

    但是它主要做“校企合作”,对于想精进自己技术的职场人可能不太合适。这里也要提醒大家考虑“校企合作”的利弊。

    7、传智播客

    人工智能方面做得不错,黑马程序员就是它旗下的,他的规模和课程以及质量,大家都是有目共睹的。

    8、优就业

    优就业是中公教育旗下IT培训品牌,致力于培养面向电商及互联网领域的高端人才,电商培训类课程比较推荐。

    前端排行榜(前端排行榜页面)

    9、博为峰

    博为峰是上海博为峰软件技术股份有限公司旗下品牌, 主营软件人才培训,以及一站式软件测试服务。

    Python大数据分析课程值得一看。

    10、好程序员

    好程序员是千锋教育旗下的子公司,一定程度上共享千峰的教育资源。如果你就心仪好程序员的课程,那么建议直接报千峰。

    三、百度搜索实况排名与前台排名差距太大怎么回事?

    哪里看的实况排名!只能说,一切以前端排名为主,不一样的原因,可能会因为区域不一样或者搜索次数多与少,甚至是搜索习惯不一样,也会导致排名结果不一样的。

    四、分页功能设计(解决数据重复问题)

    传统分页的话,一般只考虑传页数和每页数据条数这两个参数给后端,为了方便后面描述,我们给这个传参方式起个名字叫 传统分页 。这种传参方式对于静态数据(数据不会变动)的分页是没问题的,因为每条数据的顺序、数据的总量,都是不变的。

    如果出现数据顺序变动或者数据总量变动的分页需求时,单纯的传page和limit已经不能解决了。

    不同的需求需要显示的列表也不一样。关于列表分页我认为主要关系到两个方面, 总量 (列表头插入了新数据) 和 排列顺序 传统分页 总量不变,排列顺序不变 的列表下是没有任何问题的,但只要这两个要素其中一个是变化的, 传统分页 方式就会出现BUG(具体案例后面会讲到)。关于上面提到两个要素对应的需求举例:

    现在有一个积分排行榜

    假定每页显示3条数据,在某一时刻拿第一页数据时,得到 A、B、C三条数据。就在此时,用户D突然增加了100积分,最新的排行榜情况变成了

    传统分页 的情况下,获取第二页数据时,即从当前排行榜第四条数据开始获取,得到 C、E,用户看到的数据就变成 A、B、C、C、E。这里C出现了2次,而且D消失了。这就是传统分页用在 数据排列顺序会改变的列表 时会出现的问题,因为列表顺序改变导致出现重复数据和丢失数据。

    这种 总量不变,排列顺序改变 的分页问题我能想到的暂时有两种方案解决:一次性取出、排行榜快照、通过变动记录表拿数据。

    这里说的一次性取出是针对类似“top100”这种取有限条数的需求。在比较简单的列表数据结构下一次性取出100条数据对服务器性能来说问题不大,但是在复杂数据结构下(涉及关联多个表、数据格式化、数据处理等)一次性处理100或更多的数据肯定是糟糕的做法。

    排行榜主要的分页问题是 影响排名的字段的值在不断变化导致列表顺序不断改变 ,我们现在可以一次性取出整个列表但是又担心复杂的数据结构导致服务器性能问题。那如果我们把整个功能拆分一下,用异步的思想来做这个功能设计如何呢。

    我们分两个接口来做这个功能:获取排行榜列表和获取用户排行榜数据。

    获取排行榜列表接口 一次性取整个排名列表的用户ID和排名相关的字段数据,这样就保证了整个列表的排序是不变的同时,又不增大服务器性能。

    获取用户排行榜数据接口 负责取排行榜要显示的用户的其他数据,这个接口接受多个用户ID的作为参数。这个接口做了类似分页的功能,前端每次从排行榜中按分页的方式按顺序取部分用户ID,然后通过这个接口获取具体数据显示给用户。

    下面以例子的方式来做具体说明:

    这是一个 积分排行 top100

    这里的排行条件是 积分 ,那我们的 获取排行榜列表接口 只需要取“用户ID”和“积分”即可,剩下的 “昵称”、“胜率”等数据通过 获取用户排行榜数据接口 获取。

    前端先请求 列表接口,获取到一下数据:

    然后根据这个列表数据,先取前10条的用户ID:5、12、60、2、77… 去请求 获取用户排行榜数据接口,把获得的用户数据填充到排行榜中。当用户下滑加载更多数据时再去列表取在11-20的用户ID重复上面的操作。

    如果是 top100 的需求,这个方案是比较 推荐 的,因为没有性能和储存空间上的额外消耗。

    因为考虑到主要问题出在排列顺序是变化的,而且通过其他APP也有看到过按时刷新的排行榜,所以想到了用快照的方式来解决。

    可以通过写一个定时脚本,每5分钟生成一次排行榜的快照信息并存下来。接口请求时直接从快照中取数据,这一定程度上解决了列表排序一直在变化问题。这里之所以说只解决了一定程度,是因为在每次刷新快照数据的时候,可能有用户刚好卡在这个时间点之间去请求(刷新快照前用户请求了第一页数据,刷新快照后用户请求第二页,这就出现 传统分页 同样的问题了)。

    可以通过在快照中加上 版本号 来解决问题。例如在生成快照的时候以当前时间戳作为版本号跟快照数据一起保存,同时需要系统保存多份快照数据以便用户获取旧快照数据。请求接口时默认拿最新版本的快照,如果接口传入了版本号就拿对应版本号的快照数据。

    每个完备的系统都会有数据变动的记录表,用于追踪数据变动和操作明细。记录变记录着数据每次变动前后的变化和变动时间,这一特性为使得数据的每次变动都有迹可循,我们就是利用这一点来做排行榜的分页。

    我们分页出问题的地方就是因为数据在不断变化导致排序不停改变。上面说到每次数据变动都会有记录,那我们只需要根据某一时刻之前用户的数据来做排名,是不是就解决数据不断变动这个问题。文字表达可能不太直观,看下面的数据演示应该能比较好理解。

    假定用户 A、B、C 初始默认都是100积分

    表: score_log

    假定在03分的时候请求了数据,通过下面的SQL语句就可以拿到03分之前的数据排行。

    得到第一页数据:

    第二页数据:

    关于这种方式的请求,前端需要记录发起第一次请求时的时间,以后每页的请求都带着这个时间。

    评论列表一般按照倒叙排列,而且顺序不变。因为是倒叙排列,所以最新的用户评论会放在最顶部,这就会导致问题了。我们还是用实际例子来说。

    假定每页拿3条数据,此时请求第一页,得到ID分别5、4、3的评论。在请求第二页之前,突然又来了一条留言,此时列表变成:

    传统分页 方式,此时获取第二页会得到ID 3、2、1,这里ID 3 就重复取出来了。

    这个问题的解决方案相比排行榜列表分页问题简单而且易懂。评论ID是一个自增的int字段,新的评论ID总是比旧评论ID要大,利用这一点我们可以很好的解决问题。

    接口传参:

    limit 就不用作解释,说一下lastid。当获取第一页数据时,因为没有上一页所以 lastid 传空或者不传,此时服务器取最新的数据即可。获取第二页数据时,lastid 传第一页最后一条数据的ID,此时服务器取 ID < lastid 的数据,这就保证最新的评论不会影响到当前用户的分页。

    这里做一个扩展,我们有时候看到有的页面在刷新的时候,会提示有多少条新的未查看评论(即列表头新的数据),这个功能的实现原理跟我们上面分页的原理差不多。在获取第一页数据时,把第一页的第一条数据ID保存下来,后面请求每一页时都把第一条ID( firstid )带上,服务器每次查 ID > firstid 的数据条数,如果大于0即表示有新的评论。

    首先说一下,下面提供的方法我自己也不满意(如果有什么想法欢迎大家留言交流)。参考了微博的评论排序也存在上面说到的分页bug,感觉要完美解决这个需求的分页问题花费的代价(实现时间、服务器性能、存储空间等)大于功能本身,所以建议读者选择比较折中的方式来处理(与产品或上级沟通实现的难度)。

    这个需求相比评论列表,多了点赞的功能,列表按点赞数量倒叙排列。先说一下不严谨情况下这个分页的实现方式:

    这种方式会有两个问题:

    我们可以沿用上面讲到的两个需求的解决方案。在解决列表排序问题上,我们可以沿用排行榜的 通过变动记录表拿数据 方式,增加一个表去记录评论的点赞变动记录(用空间换效率)。

    表结构:

    分页用到的查询语句:

    以上就是小编对于前端排行榜问题和相关问题的解答了,如有疑问,可拨打网站上的电话,或添加微信。


    推荐阅读:

    前端培训哪个机构靠谱(前端开发培训机构推荐)

    前端培训费用大概多少(前端开发培训一般几个月)

    杭州哪个区前端工作多点(杭州前端工作怎么样)

    重新经营已封禁商品会扣分吗(抖音小店重新经营已封禁商品)

    有人找黑客成功过吗(怎么黑进对方手机看微信聊天记录)