首页 > 滚动 > > 内容页

go map搬迁的实现|全球微头条

2023-07-04 11:10:20 脚本之家
目录
能具体解释一下这两种情况吗?下面开始准备搬迁了别着急,正式搬迁才刚刚开始先找找可能的目标桶位置吧遍历bucket链表,一个个迁移事后事(整理)也别忘记了最后,要不要看下是不是全搬迁完了呢?

为什么要搬迁?无非是要么桶用的太多,要么太多的数据都到了overflow里面了


(相关资料图)

go针对这两种情况做出了不同的搬迁处理

bucket用太多:扩容两倍,重新hashoverflow用太多:不扩容,不重新hash,只是搬迁而已

以下代码基于go1.17

能具体解释一下这两种情况吗?

桶用太多

go用了一个负载因子loadFactor来衡量。也就是如果数量count大于loadFactor * bucket数,那么就要扩容

代码如下

const (
    // Maximum number of key/elem pairs a bucket can hold.
    bucketCntBits = 3
    bucketCnt     = 1 << bucketCntBits

    // Maximum average load of a bucket that triggers growth is 6.5.
    // Represent as loadFactorNum/loadFactorDen, to allow integer math.
    loadFactorNum = 13
    loadFactorDen = 2
)

// 在元素数量大于8且元素数量大于负载因子(6.5)*桶总数,就要进行扩容
func overLoadFactor(count int, B uint8) bool {
    return count > bucketCnt && uintptr(count) > loadFactorNum*(bucketShift(B)/loadFactorDen)
}

overflow太多

overflow太多在go中分两种情况

bucket数量小于1<<15时,overflow超过桶总数bucket数量大于1<<15时,overflow超过1<<15
// overflow buckets 太多
func tooManyOverflowBuckets(noverflow uint16, B uint8) bool {
    if B > 15 {
        B = 15
    }
    return noverflow >= uint16(1)<<(B&15)
}

下面开始准备搬迁了

准备搬迁工作是由hashGrow方法完成的,他主要就是进行申请新buckets空间、初始化搬迁进度为0、将原桶标记为旧桶等

func hashGrow(t *maptype, h *hmap) {
    // 判断是bucket多还是overflow多,然后根据这两种情况去申请新buckets空间
    bigger := uint8(1)
    if !overLoadFactor(h.count+1, h.B) {
        bigger = 0
        h.flags |= sameSizeGrow
    }
    oldbuckets := h.buckets
    newbuckets, nextOverflow := makeBucketArray(t, h.B+bigger, nil)

    flags := h.flags &^ (iterator | oldIterator)
    if h.flags&iterator != 0 {
        flags |= oldIterator
    }
    // commit the grow (atomic wrt gc)
  // 更新最新的bucket总数、将原桶标记为旧桶(后面判断是否在搬迁就是通过这个进行判断的)
    h.B += bigger
    h.flags = flags
    h.oldbuckets = oldbuckets
    h.buckets = newbuckets
  // 初始化搬迁进度为0
    h.nevacuate = 0
  // 初始化新桶overflow数量为0
    h.noverflow = 0

  // 将原来extra的overflow挂载到old overflow,代表这已经是旧的了
    if h.extra != nil && h.extra.overflow != nil {
        // Promote current overflow buckets to the old generation.
        if h.extra.oldoverflow != nil {
            throw("oldoverflow is not nil")
        }
        h.extra.oldoverflow = h.extra.overflow
        h.extra.overflow = nil
    }
  // extra指向下一块空闲的overflow空间
    if nextOverflow != nil {
        if h.extra == nil {
            h.extra = new(mapextra)
        }
        h.extra.nextOverflow = nextOverflow
    }
}

别着急,正式搬迁才刚刚开始

正式搬迁其实是在添加、删除元素的时候顺便干的。在发现搬迁的时候,就可能会做一到两次的搬迁,每次搬迁一个bucket。具体是一次还是两次就是下面的逻辑决定的

搬迁正在使用的bucket对应old bucket(如果没有搬迁过的话)

若还正在搬迁就再搬一个以加快搬迁

func growWork(t *maptype, h *hmap, bucket uintptr) {
    // make sure we evacuate the oldbucket corresponding
    // to the bucket we"re about to use
    evacuate(t, h, bucket&h.oldbucketmask())

    // evacuate one more oldbucket to make progress on growing
    if h.growing() {
        evacuate(t, h, h.nevacuate)
    }
}

先找找可能的目标桶位置吧

对于不扩容的情况,可能只有一个——就是原来序号对应的桶(就是下面的x)。

对于扩容2倍的情况,显然既有可能是在原来序号对应桶,也有可能是原来序号加上扩容的桶数的序号

比如B由2变成了3,那么就要看hash第3bit到底是0还是1了,如果是001,那么和原来的一样,是序号为1的桶;如果是101,那么就是原来序号1+22(扩容桶数)=序号为5的桶

// xy contains the x and y (low and high) evacuation destinations.
        var xy [2]evacDst
        x := &xy[0]
        x.b = (*bmap)(add(h.buckets, oldbucket*uintptr(t.bucketsize)))
        x.k = add(unsafe.Pointer(x.b), dataOffset)
        x.e = add(x.k, bucketCnt*uintptr(t.keysize))

        if !h.sameSizeGrow() {
            // Only calculate y pointers if we"re growing bigger.
            // Otherwise GC can see bad pointers.
            y := &xy[1]
      // newBit在扩容的情况下等于1<<(B-1)
            y.b = (*bmap)(add(h.buckets, (oldbucket+newbit)*uintptr(t.bucketsize)))
            y.k = add(unsafe.Pointer(y.b), dataOffset)
            y.e = add(y.k, bucketCnt*uintptr(t.keysize))
        }

遍历bucket链表,一个个迁移

每一个bucket在溢出之后都会附接overflow桶,每个bucket包括overflow储存着8个元素

若元素tophash为空,则表示被搬迁过,继续下一个计算hash值若超出当前bucket容量,就新建一个overflow bucket将原来的key、value复制到新bucket新位置定位到下一个元素

在上面的步骤计算hash值在overflow用太多的情况下是不用的

此外,在桶用太多的情况下,计算hash

for ; b != nil; b = b.overflow(t) {
  // 找到key开始位置k,和value开始位置e
    k := add(unsafe.Pointer(b), dataOffset)
    e := add(k, bucketCnt*uintptr(t.keysize))
  // 遍历bucket中元素进行搬迁
    for i := 0; i < bucketCnt; i, k, e = i+1, add(k, uintptr(t.keysize)), add(e, uintptr(t.elemsize)) {
    // 获取tophash,若发现是空,说明已经搬迁过。并标记为空且已搬迁
        top := b.tophash[i]
        if isEmpty(top) {
            b.tophash[i] = evacuatedEmpty
            continue
        }
        if top < minTopHash {
            throw("bad map state")
        }
        k2 := k
    // 若key为引用类型就解引用
        if t.indirectkey() {
            k2 = *((*unsafe.Pointer)(k2))
        }
    // X指的就是原序号桶
    // Y指的就是扩容情况下,新的最高位为1的时候应该去的桶
        var useY uint8
        if !h.sameSizeGrow() {
            // Compute hash to make our evacuation decision (whether we need
            // to send this key/elem to bucket x or bucket y).
            hash := t.hasher(k2, uintptr(h.hash0))
      // 若正在迭代,且key为NaNs。是不是使用Y就取决最低位是不是1了
            if h.flags&iterator != 0 && !t.reflexivekey() && !t.key.equal(k2, k2) {
                useY = top & 1
                top = tophash(hash)
            } else {
        // 如果最高位为1,那么就应该选Y桶
                if hash&newbit != 0 {
                    useY = 1
                }
            }
        }

        if evacuatedX+1 != evacuatedY || evacuatedX^1 != evacuatedY {
            throw("bad evacuatedN")
        }

    // 标记X还是Y搬迁,并依此获取到搬迁目标桶
        b.tophash[i] = evacuatedX + useY 
        dst := &xy[useY]                 

    // 若目标桶已经超出桶容量,就分配新overflow
        if dst.i == bucketCnt {
            dst.b = h.newoverflow(t, dst.b)
            dst.i = 0
            dst.k = add(unsafe.Pointer(dst.b), dataOffset)
            dst.e = add(dst.k, bucketCnt*uintptr(t.keysize))
        }
    // 更新元素目标桶对应的tophash
    // 采用与而非取模,应该是出于性能目的
        dst.b.tophash[dst.i&(bucketCnt-1)] = top
    // 复制key到目标桶
        if t.indirectkey() {
            *(*unsafe.Pointer)(dst.k) = k2 // copy pointer
        } else {
            typedmemmove(t.key, dst.k, k) // copy elem
        }
    // 复制value到目标桶
        if t.indirectelem() {
            *(*unsafe.Pointer)(dst.e) = *(*unsafe.Pointer)(e)
        } else {
            typedmemmove(t.elem, dst.e, e)
        }
    
    // 更新目标桶元素数量、key、value位置
        dst.i++
        // These updates might push these pointers past the end of the key or elem arrays.   
    // That"s ok, as we have the overflow pointer at the end of the bucket to protect against pointing past the end of the bucket.
        dst.k = add(dst.k, uintptr(t.keysize))
        dst.e = add(dst.e, uintptr(t.elemsize))
    }
}

事后事(整理)也别忘记了

如果发现没有在使用旧buckets的就把原buckets中的key-value清理掉吧(tophash还是保留用来搬迁时判断状态)

// Unlink the overflow buckets & clear key/elem to help GC.
        if h.flags&oldIterator == 0 && t.bucket.ptrdata != 0 {
      // 计算当前原bucket所在的开始位置b
            b := add(h.oldbuckets, oldbucket*uintptr(t.bucketsize))
            // Preserve b.tophash because the evacuation
            // state is maintained there.
      // 从开始位置加上key-value的偏移量,那么ptr所在的位置就是实际key-value的开始位置
            ptr := add(b, dataOffset)
      // n是总bucket大小减去key-value的偏移量,就key-value占用空间的大小
            n := uintptr(t.bucketsize) - dataOffset
      // 清理从ptr开始的n个字节
            memclrHasPointers(ptr, n)
        }

最后,要不要看下是不是全搬迁完了呢?

在本次搬迁进度是最新进度的情况下(不是最新就让最新的去干吧)

更新进度尝试往后看1024个bucket,如果发现有搬迁完的,但是没更新进度就顺便帮别人更新了若是全部bucket都完成搬迁了,那就直接将原buckets释放掉
func advanceEvacuationMark(h *hmap, t *maptype, newbit uintptr) {
  // 更新进度
    h.nevacuate++
    // Experiments suggest that 1024 is overkill by at least an order of magnitude.
    // Put it in there as a safeguard anyway, to ensure O(1) behavior.
  // 向后看,更新已经完成的进度
    stop := h.nevacuate + 1024
    if stop > newbit {
        stop = newbit
    }
    for h.nevacuate != stop && bucketEvacuated(t, h, h.nevacuate) {
        h.nevacuate++
    }
  // 若是完成搬迁,就释放掉old buckets、重置搬迁状态、释放原bucket挂载到extra的overflow指针
    if h.nevacuate == newbit { // newbit == # of oldbuckets
        // Growing is all done. Free old main bucket array.
        h.oldbuckets = nil
        // Can discard old overflow buckets as well.
        // If they are still referenced by an iterator,
        // then the iterator holds a pointers to the slice.
        if h.extra != nil {
            h.extra.oldoverflow = nil
        }
        h.flags &^= sameSizeGrow
    }
}

到此这篇关于go map搬迁的实现的文章就介绍到这了,更多相关go map搬迁内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

x
广告
最近更新

go map搬迁的实现|全球微头条

2023-07-04

我国七大江河流域将全面进入主汛期_世界热点评

2023-07-04

厦门信托-快先森骑手爱心互助慈善信托完成备案

2023-07-04

孙颖莎两项世界排名第一,王楚钦樊振东马龙世界排名前三

2023-07-04

【时快讯】奥斯梅恩 | 上次那个路透视频角度清奇,再来看看...

2023-07-04

【全球聚看点】陕西再添25所省级标准化高中和省级示范高中

2023-07-04

鸡鸣村村民委员会_关于鸡鸣村村民委员会简述

2023-07-04

持续扩种增产提质 泰顺杨梅捧回长三角特等奖|全球新动态

2023-07-04

顶住压力,保持定力!广汽丰田6月销量87,200台

2023-07-04

环球讯息:人小鬼大什么意思 人小鬼大是什么意思?

2023-07-04

当前热文:不求报酬为获一技之长?日媒:日本兴起“免费副业”

2023-07-04

央视发现之旅是哪个频道(cctv发现之旅是哪个频道)

2023-07-04

当前热文:南昌市线上线下齐发力助中小企业“揽才”

2023-07-04

注意防范!辽宁强降雨来袭 抚顺本溪等多地有暴雨局地大暴雨

2023-07-04

全球观天下!港股贵金属板块走强,紫金矿业涨超5%

2023-07-04

世界微资讯!主力复盘:10亿爆拉长安汽车 7亿出逃科大讯飞

2023-07-04

世界速读:台湾警方确认炎亚纶涉偷拍私密片 将调查有无其他受害者

2023-07-04

最新一期非诚勿扰牵手 牵手也是坚守感恩一路有你

2023-07-04

腾讯与西湖大学共同申请问答模型专利,可使问答语句更准确连贯_环球速读

2023-07-04

国产第三大晶圆代工厂晶合集成:持续提升55nm产能 40nm高压获重大成果|环球讯息

2023-07-04

山西证券筹码持续集中 最新股东户数下降0.12%

2023-07-04

全省农村土地承包经营权纳入不动产统一登记工作会议在滨州召开-环球看热讯

2023-07-04

【环球聚看点】齐河县“美德信用”献血驿站让奉献者增“值”,让有德者有“得”

2023-07-04

东京闹市区发生爆炸至少4人受伤_环球报资讯

2023-07-04

【新视野】韦伯太空望远镜首次拍摄土星高清照,揭示其环状结构细节

2023-07-04

崩坏星穹铁道1.2版本仙骸有终前瞻特别节目将在7月8日19:30正式播出一览-天天快资讯

2023-07-04

全国增材制造工程人才培养及产教融合研讨会在西华大学召开|当前快看

2023-07-04

烟袋斜街10号小说完整版_烟袋斜街10号小说

2023-07-04

中国有哪些美丽的海滨小镇?中国最美海边小镇是在哪里呢? 天天快报

2023-07-04

北青:消耗过大半场休息时曾呕吐 乃比江依旧全力踢满90分钟|热点

2023-07-04

焦点速讯:再见JKL?上海松江分局:喻X波拘留10日!知情人:JKL将缺席比赛

2023-07-04

【天天时快讯】不倒翁原理讲解_不倒翁原理是什么

2023-07-04

金融机构商业保密工作迎全面规范 全球微动态

2023-07-04

全球热消息:上汽集团6月份销售新能源汽车8.6万辆 环比增长13.1%

2023-07-04

保利联合1亿元于海南新设生态科技开发公司-天天报道

2023-07-04

日本富士山新发现!空窗期内其实“悄悄”喷发过6次|世界今热点

2023-07-04

全球即时看!“硬技术”加持 世界最长海底道路隧道进入海下开掘阶段

2023-07-03

热门:山西省公安厅交管局开展夏季交通安全专项整治

2023-07-03

被子植物与裸子植物的区别?_被子植物与裸子植物的区别_当前消息

2023-07-03

观热点:“守护太阳的民族”欢庆“乌日贡” 传承民族技艺

2023-07-03

科技一周大事(6月26日-7月2日):微信键盘更名为“微信输入法”

2023-07-03

iG也会打窝子,让一追二,钓起了大熊猫AL!网友:iBoy是内鬼?

2023-07-03

北京7月出现阶段性高温热浪可能性大!市应急局提醒

2023-07-03

新资讯:冒险岛恶魔猎手用什么武器_冒险岛恶魔猎手用什么武器的相关介绍简介

2023-07-03

国内商品期货夜盘开盘 菜粕涨逾3%

2023-07-03

outsourced什么意思_outsource 世界关注

2023-07-03

欧洲央行管委Nagel:加息进程还有一些路要走|全球速递

2023-07-03

UTS MARKETING(06113):Exsim已承诺于2024年7月1日或之前偿还贷款 今日热文

2023-07-03

王尔德代表作(王尔德的作品有哪些) 全球快播报

2023-07-03

环球快报:今天,中国海军“和平方舟”号医院船起航!

2023-07-03

最新:石家庄开通“戏剧巴士”

2023-07-03

全球热点!皇家斗争的“替罪羊”——光绪皇帝

2023-07-03

超快光纤激光技术之三十七 全光纤Mamyshev振荡器-全球快看

2023-07-03

山西太原机场恢复至泰国普吉航线航班

2023-07-03

世界快消息!广东:建立覆盖天使投资、创业投资、并购重组投资的科技创新投资基金体系

2023-07-03

以法治建设加强和保障新时代反间谍工作——修订反间谍法的主要背景和内容

2023-07-03

天天快看点丨热搜爆了!上海预约签证要等半年?市民:一号难求

2023-07-03

Mysteel:钢结构行业月报(2023-7)

2023-07-03

惠威科技:公司产品主要以内销为主,外销占比很低,主要是公司经过多年发展,已在国内建立起全面稳固的营销网络

2023-07-03

事关电动车过海!徐闻、海口这些港口这样安排

2023-07-03

天山电子:6月30日融资买入172.9万元,融资融券余额1645.79万元

2023-07-03

日立法增加防卫费加剧地区军事紧张 世界观点

2023-07-03

环球快播:崩坏星穹铁道罗刹角色卡池抽取建议指南

2023-07-03

iQOO TWS1耳机官宣支持3D全景音频 将于7月4日发布

2023-07-03

全球快报:控股股东增持彰显信心,TCL中环即将迎来“真香时刻”?

2023-07-03

“在国际和地区事务中发挥了重要的建设性作用”

2023-07-03

明德生物:公司暂无设立体检机构计划 焦点简讯

2023-07-03

迪拜是国家吗 ?最富有的国家迪拜,每条街头安装的“面包自动售货机”隐藏着秘密-每日关注

2023-07-03

陕西镇坪县通报“大队”变“犬队”调查结果:10岁孩童玩耍时作为

2023-07-03

环球关注:巨猿吃什么饲料(巨猿)

2023-07-03

头条焦点:文化产业规模持续扩大 年营收超16.5万亿元

2023-07-03

BIG6夏窗:阿森纳狂飙切尔西狂甩 红军只砸违约金_环球动态

2023-07-03

魔秀主题制作图标图片(魔秀主题制作)_当前信息

2023-07-03

世界微速讯:经济日报:现代化产业体系要融合发展

2023-07-03

华泰股份:华泰股份目前进口纸浆,合同付款方式为开立美元信用证|当前通讯

2023-07-03

邯郸市保险业防非宣传“接地气”|当前独家

2023-07-03

甘肃:县区全覆盖“直通车”解民忧 世界速递

2023-07-03

IPO周报:6家企业IPO即将上会|每日看点

2023-07-03

异地门诊、住院按何比例报销?戳进看-环球今日讯

2023-07-03

天天短讯!天津素饺子馅做法大全图解_素饺子馅做法大全图解

2023-07-03

【世界播资讯】6月新势力车企销量普涨:理想破3万,过万者达7家

2023-07-03

世运电路7月3日盘中跌幅达5%

2023-07-03

海南科技职业大学庆祝建校15周年暨表彰大会召开|焦点短讯

2023-07-03

汇率降了,为什么这类基金“肥”了?

2023-07-03

【环球聚看点】亚洲霹雳舞锦标赛杭州落幕

2023-07-03

亚瑟王十二圆桌骑士电影_亚瑟王和他的圆桌骑士

2023-07-03

【环球快播报】电科装备实现离子注入装备28纳米工艺制程全覆盖

2023-07-03

男子拿菜刀站在泳池边!水上乐园回应:刀是游客切西瓜用的-世界观察

2023-07-03

朗德尔庄园公寓酒店_对于朗德尔庄园公寓酒店简单介绍 全球新动态

2023-07-03

天天快消息!页码怎么从第3页开始设置页码word

2023-07-03

环球通讯!卡布达是人扮演的吗_卡布达是哪部动画上的

2023-07-03

湖人闷声发大财!连获三大悍将,八村塁顺利留守,詹姆斯减轻负担_世界今日讯

2023-07-03

清朝梁文秀活多少岁(粱文秀是谁)

2023-07-03

肌肉女膨胀变异(变异肌肉女电影)

2023-07-03

全球播报:朗声英语教师进修丛书·英语语言测试基础_对于朗声英语教师进修丛书·英语语言测试基础简单介绍

2023-07-03

37岁博尔特近况曝光:腹肌变啤酒肚,体重超300斤

2023-07-03

【天天热闻】桃丽丝多利相关内容介绍

2023-07-03

20万提了辆红旗hs5,开了7930公里,老司机一肚子话要说_环球快消息

2023-07-03

环境描写的开头段_环境描写的开头

2023-07-03

揭阳电商快件“搭高铁”2小时直抵深圳_滚动

2023-07-03

青藏铁路西格段正式进入动车时代

2023-07-03

OPPO Reno10 Pro星籁版开售 打造专属UI主题 售3899元 资讯推荐

2023-07-03

梦见死人周公解梦大全_梦见死人 周公解梦

2023-07-03

「英超」维拉签下蒂莱曼斯,将身披8号球衣|全球要闻

2023-07-03

全球最资讯丨苹果id激活锁怎么解除 苹果激活锁怎么在电脑解除

2023-07-03

安彩高科董秘回复: 定增资金用于建设募投项目、补充流动资金

2023-07-02

微头条丨每次打开word2010都要配置进度_每次打开word2007都要配置进度

2023-07-02

打开生蚝的最佳办法是什么?|全球微动态

2023-07-02

花非花雾非雾夜半来天明去意思(花非花雾非雾夜半来天明去)

2023-07-02

官窑粉青釉弦纹瓶

2023-07-02

氮氧化物溶于水计算题解法_氮氧化物-全球报道

2023-07-02

要闻速递:保靖:特大暴雨显担当 众志成城保供电

2023-07-02

抖音小店选类目标准,你知道吗? 新手不能做的类目有哪些?

2023-07-02

中国地震台网正式测定 每日热议

2023-07-02

短讯!电水壶开关弹簧组装图(电水壶开关弹片安装图)

2023-07-02

【全球新要闻】崩溃的边缘歌曲-崩溃

2023-07-02

全球新动态:天平街道卧虎山社区开展文艺汇演助推幸福信用生活

2023-07-02

最宠溺的情侣之间的昵称 情侣之间的暖心

2023-07-02

《崩坏星穹铁道》角色编队站位推荐|热讯

2023-07-02

初中封闭式学校有哪些 比较好的初中封闭式学校_热文

2023-07-02

一键打开动态日历,锁定2023下半年这些大事!

2023-07-02

【当前热闻】工装裤配什么鞋子好看男(工装裤配什么鞋子)

2023-07-02

全球即时:许豪杰_关于许豪杰的介绍

2023-07-02

一场上海青少年篮球赛,约基奇母队来了,姚明的祝福也来了

2023-07-02

天天微头条丨新开发银行成为中国银行间市场最大的熊猫债发行人之一

2023-07-02

【世界新视野】烟尘绝(烟尘)

2023-07-02

常青树和落叶树有哪些 全球快资讯

2023-07-02

驱蚊器对身体有害吗女生_驱蚊器对身体有害吗

2023-07-02

当前快看:18助手是什么_18助手

2023-07-02

世界热门:菲尼克斯太阳将签下渡边雄太 迪奥普也将加盟

2023-07-02

残差是什么意思(什么是残差)

2023-07-02

多肉的繁殖方式有哪些?多肉的栽培技术和害虫防治介绍-世界通讯

2023-07-02

北京沙子口二手房房价 北京南三环沙子口二手房价格)

2023-07-02

胡海泉名下私募被警示 本人回应:清者自清_全球热门

2023-07-02

青藏铁路格拉段“换装”完成 7月1日投入运营

2023-07-02

全球观点:高瓴、红杉、创新工场都在投,这家 AI 制药公司奔赴港股,估值翻了 16 倍

2023-07-02

Shams:八村塁3年5100万美元留守湖人|天天热文

2023-07-02

巴恩斯:选择留守国王的原因是认为我们能在西部有所作为

2023-07-02

禁止商业拍照和露营车!故宫新规已正式施行

2023-07-02

宋轶白敬亭一起看电影 宋轶片场勾白敬亭下巴 基本情况讲解

2023-07-02

最新消息 制造业PMI小幅回升 大型企业重返扩张区间 天天消息

2023-07-02

好好的暑假怎么就可怕了?_最新资讯

2023-07-02

水瓶座男生喜欢你的表现(男生吃醋的表现)

2023-07-02

又到吃菌季!速来复习野生菌食用防毒指南→

2023-07-02

华为p30换屏幕影响使用吗 华为p30换屏幕影响使用吗知乎

2023-07-02

14冠功臣出走,曼城迎最差局:3人离队,9000万1签失败,巴萨笑了

2023-07-02

天天热消息:庆祝中国共产党成立102周年|探索党建引领基层治理“上海经验”

2023-07-02

热热热!全球多地出现极端高温

2023-07-02

7月份,这些精彩天象别错过

2023-07-02

波杰姆斯基:偶像是吉诺比利 欧洲篮球更重视团队

2023-07-02

【全球新要闻】红米K70亮相,骁龙8 Gen 3首发!

2023-07-02

bilibli游戏 bilibl

2023-07-02

逝者已矣生者如斯什么意思_逝者如斯乎是什么意思?

2023-07-02

几月份去三亚好一点_几月份去三亚最好 环球热消息

2023-07-02

曾经统一欧洲的国家_欧洲的国家 最新快讯

2023-07-02

6月30日基金净值:华夏核心成长混合A最新净值0.7907,涨1.4%_观速讯

2023-07-02

环球最资讯丨樱音是银魂多少集 樱音

2023-07-02

4.23亿元起!新华信托持有的新华基金公司35%股权拍卖

2023-07-02

屈居亚军!郑赛赛组合抢十输卫冕冠军丢冠谢淑薇组合2连冠

2023-07-02

焦点信息:股票行情快报:顺控发展(003039)6月30日主力资金净卖出81.16万元

2023-07-02

高考平行志愿投档105%是什么意思?

2023-07-02

迪马济奥:34岁少帅法里奥利将成为尼斯新帅-热点评

2023-07-02

观焦点:龙虎榜丨巨人网络今日跌9.08% 机构合计净卖出1.4亿元

2023-07-02

卧薪尝胆的故事内容是_卧薪尝胆的故事内容 时讯

2023-07-02

美团与簋街近70家商户联合发放“簋街不夜节消费券”

2023-07-02

俄常驻联合国代表:西方投入大笔武器资金 挑起核大国冲突

2023-07-02

快讯:海南:明起调整住房公积金缴存基数范围

2023-07-02

海尚明城业主论坛 海尚明城二手房价_天天即时看

2023-07-02

恶人谷声望怎么刷不出来_恶人谷声望怎么刷 焦点报道

2023-07-02

生长激素的作用和功效及副作用_生长激素多少钱一针

2023-07-02

马卡:在皇马机会有限,奥德里奥索拉可能重返皇家社会 天天百事通

2023-07-02

当前讯息:ASML回应荷兰半导体出口管制新规:并非所有浸润式DUV系统都要申请许可证

2023-07-01

凯盛科技:拟5252.93万元收购凯盛基材70%股权

2023-07-01

克罗斯:不想在能展示高水准时退役,我依然享受足球想要赢得冠军

2023-07-01

主力复盘:13亿抢筹电池 巨轮智能2连板

2023-07-01

越秀汉阳星汇云锦教科书级交付

2023-07-01

环球速看:原睿远基金童卓“奔私”自立门户

2023-07-01

天源环保“结对帮扶·爱心岷县”工程建设慈善基金捐赠仪式成功举行 视焦点讯

2023-07-01

全球头条:长春一小学将唐宋文化融入期末无纸笔测试

2023-07-01

全球通讯!卧龙苍天陨落逐鹿中原最后一个支线解锁攻略

2023-07-01

情系社区困难户 走访慰问暖人心——赫章县实验中学开展党建带团建活动-世界快讯

2023-07-01

时候未到?世嘉副社长表示现在无意被微软收购

2023-07-01

2023年7月1日元明粉价格最新行情预测

2023-07-01

人际距离中的亲密距离是多少(人际距离)

2023-07-01

2022年中国发明专利有效量421.2万件

2023-07-01

2023年国家医保药品目录调整工作启动

2023-07-01

建筑模板标准尺寸 建筑模板的规格尺寸有哪些-全球报道

2023-07-01

眼贴膜哪个牌子好用效果好_眼贴膜

2023-07-01

通宝商务推广平台_际通宝连锁加盟网相关内容简介介绍

2023-07-01

全球球精选!丰田威驰1.5LAT智尊价格解析及购车指南

2023-07-01

一文看懂:美团收购光年之外,还有哪些细节?-全球即时看

2023-07-01

精耕细“作”,“业”精于勤!海岸小学开展常规作业检查-全球快消息

2023-07-01

上海警方:捏造医生组织卖淫等,仁济医院一实习生被行政处罚|全球报道

2023-07-01

仿野生林下羊肚菌在舟曲试种成功

2023-07-01

准能集团亮相2023世界新能源新材料大会再登央视 热资讯

2023-07-01

“诚式”悬疑

2023-07-01

天天微动态丨一般正常体温在多少度左右_一般正常体温是多少

2023-07-01

微头条丨开锁技巧

2023-07-01

当前快看:宝宝两岁祝福语(宝宝两岁祝福语怎么写)

2023-07-01

阿尔宙斯骑拉帝纳小说(伽拉泰亚 塞万提斯创作的小说作品)

2023-07-01