2021年3月30日星期二

瘦的人,一日三餐如何吃?食谱在这!

核心提示:饿肚子减肥不靠谱,吃减肥食谱就能在享受美味的同时完成瘦身目标。那么如何安排饮食才能健康又有效地减肥呢?今天,小编就来教大家科学定制健康减肥食谱,健康变瘦永不反弹!

怎么制定健康营养的减肥食谱?这恐怕难倒了不少减肥人士吧。首先,要控制好减肥餐的热量,还要保证摄入充足的营养。今天,瘦身学堂开课啦,教你三步走完美定制健康又有效的减肥食谱,最后贴心的小编再送上4套减肥餐单,赶紧收藏!

怎么科学安排减肥食谱

第一步:制定减肥目标

在选择或制定减肥餐单之前,首先要确定你是否需要减肥,减肥的目标是多少,而减肥后的体重应该在人体的正常体重之内,这是有公式可循的:用体重(公斤)÷身高(米)的平方,得出来的指数,在18.5-23.9之间为正常。以一个1.6米高的人为例,他(她)的正常体重应该在48-61公斤之间。制定减肥目标。

第二步:摄入总量的控制

无论设定怎么样的餐单,都应该记住800千卡热量是一个人一天摄入能量的下限,如果一天内摄入的食物热量总量不超过这个数字,则会有危险。


800千卡是人体要求的下限,安全减肥一天摄入的热量则应该比这个底线稍高:一般来说,女性一天应摄入1000-1500千卡,男士应为1500-1800千卡。

第三步:计算进食食品比例

选择食物的搭配也要讲究。在每天摄入的热量中,应该包括三部分:蛋白质、碳水化合物以及脂肪,而这三部分的正确比例应为:蛋白质应为总热量的30%-35%,碳水化合物应为总热量的50%-60%,脂肪应为总热量的10%-15%。

推荐4款减肥食谱


减肥食谱一

1、早餐一颗水煮蛋,一杯牛奶,半个苹果或一些马铃薯+火腿+沙拉酱。

2、中餐一碗饭+菜。

3、晚餐于七点吃,与中餐差不多,但只吃七到八分饱即可,而过了九点后就不可再吃任何东西,但水果除外。

4、可於睡前喝杯果汁(可以挤柠檬原汁+水+二颗酸梅)记得不要加糖哦。

5、配合适度运动

推荐理由:这个套餐的量适中,适合一些体制相对较弱的MM,这款减肥餐的搭配营养也较高。

减肥食谱二

1、起床后:两杯水。2、早餐:蔬菜汁200cc。

3、中餐:优酪乳500克。

4、晚餐:蔬菜汁200cc。

5、就寝前:1-2杯水。

推荐理由:优酪乳有助于消化及防止便秘,帮助有益菌抑制坏菌生长,从而改善肠内的菌群比例,促进肠胃的正常蠕动。这个套餐适合想快速瘦下来,想在短期内看到减肥效果的MM,由于餐量偏少,这款套餐不能长期食用,很容易导致营养不良,MM们减肥的同时更要关心自己的身体健康哦。

减肥食谱三

1、早餐:一瓶牛奶(或不加糖咖啡)+一颗白煮蛋(或茶叶蛋)。

2、苹果:从中午12:00开始,每2小时吃一颗苹果直至晚上8:00一共五颗,吃完就不再进食苹果餐吃一天就够了。

推荐理由:苹果减肥餐一直是各位减肥MM的首选,苹果既减肥又美容 。这个减肥套餐的瘦身效果也比较明显

1、早:烤全麦吐司一片,水煮蛋一颗,脱脂牛奶一杯,茶一杯。

2、中:脱脂牛奶一杯,水煮鲔鱼(等量的鸡胸肉亦可)水煮青菜,水果一颗(芭乐或者苹果、蕃茄),茶一杯。

3、晚:晚餐的菜单自己调配,但禁止食用淀粉类和肉类。

推荐理由:这个减肥套餐通常实施5天可瘦身六公斤,但每天至少要喝水2500-3000cc,此套餐最诱人的一点是:减肥的时候还能喝可乐,很多MM爱喝饮料,但饮料中的热量很多,饮料是减肥者的禁忌。但食用这套减肥餐就不用担心了,还能达到理想的减肥效果呢,MM们赶紧试试吧。

减肥食谱四

1、第一天:只喝蜂蜜(可泡茶喝)。

2、第二三天:正常饮食(但不能大吃大喝)。

3、第四天:只喝蜂蜜。


4、第五六天:正常饮食。

推荐理由:蜂蜜还有排毒养颜 的作用,很多MM减肥时有便秘的现象,有这类情况的MM减肥可以选择这个套餐。通常一星期下来可瘦3-4公斤,如果真的受不了节食则可以用每天选一餐只喝蜂蜜。这个套餐也只适合短期减肥人群,不宜长期食用。




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

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

徐家骏:https://www.ikjzd.com/w/1803

1号团:https://www.ikjzd.com/w/2263


核心提示:饿肚子减肥不靠谱,吃减肥食谱就能在享受美味的同时完成瘦身目标。那么如何安排饮食才能健康又有效地减肥呢?今天,小编就来教大家科学定制健康减肥食谱,健康变瘦永不反弹! 怎么制定健康营养的减肥食谱?这恐怕难倒了不少减肥人士吧。首先,要控制好减肥餐的热量,还要保证摄入充足的营养。今天,瘦身学堂开课啦,教你三步走完美定制健康又有效的减肥食谱,最后贴心的小编再送上4套减肥餐单,赶紧收藏!怎么科学安排
百思买:https://www.ikjzd.com/w/394
easy buy:https://www.ikjzd.com/w/2162
美森:https://www.ikjzd.com/w/1693
Wish蓝海产品类目分享2019(四):美国蓝海产品类目:https://www.ikjzd.com/home/103935
亚马逊SEO:2019年更高产品排名的终极指南:https://www.ikjzd.com/tl/107824
不得不看的数据分析,亚马逊后台的业务报告:https://www.ikjzd.com/home/136089

2021年3月29日星期一

为什么重新长出头发如此困难?|脱发


  新浪科技讯 北京时间3月29日消息,据国外媒体报道,身体就像一架机器,时刻提醒着你"人故有一死"这一事实。每一次疼痛、每一道皱纹、以及每一根发丝的脱落,都是身体对你的警告。头发的减少尤其势不可挡。前一天你还拥有一头丰厚的秀发,但仿佛就在转眼之间,你已经半截身子入了土,成天对着镜子忧心自己的发际线了。头发究竟怎么回事?为什么它们一旦决定脱落,就能决绝地一去不回头呢?

  毛囊萎缩退化是主因

  毛囊会经历生长、退化与再生的生命周期。我们头上的大多数头发都处于所谓的"生长期"。而与此同时,还有大约5%至10%的毛囊处于"休止期",即毛囊底部已经退化,毛囊中不会继续制造新的毛干(即毛发露在皮肤外的可见部分)。

  当你的头发脱落时,就代表某个毛囊正在经历这一生长周期。毛囊休止期的时间可以相差很大。如果你年轻健康、头发状态也很好,休止期就会很短暂,毛囊干细胞会迅速结束休止期,重新激活和生成毛囊,随后其中便会长出新的毛干。但如果你上了年纪、或健康状态欠佳、或者得了各类脱发症,毛囊便会长时间处于休止期。毛囊干细胞虽然仍处于活跃状态,但接收不到正确的信号。

  有些类型的脱发症与自体免疫综合征比较类似,免疫系统会攻击毛囊,导致毛囊逐渐退化并消失。这种情况比较特殊,也较为罕见,除非能解决免疫系统的问题,否则基本上束手无策。但在绝大多数的脱发症中,毛囊都没有消失,只不过接收不到正确的信号,或者由于激素失调或压力过大、根本接收不到任何信号(每个毛囊都与神经系统相连,因此压力是一个重要的激发因素)。毛囊处于不活跃状态越久,就越容易萎缩。毛囊会变得越来越小,最终即使能激活它们,从中长出的毛干也会极其细小。有些人存在头发细软的问题,这其实就是由于毛囊处于休止期过久、或者毛囊萎缩导致的。

  头发脱落后之所以难以再生,原因就与毛囊萎缩有关。头发停止再生的时间越长,重新激活毛囊的难度就越大。并且,就算设法激活了所有毛囊,它们也是一副纤弱萎靡的模样。所以我猜想,假如能通过某种干预手段、重新激活处于休眠状态的毛囊干细胞,那么干预的时间越早越好,最好赶在毛囊开始萎缩之前。

  我们根本无法阻止衰老的进程

  许多医生和媒体都喜欢将脱发宣传成一种病症,但脱发其实只是一种症状,就像腹痛一样。因此这个问题就像问"为何腹痛如此难治疗"一样,需要具体情况具体分析。假如是由胰腺癌引起的腹痛,那的确难治。但如果是由肠胃炎导致的,那治起来就容易多了。

  雄性秃(即男性和女性型脱发)会伴随着身体衰老出现。当相关毛囊的"基因开关"关闭后,毛囊生成的毛发就会越来越细、越来越细,直到细得看不见为止。所以秃子的头上其实也长满了头发,只是我们看不见罢了。

  脱发究竟为何如此难治呢?因为我们根本无法阻止衰老的进程。就像人上了年纪之后容易蛀牙一样,无论是看牙医还是刷牙,都无法彻底阻止龋齿的发生,只能减缓它的发展速度。作为一名植发专家,我也无法阻止雄性秃的出现,只能像牙医一样,那里有缺损补哪里。

  治疗男性型脱发的首选是非那雄胺,它其实和牙膏差不多。你会等半口牙齿都脱落之后才开始刷牙吗?当然不会,越早开始越好。米诺地尔也是一种常见的治疗脱发药物,可以使各类毛发长得更加浓密(也包括胡子)。米诺地尔和非那雄胺可以一起使用,这样疗效更全面。不过话虽如此,世上并没有完美的药物,因为衰老进程是势不可挡的。

  目前暂无有效方法可以使毛囊中重新长出毛发

  毛囊生物学极其复杂。这些独特的迷你器官由特殊的结构和干细胞构成,在与激素和其它分子信号的共同作用下调节毛发生长。遗传因素在这一过程中起到了关键作用。因此,毛发的再生能力在很大程度上因人而异。

  对于遗传上不占优势的人来说,正常衰老、激素变化、炎症、或者粗暴的理发都可能导致毛囊收缩、萎缩或产生瘢痕。已经得到充分研究的男性型脱发就是一个很好的例子。在易患男性型脱发的男性体内,雄性激素会诱发特定毛囊逐渐收缩,最终在头顶或前额形成独特的脱发痕迹。

  对于这种情况,虽然有几种疗法可以减缓脱发进程,但一旦毛囊萎缩或受损到一定程度之后,目前暂无有效方法可以使毛囊中重新长出毛发。

  每个人的毛囊数量都是有限的,无法产生新的毛囊。对已有毛囊造成的任何严重损伤或破坏都可能导致无法逆转的脱发。(叶子)

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

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

智赢:https://www.ikjzd.com/w/1511

beien:https://www.ikjzd.com/w/1336


新浪科技讯北京时间3月29日消息,据国外媒体报道,身体就像一架机器,时刻提醒着你"人故有一死"这一事实。每一次疼痛、每一道皱纹、以及每一根发丝的脱落,都是身体对你的警告。头发的减少尤其势不可挡。前一天你还拥有一头丰厚的秀发,但仿佛就在转眼之间,你已经半截身子入了土,成天对着镜子忧心自己的发际线了。头发究竟怎么回事?为什么它们一旦决定脱落,就能决绝地一去不回头呢?  毛囊萎缩退化是主因  毛囊会经历
败欧洲网站:https://www.ikjzd.com/w/1555
笨鸟:https://www.ikjzd.com/w/2713
ebay易趣:https://www.ikjzd.com/w/210
OnerWay万唯:https://www.ikjzd.com/w/685
跨境电商周报 : SHEIN孵化新品牌 Wish上市首日破发:https://www.ikjzd.com/home/137711
口述:撞见老公在楼道里摸女房东屁股:http://lady.shaoqun.com/m/a/16383.html

安全套是不是越薄越好?如何选安全套

核心提示: 市面上我们所看到的安全套按薄厚程度分三种:薄型、超薄型、普通型。但是很多男性戴套是为了防"意外",但是又不想失去性爱的快感,所以都会选择超薄的安全套。但是,专家解释安全套并非越薄越好,最重要的是合适。

目前,市场上具有抗炎、增强性敏感度、杀精、帮助延迟射精等附加功能的安全套相当常见,其实,不同的安全套有不用的作用,在使用前应先了解它的功能。

避孕 避孕套 牛仔裤_10293984_xxl


市面上最常见的就是涂有硅油润滑的安全套,它能省去使用者过性生活时自行涂抹润滑剂的麻烦,也避免了女性阴道干涩的问题。

胶圈较厚的安全套对早泄、勃起不坚的中老年人有治疗作用。因为胶圈有止血作用,可阻止已勃起的阴茎内血液回流,有助于维持阴茎勃起状态。

还有一种套带有各种糖果味道,这是专门为口交设计的,既能保证安全,又增加了情趣。

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

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

c2c模式:https://www.ikjzd.com/w/1576

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


核心提示: 市面上我们所看到的安全套按薄厚程度分三种:薄型、超薄型、普通型。但是很多男性戴套是为了防"意外",但是又不想失去性爱的快感,所以都会选择超薄的安全套。但是,专家解释安全套并非越薄越好,最重要的是合适。 目前,市场上具有抗炎、增强性敏感度、杀精、帮助延迟射精等附加功能的安全套相当常见,其实,不同的安全套有不用的作用,在使用前应先了解它的功能。市面上最常见的就是涂有硅油润滑的安全套,它能省
rfq:https://www.ikjzd.com/w/251
hemingway:https://www.ikjzd.com/w/2344
笨鸟转运:https://www.ikjzd.com/w/1550
《飞哥大英雄》刘敏惊艳出场 变身歌女诱雷佳音:http://yl.shaoqun.com/m/a/72681.html
国际商标注册常见几种注册方式:https://www.ikjzd.com/home/129568
"吉祥三宝"现在做还得及吗? :https://www.ikjzd.com/home/123605

这个器官由“癌细胞”拼接成,我们却靠它生活了9个月|基因|哺乳动物|癌细胞


  近年来,一些研究发现人类胎盘独特的、侵袭子宫壁的方式,与癌症的严重程度有关。一项发表于《自然》的新研究揭示,胎盘中的细胞具有大量的基因突变,十分类似于癌细胞。而胎盘是一个由多个"癌细胞"模块,拼接起来的器官。而在长达9个月的时间内,每一个胎儿时刻都在与它们为伴。

  撰文 | 石云雷

  审校 | 吴非

  每当一个胎儿降生,其母亲体内就会有一个胎盘脱落,并离开子宫。胎盘在孕妇体内存在的时间仅9个多月,但它在繁育后代的过程中至关重要。它的一端连接着母亲的子宫壁,另一端连接着胎儿的血液系统。胎盘能将两者的血液系统分开,避免了母亲体内的免疫细胞进入胎儿体内,导致其死亡。但与此同时,它又能将母亲体内的营养物质、氧气和抗体等传递给胎儿,帮助其正常地生长和发育。

  特殊的起源

  虽然胎盘极其重要,但相比于人体的其他器官,我们对它的关注较少。近年来,关于胎盘如何出现和其连接子宫壁的独特方式,引起了一些科学家的兴趣。据相关研究,胎盘出现的时间可以追溯到2亿~1.5亿年前,当时一些动物的生育方式开始由卵生转变为胎生。Edward B。 Chuong是科罗拉多大学的基因组学家,他在分析人胎盘细胞的基因时,发现其中一些明显不是人类的基因,而是来自逆转录病毒。


  类似于HIV,这些逆转录病毒通过逆转录整合到人体的基因组中。在2018年一篇发表于PLoS子刊的文章中,Chuong发现一个来自于逆转录病毒的基因,能通过表达合胞素(Syncytin-1),促进胎盘中合胞体滋养层(syncytiotrophoblast)的合成。这是胎盘最外层的细胞,它与子宫壁相连,分离母体和胎儿的血液系统,同时保证两者之间的物质交换。

  在胎盘中,逆转录病毒的基因还能控制由胎盘分泌的促肾上腺皮质激素释放激素(corticotropin-releasing hormone)的水平,进而控制胎儿的生长状态和出生时间。当这种激素的水平异常时,可能会导致早产、新生儿体重过轻等现象。

  在Chuong看来,这是一个外来的病毒基因被人体驯化的结果。这些逆转录病毒的基因整合到哺乳动物的基因组中,和其他基因一起协同发挥功能,进而彻底改变哺乳动物生育后代的方式。这种方式带来了更多的益处,如增加后代的存活几率。但对人类来说,这种生殖方式在带来诸多优势的同时,也展现出意料之外的负面影响。

  癌症变严重的原因

  一些科学家注意到,在不同的哺乳动物中,黑色素瘤的扩散情况并不相同。相比于牛和马等,人类抵抗肿瘤细胞扩散的能力更弱。耶鲁大学的科学家在2019年发表于《自然·生态与演化》的研究中揭示了部分原因。哺乳动物胎盘中的合胞体滋养层,能实现母亲和胎儿之间的物质交换。但这些细胞入侵雌性子宫内膜的方式,十分类似于癌细胞进入正常组织中的细胞间质的过程。另一项研究发现,在哺乳动物中,当滋养层细胞的入侵性越强时,其体内的多种癌症(包括皮肤癌、乳腺癌和软组织瘤)或许更容易扩散。

  耶鲁大学的科学家表示,胎盘与子宫壁的连接方式,是各种哺乳动物在后期独立演化出的结果。而人类的癌症更容易转移,可能是后期演化中妥协的结果——细胞的侵袭性更强时,也意味着胎儿能得到更多的营养,从而更好地发育。但这些滋养层细胞为什么具有更强的侵袭性?研究人员并没有给出解释。

  近期,在一篇发表于《自然》的论文中,科学家或找到了一个能解释这一现象的原因:实际上,在胎盘中的滋养层细胞与癌细胞十分相似,有着大量基因突变。这也意味着在母亲怀孕期间,胎儿或时刻与这些危险的细胞相伴。

  由"癌细胞"组成的胎盘

  在研究中,英国维康桑格研究所和剑桥大学的科学家从37个胎盘中分离了86个胎盘细胞组织样本。通过对这些样本的全基因组测序,他们发现其中近一半的细胞存在基因突变,包含大量单碱基置换。其中,SBS18在胎盘细胞中最为常见,这种单碱基置换导致了细胞中近43%的突变。


  除了单碱基置换,这些胎盘细胞样本中还存在其他类型的基因突变,例如小片段碱基的插入、删除,以及基因拷贝数的改变。近一半的胎盘细胞样本中至少存在一处基因拷贝数改变;其中一个样本还出现了染色体异常,拥有3条10号染色体。但在脐带的间充质细胞(成纤维细胞、肌肉细胞等的混合物)和胎儿细胞中,就不存在这样严重的基因突变情况。

  研究人员猜测,由于胎盘是一个暂时、多余的器官,因此在大多数组织中,用来保护染色体和基因组的机制,在胎盘滋养层中并不会发挥作用。例如,上段中有3条10号染色体的现象,在胎儿体内并不没有出现,这是由于受精卵中的三染色体救援(Trisomic rescue)过程清除了一条10号染色体。

  研究团队在对胎盘不同区域的滋养层细胞进行测序时,还发现了一个有趣的现象:在单个滋养层细胞群内部,细胞中基因的相似性很高;但不同滋养层细胞群之间,基因突变的差异却很明显。这提示单个滋养层细胞群或由一个祖细胞演化而来。祖细胞在多次复制时,基因突变会逐渐累积。随后,它和其他胎盘细胞群拼接成胎盘,形成一个由具有不同"癌变"特征的细胞群拼接起来的"马赛克"。

  该文章的通讯作者、剑桥大学的Steve Charnock-Jones教授说:"这项研究首次证实,胎盘的组织结构与其他人体器官不同。事实上,它就像不同的肿瘤细胞拼接起来的。与人体其他健康的组织相比,它的基因突变率和一些突变模式高得有点离谱。"

  那么这些突变的胎盘细胞对胎儿有害吗?此前的研究表明,胎盘中的染色体畸变会导致1%~2%的生殖异常。在胎盘中,细胞的基因突变会导致胎盘功能不全,且还会诱发多种产科并发症,例如早产、胎儿死亡和胎儿宫内生长受限等。

  在这项新研究中,科学家发现,一些新生儿易患的癌症(例如成神经细胞瘤和横纹肌肉瘤)中也存在大量SBS18类型的单碱基置换。当胎儿还在子宫发育时,这些癌症的种子就已经形成,这或与胎盘细胞具有一定的相关性。研究人员表示,这一研究建立起了胎盘基因异常和新生儿状态之间的联系。使用更大样本进行后续研究,或将有助于揭示在怀孕期间,母亲或胎儿出现并发症或其他疾病的原因。

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

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

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

海带宝:https://www.ikjzd.com/w/1548


近年来,一些研究发现人类胎盘独特的、侵袭子宫壁的方式,与癌症的严重程度有关。一项发表于《自然》的新研究揭示,胎盘中的细胞具有大量的基因突变,十分类似于癌细胞。而胎盘是一个由多个"癌细胞"模块,拼接起来的器官。而在长达9个月的时间内,每一个胎儿时刻都在与它们为伴。  撰文|石云雷  审校|吴非  每当一个胎儿降生,其母亲体内就会有一个胎盘脱落,并离开子宫。胎盘在孕妇体内存在的时间仅9个多月,但它在繁
淘粉吧官网:https://www.ikjzd.com/w/1725.html
vava:https://www.ikjzd.com/w/2780
阿里巴巴 批发:https://www.ikjzd.com/w/1084
2020年跨境电商Google购物广告终极指南(上):https://www.ikjzd.com/home/132016
【亚马逊】运营:卖家如何优化广告转化率?:https://www.ikjzd.com/home/140331
亚马逊 FBA全阶段使用手册 Lifecyle System:https://www.ikjzd.com/tl/99936

2021年3月28日星期日

从0实现一个vuex

大家知道,在开发大型vue项目时,使用vuex时不可避免的,vuex能够帮助我们在错综复杂的数据流中快速拿到自己想要的数据,提高开发效率,尽管vuex无法持久化数据,但也可以通过插件来解决该问题,总之vuex是大型项目中百利无一害的插件。

 

 

在上文我们实现了一个vue-router后,我们现在就来实现一个vuex,首先我们从vuex的原理图入手:

 

 

 

 从原理图我们可以看出,$store实例通过dispatch调用actions里的异步方法,通过commit调用mutations里的同步方法,并只能通过mutations改变state(这里插一句:非严格模式下是可以通过commit以外的方式改变state里的状态的,但在严格模式下,Vuex中修改state的唯一渠道就是执行 commit('xx', payload) 方法,其底层通过执行 this._withCommit(fn) 设置_committing标志变量为true,然后才能修改state,修改完毕还需要还原_committing变量。外部修改虽然能够直接修改state,但是并没有修改_committing标志位,所以只要watch一下state,state change时判断是否_committing值为true,即可判断修改的合法性,在严格模式下,任何 mutation 处理函数以外修改 Vuex state 都会抛出错误。)然后getters能够及时获取state中的状态并作出计算(实际上getters就是一个计算属性)

  接下来我们来简单做一个vuex的小demo,看看vuex到底实现了哪些功能:

  我们在store文件的index.js中这样写:

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({  state: {    counter:0  },  mutations: {//同步自加的方法    add(state){      state.counter++    }  },  actions: {//异步自加的方法    add({commit}){      setTimeout(()=>{        commit('add')      },2000)    }  },  getters:{//获取乘二的值    doubleCounter(state){      return state.counter*2},//获取平方值    squareCounter(state){      return state.counter*state.counter    }  },  modules: {  }})

在Home组件中这样写:

<template>  <div >    <button @click="$store.commit('add')">counter:{{$store.state.counter}}</button>    <button @click="$store.dispatch('add')">async counter:{{$store.state.counter}}</button>    <p>double counter:{{$store.getters.doubleCounter}}</p>    <p>squareCounter:{{$store.getters.squareCounter}}</p>   <h2>这是一个Home组件</h2>   <p>我叫rick,欢迎来看我的文章:从0实现一个vuex</p>  </div></template>

那么我们的页面大致长这样:

 

 

 

点击counter可以自加,点击async counter可以延迟两秒自加,double counter读出双倍的数值,squareCounter读出平方数值

 

接下来我们把引入的vuex换成自己自制的vuex,来继续实现现有的这些功能:

 

import Vuex from './kvuex'

 

那么熟悉了原理图,设计了一个简易的vuex功能示例,接下就要来要实现我们自己的vuex啦,我们大致按照如下思路进行:

1. 首先在$store上挂载dispatch,state,getters,commmit等方法是肯定的

2. 其次要实现state的响应式,即state改变,依赖于state的所有属性都要能实现自动渲染

3. 接着实现commit和dispatch的内部方法,即为什么每次commit或dispatch都能自动调用相关的方法

4. 最后实现getters,要注意为什么这个getters能够实现只读的以及它的内部如何实现计算属性

做一个鱼骨图方便大家理解:接下来我们来逐步实现每个细节

 

 

 

1. 挂载$store

1.1 利用install和mixin

大家还记得我在实现vue-router那篇文章中的方法吗?此处我建议大家先看比较简单的vue-router的实现原理再看这篇文章哦~(见我的文章:https://www.cnblogs.com/funkyou/p/14580129.html)

我们故技重施,依然利用开发插件的方式,老规矩,复习一下vue文档:

 

 

 

为了能让所有vue组件都能通过this.$store.xxx访问到state,mutations等,那么我们就要通过全局混入的方式为vue原型上挂载一个$store的属性,全局混入用法见文档:

 

 

 

实现代码如下:

// use调用时会传入Vuefunction install(_Vue){  // 保存Vue构造函数,插件中使用  Vue=_Vue  Vue.mixin({    beforeCreate() {      // 判断当前options选项是否含有store      if(this.$options.store){        // 如果含有就在原型上挂载这个store实例        Vue.prototype.$store=this.$options.store      }    },  })}// 因为index.js是通过Vuex接收的,所以我们要这样暴露出去(实际上Vuex={Store,install,xxx})export default{Store,install}

2. 实现state响应式

2.1:借鸡生蛋

首先我们构造一个Store实例:

 

class Store{   constructor(options){        }}

 

 

其实这个options就是store中的配置项:

 

 

 

我们要想实现store中的数据响应式,能否借助现成的能实现响应式的示例来"借鸡生蛋"呢?(Vue实例此时瑟瑟发抖,并大喊你不要过来呀~)没错,Vue,就是你了,我们new 一个Vue实例,把data存放进去,这样我们的数据就能自动被Vue的defineProperty追踪并设置set和get属性,即可实现响应式:

     // data响应式处理   this._vm= new Vue({  data:{ //把state藏进$$state中       $$state:options.state  }  })

 

 

2.2: 利用get和set实现只读

我们希望我们的state是不能通过mutations以外的任何方式修改的,即实现只读,那么可以利用get和set属性对state进行设置:

  // 存取器,store.state  get state(){    console.log(this._vm);    return this._vm._data.$$state  }  set state(v){    console.error('你无法设置state的值')  }

3.实现commit

3.1判断方法

我们要从mutations中判断出当前要用的是哪个方法,并在commit内部执行这个方法,传入state的参数,但注意要在错综复杂的this环境中先把宝贵的options.mutations保存起来:

 

 //  保存mutations    this._mutations=options.mutations    // 保存actions    this._actions=options.actions    // 保存getters    this._getters=options.getters

 

 

3.2偷天换日

这里我们想用的是commit(type,payload)中的type对应的方法,那么我们能否先把这个mutations[type]方法拷贝给一个函数,再在commit方法内部执行这个函数呢?答案是可行的,这就是一种偷天换日的函数复用思想:

 commit(type,payload){    // 借用mutations[type]方法   const entry= this._mutations[type]   if(!entry){     console.error('unknown mutation type');   }  //  执行这个mutations[type]方法并传入state参数   entry(this.state,payload)  }

 

4. 实现dispatch

4.1注意参数

此处实现dispatch和mutations大致相同,但要注意actions和mutations中传入参数的不同:

mutations中:

 

 

actions中:

 

 

显然这里entry要传入的是store实例,在constructer中用this代指:

 dispatch(type,payload){    const entry=this._actions[type]    if(!entry){      console.error('unknow action type')    }    entry(this,payload)  }

 

4.2用bind留住this

但注意,此时commit内部的this还是不是我想要设置的那个store实例了?看demo:

 

 

此时的this已经完全乱套了,所以我们还需要在commit中留住this,让他执行的永远是store实例,直接写:

 //这样commit和dispatch内部的this就是当前上下文中的this,即store实例    this.commit= this.commit.bind(this)   this.dispatch= this.dispatch.bind(this)

5. 实现getters

5.1计算属性

要想实现一个只读的getters,此处我们依然选择在Vue实例中设置这个computed方法:

  // 定义computed选项和getters    const computed={}    this.getters={}   this._vm= new Vue({    data:{      $$state:options.state    },    computed  })

 

 

5.2只读属性

此处我们先保存store,随后为这个getters设置只读属性,我们可以用Object.defineProperty方法让我们能通过get读到这个方法

5.3移花接木,变无参为有参

接下来,我们想借用getters里的方法并传入state参数,但是注意:我们的getters方法是有参数的:

那么我们可以通过Object.key拿到每个方法的索引,再用一个fn保存当前索引下的方法,再在fn里传入state参数,如下:

   // 保存store    const store=this    // 遍历拿到索引key,并通过store._getters[key]找到这个方法    Object.keys(this._getters).forEach(key=>{      // 获取用户定义的getter      const fn =store._getters[key]      // 转换为computed可以使用无参数形式      computed[key]=function(){        return fn(store.state)      }      // 为getters定义只读属性      Object.defineProperty(store.getters,key,{        get:()=> store._vm[key]      })    })

 

此时我们打印这个fn,它即是:

或者

 

 

即getters中的方法,我们调用了它并完美的把state传了进去,这个方法是不是让人拍案叫绝~

 

接下来是全部源码:

//1.插件:挂载$store// 2.实现Storelet Vue  //保存Vue构造函数,插件中使用class Store{  constructor(options){   console.log(options);    //  保存mutations    this._mutations=options.mutations    // 保存actions    this._actions=options.actions    // 保存getters    this._getters=options.getters    // 定义computed选项和getters    const computed={}    this.getters={}        // 保存store    const store=this    // 遍历拿到索引key,并通过store._getters[key]找到这个方法    Object.keys(this._getters).forEach(key=>{      // 获取用户定义的getter      const fn =store._getters[key]      // 转换为computed可以使用无参数形式      computed[key]=function(){        console.log(fn);        return fn(store.state)      }      // 为getters定义只读属性      Object.defineProperty(store.getters,key,{        get:()=> store._vm[key]      })    })     // data响应式处理   this._vm= new Vue({    data:{      $$state:options.state    },    computed  })    //这样commit和dispatch内部的this就是当前上下文中的this,即store实例    this.commit= this.commit.bind(this)   this.dispatch= this.dispatch.bind(this)  }  // 存取器,store.state  get state(){    console.log(this._vm);    return this._vm._data.$$state  }  set state(v){    console.error('can not set')  }  commit(type,payload){    // 借用mutations[type]方法   const entry= this._mutations[type]   if(!entry){     console.error('unknown mutation type');   }  //  执行这个mutations[type]方法并传入state参数   entry(this.state,payload)  }  dispatch(type,payload){    const entry=this._actions[type]    if(!entry){      console.error('unknow action type')    }    entry(this,payload)  }}// use调用时会传入Vuefunction install(_Vue){  // 保存Vue构造函数,插件中使用  Vue=_Vue  Vue.mixin({    beforeCreate() {      // 判断当前options选项是否含有store      if(this.$options.store){        // 如果含有就在原型上挂载这个store实例        Vue.prototype.$store=this.$options.store      }    },  })}// 因为index.js是通过Vuex接收的,所以我们要这样暴露出去(实际上Vuex={Store,install,xxx})export default{Store,install}

 

最后看下效果:

完美实现~!如果大家想和我一起学习前端交流心得指点江山,欢迎加我的vx:shq173392531

 









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

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

6pm:https://www.ikjzd.com/w/317

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


大家知道,在开发大型vue项目时,使用vuex时不可避免的,vuex能够帮助我们在错综复杂的数据流中快速拿到自己想要的数据,提高开发效率,尽管vuex无法持久化数据,但也可以通过插件来解决该问题,总之vuex是大型项目中百利无一害的插件。在上文我们实现了一个vue-router后,我们现在就来实现一个vuex,首先我们从vuex的原理图入手:从原理图我们可以看出,$store实例通过dispatc
跨境通电子商务网站:https://www.ikjzd.com/w/1329
moss:https://www.ikjzd.com/w/1653
myyearbook:https://www.ikjzd.com/w/726
备货计划及防断货库存表使用表和七段式选品风险评估表:https://www.ikjzd.com/home/103449
关于SpeedPAK奖励活动的通知 :https://www.ikjzd.com/home/121088
可比网_可比网新闻资讯_可比网报道:http://www.shaoqun.com/s/%E5%8F%AF%E6%AF%94%E7%BD%91.aspx

WPF 反射加载Geometry几何图形数据图标

相信大家在阅读WPF相关GitHub开源项目源码时都会看见一串串这种数据
image这种Geometry数据就是几何图形数据

为什么要用Geometry数据做图标?

有一种做法是使用ttf字体文件代替,不过使用ttf字体文件会出现下面几个缺点:
1、团队协作不便于管理
2、需要依赖特定平台
3、无法灵活使用
而使用Geometry的话,我们可以将这些几何图形数据存入资源字典ResourceDictionary
通过反射进行灵活使用,团队开发可共同维护

怎么获取Geometry数据?

我们进入https://www.iconfont.cn/官网,找到心仪的图标,点击F12将鼠标放在该图标区域,找到网页元素
image
Path标签内的d属性即Geometry数据

如何使用Geometry数据

创建资源字典,并加入命名空间
image
将Geometry数据存入< Geometry x:Key="t_chart" o:Freeze="true" >< /Geometry >标签内
t_chart即资源名称key
可能会有小伙伴注意到了o:Freeze这个属性,下面是MSDN上的原文

A class that derives from Freezable gains the following features:
Special states: a read-only (frozen) state and a writable state.
Thread safety: a frozen Freezable object can be shared across threads.
Detailed change notification: Unlike other DependencyObject objects, a Freezable object provides change notifications when sub-property values change.
Easy cloning: the Freezable class has already implemented several methods that produce deep clones.
翻译后:
从Freezable派生的类具有以下功能:
特殊状态:只读(冻结)状态和可写状态。
线程安全:冻结的Freezable对象可以在线程之间共享。
详细的更改通知:与其他DependencyObject对象不同,Freezable对象在子属性值更改时提供更改通知。
易于克隆:Freezable类已经实现了几种产生深层克隆的方法。

随后在App.xaml中加入

<ResourceDictionary Source="Resources/Themes/Geometries.xaml" />

这样我们就可以在全局的XAML代码中通过{StaticResource t_Demo}使用Geometry数据

那么肯定会有小伙伴问了,如果想使用MVVM前后台分离开发怎么办?(在C#代码中动态使用Geometry)
下面是反射加载Geometry的示例
将资源文件存入静态类中

namespace Demo.Resources.Themes{ public static class LocalTheme {  public static ResourceDictionary Dic = new ResourceDictionary { Source = new Uri(@"Resources/Themes/Geometries.xaml", UriKind.Relative) }; }}

使用资源字典(Geometry)LocalTheme.Dic["t_chart"],t_chart即资源字典中的key值

var chart = new HandyControl.Controls.TabItem(){	Header="图表",	Content = xamlModel};chart.SetValue(IconElement.GeometryProperty, (Geometry)LocalTheme.Dic["t_chart"]);

SetValue即设置附加属性
public void SetValue(DependencyProperty dp, object value);
中的value为Geometry









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

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

55海淘网:https://www.ikjzd.com/w/1723

stadium:https://www.ikjzd.com/w/2729


相信大家在阅读WPF相关GitHub开源项目源码时都会看见一串串这种数据这种Geometry数据就是几何图形数据为什么要用Geometry数据做图标?有一种做法是使用ttf字体文件代替,不过使用ttf字体文件会出现下面几个缺点:1、团队协作不便于管理2、需要依赖特定平台3、无法灵活使用而使用Geometry的话,我们可以将这些几何图形数据存入资源字典ResourceDictionary通过反射进行
cima是什么:https://www.ikjzd.com/w/1372
cicpa:https://www.ikjzd.com/w/1375
c88是什么:https://www.ikjzd.com/w/1017.html
eBay自有支付体系加速前进,卖家经营成本将降低?!:https://www.ikjzd.com/home/120678
2019中国(厦门)跨境电商行业盛典成功举办!:https://www.ikjzd.com/home/17351
英国亚马逊卖家VAT退税和抵税的计算和征收的详细解读:https://www.ikjzd.com/tl/107218

2021年3月27日星期六

施罗德坦言追帽生涯罕见 哈雷尔:缺少詹眉≠混日子_洛杉矶湖人

原标题:施罗德坦言追帽生涯罕见 哈雷尔:缺少詹眉≠混日子

北京时间3月27日,2020-21赛季NBA常规赛继续进行,洛杉矶湖人坐镇主场迎战克利夫兰骑士。全场打完,湖人100-86击败对手,止住了4连败。

本场比赛,湖人在半场时44-51落后了7分。44分,也是他们本赛季半场的最低分。但是易边后,情况发生了改变。湖人在第三节掀起高潮,单节就赢了骑士18分。

湖人能成功翻盘,丹尼斯-施罗德无疑立下头功。此役,施罗德拿到17分7助攻4抢断,并在第三节一次极限追防封盖对手,此球,也成为了比赛的转折点。

赛后,湖人主帅弗兰克-沃格尔也首先赞扬了施罗德,"他是一个富有激情的球员,并且会把激情带到场上。他极具竞争力,这就是他打球的方式,他的努力程度会让人备受鼓舞。"

内线大闸蒙特雷斯-哈雷尔也认为,"施罗德在防守端是个斗士,他真的太难缠了。"

另外,哈雷尔也表示,"在没有这些家伙(詹姆斯和浓眉哥)的时候,我们不想只是勉强维持现状。我们会努力去拼,并赢下比赛。今晚回到胜利轨道的感觉就很好。"

但谈到自己的发挥,施罗德却很谦虚,他坦言,像第三节那样的追帽并不常发生,"上一次已经是很久之前了,很久很久以前了。"

另外,施罗德也表达了对詹姆斯的想念,他坦言,"我相信,勒布朗是我合作过最强的控卫"。

老兵马修斯也表示,"虽然,勒布朗和AD缺阵,我们依旧会努力创造最好的投篮机会……每个人都承担起自己的角色,并且为彼此提供支持。"

"当每个人都恢复健康时,我们会是一支更可怕的球队。"马修斯补充道。(波洛)返回搜狐,查看更多

责任编辑:

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

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

易速:https://www.ikjzd.com/w/2389

custommade:https://www.ikjzd.com/w/2514


原标题:施罗德坦言追帽生涯罕见哈雷尔:缺少詹眉≠混日子北京时间3月27日,2020-21赛季NBA常规赛继续进行,洛杉矶湖人坐镇主场迎战克利夫兰骑士。全场打完,湖人100-86击败对手,止住了4连败。本场比赛,湖人在半场时44-51落后了7分。44分,也是他们本赛季半场的最低分。但是易边后,情况发生了改变。湖人在第三节掀起高潮,单节就赢了骑士18分。湖人能成功翻盘,丹尼斯-施罗德无疑立下头功。此役
韩蓬:https://www.ikjzd.com/w/1635
跨境通电子商务平台:https://www.ikjzd.com/w/1329.html
prezi:https://www.ikjzd.com/w/1751
给零基础亚马逊新手的运营提议,早期这几个方面得留意!:https://www.ikjzd.com/home/132260
"国际货代公司"专骗外商,连续作案12起!:https://www.ikjzd.com/home/90652
口述:我长期感冒老公怕传染要和我分居:http://lady.shaoqun.com/m/a/66961.html

2021年3月26日星期五

小岳岳的手工省了五万块,泫雅馋了|泫雅|小岳岳|手工

  文章来源:时尚COSMO  

  在媳妇儿激将法之下,小岳岳爆发出自己的隐藏技能,为爱妻制作了独一无二的爆款。小岳岳亲手制作包包的过程有模有样,成品更是令网友直呼"想买",心灵手巧的才华是藏不住了。



  岳岳子的孤品包包大有来头

  Hermes picotin lock 菜篮子

  Hermes picotin lock锁头包灵感来源于马粮袋,但因其长得酷似买菜用的篮子,被亲切地称为"菜篮子"。如同Hermes其他的包一样,菜篮子的设计也是非常低调,一把小锁是唯一而精致的点缀,小岳岳的翻版省掉了锁扣这一点缀,建议可以装饰上娃娃吊坠。

小岳岳牌小岳岳牌

  售价:无价


  品牌:Hermes

  picotin lock 18袋(左):长:7.1英寸,高:7.5英寸,深:5.3英寸

  售价:2750美元

  picotin lock22袋(右):长:8.7英寸,8高:。3英寸,深:6.7英寸

  售价:3000美元

  自2002年上市以来,菜篮子已经拥有了许多配色,组合各种各样的丝巾和挂件搭配也成为了它的组合卖点。

赵露思赵露思
周洁琼周洁琼

吴宣仪吴宣仪

  在Hermes,这些皮革包都由工匠们手工制作而成。几条简单的曲线和直线,加上细致的工艺,便塑造出精美而低调的皮质包。 


  LV pochette 麻将包

  Louis Vuitton pochette包袋因为小巧轻便闻名,经典的老花图案并随着复古风快速走红。小岳岳同款省掉了老花图案,纯色系倒也干净百搭,重要的是心意满满。

小岳岳牌 售价:无价小岳岳牌 售价:无价

  


  品牌:Louis Vuitton

  售价:790 美元

  Pochette作为一款精巧的小包,真的很适合被拿到麻将桌上装零钱,被叫做麻将包也是非常贴切了。巴掌大小的包包,放得进手机、口红、零钱,也可以被塞到大包里收纳,可以手拎、可以斜挎,公道的价格也让人心动。


Kendall JennerKendall Jenner

  

Bella HadidBella Hadid

  

  麻将包可以通过置换背带转换风格,腋下包、斜跨款;链条或运动款……总有适合今日穿搭的方案。

  眼看着麻将包被Kendall、Bella重新带火,品牌马上推出三合一新款,提供了更多的功能搭配和选择。

佘诗曼佘诗曼

  

张子枫张子枫

  

杨丞琳杨丞琳

  

郑秀晶郑秀晶

  


  品牌:Louis Vuitton

  售价:16000元

  在LV的制作工坊中,一张张独属于LV的皮革被切割再缝合,成为新颖优雅又实用的箱包。


  Prada Hobo皮革手提包

  柔软的皮革搭配圆润的线条,显得温柔细腻,和Prada hobo的敞口款相比,小岳岳贴心的摁扣设计更增加了包袋的私密性。

小岳岳牌 售价:无价小岳岳牌 售价:无价

  


  品牌:Prada

  售价:18500元

  Prada这款包包来自2020年秋冬系列,顺应hobo风潮孕育而生。Prada标志性的三角符号用线迹勾勒轮廓,包裹住logo,别致有格调,在加上皮质有别于尼龙的厚重感,更显精致。




  Prada一直引领着前沿时尚,将极简主义融入设计。在它的箱包工坊,也依然坚持采取匠人手工制作,这些似乎有些冷酷的包也被赋予了温度。


  手工制作我看行

  购买上万奢品包包有些压力?亲手制作一只"孤品"的确意义非凡。

  某宝已经给大家送上了小岳岳同款,只需直接下单皮具DIY工具包(大概在100-300的价位)以及一块好皮子就能做动手了!当然,好的皮料不便宜,但它是满足质感与创意并存的首选。


  如果觉得一卷卷皮革以及满桌的工具作为一次性使用未免过于奢侈,皮具DIY工坊也是不错的选择。

  只需大众点评DIY包袋就能搜索到离你最近的手作包店铺,就能带着巧手和懂得发现美的眼睛开始手作了。你可以自由选款、选皮料,老师教学制版、裁剪和磨边,皮料的穿孔和缝线也将在专业人士的带领下完成。最后,你还可以为你的作品磨边、打蜡和上油,这将是一次令人心静又充满惊喜的体验。




  手作包包的大火已经有过先例,前两年泫雅的妈妈牌CHANEL编织包就曾引起模仿风潮。


  ins上的手作达人都纷纷自己安排上了世上仅此一只的"Prada Hobo"。洗碗布、保鲜袋,甚至是口罩,都可以被做成时髦又好搭的款式,满足审美又兼顾使环保。





  手工达人层出不穷,博主dasuke也用自己的奇思和巧手将万物化成包,似乎没有他玩不了的材料。

  现在又有小岳岳爱妻牌爱马仕收割了一波赞叹和羡慕,此刻行动为时不晚。





  手提纸袋秒变PVC手提包

  小岳岳心灵手巧,不仅惊艳到粉丝和网友,也让COCO对手工跃跃欲试。作为新手入门的小白,COCO先从最简单的开始——购物袋秒变手提袋。

  掏出过年收到的礼品袋,再从橙色app直接搜索"GUCCI纸袋材料包",到货立刻开工!



  按照材料包中的提示:

  1、拆掉原本纸袋上的绳子,将Gucci的手提纸袋装入尺寸合适的pvc膜中。

  2、将硬片置入袋子的底部,这样袋子应该会更坚固、承重能力会更好哦。

  3、安装螺丝、提手、扣环等配件,这一步需要胆大心细,用力固定零件的时候要注意避免受伤。至此,一个pvc包就完成了。总觉得这个手提包有点单调,那就再加点小配饰吧。

  没想到入门级别的手工diy这么简单又有成就感。


  3、袜子也能玩改造

  最近兴起的nike rework玩法也深深吸引着COCO,简直就是辣妹神器啊!




  当然,Adidas也很受用。


  于是COCO再度手瘾发作,火速下单N双Nike袜袜,第一次试手先选择改造朴素而又无限可能的白袜子。



  袜子最方便用来改造的部位,莫过于没有什么立体结构的袜筒。


  将袜筒剪下,得到一对一样的袜筒。


  再沿着袜筒的一侧剪开,将袜筒变成两块长方形的布料。为了美观,在裁剪的时候,COCO也尽量将边缘裁得平直顺滑,裁剪工作就到此完成啦。


  接着,要将两片布料的正面相对,缝合三面后再翻过来。这样一个袋子的雏形就完成了。因为针织的袜子比普通面料要厚实难缝,在缝合过程中,需要注意两片面料的关键位置是否对齐,避免位移。


  最后,在袋子的两侧加上用来连接提手或背带的线,可以缝合多几次加固。


  最后,装上一条自己喜欢的链子或提手就大功告成了。

  COCO选择的是比较Y2K风格的铁链子,其实缝上一条粗带子当腋下包也很不错。



  剩下的袜子COCO还想要挑战一下泫雅的同款背心!做成功了COCO也能晋升手作达人了吧???





  万物皆可"包"化,在手工制作过程中感受包包更深层的魅力,包可以治百病,手工也能治愈人心,将亲手做的包送给喜欢的人更是有满满的爱意。


原文转载:http://fashion.shaoqun.com/a/371741.html

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

洋老板:https://www.ikjzd.com/w/2779

慧聪商务网:https://www.ikjzd.com/w/1836


文章来源:时尚COSMO    在媳妇儿激将法之下,小岳岳爆发出自己的隐藏技能,为爱妻制作了独一无二的爆款。小岳岳亲手制作包包的过程有模有样,成品更是令网友直呼"想买",心灵手巧的才华是藏不住了。  岳岳子的孤品包包大有来头  Hermespicotinlock菜篮子  Hermespicotinlock锁头包灵感来源于马粮袋,但因其长得酷似买菜用的篮子,被亲切地称为"菜篮子"。如同Hermes其
邓白氏集团:https://www.ikjzd.com/w/582
acca:https://www.ikjzd.com/w/1370
reddit:https://www.ikjzd.com/w/180
2019年亚马逊发展方向:选品效果弱化,产品开发成重点:https://www.ikjzd.com/home/16147
跨境新手怎样学会评估一个产品,是否值得去做?:https://www.ikjzd.com/home/100241
关于亚马逊CPC广告这些知识点,你知道吗?:https://www.ikjzd.com/home/107383