最新要闻
- 焦点快看:要控制人类节奏!聊天机器人爱上用户并诱其离婚 微软出手限制了
- 年制绿氢3万吨、绿氧24万吨!我国全球最大绿氢项目开工
- 刘强东完了!章泽天官宣喜讯,被出轨4年。网友:这反击漂亮!
- 环球精选!特斯拉追尾公交致1死 车主呼吁放开单踏板模式:为何老是失控?这是原因
- 环球资讯:1986年拍摄的泰坦尼克号残骸视频首次公开:残骸尺寸巨大
- 当前滚动:如何保存石榴
- 当前观点:iPhone 15 Pro CAD渲染图对比iPhone 14 Pro:改用USB C端口、相机更凸起、边框更窄
- 今日热门!渔民出海偶遇100多只海豚逐浪嬉戏:场面很美很壮观
- 苹果iOS 16.4首个公测版发布:普通用户将告别测试版
- 天天观焦点:油电平价!比亚迪秦PLUS DM-i 2023冠军版杀疯了:9.98万就能买DM-i超级混动
- start+up韩剧在线观看_start up
- 环球快消息!女子不吃碳水半年狂减46斤 结果脱发、怕冷:治了半年
- 时讯:老黄厨房新菜来了 NVIDIA确认GTC 2023大会3月20日开幕
- 环球观天下!为什么这年头是个人就能造车?这事真就没门槛?
- 比半张A4纸还小 惠普1L迷你主机实测:3050 Ti独显给力
- 环球头条:iPhone安装不了第三方App?没关系它会出手!
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球今日讯!极兔一面:10亿级ES海量搜索狂飙10倍,该怎么办?
文章持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版为您奉上珍贵的学习资源 :
免费赠送 :《尼恩Java面试宝典》持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备免费赠送 经典图书:《Java高并发核心编程(卷1)加强版》面试必备 + 大厂必备 +涨薪必备 加尼恩免费领免费赠送 经典图书:《Java高并发核心编程(卷2)加强版》面试必备 + 大厂必备 +涨薪必备 加尼恩免费领免费赠送 经典图书:《Java高并发核心编程(卷3)加强版》面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
(资料图片仅供参考)
免费赠送 资源宝库: Java 必备 百度网盘资源大合集 价值>10000元 加尼恩领取
背景说明:
ES高性能全文索引,如果不会用,或者没有用过,在面试中,会非常吃亏。
所以ES的实操和底层原理,大家要好好准备。
另外,ES调优是一个非常、非常核心的面试知识点,大家要非常重视。
在40岁老架构师 尼恩的读者交流群(50+)中,其ES相关面试题是一个非常、非常高频的交流话题。
近段时间,有小伙伴面试极兔,说遇到一个ES 海量数据调优的面试题:
ES在承载海量数据,在查询时会存在什么问题?如何优化?
社群中,还遇到过大概的变种:
形式1:10亿级 ES 索引单次查询在5-10s,要调优10倍?怎么办?
形式2:ES 海量索引单次查询速度太慢?如何调优?
形式3:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率?
形式4:后面的变种,应该有很多变种........,具体可以在尼恩社群交流。
这里,对这个面试题系列,尼恩给大家 做一下系统化、体系化的梳理,使得大家可以充分展示一下大家雄厚的 “技术肌肉”,
让面试官爱到 “不能自已、口水直流”。
同时,也一并把这个 题目以及参考答案,收入咱们的《尼恩Java面试宝典》 V48版,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平,实现技术自由。
注:本文以 PDF 持续更新,最新尼恩 架构笔记、面试题 的PDF文件,请从这里获取:码云
首先说一下自己对ES性能的认识
首先可以说明一下自己的使用经验:ES 性能并没有想象中那么好的。
下面是一个权威数据,腾讯云的ES集群性能数据:3个节点性能测试,吞吐量中位数 50qps。
ES集群吞吐量的测试数据
参见:Elasticsearch Service 8核32G 3节点集群性能测试 - 产品简介 - 文档中心 - 腾讯云 (tencent.com)
所以,很多时候ES数据量大了,特别是有几亿条数据的时候,实际上性能很差。
在这事上,尼恩就有切实体会。
在2017、2018年左右,尼恩维护一个30个节点的集群架构,亿级文档。 数据规模大概1亿doc, 1TB的容量。
在那个集群上,有的慢搜索,最长rt在5-10s。
你可能会蒙? 怎么那么久, 5~10s?
记得当时候,17年的时候,尼恩为30个节点的es集群做优化,吞吐量 从 5qps 优化到 100qps, 竟然,耗费了1个月
当然,最终,尼恩借用秒杀理论搞定 并发场景的 性能问题,实现了 在 瞬间高并发 流量(1W用户同时访问)的情况下,用户的rt在2秒以内
特别说明,尼恩的秒杀不是一般的秒杀,至少抽取了3个大型项目的工业实操,具体请参考尼恩的秒杀架构。
总之,ES 性能优化,是一个很大的难题。
在解决的时候,不要期待着随手调一个参数、两个参数,就可以万能的应对所有的性能慢的场景。
解决这个问题,要系统化、体系化、全面化思考。
那么:要做到数十亿数据查询,毫秒级响应,有哪些措施呢?
措施一:调大内存,缓存越大越好
调大内存,缓存越大越好,主要指的是Filesystem Cache越大越好。
ES的内存在构成上比较复杂,具体请参考 尼恩3高笔记中的:Data Node 内存溢出的快速恢复方案
为啥要调大Filesystem Cache呢?
ES查询的时候,会有大量的mmap操作,在mmap操作的时候,OS会将磁盘文件里的segment数据,加载到 Filesystem Cache 缓存里面去。
完整Filesystem Cache 的内容,请参见尼恩的葵花宝典,对这部分难点内容的介绍,非常系统和全面。
总之,ES严重依赖于底层的 filesystem cache,你如果给 filesystem cache 更多的内存,尽量让内存可以容纳所有的 idx segment file 索引数据文件,
那么在搜索的时候,就基本都是走内存的,性能会非常高。
具体来说:性能差距究竟可以有多大?
我们之前很多的测试和压测,如果通过磁盘IO完成搜索,一般秒级返回,可能是,1秒、5秒、10秒。
但如果是走 filesystem cache,那么一般来说性能比走磁盘IO要快一个数量级,基本上就是10ms、50ms、100ms、几百毫秒不等。
这里,还可以给面试官说点真实的数据。
假设一套 es 节点有 3 台机器,每台机器,64G内存,总内存就是 64 * 3 = 192G。
每台机器给 es jvm heap 是 32G,留给 filesystem cache 是 32G,
总共集群里给 filesystem cache 的就是 32 * 3 = 96G 内存。
而此时,整个磁盘上索引数据文件,假设在 3 台机器上一共占用了 1T 的磁盘容量,es 数据量是 1T,那么每台机器的数据量是 300G。
此时:
- filesystem cache 的内存才 100G,
- es 数据量是 1T
十分之一的数据可以放内存,十分之9的数据,在查询命中的时候,需要进行临时的磁盘加载。
结论是:十分之9的搜索操作,性能在 秒级。
提升性能的策略是,提升内存命中的比例,两个思路:
- 拼命调大内存。
- 减少索引index 索引大小。
所以:亿级索引、海量索引的调优措施之一,简单来讲,希望全部命中在内存,而不是在磁盘。
或者说:如果 缓存不了全部数据,那就至少可以容纳你的总数据量的一半。
比如:索引数据控制在 100G,如果内存留给 filesystem cache 的是 100G,这样的话,数据几乎全部走内存来搜索,性能非常之高,一般可以在 1 秒以内。
问题是,增大内存是高成本的措施,很多公司,不一定舍得这份投入。
怎么办?
措施二:缩容,缩小index 索引
如果第一点做不到,怎么办呢?
没有必要在一个点死耗,条条道路同罗马,东方不亮西方亮。
增大内存搞不定的话,可以逆向思考。就是:减少索引index 索引大小。
目标就一个:还是把索引加载到内存,或者至少能加载一半。
比如有一行数据,id,name,age .... 30 个字段。而搜索的时候,只需要根据 name,age 2个字段来搜索。
这样搜索的时候,其余的28个字段是和搜索无关的,占了90%以上。结果这部分搜索无关数据,硬是占据了 es 机器上的 filesystem cache 的空间,单条数据的数据量越大,就会导致 filesystem cahce 能缓存的数据就越少。
所以,优化的策略就是,减少索引index 数据量。
仅仅写入 es 中要用来检索的少数几个字段就可以了,比如说就写入id,name,age 三个字段。
那么问题来了:在哪里存放全量数据呢?
一般是建议用 es + hbase 架构。es中保存hbase的key, 根据key 去habse取全量数据。
hbase 的特点是适用于海量数据的在线存储,就是对 hbase 可以写入海量数据,但是不要做复杂的搜索。
当然,在hbase中做很简单的一些根据 rowkey或者范围进行查询的这么一个操作就可以了。
用 es + hbase 架构,从 es 中根据 name 和 age 去搜索,拿到的结果可能就 20 个 rowkey,然后根据rowkey(doc id)到 hbase 里去查询每个 doc id 对应的完整的数据,给查出来,再返回给前端。
关于完整 es + hbase 架构, 非常重要,也非常精彩,是一个大大的简历亮点, 关于这个实操,尼恩后面会进行详细介绍,具体请关注群消息。
优化的结果:
然后你从 es 检索可能就花费 100ms,然后再根据 es 返回的 id 去 hbase 里查询,查 20 条数据,可能也就耗费个 100ms,
- 架构整改之前,1T 数据都放 es,会每次查询都是 5~10s
- 架构整改之后,现在可能性能就会很高,每次查询就是 200ms。
结论:性能提升50倍多。
措施三:冷热分离
如果索引的数据量,还是减不下来,怎么办。
比如说,无论怎么进行索引的瘦身,无论怎么进行索引的缩容,索引还是远大于内存。
比如,索引瘦身之后,还是有300G,而 filesystem cache 只有100G,索引大小,远远大于内存大小,怎么办?
条条道路同罗马,东方不亮西方,办法总比问题多。
方法之一:冷热分离
方式之2:数据预热
方式之3:.....
怎么做冷热分离呢?
- 冷数据:将大量的访问很少、频率很低的数据,单独写一个索引
- 热数据:将大量的访问很大、频率很高的数据,单独写一个索引
目标还是一个:搜索的时候进行内存IO,而不是磁盘IO。
为啥磁盘IO慢,请参见尼恩的葵花宝典。
这样可以确保热数据在被加载到filesystem os cache 之后.
怎么能保证冷索引,不把热索引从内存寄出去呢?
这个主要是 Linux 内核的 LRU内存淘汰算法导致的,当系统内存不足时,Memcached 和 Redis 都是使用 LRU算法 来淘汰内存的。
尼恩提示,这里很容易出现连环炮面试题: 内存淘汰算法 相关的试题。
LRU(Least Recently Used) 中文翻译是 最近最少使用 的意思,其原理就是:当内存不足时,淘汰系统中最少使用的内存,这样对系统性能的损耗是最小的。用过 Memcached 或者 Redis 的同学应该都了解过 LRU算法。
有关内存淘汰算法,请看尼恩的 caffeine 底层源码和实操,
里边介绍了lru、lfu、window-tiny-lfu三大内存淘汰算法,非常细致。
足以秒晕面试官。
一般来说,由于热数据频繁访问,一般就会比较高的概率留在 filesystem os cache 里,不会让冷数据给冲刷掉。
假设有 6 台机器,2 个索引,一个放冷数据,一个放热数据,每个索引 3 个 shard。
大量的时间是在访问热数据 index,热数据可能就占总数据量的 10%,此时数据量很少,几乎全都驻留 filesystem cache 里面了,就可以通过内存IO完成,而不是磁盘IO,从而实现性能优化。
少量的冷数据访问,可能大量数据是在磁盘上的,此时性能差点,也无所谓了。
冷热分离之后,保障了90%的请求在1s以内。
措施四:数据预热
冷热分离之后,如何确保热数据,一直处于 filesystem cache 里?
有效的措施是:数据预热
怎么预热呢?
简单的说,就是提前访问一下,让数据进入 filesystem cache 里面去。
复杂点的措施,就是做一个专门的缓存预热子系统,就是对热数据每隔一段时间,访问一下,让数据进入 filesystem cache 里面去。
那么,那些是热点数据呢?怎识别热点数据呢?
比如电商秒杀,你可以将平时查看最多的一些商品,比如说 iphone 8,可以提前访问一次,刷到 filesystem cache 里去。搜索的时候,直接从内存里搜索了,没有走磁盘IO,速度很快。
有些热点数据是可以提前预知的,但是更多的热点数据,不实时产生的的,老天爷都不知道什么时候到了,怎么办?
这里涉及到 热点探测系统。
有了,缓存预热子系统可以和热点探测子系统结合,进行 动态的缓存预热。
热点探测子系统和缓存预热子系统怎么结合?具体请参考 尼恩的 《100W级qps 三级缓存架构与实操》架构笔记
提前预热之后,数据已经到了缓存,这样下次别人访问的时候,性能一定会好很多。
举个例子,拿微博来说,一些大V数据,或者一下其他的平时看的人很多的数据,就是使用 热点探测子系统和缓存预热子系统结合的路子,每隔一会儿, 探测到热点数据之后,预热子系统就去搜索一下热数据,刷到 filesystem cache 里去。
后面用户去搜索大V,实际他们就是直接从内存里搜索了,没有走磁盘IO,速度很快。
比如电商秒杀,对于一下未知的热点商品,通过热点探测之后,存预热子系统可以主动访问一次,刷到 filesystem cache 里去。
总之,热点探测子系统和缓存预热子系统的架构,非常重要, 具体请参考 尼恩的 《100W级qps 三级缓存架构与实操》 架构笔记
措施五:索引模型优化
在ES的优化中,索引模型优化、或者说索引结构优化,也很重要。
es 能支持的操作就那么多,很多操作性能低,不要在搜索的时候,执行各种复杂的乱七八糟的操作。
换句话说,对索引进行优化的时候,直接索引最终的结果数据,而不是过程数据、中间数据。
最好是先在 Java 系统里就完成数据的处理,比如说数据的关联,将关联好的数据直接写入 es 中。
搜索的时候,就不需要利用 es 的搜索语法来完成 join 之类的关联搜索了。
对于一些太复杂的操作,比如 join/nested/parent-child 搜索都要尽量避免,性能都很差的。
如果真的有那种操作,尽量在 document 模型设计的时候,写入的时候就完成。
另外对于一些太复杂的操作,比如 join/nested/parent-child 搜索都要尽量避免,性能都很差的。
关于索引结构的优化,有非常多的优化手段,根据自己的场景去定制化使用:
- 字段拉平:将复合字段拆分为多个不同字段,查询时减少查询的字段个数。
- 提前建立 mapping:预先建立 mapping,而不是让 ES 自动生成数据类型,加速检索。
- 使用 keyword 代替 int/long/numeric
为啥使用 keyword 代替 int/long/numeric?
对于keyword类型的term query,ES使用的是倒排索引。但是numeric类型为了能有效的支持范围查询,它的存储结构并不是倒排索引。
倒排索引在内存里维护了词典 (Term Dictionary)和文档列表(Postings List)的映射关系,倒排索引本身对于精确匹配查询是非常快的,直接从字典表找到term,然后就直接找到了posting list。
措施六:查询优化
查询优化的措施太多,随便说几点,面试官基本就满意了:
- 分页性能优化
- 能用term就不用match_phrase
- 使用过滤器优化查询
然后告诉面试官,这些都要根据业务场景,具体分析。
查询优化1:分页性能优化
es 的分页是较坑的,为啥呢?
举个例子吧,假如每页是 100 条数据,现在要查询第 10页, 分页的时候,总共需要查到 1000条,再截取一个page,
如果有个 3 个 shard,实际上是会把每个 shard 上存储的前 1000 条数据,都查到一个协调节点上,
那么协调节点就有3000 条数据,接着协调节点对这 3000 条数据进行一些合并、处理,再获取到最终第 10 页的 10 条数据。
ES必须得从每个 shard 都查 1000 条数据过来,然后根据你的需求进行排序、筛选等等操作,最后再次分页,拿到里面第 10 页的数据。
翻页的时候,翻的越深,比如 1000,每个 shard 返回的数据就越多,而且协调节点处理的时间越长。
用 es 作分页,前几页就几十毫秒,翻到 10 页或者几十页的时候,基本上就要 5~10 秒才能查出来一页数据了。
那么怎么做分页性能优化?
简单的措施:就是限制翻页的数量,不让翻到很大的page。
为啥可以这么处理呢?实际上,搜索引擎返回的结果,都是模糊匹配的,越到后面,结果越模糊, 对用户的价值不大。
一般情况下,追求前几页,提供给用户价值大的结果。
很多搜索系统,不提供大页码的翻页。
面试官来一个连环炮?业务要求,一定要深度翻页,改怎么处理。
请参见 《尼恩Java面试宝典》的另一个面试题答案:《es 深度翻页的三大绝招》
查询优化2:能用term就不用match_phrase
The Lucene nightly benchmarks show that a simple term query is about 10 times as fast as a phrase query, and about 20 times as fast as a proximity query (a phrase query with slop).
官方说:
- term查询比match_phrase性能要快10倍,
- term查比带slop的match_phrase(proximity——match)快20倍。
能用term就不用match_phrase,举个简单例子
GET /my_index/my_type/_search{ "query": { "match_phrase": { "title": "quick fox" } }}变为GET /my_index/my_type/_search{ "query": { "term": { "title": "quick fox" } }}
match_phrase的执行流程如下?
match_phrase查询首先解析查询字符串,产生一个词条列表。
然后会搜索所有的词条,但只保留包含了所有搜索词条的文档,并且词条的位置要邻接。
比如,搜索 quick fox时,如果没有文档含有邻接在一起的quick和fox词条, 一个针对短语quick fox的查询不会匹配我们的任何文档。
proximity match: slop参数告诉match_phrase查询词条能够相隔多远时仍然将文档视为匹配。
我们以一个简单的例子来阐述这个概念。
为了让查询quick fox能够匹配含有quick brown fox的文档,我们需要slop的值为1.
match和match_phrase的区别
match:
只要简单的匹配到了一个term,就会将term对应的文档作为结果返回,扫描倒排索引,扫描到了就完事
match_phrase:
首先要扫描到所有term的文档列表,找到包含所有term的文档列表,然后对每个文档都计算每个term的position,是否符合指定的范围,需要进行复杂的运算,才能判断能否通过slop移动,匹配到这个文档。
match和match_phrase的性能比较
match 的性能比match_phrase和proximity match(有slop的match_phrase)要高得多。
因为后两者都需要计算position的距离
match query比natch_phrase的性能要高10倍,比proximity match(有slop的match phrase)要高20倍。
但是Elasticsearch性能是很强大的,基本都在毫秒级。
match可能是几毫秒,match phrase和proximity match也基本在几十毫秒和几百毫秒之前。
那么,如何对match和match_phrase的性能优化?
具体的措施是:先缩小范围,再打分。
具体来说,优化match_phrase和proximity match的性能,一般就是减少要进行proximity match搜索的文档的数量。
主要的思路就是用match query先过滤出需要的数据,然后在用proximity match来根据term距离提高文档的分数,同时proximity match只针对每个shard的分数排名前n个文档起作用,来重新调整它们的分数,这个过程称之为重打分rescoring。
主要是因为一般用户只会分页查询,只会看前几页的数据,所以不需要对所有的结果进行proximity match操作。也就是使用match + proximity match同时实现召回率和精准度。
默认情况下,match也许匹配了1000个文档,proximity match需要对每个doc进行一遍运算,判断能否slop移动匹配上,然后去贡献自己的分数。
但是很多情况下,match出来也许是1000个文档,其实用户大部分情况下都是分页查询的,可以就看前5页,每页就10条数据,也就50个文档。
所以,proximity match只要对前50个doc进行slop移动去匹配,去贡献自己的分数即可,不需要对全部1000个doc都去进行计算和贡献分数。
这个时候通过window_size这个参数即可实现限制重打分rescoring的文档数量。示例:
GET /test_index/_search{ "query": { "match": { "test_field": "java spark" } }, "rescore": { "query": { "rescore_query": { "match_phrase": { "test_field": { "query": "java spark", "slop": 10 } } } }, "window_size": 50 }}
查询优化3:使用过滤器优化查询
elasticsearch提供了一种特殊的缓存,即过滤器缓存(filter cache),用来储存过滤器的结果.
被缓存的过滤器不需要消耗过多的内存,因为他们只储存了哪些文档能与过滤器相匹配的相关信息,而且可供后续所有与之相关的查询重复使用,从而极大的提高了查询性能
执行下面这个查询:
{ "query":{ "bool":{ "must":[ { "term":{"name":"joe"} }, { "term":{"year":1981} } ] } }}
该查询能查询出满足指定姓名和出生年代条件的足球运动员,只有同时满足两个条件的查询才可以被缓存起来。
优化这个查询:
人名有太多可能性,它不是完美的缓存候选对象,而年代是,我们使用另一种查询方法,该查询组合了查询类型与过滤器:
{ "query":{ "filtered":{ "query":{ "term":{"name":"joe"} }, "filter":{ "term":{"year":1981} } } }}
第一次执行该查询以后,过滤器会被es缓存起来,如果后续的其他查询也要使用该过滤器,则她会被重复使用,避免es重复加载相关数据
40岁老架构师尼恩提示
问题回答到这里,已经30分钟过去了,面试官已经爱到 “不能自已、口水直流” 啦。
注:本文以 PDF 持续更新,最新尼恩 架构笔记、面试题 的PDF文件,请从这里获取:码云
参考文献:
《尼恩的10Wqps秒杀架构笔记》
《尼恩的100Wqps三级缓存架构笔记》
《横扫全网ElasticSeach高可用实操架构笔记》
https://blog.csdn.net/whzhaochao/article/details/49126037
https://blog.csdn.net/wuzhangweiss/article/details/101156910
https://blog.csdn.net/Jerome_s/article/details/44992549
推荐阅读:
《响应式圣经:10W字,实现Spring响应式编程自由》
《全链路异步,让你的 SpringCloud 性能优化10倍+》
《Linux命令大全:2W多字,一次实现Linux自由》
《阿里一面:谈一下你对DDD的理解?2W字,帮你实现DDD自由》
《阿里一面:你做过哪些代码优化?来一个人人可以用的极品案例》
《网易二面:CPU狂飙900%,该怎么处理?》
《阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了》
《峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?》
《场景题:假设10W人突访,你的系统如何做到不 雪崩?》
《2个大厂 100亿级 超大流量 红包 架构方案》
《Nginx面试题(史上最全 + 持续更新)》
《K8S面试题(史上最全 + 持续更新)》
《操作系统面试题(史上最全、持续更新)》
《Docker面试题(史上最全 + 持续更新)》
《Springcloud gateway 底层原理、核心实战 (史上最全)》
《Flux、Mono、Reactor 实战(史上最全)》
《sentinel (史上最全)》
《Nacos (史上最全)》
《分库分表 Sharding-JDBC 底层原理、核心实战(史上最全)》
《clickhouse 超底层原理 + 高可用实操 (史上最全)》
《nacos高可用(图解+秒懂+史上最全)》
《队列之王: Disruptor 原理、架构、源码 一文穿透》
《环形队列、 条带环形队列 Striped-RingBuffer (史上最全)》
《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)》
《红黑树( 图解 + 秒懂 + 史上最全)》
《分布式事务 (秒懂)》
《缓存之王:Caffeine 源码、架构、原理(史上最全,10W字 超级长文)》
《缓存之王:Caffeine 的使用(史上最全)》
《Docker原理(图解+秒懂+史上最全)》
《Redis分布式锁(图解 - 秒懂 - 史上最全)》
《Zookeeper 分布式锁 - 图解 - 秒懂》
《Netty 粘包 拆包 | 史上最全解读》
《Netty 100万级高并发服务器配置》
环球今日讯!极兔一面:10亿级ES海量搜索狂飙10倍,该怎么办?
一文让你彻底了解ChatGPT
焦点快看:要控制人类节奏!聊天机器人爱上用户并诱其离婚 微软出手限制了
年制绿氢3万吨、绿氧24万吨!我国全球最大绿氢项目开工
刘强东完了!章泽天官宣喜讯,被出轨4年。网友:这反击漂亮!
环球观点:数据结构刷题2023.02.18小记
环球精选!特斯拉追尾公交致1死 车主呼吁放开单踏板模式:为何老是失控?这是原因
环球资讯:1986年拍摄的泰坦尼克号残骸视频首次公开:残骸尺寸巨大
当前滚动:如何保存石榴
当前观点:iPhone 15 Pro CAD渲染图对比iPhone 14 Pro:改用USB C端口、相机更凸起、边框更窄
今日热门!渔民出海偶遇100多只海豚逐浪嬉戏:场面很美很壮观
苹果iOS 16.4首个公测版发布:普通用户将告别测试版
天天观焦点:油电平价!比亚迪秦PLUS DM-i 2023冠军版杀疯了:9.98万就能买DM-i超级混动
start+up韩剧在线观看_start up
环球快消息!女子不吃碳水半年狂减46斤 结果脱发、怕冷:治了半年
时讯:老黄厨房新菜来了 NVIDIA确认GTC 2023大会3月20日开幕
环球观天下!为什么这年头是个人就能造车?这事真就没门槛?
比半张A4纸还小 惠普1L迷你主机实测:3050 Ti独显给力
环球头条:iPhone安装不了第三方App?没关系它会出手!
世界简讯:咬牙耳朵里面疼怎么办_耳朵外轮廓疼怎么办
当前简讯:《星际2》冠军为孙哥黄哥剃光头:“卤蛋”情绪稳定
Vue急速入门-4
python项目中的“填坑”记录
自命为缓存之王的Caffeine(6)
MyBatis-Plus (SpringBoot2 版) Learning Day01
百事通!河南安阳一楼盘推出0首付0月供购房,这是什么操作?
交个朋友陷恶意裁员风波 没有了罗永浩还能走多远
世界快资讯丨口碑又崩了 漫威大片《蚁人3》豆瓣开分6.4:量子力学也带不动
【世界快播报】红旗接入百度AI文心一言 打造国产豪车品牌标杆
【当前独家】物理老师用《塞尔达传说:荒野之息》讲解小船过河原理:林克听了都说好!
世界头条:144MB缓存游戏神U!锐龙9 7950X3D跑分首曝:果然不出所料
每日热门:小米13 Ultra渲染图曝光:中分造型四摄
世界观热点:剪绳子问题 之动态规划 及 大数越界情况下的求余问题
千万小心二手RTX 20显卡!新套路出现:黑片秒变白片
日本MRJ刚失败 印度也要自研国产飞机:可载100人
女子第一次打到无人驾驶网约车:十分激动
每日热门:支持30+种中外语言!搜狗输入法力挺麒麟OS
世界微头条丨网站设计师招聘_网站设计师
世界热点!3、TreeMap源码解析
每片5.5元!绿联苹果钢化膜促销:适用iPhone 14/13/12系列
每日视讯:河南发布电动车佩戴头盔规定草案:未戴拒不改正罚20元
全球观天下!苦等3年微软终于点头:苹果M1/M2 Mac正式支持运行Win11
天天短讯!李荣浩新歌《乌梅子酱》火了!乌梅子酱淘宝搜索量暴涨200倍
新资讯:1999元!小米米家智能除湿机50L发布:100平除湿 梅雨季不怕了
当前信息:阿里一面:谈一下你对DDD的理解?2W字,帮你实现DDD自由
看热讯:关于ChatGPT,我们到底在担心什么?
【世界新要闻】在centos stream 9上搭建k8s最新版本(当前:v1.26.1)集群环境
【环球热闻】云原生学习作业8
天天新消息丨本周盘点(2.13-2.17):永吉股份周跌2.30%,主力资金合计净流出1796.91万元
每日看点!三年之期已到 不换APP享受自由音乐的理想国还有多远?
诗与远方
天天快消息!男子初到上海见转弯扶梯被震撼 网友看呆:同没见过
6999元!爱玛联名雷神发布HERO限量款机车:2500W电机 一键弹射
张纪中回应张颂文沙漠捡垃圾被剧组丢下:请理性看待
ESXi Args勒索病毒来袭,VMware ESXi用户需提高警惕
2、HashMap源码分析
观热点:使用springboot cache + redis缓存时使用gzip压缩以提升性能
天天最新:微凸铜底设计!微星CORELIQUID M360散热器图赏
当前视讯!美俄亥俄州居民嘴唇变色脸上起红斑 官方称空气水质安全:小溪全是死鱼 污染超百公里
全球快资讯丨iPhone 15 Pro外观无悬念了!关键是价格会更贵
《生化危机4:重制版》新细节:艾达王将扮演重要角色
蚌埠住了!iPhone 18 Pro背面设计来了 堪称行星发动机
世界今日报丨2023湖南新能源汽车置换促销补贴怎么领取
如何用chatGPT、代理IP和网络爬虫,打造一个智能有趣的聊天机器人?
环球新动态:数据结构刷题2023.02.17小记
分享7个刺激的老司机网站,别轻易点开
天天观察:乐维百科:什么是IT监控?为什么运维需要监控?
今日最新!正式抛弃 Feign!Spring 6 推出新特性:HTTP Interface,这波太秀了!
环球速看:2023年保定住房贷款利息个税专项附加扣除政策
《中国乒乓之绝地反击》今日正式上映:邓超、吴京演绎男乒至暗时刻
【世界聚看点】0脂无糖 舌里全麦面包14.9元2斤40片大促
你还会吃吗?女子用1元成本做出即食燕窝:呼吁别被智商税
今日热搜:车厂突然破产 几十万车主有点慌:修车配件全国找
真我GT Neo5 1TB版秒罄!徐起否认饥饿营销:需求量太大
天天微速讯:常见的个人博客搭建部署方案
焦点速递!SpringBoot
2023年跳槽,.NET工程师们,准备好了吗?
徐鸿平
快看点丨努比亚首款AR眼镜官宣:将亮相MWC 2023
全球动态:更耐摔?苹果上架iPhone 14 Pro屏幕保护膜:348元买吗
焦点快播:女车主买奇瑞QQ冰淇淋电动车一天坏3次!4S店承认故障 退车
天天速读:3月见!魅族20系列宣布首发无界生态系统Flyme 10
Reno时隔4年再度回归潜望长焦!OPPO Reno 10系列曝光
有个n字的鞋子是什么牌子?国产运动品牌有哪些?
贡菜是什么菜?贡菜的功效与作用是什么?
四王下山管天下是哪四个王?四王下山管天下是什么生肖?
春雨贵如油是什么节气?密密的春雨像什么比喻?
二十不惑人物关系是什么?二十不惑2演员表
iphone屏幕分辨率是多少?iphone屏幕分辨率怎么调?
天天热推荐:[django]钩子函数的一些细节(clean)
环球短讯!火山引擎入选《2022 爱分析 · DataOps 厂商全景报告》,旗下 DataLeap 产品能力获认可
快播:ETL的系统核心特征
环球热议:SQL Server创建Oracle链接服务器
电脑自动重启是什么原因?电脑自动重启频繁怎么解决?
CAD布局怎么使用?cad布局背景怎么调成黑色?
gta5怎么切换角色?GTA5怎么刷钱?
deb是什么意思?deb怎么安装?
世界热讯:BBA直呼内行!吉利“仰望银河”出圈:多家国产品牌跟风“望天”
天天时讯:首发1399元!小米小顽智能全自动猫砂盆开售:14天不用管
苹果iOS 16.4首个测试版发布 新增15个表情符号被吐槽太丑