2021-04-30

2021东南亚国家电商平台汇总之热门菲律宾电商平台

菲律宾人口总数约1.05亿,为东南亚第二人口大国,世界第13人口国。作为东南亚电商市场不可忽视的重要组成部分。菲律宾庞大的人口基数为其催化出"爆炸式"电商增长潜力。目前,菲律宾电商正处起步与高速发展阶段,虽电商于总零售占比整个东南亚电商市场仅约2%,但年复合增长率已逾16%,正在成为不少中国跨境电商卖家进军东南亚市场的新的潜力市场之一。

菲律宾电商市场整体结构已逐步成型,由国际巨头主导,本土电商平台已经逐步丧失其市场竞争力。从电商平台流量角度,菲律宾电商市场几乎被Lazada和Shopee这两个头部电商平台所主导。而Zalora和Argomall这两家为垂直类电商网站,分别聚焦品牌时尚类产品与电子产品,在菲律宾电商市场也有不错的成绩。

可能出于疫情的缘故,消费者最近几年对保健类产品比较关注,主打保健品的iHerb在2020年异军突起,一举闯入榜单前十。曾经具有极大潜力的Oshopping和Argomall两大电商平台已经宣布退出东南亚电商市场,分别将目光投向拓展其他市场或者正在谋求转型。

结合Iprice 2019Q4 到2020Q3 最新公布数据,F-Commerce为您盘点2021年菲律宾电商平台TOP10,带您了解2021年菲律宾电商市场概况。

No.1 Shopee菲律宾

月均流量:31,308,050

由于东南亚移动端普及进程的加速,Shopee PH聚焦移动电商,在月均流量方面在2020年已经超越Lazada,同时Shopee 购物APP在APP Store(IOS)和PlayStore(Google)牢牢占据排名第一的位置。对商家来讲,和Lazada相比,Shopee 一个强大的优势就是不收佣金!这与Lazada平均 1%-4%的佣金相比而言,更具有吸引力。而且Shopee也为商家提供菲律宾本地的自营物流履行计划,能够解决了广大卖家在物流方面的难题。

Shopee菲律宾和Shopee电商在东南亚其他国家的站点一样同样对中国卖家开放。Shopee在国内也开通了官网入驻通道以及专门针对跨境电商的Shopee快速入驻通道-F-Commerce官方代入驻代理通道,相对于官方渠道,代理商F-Commerce同样免费,而且相对于官方注册审核渠道,F-Commerce代入驻更快,一般4~7个工作日就可以通过审核。除了Shopee代入驻服务之外,F-Commerce同时也提供专业Shopee代运营服务:商品管理,电商设计,运营管理,站外推广,本土客服,物流等等。

No.2 Lazada菲律宾

月均流量:29,414,525

Lazada是菲律宾电商行业两大寡头之一,访问流量与Shopee交替占据第一的宝座。Lazada 菲律宾正处将重点聚焦在除了扩大与菲律宾传统品牌的合作关系外,还致力与菲律宾中小企业建立合作,实现共赢合作关系。一般来说,Lazada菲律宾不收取任何平台入驻费用,佣金依据品类不同约在1%-4%之间。且在当地拥有自营物流履行部门,为入驻商家提供便利。

Lazada菲律宾和Shopee一样,在国内同样有官方招商经理以及代理合作商F-Commerce,为跨境电商卖家提供代入驻Lazada以及专业Lazada代运营服务。另外也可以针对选品,物流,推广,客服,翻译等问题资讯F-Commerce,F-Commerce作为专业东南亚跨境电商代运营服务商,能够为您提供专门的咨询服务和电商代运营服务。

No.3 ZALORA

月均流量:1,271,725

ZALORA菲律宾是一个线上时装及美容产品电商,为用户提供时装、饰物、鞋履及化妆护肤品等。ZALORA总部位于新加坡的,并且Zalora获得了Rocket Internet 的投资,ZALORA在东南亚各个国家和地区设有不同的网站, 包括中国香港、中国台湾、新加坡、印度尼西亚、菲律宾、泰国、越南、马来西亚及文莱。

ZALORA主要售卖国际品牌, 但是各个国家的网站也会售卖本土品牌产品。ZALORA拥有50,000多种精选产品,涵盖时尚领域的各个品类面,并且提供快递运输,货到付款和免费退换货等电商服务。如今,ZALORA是亚洲增长最快的在线时尚零售商之一,月访问量达数千万。ZALORA作为时尚产品供应商,打造了一站式的在线购物网站,既满足了消费者的需求,也满足其对时尚的向往,为消费者带来了绝佳的购物体验。

No.4 eBay菲律宾

月均流量:762,525

eBay是跨境电商的热门平台。eBay在菲律宾提供C2C与B2C两种电商销售模式,但作为比较出名的综合电商,eBay的流量方面远远不如Lazada与Shopee,甚至有被Argomall超越的可能性。

一般来说,eBay卖家自行处理物流与配送。eBay在其网站上提供多个运输合作伙伴的服务,卖家还可以选择独立于eBay平台的国际以及国内物流运输方式。

No.5 Beauty MNL

月均流量:624,500

BeautyMNL是菲律宾一家专注于美容、化妆品和时尚的垂直零售电商平台。BeautyMNL拥有一个在线杂志,专门发布有关美容和时尚的最新趋势,并允许其向用户推荐相应的产品和品牌。

No.6 Galleon

月均流量:330,425

为消费者提供发现、分享和购买"菲律宾所没有的新产品"的能力是Galleon与众不同的地方。Galleon所有的产品都直接从美国供应商处采购,并运送到消费者的家门口。

No.7 O Shopping

月均流量:233,400(业务已经停止)

O Shopping是ABS-CBN Corporation和CJ ENM Company Limited的合资企业,是ACJ O Shopping Corporation的品牌。O Shopping允许用户通过电话或互联网下单购物,O Shopping致力于为菲律宾消费者提供高品质,顶级的产品。由于过去两年东南亚日趋激烈的电商市场竞争和O Shopping公司一度的财务亏损,ACJ O Shopping已于去年7月宣布停止东南亚业务并开始逐步裁员。

No.8 Argomall

月均流量:197,400(已业务转型)

与2015年成立的Argomall是一家专注于电子产品的菲律宾本土电商平台,曾在2020年年初一度闯入菲律宾电商榜单前五。按照月度流量计算,Argomall曾经是菲律宾本土最大的智能手机及配件销售商。由于来自国际电商巨头的竞争压力,自2020年第二季度开始,Argomall的流量增长出现出现放缓的趋势,同时在Remulta的帮助下开始转型。

Argomall于15年成立,近年来在菲律宾累计了不少人气,这一点也与菲律宾目前正准备和国际外资电商巨头互相竞争相关。此外,Argomall还提供了本土仓库,能够为用户快速交付商品, Argomall还针对菲律宾市场提供适合本土的保修与质保服务,这也是其在菲律宾电商市场份额收获快速增长的一个主要原因。

No.9 iHerb

月均流量:178,700

iHerb成立于1996年,专注于保健产品的销售,在全球范围内拥有35个国家/地区的分网页。iHerb是世界上最大的优质保健品供应交易平台之一,年均库存翻新率达到了8.5次/年,以确保保健品的品质。可能出于疫情的缘故,消费者对健康保健方面的重视程度大大提高,主打保健品的iHerb在2020年异军突起,一举闯入榜单前十。

No.10 Kimstore

月均流量:147,250

成立于2006年,Kimstore专注于为消费者高品质的产品和服务,使用户更容易享受最新的高科技产品,包括:平板手机,笔记本电脑,相机,游戏机,平板电脑和各种配件等3C类产品。


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

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

贝贝特卖:https://www.ikjzd.com/w/1321

zen cart:https://www.ikjzd.com/w/1282

easybuy:https://www.ikjzd.com/w/2162

2021东南亚国家电商平台汇总之热门菲律宾电商平台

菲律宾人口总数约1.05亿,为东南亚第二人口大国,世界第13人口国。作为东南亚电商市场不可忽视的重要组成部分。菲律宾庞大的人口基数为其催化出"爆炸式"电商增长潜力。目前,菲律宾电商正处起步与高速发展阶段,虽电商于总零售占比整个东南亚电商市场仅约2%,但年复合增长率已逾16%,正在成为不少中国跨境电商卖家进军东南亚市场的新的潜力市场之一。菲律宾电商市场整体结构已逐步成型,由国际巨头主导,本土电商平台

如何使用CSS为文本或图像提供透明背景?

仅使用CSS,是否可以使background元素的元素半透明,但元素的内容(文本和图像)不透明?

我想在不将文本和背景作为两个单独的元素的情况下完成此操作。

仅使用CSS,是否可以使background元素的元素半透明,但元素的内容(文本和图像)不透明?

我想在不将文本和背景作为两个单独的元素的情况下完成此操作。

 

仅使用CSS,是否可以使background元素的元素半透明,但元素的内容(文本和图像)不透明?

我想在不将文本和背景作为两个单独的元素的情况下完成此操作。

 

仅使用CSS,是否可以使background元素的元素半透明,但元素的内容(文本和图像)不透明?

我想在不将文本和背景作为两个单独的元素的情况下完成此操作。

 

仅使用CSS,是否可以使background元素的元素半透明,但元素的内容(文本和图像)不透明?

我想在不将文本和背景作为两个单独的元素的情况下完成此操作。

 

尝试时:

 

p { position: absolute; background-color: green; filter: alpha(opacity=60); opacity: 0.6;}span { color: white; filter: alpha(opacity=100); opacity: 1;}
<p> <span>Hello world</span></p>

解决方案:

使用半透明的PNG图像或使用CSS 3:

background-color: rgba(255, 0, 0, 0.5);

这是来自css3.info,不透明度,RGBA和妥协的文章(2007-06-03)。


 

<p style=""> <span>Hello, World!</span></p>

本文首发于前端黑洞网,博客园同步跟新

 






 
 
 












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

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

houzz:https://www.ikjzd.com/w/236

新蛋:https://www.ikjzd.com/w/79


仅使用CSS,是否可以使background元素的元素半透明,但元素的内容(文本和图像)不透明?我想在不将文本和背景作为两个单独的元素的情况下完成此操作。仅使用CSS,是否可以使background元素的元素半透明,但元素的内容(文本和图像)不透明?我想在不将文本和背景作为两个单独的元素的情况下完成此操作。仅使用CSS,是否可以使background元素的元素半透明,但元素的内容(文本和图像)不透
环球华网:https://www.ikjzd.com/w/1063
stadium:https://www.ikjzd.com/w/2729
周宁:https://www.ikjzd.com/w/1647
Clicks and Mortar:https://www.ikjzd.com/w/1838
重要通知!!关于"亚马逊新政策"第三方卖家的一些条款修改:https://www.ikjzd.com/home/104757
老公保姆贴身练双人瑜伽:http://lady.shaoqun.com/a/270513.html

小说:我实在忍不住了

这个时候我是真的感觉自己控制不住自己了,我不能看到美月这个样子了,因为我的心里真的很在乎美月,但是就在我准备冲过去的时候,上官静忽然拉住了我,然后她就对我说道:"咱们也开始吧!因为,雷明宇身上没有穿那些护具。"

听到了上官静这样的话,我的心里瞬间就阴沉了下去,同时我的脸上也瞬间就变成了满脸惊愕的表情看着上官静了!

这个时候的上官静趴在我的身上,低垂着脑袋看着我,而且她长长的头发也垂在了我的胸口,她的面色十分的潮红,冷艳无比的脸上配上这样昏暗灯光下的潮红,就显得更加的诱人了,只要我想,我就能够好好的享受她,毕竟上官静这个时候都已经跟我说出这样的话来了!

说实话,如果上官静没有后面的那句话的话,我可能就真的要忍不住了,但是我却没有想到这个上官静竟然说雷明宇没有护具,那岂不是脱离了我的计划?

而且这个时候的雷明宇却好像已经真的完全控制不住了,虽然美月是穿着护具的,但是那种东西在一个男人面前,根本就是形同虚设的,毕竟只要一扯就能够扯开的,而且这个时候的美月肯定也有想法了,估计她也不会拒绝这样的情况了!

我的脑海里的第一个想法就是雷明宇不会的,毕竟他们的关系在那放着呢,可是雷明宇此刻却真的是那样在做,我都仿佛听到了声音。

可是怎么可能,瞬间我就想到了一个可能,就是雷明宇会不会真的跟美月的关系没有那么简单?所以这个时候的雷明宇才会真的控制不住?

借着昏暗的目光我看向了美月的那边,我就看到了美月的一只手好像也伸了过去。

这个时候的我是真的控制不住了,我的心里瞬间就爆发出了一股愤怒的情绪,我还是没有办法眼睁睁的看着这样的事发生,尤其是对方还是雷明宇!

因此,我的脑海里想到了这么多的事情之后,我立刻一把就推开了上官静,我直接起身到了那边一脚就把正撞着的雷明宇踹到了一边,我直接骂道:"放开她,你这个禽兽!"

我是真的感觉这个雷明宇是禽兽了,之前他救了我跟美月,我很感激,但是他真的是个真男人吗?而且最主要的事情就是他已经有老婆了,之前听到他在追求上官静我就感觉挺意外的了,这个时候还对美月这样,我就不能忍了!



    上一篇: "扶弟弟":为了扶弟弟,他拆散了自己的小家庭。值得吗


    下一篇: 老婆是"姐夫"。我一怒之下出轨了,她甚至都没有原谅我



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

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

e票联:https://www.ikjzd.com/w/1452

小马哥:https://www.ikjzd.com/w/1655


这个时候我是真的感觉自己控制不住自己了,我不能看到美月这个样子了,因为我的心里真的很在乎美月,但是就在我准备冲过去的时候,上官静忽然拉住了我,然后她就对我说道:"咱们也开始吧!因为,雷明宇身上没有穿那些护具。"听到了上官静这样的话,我的心里瞬间就阴沉了下去,同时我的脸上也瞬间就变成了满脸惊愕的表情看着上官静了!这个时候的上官静趴在我的身上,低垂着脑袋看着我,而且她长长的头发也垂在了我的胸口,她的面
斑马物联:https://www.ikjzd.com/w/1316
拍拍网服装:https://www.ikjzd.com/w/2205
ifttt:https://www.ikjzd.com/w/956
出口坦桑尼亚注意!舱单文件有新规!:https://www.ikjzd.com/home/98597
赚的钱都在货上,这可能是小卖家骗自己的最大谎言:https://www.ikjzd.com/home/114491
老婆闺蜜住我家有点心动 口述和老婆闺蜜的故事:http://www.30bags.com/a/250817.html

益生菌饮料真的能减肥吗?结果让人大失所望!

核心提示:最近看网上说益生菌饮料可以减肥,真的这么神奇吗?到底怎么回事呢?

近年来,有人开始倒腾益生菌饮料了,据说减肥效果杠杠的,对此,小编可持保留态度哦,就来专门科普一下益生菌饮料到底能不能减肥~


先来看一看什么才是真正的益生菌----益生菌是一类对宿主有益的活性微生物,是定植于人体肠道、生殖系统内,能产生确切健康功效从而改善宿主微生态平衡、发挥有益作用的活性有益微生物的总称。

2001年卫生部公布了可用于保健食品中的益生菌菌种名单:

两歧双歧杆菌、婴儿双歧杆菌、长双歧杆菌、短双歧杆菌、青春双歧杆菌、保加利亚乳杆菌、嗜酸乳杆菌、干酪乳杆菌干酪亚种、嗜热链球菌。

明白了有效的益生菌,理解益生菌饮料就不难啦--如果添加了以上有效菌种的饮料就可以算得上是货真价实的益生菌饮料啦,如果一个都没有........那就是假货没商量。

乳酸菌饮料真的能满足人们对健康的种种期许吗?

首先,乳酸饮料不一定有菌

有没有菌、有什么菌、菌的活性,都是决定你手中的乳酸菌饮料能否对身体带来好处的关键条件。什么?喝瓶饮料还要学那么多东西?我看看包装不就行了吗?

为迎合消费者需求,各品牌纷纷打起了菌类战,不仅包装上写有一堆令人眼花缭乱的菌类名称,有的更是直接打上了保健宣传标语,如调节肠道菌群、增强免疫力等,如此大笔一挥,这些饮品价格往往达到普通产品的数倍。

其实,乳酸菌和益生菌并不是一回事,却常常被混为一谈。乳酸菌是能发酵碳水化合物产生50%以上乳酸一类细菌的总称;益生菌定义更广泛,是指可改善体内微生物相平衡、有益于宿主的活菌。益生菌有上百种菌种,中国农业部规定允许使用的微生物品种有16种,其中乳酸菌占11种,国内商家常用的只有乳酸菌、双歧杆菌、嗜酸乳杆菌等几种。

其次,有菌不一定菌还活着

活性乳酸菌饮料未经高温灭菌,一般需在2-8℃条件下冷藏。乳酸菌非常"娇贵",如果要保持活性,则要求从工厂到消费者手里,都能维持冷藏条件。否则,哪怕是短时间暴露在常温下,或者放置在半开放的货架上,都会使乳酸菌失去活性,很可能你吃下的只是一堆没用的"死菌"。

乳酸菌饮料商品一旦走下生产线,里面的活性乳酸菌也就开始了逐步衰减的过程,低温冷藏可以有效延缓活菌死亡的速度,保证产品中的活菌数。有时候,我们会看到有些超市为了促销,将需要冷藏的活性乳酸菌饮料常温放置,这样的饮料喝了也白喝。

有活菌,也不一定有用

2010年,欧洲食品安全局研讨小组评估了欧洲市场的"益生菌"产品,他们认为,益生菌企业提交的支持其声明的数据并不具有代表性,缺乏论证其产品对健康有益的证据。欧洲食品安全局认为,"益生菌"在科学上名不副实。欧盟质检机构驳斥了800多个有关这些益生菌增强人体自然抵抗力,减少胃肠疾病的宣传,认为这些宣传要么过于笼统,要么无法得到科学实验证实。

益生菌饮料能否减肥


益生菌饮料的好处确实很多,但并没有哪一种功效直接表明它有益于减肥。而网上盛传的"肠道菌群说"也被证明是有误的。另外益生菌饮料给人能减肥的错觉,往往是打着"0脂肪"的旗号。

一瓶435ml的'某牌乳酸菌'饮料,虽然没有脂肪,但含糖整整70克 (约15块方糖)。

虽然加糖是为了保证口感,但各大厂商抛弃了对人体有益,效果更好的"益生元",而选择了成本低廉的白砂糖。如果经常饮用这种高糖高热量的饮料是不利于减肥的。


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

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

笨鸟转运:https://www.ikjzd.com/w/1550

cima是什么:https://www.ikjzd.com/w/1372


核心提示:最近看网上说益生菌饮料可以减肥,真的这么神奇吗?到底怎么回事呢? 近年来,有人开始倒腾益生菌饮料了,据说减肥效果杠杠的,对此,小编可持保留态度哦,就来专门科普一下益生菌饮料到底能不能减肥~先来看一看什么才是真正的益生菌----益生菌是一类对宿主有益的活性微生物,是定植于人体肠道、生殖系统内,能产生确切健康功效从而改善宿主微生态平衡、发挥有益作用的活性有益微生物的总称。2001年卫生部公布
hunter:https://www.ikjzd.com/w/992
moss:https://www.ikjzd.com/w/1653
淘粉吧首页:https://www.ikjzd.com/w/1725.html
口述:老公设局害我出轨,离婚后我却无法恨他(3/3):http://lady.shaoqun.com/m/a/64576.html
领证后我才发现老公还有个女友:http://www.30bags.com/a/251537.html
2019年做跨境电商,选独立站还是选tospino?:https://www.ikjzd.com/home/101019

Zookeeper系列(6):使用Zookeeper作为配置中心

在上一篇文章中介绍了Zookeeper作为注册中心使用,在这篇文章中将介绍Zookeeper作为配置中心的使用,废话不多说,直接上代码。

相关依赖
<?
配置文件application.yml
spring: application: name: zkdemo profiles: active: dev cloud: zookeeper:  # Zookeeper服务器地址,集群使用逗号分隔  connect-string: localhost:2181 # 从Zookeeper中导入配置数据 config: import: 'optional:zookeeper:'server: port: 8005
在Zookeeper中创建配置节点和数据

创建配置根节点/config:

[zk: localhost:2181(CONNECTED) 3] create /configCreated /config

创建全局配置节点/config/application,/config/application节点下的配置所有服务都能使用。

[zk: localhost:2181(CONNECTED) 4] create /config/applicationCreated /config/application

添加全局配置nickname1:

[zk: localhost:2181(CONNECTED) 5] create /config/application/nickname1 布禾Created /config/application/nickname1

创建zkdemo服务dev环境的配置节点/config/zkdemo,dev,该节点的配置只能被特定服务的特定环境使用,当该节点的配置和全局配置冲突时,优先使用该节点的配置:

[zk: localhost:2181(CONNECTED) 6] create /config/zkdemo,devCreated /config/zkdemo,dev

添加zkdemo服务dev环境配置nickname2:

[zk: localhost:2181(CONNECTED) 7] create /config/zkdemo,dev/nickname2 buheCreated /config/zkdemo,dev/nickname2

最终结构如下:

测试类
@SpringBootTestclass ZkdemoApplicationTests {	@Value("${nickname1}")	private String nickname1;	@Value("${nickname2}")	private String nickname2;	@Test	public void testZkConfig() {		System.out.println("从application全局配置中读取配置:nickname1=" + nickname1);		System.out.println("从zkdemo服务配置中读取配置:nickname2=" + nickname2);	}}

输出结果:

从application全局配置中读取配置:nickname1=布禾从zkdemo服务配置中读取配置:nickname2=buhe
自定义Zookeeper配置

如果不想使用默认的Zookeeper配置,可以在application.yml更改:

spring: cloud: zookeeper:  config:  enabled: true  root: configuration  default-context: apps  profile-separator: '::'

enabled:将该值设置为false将禁用Zookeeper配置,默认true。

root:配置根节点名称,默认为config。

default-context:全局配置节点名称,默认为application。

profile-separator:设置服务名和环境名称之间的分隔符,默认为英文逗号。









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

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

anker:https://www.ikjzd.com/w/1027

kk馆:https://www.ikjzd.com/w/1713


在上一篇文章中介绍了Zookeeper作为注册中心使用,在这篇文章中将介绍Zookeeper作为配置中心的使用,废话不多说,直接上代码。相关依赖<?配置文件application.ymlspring:application:name:zkdemoprofiles:active:devcloud:zookeeper:#Zookeeper服务器地址,集群使用逗号分隔connect-string:
杨帆:https://www.ikjzd.com/w/1648
zozotown:https://www.ikjzd.com/w/2180
review:https://www.ikjzd.com/w/2735
跨境电商小白必看!询盘如何成功转化成订单?:https://www.ikjzd.com/home/21979
美将对华3000亿美元商品加征10%关税 / 亚马逊法国站佣金将上涨:https://www.ikjzd.com/home/103299
口述:受不了 男友像防贼一样防我:http://lady.shaoqun.com/m/a/12428.html

Zookeeper系列(5):使用Zookeeper作为注册中心

服务注册

引入相关依赖:

<?

配置文件application.yml:

spring: cloud: zookeeper:  # Zookeeper服务器地址,集群则以逗号分隔  connect-string: localhost:2181 application: name: zkdemo# 使用随机端口server: port: 0

主程序类ZkdemoApplication:

@SpringBootApplicationpublic class ZkdemoApplication {	public static void main(String[] args) {		SpringApplication.run(ZkdemoApplication.class, args);	}}

由于配置了使用随机端口,这里直接启动三个ZkdemoApplication运行三个zkdemo服务示例。

启动成功后,在zookeeper中查看节点的变化,会发现在根节点下多出来一个services节点,services节点下是以服务名称命名的服务节点,服务节点下是该服务的实例节点。

[zk: localhost:2181(CONNECTED) 96] ls -R / //services/services/zkdemo/services/zkdemo/2030bca0-db25-411d-b1f5-84c790bd1d6f/services/zkdemo/208834cf-e7e4-496e-a5c0-afcbb78e120f/services/zkdemo/2c4177e1-20fd-4c66-9ee0-eaf21253039d

实例节点中存储了服务名称、ip地址、端口号、实例ID等相关信息:

[zk: localhost:2181(CONNECTED) 97] get /services/zkdemo/208834cf-e7e4-496e-a5c0-afcbb78e120f {"name":"zkdemo","id":"208834cf-e7e4-496e-a5c0-afcbb78e120f","address":"localhost","port":64514,"sslPort":null,"payload":{"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id":"zkdemo","name":"zkdemo","metadata":{"instance_status":"UP"}},"registrationTimeUTC":1619424602784,"serviceType":"DYNAMIC","uriSpec":{"parts":[{"value":"scheme","variable":true},{"value":"://","variable":false},{"value":"address","variable":true},{"value":":","variable":false},{"value":"port","variable":true}]}}[zk: localhost:2181(CONNECTED) 98] get /services/zkdemo/2030bca0-db25-411d-b1f5-84c790bd1d6f{"name":"zkdemo","id":"2030bca0-db25-411d-b1f5-84c790bd1d6f","address":"localhost","port":64401,"sslPort":null,"payload":{"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id":"zkdemo","name":"zkdemo","metadata":{"instance_status":"UP"}},"registrationTimeUTC":1619424361059,"serviceType":"DYNAMIC","uriSpec":{"parts":[{"value":"scheme","variable":true},{"value":"://","variable":false},{"value":"address","variable":true},{"value":":","variable":false},{"value":"port","variable":true}]}}[zk: localhost:2181(CONNECTED) 99] get /services/zkdemo/2c4177e1-20fd-4c66-9ee0-eaf21253039d{"name":"zkdemo","id":"2c4177e1-20fd-4c66-9ee0-eaf21253039d","address":"localhost","port":64475,"sslPort":null,"payload":{"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id":"zkdemo","name":"zkdemo","metadata":{"instance_status":"UP"}},"registrationTimeUTC":1619424510719,"serviceType":"DYNAMIC","uriSpec":{"parts":[{"value":"scheme","variable":true},{"value":"://","variable":false},{"value":"address","variable":true},{"value":":","variable":false},{"value":"port","variable":true}]}}

通过ephemeralOwner字段可以看出,services节点和服务节点为持久节点,实例节点为临时节点:

[zk: localhost:2181(CONNECTED) 100] stat /services cZxid = 0x118ctime = Mon Apr 26 16:06:02 CST 2021mZxid = 0x118mtime = Mon Apr 26 16:06:02 CST 2021pZxid = 0x119cversion = 1dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 0numChildren = 1[zk: localhost:2181(CONNECTED) 101] stat /services/zkdemo cZxid = 0x119ctime = Mon Apr 26 16:06:02 CST 2021mZxid = 0x119mtime = Mon Apr 26 16:06:02 CST 2021pZxid = 0x11ecversion = 3dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 0numChildren = 3[zk: localhost:2181(CONNECTED) 102] stat /services/zkdemo/2030bca0-db25-411d-b1f5-84c790bd1d6f cZxid = 0x11actime = Mon Apr 26 16:06:02 CST 2021mZxid = 0x11amtime = Mon Apr 26 16:06:02 CST 2021pZxid = 0x11acversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x100000122cf000ddataLength = 514numChildren = 0

当某个实例出现故障停止时,对应的临时节点也会被删除。当服务节点下所有实例节点被删除时,服务节点也会被删除。当services节点下的所有服务节点被删除时,services节点也会被删除。

服务发现

通过DiscoveryClient从注册中心获取对应服务的实例列表:

@SpringBootTestclass ZkdemoApplicationTests {	@Autowired	private DiscoveryClient discoveryClient;	@Test	public void serviceUrl() {		List<ServiceInstance> list = discoveryClient.getInstances("zkdemo");		list.stream().forEach(obj -> System.out.println(obj.getUri().toString()));	}}

输出结果:








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

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

史泰博:https://www.ikjzd.com/w/2112

出口易:https://www.ikjzd.com/w/1317


服务注册引入相关依赖:<?配置文件application.yml:spring:cloud:zookeeper:#Zookeeper服务器地址,集群则以逗号分隔connect-string:localhost:2181application:name:zkdemo#使用随机端口server:port:0主程序类ZkdemoApplication:@SpringBootApplicationp
递四方:https://www.ikjzd.com/w/1066
菜鸟网络:https://www.ikjzd.com/w/1547
beien:https://www.ikjzd.com/w/1336
口述:受不了 嘿咻时老公总让我扮妓女:http://lady.shaoqun.com/m/a/16891.html
AMZ移除差评的方法(feedback):https://www.ikjzd.com/tl/5203
高度预警!近期与伊朗国家船运公司业务合作或将受影响!:https://www.ikjzd.com/home/99669

女人多努力才能获得性高潮,性爱5个原则很关键

女人到底需要多长时间才能达到性高潮?有些男人性爱总是七八分钟便一泄千里,如何是好?女人对时间的要求不可能有一个统一标准,同一个女人也不会总在同样的时间里达到高潮。高潮体验是个挑剔的"孩子",爱抚是否充分,兴奋值是否达到极限,都决定着它到来的早晚。

你快乐所以我快乐

一个关心女人感觉的男人应该做的,首先是在女人高潮到来之前"坚守阵地"。男人会说:说起来容易,到时候却难以自持。还是那句话,关键在于爱心。

其实每一个男人都有控制时间的能力,问题是他想不想控制,或者正当那份美妙体验已近在眼前的时候,能否理智地做到"退后一步"。这也取决于你是否真的关心妻子的感受。近来文章大谈"忍而不射"的害处,其实,对于一个善于调控的男人来讲,他在做的并不是忍而不射,而是如何延缓那即将"崩溃"时刻的到来。弓没有拉满,何谈忍而不射呢?男人应该学会在过程中体验快乐,而不是总把目标集中在性生活射精那一刻。学会于过程中体验快乐的男人会发现,过程中的快乐会远远胜于射精的快乐。

真正领悟了性交快乐的女人,其种种美妙的表现最终会出乎男人的意料,使他们获得远远高于只顾自己忙碌时的快乐。让女人先达到高潮是一个聪明男人在性交开始时便定下的目标,他明白,性爱高潮体验过后的女人,往往会成倍地回报他。 

提高女性性快感的法则

在国外,医生解决此类问题,首先是让患者逐渐接受自己的行为。下面我介绍几个有助于女性获得性高潮的决窍:


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

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

海豚村:https://www.ikjzd.com/w/1779

转口贸易:https://www.ikjzd.com/w/1427


女人到底需要多长时间才能达到性高潮?有些男人性爱总是七八分钟便一泄千里,如何是好?女人对时间的要求不可能有一个统一标准,同一个女人也不会总在同样的时间里达到高潮。高潮体验是个挑剔的"孩子",爱抚是否充分,兴奋值是否达到极限,都决定着它到来的早晚。你快乐所以我快乐一个关心女人感觉的男人应该做的,首先是在女人高潮到来之前"坚守阵地"。男人会说:说起来容易,到时候却难以自持。还是那句话,关键在于爱心。其
宝贝格子:https://www.ikjzd.com/w/1322
cima是什么:https://www.ikjzd.com/w/1372
亚马逊礼品卡:https://www.ikjzd.com/w/1090.html
女同桌让我伸进她的裤子里 女同学让我尽情的玩弄她:http://lady.shaoqun.com/m/a/247246.html
中央重磅意见:支持深圳建设中国特色社会主义先行示范区!:https://www.ikjzd.com/home/104846
口述:女友的床上放着男式睡衣:http://lady.shaoqun.com/m/a/82751.html

精液中的这种物质可抗衰老、能防癌,补充就吃……

核心提示:2021年4月13日发表于Cell Reports的一项研究表明,一种存在于精液中的物质——亚精胺有预防大脑早衰、延长寿命的作用。近年来的研究表明亚精胺具有抗衰老、抗癌、保护心血管、改善高血压以及预防老年痴呆等作用,亚精胺这么好,我们该怎么补?

Cell Reports:亚精胺可预防大脑早衰、延长寿命


近年来,众多研究表明亚精胺具有多种保健功效,比如抗癌、抗衰老、保护心血管、预防老年痴呆等。2021年4月13日 Cell子刊Cell Reports发表了一篇关于亚精胺的新研究。[1]

Cell Reports发表的文章截图(图源:Cell Reports)

来自德国柏林自由大学的研究人员,通过对模式动物果蝇大脑的深度分析证实:亚精胺在大脑老化过程中能够促进线粒体的蛋白丰度,并帮助保持正常功能;亚精胺的抗衰老作用依赖于eIF5A-羟丁赖氨酸修饰,而大脑中的羟丁赖氨酸修饰水平会随着年龄增长而降低,但在中年之前可以通过饮食补充亚精胺来维持羟丁赖氨酸修饰水平。

通过饮食补充亚精胺,可预防大脑早衰、延长寿命

什么是亚精胺?

亚精胺,又叫三盐酸亚精胺,是一种存在于许多天然物质中的化合物,最早发现于人体的精液之中,并因此而得名。1677年,荷兰科学家列文虎克使用自制显微镜从自己的精液中发现了精子的存在,并得到一种化合物结晶,即亚精胺的前身。

2009年,Nature发表了一篇关于亚精胺的论文[2],该论文讲述了:亚精胺能够诱导自噬相关转录物显著上调,并引发细胞自噬,从而延长多种模式生物的寿命。简单来说,就是亚精胺可用于清除体内在代谢过程中产生的垃圾

Nature发表的文章截图(图源:Nature)

来自精液中的亚精胺,到底有哪些神奇的作用?

2018年1月,《科学》杂志发表了一篇文章,综述了130多篇关于亚精胺的科研进展,详细地汇总了科学家们对于亚精胺神奇功效的研究。[4]

1.延缓衰老,延长寿命

2009年,《细胞生物学》Cell Biology)发表的一项研究证实,亚精胺可诱导自噬相关基因转录,从而增强细胞自噬作用,抑制细胞氧化应激和坏死。 同年《实验老年医学》发文指出,富含多胺的饮食可以降低老年小鼠的死亡率。

2014年,《科学报告》(Scientific Reports)发表的一项研究显示,增加血液中亚精胺和精胺的水平,可防止小鼠身体和大脑老化,延长小鼠寿命。

根据《抗衰老研究》(Rejuvenation Research)发表的一项研究人群横断研究显示,老年人全血中的亚精胺和精胺含量都会降低,但在百岁老人中,亚精胺和精胺则保持着和年轻个体一样的高水平。

2.抗癌

多项研究表明,补充亚精胺可以减少小鼠的肿瘤发生,比如降低老年雌性小鼠中可见皮肤肿瘤的发生率,减慢小鼠结直肠肿瘤的生长;降低严重肝纤维化小鼠肝癌的发生率。还有研究发现,亚精胺能增强抗肿瘤免疫反应。

3.保护心血管

2016年,《动脉硬化》(Atherosclerosis)发表的研究证实,亚精胺可减少动脉粥样硬化斑块中的脂质积聚。同年,《自然医学》(Nature Medicine)发表研究证实,亚精胺能减少心脏肥大、改善舒张功能,从而达到保护心脏的作用,并且能够延长小鼠寿命。

研究人员还在人类中证实:饮食中摄入亚精胺,能够改善血压,降低心血管病发病率和死亡率。

4.调节和保护神经

2011年,《眼科学研究和视觉科学》(Investigative Ophthalmology & Visual Science)发表的研究发现,在自身免疫性脑脊髓炎的小鼠中,口服亚精胺可以减缓疾病进展,并减少视网膜神经节细胞的损伤,改善视功能。

2014年,《细胞周期》(Cell Cycle)发文证明,亚精胺可以挽救多巴胺能神经元损失,减轻帕金森病相关的神经变性。

总之,多项研究表明,补充亚精胺在多种神经退行性运动障碍和痴呆中,有调节和保护神经的作用。

5.改善代谢性疾病

2014年,《欧洲病理学杂志》(The European Journal of Pathology)一项研究显示,补充亚精胺可以改善肥胖小鼠的葡萄糖利用率,并显着降低体重。

2017年,《自然》子刊《细胞死亡与疾病》(Cell Death & Disease)发表的研究显示,亚精胺能够减轻小鼠因高热量饮食导致的体重增加,并改善肥胖相关症状。

亚精胺只能从"精液"中来吗?

随着世界人口的老龄化加快,糖尿病、心血管病、和神经退行性疾病等慢性疾病对人类的影响越来越大,科学家们也在寻找一些强有力的干预措施,尽可能降低这些疾病的负面影响,在这个过程中,精胺和亚精胺将扮演非常重要的作用。

那么我们日常该怎样补充亚精胺?虽然亚精胺最早在精液中被发现,但它其实不仅仅存在于精液中,很多日常食物都富含亚精胺,比如全麦食物、马齿苋、蘑菇、海带、大豆、干酪等,所以想要补充亚精胺,多吃这些食物就行了。

参考资料

[1] eIF5A hypusination, boosted by dietary spermidine, protects from premature brain aging and mitochondrial dysfunction. Cell Reports

[2] Induction of autophagy by spermidine promotes longevity[J]. Nature Cell Biology

[3] 抗衰老、抗癌?科学家从精液中发现的亚精胺,我们该不该补?  时光派


[4] 科学背书!从精液中发现的亚精胺,竟然有着抗衰老、抗癌、保护心血管和神经、改善肥胖和2型糖尿病等逆天神效  奇点网


39健康网()原创内容,未经授权不得转载,违者必究。内容合作请联系:020-85501999-8819或39media@mail.39.net

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

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

跨境通:https://www.ikjzd.com/w/1329

海淘贝:https://www.ikjzd.com/w/1726


核心提示:2021年4月13日发表于Cell Reports的一项研究表明,一种存在于精液中的物质——亚精胺有预防大脑早衰、延长寿命的作用。近年来的研究表明亚精胺具有抗衰老、抗癌、保护心血管、改善高血压以及预防老年痴呆等作用,亚精胺这么好,我们该怎么补? CellReports:亚精胺可预防大脑早衰、延长寿命近年来,众多研究表明亚精胺具有多种保健功效,比如抗癌、抗衰老、保护心血管、预防老年痴呆等。
stadium:https://www.ikjzd.com/w/2729
lastpass:https://www.ikjzd.com/w/846
r标:https://www.ikjzd.com/w/1070
口述:女友逼我每天给她看一部A片:http://lady.shaoqun.com/m/a/16712.html
为显大方女友把我推给闺蜜:http://www.30bags.com/a/251138.html
深度干货:27种亚马逊站外引流:https://www.ikjzd.com/tl/4035

中绝平三分+加时赛3助攻 赵继伟7+3+8为辽宁续命_投篮

原标题:中绝平三分+加时赛3助攻 赵继伟7+3+8为辽宁续命

北京时间4月29日,CBA总决赛第二场,辽宁队加时赛以102-98击败了广东队,将总比分扳为1-1平。赵继伟本场出战41分钟,尽管9投仅2中,7分3篮板8助攻,可是他最后2秒的绝平3分,以及加时赛的三次助攻,延续了辽宁队一个赛季的努力。

总决赛第一场,赵继伟受困于犯规困扰,全场仅出战17分47秒,身背6次犯规下场,3投0中,依靠罚球得到2分1篮板1助攻。总决赛第二场,继续首发的赵继伟明显在进攻端很谨慎,一次突破时,他并没有强行投篮,而是助攻韩德君得分。

不过,赵继伟在防守端还是领到了第一次犯规,之后的三次投篮,赵继伟均是打铁。首节快结束时,赵继伟重新登场,可惜他依旧存在感不高。

赵继伟CBA生涯至今对阵广东共20场,取得10胜10负的战绩,场均出场25.4分钟,得到6分2.2篮板3.4助攻1.7抢断。场均出手6.4次,命中2球,投篮命中率31.3%,三分球场均3.6次出手,命中0.8球,命中率21.1%。

赵继伟对阵广东单场最高分为22分,这是2020年1月3日,当时辽宁队95-105负于广东。当场赵继伟20投9中,砍下22分3篮板4助攻4抢断。

第二节,赵继伟两次送出助攻,而且一次强行突破过程中,他结束了自己的得分荒。可是半场出战19分钟时间里,这位首发控卫5投仅1中,只有2分3助攻。

中场休息后,赵继伟在第三节的表现力依旧不高,毕竟郭艾伦在进攻端很给力。赵继伟仅送出了1次助攻。赵继伟CBA生涯助攻数总计为1091个,位列CBA历史助攻榜第32位,距离第31位林志杰的1101个,还差10个助攻。

进入第四节,赵继伟击地助攻韩德君内线吃饼,这是他本场个人的第五个助攻。而前三节没有抢断的他也成功抢断周鹏,贡献了个人本场第一次抢断。

由于长时间没有投篮机会,赵继伟在第四节的三分投篮时再次投篮打铁,而他本场三分已经是5连铁,而本次总决赛已经是7投0中。

还剩2秒,赵继伟接到郭艾伦的助攻后,在45度角处命中三分,这是他本场和总决赛中的第一个三分球,帮助辽宁队进入加时赛。

进入加时赛,赵继伟终于找回了辽宁队进攻大脑的角色,他送出了3次助攻,帮助辽宁队取得领先,从而确定了胜局。

(胡子)返回搜狐,查看更多

责任编辑:

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

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

夸克:https://www.ikjzd.com/w/1237

pocket:https://www.ikjzd.com/w/1903


原标题:中绝平三分+加时赛3助攻赵继伟7+3+8为辽宁续命北京时间4月29日,CBA总决赛第二场,辽宁队加时赛以102-98击败了广东队,将总比分扳为1-1平。赵继伟本场出战41分钟,尽管9投仅2中,7分3篮板8助攻,可是他最后2秒的绝平3分,以及加时赛的三次助攻,延续了辽宁队一个赛季的努力。总决赛第一场,赵继伟受困于犯规困扰,全场仅出战17分47秒,身背6次犯规下场,3投0中,依靠罚球得到2分1
cicpa考试:https://www.ikjzd.com/w/1375
kkr:https://www.ikjzd.com/w/1340
DMM:https://www.ikjzd.com/w/2026
亚马逊印度站要求8月10日前提供原产国信息,否则listing将被屏蔽:https://www.ikjzd.com/home/125799
Tiktok/抖音全球用户数据统计集合(真实数据建议收藏):https://www.ikjzd.com/home/126494
女人请我去她家做客主动亲吻 口述和漂亮女人的邂逅:http://lady.shaoqun.com/m/a/275055.html

2021-04-29

乔治首节15分后消失 末节连砍4分仍遭保罗抢戏_防守

原标题:乔治首节15分后消失 末节连砍4分仍遭保罗抢戏

北京时间4月29日,2020-21赛季NBA常规赛继续进行,洛杉矶快船队在客场挑战菲尼克斯太阳队。全场比赛,乔治贡献25分10篮板4助攻,在首节手感火热,单节砍下15分,而后,乔治便直接消失,在末节更是遭到严密防守,目送保罗连续砍分,扩大分差,虽然之后乔治连续砍分,但是也未能帮助快船扭转局面。最终,快船队以101-109不敌太阳队。

比赛开始后,乔治尝试在罚球线附近后撤步跳投,但是未能命中。到了本节中段,乔治终于找回手感,在低位接队友分球,横移一步后直接中距离出手命中。而后,乔治运球过半场,随后借助掩护找到太阳防守漏洞,穿过3名防守球员直接杀入禁区,到了禁区后,轻松上篮得手。之后,太阳队连续砍分,扩大分差,乔治随后强顶布克突破,再度杀入禁区后上篮得手。而后,乔治又通过外线强攻造成杀伤,获得三次罚球机会。到了本节末段,乔治连续发威,在外线连续飙中三分,帮助快船队追分。

第二节比赛开始后,乔治在本节中段重回球场,但上场后乔治接连试手,均未能命中。尽管手感不佳,但是乔治在进攻端通过屡次吸引防守为队友创造了不少的机会,屡次助攻队友获得轻松砍分的机会。

第三节比赛开始后,乔治在防守端抢断得手,随后直接自己发动快攻,冲到前场后上篮得手。到了本节中段,乔治终于找回外线手感,在三分线外直接飙射三分命中。

第四节比赛开始后,乔治虽然欲帮助快船队追分,但是无奈一直被太阳队严密盯防。而太阳队这边,保罗连续强攻得手,即使面对乔治的贴身防守也能强硬上篮打进,帮助太阳队渐渐扩大分差。到了本节末段,乔治终于发威,持球直接强硬杀入禁区,面对太阳严密防守反手上篮得手,并造成犯规,但遗憾加罚不中。而后,乔治利用无球跑位得到机会,倚靠住防守球员直接再度杀入禁区上篮得手。最终,快船队以101-109不敌太阳队。(豌豆)返回搜狐,查看更多

责任编辑:

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

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

新蛋:https://www.ikjzd.com/w/79

aca:https://www.ikjzd.com/w/1371


原标题:乔治首节15分后消失末节连砍4分仍遭保罗抢戏北京时间4月29日,2020-21赛季NBA常规赛继续进行,洛杉矶快船队在客场挑战菲尼克斯太阳队。全场比赛,乔治贡献25分10篮板4助攻,在首节手感火热,单节砍下15分,而后,乔治便直接消失,在末节更是遭到严密防守,目送保罗连续砍分,扩大分差,虽然之后乔治连续砍分,但是也未能帮助快船扭转局面。最终,快船队以101-109不敌太阳队。比赛开始后,乔
万国邮政联盟:https://www.ikjzd.com/w/861
noon:https://www.ikjzd.com/w/259
铭宣:https://www.ikjzd.com/w/1551.html
怎么写好amazon review评论?:https://www.ikjzd.com/home/91438
Feedvisor最新数据:亚马逊广告回报率远超谷歌!:https://www.ikjzd.com/home/116335
宝贝真紧要被你夹断了 公公与儿媳妇的不伦乱史:http://www.30bags.com/a/254952.html

孩子出现这些特征,警惕性早熟

核心提示:如果女孩在8岁前、男孩在9岁前出现第二性征的发育,即可认为是性早熟。如果您的孩子存在有下述情况,则需警惕性早熟的发生。

指导专家:广东省妇幼保健院 遗传代谢与内分泌科 刘舒 副主任医师

在内分泌专科门诊,经常会碰到家长带着孩子来咨询:"医生,我的女儿才8岁,乳房就发育啦,是不是性早熟啊?""医生,我的儿子才11岁,就有点变声了,是不是性早熟?"性早熟这个词在这些年频频出现在大众的视线中,很多家长对此更是谈之色变,很害怕自己的孩子与这个名词扯上关系。据报道,性早熟在我国内地的发病率,由十年前的0.5%上升到目前的3%,女童高于男童,并有呈上升的趋势。今天,我们就来一起科普一下困扰着很多家长的儿童性早熟吧。

孩子的这些特征,需警惕性早熟

正常情况下,男孩女孩进入青春期都会按照正常的发育程序进展:女孩通常在10岁多那会才开始慢慢出现第二性征,如乳房发育、身高增长速度突增、阴毛生长,一般乳房发育2年后开始出现月经初潮等;男孩在11-13岁左右开始出现睾丸、阴茎增大增粗,升高增长速度突增,慢慢出现阴毛等的发育,一般睾丸增大开始后2年出现变声和遗精。但如果女孩在8岁前、男孩在9岁前出现第二性征的发育,即可认为是性早熟。如果您的孩子存在有下述情况,则需警惕性早熟的发生。

女孩:女孩在8岁前,就已经出现有乳房的发育了,身高突增(一年长高>8cm),有些甚至还伴随有小阴唇的增大、着色,开始出现阴毛、腋毛,皮肤变得油腻、长青春痘等,或者有些女孩在10岁前就出现了月经初潮。

男孩:男孩在9岁前,出现睾丸、阴茎增粗增大,身高突增(一年长高>8cm),有些伴有声音变粗,出现喉结和胡须,出现阴毛、腋毛等、遗精等,皮肤变得油腻、长青春痘等。

骨龄:监测的骨龄明显大于实际年龄,有骨龄生长加速的情况。

揪出"真凶",性早熟可能与这些因素有关

那么,是什么原因,导致这些孩子提前发育,变成了"小大人"呢?其实,导致性早熟发生的原因是非常复杂的,部分性早熟病因如下:

遗传因素:一般来说,母亲初潮较早的女童,她们也更易发生性早熟;或者是兄弟姐妹中有性早熟病史的孩子,那么,他们出现性早熟的几率也会相对高一些。

饮食原因:食物中雌激素活性物质也是性早熟危险因素之一,如含性激素的食物蜂王浆,儿童如果经常食用的话,有可能会导致性早熟。

盲目进补:有些家长恨不得孩子长得再好一些,听到说某种保健品对孩子的发育好,就盲目跟风,误信保健品广告,过度给孩子进补保健品,殊不知,这种盲目进补,也可增加孩子性早熟的发生。

心理原因:现在网络发达,孩子很容易就能接触到各种信息,但海量的信息良莠不齐,频繁接触一些超越心理年龄的视频图像内容,可引起孩子心理年龄的变化,对其产生性刺激,进而可能导致性早熟的发生。

其他因素:孩子误触含有性激素的化妆品、药物以及误食含有性激素成分的食物,也可导致出现性早熟。

性早熟可导致骨龄提前发育,损害终身高

性早熟的孩子在一开始的时候可因突然"拔高"而让一些家长误以为比同龄孩子发育得要好,但其实,这类孩子骨龄进展快,提前消耗生长潜力,骨骺提前闭合,孩子身高增长的空间反而减少了,最终损害了成年身高,导致成年后个子不高。

除了损害终身高,孩子 发育过快,可能也会让他(她)感到因与同龄人的"不一样"而显得自卑、恐惧等,影响孩子的学习、社交和日常生活,从远期来看,研究发现,性早熟的孩子在成年后子宫、乳腺、睾丸等肿瘤发生率也会较普通人群更高一些,肥胖、高血糖、高血脂等代谢风险的发生也将增高。


因此,为了防止孩子成了"小大人",家长在平时的养育过程中要注意避免盲让孩子进补,避免让孩子过多地接触到含有激素类的食物、药物或化妆品等,减少接触具有两性意识地视频内容等。一旦发现孩子有上述性早熟的倾向,应尽早带孩子到遗传代谢与内分泌专科,请专业的医生帮忙寻找原因,一旦确诊,越早干预,效果越好。

(通讯员:林惠芳)

39健康网()原创内容,未经授权不得转载,违者必究。内容合作请联系:020-85501999-8819或39media@mail.39.net

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

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

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

moss:https://www.ikjzd.com/w/1653


核心提示:如果女孩在8岁前、男孩在9岁前出现第二性征的发育,即可认为是性早熟。如果您的孩子存在有下述情况,则需警惕性早熟的发生。 指导专家:广东省妇幼保健院遗传代谢与内分泌科刘舒副主任医师在内分泌专科门诊,经常会碰到家长带着孩子来咨询:"医生,我的女儿才8岁,乳房就发育啦,是不是性早熟啊?""医生,我的儿子才11岁,就有点变声了,是不是性早熟?"性早熟这个词在这些年频频出现在大众的视线中,很多家长
ensogo:https://www.ikjzd.com/w/1485
垂直电商:https://www.ikjzd.com/w/1450
四海商舟:https://www.ikjzd.com/w/1516
亚马逊运营之你的PPC广告设置对了吗?:https://www.ikjzd.com/tl/4079
做亚马逊广告却被ACOS难住?这里有解决办法!:https://www.ikjzd.com/home/103057
口述:老公爱爱时总拿我胸小开涮:http://lady.shaoqun.com/m/a/16390.html

2021-04-28

女护士自述:我和男病人有过一段不轨情,12年了,说出来求解救

01

四月的长江江面上,江雾浓得跟一团化不开的墨一样。

一艘轮渡船呜呜呜地漂在江面上,载着李若文驶向江边的一座小城。

李若文,女,36岁。那天,是她逃离婚姻的第30天,她想找一个地方疗伤。

于是,她想到了这里。

这里,是李若文的老家,记录着她过去的一切,也埋藏着她一段死去的爱情。

阔别12年,李若文多少有些忘记了老家的模样。

她盯着江面上的雾气,风吹动了发梢,一下子把她的思绪带回了十几年前……

02

2003年那年,李若文刚刚18岁。这是一个少女怀春,情窦初开的年华。

李若文心里也有喜欢的人,那人叫廖思源。

廖思源和李若文同年,一家就住在李若文家对门。

在李若文很小的时候,廖思源就带着她穿街走巷,抓猫逗狗。

李若文喜欢廖思源,不过廖思源是大男孩心思,一直都没注意到。

而且那年头,学校和家长两头抓早恋都特别严格,她只好将这份爱意藏在心底。

18岁生日那天,小城里新开了一家电影院。李若文瞒着父母用零花钱买了两张票,她一张,廖思源一张。

那天的电影到底播了什么,李若文已经记不清了。

她唯一还记得的,是她握住廖思源手的那一刻,她的心急速狂跳起来,像是下一秒钟就要从嗓子里跳出来一样。

电影院里很暗,所有人的眼睛都在盯着花花绿绿的大荧幕,只有李若文盯着廖思源,廖思源盯着李若文。

李若文看着廖思源时明时暗的脸,忍不住侧身吻了一口,差点没让廖思源当场喷出鼻血来。

那一天后,李若文就和廖思源就在一起了。

李若文是廖思源的初恋,加上两人从小到大的青梅竹马之情,让廖思源疯狂地把所有的甜蜜都给了这个女孩。

最让李若文感动的是,有一回她遇上流氓,廖思源为了救她,被流氓用弹簧刀在肚皮上扎了一条大口子。

李若文看着血流不止的廖思源,差点哭晕过去。幸亏后来救护车来得及时,不然廖思源就危险了。

后来,廖思源的肚皮上就留下了一条长长的疤痕。

她抱着廖思源说,你为了我这样,让我怎么报答得起?

廖思源开着玩笑说,这有什么关系,反正我不会娶别人,你不嫌弃我就好。

李若文捶了廖思源胸口一下,红着脸说,谁说我一定会嫁给你……

但廖思源可不放过她,放肆地对她说,你嫁不嫁,嫁不嫁……惹得李若文咯咯大笑。

那是李若文和廖思源最快活的时光了,哪怕李若文以后嫁做人妇,心里想起依旧会很甜。

只是时光易逝,5年时光一下子就过去了。

当年李若文高考落榜,没有考进大学,进了一所卫校读了护理,毕业后成了当地卫生院里的一名护士。

廖思源也是如此。大专读了会计,毕业出来后在当地一所学校当了一名管账的会计。

如果没有意外的话,李若文和廖思源会结婚,然后做一对小城里最平凡的夫妻。

可是,钱伟明出现了。

03

钱伟明是外地来投资办厂的,因为和当地人发生矛盾,被打了。

被送进卫生院时,钱伟明一脸都是血,而照顾护理他的人就是李若文。

那会儿,李若文才23岁,正是水灵的时候。

再加上她性格温柔,在护理上也比其他护士更加细心,一下子就俘获了钱伟明的心。

钱伟明在卫生院住了一个星期就出院了。但此后的日子里,他的身影总是频频出现在这里。

钱伟明很年轻就出来混社会了,多年来走南闯北,赚了不少钱。

相反,李若文活了二十多年,最远的地方也就去过周围几个市。

她对外面的花花世界一点都不了解,但这个外面来的病号,正好见过不少世面。

她被钱伟明深深吸引住了。

那会儿,李若文手里用的还是小灵通,可钱伟明已经用上了诺基亚的最新款。

她只是稍稍流露出羡慕的意思,第二天钱伟明就差人送来了一台新手机,跟他手里那台一模一样。

李若文推托说自己不能收,钱伟明却说这只是报答她照顾他的礼物而已。

后来,钱伟明又问李若文的愿望是什么?

李若文想都没想,说,去北京,看奥运。

确实,2008那会儿,去北京看奥运不知道是多少人心里的愿望。

钱伟明一拍大腿说,这有什么难的,我立刻找人去安排,等我办完这里的事就带你去。

糖衣炮弹一个接一个地砸向李若文,砸得她有些晕头转向。

再加上钱伟明见多识广,这个人慢慢在李若文心里便有了一些位置。

04

李若文的变化,让廖思源深感不安。

他跟她提出了结婚的想法,毕竟他们谈恋爱不是一年两年的事情了。

如果换做是以前的李若文,她肯定会毫不犹豫地答应了。但那时候的李若文,她居然有了些犹豫。

而且,就是这么一丝丝的犹豫,还让钱伟明察觉了。

钱伟明笑了笑说,这有什么好犹豫的,你还年轻,就不想出去看看,不是非要在一棵树上挂死。

钱伟明的意思,李若文多少听出了一些。

可是,她毕竟与廖思源有深厚长久的感情基础,没办法说割下就割下的。

钱伟明在这里足足待了两个半月,但因为用地问题,他最终不得不放弃这里的投资。

临走前,钱伟明特地把李若文叫到一旁。

他从兜里掏出两张门票说,要不要跟我去北京看奥运?

李若文从来没有去过这么远的地方,心里自然摇摆不定。

钱伟明见李若文拿不准心思,又从兜里掏出两张票,说,可以带上你爸妈一起去。你不是想不好要不要结婚吗,说不准出去一趟就想明白了。

钱伟明的话一下子就击中了李若文的要害。

她这段时间确实被廖思源逼得要紧,说不准借着去北京看奥运,还能躲上一躲。

李若文答应了。

至于廖思源那边,李若文打了个马虎眼,说跟父母出去旅游,结婚的事情等回来再说。

只是让廖思源没想到的是,李若文这一走,两人的这段情就彻底断了。

05

李若文跟钱伟明去了北京后,大城市的流光溢彩彻底抓住了这个年轻女孩的心。

毕竟那会儿,李若文才23岁。

她太年轻,许多东西都没见过,很容易就被浮华迷了双眼。

钱伟明也抓准了时机,给李若文和她父母买了很多礼物,说,要是若文以后跟着我干,北京上海深圳你们随便都能去。

李若文动心了,李若文的父母也动心了。他们劝着她说,就留在外面,不要回去了。

李若文一下子陷入了巨大的撕裂当中,一边是蠢蠢欲动的欲望,一边是青梅竹马的恋情。

不过,很多时候,张牙舞爪的欲望更容易抓住人心。

李若文最终还是做了决定。

她给廖思源去了一个电话,说在外面找到一份好工作,等赚了钱再回来结婚。

李若文的这番话,说得连自己都不相信。

那个时候的她清楚着,赚钱无非是隔断旧情,开始新情的借口罢了。

廖思源放心不下,在电话里连番追问她的住址,但换来的只是一声声推搪。

其实从老家出来后,李若文就再也没有回去过,就连辞职,结婚搬家都是父母回去的。

她怕见到廖思源,怕好不容易压下去的情感又再次迸发出来。

06

在离开老家两年后,李若文最终选择和钱伟明结婚。

她任由廖思源在电话那边撕裂狂吼,直至心如死灰。

结婚一年后,李若文就生了一儿子。再有一年,又生了一个女儿。

钱伟明很是高兴,说一儿一女凑成一个好字,旺他。

也许真的被钱伟明说对了,这对儿女旺他。

从第三年开始,钱伟明的事业就像滚雪球一样越滚越大。

但随着事业的扩张,钱伟明也开始变得很少回家。他在外面养了好几个女人,每隔几天就去不同的女人家过夜。

反而李若文这个家,倒成了一个让他跟儿女们吃饭聊天的地方。

李若文忍受不了这样的生活。

她无法忍受自己放弃了最爱的男人,却换来独守空房的寂寞,她无法忍受自己放弃了最爱的男人,每天还要跟钱伟明的情妇们勾心斗角……

李若文不甘心。

后来,她也变了,变得跟钱伟明一样,在外面养了情人。

她希望这个情人,能给她真正的爱和关怀。

这个不行,就换一个,下一个不行,那就再换一个……

可是,情人们终究是奔着她的钱来的。

李若文的生活就像湖面上的枯叶被卷进旋涡一样,无法自拔。

唯一的办法是她跳出这个欲望的漩涡。

李若文太痛苦了,她看着自己满地鸡毛的生活,终究是不想在这里待下去了。

她主动跟钱伟明提了离婚,她要彻底逃离这样的生活。

钱伟明答应了,一切都进行地非常顺利。儿子留给了他,女儿则留给了李若文。

李若文离婚后,她把家里所有的事情,还有孩子都托付给父母,然后就独自离开了。

这次,她想回老家看看。

阔别12年,她终于有勇气回到那块土地上。只是,让她没想到的是,在这里遇到的人和事让她终生难忘……

因为故事太长了,我分成了上下两集。

李若文回到老家后,会遇见谁,又会发生什么事呢?

所有答案都在下集。



    上一篇: 遭遇出轨,让老公从逼离婚到求原谅,原配只需要五步成功分离小三


    下一篇: 恋爱2个月,应该和男友"开房"吗?



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

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

联动优势电子商务:https://www.ikjzd.com/w/1921

tineye:https://www.ikjzd.com/w/448


01四月的长江江面上,江雾浓得跟一团化不开的墨一样。一艘轮渡船呜呜呜地漂在江面上,载着李若文驶向江边的一座小城。李若文,女,36岁。那天,是她逃离婚姻的第30天,她想找一个地方疗伤。于是,她想到了这里。这里,是李若文的老家,记录着她过去的一切,也埋藏着她一段死去的爱情。阔别12年,李若文多少有些忘记了老家的模样。她盯着江面上的雾气,风吹动了发梢,一下子把她的思绪带回了十几年前……022003年那年
亚马逊全球开店:https://www.ikjzd.com/w/1299
retriever:https://www.ikjzd.com/w/773
联动优势:https://www.ikjzd.com/w/1921
史上最前沿的测评养号系统,亚马逊测评如何降低成本,提高效率,搭建稳定的IP环境?:https://www.ikjzd.com/home/132151
亚马逊平台出2大新规,欧洲站卖家利润全无!:https://www.ikjzd.com/home/8116
口述:为钱男友上了女上司的床(职场):http://lady.shaoqun.com/m/a/274167.html

30岁男人自述:因为奇葩的婚姻交换,我现在的婚姻很幸福


前言:

韦先生说,发生在她身上的事情,真的很奇葩,觉得电视剧都不敢这样演,但是真的发生在她身上了。


倾诉人:韦先生 30岁

我跟前妻是通过朋友聚会认识的,那时候我们都还很年轻,我们俩都是刚刚大学毕业,然后互相觉得还不错,前妻是一个很内向的女人,平时不太喜欢说话,但是她真的很漂亮,皮肤很白,而且有一头乌黑的头发,长得很像小说里面的美女,她应该是男人理想的初恋女友,见她第一面我就爱上她了,是无法自拔的爱,然后我疯狂地追求她,最后她终于同意跟我在一起了,跟她在一起之后,她的所有开支都是我出,因为我的家境比较好,父母是做生意的,虽然我工作了,但是她们每个月还会给我钱,所以我基本上不会操心钱的问题,跟她在一起之后,我经常帮她买衣服和化妆品,有时候还会带她出去旅旅游,跟她在一起的那段时间过得很幸福,后面她怀孕了,然后我就把她带回去给我父母看,我父母见到她的时候不太满意,我父母说,虽然她看起来很斯文,是一个很温柔的女孩,但是她显得心机很重,我父母更加希望我找一个简单一点的女孩,但是后面我父母得知她怀孕了,然后就不再阻拦了,同意我跟她在一起了,毕竟她肚子里面是我们家的孩子。

她怀孕的时候我特别照顾她,因为我爱她,所以特别珍惜她,努力地对她好,虽然我父母有时候会刁难她,但是每次我都是帮她,为了她,我还跟我父母吵了几次,我觉得我父母不应该那样针对她,她是一个女孩子,嫁到我们家不容易,觉得我父母应该多体谅她。

我曾经以为我跟她会一直这样幸福地生活下去,但是后面发生的事情让我接受不了,她竟然出轨了,对象还是我的一个朋友,她经常来我家吃饭,然后他跟我的妻子熟悉了,后面她们竟然背着我做了那样的事情,我知道后很生气,然后跟妻子离婚了,虽然妻子一直求我,希望我不要跟她离婚,但是这样的事情,男人是接受不了的,侮辱性太大了,哪怕这辈子我都是一个人过,我都不会跟她在一起了,不然别人会在背后笑话我,甚至笑话我的父母。


离婚后那段时间我很消沉,经常去酒吧喝酒,有一次去酒吧喝酒的时候,竟然遇见了妻子出轨的那个男人的妻子,她说她很难受,老公出轨的事情对她的就很大,因为自己在那段感情里面付出了很多,最后还是这样的结果,我也很同情她,两个人有类似的遭遇,所以觉得心心相惜,于是我们在一起喝了很多酒,后面在酒精的作用下,我觉得她很漂亮,然后对她动心了,那天晚上我们就去开房了,然后发生了关系。

她醒来的时候哭了,她说她不想这样,她害怕别人觉得她是一个坏女人,后面我跟她说,我会娶她的,一定会对她负责,其实当时我对她的感情也不是很深,只是不想她再受到第二次伤害了,于是我就把她娶回家了,把她娶回家之后,我跟她相处得很好,我越来越爱她了,觉得跟她相处特别快乐,可能这就是缘分吧,因为奇葩的交换婚姻,我现在的婚姻很幸福,跟她在一起比跟前妻在一起幸福多了,她很照顾我,而且对我家人也好,跟她在一起,我不用操心很多事情,因为她都帮我处理好了,我可以享受她的照顾。


结束语:

幸福就好,可能这就是韦先生的缘分,经历了那么多事情,最后找到一个很合适的女人,然后幸福快乐的生活,韦先生跟现在的妻子都受到过背叛,所以应该会更加珍惜彼此,好好对待彼此。



    上一篇: 郭敬明被曝旗下公司接连注销,曾被指控对男作家性骚扰


    下一篇: 老公精神出轨 你们会选择离婚吗



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

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

贝贝官网:https://www.ikjzd.com/w/1321

菜鸟网络:https://www.ikjzd.com/w/1547


前言:韦先生说,发生在她身上的事情,真的很奇葩,觉得电视剧都不敢这样演,但是真的发生在她身上了。倾诉人:韦先生30岁我跟前妻是通过朋友聚会认识的,那时候我们都还很年轻,我们俩都是刚刚大学毕业,然后互相觉得还不错,前妻是一个很内向的女人,平时不太喜欢说话,但是她真的很漂亮,皮肤很白,而且有一头乌黑的头发,长得很像小说里面的美女,她应该是男人理想的初恋女友,见她第一面我就爱上她了,是无法自拔的爱,然后
002315焦点科技:https://www.ikjzd.com/w/1831
拍拍购物:https://www.ikjzd.com/w/2205
dmm.adult:https://www.ikjzd.com/w/2026
特朗普与习近平或于4月会面,中美贸易谈判将取得新进展?:https://www.ikjzd.com/home/19003
亚马逊控评再升级!停止这些操作……:https://www.ikjzd.com/home/11376
从杀虫剂事件,看跨境电商选品如何避雷? :https://www.ikjzd.com/home/97068

树形结构的菜单表设计与查询

开发中经常会遇到树形结构的场景,比如:导航菜单、组织机构等等,但凡是有这种父子层级结构的都是如此,一级类目、二级类目、三级类目。。。

对于这种树形结构的表要如何设计呢?接下来一起探讨一下

首先,想一个问题,用非关系型数据库存储可不可以?

答案是肯定可以的,比如用mongoDB,直接将整棵树存成json。但是,这样不利于按条件查询,当然也取决于具体的需求,抛开需求谈设计都是耍流氓。

在菜单这个场景下,一般还是用关系型数据库存储,可以将最终的查询结构缓存起来。

常用的方法有四种:

  • 每一条记录存parent_id
  • 每一条记录存整个tree path经过的node枚举
  • 每一条记录存 nleft 和 nright
  • 维护一个表,所有的tree path作为记录进行保存

 

第一种:每条记录存储parent_id

这种方式简单明了,但是想要查询某个节点的所有父级和子级的时候比较困难,势必需要用到递归,在mysql里面就得写存储过程,太麻烦了。

当然,如果只有两级的话就比较简单了,自连接就搞定了,例如:

第四种:单独用一种表保存节点之间的关系

CREATE TABLE `city` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(16), PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4;CREATE TABLE `city_tree_path_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `city_id` int(11) NOT NULL, `ancestor_id` int(11) NOT NULL COMMENT '祖先ID', `level` tinyint(4) NOT NULL COMMENT '层级', PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4;

上面这个例子中,city表代表城市,city_tree_path_info代表城市之间的层级关系,ancestor_id表示父级和祖父级ID,level是当前记录相对于ancestor_id而言的层级。这样就把整个层级关系保存到这张表中了,以后想查询某个节点的所有父级和子级就很容易了。

最后,我发现构造这种层级树最简单的还是用java代码

java递归生成菜单树

Menu.java 

 1 package com.example.demo.model; 2  3 import lombok.AllArgsConstructor; 4 import lombok.Data; 5 import lombok.NoArgsConstructor; 6  7 import java.util.List; 8  9 @AllArgsConstructor10 @NoArgsConstructor11 @Data12 public class Menu {13 14  /**15   * 菜单ID16   */17  private Integer id;18 19  /**20   * 父级菜单ID21   */22  private Integer pid;23 24  /**25   * 菜单名称26   */27  private String name;28 29  /**30   * 菜单编码31   */32  private String code;33 34  /**35   * 菜单URL36   */37  private String url;38 39  /**40   * 菜单图标41   */42  private String icon;43 44  /**45   * 排序号46   */47  private int sort;48 49  /**50   * 子级菜单51   */52  private List<Menu> children;53 54  public Menu(Integer id, Integer pid, String name, String code, String url, String icon, int sort) {55   this.id = id;56   this.pid = pid;57   this.name = name;58   this.code = code;59   this.url = url;60   this.icon = icon;61   this.sort = sort;62  }63 64 }

Test.java

 1 package com.example.demo.model; 2  3 import com.faster; 4 import com.faster; 5  6 import java.util.ArrayList; 7 import java.util.Comparator; 8 import java.util.List; 9 import java.util.stream.Collectors;10 11 public class Hello {12  public static void main(String[] args) throws JsonProcessingException {13   List<Menu> allMenuList = new ArrayList<>();14   allMenuList.add(new Menu(1, 0, "湖北", "HuBei", "/a", "a", 3));15   allMenuList.add(new Menu(2, 0, "河南", "HeNan", "/b", "b", 2));16   allMenuList.add(new Menu(3, 1, "宜昌", "YiChang", "/c", "c", 2));17   allMenuList.add(new Menu(4, 2, "信阳", "XinYang", "/d", "d", 1));18   allMenuList.add(new Menu(5, 1, "随州", "SuiZhou", "/e", "e", 1));19   allMenuList.add(new Menu(6, 5, "随县", "SuiXian", "/f", "f", 2));20   allMenuList.add(new Menu(7, 3, "枝江", "ZhiJiang", "/g", "g", 2));21 22   // 一级菜单23   List<Menu> parentList = allMenuList.stream().filter(e->e.getPid()==0).sorted(Comparator.comparing(Menu::getSort)).collect(Collectors.toList());24   // 递归调用,为所有一级菜单设置子菜单25   for (Menu menu : parentList) {26    menu.setChildren(getChild(menu.getId(), allMenuList));27   }28 29   ObjectMapper objectMapper = new ObjectMapper();30   System.out.println(objectMapper.writeValueAsString(parentList));31  }32 33  /**34   * 递归查找子菜单35   * @param id 当前菜单ID36   * @param allList 查找菜单列表37   * @return38   */39  public static List<Menu> getChild(Integer id, List<Menu> allList) {40   // 子菜单41   List<Menu> childList = new ArrayList<>();42   for (Menu menu : allList) {43    if (menu.getPid().equals(id)) {44     childList.add(menu);45    }46   }47 48   // 为子菜单设置子菜单49   for (Menu nav : childList) {50    nav.setChildren(getChild(nav.getId(), allList));51   }52 53   // 排序54   childList = childList.stream().sorted(Comparator.comparing(Menu::getSort)).collect(Collectors.toList());55 56   if (childList.size() == 0) {57 //   return null;58    return new ArrayList<>();59   }60   return childList;61  }62 }

结果:

 1 [ 2  { 3   "id":2, 4   "pid":0, 5   "name":"河南", 6   "code":"HeNan", 7   "url":"/b", 8   "icon":"b", 9   "sort":2,10   "children":[11    {12     "id":4,13     "pid":2,14     "name":"信阳",15     "code":"XinYang",16     "url":"/d",17     "icon":"d",18     "sort":1,19     "children":[]20    }21   ]22  },23  {24   "id":1,25   "pid":0,26   "name":"湖北",27   "code":"HuBei",28   "url":"/a",29   "icon":"a",30   "sort":3,31   "children":[32    {33     "id":5,34     "pid":1,35     "name":"随州",36     "code":"SuiZhou",37     "url":"/e",38     "icon":"e",39     "sort":1,40     "children":[41      {42       "id":6,43       "pid":5,44       "name":"随县",45       "code":"SuiXian",46       "url":"/f",47       "icon":"f",48       "sort":2,49       "children":[]50      }51     ]52    },53    {54     "id":3,55     "pid":1,56     "name":"宜昌",57     "code":"YiChang",58     "url":"/c",59     "icon":"c",60     "sort":2,61     "children":[62      {63       "id":7,64       "pid":3,65       "name":"枝江",66       "code":"ZhiJiang",67       "url":"/g",68       "icon":"g",69       "sort":2,70       "children":[]71      }72     ]73    }74   ]75  }76 ]

参考:

https://www.cnblogs.com/w2206/p/10490208.html

https://www.cnblogs.com/mokingone/p/9109021.html

https://www.cnblogs.com/makai/p/12301707.html

https://www.cnblogs.com/zhifengge/p/6910881.html 

 









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

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

周宁:https://www.ikjzd.com/w/1647

邮乐:https://www.ikjzd.com/w/1776


开发中经常会遇到树形结构的场景,比如:导航菜单、组织机构等等,但凡是有这种父子层级结构的都是如此,一级类目、二级类目、三级类目。。。对于这种树形结构的表要如何设计呢?接下来一起探讨一下首先,想一个问题,用非关系型数据库存储可不可以?答案是肯定可以的,比如用mongoDB,直接将整棵树存成json。但是,这样不利于按条件查询,当然也取决于具体的需求,抛开需求谈设计都是耍流氓。在菜单这个场景下,一般还
r标:https://www.ikjzd.com/w/1070
商标抢注:https://www.ikjzd.com/w/1053
东西网:https://www.ikjzd.com/w/1238
麒麟云:https://www.ikjzd.com/w/2588
亚马逊《品牌加速器计划》:https://www.ikjzd.com/tl/99929
口述:我妈做了一件事打击了婆婆的嚣张气焰:http://lady.shaoqun.com/m/a/95659.html

React Hook用法详解(6个常见hook)

1、useState:让函数式组件拥有状态

用法示例:

// 计数器import { useState } from 'react'const Test = () => { const [count, setCount] = useState(0); return (  <>   <h1>点击了{count}次</h1>   <button onClick={() => setCount(count + 1)}>+1</button>  </> );}export default Test

PS:class组件中this.setState更新是state是合并, useState中setState是替换。例如:

// 错误示例import { useState } from 'react'const Test = () => { const [counts, setCounts] = useState({  num1: 0,  num2: 0 }); return (  <>   <h1>num1:{counts.num1}</h1>   <h1>num2:{counts.num2}</h1>   <button onClick={() => setCounts({ num1: counts.num1 + 1})}>num1+1</button>   <button onClick={() => setCounts({ num2: counts.num2 + 1})}>num2+1</button>  </> );}export default Test


可以看到useState中setState是替换,不会合并,正确更新:

import { useState } from 'react'const Test = () => { const [counts, setCounts] = useState({  num1: 0,  num2: 0 }); return (  <>   <h1>num1:{counts.num1}</h1>   <h1>num2:{counts.num2}</h1>   <button onClick={() => setCounts({ ...counts, num1: counts.num1 + 1})}>num1+1</button>   <button onClick={() => setCounts({ ...counts, num2: counts.num2 + 1})}>num2+1</button>  </> );}export default Test

2、useEffect:副作用,取代生命周期

用法示例,在class组件中如果需要在组件挂载后和数据更新后做同一件事,我们会这样做:

componentDidMount() { // 做一些事}componentDidUpdate() { // 做一些事}

可以看出来,如果逻辑复杂后,代码看起来不优雅,且容易造成逻辑混乱,而使用useEffect:

useEffect(() => { // 做一些事});

此刻已经看到了useEffect的基本用法,除此之外,他还可以绑定触发更新的依赖状态,默认是状态中任何数据发生变化副作用都会执行,如:

import { useState, useEffect } from 'react'const Test = () => { const [count1, setCount1] = useState(0); const [count2, setCount2] = useState(0); useEffect(() => {  console.log('useEffect触发了') }); return (  <>   <h1>count1:{count1}</h1>   <h1>count2:{count2}</h1>   <button onClick={() => setCount1(count1 + 1)}>count1+1</button>   <button onClick={() => setCount2(count2 + 1)}>count2+1</button>  </> );}export default Test


将上述代码useEffect第二个参数传入需要绑定的状态,可绑定多个:

// 语法:useEffect(回调函数,[依赖值])useEffect(() => { console.log('useEffect触发了')}, [count1]);


可以看到,只有绑定的count1发生变化才会触发,如果传空数组则任何状态发生变化都不会触发,此时useEffect的作用就类似class组件中的componentDidMount,所以发送请求通常也会在此执行。

清理副作用
在上面的操作中都不用清理的副作用,然而,有些副作用是需要去清理的,不清理会造成异常甚至内存泄漏,比如开启定时器,如果不清理,则会多次开启,从上面可以看到useEffect的第一个参数是一个回调函数,可以在回调函数中再返回一个函数,该函数可以在状态更新后第一个回调函数执行之前调用,具体实现:

useEffect(() => { // 设置副作用 return () => {  // 清理副作用 }});

3、useContext:跨组件共享数据

React.createContext();创建一个TestContext对象
TestContext.Provider包裹子组件
数据放在<TestContext.Provider value={value}>的value中
子组件中通过useContext(TestContext)获取值

import React, { useContext, useState } from 'react';const TestContext = React.createContext();const Parent = () => { const [value, setValue] = useState(0); return (  <div>   {(() => console.log("Parent-render"))()}   <button onClick={() => setValue(value + 1)}>value + 1</button>   <TestContext.Provider value={value}>    <Child1 />    <Child2 />   </TestContext.Provider>  </div> );}const Child1 = () => { const value = useContext(TestContext); return (  <div>   {(() => console.log('Child1-render'))()}   <h3>Child1-value: {value}</h3>  </div> );}const Child2 = () => { return (  <div>   {(() => console.log('Child2-render'))()}   <h3>Child2</h3>  </div> );}export default Parent


至此数据实现共享了,但是可以看到在TestContext中的共享数据只要发生变化,子组件都会重新渲染,Child2并没有绑定数据,不希望他做无意义的渲染,可以使用React.memo解决,实现:

const Child2 = React.memo(() => { return (  <div>   {(() => console.log('Child2-render'))()}   <h3>Child2</h3>  </div> );});

4、useCallback:性能优化

语法:

// useCallback(回调函数,[依赖值])const handleClick = useCallback(()=> { // 做一些事}, [value]);

useCallback返回的是一个 memoized(缓存)函数,在依赖不变的情况下,多次定义的时候,返回的值是相同的,他的实现原理是当使用一组参数初次调用函数时,会缓存参数和计算结果,当再次使用相同的参数调用该函数时,会直接返回相应的缓存结果。

优化性能例子:

import React, { useState, useCallback, memo } from 'react';const Parent = () => { const [value1, setValue1] = useState(0); const [value2, setValue2] = useState(0); const handleClick1 = useCallback(()=> {  setValue1(value1 + 1); }, [value1]); const handleClick2 = useCallback(()=> {  setValue2(value2 + 1); }, [value2]); return (  <>   {(() => console.log("Parent-render"))()}   <h3>{value1}</h3>   <h3>{value2}</h3>   <Child1 handleClick1={handleClick1} />   <Child2 handleClick2={handleClick2} />  </> );}const Child1 = memo(props => { return (  <div>   {(() => console.log("Child1-render"))()}   <button onClick={() => props.handleClick1()}>value1 + 1</button>  </div> );});const Child2 = memo(props => { return (  <div>   {(() => console.log("Child2-render"))()}   <button onClick={() => props.handleClick2()}>value2 + 1</button>  </div> );});export default Parent

useCallback返回的是一个memoized回调函数,仅在其中绑定的一个依赖项变化后才更改可防止不必要的渲染,在跨组件共享数据中举例的事件是在父组件中点击触发,而现在是使用状态提升,在父组件中传递方法供子组件调用,每次render时函数也会变化,导致子组件重新渲染,上面例子useCallback将函数进行包裹,依赖值未发生变化时会返回缓存的函数,配合React.memo即可优化无意义的渲染。

5、useMemo:性能优化

语法:

// useMemo(回调函数,[依赖值])useMemo(() => { // 做一些事情},[value]);

先看一个例子:

import React, { useState } from 'react'const Test = ()=> { const [value, setValue] = useState(0); const [count, setCount] = useState(1); const getDoubleCount = () => {  console.log('getDoubleCount进行计算了');  return count * 2; }; return (  <div>   <h2>value: {value}</h2>   <h2>doubleCount: {getDoubleCount()}</h2>   <button onClick={() => setValue(value + 1)}>value+1</button>  </div> )}export default Test

可以看到getDoubleCount依赖的是count,但value发生变化它也重新进行了计算渲染,现在只需要将getDoubleCount使用useMemo进行包裹,如下:

import React, { useState, useMemo } from 'react'const Test = ()=> { const [value, setValue] = useState(0); const [count, setCount] = useState(1); const getDoubleCount = useMemo(() => {  console.log('getDoubleCount进行计算了');  return count * 2; },[count]); return (  <div>   <h2>value: {value}</h2>   <h2>doubleCount: {getDoubleCount}</h2>   <button onClick={() => setValue(value + 1)}>value+1</button>  </div> )}export default Test


现在getDoubleCount只有依赖的count发生变化时才会重新计算渲染。

useMemo和useCallback的共同点:

  • 接收的参数都是一样的,第一个是回调函数,第二个是依赖的数据
  • 它们都是当依赖的数据发生变化时才会重新计算结果,起到了缓存作用

useMemo和useCallback的区别:

  • useMemo计算结果是return回来的值,通常用于缓存计算结果的值
  • useCallback计算结果是一个函数,通常用于缓存函数

6、useRef

用法:例如要实现点击button按钮使input输入框获得焦点:
import React, { useRef } from 'react';const Test = () => { const inputEl = useRef(); return (  <>   <input ref={inputEl} />   <button onClick={() => inputEl.current.focus()}>focus</button>  </> );}export default Test

这样看起来非常像React.createRef(),将上面代码中的useRef()改成React.createRef()也能实现同样的效果,那为什么要设计一个新的hook?难道只是会了加上use,统一hook规范?
事实上,它们确实不一样。

官网的说明如下:

useRef returns a mutable ref object whose .current property is initialized to the passedargument (initialValue). The returned object will persist for the full lifetime of the component.

翻译:

简单来说,useRef就像一个储物箱,你可以随意存放任何东西,再次渲染时它会去储物箱找,createRef每次渲染都会返回一个新的引用,而useRef每次都会返回相同的引用。









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

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

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

gtc:https://www.ikjzd.com/w/974


1、useState:让函数式组件拥有状态用法示例://计数器import{useState}from'react'constTest=()=>{const[count,setCount]=useState(0);return(<><h1>点击了{count}次</h1><buttononClick={()=>setCount(
自贸区跨境通网站:https://www.ikjzd.com/w/1329
hunter:https://www.ikjzd.com/w/992
promotion:https://www.ikjzd.com/w/127
又一跨境电商平台垮了!去年刚融资3000万:https://www.ikjzd.com/home/129157
eBay发布2018年第二季度财报,净营收未达预期!:https://www.ikjzd.com/home/3224
跨境电商亚马逊无货源模式能不能做?:https://www.ikjzd.com/home/99089

WPF技巧:通过代码片段管理器编写自己常用的代码模板提示效率

在写自定义控件的时候,有一部分功能是当内部的值发生变化时,需要通知控件的使用者,而当我在写依赖项属性的时候,我可以通过popdp对应的代码模板来完成对应的代码,但是当我来写属性更改回调的时候,却发现没有对应的RoutedEvent,导致需要手撸那么多的代码,而很多时候一旦项目中赶进度,也许就会因为这个原因,把VM下的逻辑放到了UserContorl里了。(我review别人的代码时,发现了好多这种现象,但是逻辑都写完了,改动又太大,而且可能他们一直处于加班状态,我也不好意思在指出这些问题)。所以这一篇是写使用代码模板辅助我们写UserControl时更好的解耦。下一篇博客是讲usercontrol的。里面很多复杂有规律的代码都不是我手撸的,是通过代码模板添加完之后生成的。

如何使用代码模板

在类中定义属性时输入prop对应的单词,然后按下2次Tab键,就可以生成代码片段。

(1)在类中输入prop=》2次Tab创建属性。

(2)生成如下代码:

public int MyProperty { get; set; }

这个内容的定义是在Visual Studio 的工具=》代码片段管理器=》语言我选择CSharp=》My Code Snippets下添加我自己的代码片段。

点击添加=》导入选择我的snippet文件点击导入。如下图

我上传的是一个自动添加路由事件用于属性通知的代码片段。

使用方式如上图在类中输入propurv按下2次Tab键就可以快速的创建代码,模板具体如下,可以快速的修改内容。

 private void OnDefaulRoutedEventChanged(MyProperty oldValue, MyProperty newValue)
      {
           RoutedPropertyChangedEventArgs<MyProperty> args = new RoutedPropertyChangedEventArgs<MyProperty>(oldValue, newValue);
           args.RoutedEvent = ownerclass.DefaulRoutedEventChangedEvent;
           RaiseEvent(args);
      }

       public static readonly RoutedEvent DefaulRoutedEventChangedEvent = EventManager.RegisterRoutedEvent("DefaulRoutedEventChanged", RoutingStrategy.Bubble,
           typeof(RoutedPropertyChangedEventHandler<MyProperty>), typeof(ownerclass));

       public event RoutedPropertyChangedEventHandler<MyProperty> DefaulRoutedEventChanged
      {
           add { AddHandler(DefaulRoutedEventChangedEvent, value); }
           remove { RemoveHandler(DefaulRoutedEventChangedEvent, value); }
      }

这篇的主要目的是为了更好的编写代码。是我在自定义控件代码中解耦VM和UserContorl混用的。

我创建了一个C#相关的交流群。用于分享学习资料和讨论问题,这个propuev也在群文件里。欢迎有兴趣的小伙伴:QQ群:542633085









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

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

米兰网:https://www.ikjzd.com/w/1304.html

e邮宝:https://www.ikjzd.com/w/594.html?source=tagwish


在写自定义控件的时候,有一部分功能是当内部的值发生变化时,需要通知控件的使用者,而当我在写依赖项属性的时候,我可以通过popdp对应的代码模板来完成对应的代码,但是当我来写属性更改回调的时候,却发现没有对应的RoutedEvent,导致需要手撸那么多的代码,而很多时候一旦项目中赶进度,也许就会因为这个原因,把VM下的逻辑放到了UserContorl里了。(我review别人的代码时,发现了好多这种
topia:https://www.ikjzd.com/w/2741
宝付:https://www.ikjzd.com/w/539
photobucket:https://www.ikjzd.com/w/132
旺季做PB要注意:2项更新,1个已经生效!:https://www.ikjzd.com/home/133300
口述:和男友同居生活很糟糕我害怕结婚:http://www.30bags.com/m/a/254098.html
一场1000+人参加的卖家大会,是什么样子的?:https://www.ikjzd.com/home/96868

所谓 ICMP,不过将军与士卒而已

将军运筹帷幄于千里之外

什么是 ICMP 协议

关于这点我们在 IP 协议那篇文章中提过一嘴,IP 协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其 IP 数据报可能会发生丢失、重复、延迟和乱序等各种情况, 但是 IP 协议对这些糟糕的情况并不拥有有效的检测和弥补措施,当然更不会将这些结果通知收发双方。

为此,鉴于上述原因,我们在构建 IP 网络时,就需要特别注意两点:

  • 确认网络是否能够正常工作
  • 即使诊断出现异常时的原因所在

于是,网际控制报文协议(Internet Control Message Protocol,ICMP)出现了。

形象来说,IP 协议就好像一个将军,而 ICMP 协议就是他手下的情报员。将军运筹帷幄于千里之外,而在前线浴血奋战的士卒们伤亡当然也在所难免。

那无法亲临前线的将军最起码要知道两件事情:第一点,我的士卒们是不是按照我指引的方向在前进着,别一阵猛冲发现冲错了地方;第二点,我的士卒们伤亡多少,被什么所伤,了解了己方伤亡的原因才好做下一步的战略部署,总不能死了个不明白。不必多说,这就是情报员 ICMP 该做的事情了。

当然了,上述只是打个比方,可能不是很严谨,各位知道什么意思就行,不必过于吹毛求疵。

这里我们再用学术点的语言来总结下,ICMP 的主要功能有如下两点:

1)确认 IP 数据报是否成功送达目标地址

2)如果某个 IP 数据报因为某种原因未能正常到达目的地,则由 ICMP 负责通知具体的原因

ICMP 报文初探

具体的出错原因是 ICMP 协议负责通知的,这个通知的学名就是 ICMP 报文,那么 ICMP 报文是由发送方发送方发出的还是由接收方发出的呢?

都不是。

ICMP 报文是由路由器发出来的

举个例子:主机 A 在不知情的情况下向主机 B 发送了数据包,而主机 B 正在呼呼大睡。主机 A 和主机 B 不在同一个局部网内,假设它俩之间会经过两个路由器,看下图:

众所周知,除了 IP 地址我们还需要 MAC 地址才能确保数据包精准的找到传送方向,因此,路由器 2 为了知道主机 B 的 MAC 地址,它会广播一个 ARP 请求报文,希望获取到主机 B 的 MAC 地址,而主机 B 都关机了自然也就无法应答这个请求报文了。

为此,路由器 2 会一遍又一遍的重新发送着 ARP 请求报文,在多次无果后,路由器 2 就会返回一个 ICMP Destination Unreachable 的包给主机 A(关于 ICMP 报文类型下文会讲),通知主机 A,非常遗憾,您发往主机 B 的包未能成功抵达。

那么,ICMP 报文具体是怎么传输给主机 A 的呢

这个很简单,TCP/UDP 报文是怎么传输的,ICMP 报文就怎么传输。

也就是说,真正的数据首先会被加上 ICMP 首部,封装成 ICMP 报文,然后被 IP 协议封装成 IP 数据报进行明文传输,由 IP 协议指定源 IP 地址和目的地址。主机 A 收到数据后会一层一层解封装,从而获得真正的数据得知发生异常的原因,遂大怒一声:蠢货主机 B。

ICMP 报文格式

至此,各位已经知道了,ICMP 报文是被封装在 IP 数据报里面的,我们来看看下图:

额,这里好像没啥好说的,上图画的很 Nice ,是我之前考研的时候看 B 站上的王道视频截下来的,各位看明白上图,了解 ICMP 报头有哪些东西,知道类型代码这两个字段很重要就好了,尤其是类型这个,接下来我们先重点讲它。

ICMP 报文类型

上文提到了 ICMP Destination Unreachable,也就是目标不可达的 ICMP 报文。

ICMP 报文类型大体上可以分为两种,差错报文和询问报文,解释一下:

所谓查询报文就是,用于主机进行诊断的查询消息

这么学术性的文字可能不是很好理解,这样,咱形象来说,查询报文其实和通信异常没啥关系,查询报文就好比将军率领着千军万马来到了一片寂静的峡谷,正是一个容易被埋伏的地方,将军不敢贸然前进,于是派遣几个情报员前去探明敌情,一有动静立马回报。

常见的 ICMP 查询报文类型有以下几种:

  • 回送应答(Echo Reply),对应 ICMP 报文首部类型字段的值:0
  • 回送请求(Echo Request),对应 ICMP 报文首部类型字段的值:8

而差错报文就是,用于通知主机出错的原因。显然,ICMP 差错报告报文是伴随着出错数据产生的。一旦 IP 协议发现某个 IP 数据报出错了,首先就会毅然地丢弃出错的这个 IP 数据报,然后发送 ICMP 差错报文

常见的 ICMP 差错报文类型有以下几种:

  • 目标不可达(Destination Unreachable),对应 ICMP 报文首部类型字段的值:3
  • 原点抑制(Source Quench),对应 ICMP 报文首部类型字段的值:4
  • 重定向或改变路由(Redirect),对应 ICMP 报文首部类型字段的值:5
  • 超时(Time Exceeded),对应 ICMP 报文首部类型字段的值:11

下面详细解释一下这几个常见的 ICMP 报文类型。

ICMP 回送消息(类型 0、8)

用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息。

可以向对端主机发送 ICMP 回送请求的消息(Echo Request,类型 8),也可以接收对端主机发回来的 ICMP 回送应答消息(Echo Reply,类型 0)

我们常用的 ping 命令就是基于 ICMP 回送消息实现的。

ping 这个单词源自声纳定位,而这个命令的作用也确实如此,它发送类型为 0 的 ICMP Echo Request 消息,收到请求的主机则用类型为 8 的 ICMP Echo Reply 消息进行回应。ping 就会计算发送 Requenst 和接收到 Reply 的消息间隔时间,并计算有多少个包被送达,丢失了多少个包等。用户就可以据此判断网络大致的情况。

如下图我们来 ping 一下 Github:

ping 也并不是啥事也没做,它在 ICMP 报文格式中又添加了两个字段:标识符和序号。这俩其实很好理解:

1)标识符用来区分是哪个应用程序发 ICMP 包。

形象来说,将军派出了两个情报员,一个用来是了解战况的,一个是用来搬救兵的,那总得有个标识区分这俩情报员吧。标识符就是干这事的。最容易想到的能作为标识符的东西,想来也不用我多嘴吧,就是进程的 PID。

2)序号用来确认网络包是否有丢失。

形象来说,将军派出了 10 个情报员,给每个情报员都编个号。这样,如果派出去 10 个,回来 10 个,就说明前方战况不错;如果派出去 10 个,一个也没回来或者就回来 1 个,说明情况不妙啊。

ICMP 目标不可达消息(类型 3)

路由器无法将 IP 数据报发送给目标地址时,会给发送端主机返回一个目标不可达(Destination Unreachable Message)的 ICMP 消息。

那目标不可达有多种可能的原因,比如说网络问题、目标主机问题等等,所以这个目标不可达消息还需要指明不可达的具体原因,这个具体原因就记录在 ICMP 报头的代码字段。

那么这里我们仍然以行军打战的例子来看看常见的目标不可达类型的代码有哪些:

1)前方战事吃紧,将军(主机 A)派了一队士兵回京城找皇上(主机 B)搬救兵,中途情报员快马加鞭赶到汇报:将军,我们在途中迷失了方向,找不到京城在哪。这就是网络不可达,其代码为 0

2)假设士兵们成功回到京城,但是皇上出城了,不在京城,朝廷百官也不敢私自同意出兵救援。这就是主机不可达,到了地方却没找到人,其代码为 1

3)假设士兵成功找到了京城,但是由于将士们常年在外征战,守城的年轻护卫们已经不认识这些威名赫赫的将士们了,所以需要进城口令证明身份,但是久经沙场的将士们一时半会想不起来这些东西,遂无法进城。这就是协议不可达,其代码为 2

4)假设士兵们成功进了城,也成功面见了圣上,但是皇上却说密侦司告诉他的情报和你们说的不一样,你们说你们需要的是救兵,而我得到的消息是你们只需要粮草。这就是端口不可达,其代码为 3

5)假设士兵们成功求得了救兵,并且获得了火器十余箱,但是中途山路狭窄,装火器的马车太大过不去,为此需要换小一点的马车,每个马车装一点,但是由于火器技术尚不成熟,考虑安全问题,将军早就严令禁止把火器分装。于是乎,浩浩荡荡的援兵阻塞在了狭窄的山路。这就是需要进行分片但设置了不分片位,其代码为 4

ICMP 重定向消息(类型 5)

说到这个,我们先要明白 IP 协议或者网络层的职责是什么,就是选择合适的网间路由和交换结点, 确保数据的及时传送。

为此,我们总是倾向于基于最短最优的路径进行传输。

那么如果路由器发现发送端主机使用了某个不是最优的路径发送数据,他就会返回一个 ICMP 重定向消息(ICMP Redirect Message)给这个主机,并且,在这个消息中包含了最优的路由信息和源数据。

写上瘾了哈哈,举个例子:将军得知 ICMP 的情报后震怒,派出去搬救兵的领队竟然带着十万救兵在绕弯子,乱臣贼子,将军赶紧下令诛杀这个领队并立即走最近的路赶回来。

ICMP 超时消息(类型 11)

IP 包中有一个字段叫做 TTLTime To Live,生存周期),它的值随着每经过一次路由器就会减 1,直到减到 0 时该 IP 包会被丢弃

此时,IP 路由器将会发送一个 ICMP 超时消息(ICMP Time Exceeded Message)给发送端主机,并通知该包已被丢弃。

形象来说,就是将军派出去的搬救兵的那队人马苦于找不到京城的方向,路途开始带上的只够三天的粮草断尽,全队饮恨而死。

设置 IP 包生存周期的主要目的,是为了在路由控制遇到问题发生循环状况时,避免 IP 包无休止地在网络上被转发。

ICMP 的应用

其中一个应用 ping 命令我们已经说过了,它是基于 ICMP 查询报文的。

还有一个命令,是基于 ICMP 差错报文的,在 Linux 下这条命令是 traceroute,在 Windows 是 tracert

大家可能会觉得 ICMP 差错报文是只有在通信异常的时候才会生成,其实不然,traceroute 命令就是一个例外,它会使用 ICMP 的规则,故意制造一些能够产生异常的场景。

traceroute 命令有两大作用:

1)故意设置特殊的 TTL,来追踪去往目的主机上沿途经过的路由器

具体来说,就是发送端主机会不断的向接收端主机发送 UDP 报文,UDP 报文被封装成 IP 数据报,同时将 TTL 从 1 开始按照顺序递增。

比如说,将 TTL 设置 为 1,那么遇到第一个路由器的时候,这个 IP 数据报就会被丢弃,接着返回 ICMP 差错报文,类型是 ICMP 超时消息

接下来将 TTL 设置为 2,第一个路由器过了,遇到第二个路由器时这个 IP 数据报就会被丢弃,接着返回ICMP 差错报文。

......

这样,traceroute 就拿到了所有路由器 IP。

那到这里其实还有一个问题,怎么知道数据到底有没有到达目的主机呢

traceroute 是基于 UDP 传输的,那自然是需要指定一个端口号的,traceroute 会选择一个不可能的值作为 UDP 的端口号。

这样,当数据到达目的主机时,就会发现端口对不上,于是路由器会产生一份 ICMP 目标不可达消息,其代码是 3,即端口不可达

当发送端主机接收这份端口不可达的 ICMP 报文时,就知道目的主机成功收到了数据。

2)故意设置不分片,从而确定路径的最大传输单元 MTU

某些情况下我们并不知道路径的 MTU 大小,所以我们需要某种手段去获取 MTU,才能控制发送的数据包的大小。

发送端主机要做的工作很简单,就是像往常一样发送 IP 数据报,但是将 IP 首部的分片禁止标志位置为 1。

这样,如果 IP 数据报的长度超过了 MTU,该数据报会被路由器直接丢弃,并且给发送端主机发送 ICMP 目标不可达消息,其代码为 4,即需要进行分片但设置了不分片位

这样,发送端主机每次收到 ICMP 需要进行分片但设置了不分片位消息时就减小 IP 数据报的长度,直到顺利到达目标主机。

🎉 关注公众号 | 飞天小牛肉,即时获取更新

  • 博主东南大学硕士在读,携程 Java 后台开发暑期实习生,利用课余时间运营一个公众号『 飞天小牛肉 』,2020/12/29 日开通,专注分享计算机基础(数据结构 + 算法 + 计算机网络 + 数据库 + 操作系统 + Linux)、Java 技术栈等相关原创技术好文。本公众号的目的就是让大家可以快速掌握重点知识,有的放矢。关注公众号第一时间获取文章更新,成长的路上我们一起进步
  • 并推荐个人维护的开源教程类项目: CS-Wiki(Gitee 推荐项目,现已累计 1.6k+ star), 致力打造完善的后端知识体系,在技术的路上少走弯路,欢迎各位小伙伴前来交流学习 ~ 😊
  • 如果各位小伙伴春招秋招没有拿得出手的项目的话,可以参考我写的一个项目「开源社区系统 Echo」Gitee 官方推荐项目,目前已累计 700+ star,基于 SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + ... 并提供详细的开发文档和配套教程。公众号后台回复 Echo 可以获取配套教程,目前尚在更新中。








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

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

西农:https://www.ikjzd.com/w/1368

sgshop:https://www.ikjzd.com/w/1982


将军运筹帷幄于千里之外什么是ICMP协议关于这点我们在IP协议那篇文章中提过一嘴,IP协议作为一种提供不可靠数据交付的网络层协议,在传输的过程中,其IP数据报可能会发生丢失、重复、延迟和乱序等各种情况,但是IP协议对这些糟糕的情况并不拥有有效的检测和弥补措施,当然更不会将这些结果通知收发双方。为此,鉴于上述原因,我们在构建IP网络时,就需要特别注意两点:确认网络是否能够正常工作即使诊断出现异常时的
cima是什么:https://www.ikjzd.com/w/1372
西集网:https://www.ikjzd.com/w/1353
lithium:https://www.ikjzd.com/w/2505
小心那些坑!wish更新商户服务条款和协议(全文):https://www.ikjzd.com/home/13673
口述:与准嫂子销魂一夜她怀上我的孩子嫂子孩子一夜:http://lady.shaoqun.com/m/a/38596.html
口述:我娶从良美女却被戴13顶绿帽,痛心:http://lady.shaoqun.com/m/a/71418.html