2021-04-07

特雷杨30+12胖虎34分 老鹰单节三分11投全中胜鹈鹕_博格丹

原标题:特雷杨30+12胖虎34分 老鹰单节三分11投全中胜鹈鹕

北京时间4月7日,NBA常规赛继续进行。亚特兰大老鹰队坐镇主场迎接来自新奥尔良鹈鹕队的挑战。全场战罢,老鹰以123-107战胜鹈鹕。

数据方面,老鹰:特雷-杨30分1篮板12助攻、卡佩拉12分12篮板1助攻、博格丹21分4篮板4助攻、赫尔特17分3篮板2助攻、路威12分3篮板2助攻。

鹈鹕:锡安34分5篮板2助攻、鲍尔12分8篮板11助攻、布莱德索14分2篮板4助攻、亚当斯6分8篮板1助攻、海斯11分7篮板1助攻。

四节具体比分(老鹰在前):25-29、36-32、46-29、16-17。

近期各支球队都进入了疲劳期,连续不断的伤病影响着每支球队。鹈鹕也不例外,英格拉姆、哈特等球员皆不能出战。老鹰则是锋线吃紧,柯林斯、雷迪什、亨特等人皆有伤在身,但近期老鹰状态不错,一波三连胜让他们冲进东部前四,为季后赛的到来奠定了不错的基础。

比赛一上来,特雷-杨便开启了进攻模式,连中两记三分,鹈鹕也不遑多让,布莱德索随即便还以颜色,锡安也接连冲击内线得手。在首节双方便展开对攻之势,双方当家球星都展现出了不错的竞技状态,特雷-杨里突外投还能带动队友,锡安则依仗着出色的身体素质碾压内线,并在外线也能有所斩获。在球星的带领下,双方打得是你来我往好不热闹,许久未见的小托马斯也在第一节后半段登场,虽然进攻状态并不好,但还是能依靠传球来带动队友。随着海斯罚球命中,鹈鹕首节以29-25领先。

次节鹈鹕先发制人,小托马斯连得5份带领鹈鹕打出一波11-4高潮,一举将分差拉开至两位数。随后加里纳利连得8分帮助老鹰追分,随后加里纳利继续保持火热手感,三分连中率队打出10-0将分差追至1分。随后詹姆斯-约翰逊命中关键上篮打破鹈鹕得分荒,但随后特雷-杨连砍7分一举将比分反超,随后博格丹诺维奇命中三分。上半场最后阶段,双方对抗更加激烈,犯规频率也开始增加,随着亚当斯两罚一中,双方半场战成61平。

易边再战,双方展开对飙,这边布莱德索、鲍尔三分命中,老鹰方面则有赫尔特、博格丹诺维奇外线开花。但单纯的对攻显然对老鹰更加有力,射手云集的老鹰在第三节全面爆发,赫尔特、博格丹诺维奇连续命中三分,特雷-杨也在外线突施冷箭,一举将领先优势扩大至两位数。老鹰在第三节出手11记三分并全部命中!创造历史的同时单节砍下46分的高分,一举将分差拉开。第三节最后一攻,路威再次用三分终结进攻,将三节比分定格在107-90。

末节比赛双方的进攻效率开始降低,开局五分钟双方各自仅有4分进账。而率先打破僵局的依旧是老鹰,依靠着路威的三分命中,分差也来到20分。眼看大势已去,鹈鹕也就没有换回首发,比赛逐渐进入垃圾时间。最终,老鹰主场以123-107战胜鹈鹕,迎来四连胜。

老鹰首发:特雷-杨、克林特-卡佩拉、博格丹-博格丹诺维奇、凯文-赫尔特、所罗门-希尔。

鹈鹕首发:锡安-威廉森、朗佐-鲍尔、埃里克-布莱德索、史蒂文-亚当斯、詹姆斯-约翰逊。返回搜狐,查看更多

责任编辑:

原文转载:http://sport.shaoqun.com/a/526746.html

跨境电商:https://www.ikjzd.com/

淘粉吧首页:https://www.ikjzd.com/w/1725.html

cicpa:https://www.ikjzd.com/w/1375


原标题:特雷杨30+12胖虎34分老鹰单节三分11投全中胜鹈鹕北京时间4月7日,NBA常规赛继续进行。亚特兰大老鹰队坐镇主场迎接来自新奥尔良鹈鹕队的挑战。全场战罢,老鹰以123-107战胜鹈鹕。数据方面,老鹰:特雷-杨30分1篮板12助攻、卡佩拉12分12篮板1助攻、博格丹21分4篮板4助攻、赫尔特17分3篮板2助攻、路威12分3篮板2助攻。鹈鹕:锡安34分5篮板2助攻、鲍尔12分8篮板11助攻、
王惟:https://www.ikjzd.com/w/1744
万国邮政联盟:https://www.ikjzd.com/w/861
笨鸟转运:https://www.ikjzd.com/w/1550
超链接被禁!权威链接成为Amazon卖家新宠!:https://www.ikjzd.com/home/349
父母逼我过完年和女友分手:http://www.30bags.com/a/251186.html
亚马逊搜索广告热卖必读:https://www.ikjzd.com/tl/108165

美国CPSC清关新规,发这些产品的卖家请注意!

卖家朋友们,新一轮的清关严打即将到来,你慌了吗?是不是一脸懵逼?不要着急,小编带大家具体分析一下美国CPSC最新政策,此外,如何应对这波严打查验呢?

首先,为何CPSC这次能引起这么大的热度呢?因为今年3月,美国消费品安全委员会 (CPSC)加入了美国报关机构,成了美国政府机构的参与分子,和政府审查平起平坐。

接下来,咱们来看看,CPSC的新增规定:凡是他们管辖范围内的产品,都会被标记审查;即使过了申报,但如果CPSC不放行也是不可以售卖的,需要积压在仓库。

这个规定我们应该怎么理解呢,小编给大家划一下重点哈~

第一,哪些产品属于CPSC的管辖范围?

CPSC管辖多达15,000种,新规涉及的商品大致如下:儿童产品(相关玩具、衣物、装饰、家具等)、烟火、流体、预制墙、床垫、自行车头盔、发动机、电池、吹风机、充电线、自行车、婴儿车、节日灯、点火器、地毯炉、围巾领带、其他潜在易燃成人衣物配件等。

但车辆、轮胎、轮船、武器、酒精、烟草、食品、药品、化妆品、杀虫剂及医疗器械等产品不属于其管辖范围内。

另外,小编了解到,现美国海关与CBP(边境保护局)发布:禁止进口#新疆棉花#产品和番茄!但是,并没有明确指出,出纺织品就会被扣关,只要在发货该品类时备好:原产地证书,采购合同等,就能正常出货。

第二,CPSC会审查些什么呢?

美国CPSC执行的根据是CPSIA(规定产品质量的标准),在该法案制定的标准、禁令和实施规则所管控下的产品,都要求进行测试和认证。

也就是说,在上述所列举的属于CPSC的管辖范围的产品,在申报时应事先准备好产品的CPC检测报告、认证等文件,以备审查。

第三,货物被CPSC扣了,我该怎么办?

若你在申报时,没有提供相关的检测或者认证的文件,即使申报顺利通过;在CPSC查验到商品,无证明文件也会被扣押,然后把扣留通知发送给备案进口商和处理交易的报关行,通知包含拘留的原因,以及负责处理拘留的CPSC调查员的联系信息。

● 扣留的货物会被放到哪里去?

CPSC扣留的任何产品将继续保存在CBP监管的保税机构中。

● 拘留时间持续多久?

拘留后30天内尝试做出有关产品合规性的决定。

● 被扣押的商品如何处理?

1、提供证据以支持该产品的合规性

卖家可在收到扣留通知的5个工作日内,提交任何合理的检测结果或者其他证据,来证明该产品的合规性;若你需要时间去做检测和认证,可以向CPSC申请延长时间。

2、直接销毁产品

CPSC可能会视具体情况允许卖家直接销毁产品,具体情况可联系CPSC调查员。

● 想要做CPC检测认证,我该怎么做?

机构的选择?

需要去CPSC授权的第三方实验室做检测认证,否则证书是不被认可的。因此,卖家做检测之前,要确认检测公司是否有这个CPSC授权。

什么流程、多少费用,多久时间?

流程:以#亚马逊#为例

1.填写申请表,

2.提供产品的资料,

3.寄样品,

4.测试OK,

5.出报告/证书。

费用:根据产品的材质去评估

时长:需要检测的材质多少而定

小编在这提醒各位卖家要提前预防,免得被查验扣留后再去做认证、做检测,将需要长期耗费时间和精力来沟通谈判,而且估计货代也不会退运费、和赔偿!



来源:邦阅网


文章来源:https://www.ikjzd.com/home/143814

跨境电商:https://www.ikjzd.com/

韩蓬:https://www.ikjzd.com/w/1635

haofang:https://www.ikjzd.com/w/1046

特许金融分析师:https://www.ikjzd.com/w/1396

美国CPSC清关新规,发这些产品的卖家请注意!

卖家朋友们,新一轮的清关严打即将到来,你慌了吗?是不是一脸懵逼?不要着急,小编带大家具体分析一下美国CPSC最新政策,此外,如何应对这波严打查验呢? 首先,为何CPSC这次能引起这么大的热度呢?因为今年3月,美国消费品安全委员会 (CPSC)加入了美国报关机构,成了美国政府机构的参与分子,和政府审查平起平坐。

为什么医院看病总是要抽血?一次抽那么多血,最终都去哪儿了?

核心提示:血常规检查可以检查出感冒类型、贫血类型以及腹泻原因,而其他一些特定的血液检查则可以了解到体内的血脂、血糖以及凝血功能、肝肾功能等,此外抽血检查还可以用于肿瘤筛查、免疫检测,总而言之抽血检查是医生判断病情的一个重要依据。

小王在月初因感冒去医院进行治疗,一去到医院医生就让小王去抽血检查,之后根据检查结果来做结论。小王虽说满心怨怼,但只能听医生的话去检查,在抽了好几管血之后,医生开了一些药吃,也没说检查结果什么样,就说没什么事。

这让小王特别难以接受,这不是闹着玩吗?非得让我去抽血,抽了好几管血,无良医院就是为了挣钱吧!小王从医院回来之后一直跟家人抱怨,以后没啥事千万别去医院......

面对小王这类型患者的抱怨,医生也表示很无奈,抽血可以看出很多潜在问题,也可以更好判断病因。

那么抽血可以检查什么疾病?

我们都知道血液在身体内的重要性,它遍布身体全身各处,负责运输营养物质和代谢废物、参与体液调节等重要生理功能。而之所以血液有这么多的功能,是因为它拥有红细胞、白细胞、血小板以及氧气、二氧化碳、无机盐等等。

当身体的生理和病理发生变化时,往往会引起血液内成分的改变。所以一般去医院检查,医生会建议先查血。血液内储存着大量人体的健康信息,对于血液成分进行检测和分析,有着非常重要的意义。

血常规检查可以检查出感冒类型、贫血类型以及腹泻原因,而其他一些特定的血液检查则可以了解到体内的血脂、血糖以及凝血功能、肝肾功能等,此外抽血检查还可以用于肿瘤筛查、免疫检测,总而言之抽血检查是医生判断病情的一个重要依据。

我们体检时抽来的血,最后都去哪儿了?

相信很多人都有这样的困惑,抽血检查一般都需要抽好几管血,这些血在化验之后都去了哪里?有人说被拿去浇花了、或再次利用了,还有人说是把血卖了,事实是这样的吗?

每次检测需要一定量的血,至于抽很多管血则是因为不同仪器、不同检测项目所需的要求不一样,化验完的血一般不能立即扔掉。要当做备用,在日后医生对于化验结果有疑问时,复查使用。

大部分血液会保持7天或7天以上,保存期满之后都需要经过高压灭菌或是化学处理消毒之后,再经由统一的垃圾运转中心进行集中处理,这些血的管控非常严格,不会流入其他途径。

不少人觉得每次抽血抽几管,对身体健康不利,事实是这样吗?

抽血检查很伤身吗?

其实这个问题是无需担心的,少量的抽血对身体并不会有影响。我们体内的红细胞平均寿命大约120天,每天都会有大量的衰老红细胞自然死亡,骨髓随后又会产生新的年轻的红细胞进行补充。红细胞的死亡和新生之间是平衡的,身体会自行调整和适应,适当的抽血反而对健康有利,可以促进血红细胞进行分裂,促进血液循环。

很多人都有定期献血的好习惯,每次献血的量一般在400ML左右,所以抽血检查抽的几十毫升血液,对身体肯定不会带来伤害,无需担心。

最后再来说说,在抽血之前,医生都会提醒患者注意空腹,这是为什么?

空腹抽血的目的就是避免进食、饮水之后消化吸收的营养物质对检测结果带来影响,这样做可以保证检查结果的准确性。并且检测结果的参考值也是以人体空腹来制定的标准,只有空腹状态下的抽血才具有可比性。

关于验血这件事情,希望大家都可以放下心中的疑虑,这都是正常的医疗手段,遵照医生的安排即可!

参考资料:


【关注】血常规报告,到底能看出啥?,西南医科大学附属中医医院,2020-12-01

陶小玲.献血不会伤"元气"对身体健康有益[J].《中国卫生标准管理》,2014

未经作者允许授权,禁止转载


原文转载:http://health.shaoqun.com/a/217160.html

跨境电商:https://www.ikjzd.com/

贝恩投资公司:https://www.ikjzd.com/w/1336

etoro:https://www.ikjzd.com/w/1402


核心提示:血常规检查可以检查出感冒类型、贫血类型以及腹泻原因,而其他一些特定的血液检查则可以了解到体内的血脂、血糖以及凝血功能、肝肾功能等,此外抽血检查还可以用于肿瘤筛查、免疫检测,总而言之抽血检查是医生判断病情的一个重要依据。 小王在月初因感冒去医院进行治疗,一去到医院医生就让小王去抽血检查,之后根据检查结果来做结论。小王虽说满心怨怼,但只能听医生的话去检查,在抽了好几管血之后,医生开了一些药吃
1淘网:https://www.ikjzd.com/w/1698
prime day:https://www.ikjzd.com/w/131
上海跨境通:https://www.ikjzd.com/w/1329
Lazada代运营怎么样?需不需要找?如何选择一家靠谱的公司:https://www.ikjzd.com/home/133848
从滞货到清空库存,亚马逊大卖们的笔记我帮你们要来了!:https://www.ikjzd.com/home/133904
想要亚马逊跨境生意趁势增长?产品创新绝杀,居然是...:https://www.ikjzd.com/home/132232

首个火星生活计划2054年建城 马斯克:我只要10年|火星|马斯克|女娲

  作者 | 吴志奇

  来源 | 爱范儿(ID:ifanr)

  火星,一个经常听说,但似乎永不可及的梦。

  不过近日,首个可持续的'火星城市计划'发布,终于让一切看起来落地了些。

  全球建筑师事务所 Abiboo 和众多科学家、学者组成的国际团队工作了几个月,根据最新的科学研究,设计出了这份火星生活规划。

  它从环境搭建、生产制造,到日常起居,为我们勾画出了一片高可行性的未来火星城市图景。



  火星生活指南:

  垂直城市、全员素食、付费打工?

  整个人类居住的空间,一共有五个城市。

  它们的首都,被称为'女娲'(Nüwa),灵感来源于中国神话中的人类之母。

  最特别的地方,莫过于它将成为一座'垂直城市'。

  垂直城市

  '女娲'将被制造在名为 Tempe Mensa 的火星悬崖边上。

  一栋栋建筑将被错落有致地安插在平坦的崖壁内,从远处观望,它们就像一个个闪亮的洞穴。


  很显然,这样做是因为火星环境太恶劣了。

  把房子建在崖壁上,不仅能够减弱大气压力,还可以保护居民免受辐射和陨石侵扰,又能轻松地晒到太阳。


  这里将包括地球上存在的所有建筑——住宅、商业楼、绿地、医院、学校、购物中心、文化体育场所……

  垂直崖壁上,各个建筑将以隧道相连,通过巨大的高速电梯竖向通行。

  而悬崖外的水平通行,则会提供轻型火车和公共汽车系统,帮人们日常通勤来往。


  所有建筑都将是模块化的,分为住宅区和工作区。

  每个建筑入口都会装有'空气淋浴',进来的人们需要清洁和消毒,以保护自己的健康。

  每个模块都会配有大型的透明圆顶屋檐,这里将是人们的社区公园,可以进行各种娱乐休闲活动,同时培养各种新型植物。


  走到悬崖脚下,这里将建很多半透明的凉亭,人们也可以在这里和朋友聚会,顺便看看壮观的火星景色。

  全员素食

  山谷处,还会设立一片畜牧区,这里可以养猪、鸡、鱼等动物,但它们只占人类饮食的 10%。

  因为这里生产动物的效率很低,这些动物主要是提供'心理价值'。

  简单来说,动物被看到的价值,比被吃掉的价值更大。


  90% 的食物,都将来自于植物,农作物将占 50%,藻类会成为火星饮食的重要部分。

  减少吃肉,保护星球,'从娃娃抓起'。


  走到悬崖的最高点,这里是一片广阔的平原,可以被阳光充分照射。

  因此,这里将会被用来生产农作物,还被用来建造发电厂,以及生产食品、制造基础设施的各类工厂。


  另外,人类生活所需的能源将来自太阳能电池板,大量的植物将提供足够的氧气,而火星上二氧化碳和水都很多,可以生产足够的碳,有了碳就可以加工生产各种建造材料,机器人也将在这里大施拳脚。

  Abiboo 表示,最初这座城市要依靠地球的资本投资和资源供应,但很快,这座城市就将完全利用火星资源自给自足、可持续发展。


  除了首都'女娲',火星计划中还有 4 座城市。

  它们将在 5 公里内散落,分别是阿巴洛斯市(Abalos)、马里纳利斯市(Marineris)、阿斯科拉市(Ascraeus)、法克系市(Fuxi),这几个城市增加人类居住的机动空间,也能够相互进行资源调配。

  比如,女娲所处的地方有着充足的水源,阿巴洛斯位于火星北极可就地取冰,马里纳利斯位于太阳系最大的峡谷平原,利于种植农作物等等。


  付费打工

  '女娲'这座城市,将能容纳 25 万人生活,人均居住空间约为 25-35 平方米,扩展到其他城市,就可以高达 100 万人了。

  计划推算,这些城市将在 2054 年开始建设,2100 年建成。

  所以看到这篇文章的人,有生之年还是能见到它真实面貌的。


  工作区

  而关于如何去到这些城市,Abiboo 表示每 26 个月就会开放一次行程,因为每过两年,火星就有几周离地球最近,两者之间通行时间大概只需要 1-3 个月。

  不过单程票价也不便宜,一次约为 30 万美元。

  但到了火星的人也不能闲着,他们可以全面享受这里的公共设施、生活服务、日常食物,同时也要签一份工作合同,平时还要完成分配下来的城市发展所需的各项任务。


  去火星打工,你心动了吗?


  那些狂奔'火星城'的地球队伍

  Abiboo 发言人表示,他们提到的所有项目都经过了充分的科学研究,技术上都是可行的。

  但想要在火星造城的领先者,可不止 Abiboo 一家。

  美国的 NASA、SpaceX、中国航天科技集团、阿拉伯联合酋长国,近年来都将目光投向了火星。


  SpaceX 创始人马斯克看到 Abiboo 的消息后,立马就改口表示,他们不用等到 2054 年,2030 年前发射好星际飞船后,就可以开造火星城了。

  此前,他曾计划 2050 年将 100 万人送往火星,并建造一支由1000艘星舰组成的舰队殖民火星,打造阿尔法火星基地(Mars Base Alpha)。


  不过 2030 这个时间真是迫在眉睫了。

  马斯克敢于开口的底气,就在于 Starship 的快速发展,它是有史以来载人最多的星际飞船,近日 SN11 又将进行高空发射,未来它们将运载大量物资前往太空。

  马斯克之前说过,至少需要 100 万吨地球资源运输过去,才能建成阿尔法火星基地。

  运完所有物资,大概 2050 年之前,马斯克也可以建起一个靠地球提供补给的小镇了。


  Starship

  虽然发展成城市还需要时间,但比 Abiboo 的计划还是早了不少。

  2017 年,阿联酋也进入了'太空竞赛'新时期,它们宣布将与 NASA 合作,将于 2117 年在火星上建造第一座城市。

  此前,阿联酋就和建筑工作室 Bjarke Ingels Group 合作,代表迪拜政府在迪拜郊外沙漠地区,建造了一个全球最大的火星科技城(190 万平方英尺),作为开发火星移民技术的模拟空间使用。


  虽然阿联酋 2014 年才成立航天局,火星探索也实践不多,但 2117 年的建城时间,听起来还是比前面两家要实际一点。

  NASA 目前没有明确推出过详细的火星城计划,倒是在 2019 年办过一次火星建筑大赛,他们邀请全球的设计师参与进来,一起规划火星栖息地的模样。


  大赛冠军是纽约建筑师事务所 AI SpaceFactory,他们设计了一种多层圆柱形建筑,外层保护人类免受恶劣环境侵扰,内层是人类活动空间,每一层都有着不同的功能性房间,就像一个大型乐园。

  不过 NASA 在人类前往火星的征途上,倒是不遗余力。

  为了登陆火星,他们已经准备了 70 多年,从制造火星探测车,到研究火星样本,从制造火星模拟基地,到建立最新的火星种植系统……

  1966 年,NASA 就启动了人类登陆火星计划,在全球系列火星发射探测器项目中,NASA 的发射成功率也是最高的,他们希望带人类登上火星的时间和 SpaceX 差不多,在 2035 年之前。


  现在,人类探访火星的速度越来越快了,去年,全球就开出了三趟'火星漫游车'。

  除了 NASA 的'毅力号'火星车,还有阿联酋首个火星探测器'希望'号,以及中国 7 月 23 日发射的'天问一号'。

  '天问一号'首次开启了我国的自主火星探测任务,也让人们对火星的关注再次掀起一波热潮。


  上个月18号,NASA的'毅力'号火星车成功登陆火星地面。

  我们距离火星,也越来越近了。


  在火星生存还是毁灭,这是一个问题

  从火星探索,到火星旅行,再到火星建城,虽然一切并未近在眼前,但触手可及只是时间问题。

  不过在火星居住,依然有太多问题有待解决,这趟火星之旅很可能是有去无回。

  在这个以二氧化碳为主,比南极还寒冷的红色星球,我们要面临的困难不计其数。


  漫长的太空飞行

  首先,在目前的技术下,载人飞行任务到达火星最少要 9 个月,而宇航员每次上国际太空站最多也只会呆约  6 个月。

  长时间的密闭空间,加上延时通信,人们很快就会被孤独和无助笼罩,心理再强大的宇航员,也容易出现中轻度抑郁,以及睡眠周期异常,甚至精神问题。

  为了解决时间问题,上个月 NASA 宣布,他们将研发核动力发动机,以核裂变或核聚变为动力,让宇宙飞船高速运行,到达火星的单程时间缩到 90 天。


  不过,正如佛罗里达大学的人类学家 Jeffrey Johnson 所说,火星之旅中依然需要'喜剧演员'。

  剧烈的太空辐射

  无论是去火星路上,还是到火星之后,太空辐射,都会对我们的身体产生严重威胁。

  地球因为有磁场和大气层,保护了我们免受辐射攻击,而一名执行火星任务的宇航员,受到的辐射剂量是在地球的 700 倍之多。

  在火星的稀薄大气下,长时间暴露在辐射中,人类还会增加患癌、损伤大脑、心脏和中枢神经系统的风险……


  各国航天局都在研究如何减少宇航员受到的辐射伤害,但至今还没最佳普及方案。

  科学家 Raymond E。 Arvidson 提出了一个有趣的建议,要去火星的朋友,可以现在就开始多吃花椰菜——防辐射。

  极端的火星环境

  真正到达火星后,低温、无氧、低重力环境,才是最大的挑战。

  低温无法外出,无氧难以呼吸,低重力会削弱骨骼、心脏、免疫系统,造成肌肉萎缩、视觉感知改变等问题,甚至还可能让人类无法繁衍。

  为此,马斯克前年说过一个向火星投核弹的惊人计划——他希望核武器能释放锁在火星冰层中的二氧化碳,从而增加火星大气的密度,最后加剧火星上的气候变化,让火星变得更适宜居住。

  但科学家表示,就算核弹,也无法让大气足以支撑人类生存。


  之后马斯克又表示能用数千颗搭载太阳能反射器的卫星,来作为人造太阳加热火星,但这些都只是设想,没有科学研究支撑。

  Abiboo 的方案中,也能避免辐射,用植物解决氧气问题,这确实是可行的,毕竟让原本无氧的地球产生氧气的,也是 30 亿年前的藻类植物。

  但如何让火星暖起来,如何解决只有地球 1/3 的重力,依然没有好的解决方案。

  难可持续的火星生活

  第一批去火星的人的生活大概率会很悲惨。


  他们要长时间生活在密闭的地下基地,摆脱幽闭恐惧症的心理困扰,并且跟生机勃勃的大自然脱节,甚至食物、水等基本资源的获取,都是非常有限的。

  要完成 Abiboo 那样的火星计划,建立起稳定的可持续资源,需要一段很长很长的时间。

  拿我们吃的植物来说,它需要远离辐射、远离有毒土壤,以及高危化学物质,NASA 和《火星救援》里都提出过火星种土豆的想法,对于这种热爱二氧化碳的植物,确实能在火星提高两到四倍的产量,但首先,能不能生产出安全可食用的土豆呢?


  而无论是 3D 打印的火星建筑,还是其它高科技制造的房屋,都需要大量的经济成本。

  马斯克估计,建立火星城市的最终成本在 1000 亿美元到 10 万亿美元之间。

  地球上找不到比探索外太空更烧钱的项目了,这需要私营部门、公共部门、不同地方、不同文化的人全都参与进来贡献力量。

  就算一切都完美建设,人本身为了适应火星环境,也要进行永久性的基因调整,从肌肉,到骨骼、大脑,都是为了在火星能够长久生活,最后成为了一个全新的人类物种。


  总的来说,一切目前还只是一个可行的计划。

  不过在未来,人类都可能'机器化',一切以人为前提的限制,可能也不再是阻碍,很多阻碍还没解决方案,但都在解决的路上。

  那些在外太空的冒险家们,真正让我们看到了人类超越自我的勇气。

  但必须要知道的是,尽管现在地球面临无数问题,但比起改造火星,改造地球简直不费吹灰之力。

  火星正在努力变成新的地球,但愿在这漫长的探索之路,不要让地球变成旧的火星。

原文转载:http://tech.shaoqun.com/a/402787.html

跨境电商:https://www.ikjzd.com/

汇通天下物流:https://www.ikjzd.com/w/2055

空中云汇:https://www.ikjzd.com/w/2684


作者|吴志奇  来源|爱范儿(ID:ifanr)  火星,一个经常听说,但似乎永不可及的梦。  不过近日,首个可持续的'火星城市计划'发布,终于让一切看起来落地了些。  全球建筑师事务所Abiboo和众多科学家、学者组成的国际团队工作了几个月,根据最新的科学研究,设计出了这份火星生活规划。  它从环境搭建、生产制造,到日常起居,为我们勾画出了一片高可行性的未来火星城市图景。  火星生活指南:  垂
prezi:https://www.ikjzd.com/w/1751
dhl:https://www.ikjzd.com/w/516
拍拍网服装:https://www.ikjzd.com/w/2205
交往两个月的女友突然消失:http://www.30bags.com/m/a/250915.html
丈夫与多名人妻有染令我痛心:http://www.30bags.com/a/250940.html
AMS是什么?如何利用AMS让亚马逊营销效果最大化?:https://www.ikjzd.com/home/863

生完孩子,也能拥有迷人翘臀,全靠6个动作!

核心提示:久坐的女性都会有个苦恼,臀部扁平,赘肉太多,如何提臀呢?跟着小编往下看。

臀部决定你的身材是否是S型,可以看出臀部形态还是很重要的,


现在很多人屁股上有肉,但是肉太多整体很难看。到底臀部赘肉太多怎么办?下面小编告诉大家答案。

后抬腿

面对着墙站着,高举双手扶着墙面,用一只腿支撑身体,另一只腿向后用力慢慢抬起,并且这只腿要尽量伸直,然后坚持此动作等到感觉大腿肌肉酸痛之后慢慢放下,然后换一只脚进行相同的动作。

蹲马步

双腿打开比肩略宽,抬头挺胸,两手叉腰,然后半蹲,保持此姿势就能锻炼腿部和臀部,可以让你拥有结实笔直的双腿和挺翘的臀部。


高抬腿运动

小学上体育课时,做高抬腿运动很多人都试过吧!其实对于臀部大的MM,每天起床做高抬腿运动也是一种不错的瘦臀方法。高抬腿运动可以有效地锻炼到臀部肌肉,达到减小臀部的目的。

爬楼梯

我个人认为爬楼梯也是一种很不错的瘦臀方法,因为爬楼梯的动作可以锻炼到臀部两边的肌肉,让你的臀部收紧。

上班下班可以多走走楼梯,将走楼梯培养成一种生活习惯,对于那些不爱运动的美眉来说,是一种不错的健身方法。


跳舞


爱跳舞的朋友可以学习拉丁舞,拉丁舞中的臀部扭动的动作很多,可以很好地锻炼到自己臀部肌肉,促进上面多余脂肪的消耗。并且拉丁舞的动作很优美,对臀部线条的伸张、延展都有相当好的作用。能够帮你塑造完美的臀部线条。

瘦臀操

网上很多瘦臀的运动,但是我个人推荐以下这种,它的效果最明显。瘦臀运动:站立,右侧身体靠椅或墙以保持平衡。抬左脚,用左手抓住脚踝。在身体保持平衡的情况下,提左臀,再恢复双膝并拢,保持30秒。每条腿重复两次。


原文转载:http://lady.shaoqun.com/a/282408.html

跨境电商:https://www.ikjzd.com/

picitup:https://www.ikjzd.com/w/446

unsplash:https://www.ikjzd.com/w/756.html


核心提示:久坐的女性都会有个苦恼,臀部扁平,赘肉太多,如何提臀呢?跟着小编往下看。 臀部决定你的身材是否是S型,可以看出臀部形态还是很重要的,现在很多人屁股上有肉,但是肉太多整体很难看。到底臀部赘肉太多怎么办?下面小编告诉大家答案。后抬腿面对着墙站着,高举双手扶着墙面,用一只腿支撑身体,另一只腿向后用力慢慢抬起,并且这只腿要尽量伸直,然后坚持此动作等到感觉大腿肌肉酸痛之后慢慢放下,然后换一只脚进行
败欧洲运费:https://www.ikjzd.com/w/1555
薇美铺:https://www.ikjzd.com/w/2312
bestbuy:https://www.ikjzd.com/w/394
我和老公爱正欢 保姆闯进来抗议:http://www.30bags.com/m/a/251885.html
官方力荐:物流咨询工具+Wish邮线上客服,正式上线!:https://www.ikjzd.com/home/7234
老公和小三在我眼皮底下亲热:http://www.30bags.com/a/252637.html

男人有7个养生“金处方”,可惜做到一半的人都很少

核心提示:男人到了中年,是一个很重要的节点,除了要应付压力更大的工作之外,也是诸多疾病的目标,养生是很多男性都必须懂得的。

男人到了中年,是一个很重要的节点,除了要应付压力更大的工作之外,也是诸多疾病的目标,养生是很多男性都必须懂得的,下面就为大家介绍下男性的养生方法。

方法一,适当补肾

为了应对日渐增强的工作压力,肾的损耗是必不可少的,所以男性应该适当的补肾,以免肾气不足导致精神萎靡,甚至肾病的出现,而补肾以食补最为有效,例如河虾以及韭菜韭黄等。一些中成药也有补肾的效果,但是不宜过分进补。

方法二,注意保暖

中年男子其实也需要保暖,平时就需要适当的添加衣服,避免着凉,要知道,很多疾病都是在着凉之后出现,而中年的男性免疫力有所下降,从而导致了更加容易感染病原体,所以要想养生,需要从保暖上做起。

方法三,注意均衡饮食

中年的男性也许更需要交际,生意或者朋友之间的聚会,饮食是中年男性的一个大忌,如果饮食不均衡,很容易影响到身体的免疫力,而免疫力降低意味着疾病的患病率会大大提高。所以男性更应该注意营养,不要暴饮暴食,但是也不能吃的随便。

方法四,保护心血管

心血管问题一直是威胁中年男性健康的巨大隐患,临床上突发急性心梗和脑梗的不缺乏这个年龄段的患者,甚至很多突发猝死的人群也处在中年,这大多数都是因为心脑血管疾病而致,所以中年男性更需要保护好心脑血管。

方法五,多锻炼身体

经常性的锻炼可以让身体保持一定的活力,同时还是释放压力的有效方法,每天都需要保证运动一小时,这样方能让身体的有害代谢废物通过汗液排出体外,减少这些有害物质对细胞的刺激,对于预防糖尿病以及高血压等慢性病具有十分重要的作用。

方法六,不熬夜

难以想象,现代人的休息睡眠时间是越来越少的,中年男性也是如此,为了交际,或者为了生活,更多人也许会考虑减少休息时间来满足生活的需要,但是这是一种非常有害的做法,熬夜让身体过分透支,身体很难长时间去顾全大局,当长时间熬夜,就会导致相应的问题出现。


方法七,戒烟限酒

毫无疑问,抽烟喝酒都是一种释放压力的做法,但是这是以牺牲身体健康为代价的,尽管我们都知道抽烟有害健康,但是很多人都戒不掉,中年男性不比年轻人,中年男性的患病率更高,更需要戒烟,酒精也是如此。

对于中年男性而言,这是一个很无奈的年龄,这是一个工作与健康都很难周全的时期,在疾病面前,男性的健康是显得相当脆弱的,所以更需要养生。


原文转载:http://health.shaoqun.com/a/217151.html

跨境电商:https://www.ikjzd.com/

prime day:https://www.ikjzd.com/w/131.html

writer:https://www.ikjzd.com/w/1280


核心提示:男人到了中年,是一个很重要的节点,除了要应付压力更大的工作之外,也是诸多疾病的目标,养生是很多男性都必须懂得的。 男人到了中年,是一个很重要的节点,除了要应付压力更大的工作之外,也是诸多疾病的目标,养生是很多男性都必须懂得的,下面就为大家介绍下男性的养生方法。方法一,适当补肾为了应对日渐增强的工作压力,肾的损耗是必不可少的,所以男性应该适当的补肾,以免肾气不足导致精神萎靡,甚至肾病的出现
深诺互动:https://www.ikjzd.com/w/2746
数魔跨境:https://www.ikjzd.com/w/1425.html
蜜芽:https://www.ikjzd.com/w/1320
40岁的我背着老公和小男生约会:http://lady.shaoqun.com/m/a/272952.html
如何破供应链难题?听eBay小家电品类新卖家为你支招!:https://www.ikjzd.com/home/111950
老公半夜扯烂我表姐的内衣:http://lady.shaoqun.com/m/a/271240.html

2021-04-06

如何看出运动强度高低?用心率公式一算便知

核心提示:看过很多文章都在说运动减肥的时候心率达到一定标准才能有减肥的效果,很多人因此纠结着,疯狂训练达到要求,但是效果并不如意,到底怎么回事呢?

心率确实会影响减肥的效果,但是真的了解减肥跟心率的关系吗?今天这篇文章就给大家具体讲解这方面的问题。


相信不少跑友都听说过有氧运动"减脂心率区间"的说法。的确,要想提高有氧运动燃烧脂肪,那么合适的运动强度(心率)区间是十分重要的。如果运动强度太大、心率太高,那么就会以消耗糖类为主,消耗脂肪的总量有限(运动强度越高,脂肪供能比例越少),而且运动量也很难增加;反之,如果运动强度太低,心率太低,那么消耗脂肪的速度太慢。

如何计算出你的最高心率

一般来说,心率计算公式可以分为几个阶段:

心率初级公式:针对健康状况较差的人群。目标心率=(200-年龄)*(60%~80%)

60%~70%主要用于减脂;70%~80%主要用于提高心肺功能。

普通公式:针对普通人群。目标心率=(220-年龄)*(60%~80%)60%~70%主要用于减脂;70%~80%主要用于提高心肺功能。

卡福能公式:针对身体素质较高的人群。目标心率=(220-年龄-静止心率)*(65%~85%)+静止心率65%~75%主要用于减脂;75%~85%主要用于提高心肺功能成年。

因此,针对普通人来说,最高心率的60%~80%为最合适、有效的有氧运动心率范围,所以运动时必须达到有氧心率,并保持超过30分钟,身体内的脂肪才会被动员起来,供给能量。

心率是可以通过锻炼提升的,提高心率有助于你达到更好的运动表现和运动效果。

方法一:

在有氧运动机上为自己找一个中等强度的强度。每隔一到两分钟就逐渐增加速度,同时监测你的心率。我们的目标是找到一个稳定的心率——在这个水平上,你感觉自己在努力工作,但不会心跳过快。这应该在中等强度的区域,大约75%到85%的HRR或HRM。

保持你的心率在130bpm如果三分钟后依然稳定,那可以适当增加强度,如果三分钟后你的心率有所上升,你就要减少强度了。

坚持每周3-4次有氧运动,每次45-50分钟。四周后试着增加你的强度,你会发现在同等心率的条件下你会有更好的运动表现。


方法二:

我们都听说过高强度间歇训练,也就是HIIT,它由几次几乎最大的努力工作所组成,紧接着就是休息。然而,它真正有效的程度,很大程度上取决于你如何努力推动自己的内心。

HIIT训练其实更适合运动基础好的人使用,因为如果是新手,体能跟不上的话容易造成运动疲劳,从而起不到体能提升的作用。如果你经历了一段时间的锻炼,体能基础不错你就可以尝试这样的方法,它可以更快的提升你的运动表现。


原文转载:http://lady.shaoqun.com/a/282401.html

跨境电商:https://www.ikjzd.com/

铭宣:https://www.ikjzd.com/w/1551.html

tenso:https://www.ikjzd.com/w/1552


核心提示:看过很多文章都在说运动减肥的时候心率达到一定标准才能有减肥的效果,很多人因此纠结着,疯狂训练达到要求,但是效果并不如意,到底怎么回事呢? 心率确实会影响减肥的效果,但是真的了解减肥跟心率的关系吗?今天这篇文章就给大家具体讲解这方面的问题。相信不少跑友都听说过有氧运动"减脂心率区间"的说法。的确,要想提高有氧运动燃烧脂肪,那么合适的运动强度(心率)区间是十分重要的。如果运动强度太大、心率太
敦煌网:https://www.ikjzd.com/w/189
菜鸟网:https://www.ikjzd.com/w/1547
sca:https://www.ikjzd.com/w/2424
慌了!德国全境"硬封锁"、DHL再暂停6国派送、FBA卖家要断货...:https://www.ikjzd.com/home/137064
注意!亚马逊开始严查店铺与营业执照经营范围一致性!Vine评论计划暂停!:https://www.ikjzd.com/home/120890
产品被下架!原因是卖家打着亚马逊的幌子骗人?:https://www.ikjzd.com/home/130816

数据:Pattern发布《2021德国在线购物者报告》

近日,全球市场卖家Pattern对德国在线购物者进行了调查,以了解在2020年如何改变他们的购物习惯,以及预测购物行为是否会在2021年继续。

德国作为欧洲的主要大国,作为亚马逊欧洲站卖家,如果想在亚马逊上更好地吸引德国在线购物者,这份报告或许对您有所帮助。

Pattern的《德国购物者报告2021》显示,年轻消费者推动了亚马逊支出的增长。18-24岁和25-34岁年龄段的人表示他们将在亚马逊上花费更多的可能性是老年购物者的两倍以上。预计2021年,年龄在18-24岁之间的人群中有66%,年龄在25-34岁之间的人群中将占58%,他们会在亚马逊德国花费更多或更多。

据45%的德国在线购物者预测,到2021年,他们在非食品在线购物上的支出将比2020年增加。还有44%的在亚马逊德国购物的人们预计,今年在市场上的支出将更多。只有10%的人预计今年在德国亚马逊上的花费会减少。

到2020年,从亚马逊购买德国德国在线购物者的比例为92%;有83%的人具体报告说他们是从亚马逊的德国网站购买的。

对2021年支出的预测将遵循2020年德国在线销售增长的模式。46%的德国在线购物者表示,他们在2020年的在线购买量将比往年更多,而36%的受访者说,他们从亚马逊德国购买了更多商品。32%的人说他们在线购买的产品以前是在商店购买的;展示了2020年在某些时候德国非必需品商店的关闭如何推动消费者上网。

对亚马逊德国的看法

该报告还强调了德国在线购物者对亚马逊的态度,以及市场如何与他们产生共鸣。调查的发现包括:

Prime会员

到2021年,超过三分之二的德国在线购物者将可以使用Prime帐户,其中46%的人已经拥有自己的帐户,12%的人使用其他人的帐户,还有12%的人可能会在这一年订阅。36%的德国亚马逊客户认为Prime是选择从2020年开始购买亚马逊的原因。

亚马逊的关键类别

Pattern询问德国的在线购物者将来是否有可能从亚马逊购买不同类别的产品。结果表明,在越来越多的类别中,亚马逊作为销售渠道的重要性。

宣布亚马逊成为其首选零售商的在线购物人数最多的类别包括:电子和计算机设备(29%);家居与厨房(26%); 玩具,儿童和婴儿(22%);服装,鞋子和配饰(21%); 家居装修(20%)。

亚马逊的可用性是成功的关键

过去一年中,有57%的在线购物者访问过Amazon.de,以寻找他们在商店中找不到的产品,还有34%的访问者寻找在网上其他地方找不到的产品。从亚马逊购买的购物者中有23%表示这样做是因为该产品在其他地方无法获得。

到2020年从亚马逊购买商品的人中,有37%从他们以前从未从亚马逊购买的品牌购买过产品。28%的亚马逊购物者购买了他们以前从未从亚马逊购买的商品。

Pattern全球行销主管Joanna Perry表示:

"尽管在德国拥有强大的本地在线竞争对手,但亚马逊似乎已成为2020年锁定期间前往在线购物的最大受益者之一。这些结果表明,我们在Amazon.de上目睹的流量和销售量的增长是不是临时的;并可能在今年进一步加速。我们的研究突显了亚马逊作为想要吸引德国消费者的品牌的销售渠道的日益重要的意义。"



原创:跨境知道  晓阳


文章来源:https://www.ikjzd.com/home/143795

跨境电商:https://www.ikjzd.com/

友家速递:https://www.ikjzd.com/w/1341

蜜芽:https://www.ikjzd.com/w/1320

livingsocial:https://www.ikjzd.com/w/714.html

数据:Pattern发布《2021德国在线购物者报告》

近日,全球市场卖家Pattern对德国在线购物者进行了调查,以了解在2020年如何改变他们的购物习惯,以及预测购物行为是否会在2021年继续。 德国作为欧洲的主要大国,作为亚马逊欧洲站卖家,如果想在亚马逊上更好地吸引德国在线购物者,这份报告或许对您有所帮助。

从网络请求过程看OkHttp拦截器

前言

之前我们结合设计模式简单说了下OkHttp的大体流程,今天就继续说说它的核心部分——拦截器

因为拦截器组成的链其实是完成了网络通信的整个流程,所以我们今天就从这个角度说说各拦截器的功能。

首先,做一下简单回顾,从getResponseWithInterceptorChain方法开始。

简单回顾(getResponseWithInterceptorChain)

internal fun getResponseWithInterceptorChain(): Response { // Build a full stack of interceptors. val interceptors = mutableListOf<Interceptor>() interceptors += client.interceptors interceptors += RetryAndFollowUpInterceptor(client) interceptors += BridgeInterceptor(client.cookieJar) interceptors += CacheInterceptor(client.cache) interceptors += ConnectInterceptor if (!forWebSocket) {  interceptors += client.networkInterceptors } interceptors += CallServerInterceptor(forWebSocket) val chain = RealInterceptorChain(  interceptors = interceptors  //... ) val response = chain.proceed(originalRequest) }

这些拦截器会形成一条链,组织了请求接口的所有工作。

以上为上节内容,不了解的朋友可以返回上一篇文章看看。

假如我来设计拦截器

先抛开拦截器的这些概念不谈,我们回顾下网络通信过程,看看实现一个网络框架至少要有哪些功能。

  • 请求过程:封装请求报文、建立TCP连接、向连接中发送数据
  • 响应过程:从连接中读取数据、处理解析响应报文

而之前说过拦截器的基本代码格式是这样:

 override fun intercept(chain: Interceptor.Chain): Response { //做事情A response = realChain.proceed(request) //做事情B }

也就是分为 请求前工作,请求传递,获取响应后工作 三部分。

那我们试试能不能把上面的功能分一分,设计出几个拦截器?

  • 拦截器1: 处理请求前的 请求报文封装,处理响应后的 响应报文分析

诶,不错吧,拦截器1就用来处理 请求报文和响应报文的一些封装和解析工作。就叫它封装拦截器吧。

  • 拦截器2: 处理请求前的 建立TCP连接

肯定需要一个拦截器用来建立TCP连接,但是响应后好像没什么需要做连接方面的工作了?那就先这样,叫它连接拦截器吧。

  • 拦截器3:处理请求前的 数据请求(写到数据流中) 处理响应后的 数据获取(从数据流拿数据)

这个拦截器就负责TCP连接后的 I/O操作,也就是从流中读取和获取数据。就叫它 数据IO拦截器 吧。

好了,三个拦截器好像足够了,我得意满满的偷看了一眼okhttp拦截器代码,7个???我去。。

那再思考思考🤔...,还有什么情况没考虑到呢?比如失败重试?返回301重定向?缓存的使用?用户自己对请求的统一处理?
所以又可以模拟出几个新的拦截器:

  • 拦截器4:处理响应后的 失败重试和重定向功能

没错,刚才只考虑到请求成功,请求失败了要不要重试呢?响应码为301、302时候的重定向处理?这都属于要重新请求的部分,肯定不能丢给用户,需要网络框架自己给处理好。就叫它 重试和重定向拦截器吧。

  • 拦截器5:处理响应前的 缓存复用 ,处理响应后的 缓存响应数据

还有一个网络请求有可能的需求就是关于缓存,这个缓存的概念可能有些朋友了解的不多,其实它多用于浏览器中。

浏览器缓存一般分为两部分:强制缓存和协商缓存

强制缓存就是服务器会告诉客户端该怎么缓存,例如 cache-Control 字段,随便举几个例子:

  • private:所有内容只有客户端可以缓存,Cache-Control的默认取值
  • max-age=xxx:表示缓存内容将在xxx秒后失效
  • no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
  • no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存

协商缓存就是需要客户端和服务器进行协商后再决定是否使用缓存,比如强制缓存过期失效了,就要再次请求服务器,并带上缓存标志,例如Etag。
客户端再次进行请求的时候,请求头带上If-None-Match,也就是之前服务器返回的Etag值。

Etag值就是文件的唯一标示,服务器通过某个算法对资源进行计算,取得一串值(类似于文件的md5值),之后将该值通过etag返回给客户端

然后服务器就会将Etag值和服务器本身文件的Etag值进行比较,如果一样则数据没改变,就返回304,代表你要请求的数据没改变,你直接用就行啦。
如果不一致,就返回新的数据,这时候的响应码就是正常的200

​这个拦截器就是用于处理这些情况,我们就叫它 缓存拦截器 吧。

  • 拦截器6: 自定义拦截器

最后就是自定义的拦截器了,要给开发者一个可以自定义的拦截器,用于统一处理请求或响应数据。

这下好像齐了,至于之前说的7个拦截器还有1个,留个悬念最后再说。

最后再给他们排个序吧:

  • 1、自定义拦截器的公共参数处理。
  • 2、封装拦截器封装请求报文
  • 3、缓存拦截器的缓存复用。
  • 4、连接拦截器建立TCP连接。
  • 5、IO拦截器的数据写入。
  • 6、IO拦截器的数据读取。
  • 7、缓存拦截器保存响应数据缓存。
  • 8、封装拦截器分析响应报文
  • 9、重试和重定向拦截器处理重试和重定向情况。
  • 10、自定义拦截器统一处理响应数据。

有点绕,来张图瞧一瞧:

所以,拦截器的顺序也基本固定了:

  • 1、自定义拦截器
  • 2、重试和重定向拦截器
  • 3、封装拦截器
  • 4、缓存拦截器
  • 5、连接拦截器
  • 6、IO拦截器

下面具体看看吧。

自定义拦截器

在请求之前,我们一般创建自己的自定义拦截器,用于添加一些接口公共参数,比如把token加到Header中。

class MyInterceptor() : Interceptor { override fun intercept(chain: Interceptor.Chain): Response {  var request = chain.request()  request = request.newBuilder()     .addHeader("token", "token")     .url(url)     .build()  return chain.proceed(request) }

要注意的是,别忘了调用chain.proceed,否则这条链就无法继续下去了。

在获取响应之后,我们一般用拦截器进行结果打印,比如常用的HttpLoggingInterceptor

addInterceptor( HttpLoggingInterceptor().apply {  level = HttpLoggingInterceptor.Level.BODY })

重试和重定向拦截器(RetryAndFollowUpInterceptor)

为了方便理解,我对源码进行了修剪✂️:

class RetryAndFollowUpInterceptor(private val client: OkHttpClient) : Interceptor { @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response { while (true) {  try {  try {   response = realChain.proceed(request)  } catch (e: RouteException) {   //路由错误   continue  } catch (e: IOException) {   // 请求错误   continue  }  //获取响应码判断是否需要重定向  val followUp = followUpRequest(response, exchange)  if (followUp == null) {   //没有重定向   return response  }  //赋予重定向请求,再次进入下一次循环  request = followUp  }  } }}

这样代码就很清晰了,重试和重定向的处理都是需要重新请求,所以这里用到了while循环。

  • 当发生请求过程中错误的时候,就需要重试,也就是通过continue进入下一次循环,重新走到realChain.proceed方法进行网络请求。
  • 当请求结果需要重定向的时候,就赋予新的请求,并进入下一次循环,重新请求网络。
  • 当请求结果没有重定向,那么就直接返回response响应结果。

封装拦截器(BridgeInterceptor)

class BridgeInterceptor(private val cookieJar: CookieJar) : Interceptor { @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response { //添加头部信息 requestBuilder.header("Content-Type", contentType.toString()) requestBuilder.header("Host", userRequest.url.toHostHeader()) requestBuilder.header("Connection", "Keep-Alive") requestBuilder.header("Accept-Encoding", "gzip") requestBuilder.header("Cookie", cookieHeader(cookies)) requestBuilder.header("User-Agent", userAgent) val networkResponse = chain.proceed(requestBuilder.build()) //解压 val responseBuilder = networkResponse.newBuilder()  .request(userRequest) if (transparentGzip &&  "gzip".equals(networkResponse.header("Content-Encoding"), ignoreCase = true) &&  networkResponse.promisesBody()) {  val responseBody = networkResponse.body  if (responseBody != null) {  val gzipSource = GzipSource(responseBody.source())  responseBuilder.body(RealResponseBody(contentType, -1L, gzipSource.buffer()))  } } return responseBuilder.build() }

请求前的代码很简单,就是添加了一些必要的头部信息,包括Content-Type、Host、Cookie等等,封装成一个完整的请求报文,然后交给下一个拦截器。

而获取响应后的代码就有点不是很明白了,gzip是啥?GzipSource又是什么类?

gzip压缩是基于deflate中的算法进行压缩的,gzip会产生自己的数据格式,gzip压缩对于所需要压缩的文件,首先使用LZ77算法进行压缩,再对得到的结果进行huffman编码,根据实际情况判断是要用动态huffman编码还是静态huffman编码,最后生成相应的gz压缩文件。

简单的说,gzip就是一种压缩方式,可以将数据进行压缩,在添加头部信息的时候就添加了这样一个头部:

requestBuilder.header("Accept-Encoding", "gzip")

这一句其实就是在告诉服务器,客户端所能接受的文件的压缩格式,这里设置了gzip之后,服务器看到了就能把响应报文数据进行gzip压缩再传输,提高传输效率,节省流量。

所以请求之后的这段关于gzip的处理其实就是客户端对压缩数据进行解压缩,而GzipSource是okio库里面一个进行解压缩读取数据的类。

缓存拦截器(CacheInterceptor)

继续看缓存拦截器—CacheInterceptor

class CacheInterceptor(internal val cache: Cache?) : Interceptor { @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response { //取缓存 val cacheCandidate = cache?.get(chain.request())  //缓存策略类 val strategy = CacheStrategy.Factory(now, chain.request(), cacheCandidate).compute() val networkRequest = strategy.networkRequest val cacheResponse = strategy.cacheResponse // 如果不允许使用网络,并且缓存数据为空 if (networkRequest == null && cacheResponse == null) {  return Response.Builder()   .request(chain.request())   .protocol(Protocol.HTTP_1_1)   .code(HTTP_GATEWAY_TIMEOUT)//504   .message("Unsatisfiable Request (only-if-cached)")   .body(EMPTY_RESPONSE)   .sentRequestAtMillis(-1L)   .receivedResponseAtMillis(System.currentTimeMillis())   .build().also {   listener.satisfactionFailure(call, it)   } } // 如果不允许使用网络,但是有缓存 if (networkRequest == null) {  return cacheResponse!!.newBuilder()   .cacheResponse(stripBody(cacheResponse))   .build().also {   listener.cacheHit(call, it)   } }  networkResponse = chain.proceed(networkRequest) // 如果缓存不为空 if (cacheResponse != null) {  //304,表示数据未修改  if (networkResponse?.code == HTTP_NOT_MODIFIED) {  cache.update(cacheResponse, response)  return response  }  } //如果开发者设置了缓存,则将响应数据缓存 if (cache != null) {  if (response.promisesBody() && CacheStrategy.isCacheable(response, networkRequest)) {  //缓存header  val cacheRequest = cache.put(response)  //缓存body  return cacheWritingResponse(cacheRequest, response)  } } return response }}

还是分两部分看:

  • 请求之前,通过request获取了缓存,然后判断缓存为空,就直接返回code为504的结果。如果有缓存并且缓存可用,则直接返回缓存。
  • 请求之后,如果返回304代表服务器数据没修改,则直接返回缓存。如果cache不为空,那么就把response缓存下来。

这样看是不是和上面我们说过的缓存机制对应上了?请求之前就是处理强制缓存的情况,请求之后就会处理协商缓存的情况。

但是还是有几个问题需要弄懂:

1、缓存是怎么存储和获取的?
2、每次请求都会去存储和获取缓存吗?
3、缓存策略(CacheStrategy)到底是怎么处理网络和缓存的?networkRequest什么时候为空?

首先,看看缓存哪里取的:

val cacheCandidate = cache?.get(chain.request())internal fun get(request: Request): Response? { val key = key(request.url) val snapshot: DiskLruCache.Snapshot = try {  cache[key] ?: return null }  val entry: Entry = try {  Entry(snapshot.getSource(ENTRY_METADATA)) }  val response = entry.response(snapshot) if (!entry.matches(request, response)) {  response.body?.closeQuietly()  return null } return response }

通过cache.get方法获取了response缓存,get方法中主要是用到了请求Request的url来作为获取缓存的标志。
所以我们可以推断,缓存的获取是通过请求的url作为key来获取的。

那么cache又是哪里来的呢?

val cache: Cache? = builder.cacheinterceptors += CacheInterceptor(client.cache)class CacheInterceptor(internal val cache: Cache?) : Interceptor

没错,就是实例化CacheInterceptor的时候传进去的,所以这个cache是需要我们创建OkHttpClient的时候设置的,比如这样:

 val okHttpClient =  OkHttpClient().newBuilder()   .cache(Cache(cacheDir, 10 * 1024 * 1024))   .build()

这样设置之后,okhttp就知道cache存在哪里,大小为多少,然后就可以进行服务器响应的缓存处理了。

所以第二个问题也解决了,并不是每次请求都会去处理缓存,而是开发者需要去设置缓存的存储目录和大小,才会针对缓存进行这一系列的处理操作。

最后再看看缓存策略方法 CacheStrategy.Factory().compute()

class CacheStrategy internal constructor( val networkRequest: Request?, val cacheResponse: Response?) fun compute(): CacheStrategy {  val candidate = computeCandidate()  return candidate } private fun computeCandidate(): CacheStrategy {  //没有缓存情况下,返回空缓存  if (cacheResponse == null) {  return CacheStrategy(request, null)  }  //...  //缓存控制不是 no-cache,且未过期  if (!responseCaching.noCache && ageMillis + minFreshMillis < freshMillis + maxStaleMillis) {  val builder = cacheResponse.newBuilder()  return CacheStrategy(null, builder.build())  }   return CacheStrategy(conditionalRequest, cacheResponse) }

在这个缓存策略生存的过程中,只有一种情况下会返回缓存,也就是缓存控制不是no-cache,并且缓存没过期情况下,就返回缓存,然后设置networkRequest为空。
所以也就对应上一开始缓存拦截器中的获取缓存后的判断:

 // 如果不允许使用网络,但是有缓存,则直接返回缓存 if (networkRequest == null) {  return cacheResponse!!.newBuilder()   .cacheResponse(stripBody(cacheResponse))   .build().also {   listener.cacheHit(call, it)   } }

连接拦截器(ConnectInterceptor)

继续,连接拦截器,之前说了是关于TCP连接的。

object ConnectInterceptor : Interceptor { @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response { val realChain = chain as RealInterceptorChain val exchange = realChain.call.initExchange(chain) val connectedChain = realChain.copy(exchange = exchange) return connectedChain.proceed(realChain.request) }}

代码看着倒是挺少的,但其实这里面很复杂很复杂,不着急,我们慢慢说。
这段代码就执行了一个方法就是initExchange方法:

internal fun initExchange(chain: RealInterceptorChain): Exchange { val codec = exchangeFinder.find(client, chain) val result = Exchange(this, eventListener, exchangeFinder, codec) return result } fun find( client: OkHttpClient, chain: RealInterceptorChain ): ExchangeCodec { try {  val resultConnection = findHealthyConnection(   connectTimeout = chain.connectTimeoutMillis,   readTimeout = chain.readTimeoutMillis,   writeTimeout = chain.writeTimeoutMillis,   pingIntervalMillis = client.pingIntervalMillis,   connectionRetryEnabled = client.retryOnConnectionFailure,   doExtensiveHealthChecks = chain.request.method != "GET"  )  return resultConnection.newCodec(client, chain) } }

好像有一点眉目了,找到一个ExchangeCodec类,并封装成一个Exchange类。

  • ExchangeCodec:是一个连接所用的编码解码器,用于编码HTTP请求和解码HTTP响应。
  • Exchange:封装这个编码解码器的一个工具类,用于管理ExchangeCodec,处理实际的 I/O。

明白了,这个连接拦截器(ConnectInterceptor)就是找到一个可用连接呗,也就是TCP连接,这个连接就是用于HTTP请求和响应的。
你可以把它可以理解为一个管道,有了这个管道,才能把数据丢进去,也才可以从管道里面取数据。

而这个ExchangeCodec,编码解码器就是用来读取和输送到这个管道的一个工具,相当于把你的数据封装成这个连接(管道)需要的格式。
我咋知道的?我贴一段ExchangeCodec代码你就明白了:

//Http1ExchangeCodec.java fun writeRequest(headers: Headers, requestLine: String) { check(state == STATE_IDLE) { "state: $state" } sink.writeUtf8(requestLine).writeUtf8("\r\n") for (i in 0 until headers.size) {  sink.writeUtf8(headers.name(i))   .writeUtf8(": ")   .writeUtf8(headers.value(i))   .writeUtf8("\r\n") } sink.writeUtf8("\r\n") state = STATE_OPEN_REQUEST_BODY }

这里贴的是Http1ExchangeCodec的write代码,也就是Http1的编码解码器。

很明显,就是将Header信息一行一行写到sink中,然后再由sink交给输出流,具体就不分析了。只要知道这个编码解码器就是用来处理连接中进行输送的数据即可。

然后就是这个拦截器的关键了,连接到底是怎么获取的呢?继续看看:

 private fun findConnection(): RealConnection { // 1、复用当前连接 val callConnection = call.connection  if (callConnection != null) {  //检查这个连接是否可用和可复用  if (callConnection.noNewExchanges || !sameHostAndPort(callConnection.route().address.url)) {   toClose = call.releaseConnectionNoEvents()  }  return callConnection } //2、从连接池中获取可用连接 if (connectionPool.callAcquirePooledConnection(address, call, null, false)) {  val result = call.connection!!  eventListener.connectionAcquired(call, result)  return result } //3、从连接池中获取可用连接(通过一组路由routes) if (connectionPool.callAcquirePooledConnection(address, call, routes, false)) {  val result = call.connection!!  return result  } route = localRouteSelection.next() // 4、创建新连接 val newConnection = RealConnection(connectionPool, route) newConnection.connect // 5、再获取一次连接,防止在新建连接过程中有其他竞争连接被创建了 if (connectionPool.callAcquirePooledConnection(address, call, routes, true)) {  return result } //6、还是要使用创建的新连接,放入连接池,并返回 connectionPool.put(newConnection) return newConnection }

获取连接的过程很复杂,为了方便看懂,我简化了代码,分成了6步。

  • 1、检查当前连接是否可用。

怎么判断可用的?主要做了两个判断
1)判断是否不再接受新的连接
2)判断和当前请求有相同的主机名和端口号。

这倒是很好理解,要这个连接是连接的同一个地方才能复用是吧,同一个地方怎么判断?就是判断主机名和端口号

还有个问题就是为什么有当前连接??明明还没开始连接也没有获取连接啊,怎么连接就被赋值了?

还记得重试和重定向拦截器吗?对了,就是当请求失败需要重试的时候或者重定向的时候,这时候连接还在呢,是可以直接进行复用的。

  • 2和3、从连接池中获取可用连接

第2步和第3步都是从连接池获取连接,有什么不一样吗?

connectionPool.callAcquirePooledConnection(address, call, null, false)connectionPool.callAcquirePooledConnection(address, call, routes, false)

好像多了一个routes字段?

这里涉及到HTTP/2的一个技术,叫做 HTTP/2 CONNECTION COALESCING(连接合并),什么意思呢?

假设有两个域名,可以解析为相同的IP地址,并且是可以用相同的TLS证书(比如通配符证书),那么客户端可以重用相同的TCP连接从这两个域名中获取资源。

再看回我们的连接池,这个routes就是当前域名(主机名)可以被解析的ip地址集合,这两个方法的区别也就是一个传了路由地址,一个没有传。

继续看callAcquirePooledConnection代码:

 internal fun isEligible(address: Address, routes: List<Route>?): Boolean { if (address.url.host == this.route().address.url.host) {  return true  } //HTTP/2 CONNECTION COALESCING if (http2Connection == null) return false if (routes == null || !routeMatchesAny(routes)) return false if (address.hostnameVerifier !== OkHostnameVerifier) return false return true }

1)判断主机名、端口号等,如果请求完全相同就直接返回这个连接。
2)如果主机名不同,还可以判断是不是HTTP/2请求,如果是就继续判断路由地址,证书,如果都能匹配上,那么这个连接也是可用的。

  • 4、创建新连接

如果没有从连接池中获取到新连接,那么就创建一个新连接,这里就不多说了,其实就是调用到socket.connect进行TCP连接。

  • 5、再从连接池获取一次连接,防止在新建连接过程中有其他竞争连接被创建了

创建了新连接,为什么还要去连接池获取一次连接呢?
因为在这个过程中,有可能有其他的请求和你一起创建了新连接,所以我们需要再去取一次连接,如果有可以用的,就直接用它,防止资源浪费。

其实这里又涉及到HTTP2的一个知识点:多路复用

简单的说,就是不需要当前连接的上一个请求结束之后再去进行下一次请求,只要有连接就可以直接用。

HTTP/2引入二进制数据帧和流的概念,其中帧对数据进行顺序标识,这样在收到数据之后,就可以按照序列对数据进行合并,而不会出现合并后数据错乱的情况。同样是因为有了序列,服务器就可以并行的传输数据,这就是流所做的事情。

所以在HTTP/2中可以保证在同一个域名只建立一路连接,并且可以并发进行请求。

  • 6、新连接放入连接池,并返回

最后一步好理解吧,走到这里说明就要用这个新连接了,那么就把它存到连接池,返回这个连接。

这个拦截器确实麻烦,大家好好梳理下吧,我也再来个图:

IO拦截器(CallServerInterceptor)

连接拿到了,编码解码器有了,剩下的就是发数据,读数据了,也就是跟I/O相关的工作。

class CallServerInterceptor(private val forWebSocket: Boolean) : Interceptor { @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response {  //写header数据 exchange.writeRequestHeaders(request) //写body数据 if (HttpMethod.permitsRequestBody(request.method) && requestBody != null) {  val bufferedRequestBody = exchange.createRequestBody(request, true).buffer()  requestBody.writeTo(bufferedRequestBody) } else {  exchange.noRequestBody() } //结束请求 if (requestBody == null || !requestBody.isDuplex()) {  exchange.finishRequest() }  //获取响应数据 var response = responseBuilder  .request(request)  .handshake(exchange.connection.handshake())  .build() var code = response.code response = response.newBuilder()   .body(exchange.openResponseBody(response))   .build() return response }}

这个拦截器 倒是没干什么活,之前的拦截器兄弟们都把准备工作干完了,它就调用下exchange类的各种方法,写入header,body,拿到code,response

这活可干的真轻松啊。

被遗漏的自定义拦截器(networkInterceptors)

好了,最后补上这个拦截器networkInterceptors,它也是一个自定义拦截器,位于CallServerInterceptor之前,属于倒数第二个拦截器。

那为什么OkHttp在有了一个自定义拦截器的前提下又提供了一个拦截器呢?

可以发现,这个拦截器的位置是比较深的位置,处在发送数据的前一刻,以及收到数据的第一刻。
这么敏感的位置,决定了通过这个拦截器可以看到更多的信息,比如:

  • 请求之前,OkHttp处理之后的请求报文数据,比如增加了各种header之后的数据。
  • 请求之后,OkHttp处理之前的响应报文数据,比如解压缩之前的数据。

所以,这个拦截器就是用来网络调试的,调试比较底层、更全面的数据。

总结

最后再回顾下每个拦截器的作用:

  • addInterceptor(Interceptor),这是由开发者设置的,会按照开发者的要求,在所有的拦截器处理之前进行最早的拦截处理,比如一些公共参数,Header都可以在这里添加。
  • RetryAndFollowUpInterceptor,这里会对连接做一些初始化工作,以及请求失败的重试工作,重定向的后续请求工作。
  • BridgeInterceptor,这里会为用户构建一个能够进行网络访问的请求,同时后续工作将网络请求回来的响应Response转化为用户可用的Response,比如添加文件类型,content-length计算添加,gzip解包。
  • CacheInterceptor,这里主要是处理cache相关处理,会根据OkHttpClient对象的配置以及缓存策略对请求值进行缓存,而且如果本地有了可⽤的Cache,就可以在没有网络交互的情况下就返回缓存结果。
  • ConnectInterceptor,这里主要就是负责建立连接了,会建立TCP连接或者TLS连接,以及负责编码解码的HttpCodec。
  • networkInterceptors,这里也是开发者自己设置的,所以本质上和第一个拦截器差不多,但是由于位置不同,用处也不同。这个位置添加的拦截器可以看到请求和响应的数据了,所以可以做一些网络调试。
  • CallServerInterceptor,这里就是进行网络数据的请求和响应了,也就是实际的网络I/O操作,通过socket读写数据。

参考

https://www.jianshu.com/p/bfb13eb3a425
https://segmentfault.com/a/1190000020386580
https://www.jianshu.com/p/02db8b55aae9
https://kaiwu.lagou.com/course/courseInfo.htm?courseId=67#/detail/pc

拜拜

感谢大家的阅读,有一起学习的小伙伴可以关注下我的公众号——码上积木❤️❤️
每日一个知识点,积少成多,建立知识体系架构。
这里有一群很好的Android小伙伴,欢迎大家加入~









原文转载:http://www.shaoqun.com/a/665734.html

跨境电商:https://www.ikjzd.com/

hts:https://www.ikjzd.com/w/525

vat:https://www.ikjzd.com/w/109


前言之前我们结合设计模式简单说了下OkHttp的大体流程,今天就继续说说它的核心部分——拦截器。因为拦截器组成的链其实是完成了网络通信的整个流程,所以我们今天就从这个角度说说各拦截器的功能。首先,做一下简单回顾,从getResponseWithInterceptorChain方法开始。简单回顾(getResponseWithInterceptorChain)internalfungetRespon
anker:https://www.ikjzd.com/w/1027
邮乐:https://www.ikjzd.com/w/1776
photobucket:https://www.ikjzd.com/w/132
我和邻居姐姐的暧昧故事 口述那晚我和她的再次邂逅:http://www.30bags.com/a/250485.html
从华强北到撒哈拉,"非洲手机之王"将走向何方?:https://www.ikjzd.com/home/21541
口述:为报复老公 我成了他同事的情人:http://lady.shaoqun.com/m/a/10733.html

高达180欧元头程补贴! 继0元仓储/移除/退货费后,亚马逊物流福利再升级!

4月初,亚马逊物流(FBA)利好消息不断!继0元搞定推广/仓储/移除/退货费,低成本测试新品之后(点击了解👉亚马逊物流新选品计划),欧洲亚马逊物流又推出了一项针对中国新卖家入仓头程运输费用的限时补贴优惠活动!符合条件的卖家可以获得入仓费用补贴,最高可达约180欧元

01 限时补贴优惠活动详情

下面就跟着小编一起来看看限时补贴优惠到底是什么吧!

活动详情:

如果卖家发送至少150件商品(此处指units)到英国境内的亚马逊运营中心,并在亚马逊英国站使用FBA销售该商品,将获得80英镑的补贴

如果卖家发送至少150件商品(此处指units)到德国、法国、意大利、西班牙境内任一亚马逊运营中心,并在相应亚马逊站点使用FBA销售该商品,将获得90欧元的补贴

如果卖家分别发送至少150件商品(此处指units)到英国境内的亚马逊运营中心,以及欧盟境内(德国、法国、意大利、西班牙)的任一亚马逊运营中心,并在英国及德国、法国、意大利和西班牙任一站点使用FBA销售该商品,将获得以上两项补贴,即80英镑+90欧元,共计约183欧元(基于3月26日的汇率计算)。

🚩请注意:该活动适用于在欧洲首次使用FBA进行销售的专业卖家,并且卖家需要在5月31日之前把商品发送到欧洲亚马逊运营中心,并通过FBA销售该商品。

与此同时,卖家还可结合限时免费亚马逊增值税整合服务,注册欧洲VAT税号。

亚马逊增值税整合服务是亚马逊官方的增值税合规解决方案,您可借助此方案通过第三方税务服务商来管理您的欧洲增值税注册和申报义务,从而能够更轻松、高效地处理增值税合规问题,将更多时间用于扩展欧洲业务。

该项服务的限时促销仍然有效:2021 年 4月 30 日前订阅可享首年免费福利(包括免首年费增值税注册、申报和财务代表服务),免费英国和/或欧盟 EORI 号码

复制下方链接到浏览器打开,立即开始👇

https://sellercentral-europe.amazon.com/vat-registration/v2/index.html/vat-services?ref=sc_FBAincen_VISALP#/welcome

02 头程运费补贴领取指南

那上述的中国新卖家入仓头程运输费用的限时补贴如何领取呢?接下来,小编将手把手教您注册领取该项头程运费补贴!

第一步

首先,登录欧洲亚马逊卖家平台,访问活动页面

您可以在电脑端,复制黏贴此链接到浏览器中打开👇

www.amazon.co.uk/cEiPmPaP


第二步

您需要点击活动页面中的"注册优惠"按钮,申请注册加入该活动。

请注意:点击"注册优惠"按钮后,并不代表成功注册,亚马逊会审核您的账户情况,以确认是否符合该项活动的资格要求,并在5个工作日内通过卖家平台消息告知您最终结果,请注意查收相关信息。


请注意您需要符合以下要求才能注册成功:

1您是专业卖家

2在注册优惠时,在亚马逊欧洲站点已经有可售商品

3在过去12个月内,未在亚马逊英国、德国、法国、意大利及西班牙站点使用FBA销售过商品。

第三步

确认成功注册加入该活动后,您就可以准备商品,在卖家平台创建货件,发送到欧洲的亚马逊运营中心了。

请注意:

您需要将至少150件商品发送到亚马逊运营中心,才可以获得对应站点的头程运输费用补贴。

亚马逊汇总了从中国发往欧洲的常见物流承运商,如果您还没有合适的第三方物流承运商,可通过下述链接获取👇

https://m.media-amazon.com/images/G/28/SellerUniversity/Brexit_3rd_party_carriers_1224RF_v3.pdf

将商品发送并储存在欧洲当地,您需要提供目的国的增值税税号,并且您具有增值税缴纳义务。请注意欧洲各国家的相应政策。如果您尚未注册增值税税号,请及时注册并在卖家平台提交。各国注册均需不同的时效,烦请在完成操作之前确保您已完成合规性要求。具体注册要求可以参考下述官方网页,或者咨询您的税务服务商👇

https://gs.amazon.cn/vat.html

此外,您还可以通过上述亚马逊增值税整合服务,利用亚马逊合作的第三方税务服务商,帮您注册VAT税号,并且在2021年4月30日前订阅该服务,可享多项免费福利。

第四步

最后,您就可以在卖家平台查看补贴了!亚马逊将在您运送的商品成功上架并使用FBA销售的一个月内将费用补贴发放到您的卖家账户,请访问活动页面了解如何查看费用补贴发放。

03 常见问题

Q1:如果我第一次运送到亚马逊运营中心的头程物流费用少于80英镑/90欧元,剩余的补贴额度是否适用于以后的头程运输?

如果您第一次运送到亚马逊运营中心的物流费用少于80英镑或90欧元,但您运送的商品数量大于或等于150件,您仍将一次性获得80英镑或90欧元的费用补贴。

Q2:如果我分别在英国和德国注册使用FBA,是否可以获得两次补贴?

可以。为了帮助您在欧洲扩展业务,您将商品成功入库到英国和欧盟(德国,法国,意大利和西班牙)境内的亚马逊运营中心时,均可享受头程物流费用补贴。但是假设您在德国和法国成功入库并通过亚马逊物流发布产品,将仅享受一次补贴(90欧元)。


(来源:亚马逊全球开店)

文章来源:https://www.ikjzd.com/home/143783

跨境电商:https://www.ikjzd.com/

olive:https://www.ikjzd.com/w/2025

韩蓬:https://www.ikjzd.com/w/1635

patpat:https://www.ikjzd.com/w/1079

高达180欧元头程补贴! 继0元仓储/移除/退货费后,亚马逊物流福利再升级!

欧洲亚马逊物流又推出了一项针对中国新卖家入仓头程运输费用的限时补贴优惠活动!符合条件的卖家可以获得入仓费用补贴,最高可达约180欧元!