首页 > 其他分享 >10月13日总结

10月13日总结

时间:2023-10-16 12:44:28浏览次数:29  
标签:总结 10 13 CabinClass 08 00 DateTime new

.NET高性能开发-位图索引(一)

首先来假设这样一个业务场景,大家对于飞机票应该不陌生,大家在购买机票时,首先是选择您期望的起抵城市和时间,然后选择舱等(公务舱、经济舱),点击查询以后就会出现航班列表,随意的点击一个航班,可以发现有非常多组价格,因为机票和火车票不一样,它的权益、规则更加的复杂,比如有机票中有针对年龄段的优惠票,有针对学生的专享票,有不同的免托运行李额、餐食、有不同的退改签规则,甚至买机票还能送茅台返现等等。

在中国有几十个航司、几百个机场、几千条航线、几万个航班,每个航班有几十上百种产品类型,这是一天的数据,机票可以提前一年购买,总计应该有数十亿,而且它们在实时的变动,没有任何一种数据库能解决这样量级下高并发进行实时搜索的问题。

业内的解决方案都是加载数据到内存进行计算,但是内存计算也是有挑战的,如何在短短的几十毫秒内处理数十亿数据将搜索结果呈现在客户面前呢?

其中有很多可以聊的地方,今天主要聊大规模实时搜索引擎技术的一个小的优化点;通过这个简单的场景,看如何使用.NET构建内存位图索引优化搜索引擎计算速度。

声明:为简化知识和方便理解,本文场景与解决方案均为虚构,如有雷同纯属巧合。

由于篇幅问题,本系列文章一共分为四篇:

介绍什么是位图索引,如何在.NET中构建和使用位图索引

位图索引的性能,.NET BCL库源码解析,如何通过SIMD加速位图索引的计算

CPU SIMD就走到尽头了吗?下一步方向是什么?

构建高效的Bitmap内存索引库并实现可观测性(待定,现在没有那么多时间整理)

什么是位图索引#

要回答这样一个问题,我们首先来假设一个案例,我们将航班规则抽象成下面的record类型,然后有如下这样一些航班的规则数据被加载到了内存中:

///


/// 舱等
///

public enum CabinClass {
// 头等舱
F,
// 经济舱
Y
}

///


/// 航班规则
///

/// 航司
/// 舱等
/// 起飞机场
/// 抵达机场
/// 起飞时间
public record FlightRule(string Airline, CabinClass Class, string Origin, string Destination, string FlightNo, DateTime DepartureTime);

var flightRules = new FlightRule[]
{
new ("A6", CabinClass.F, "PEK", "SHA", "A61234", DateTime.Parse("2023-10-11 08:00:00")),
new ("CA", CabinClass.Y, "SHA", "PEK", "CA1234", DateTime.Parse("2023-10-13 08:00:00")),
new ("CA", CabinClass.Y, "SHA", "PEK", "CA1234", DateTime.Parse("2023-10-14 08:00:00")),
new ("CA", CabinClass.Y, "SHA", "PEK", "CA1234", DateTime.Parse("2023-10-15 08:00:00")),
new ("CA", CabinClass.F, "SHA", "PEK", "CA1234", DateTime.Parse("2023-10-15 08:00:00")),
new ("MU", CabinClass.F, "PEK", "CSX", "MU1234", DateTime.Parse("2023-10-16 08:00:00")),
new ("9C", CabinClass.Y, "PEK", "CSX", "9C1234", DateTime.Parse("2023-10-17 08:00:00")),
};

标签:总结,10,13,CabinClass,08,00,DateTime,new
From: https://www.cnblogs.com/lmyy/p/17767109.html

相关文章

  • 10月15日《需求分析与系统设计》阅读笔记二
    需求分析与系统设计(二)阅读笔记同样这本书也提到些关于uml“统一建模语言”,除了在上本书中的阅读笔记中所说的外,统一建模语言还是一种通用的、可视化的建模语言,用于对软件系统的人工制品进行详细说明、可视化、构造和文档化。它捕获对必须构建的系统的决策和理解,用于理解、设计、......
  • 1024福利来啦,这一份活动攻略快收好!(附奖品图)
    活动时间2023年10月16日——2023年10月24日15:51活动页面戳此直达>>>活动攻略1、免费摇色子,实体礼品免费送6面色子,3面有实体礼品。摇中概率嘎嘎的~每日免费赠送1次摇色子次数,还有次数增加通道(戳此直达>>)机械键盘“悟空熊”冰箱贴“悟空熊”勋章2、新人福利:0元领大号鼠标垫如果你未......
  • P1019 [NOIP2000 提高组] 单词接龙
    P1019[NOIP2000提高组]单词接龙注意:1.相邻不包含2.每个单词最多使用两次3.如果两部分可以接龙,直接退出,因为如果再继续,长度一定变短(因为相邻的会抵销)4.加个特殊字符,这样就可以不用特判了因为n很小,直接暴力枚举1.如果两个可以接龙直接合并(注意相邻相同要抵消)2.暴力枚举每个单......
  • T175410 分成互质组
    T175410分成互质组因为n很小,直接暴力枚举两种状态:1.放入桶中。如果当前数字可以放入某个桶中,放入。如果可以放入多个桶,先一个一个来,全部枚举。注意:枚举完之后记得恢复现场2.新开辟一个桶。如果不能放入,则开辟一个桶。如果可以放入,也可以选着不放入,再新开辟一个桶:防止遗留......
  • Secure Code Warrior Introduction to OWASP Top 10 Awareness (with latest updates
    MissingFunctionAccessControlAccesstothesefunctionalitiesshouldberestrictedtoauthenticatedusers.However,thecurrentmechanismonlycheckswhetherauserexists.Anyuser,authenticatedornot,willbeabletoaccessrestrictedinformation.U......
  • 1024排行榜福利,Top1得HuaWei智能手表(前三皆有奖)
    1024排行榜福利来啦!(戳此直达>>)正在发文的博主们被精选/推荐的文章数量越高排行榜越高奖品越丰厚都有什么礼品?TO1是华为WATCHGT3TOP2是VGNV98Pro机械键盘TOP3是倍思充电宝20W快充活动时间限制?10月16日——10月24日15:51“你”的文章可以被精选/推荐吗?只要你有一篇图文并茂的技......
  • BitBake使用攻略--BitBake的语法知识二(转载自https://www.cnblogs.com/chegxy/archive
    目录写在前面1.BitBake中的任务2.任务配置2.1依赖2.1.1内部任务间的依赖2.1.2不同菜谱下的任务间依赖2.1.3运行时态下的依赖2.1.4递归依赖2.1.5任务间的依赖2.2事件2.3校验和3.ClassExtensionMechanism 写在前面这是《BitBake使用攻略》系......
  • 23/10/14 模拟赛总结
    时间安排7:40-7:50看题。7:50-8:50A题看了一会意识到是并查集,但是我没有发现只需输出亮着的魔法灯的个数模2意味着什么,直接统计了个数,于是被1操作给卡了。想了很长时间才发现只需维护奇偶就可以。8:50-10:00写了个B的爆搜,同时输出了方案。通过几个样例的最优解......
  • 23/10/15 模拟赛总结
    时间安排7:50-8:00看题,怎么一分都不会。8:00-9:00脑瘫了,A题随便跑个dij就能过我想了半天不会处理,最后还是猜出来可能要建个超级源点,没想到过了大样例。9:00-10:40B题貌似可做,手模了几组样例,好像会了。为了验证想法写了个爆搜又造了几个小数据,做法应该是正确的,直接......
  • 苹果cms,V10版本漏洞分析和修复,安全合集
    漏洞分析方法(写代码的时候,注意把,做好校验和安全检查)https://www.cnblogs.com/zhengna/p/15165213.html后台php漏洞Maccms潜藏后门分析复现,webshell大马https://www.cnblogs.com/yankaohaitaiwei/p/11688470.htmlsql注入漏洞https://www.cnblogs.com/bugxf/p/16015117.html......