2021-01-31

大逆转!15岁小将连扳三局,3:2掀翻女乒世界冠军_比赛

原标题:大逆转!15岁小将连扳三局,3:2掀翻女乒世界冠军

文/独具一格

日本乒乓球联赛刚刚结束的一轮比赛中,卫冕冠军日本生命俱乐部0-4惨遭神奈川俱乐部的横扫,曾经作为东京奥运周期的领军人物平野美宇这场比赛一人独丢2分,现在双打比赛中搭档前田美优输给了神奈川队的长崎美柚/浜本由惟,又在关键的第3盘单打比赛2-0领先仍没有拿下比分,连丢3局后被15岁的木村香纯上演大逆转。

平野美宇在2016年里约奥运会结束后,利用世界一流高手都在休息调整的机会,一举夺得了日本乒乓球队第一个世界杯的单打冠军,也许因为没有国乒的参与,含金量不足,但是2017年亚锦赛连克丁宁、朱雨玲、陈梦三大主力一鸣惊人。世乒赛也打进女单四强,一时间风头明显压过参加了里约奥运会的伊藤美诚,不过平野美宇的高光时刻存在了没有一年,很快就陷入沉沦。

本轮比赛早田希娜依旧没有出场,平野美宇作为第一主力兼顾着单打和双手两盘的比赛。队友新加坡于梦雨、日本的赤江夏星、前田美优悉数登场。

第1盘:平野美宇/前田美优0-2长崎美柚/浜本由惟

过去的联赛前面双打日本生命都是派出固定组合前田美优/赤江夏星,但是最近两轮二人均被拆对,派出了平野美宇/前田美优组合,二人的配合节奏不理想,至今还没有取得一盘比赛的胜利,本场比赛依旧无力抵抗长崎美柚/浜本由惟,最终0-2被对手横扫取得开门黑。

第2盘赤江夏星0-3木原美悠

木原美悠是本赛季联赛日本女队表现最突出的一位,其独特的反手生胶打法让很多人都非常不适,胜率直逼早田希娜,目前排在第2位。生命队的赤江夏星首次由专攻双打的小将出现在单打赛场,面对16岁的木原美悠,赤江夏星显得办法不多,特别是反手对峙相持过程中,总被对手的下沉旋转球带乱了节奏,正手拔不出手来发力,最终0-3被木原美悠斩获第2胜。

第3盘平野美宇2-3木村香纯

背水一战的生命队派出了平野美宇意图实现大翻盘,平野美宇在前2局确实在发球和接发球以及前三板上表现出了很强的攻击欲望,控制木村香纯的正手,先赢2局后胜利在望,但是后三局木村香纯增加接发球的变化,加强搏杀,最终连扳3局获得第3场胜利,也让神奈川提前获得了全场比赛的胜利。

第4盘于梦雨2-3长崎美柚

无关紧要的第4局比赛中新加坡无缘于梦雨依然没有代表生命队拿下一盘比赛的胜利,被左手女将长崎美柚苦战5局获得险胜。返回搜狐,查看更多

责任编辑:

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

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

母婴团购网:https://www.ikjzd.com/w/716

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


原标题:大逆转!15岁小将连扳三局,3:2掀翻女乒世界冠军文/独具一格日本乒乓球联赛刚刚结束的一轮比赛中,卫冕冠军日本生命俱乐部0-4惨遭神奈川俱乐部的横扫,曾经作为东京奥运周期的领军人物平野美宇这场比赛一人独丢2分,现在双打比赛中搭档前田美优输给了神奈川队的长崎美柚/浜本由惟,又在关键的第3盘单打比赛2-0领先仍没有拿下比分,连丢3局后被15岁的木村香纯上演大逆转。平野美宇在2016年里约奥运会
bap:bap
asiabill:asiabill
亚马逊卖家注意了:学会这些亚马逊站内优化还怕没流量吗?:亚马逊卖家注意了:学会这些亚马逊站内优化还怕没流量吗?
eBay调整SpeedPAK中国大陆至西班牙收寄服务:eBay调整SpeedPAK中国大陆至西班牙收寄服务
​eBay对等待发货订单页面进行新布局,卖家大受影响!:​eBay对等待发货订单页面进行新布局,卖家大受影响!

Nginx快速入门

Nginx服务快速入门

目录
  • Nginx服务快速入门
    • 一、Nginx介绍
      • 1. 什么是Nginx?
      • 2. 为什么要使用Nginx?
      • 3. 什么是正向代理?
      • 4. 什么是反向代理?
    • 二、Nginx在Linux下的安装
      • 1. 下载
      • 2. 安装
    • 三、Nginx配置入门
      • 1. 配置文件
      • 2. 反向代理单个服务器
      • 3. 反向代理多台服务器
    • 四、运行测试
      • 1. 启动服务
      • 2. 关闭服务
    • 五、负载均衡
      • 1. 什么是负载均衡?
      • 2. 配置Nginx负载均衡

一、Nginx介绍

1. 什么是Nginx?

  • Nginx (engine x) 是一个高性能的HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

  • 其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

2. 为什么要使用Nginx?

随着当今互联网的迅速发展,单点服务器早已无法承载上万个乃至数十万个用户的持续访问。比如一台Tomcat服务器在理想状态下只能够可以承受住2000个左右的并发量,为了解决这个问题,就需要多台Tomcat服务器来进行负载均衡。

那么,应该如何实现负载均衡?Nginx就是其中的一种解决方案,当用户访问网站时,Nginx拦截到这个访问请求,并将其通过轮询的方式均匀地分配到不同的服务器上。

并且,在Nginx中有一种ip_hash策略,它可以获取到用户的真实IP,计算出hash值来选择服务器,这也是一种优秀的负载均衡方式。 所以,掌握Nginx成为了Web开发学习道路上不可缺少的一部分。

3. 什么是正向代理?

正向代理,就是客户端将自己的请求率先发给代理服务器,通过代理服务器将请求转发给服务器。我们常用的VPN就是一种代理服务器,为了可以连上国外的网站,客户端需要使用一个可以连接外网的服务器作为代理,并且客户端能够连接上该代理服务器。

4. 什么是反向代理?

反向代理与正向代理不同,正向代理是代理了客户端,而反向代理则是代理服务器端。在有多台服务器分布的情况下,为了能让客户端访问到的IP地址都为同一个网站,就需要使用反向代理。

明白了反向代理的工作机制后,接下来就可以进入Nginx的学习!

二、Nginx在Linux下的安装

由于Nginx被大量使用在Web服务器中,所以本教程选择了Centos服务器的7.4版本作为演示!

1. 下载

进入官方下载页面 version稳定版本进行下载,并上传至服务器。

2. 安装

  • 上传tar包至服务器后,解压到当前目录

    tar -zxvf nginx-1.18.0.tar.gz -C ./
  • 进入解压后的目录,执行configure脚本

    cd nginx-1.18.0/./configure
  • 使用make命令进行安装

    make && make install
  • 安装完成后,使用whereis命令查找Nginx的安装位置 (默认安装在/user/local/目录下)

    whereis nginx
  • 进入安装目录下的bin文件夹,启动nginx服务,访问服务器默认的80端口查看是否安装成功!

三、Nginx配置入门

1. 配置文件

在Nginx的安装目录下有一个conf文件夹,打开其中的nginx.conf文件

cd conf/ && vim nginx.conf

2. 反向代理单个服务器

那么,如何使用Nginx进行反向代理?

在location参数中添加proxy_pass字段,并填写需要反向代理的服务器地址与端口号:

注意:每一行的配置都需要以封号结尾!!!

# 配置监听的目录为:/location / {	root html;	index index.html index.htm;	proxy_pass # 反向代理了本机的8080端口	# proxy_pass # 可以同时配置多条proxy_pass,反向代理了本机的8081端口}

3. 反向代理多台服务器

如果有多台服务器怎么办?除了不断地添加proxy_pass参数,更好的解决方案是配置upstream服务器组!

在配置文件的http块中添加upstream属性:

# 配置服务器组,取名为helloupstream hello{	# 一个server对应一个服务器,当然也可以是不同端口的web程序	server 127.0.0.1:8080;	server 127.0.0.1:8081;}# 在location块中修改反向代理为服务器组location / {	root html;	index index.html index.htm;	proxy_pass # 反向代理了hello服务器组中的所有服务器}

四、运行测试

1. 启动服务

配置完成后,进入Nginx安装目录下的sbin文件夹,运行nginx程序即可:

/usr/local/nginx/sbin/nginx

如果之前已经启动,无需关闭nginx服务,只需要让nginx重新加载配置文件即可:

nginx -s reload

刷新浏览器,若反向代理成功,访问的路径会自动映射到配置文件中的服务器地址!

将来,随着用户量的增长,可能需要添加新的服务器;这时只需要修改配置文件,使用 nginx -s reload 命令即可,无需关闭nginx服务器!

2. 关闭服务

关闭nginx服务的方式一般分为两种:

nginx -s stop # 立即停止,无论是否在工作nginx -s quit # 等待进程完成当前工作后安全退出

五、负载均衡

1. 什么是负载均衡?

由于不同服务器的配置不同,为了让性能高的服务器分配到更多的请求,便引入了负载均衡的概念。

前面提到过,Nginx的负载均衡方式可以有很多种,如加权轮询(默认)、IP哈希、url哈希等等,这里就以加权轮询作为介绍。

加权轮询,也就是通过给服务器添加各自的权重值,Nginx通过权重来进行请求的分配,权重越高接收到的请求数量越多,反之越少:

上图配置了三台服务器,在加权轮询的模式下,6次不同的请求中,权重为3的服务器将会分配到3次请求,权重为2的服务器会分配到2个请求,权重为1的服务器则会分配到1个请求。负载均衡大大减少了在高并发的环境下服务器宕机的风险!

2. 配置Nginx负载均衡

同样地,打开nginx.conf文件进行配置:

vim nginx.conf

在upstream块中添加weight参数:

upstream hello{	server 服务器1:8080 weight=3; # 配置服务器1的权重为3	server 服务器2:8080 weight=1; # 配置服务器2的权重为1}

添加完成后执行 nginx -s reload 即可!









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

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

topia:https://www.ikjzd.com/w/2741

photobucket:https://www.ikjzd.com/w/132


Nginx服务快速入门目录Nginx服务快速入门一、Nginx介绍1.什么是Nginx?2.为什么要使用Nginx?3.什么是正向代理?4.什么是反向代理?二、Nginx在Linux下的安装1.下载2.安装三、Nginx配置入门1.配置文件2.反向代理单个服务器3.反向代理多台服务器四、运行测试1.启动服务2.关闭服务五、负载均衡1.什么是负载均衡?2.配置Nginx负载均衡一、Nginx介绍1.
3suisses:3suisses
递四方:递四方
2020倒计时,全球6大电商趋势盘点!:2020倒计时,全球6大电商趋势盘点!
Shopify如何索评?学会这招,转化率提高270%:Shopify如何索评?学会这招,转化率提高270%
做好eBay平台难?早知就不该下凡?:做好eBay平台难?早知就不该下凡?

PriorityQueue详解

原文链 id="priorityqueue详解">PriorityQueue详解

PriorityQueue是优先级队列,底层使用数组存储,是基于二叉堆的一个无界队列,可以使用默认排序或者提供Comparator比较器使得队列中的元素有序

存储结构

小顶堆

根节点的元素最小是小顶堆(小于左右子节点的值)

graph TD0((0)) --- 1((1)) --- 3((3))1((1)) --- 4((4))0((0)) --- 2((2))

大顶堆

根节点的元素最大是大顶堆(大于左右子节点的值)

graph TD0((4)) --- 1((3)) --- 3((1))1((3)) --- 4((0))0((4)) --- 2((2))

源码分析

重要属性

// 默认的初始容量private static final int DEFAULT_INITIAL_CAPACITY = 11;/** * 使用数组存放 是一个平衡二叉堆,对于queue[n]有两个子节点queue[2*n+1] 和 queue[2*(n+1)] */transient Object[] queue; // non-private to simplify nested class access/** * 优先队列中的元素个数 */private int size = 0;/** * 比较器,如果为null,为使用默认的自然排序 */private final Comparator<? super E> comparator;/** * 修改次数 */transient int modCount = 0; // non-private to simplify nested class access/*** 最大容量*/private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

构造器

public PriorityQueue() { this(DEFAULT_INITIAL_CAPACITY, null);}public PriorityQueue(int initialCapacity) { this(initialCapacity, null);}public PriorityQueue(Comparator<? super E> comparator) { this(DEFAULT_INITIAL_CAPACITY, comparator);}public PriorityQueue(int initialCapacity,      Comparator<? super E> comparator) { // Note: This restriction of at least one is not actually needed, // but continues for 1.5 compatibility if (initialCapacity < 1)  throw new IllegalArgumentException(); this.queue = new Object[initialCapacity]; this.comparator = comparator;}@SuppressWarnings("unchecked")public PriorityQueue(Collection<? extends E> c) { if (c instanceof SortedSet<?>) {  SortedSet<? extends E> ss = (SortedSet<? extends E>) c;  this.comparator = (Comparator<? super E>) ss.comparator();  initElementsFromCollection(ss); } else if (c instanceof PriorityQueue<?>) {  PriorityQueue<? extends E> pq = (PriorityQueue<? extends E>) c;  this.comparator = (Comparator<? super E>) pq.comparator();  initFromPriorityQueue(pq); } else {  this.comparator = null;  initFromCollection(c); }}@SuppressWarnings("unchecked")public PriorityQueue(PriorityQueue<? extends E> c) { this.comparator = (Comparator<? super E>) c.comparator(); initFromPriorityQueue(c);}@SuppressWarnings("unchecked")public PriorityQueue(SortedSet<? extends E> c) { this.comparator = (Comparator<? super E>) c.comparator(); initElementsFromCollection(c);}

常用方法

获取顶端元素
// 直接取数组中的第一个元素就是顶端元素public E peek() { return (size == 0) ? null : (E) queue[0];}
插入

以使用默认比较器为例

// add方法直接调用offer方法,往数组末尾添加元素public boolean add(E e) { return offer(e);}public boolean offer(E e) { if (e == null) throw new NullPointerException(); modCount++; int i = size; // 看一下数组容量是否足够 if (i >= queue.length) // 不够则扩容 grow(i + 1); size = i + 1; if (i == 0) // 首次添加,将元素放到顶端即可 queue[0] = e; else siftUp(i, e); return true;}// 传入的minCapacity为插入该数据所需要的最小容量private void grow(int minCapacity) { int oldCapacity = queue.length; // 如果原始容量小于64,则容量加2,否则容量增加50% int newCapacity = oldCapacity + ((oldCapacity < 64) ?         (oldCapacity + 2) :         (oldCapacity >> 1)); // overflow-conscious code if (newCapacity - MAX_ARRAY_SIZE > 0) // 如果扩容之后的容量大于MAX_ARRAY_SIZE,则比较所需要的容量和MAX_ARRAY_SIZE的大小  //(minCapacity > MAX_ARRAY_SIZE) ? Integer.MAX_VALUE : MAX_ARRAY_SIZE; newCapacity = hugeCapacity(minCapacity); queue = Arrays.copyOf(queue, newCapacity);}private void siftUp(int k, E x) { if (comparator != null) // 使用自定义选择器 siftUpUsingComparator(k, x); else // 使用默认的自然排序,默认的排序为小顶堆 siftUpComparable(k, x);}// 存放数据的核心代码// k为所要存放的索引位置,x为元素private void siftUpComparable(int k, E x) { Comparable<? super E> key = (Comparable<? super E>) x; while (k > 0) { int parent = (k - 1) >>> 1; // 左移一位找到父节点的位置 Object e = queue[parent];// 父节点元素 if (key.compareTo((E) e) >= 0) // 比较该元素和父节点元素大小,如果该节点大,则跳出循环  break; queue[k] = e; // 将父节点的值存到k索引位置 k = parent; // 索引位置变成父节点的索引位置,继续对比父节点的父节点 } queue[k] = key;}
删除

还是以默认的比较器为例

public boolean remove(Object o) { 	// 找到该对象对应的索引位置 int i = indexOf(o); if (i == -1)  return false; else {  removeAt(i);  return true; }}// 找到该对象对应的索引位置private int indexOf(Object o) { if (o != null) { for (int i = 0; i < size; i++)  if (o.equals(queue[i]))  return i; } return -1;}private E removeAt(int i) { // assert i >= 0 && i < size; modCount++; int s = --size; // 尾结点 if (s == i) // removed last element queue[i] = null; else { // 尾结点的元素 E moved = (E) queue[s]; // 将尾结点置空 queue[s] = null; siftDown(i, moved); // 没有进while循环时(表示在siftDown()方法中直接走到queue[k] = key;),删除节点没有子节点,开始向上查找 // 向上查找的原因是因为可能所删除的节点与尾结点处于不同的子树下 if (queue[i] == moved) {  siftUp(i, moved);  if (queue[i] != moved)  return moved; } } return null;}// k为所要删除的元素位置 x为尾结点元素private void siftDown(int k, E x) { if (comparator != null) siftDownUsingComparator(k, x); else siftDownComparable(k, x);}// k为所要移除的索引位置 x为尾结点元素// 该方法为从删除节点向下查找private void siftDownComparable(int k, E x) { Comparable<? super E> key = (Comparable<? super E>)x; // 中间元素,判断是否有子节点 int half = size >>> 1;  // loop while a non-leaf while (k < half) { // 找到子节点 int child = (k << 1) + 1; // assume left child is least Object c = queue[child]; // 找到子节点的兄弟节点 int right = child + 1; // 子节点和子节点的兄弟节点中找到小的 if (right < size &&  ((Comparable<? super E>) c).compareTo((E) queue[right]) > 0)  c = queue[child = right]; // 尾结点元素小于子节点元素,结束循环 if (key.compareTo((E) c) <= 0)  break; // 继续向下查找 queue[k] = c; k = child; } //跳出循环的条件是尾结点元素大于子节点元素了,所以将尾结点元素放到k索引位置 queue[k] = key;}// k为要删除的索引位置 x为尾结点元素private void siftUp(int k, E x) { if (comparator != null) siftUpUsingComparator(k, x); else siftUpComparable(k, x);}// k为要删除的索引位置 x为尾结点元素// 从删除索引位置开始向上查找private void siftUpComparable(int k, E x) { Comparable<? super E> key = (Comparable<? super E>) x; while (k > 0) { // 找到父节点 int parent = (k - 1) >>> 1; Object e = queue[parent]; // 尾结点大于父节点,直接跳出循环 if (key.compareTo((E) e) >= 0)  break; // 继续向上查找 queue[k] = e; k = parent; } queue[k] = key;}

由于本身的博客百度没有收录,博客地 />






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

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

五洲会:https://www.ikjzd.com/w/1068

acca:https://www.ikjzd.com/w/1370


原文链id="priorityqueue详解">PriorityQueue详解PriorityQueue是优先级队列,底层使用数组存储,是基于二叉堆的一个无界队列,可以使用默认排序或者提供Comparator比较器使得队列中的元素有序存储结构小顶堆根节点的元素最小是小顶堆(小于左右子节点的值)graphTD0((0))---1((1))---3((3))1((1))---
trademanager:trademanager
宝付:宝付
Merchantwords 账号与密码:Merchantwords 账号与密码
要增加自然搜索流量吗?以下8个内容建议您可以好好看看:要增加自然搜索流量吗?以下8个内容建议您可以好好看看
亚马逊销量激增被封店?申诉解封指南看这里!:亚马逊销量激增被封店?申诉解封指南看这里!

中医减肥有奇效,可惜只适合一些虚胖的人

核心提示:肥胖其实是一种病,在医学上的定义为肥胖症。肥胖症是由于体内摄入的热量大于消耗的热量引起的一种慢性代谢性疾病。肥胖可增加高血压、高血脂、糖尿病、冠心病、精神疾病等慢性疾病的发病率,越来越多的肥胖症患者认

肥胖其实是一种病,在医学上的定义为肥胖症。肥胖症是由于体内摄入的热量大于消耗的热量引起的一种慢性代谢性疾病。肥胖可增加高血压、高血脂、糖尿病、冠心病、精神疾病等慢性疾病的发病率,越来越多的肥胖症患者认识到西药治疗肥胖症的局限性和使用后的不良反应,容易反弹。在不服用药物的情况下,可以采取中医的减肥法,调节人体阴阳平衡,达到合理的体重指数。


151.jpg

一、泡浴法

泡浴是通过热力与药力的作用,促使人体的毛孔张开,有利于汗液流出,排出水湿,以达到减肥的效果。但是对于患有心血管疾病的人群,这个方法是不合适的,因为长时间泡浴,会导致缺氧,对心脏有所损伤。

46107.jpg

二、熏蒸法

熏蒸一般分为两类,干蒸和湿蒸。熏蒸时可加入中药材或醋,中药以湿通化湿类为主,以促进体内水湿排出,而醋还有美容的功效。但是蒸熏的过程中不能洗头。除了不能洗头外,最重要的是不可过饱和空腹,因为饭后,血液集中在胃部,促进肠胃的消化,如果饭后立马进入熏蒸房,很有可能促进全身的血液循环,胃部的供血会减少,不利于肠胃蠕动,容易引起消化不良。

三、敷贴法

敷贴法是选取宣肺通便、利水化瘀、行气的腧穴,如神阙、大椎、肺俞等,用温热类的药物,如白芥子、细辛、杏仁等,研磨后敷贴。或打粉后与油类、脂类混合,涂抹在身上,有助于减肥。

以上三种方法均可对照自身情况选择,不建议使用非常规手段达到减肥瘦身的目的

55673.jpg


泻药的危害

许多年轻人大多有个误区,认为只要把身体内的东西清空了,就会减轻体重,所以常常使用"泻药"这类的减肥产品。中医专家提到,泻药对于润肠。、清肠是有一部分功效的,但是泻药也是有其危害的,一般一周内有效。这种药品不建议长期使用,容易对肠胃造成伤害。对于想要减肥的年轻人而言,建议不要使用口服类的减肥产品,通过正确的饮食习惯和体育锻炼也能达到减肥的目的。

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


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

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

new old stock:https://www.ikjzd.com/w/2341

中国邮政邮乐网:https://www.ikjzd.com/w/1776


核心提示:肥胖其实是一种病,在医学上的定义为肥胖症。肥胖症是由于体内摄入的热量大于消耗的热量引起的一种慢性代谢性疾病。肥胖可增加高血压、高血脂、糖尿病、冠心病、精神疾病等慢性疾病的发病率,越来越多的肥胖症患者认 肥胖其实是一种病,在医学上的定义为肥胖症。肥胖症是由于体内摄入的热量大于消耗的热量引起的一种慢性代谢性疾病。肥胖可增加高血压、高血脂、糖尿病、冠心病、精神疾病等慢性疾病的发病率,越来越多的
r标:r标
kkr:kkr
史上最最疯狂的年终亚马逊旺季战役打响,用好广告锦囊,Q4收割一整年KPI!:史上最最疯狂的年终亚马逊旺季战役打响,用好广告锦囊,Q4收割一整年KPI!
亚马逊上线品牌推广视频功能:亚马逊上线品牌推广视频功能
口述:干爹夺走我初夜事后装陌生干爹发生关系初夜:口述:干爹夺走我初夜事后装陌生干爹发生关系初夜

NBA最新排名!大黑马坐稳西部第一,篮网反超雄鹿,马刺杀进四强_1

原标题:NBA最新排名!大黑马坐稳西部第一,篮网反超雄鹿,马刺杀进四强

今天10场常规赛结束后,NBA东西部的排名又有了新的变化。爵士无疑是本赛季最大的黑马,在战胜独行侠后迎来11连胜,以15胜4负的战绩排名联盟第一,也坐稳了西部第一的位置。篮网在大胜雷霆后也反超雄鹿排名东部第二,让人意想不到的是波波维奇带领的马刺爆冷击败掘金后,也杀进了西部4强。

快船双核复出后联手砍下50分,不费吹灰之力战胜了魔术,排名西部第二;上一场爆冷后,湖人在西部第一之争中暂时落后排名第三,掘金不敌马刺后排名下降一位,来到西部第五;此外,西部第六到第十一的球队和昨天的排名一致,分别灰熊,太阳、开拓者,勇士,火箭和雷霆。独行侠最近遭遇4连败跌到了西部第13的位置,而战胜猛龙的国王上升到西部第十二,鹈鹕虽然战胜了雄鹿,但是仍然排名倒数第二,输球的森林狼铁定是奔着状元秀去了,在西部独一档存在。

东部排名方面,76人战胜森林狼后稳坐东部第一,赢球的篮网排在东部第二,输球的雄鹿则跌到了东部第三,不过,这三支球队会是东部第一的有力竞争者。凯尔特人、步行者、老鹰、骑士和尼克斯分别排在东部第四到第八位,特别是骑士、尼克斯两支球队的表现让人眼前一亮。不过,他们与后面的黄蜂、公牛、魔术和猛龙并没有拉开太大的距离,最多只相差1个胜场,如果想要保住前八,还需要继续努力。

热火是东部最令人失望的球队,已经遭遇了5连败了,这还是上赛季那支亚军吗?目前排在东部第十三位,最后两位分别是活塞和奇才。特别是奇才只取得3胜12负的战绩,不仅在东部倒数第一,在联盟也是战绩最差的。返回搜狐,查看更多

责任编辑:

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

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

预售:https://www.ikjzd.com/w/889

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


原标题:NBA最新排名!大黑马坐稳西部第一,篮网反超雄鹿,马刺杀进四强今天10场常规赛结束后,NBA东西部的排名又有了新的变化。爵士无疑是本赛季最大的黑马,在战胜独行侠后迎来11连胜,以15胜4负的战绩排名联盟第一,也坐稳了西部第一的位置。篮网在大胜雷霆后也反超雄鹿排名东部第二,让人意想不到的是波波维奇带领的马刺爆冷击败掘金后,也杀进了西部4强。快船双核复出后联手砍下50分,不费吹灰之力战胜了魔术
worldfirst:worldfirst
巨鲸:巨鲸
最后期限将至!美国要求加拿大逮捕孟晚舟一事将何去何从?:最后期限将至!美国要求加拿大逮捕孟晚舟一事将何去何从?
获得亚马逊Buy Box的要求!赢得Buy Box的6大策略!:获得亚马逊Buy Box的要求!赢得Buy Box的6大策略!
收藏:卖家挑选物流服务的六大普遍错误观念!:收藏:卖家挑选物流服务的六大普遍错误观念!

2021-01-30

redis集群

   redis5之前集群搭建需要ruby环境,redis5之后就不需要了,只用redis-cli就可以创建集群了,本文redis版本:5.0.4

1.前期回顾  

  前面说了redis的主从复制可以保证数据容灾,就是主节点坏了,从节点中也保存着完整数据,不会造成数据丢失的情况;

  然后又说了哨兵模式(sentinel),这个是在主从复制的基础上增强了一下,当主节点坏了,从节点中就会选举出来一个当作主节点,继续对外提供服务,而不需要人为的去操作,这叫做保证自动故障转移;

  注意,哨兵的个数之前只配置了一个,其实可以配置多个,防止一个哨兵由于网络延迟等原因误判了;多个哨兵的时候超过半数的哨兵觉得主节点挂了那么就是主节点挂了,才会选举新的主节点;

  哨兵模式下,使用springboot去连接redis的时候,连接的哨兵节点哦!因为此时主节点的ip是不确定的,有兴趣的可以自己测试;

 

2. redis单机版的缺陷

  哨兵模式下,其实就可以适用于绝大多数公司的场景了,毕竟也没有那么多的用户

  但是对于比较大的公司,用户数量贼多,然后并发量贼高,然后redis主节点只有一个,一下子就能将redis主节点打趴下了,然后哨兵重新推选新的主节点刚刚站起来,然后又一下子被打趴下了,不断的重复直至所有的redis节点都被打趴下了,最终所有请求都来到数据库,数据库也挂了....这也就是单节点并发压力的问题

  而且只有单节点的话,redis持久化数据越来越多,直至最后持久化了TB级别的数据,其实是比较夸张的

  所以我们更希望能有多个redis主节点服务器可以提供服务,每个主节点有从节点,而且还有有类似之前说的哨兵机制,那么持久化的数据能大概均分到各个服务器,而且可用性也有,单节点并发和磁盘压力也会大大的缓解

 

3 redis集群(cluster)说明

  集群就类似下面这个图,集群中三个节点提供服务,三个节点都是主节点,同时三个节点都有从节点;

  在集群模式下,主从节点自动的会有哨兵功能,即主节点挂了,从节点就会顶上;

  下面的这种,redis持久化的数据可以大概的平均分成三份,分别存到每个节点中,所以,每个节点中存的数据是不一样的!!!

 

  那么问题来了,一个集群中有那么多节点,我们如果要向里面存数据,那么怎么选择节点呢? 只有先选择了节点然后才能往这个节点中存入数据

  例如set a 1,那么应该怎么向集群中存呢?

  原理:类似于java中的hashmap,如果我有一个容量为16383的数组,分成三份,上面节点node-1 中管理的是0-5461的位置,node-2管理的是5462-10922的位置,然后node-3管理的是10923-16383的位置

  然后a首先经过hash再对16383取余,得到的结果肯定是在0-16383之间的某个数字(在redis中就叫做CRC16算法),然后根据这个结果所在的位置就能确定放在哪个节点了

  比如上面的set  a 1 ,假设a经过CRC16算法得到的结果是7000,那就肯定丢到node-2里面去了,还是比较容易的,并且相同的键,经过CRC16算法,每次都是一样的,所以当使用get a 的时候,a经过CRC16之后,结果也是7000,也就到node-2中去取数据了

  这实现了存的时候在哪个节点存,取得时候肯定就在那个节点去取;

 

4 redis在linux中简单使用

  之前单机版都是windows中配置的,现在我们在linux中玩一下

  4.1 安装redis源码

  redis中文网 根据提示下载redis源码,我把安装命令放在下面,注意下载你想要的版本;

#下载,解压,编译:wget >.tar.gztar xzf redis-5.0.4.tar.gzcd redis-5.0.4make#二进制文件是编译完成后在src目录下. 运行如下:src/redis-server#你能使用Redis的内置客户端进行进行redis代码的编写:$ src/redis-cliredis> set foo barOKredis> get foo"bar"

 

  你在执行make的时候应该会出错,因为redis是c语言写的,所以需要有c语言的编译环境,使用命令:yum install -y gcc

  然后进入解压目录执行: make MALLOC=libc

  继续在解压目录下执行:make install PREFIX=/usr/local/redis     /usr/local/redis这个目录表示你的redis需要安装的位置,自己定义,后续的启动redis就是在/usr/local/redis/bin

  进入刚刚redis的安装目录,执行命令:./redis-server

  可以发现使用linux安装其实比较麻烦,而且如果你的运气不好,在使用yum安装gcc的时候也会有些奇葩的问题,慢慢踩坑吧!

 

  4.2 启动redis哨兵

  在前面我们安装了redis的源码包和编译后的redis,我们还需要redis服务端启动时候的配置文件,在源码包下,我们需要复制到编译后的redis目录下:cp /usr/local/java/redis/redis-5.0.4/redis.conf /usr/local/redis/bin      这个命令的前一个目录需要改成你自己的redis源码包的目录

  由于我的redis版本比较新,所以redis编译后的包中有redis-sentinel文件,就不需要去源码包复制了(假设你的本目录没有这个redis-sentinel文件,你就需要去源码包中的src目录下将这个文件redis-sentinel给复制过来)

 

  我们在当前bin目录下新建一个sentinel.conf配置文件,加入下面一行

sentinel monitor mymaster 127.0.0.1 6379 1

 

  配置完毕,启动redis服务端:./redis-server ./redis.conf

 

  启动哨兵节点:./redis-sentinel ./sentinel.conf

 

  到这里,说明我们redis配置很ok,当然你也可以自己配置一个从节点,跟window版本是一样的,自己可以测试一下

 

5 redis集群搭建

  5.1 提前须知

  集群中的主从节点自带哨兵功能,而且主节点必须是奇数,最低需要三个主节点

  我这里给每个主节点都配置一个从节点,三主三从,一共6个节点

  我们设置5000,6000,7000为三个主节点,5001,6001,7001为三个从节点,注意,我们在集群中不能手动指定主节点和哪个从节点配对,这是随机的!我们只能指定主节点

 

  5.2 redis.conf配置文件修改

  复制6份redis.conf配置文件,然后修改下面个地方:

port 6379 //redis服务端的端口bind 0.0.0.0 //开启远程连接
daemonize yes //这里表示redis服务端以守护进行开启,也就是开启redis的时候,是在后台运行的
dbfilename dump.rdb //rdb持久化文件名需要修改
appendfilename "appendonly.aof" //aof持久化文件名需要修改
appendonly yes //集群模式必须开启aof持久化
dir . //持久化文件存放的目录
cluster-enabled yes //开启集群模式cluster-config-file nodes-port.conf //集群节点配置文件cluster-node-timeout 5000 //集群节点超时时间,单位毫秒

 

  改完之后的文件放入下面的各自对应的目录中:

 

  我们以5000端口为例,修改上面的几条,其他的配置文件根据各自的端口进行修改:

port 5000bind 0.0.0.0daemonize yes dbfilename dump5000.rdb appendfilename "appendonly5000.aof" appendonly yes
dir ./5000
cluster-enabled yes cluster-config-file nodes-5000.conf cluster-node-timeout 5000

  

  改了好半天,终于改完了6个配置文件,然后在bin目录下编写一个启动所有节点的脚本: vim redisStartAll.sh

#! /bin/bash./redis-server ./5000/redis5000.conf./redis-server ./5001/redis5001.conf./redis-server ./6000/redis6000.conf./redis-server ./6001/redis6001.conf./redis-server ./7000/redis7000.conf./redis-server ./7001/redis7001.conf

  

  给启动脚本添加可执行权限: chmod +x redisStartAll.sh

  想要启动所有redis节点,在bin目录下直接执行: sh ./redisStartAll.sh

 

   5.3 创建集群

  我们将所有的节点启动完毕之后,虽然说都是节点,但都是各自隔离的,没有什么联系,我们需要将这些节点设置一下;(还是强调一下,redis5.x版本的集群模式不需要ruby环境,直接使用本地的reids-cli就行了)

  在bin目录下执行:./redis-cli --cluster create --cluster-replicas 1 127.0.0.1:5000 127.0.0.1:6000 127.0.0.1:7000 127.0.0.1:5001 127.0.0.1:6001 127.0.0.1:7001

  命令说明,下图所示;

  到这里,肯定有人想了,我要是有的主节点要有两个从节点呢?推荐看看这个老哥的博客,对这个命令解释得很详细

  

  执行命令之后,输入"yes"表示保存这个集群,如果你对当前集群不满意,也可以重新执行一下上述命令

 

 

  集群搭建完毕,我们只需要连接任意一个节点就能看看集群中节点的状态:./redis-cli -p 6000 cluster nodes

 

  如果想看到集群中各个节点更详细的信息,也可以使用这个:./redis-cli --cluster check 127.0.0.1:5000 --cluster-search-multiple-owners

  

  5.4 测试集群

  我们关掉主节点5000,然后等几秒钟

 

  然后再启动5000这个节点,我们发现5000节点成了5001的从节点了

 

  我们随便连接一个节点放入数据:./redis-cli -p 5000 -c     注意要加上 -c 参数啊,这表示连接集群客户端

 

  从集群中取数据

 

 

 6. 总结

  到这里redis的基础知识就说完了,最开始说的就只有一个节点的单机结构,弊端是容灾性差,这个节点坏了就就真的坏了,里面的数据还有可能丢失;

  然后就说了解决容灾行的方案,即使用主从复制结构,但是主从当主节点坏了之后,虽然说数据肯定保存了一份在从节点那里,但是需要人为的去重新部署redis

  再进一步就是说了哨兵机制,有个哨兵(当然,哨兵可以配置多个)一直盯着我们的主节点,当主节点没用了,就会自动的将从节点汇总选举出来一个作为主节点,继续向外提供服务

  但是哨兵机制说到底还是单体架构,就会有单节点并发压力的问题,只有一个主节点无法抗住并发压力,而且所有数据都放在一台服务器中,随着redis用的时间越来越长,使得磁盘的空间也会很有压力

  解决方案就是集群方式,可以有多个主节点共同组成一个集群向外界提供服务,数据大概就是均分成多份分别放在这些主节点中,这缓解了磁盘压力;而且每个主节点有多个从节点,且具备有主从复制+哨兵的作用,当主节点中数据有变化,就会同步到它对应的从节点中,提高了容灾性,然后主节点挂了,从节点还能顶上,提高了故障转移能力;

  其实在集群创建完了之后,我们后续还可以向其中添加主节点和从节点的,这个就很容易了!









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

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

kili:https://www.ikjzd.com/w/238

电霸:https://www.ikjzd.com/w/2597


redis5之前集群搭建需要ruby环境,redis5之后就不需要了,只用redis-cli就可以创建集群了,本文redis版本:5.0.41.前期回顾    前面说了redis的主从复制可以保证数据容灾,就是主节点坏了,从节点中也保存着完整数据,不会造成数据丢失的情况;  然后又说了哨兵模式(sentinel),这个是在主从复制的基础上增强了一下,当主节点坏了,从节点中就会选举出来一个当作主节点
tenso:tenso
卖家网:卖家网
口述:小姨子帮我猎艳被妻子暴打小姨子猎艳情敌:口述:小姨子帮我猎艳被妻子暴打小姨子猎艳情敌
分布式缓存系列之guava cache:分布式缓存系列之guava cache
各位卖家们,亚马逊黑五有感觉吗?:各位卖家们,亚马逊黑五有感觉吗?

Spring Cloud 2020.0.1 正式发布!真是头疼。。。

上一篇:Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!

号外!号外!号外!

Spring Cloud 2020.0.0 在去年 12 月底,赶在一年的尾巴最后几天仓促发布了,时间刚过去一个月,现在 Spring Cloud 2020.0 第一个发布版本 Spring Cloud 2020.0.1 又发布了:

版本更新也太快了吧。。。

可以看出,Spring Cloud 现在主要维护了两条版本线:

  • 2020.0.1(当前最新版本)
  • Hoxton.SR9

为什么版本会存在年份和伦敦地铁站的命名,可以关注公众号:Java技术栈,回复:cloud,阅读栈长我之前写的 Spring Cloud 系列教程,这里就不再详述了。

最新 Spring Cloud 2020 版本 Maven 坐标如下:

<dependencyManagement> <dependencies>  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-dependencies</artifactId>   <version>2020.0.1</version>   <type>pom</type>   <scope>import</scope>  </dependency> </dependencies></dependencyManagement><dependencies> <dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> ...</dependencies>

更新内容

该版本主要修复了 Spring Cloud 2.0.0 版本中的一系列 bug:

https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2020.0-Release-Notes#known-issues

看来,上一个 2020.0.0 版本发布的真的有点仓促…

刚升级完 2020.0.0 的同学是不是又要准备升级了?如果这些 bug 不影响到使用的话,不升级也不用理会,可以等下一个大版本再决定是否升级。

另外,该版本还对相关子模块进行了依赖升级:

ModuleVersion
Spring Cloud Circuitbreaker2.0.0
Spring Cloud Contract3.0.1
Spring Cloud Kubernetes2.0.1
Spring Cloud Commons3.0.1
Spring Cloud Openfeign3.0.1
Spring Cloud Cloudfoundry3.0.0
Spring Cloud Bus3.0.1
Spring Cloud Cli3.0.1
Spring Cloud Zookeeper3.0.1
Spring Cloud Sleuth3.0.1
Spring Cloud Consul3.0.1
Spring Cloud Starter Build2020.0.1
Spring Cloud Gateway3.0.1
Spring Cloud Netflix3.0.1
Spring Cloud Vault3.0.1
Spring Cloud Config3.0.2
Spring Cloud Task2.3.0

结束语

Spring Cloud 作为 Spring 旗下的顶级项目,能与 Spring 天然、无缝整合,背后又有 Spring Boot 作为依托,内置了各种微服务组件,现在已成为微服务的最主流框架之一,许多企业正在大量运用。

但目前 Spring Cloud 的版本发布也太快了,另外,在 Spring Cloud 2020 版本中又废除了许多重要的核心模块,说实话,真的存在各种不稳定性,对版本升级也造成了许多阻碍,升级真是头疼。。

话说用 Spring Cloud 的你们都用的哪个版本呢?来投个票吧!

反正我感觉有点跟不上了,学不动了。。

参考:https://spring.io/blog/2021/01/28/spring-cloud-2020-0-1-aka-ilford-is-available

版权申明:本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。

近期热文推荐:

1.Java 15 正式发布, 14 个新特性,刷新你的认知!!

2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

3.我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。

4.吊打 Tomcat ,Undertow 性能很炸!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!









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

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

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

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


上一篇:SpringCloud2020.0.0正式发布,全新颠覆性版本!号外!号外!号外!SpringCloud2020.0.0在去年12月底,赶在一年的尾巴最后几天仓促发布了,时间刚过去一个月,现在SpringCloud2020.0第一个发布版本SpringCloud2020.0.1又发布了:版本更新也太快了吧。。。可以看出,SpringCloud现在主要维护了两条版本线:2020.0.1(当前
欧麦:欧麦
e淘网:e淘网
突发!Prime Day大促前的4大问题,让卖家直呼倾家荡产:突发!Prime Day大促前的4大问题,让卖家直呼倾家荡产
AMAZON广告操作指南:AMAZON广告操作指南
产品与订购不一样而冻结账号的申诉过程:产品与订购不一样而冻结账号的申诉过程

2021年,开发者的落日

file

小说《三体》第一部结尾,叶文洁透过红岸基地天空看到了最后一次日落。她亲手发出的讯息让人类太阳永远沉沦。多年以后,一颗小小的水滴瞬间摧毁庞大的人类星际舰队,人类的骄傲与自尊灰飞烟灭。叶文洁在登上红案基地前,说出了那句振聋发聩的话:

这是一切的开始,这也是人类的落日。

下面这几十行字只是一时兴起的个人思考。基于对2021年整个互联网技术从业者的可能变化和未来的个人思考。

前几天,我看了阿里云李飞飞老师在数据库大会上的讲话,关于数据库行业未来的发展的思考。老实说,李飞飞老师还是有两把刷子的,站在技术管理者和企业应用的角度,视野比较高,我个人暂时难以望其项背。

不过呢,小编也可以站在开发者的角度从下往上看一下开发行业或者说小编从事的数据这个小分支的未来的几个变化。

技术越来越不值钱

首先提出我个人的一个观点,从某种程度来说,技术不产生价值。普通的开发者要深刻理解一件事情,如今你暂时拿在手里的看似高薪不是个人能力的体现,是行业带动的结果,那么行业带动的结果。你要感谢两家公司微软和Google。

如果整个互联网行业只有2家公司可以存活的话,除了微软和Google,任何其他企业都没有资格,只能去死。

微软大幅降低了编程的门槛,围绕操作系统诞生一整套的生态,把编程变成了一种普通人可以当成工作的玩意儿。

Google站在巨人的肩膀上,从提出分布式这个概念开始,几乎重塑了整个计算机行业。此后,Google不满足于此,不仅疯狂制定顶层标准,而且在科技界的贡献持续造福全人类。

可以这么说,互联网行业这些年的高光完全是行业热潮带动普通开发人员受益,而不是个人本身。我们都是风口上的猪而已。

技术本身门槛的大幅降低导致【技术通货膨胀】,更多的人参与就代表每个人分到更少的蛋糕。回归公司的本质,一个专注于技术但是对业务0贡献的开发者为什么能拿高薪趴在电脑前?

存量市场的竞争白热化,躺着赚钱的时代终结。不懂业务,疯狂跳槽,盲目转行,仅仅追逐技术能力的提升脱离商业本身的开发者最终会被弃之如敝履。

FasS重上风口浪尖

关于云计算时代的一些名词不做过多解释,可以自行去查资料。

从2021年开始,其实从2020年下半年就初露端倪。FaaS重新被推上风口浪尖,普通开发者应该感到危机。

FaaS是Functions as a Service的简称,它往往和无服务架构(Serverless Architecture)一同被提起。

大家注意,FaaS自上而下,和下文的低代码自下而上对普通开发者形成了双重挤压,对普通开发者的生存空间造成了严重影响。

FaaS在干什么?FaaS抛弃了原来大型复杂应用的架构,将整个架构中的单元进行拆分,将各种软、硬件资源等抽象为一种服务提供给开发者使用,让他们不再担心基础设施、资源需求、中间件等等,专注于具体逻辑实现。

看到了么?FaaS已经将整个开发者最需要脑子和开发量的工作吃掉了。基础设施和中间件乃至服务器资源的管理,不需要开发者介入。这会导致什么后果?

大批量【填鸭式】进入这个行业的开发者你们应该感到危机。因为FaaS正把你们变成实实在在的【工具人】。

所谓工具人,就是低成本、易替换。

低代码大行其道

Low Code Development Platform 是指无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。

低代码在干什么? 我们直接引用行业大佬的一句话:

低代码是基于可视化和模型驱动理念,结合云原生与多端体验技术,它能够在多数业务场景下实现大幅度的提效降本,为专业开发者提供了一种全新的高生产力开发范式。另一方面,低代码能够让不懂代码的人,通过"拖拉拽"开发组件,就能完成应用搭建。从意义上讲,低代码可以弥补日益扩大的专业技术人才缺口,同时促成业务与技术深度协作的终极敏捷形态。

看到了么?低代码是让不懂代码的人可以进行组件开发。这个领域的发展会迅速淘汰掉企业中做企业内部系统的那批人,然后向外蔓延开来。大家可以参考钉钉。

2020年12月28日,钉钉宣布推出低代码开发平台"宜搭",为用户提供低代码开发能力。根据钉钉发表的最新用户数据:企业组织1500万、个人用户3亿。"宜搭们"的上线意味着,中国低代码开发的普及被按下了加速键,未来几年甚至有可能迎来爆发式增长。

上面这个信息已经为企业内部系统的开发者们敲响了警钟。显而易见,其他领域最终也不能独善其身。

丧钟为谁而鸣?

数据领域未来的几个变化

再次声明,只是个人的思考。我也希望未来几年回过来看自己使劲打自己脸。

数据领域进入平台期,门槛降低。受到FaaS和低代码理念的影响,未来数据领域最先受到影响的两个岗位显而易见,大家可以自己思考。

未来低代码盛行,类SQL、拖拉拽大行其道,会导致开发者们离原理越来越远,不懂底层设计,不懂顶层架构,不如业务懂业务,不如开发懂开发。

愚者还在窃喜,智者却在悲伤。

因为业务同学会用Excel和低代码平台干掉开发者。因为数据领域天然Low Code。

而致力于低代码和FaaS的领域的行业推动者正是微软、Google、阿里云这些行业引领者。

它们成就了开发者盛世,也会亲手毁掉开发者。

所谓,成也萧何败也萧何。

我们该做什么

懂原理

2020年下半年,数据领域新概念频出,我在之前的文章中也提到过。这些新概念势必会带动一些基础架构部门的发展,因为基础架构部门不向前跑,就会变成运维专家,变成答疑专家,就会自己干掉自己。

所以,作为引领公司甚至行业的基础开发者,基于业务大胆启用新的技术方案前,只有对原理足够熟悉,才能做到顺利转型。盲目上马,不做出充分调研,技术能力不足会被其他领跑者拖死。

做顶层架构设计

尤其是基于业务系统的合理技术选型和正确的架构设计,这对开发者提出了相当高的要求,技术栈足够深入,场景足够丰富的情况下才能游刃有余。对于那些技术Leader,这更是巨大的挑战。否则,一将无能,累死千军。要么你足够优秀可以当做火把给全队把路照亮,要么就要有足够的魅力发现和吸引那些是火把的人。

懂业务

业务才是开发者的立足根本,对业务足够熟悉,才能最终站稳脚跟。随着开发门槛的不断降低,业务人员,尤其是一些专业的熟悉业务的且可以做分析的业务人员,它们对于开发会逐渐降低依赖,在低代码和套件化足够成熟的未来,只懂开发的开发者会被边缘化。

做好行业沉淀

技术不能安身立命,但是行业沉淀可以。举几个例子,2020年下半年拼多多开始在物流领域发力,抖音拿下支付牌照。请问大家,哪些人会成为被挖角和追捧的对象?

所以,2021年是一切的开始,也是开发者的落日。

欢迎关注,《大数据成神之路》系列文章

欢迎关注,《大数据成神之路》系列文章

欢迎关注,《大数据成神之路》系列文章









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

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

中国邮政邮乐网:https://www.ikjzd.com/w/1776

亚马逊礼品卡:https://www.ikjzd.com/w/1090.html


小说《三体》第一部结尾,叶文洁透过红岸基地天空看到了最后一次日落。她亲手发出的讯息让人类太阳永远沉沦。多年以后,一颗小小的水滴瞬间摧毁庞大的人类星际舰队,人类的骄傲与自尊灰飞烟灭。叶文洁在登上红案基地前,说出了那句振聋发聩的话:这是一切的开始,这也是人类的落日。下面这几十行字只是一时兴起的个人思考。基于对2021年整个互联网技术从业者的可能变化和未来的个人思考。前几天,我看了阿里云李飞飞老师在数据
zappos:zappos
vincent:vincent
Shopee新加坡海运服务升级!:Shopee新加坡海运服务升级!
2019年亚马逊动态CPC工具推广实操!:2019年亚马逊动态CPC工具推广实操!
没抢够卫生纸的外国人,竟然会买它来替代?:没抢够卫生纸的外国人,竟然会买它来替代?

null调整为not null default xxx,不得不注意的坑

最近碰到一个case,值得分享一下。

 

现象

一个DDL,将列的属性从null调整为not null default xxx,

alter table slowtech.t1 modify name varchar(10) not null default 'slowtech';

通过平台执行(平台调用的是pt-online-schema-change)。

但在执行的过程中,业务SQL报错,提示"ERROR 1048 (23000): Column 'name' cannot be null"。

 

在剖析具体的问题之前,首先,我们看看pt-online-schema-change的原理。

 

PT-OSC的实现原理

 

从原理图中可以看到,

1.  对于全量数据的同步,pt-online-schema-change是以chunk为单位分批来拷贝的。

2.  对于增量数据的同步,pt-online-schema-change是通过触发器来实现的。

 

结合pt-online-schema-change的原理,我们来重现下问题场景。

mysql> create table slowtech.t1(id int primary key,name varchar(10));mysql> create table slowtech._t1_new(id int primary key,name varchar(10));mysql> alter table slowtech._t1_new modify name varchar(10) not null default 'slowtech';mysql> create trigger slowtech.`pt_osc_slowtech_t1_ins` after insert on `slowtech`.`t1` for each row replace into `slowtech`.`_t1_new` (`id`, `name`) values (new.`id`, new.`name`);mysql> insert into slowtech.t1(id) values(1);ERROR 1048 (23000): Column 'name' cannot be null

问题完美呈现,有的童鞋可能会有疑问,t1的name列默认不是null么?为什么不允许null值的插入?

 

问题原因

问题出在触发器上面。

触发器会将业务SQL("insert into slowtech.t1(id) values(1)")和触发操作("replace into slowtech._t1_new (id, name) values(1, null)")放到一个事务内执行。

"insert into slowtech.t1(id) values(1)"并不违反t1表的约束,但违反了_t1_new表的约束。

 

通过上面的分析,我们得到了两点启示:

1.  类似DDL(将列的属性从null修改为not null default 'abc')要注意。

从原理上看,既然涉及到全量数据+增量数据的同步,都会存在这种问题,不单单是pt-online-schema-change,包括Online DDL,gh-ost同样如此。

只不过,触发器这种方案会将业务SQL和触发操作耦合在一起,相对来说,对业务有一定的侵入性。

 

2. 既然触发器会将业务SQL和触发操作放到一个事务内执行,如果pt-online-schema-change异常退出,留下了触发器和中间表(_t1_new),在清理现场时,应首先删除触发器,再删除中间表。

如果首先删除中间表,会导致针对原表的所有DML操作失败。

mysql> drop table slowtech._t1_new;mysql> insert into slowtech.t1 values(1,'victor');ERROR 1146 (42S02): Table 'slowtech._t1_new' doesn't exist

 

数据拷贝也有坑

在执行DDL之前,还有一段小插曲。

在执行DDL之前,开发提单将该列的null值修改为了默认值。这样就导致了,问题是在业务SQL插入的过程中暴露的,而不是在数据拷贝过程中暴露。

在数据拷贝的过程中,如果拷贝的数据中,该列存在null值,pt-online-schema-change会直接报错退出。

mysql> create table slowtech.t1(id int primary key,name varchar(10));mysql> insert into slowtech.t1(id) values(1);# pt-online-schema-change h=xxxxx,u=root,p=123456,D=slowtech,t=t1 --alter "modify name varchar(10) not null default 'slowtech'" --executeNo slaves found. See --recursion-method if host xxxx has slaves.Not checking slave lag because no slaves were found and --check-slave-lag was not specified.Operation, tries, wait: analyze_table, 10, 1 copy_rows, 10, 0.25 create_triggers, 10, 1 drop_triggers, 10, 1 swap_tables, 10, 1 update_foreign_keys, 10, 1Altering `slowtech`.`t1`...Creating new table...Created new table slowtech._t1_new OK.Altering new table...Altered `slowtech`.`_t1_new` OK.2020-09-07T09:13:25 Creating triggers...2020-09-07T09:13:25 Created triggers OK.2020-09-07T09:13:25 Copying approximately 1 rows...2020-09-07T09:13:25 Dropping triggers...2020-09-07T09:13:25 Dropped triggers OK.2020-09-07T09:13:25 Dropping new table...2020-09-07T09:13:25 Dropped new table OK.`slowtech`.`t1` was not altered.  (in cleanup) 2020-09-07T09:13:25 Error copying rows from `slowtech`.`t1` to `slowtech`.`_t1_new`: 2020-09-07T09:13:25 Copying rows caused a MySQL error 1048: Level: Warning  Code: 1048 Message: Column 'name' cannot be null Query: INSERT LOW_PRIORITY IGNORE INTO `slowtech`.`_t1_new` (`id`, `name`) SELECT `id`, `name` FROM `slowtech`.`t1` LOCK IN SHARE MODE /*pt-online-schema-change 9234 copy table*/2020-09-07T09:13:25 Dropping triggers...2020-09-07T09:13:25 Dropped triggers OK.`slowtech`.`t1` was not altered.

 

上述报错,pt-online-schema-change加个参数即可规避(--null-to-not-null)。

在实现上,该参数会忽略1048错误,此时,对于字符类型的列,会填充空字符,对于数字类型的列,会填充0。

mysql> create table slowtech.t1(id int primary key,name varchar(10));mysql> create table slowtech._t1_new(id int primary key,name varchar(10));mysql> alter table slowtech._t1_new modify name varchar(10) not null default 'slowtech';mysql> insert into slowtech.t1(id) values(1);mysql> select * from slowtech.t1;+----+------+| id | name |+----+------+| 1 | NULL |+----+------+1 row in set (0.00 sec)mysql> insert low_priority ignore into slowtech._t1_new (id, name) select id, name from slowtech.t1 lock in share mode;Query OK, 1 row affected, 1 warning (0.01 sec)Records: 1 Duplicates: 0 Warnings: 1mysql> show warnings;+---------+------+------------------------------+| Level | Code | Message      |+---------+------+------------------------------+| Warning | 1048 | Column 'name' cannot be null |+---------+------+------------------------------+1 row in set (0.00 sec)mysql> select * from slowtech._t1_new;+----+------+| id | name |+----+------+| 1 |  |+----+------+1 row in set (0.00 sec)

所以,线上使用该参数要注意,要确认被填充的值是否符合自己的预期行为。

 

从目前的分析来看,要将一个列的属性从null直接修改为not null default xxx,几乎是不可能的,除非:

1.  该列不存在null值。

2.  在DDL的过程中,没有类似于"insert into slowtech.t1(id) values(1)"的业务SQL出现。

 

结论

很显然,这两个条件很难同时满足。既然如此,这个需求还能实现吗?能!只不过比较复杂。

下面,看看具体的实施步骤。

1. 首先,将列的属性调整为null default xxx,这样做的目的是为了避免增量同步过程中,类似"insert into slowtech.t1(id) values(1)"的业务SQL,产生新的null值。

2. 其次,手动将null值调整为默认值。需要注意的是,如果记录数较多,这一步的操作难度也是极大的。

3. 最后,将列的属性调整为not null default xxx。

 

对于not null default xxx的正确理解

在很多数据库规范里面,都推荐将列定义为not null default xxx,但很多童鞋,对这段定义的实际效果却相当模糊。

下面具体来说说,这段定义的实际作用。这段定义实际上由两部分组成:

1.  not null,约束,指的是不可显式插入null值,如,

mysql> create table slowtech.t1(id int primary key,name varchar(10) not null default 'slowtech');mysql> insert into slowtech.t1 values(1,null);ERROR 1048 (23000): Column 'name' cannot be null

2.  default 'slowtech',如果在插入时,没有显式指定值,则以默认值填充。

mysql> insert into slowtech.t1(id) values(1);mysql> select * from slowtech.t1;+----+----------+| id | name  |+----+----------+| 1 | slowtech |+----+----------+1 row in set (0.00 sec)

可以看到,这两部分其实没有任何关系,对于一个列,我们同样可以定义为null default xxx。

 









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

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

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

文化衫事件:https://www.ikjzd.com/w/1932


最近碰到一个case,值得分享一下。现象一个DDL,将列的属性从null调整为notnulldefaultxxx,altertableslowtech.t1modifynamevarchar(10)notnulldefault'slowtech';通过平台执行(平台调用的是pt-online-schema-change)。但在执行的过程中,业务SQL报错,提示"ERROR1048(
stylenanda官网:stylenanda官网
acedota:acedota
Wish写产品描述的时候一定要谨慎,违反政策可是要罚款的!:Wish写产品描述的时候一定要谨慎,违反政策可是要罚款的!
亚马逊店铺如何运营?亚马逊店铺注意事项有哪些?:亚马逊店铺如何运营?亚马逊店铺注意事项有哪些?
跨境卖家注意:利用Review提高转化率,不要忽略这5个窍门!:跨境卖家注意:利用Review提高转化率,不要忽略这5个窍门!

处理 Exception 的几种实践,被很多团队采纳!

在Java中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。

来源 id="在finally块中清理资源或者使用try-with-resource语句">在Finally块中清理资源或者使用try-with-resource语句

当使用类似InputStream这种需要使用后关闭的资源时,一个常见的错误就是在try块的最后关闭资源。

public void doNotCloseResourceInTry() { FileInputStream inputStream = null; try {  File file = new File("./tmp.txt");  inputStream = new FileInputStream(file);  // use the inputStream to read a file  // do NOT do this  inputStream.close(); } catch (FileNotFoundException e) {  log.error(e); } catch (IOException e) {  log.error(e); }}

上述代码在没有任何exception的时候运行是没有问题的。但是当try块中的语句抛出异常或者自己实现的代码抛出异常,那么就不会执行最后的关闭语句,从而资源也无法释放。

合理的做法则是将所有清理的代码都放到finally块中或者使用try-with-resource语句。

public void closeResourceInFinally() { FileInputStream inputStream = null; try {  File file = new File("./tmp.txt");  inputStream = new FileInputStream(file);  // use the inputStream to read a file } catch (FileNotFoundException e) {  log.error(e); } finally {  if (inputStream != null) {   try {    inputStream.close();   } catch (IOException e) {    log.error(e);   }  } }}public void automaticallyCloseResource() { File file = new File("./tmp.txt"); try (FileInputStream inputStream = new FileInputStream(file);) {  // use the inputStream to read a file } catch (FileNotFoundException e) {  log.error(e); } catch (IOException e) {  log.error(e); }}

指定具体的异常

尽可能的使用最具体的异常来声明方法,这样才能使得代码更容易理解。

public void doNotDoThis() throws Exception { ...}public void doThis() throws NumberFormatException { ...}

如上,NumberFormatException字面上即可以看出是数字格式化错误。

对异常进行文档说明

当在方法上声明抛出异常时,也需要进行文档说明。和前面的一点一样,都是为了给调用者提供尽可能多的信息,从而可以更好地避免/处理异常。异常处理的 10 个最佳实践,这篇也推荐看下。

在Javadoc中加入throws声明,并且描述抛出异常的场景。

/** * This method does something extremely useful ... * * @param input * @throws MyBusinessException if ... happens */public void doSomething(String input) throws MyBusinessException { ...}

抛出异常的时候包含描述信息

在抛出异常时,需要尽可能精确地描述问题和相关信息,这样无论是打印到日志中还是监控工具中,都能够更容易被人阅读,从而可以更好地定位具体错误信息、错误的严重程度等。

但这里并不是说要对错误信息长篇大论,因为本来Exception的类名就能够反映错误的原因,因此只需要用一到两句话描述即可。

try { new Long("xyz");} catch (NumberFormatException e) { log.error(e);}

NumberFormatException即告诉了这个异常是格式化错误,异常的额外信息只需要提供这个错误字符串即可。当异常的名称不够明显的时候,则需要提供尽可能具体的错误信息。

首先捕获最具体的异常

现在很多IDE都能智能提示这个最佳实践,当你试图首先捕获最笼统的异常时,会提示不能达到的代码。当有多个catch块中,按照捕获顺序只有第一个匹配到的catch块才能执行。因此,如果先捕获IllegalArgumentException,那么则无法运行到对NumberFormatException的捕获。

public void catchMostSpecificExceptionFirst() { try {  doSomething("A message"); } catch (NumberFormatException e) {  log.error(e); } catch (IllegalArgumentException e) {  log.error(e) }}

不要捕获Throwable

Throwable是所有异常和错误的父类。你可以在catch语句中捕获,但是永远不要这么做。如果catch了throwable,那么不仅仅会捕获所有exception,还会捕获error。而error是表明无法恢复的jvm错误。因此除非绝对肯定能够处理或者被要求处理error,不要捕获throwable。

public void doNotCatchThrowable() { try {  // do something } catch (Throwable t) {  // don't do this! }}

不要忽略异常

很多时候,开发者很有自信不会抛出异常,因此写了一个catch块,但是没有做任何处理或者记录日志。

public void doNotIgnoreExceptions() { try {  // do something } catch (NumberFormatException e) {  // this will never happen }}

但现实是经常会出现无法预料的异常或者无法确定这里的代码未来是不是会改动(删除了阻止异常抛出的代码),而此时由于异常被捕获,使得无法拿到足够的错误信息来定位问题。合理的做法是至少要记录异常的信息。

public void logAnException() { try {  // do something } catch (NumberFormatException e) {  log.error("This should never happen: " + e); }}

不要记录并抛出异常

可以发现很多代码甚至类库中都会有捕获异常、记录日志并再次抛出的逻辑。如下:

try { new Long("xyz");} catch (NumberFormatException e) { log.error(e); throw e;}

这个处理逻辑看着是合理的。但这经常会给同一个异常输出多条日志。如下:

17:44:28,945 ERROR TestExceptionHandling:65 - java.lang.NumberFormatException: For input string: "xyz"Exception in thread "main" java.lang.NumberFormatException: For input string: "xyz"at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.lang.Long.parseLong(Long.java:589)at java.lang.Long.(Long.java:965)at com.stackify.example.TestExceptionHandling.logAndThrowException(TestExceptionHandling.java:63)at com.stackify.example.TestExceptionHandling.main(TestExceptionHandling.java:58)

如上所示,后面的日志也没有附加更有用的信息。如果想要提供更加有用的信息,
那么可以将异常包装为自定义异常。

public void wrapException(String input) throws MyBusinessException { try {  // do something } catch (NumberFormatException e) {  throw new MyBusinessException("A message that describes the error.", e); }}

因此,仅仅当想要处理异常时才去捕获,否则只需要在方法签名中声明让调用者去处理

包装异常时不要抛弃原始的异常

捕获标准异常并包装为自定义异常是一个很常见的做法。这样可以添加更为具体的异常信息并能够做针对的异常处理。

需要注意的是,包装异常时,一定要把原始的异常设置为cause(Exception有构造方法可以传入cause)。否则,丢失了原始的异常信息会让错误的分析变得困难。

public void wrapException(String input) throws MyBusinessException { try {  // do something } catch (NumberFormatException e) {  throw new MyBusinessException("A message that describes the error.", e); }}

总结

综上可知,当抛出或者捕获异常时,有很多不一样的东西需要考虑。其中的许多点都是为了提升代码的可阅读性或者api的可用性。

异常不仅仅是一个错误控制机制,也是一个沟通媒介,因此与你的协作者讨论这些最佳实践并制定一些规范能够让每个人都理解相关的通用概念并且能够按照同样的方式使用它们。

总结了一些2020年的面试题,这份面试题的包含的模块分为19个模块,分别是: Java基础、容器、多线程、反射、对象拷贝、JavaWeb异常、网络、设计模式、Spring/SpringMVC、SpringBoot/SpringCloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM。
获取以下资料,关注公众号:【有故事的程序员】。
记得点个关注+评论哦~









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

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

hunter:https://www.ikjzd.com/w/992

抢注商标:https://www.ikjzd.com/w/1053


在Java中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。来源id="在finally块中清理资源或者使用try-with-resource语句">在Finally块中清理资源或者使用try-with-resource语句当使用类似InputStream这种需要使用后关闭
史泰博:史泰博
beien:beien
2018亚马逊新增的这些规则可能影响你:2018亚马逊新增的这些规则可能影响你
(精品分析)亚马逊德国站拉杆箱类目市场调查数据报告:(精品分析)亚马逊德国站拉杆箱类目市场调查数据报告
MySales:MySales

2021-01-29

WPF PointAnimationUsingKeyFrames 动画

 点击链接加入群聊

 

想到昨天去健身房,我拿哑铃练肱二头肌,旁边有一女的

时不时的侧着脸来看我,还嘴角带着笑,妈的嘲笑我练的重量小吗,

我拿12kg在练,那女的拿个2.5kg在那举着玩,还好意思笑我?

 

前言 

前几天逛Gayhub看到一篇CSS 的动画,然后就想着用WPF实现。

下方是CSS中的效果:

描述下我实现中所走的弯路。

第一次实验:我新创建 Rectangle 然后其创建了一个装饰器 Adorner

然后在装饰器画了一个Pen ,像移动X轴  然后转换角度 接着走Y轴。事实给了我一记响亮的嘴巴。

Pen renderPen = new Pen(new SolidColorBrush(Colors.Red), 2.5); drawingContext.DrawLine(renderPen, new Point(0, 0), new Point(AdornedElement.RenderSize.Width / 10, 0)); var translateTransform = new TranslateTransform();   var rotateTransform = new RotateTransform();   var transformGroup = new TransformGroup();   transformGroup.Children.Add(translateTransform);   transformGroup.Children.Add(rotateTransform);   this.RenderTransformOrigin = new Point(0.5,0.5);   this.RenderTransform = transformGroup;   var doubleAnimationX = new DoubleAnimation   {    To = AdornedElement.RenderSize.Width - AdornedElement.RenderSize.Width / 10,    Duration = new Duration(TimeSpan.FromSeconds(2))   };   TranslateTransform t = transformGroup.Children[0] as TranslateTransform;   t.BeginAnimation(TranslateTransform.XProperty, doubleAnimationX);   var doubleAnimationAngle = new DoubleAnimation   {    To = 90,    Duration = new Duration(TimeSpan.FromSeconds(.1))   };   RotateTransform t2 = transformGroup.Children[1] as RotateTransform;   t2.BeginAnimation(RotateTransform.AngleProperty, doubleAnimationAngle);

View Code

上当时的效果图。

(⊙﹏⊙) 是不是就像探照灯一样。

我再次尝试画了一个圆设置Clip发现还是错误的。

开始上源码

尝试PointAnimationUsingKeyFrames发现可行o(* ̄▽ ̄*)ブ

<Window.Resources>  <Storyboard x:Key="Storyboard1" RepeatBehavior="Forever">   <PointAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Stroke).(LinearGradientBrush.StartPoint)"           Storyboard.TargetName="rectangle">    <EasingPointKeyFrame KeyTime="0:0:0.5" Value="0.855,0.148"/>    <EasingPointKeyFrame KeyTime="0:0:1" Value="0.852,0.855"/>    <EasingPointKeyFrame KeyTime="0:0:1.5" Value="0.148,0.855"/>    <EasingPointKeyFrame KeyTime="0:0:2" Value="0.144,0.149"/>    <EasingPointKeyFrame KeyTime="0:0:2.5" Value="0,0"/>       </PointAnimationUsingKeyFrames>   <PointAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Stroke).(LinearGradientBrush.EndPoint)"           Storyboard.TargetName="rectangle">    <EasingPointKeyFrame KeyTime="0:0:0.5" Value="0.145,0.852"/>    <EasingPointKeyFrame KeyTime="0:0:1" Value="0.148,0.145"/>    <EasingPointKeyFrame KeyTime="0:0:1.5" Value="0.852,0.145"/>    <EasingPointKeyFrame KeyTime="0:0:2" Value="0.856,0.851"/>    <EasingPointKeyFrame KeyTime="0:0:2.5" Value="0,1"/>       </PointAnimationUsingKeyFrames>  </Storyboard> </Window.Resources> <Window.Triggers>  <EventTrigger RoutedEvent="FrameworkElement.Loaded">   <BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>  </EventTrigger> </Window.Triggers> <Grid>  <Rectangle x:Name="rectangle" Width="200" Height="200"     HorizontalAlignment="Center" VerticalAlignment="Center"     StrokeThickness="3">   <Rectangle.Stroke>    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity=".6">     <GradientStop Color="Transparent" Offset="0"/>     <GradientStop Color="#FF025F20" Offset="1"/>    </LinearGradientBrush>   </Rectangle.Stroke>  </Rectangle> </Grid>

View Code

成品图:

如果大佬有更好的方式欢迎交流。

  点击链接加入群聊

blogs

Github









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

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

askme:https://www.ikjzd.com/w/2459

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


点击链接加入群聊想到昨天去健身房,我拿哑铃练肱二头肌,旁边有一女的时不时的侧着脸来看我,还嘴角带着笑,妈的嘲笑我练的重量小吗,我拿12kg在练,那女的拿个2.5kg在那举着玩,还好意思笑我?前言前几天逛Gayhub看到一篇CSS的动画,然后就想着用WPF实现。下方是CSS中的效果:描述下我实现中所走的弯路。第一次实验:我新创建Rectangle然后其创建了一个装饰器Adorner然后在装饰器画了一
大森林:大森林
new old stock:new old stock
护肤品怎么入驻速卖通?2020速卖通护肤品行业招商准入资质:护肤品怎么入驻速卖通?2020速卖通护肤品行业招商准入资质
2Checkout:2Checkout
速卖通不同层级的卖家旺季营销玩法:速卖通不同层级的卖家旺季营销玩法

1岁宝宝的辅食食谱有哪些 1岁宝宝该如何制作辅食好

核心提示:大约从宝宝6个月开始,身为父母就可以陆续地为宝宝逐渐添加辅食了,因为辅食的添加可以帮助宝宝吸收更多的营养,是可以帮助宝宝健康成长的。尤其是当宝宝长大到1岁左右,此时饮食方面也开始慢慢接近大人了,辅食的制作也开始变得多种多样了。

大约从宝宝6个月开始,身为父母就可以陆续地为宝宝逐渐添加辅食了,因为辅食的添加可以帮助宝宝吸收更多的营养,是可以帮助宝宝健康成长的。尤其是当宝宝长大到1岁左右,此时饮食方面也开始慢慢接近大人了,辅食的制作也开始变得多种多样了。那1岁宝宝的辅食食谱有哪些?1岁宝宝该如何制作辅食好?下面我们一起来详细了解一下!

1岁宝宝的辅食食谱有哪些?

(1)虾皮鸡蛋羹

说到1岁宝宝的辅食食谱有哪些这个问题,这道虾皮鸡蛋羹是非常适合的。准备好虾皮和土鸡蛋,将虾皮过筛清洗干净备用,然后鸡蛋液温水打均匀放入炖盅当中,接下来加入虾皮开始隔水大火蒸15分钟左右,蒸好的鸡蛋羹加点香油就可以。

这道虾皮鸡蛋羹不仅口感美味,同时当中含有优质的蛋白质、钙质等,对宝宝的健康成长是非常有帮助的。

(2)胡萝卜排骨山药粥

准备好排骨、胡萝卜和山药这三种材料,将所有的材料准备好以后,排骨焯水放入砂锅当中,然后大火烧开后传小火炖煮至软棉,接下来加入山药、胡萝卜在住闷煮15分钟左右,确保山药和胡萝卜都软烂了,最后加入少许食盐调味即可出锅了。

这道胡萝卜排骨山药粥的营养是非常丰富的,家长们可以在平时多给宝宝烹饪这道食谱。

(3)西兰花泥


1岁宝宝的辅食食谱有哪些?西兰花泥也是非常不错的。宝宝吃西兰花,可促进生长、维持牙齿及骨骼正常、保护视力、提高记忆力以及增强孩子免疫力,从而能有效预防感冒和坏血病的发生。一般在宝宝添加了辅食一两个月以后就可以把西兰花压成泥状喂食。


以上就是关于1岁宝宝的辅食食谱有哪些的相关内容介绍,其实1岁宝宝的辅食食谱还有很多,各位家长需要多花心思,多动手烹饪一些营养丰富又有趣的食谱来吸引宝宝,从小培养宝宝不挑食的好习惯,坚持下去宝宝一定能够健康成长的。


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

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

bap:https://www.ikjzd.com/w/1492

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


核心提示:大约从宝宝6个月开始,身为父母就可以陆续地为宝宝逐渐添加辅食了,因为辅食的添加可以帮助宝宝吸收更多的营养,是可以帮助宝宝健康成长的。尤其是当宝宝长大到1岁左右,此时饮食方面也开始慢慢接近大人了,辅食的制作也开始变得多种多样了。 大约从宝宝6个月开始,身为父母就可以陆续地为宝宝逐渐添加辅食了,因为辅食的添加可以帮助宝宝吸收更多的营养,是可以帮助宝宝健康成长的。尤其是当宝宝长大到1岁左右,此
logo免费制作:logo免费制作
landing:landing
运营干货:速卖通直播怎么推广引流?做好这三点很重要!:运营干货:速卖通直播怎么推广引流?做好这三点很重要!
如何通过SEO进行推广引流?(以区块链交易所竞品分析为例):如何通过SEO进行推广引流?(以区块链交易所竞品分析为例)
卖家精灵和keepa账号更新:卖家精灵和keepa账号更新

女性白带为什么发黄 女性白带发黄怎么办才好

核心提示:白带是女性阴道当中分泌出来的一种独有液体,正常来说是无色无味的,当然也有可能会呈现出乳白色。实际上白带的作用功效是非常多的,能够从侧面上反应出女性的身体健康状态,尤其是需要警惕白带发黄的问题。

白带是女性阴道当中分泌出来的一种独有液体,正常来说是无色无味的,当然也有可能会呈现出乳白色。实际上白带的作用功效是非常多的,能够从侧面上反应出女性的身体健康状态,尤其是需要警惕白带发黄的问题。那女性白带为什么发黄?女性白带发黄怎么办才好?下面我们一起来详细了解一下!

女性白带为什么发黄?

对于女性白带为什么发黄这个问题,毫无疑问正常的白带并不会出现颜色发黄的情况,针对白带发黄这样的问题,考虑与妇科炎症的发生有关,其中像霉菌性阴道炎、滴虫性阴道炎等,这些都属于妇科炎症的问题,也最容易会引发白带发黄的异常情况出现。由此可见,我们并不能单纯靠白带颜色异常者一种症状,就能够很好地判断出自身到底是出现了什么问题。

那女性白带发黄怎么办才好?

首先需要结合患者临床上是否有骚痒、白带有臭味等表现进行确诊,最好在医生的建议下行白带常规、B超等妇科检查,确认感染的病原菌后,再有针对性的用药进行治疗。千万不要在什么都还没有把握的情况下就盲目乱用药进行治疗,甚至还自信求助一些偏方来治疗,这样往往会影响治疗效果的同时,也有可能会引发一系列的风险损害发生。


与此同时女性在平时应做好个人生理卫生期间,尤其是应该注意性生活前后以及经期的卫生健康工作,勤清洗外阴;同时保持规律饮食,多吃些新鲜的蔬菜和水果,少吃辛辣刺激的食物对身体健康是非常有帮助的;最后还需要健康作息,以提高机体的免疫力及抵御病毒的能力。


以上就是关于白带是女性妇科健康的最重要的指标之一,如果发现白带的异常表现,应引起女性的重视,及时进行治疗,以防止炎症的扩散。总而言之无论任何情况下,都应该以自己的健康为大前提,切不可吊儿郎当随意应付。


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

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

心怡物流:https://www.ikjzd.com/w/1327

凹凸曼:https://www.ikjzd.com/w/1392


核心提示:白带是女性阴道当中分泌出来的一种独有液体,正常来说是无色无味的,当然也有可能会呈现出乳白色。实际上白带的作用功效是非常多的,能够从侧面上反应出女性的身体健康状态,尤其是需要警惕白带发黄的问题。 白带是女性阴道当中分泌出来的一种独有液体,正常来说是无色无味的,当然也有可能会呈现出乳白色。实际上白带的作用功效是非常多的,能够从侧面上反应出女性的身体健康状态,尤其是需要警惕白带发黄的问题。那女
家得宝:家得宝
bestbuy:bestbuy
全球跨境电子商务协会:全球跨境电子商务协会
净利率差距悬殊,2019各大跨境大卖哪个最赚钱? :净利率差距悬殊,2019各大跨境大卖哪个最赚钱?
口述:上床后 男上司夸我浑身带电:口述:上床后 男上司夸我浑身带电

黄绿色豆腐渣分泌物的原因有哪些

核心提示:大家都知道,对于女性来说,其生理构造是比较特殊的,因此往往比较容易会引起很多的妇科疾病,而当这时其白带会出现异常的情况,比如黄绿色豆腐渣分泌物在临床上就比较多见,但是大多数女性并不了解这是由于什么因素导致的,那么,黄绿色豆腐渣分泌物的原因有哪些呢?我们一起来看下面的介绍。

黄绿色豆腐渣分泌物的原因有哪些?大家都知道,对于女性来说,其生理构造是比较特殊的,因此往往比较容易会引起很多的妇科疾病,而当这时其白带会出现异常的情况,比如黄绿色豆腐渣分泌物在临床上就比较多见,但是大多数女性并不了解这是由于什么因素导致的,那么,黄绿色豆腐渣分泌物的原因有哪些呢?我们一起来看下面的介绍。

黄绿色豆腐渣分泌物的原因有哪些?引起黄绿色豆腐渣分泌物有以下几点原因:

1、脓性白带:如果女性朋友们发生自己的白带黄绿色有臭味、豆腐渣样,通常来说大多是由于滴虫性阴道炎或化脓性细菌感染引起的。黄绿色豆腐渣分泌物多见于滴虫性阴道炎,淋病、慢性宫颈炎、阴道异物等。

2、豆腐渣样白带:据临床研究表明,白带黄绿色豆腐渣样为霉菌性阴道炎特有,主要表现为白带发黄常伴有外阴瘙痒。如果女性朋友们得了细菌性阴道病,其最主要的临床表现就是阴道排液增多,有恶臭味,而且黄绿色豆腐渣分泌物可伴有轻度外阴瘙痒或烧灼感。

3、黄色白带:通常来说,如果女性朋友们出现白带黄绿色豆腐渣样,大多见于支原体、衣原体感染等疾病,而如果出现深黄色白带,往往是因为病变组织坏死或变性引起的,而如果出现白带黄绿色,那么有可能是由于子宫膜下肌瘤、子宫颈癌、子宫体癌、输卵管癌等疾病引起的。


4、血性白带:血性白带,其实就是白带内混有血液,如果女性朋友们发现自己出现这种白带黄绿色,这时要引起重视,应警惕患恶性肿瘤的可能,如宫颈癌、宫体癌等。但是也很多的良性病变也可出现白带黄绿色,临床常见的有宫颈息肉、粘膜下肌瘤、重度慢性宫颈炎等。

黄绿色豆腐渣分泌物的原因有哪些?由上面的介绍可以得知,黄绿色豆腐渣分泌物大多是由于妇科疾病引起的,因此当女性朋友发现自己出现这种现象时,一定要及时去正规医院院进行检查,找到真正的原因对症治疗,减少病情的发展时间,而且在日常生活中要做好护理工作,尤其要杜绝不洁性行为,注意私处卫生。


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

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

启明星:https://www.ikjzd.com/w/1436

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


核心提示:大家都知道,对于女性来说,其生理构造是比较特殊的,因此往往比较容易会引起很多的妇科疾病,而当这时其白带会出现异常的情况,比如黄绿色豆腐渣分泌物在临床上就比较多见,但是大多数女性并不了解这是由于什么因素导致的,那么,黄绿色豆腐渣分泌物的原因有哪些呢?我们一起来看下面的介绍。 黄绿色豆腐渣分泌物的原因有哪些?大家都知道,对于女性来说,其生理构造是比较特殊的,因此往往比较容易会引起很多的妇科疾
reverb:reverb
kk馆:kk馆
售后统计表格:售后统计表格
321电商早报326丨亚马逊卖家慌了,京东效仿"小红书":321电商早报326丨亚马逊卖家慌了,京东效仿"小红书"
姐姐妹妹们太会营业了,戴的配饰一秒入魂!:姐姐妹妹们太会营业了,戴的配饰一秒入魂!

睡觉能减肥吗?

核心提示:睡觉如果能够在正确的时间内进行,对减肥会有一定的帮助,但是睡觉并不能够起到主要的减肥作用,因为每天晚上10:00~12:00之间,是人体内新陈代谢最旺盛的时候,在这个时间段内,如果能够处于睡眠当中,可以使脂肪被代谢掉一部分,还能够使肠道内的宿便垃圾得到一定的清洁,但是睡觉代谢能够清除掉的油脂垃圾是非常有限的。

现在的人们为了减肥想出了很多奇奇怪怪的方案,有些人觉得喝水就能减肥,还有些人觉得睡觉也能减肥,这种情况让一些想要减肥的朋友不知道自己应该选择一些什么样的减肥方法,那么今天就来带大家了解一下到底睡觉能减肥吗?

睡觉如果能够在正确的时间内进行,对减肥会有一定的帮助,但是睡觉并不能够起到主要的减肥作用,因为每天晚上10:00~12:00之间,是人体内新陈代谢最旺盛的时候,在这个时间段内,如果能够处于睡眠当中,可以使脂肪被代谢掉一部分,还能够使肠道内的宿便垃圾得到一定的清洁,但是睡觉代谢能够清除掉的油脂垃圾是非常有限的。


想要起到明显的减肥作用,还要通过日常饮食调整和加强运动的方式,饮食调整,主要在饮食上要多吃一些新鲜的水果和蔬菜,在选择水果的时候,一定要选低糖水果,香蕉和榴莲之类的水果吃了之后也是容易引人发胖的,要吃猕猴桃,火龙果,雪莲果之类的低糖水果,蔬菜一定要记住用水煮,千万不要用油煎。

除了要在饮食上控制之外,还要做好运动调整,运动的时间每天都不应该低于30分钟,在运动期间要随着身体对运动强度的适应情况逐渐加量,运动可以选择的方式有很多,跑步,游泳,呼啦圈,跳绳以及健身操等方式都很不错,只要能够从中选择1~2种运动形式交替进行,减肥就会有很不错的效果。

现在相信大家都明白了,睡觉能减肥吗?希望所有的朋友都能对减肥的方法有一个正确的认知,平时还要记住调整好自己的作息,因为按时睡觉可以使减肥达到事半功倍的效果,如果通过这些方式减肥的效果还是不理想,那么可以选择一些医疗方法来进行减肥,例如吸脂手术,激光溶脂手术或者线雕手术,效果都很不错。


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

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

1号店网:https://www.ikjzd.com/w/2263

reverb:https://www.ikjzd.com/w/1273


核心提示:睡觉如果能够在正确的时间内进行,对减肥会有一定的帮助,但是睡觉并不能够起到主要的减肥作用,因为每天晚上10:00~12:00之间,是人体内新陈代谢最旺盛的时候,在这个时间段内,如果能够处于睡眠当中,可以使脂肪被代谢掉一部分,还能够使肠道内的宿便垃圾得到一定的清洁,但是睡觉代谢能够清除掉的油脂垃圾是非常有限的。 现在的人们为了减肥想出了很多奇奇怪怪的方案,有些人觉得喝水就能减肥,还有些人觉
活动树:活动树
亚马逊全球开店制造:亚马逊全球开店制造
如何做好EDM营销(二):教你如何制作邮件标题表情包以及邮箱签名:如何做好EDM营销(二):教你如何制作邮件标题表情包以及邮箱签名
tradeindia:tradeindia
亚马逊七大收款方式及优劣对比!:亚马逊七大收款方式及优劣对比!

如何增加肌肉

核心提示:现在的人们对于健康的重视度越来越高了,所以说在平时生活中总是想办法增强自身的免疫力与抵抗力,这样就少不了平时的锻炼,也可以增加身体的肌肉,会让人显的更加强壮,不过仍然有很多人并不知道如何增加自身的肌肉,那么如何增加肌肉呢?

现在的人们对于健康的重视度越来越高了,所以说在平时生活中总是想办法增强自身的免疫力与抵抗力,这样就少不了平时的锻炼,也可以增加身体的肌肉,会让人显的更加强壮,不过仍然有很多人并不知道如何增加自身的肌肉,那么如何增加肌肉呢?

如何增加肌肉

在平时生活中如果说想要增加肌肉含量的话,首先要注意自身的饮食控制,在饮食方面要适当的多吃一些高蛋白质以及高脂肪的食物,在日常生活中可以适量的吃些牛奶、蛋黄、瘦肉或者是深海鱼,在这些食物里面均含有了大量的蛋白质,并且在饮食方面,要尽量的注意,吃食物的时候,要适量的吃一些瘦肉,尤其是红肉以及动物肝脏,这些食物对于增加肌肉含量有着非常大的帮助。


还需要根据自身的情况,选择一些适合自己的一些体育锻炼项目,需要做到健身,才可以使肌肉的含量有所增加,在健身不好的情况下,很容易引起体质虚胖,无法增加肌肉的含量。一周的时间内进行两至三次的肌肉锻炼,健美计划一般情况下分为一周一次打击身体部位,说明需要很长时间才可以锻炼一定特定的肌肉群,一周只能举重三次,可以尝试下全身锻炼,一次锻炼中锻炼全身,一周打三次肌肉,每组肌肉执行两至三组。

另外还需要提前30分钟睡觉,恢复是肌肉生长的必要条件,没有什么更好的方法恢复,并不是简单的睡更多,每晚可以睡八至九个小时。保持良好的作息习惯,不但对增加肌肉有帮助,对身体健康也是有很多好处的。

如何增加肌肉呢?很多人都说想增加自身的肌肉,但是却始终没有找到正确的方法帮助自己增加肌肉,然而在生活中增加肌肉的方法有很多,并且也都是非常简单的,可以从饮食、运动锻炼以及睡觉等方面做起,在以上有相关介绍,希望能帮到大家。


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

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

easy buy:https://www.ikjzd.com/w/2162

xinong:https://www.ikjzd.com/w/1368


核心提示:现在的人们对于健康的重视度越来越高了,所以说在平时生活中总是想办法增强自身的免疫力与抵抗力,这样就少不了平时的锻炼,也可以增加身体的肌肉,会让人显的更加强壮,不过仍然有很多人并不知道如何增加自身的肌肉,那么如何增加肌肉呢? 现在的人们对于健康的重视度越来越高了,所以说在平时生活中总是想办法增强自身的免疫力与抵抗力,这样就少不了平时的锻炼,也可以增加身体的肌肉,会让人显的更加强壮,不过仍然
reverb:reverb
anker:anker
Lazada运营—如何利用生意参谋为搜索推广选品选词&案例分析:Lazada运营—如何利用生意参谋为搜索推广选品选词&案例分析
亚马逊智能化妆镜爆款供应商曝光!一年营收超5亿!:亚马逊智能化妆镜爆款供应商曝光!一年营收超5亿!
Wish: 复工后的明星产品,增长率4颗星!:Wish: 复工后的明星产品,增长率4颗星!

哑铃训练方法是怎样的

核心提示:哑铃是生活中很常见的一种健身器材,大家千万不要小看了这小小的哑铃,所起到的健身效果是非常理想的,因此越来越多的人喜欢使用哑铃进行锻炼了,不过对于初学者来讲,对于哑铃的锻炼方法并不是很了解,那么哑铃训练方法是怎样的呢?一起来了解下吧。

哑铃是生活中很常见的一种健身器材,大家千万不要小看了这小小的哑铃,所起到的健身效果是非常理想的,因此越来越多的人喜欢使用哑铃进行锻炼了,不过对于初学者来讲,对于哑铃的锻炼方法并不是很了解,那么哑铃训练方法是怎样的呢?一起来了解下吧。

哑铃训练方法是怎样的

1、上斜哑铃弯举:在斜板的板凳上面坐好,每一只手都要把哑铃握好,肘部要注意和身体保持接近,旋掌心向前,上臂固定好,呼气的时候,肱二头肌收缩并把哑铃抬起来,只有前臂在移动,并且继续运动,一直到二头肌全部收缩,并且哑铃达到了肩膀一样的高度,停滞收缩一秒的时间,把哑铃缓慢的举回到起始的地方同时吸气,这样的动作重复做即可。


2、上斜开肘肱二头肌弯举:在斜板的板凳子上面依靠好,每一只手各握住一只哑铃,哑铃在身体的两边自然悬挂,手掌向外,呼气的时候,往外弯举起重量,前臂和三角肌保持一条直线状态,继续弯举一直到哑铃和肩膀一样高和三角肌的两边,动作顶部要进行最高端收缩后,开始吸气,原路降到起始位置这样动作缓慢的重复。

3、上斜锤式弯举:在斜板的板凳子上面坐好,每一只手都要握住一只哑铃,脚蹬地,身体在斜板上面靠好,哑铃垂在身边,保持中立的握姿,通过弯曲的肘部启动动作,尝试上臂固定并保持,继续运动到顶部并停顿,之后缓慢的回到起始的地方。

哑铃训练方法是怎样的呢?虽然说提起哑铃之后,大家对此并不会感到陌生,但是对于哑铃的训练方法却没有过多的了解,其实哑铃的训练方法有很多种,具体的做法需要根据大家选择的项目不同而存在一定的差异,在以上的内容中介绍了上斜哑铃弯举、上斜开肘肱二头肌弯举以及上斜锤式弯举的训练方法,希望能帮到大家。


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

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

浩方:https://www.ikjzd.com/w/1046

cima:https://www.ikjzd.com/w/1372


核心提示:哑铃是生活中很常见的一种健身器材,大家千万不要小看了这小小的哑铃,所起到的健身效果是非常理想的,因此越来越多的人喜欢使用哑铃进行锻炼了,不过对于初学者来讲,对于哑铃的锻炼方法并不是很了解,那么哑铃训练方法是怎样的呢?一起来了解下吧。 哑铃是生活中很常见的一种健身器材,大家千万不要小看了这小小的哑铃,所起到的健身效果是非常理想的,因此越来越多的人喜欢使用哑铃进行锻炼了,不过对于初学者来讲,
转运四方:转运四方
丰趣海淘:丰趣海淘
情感口述:和暗恋男"叙旧"被老公搅局:情感口述:和暗恋男"叙旧"被老公搅局
少妇口述:第一次尝试换妻游戏的美妙感受:少妇口述:第一次尝试换妻游戏的美妙感受
【Shopee市场周报】虾皮巴西站2020年12月第2周市场周报:【Shopee市场周报】虾皮巴西站2020年12月第2周市场周报

大米属于粗粮还是细粮

核心提示:大米属于细粮,大米中含有多种氨基酸和矿物质,而且大米中也含有不低的蛋白质和脂肪还有碳水成分,所以想要减肥就应该少吃大米,不仅是大米,白面也是细粮的一种,大米和白面中的营养物质都是非常高的,其实正在长身体的小孩子可以适当多吃细粮。

在人的日常饮食当中所吃的食物种类比较多,大米是最为常见的一种,不过现在很多人都在提倡吃粗粮,所以有很多朋友都很想吃粗粮来改善一下自己的身体健康状态,这些朋友很想了解到底大米属于粗粮还是细粮?

大米属于细粮,大米中含有多种氨基酸和矿物质,而且大米中也含有不低的蛋白质和脂肪还有碳水成分,所以想要减肥就应该少吃大米,不仅是大米,白面也是细粮的一种,大米和白面中的营养物质都是非常高的,其实正在长身体的小孩子可以适当多吃细粮。


所谓细粮就是比较容易消化,口感也比较细腻的食物,粗粮对于刮肠油和提高消化功能,以及抑制脂肪被身体吸收都是有一定租用的,通常只有小米、高粱米、荞麦面还有玉米等食物,和豆类食物才是粗粮,这些食物吃了也可补充营养的,但是这些食物所含的脂肪和碳水相对较少,不会给身体代谢带来负担,也不会导致身材发胖,对于清除血管内的油脂垃圾还有一定的好处,所以现在一个样专家才会提倡人们吃粗粮。

对于徐亚减肥的人群来说,吃粗粮会起到一定的减肥辅助作用,但是不能起到主要减肥的作用,想要减肥成功,还要多运动,通过运动消耗和燃烧更多的皮下脂肪,才能使身材瘦下来,而且瘦下来之后身体的血液循环速度会变快,脏器的代谢功能也会变得更好。

看了上面的介绍,相信大家都明白了,大米属于粗粮还是细粮?希望所有的朋友都能对粗粮和细粮的定义有一个正确的认知,除了要在主食上吃一些粗粮之外,还需要在饮食上多添加新鲜的蔬菜,蔬菜中含有丰富的维生素C,这种营养物质对于促进脂肪在肠道内分解代谢有一定的帮助,还能在人的肠道中形成一个保护层,不让脂肪顺利的在肠道内被分解吸收。


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

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

sca:https://www.ikjzd.com/w/2424

沃尔玛:https://www.ikjzd.com/w/220


核心提示:大米属于细粮,大米中含有多种氨基酸和矿物质,而且大米中也含有不低的蛋白质和脂肪还有碳水成分,所以想要减肥就应该少吃大米,不仅是大米,白面也是细粮的一种,大米和白面中的营养物质都是非常高的,其实正在长身体的小孩子可以适当多吃细粮。 在人的日常饮食当中所吃的食物种类比较多,大米是最为常见的一种,不过现在很多人都在提倡吃粗粮,所以有很多朋友都很想吃粗粮来改善一下自己的身体健康状态,这些朋友很想
亚马逊全球开店制造:亚马逊全球开店制造
宝贝格子:宝贝格子
15节超实用跨境电商运营课:15节超实用跨境电商运营课
亚马逊将取消限制:不再要求卖家商品提供全网最低价!:亚马逊将取消限制:不再要求卖家商品提供全网最低价!
必收藏-亚马逊9大站点topreviewer邮箱 大全:必收藏-亚马逊9大站点topreviewer邮箱 大全

如何增加体重方法

核心提示:体重过胖想着减肥,体重过轻想着增肥,总是希望体重与身高成正比,过胖过瘦都不是大家想要的。目前多数人每天就想着要怎么减肥,甩掉身上多余脂肪,偏偏也有个别人真的是那种怎么吃都不胖,成天想方设法增肥的人。要如何增加体重方法?

体重过胖想着减肥,体重过轻想着增肥,总是希望体重与身高成正比,过胖过瘦都不是大家想要的。目前多数人每天就想着要怎么减肥,甩掉身上多余脂肪,偏偏也有个别人真的是那种怎么吃都不胖,成天想方设法增肥的人。要如何增加体重方法?

如何增加体重方法

不论是减重是加重,饮食一定是不可缺重要条件,减重时就少吃点高热量类食物,每天保持三餐饮食清淡,控制总摄热量。要是增肥就多吃高热量类食物,当然不能一下摄入过多,是身体肠胃可以承受的量即可,而且以少吃多餐的方式补充营养更容易被吸收,而且还能保证健康不被影响。

每天饮食安排注意营养均衡,主食没有什么限制,面食类、大米都能行,蔬菜、肉、水果类注意按正常比例安排。只要把蛋类、肉类、奶类平均安排,就是比较科学合理的增肥方式,一切食材要求适量,不要为了增肥出现暴饮暴食,反而会让人出现恶心呕吐等不适感,科学进食能保证健康不受影响前提条件下完成增肥计划。


在解决瘦弱身体状态时,最好还是先找到为什么吃不胖的诱因,一定是有原因才会导致这种结果,毕竟每天正常摄入食物,为什么有的人会长胖,而有的人就是一直吃不起来呢?可能是因为精神压力过于大,或者生活过于不规律,致使身材消瘦。不同诱因,在增肥时注意事项也不一样。

有部分身材偏瘦的人,肠胃吸收功能不太好,所以摄入食物后,营养并不能被吸收,也就不可能会长肉肉了,这个时候最好先通过药物调理肠胃功能,使其恢复正常,调理好后,再摄入食物才能被完全吸收。

如何增加体重方法?只要排队病理性因素,基本可以通过日常生活习惯进行改善。当然,身体消瘦诱因并不一定就是我们常说的易瘦体质,也可能是病理性消瘦,也就是受某些疾病影响导致身体无法变胖,比如肠道寄生虫、长期结核病、糖尿病、肿瘤、代谢性疾病,这些病变通通会让人体内脂肪大量流失,让整个人看上去格外消瘦,这种情况下想要增重,只能先将疾病治疗好才有机会增肥。


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

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

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

www.made-in-china.com:https://www.ikjzd.com/w/2777


核心提示:体重过胖想着减肥,体重过轻想着增肥,总是希望体重与身高成正比,过胖过瘦都不是大家想要的。目前多数人每天就想着要怎么减肥,甩掉身上多余脂肪,偏偏也有个别人真的是那种怎么吃都不胖,成天想方设法增肥的人。要如何增加体重方法? 体重过胖想着减肥,体重过轻想着增肥,总是希望体重与身高成正比,过胖过瘦都不是大家想要的。目前多数人每天就想着要怎么减肥,甩掉身上多余脂肪,偏偏也有个别人真的是那种怎么吃都
贝贝母婴网:贝贝母婴网
asinseed:asinseed
客户&竞争对手背景调查工具:客户&竞争对手背景调查工具
【亚马逊排名算法揭秘】搜索加购为什么能提升关键词排名? :【亚马逊排名算法揭秘】搜索加购为什么能提升关键词排名?
跨境电商如何发货 如何选择物流:跨境电商如何发货 如何选择物流

臀部两侧的赘肉怎么减

核心提示:通过做运动的方式,可以使臀部两侧的赘肉得到明显的减少,运动的方式可以采用侧卧抬腿,下蹲、呼啦圈以及平板支撑等,这些运动形式对于消除臀部两侧的赘肉和腰腹部的赘肉以及大腿部位的赘肉都会有很明显的效果,只要能够坚持每天都做运动,就能使臀部两侧赘肉在20天左右得到减少。

虽然对女性朋友来说臀部和胸部丰满一些会显得身材很好,但是臀部两侧如果赘肉太多,也会显得很臃肿,会显得身材不够好,所以当臀部两侧有赘肉的时候,一定要想办法将这些赘肉减掉,可是剪掉赘肉说起来容易,做起来却是很难的,那么今天来带大家了解一下臀部两侧的赘肉怎么减?

减掉臀部两侧赘肉方法一:做运动

通过做运动的方式,可以使臀部两侧的赘肉得到明显的减少,运动的方式可以采用侧卧抬腿,下蹲、呼啦圈以及平板支撑等,这些运动形式对于消除臀部两侧的赘肉和腰腹部的赘肉以及大腿部位的赘肉都会有很明显的效果,只要能够坚持每天都做运动,就能使臀部两侧赘肉在20天左右得到减少。

减掉臀部两侧赘肉方法二:吸脂手术

通过吸脂手术也可以将身体任何部位的皮下脂肪消除掉,吸脂手术利用的是仪器,通过仪器的作用将皮下脂肪吸出来,手术的切口并不大,属于微创类型,做这样的手术不会留下很大的伤痕,也不会留下明显的疤痕,只要能够在手术之后做好身体护理,不要吃刺激性的食物,不要做剧烈的运动,就能很快恢复健康。


减掉臀部两侧赘肉方法三:控制饮食

肢体中的赘肉形成都和饮食中摄入的热量过高有关,所以想要改善,一定要控制好自己的饮食,不要吃任何热量过高的食物,例如肥肉油炸食品和甜食,都要适当少吃,这样才能使皮下脂肪有所减少。

看了上面的介绍,相信大家都明白了臀部两侧的赘肉怎么减?希望所有的朋友都能找到适合自己的减肥方式,如果能够在平时将坐车改为步行,将乘坐电梯改为爬楼梯,就能改善腿部和臀部赘肉堆积的情况,如果能够将多运动和控制饮食相互结合,任何部位减肥都不会是很难的事情。


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

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

dojo:https://www.ikjzd.com/w/2052

1号店网:https://www.ikjzd.com/w/2263


核心提示:通过做运动的方式,可以使臀部两侧的赘肉得到明显的减少,运动的方式可以采用侧卧抬腿,下蹲、呼啦圈以及平板支撑等,这些运动形式对于消除臀部两侧的赘肉和腰腹部的赘肉以及大腿部位的赘肉都会有很明显的效果,只要能够坚持每天都做运动,就能使臀部两侧赘肉在20天左右得到减少。 虽然对女性朋友来说臀部和胸部丰满一些会显得身材很好,但是臀部两侧如果赘肉太多,也会显得很臃肿,会显得身材不够好,所以当臀部两侧
e票联:e票联
白色清关:白色清关
口述:男同事将我堵进厕所百般污辱同事公司厕所:口述:男同事将我堵进厕所百般污辱同事公司厕所
亚马逊推出FBA库存新功能!卖家有望申请仓储扩容!:亚马逊推出FBA库存新功能!卖家有望申请仓储扩容!
涉案货值超10亿!700万运费哪去了?30多家公司集体起诉某货代:涉案货值超10亿!700万运费哪去了?30多家公司集体起诉某货代

2025年印度在线杂货市场将达240亿美元!

RedSeer在周四发布的最新报告中称,2025年,印度整个电子杂货市场预计将达到240亿美元的GMV其中55%的份额将由优先考虑性价比的家庭可理解为中低收入家庭贡献。

 

印度国民人均收入水平低,中低收入人群占据人口总数的大部分,对印度家庭而言,负担能力是关键问题,因此性价比是他们考虑的首要因素,价格低廉的食品与杂货是他们的首选。

 

报告搜集的数据显示,优先考虑性价比印度家庭贡献了杂货零售市场61%的市场份额接近杂货市场三分之二的市场份额,是印度杂货市场的主要贡献者,在未来五年,印度性价比杂货电商市场预计将以53%的速度增长,快于整体在线杂货市场48%的复合年增长率。


当前,印度的杂货市场市场规模达5000亿美元,在疫情之前,印度多数家庭通常通过线下渠道购买杂货,而疫情封锁使得他们开始在电商网站与应用程序上购买日常生活必需品与其他杂货用品。

 

报告调研结果显示,印度传统杂货零售超过50%的部分是可以被线上平台代替的,杂货电商平台能够提供人们日常生活所需要的大部分商品,在线购买杂货商品可能成为未来的主流。


此外,印度政府还在大力推动国内的实体杂货店进行数字化转型,这也会推动印度在线杂货市场的快速增长。

 

印度在线杂货市场正处于飞速发展中,卖家可多多关注这一市场,尽管当下食品生鲜等产品是印度杂货电商平台最受欢迎的产品,但调查数据显示,个护产品、家庭卫生用品、家居用品等日常生活必需品与快消品的需求也在不断增长,卖家可从相关细分品类入手,攻入印度的杂货市场。





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

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

易佰:https://www.ikjzd.com/w/1482

topia:https://www.ikjzd.com/w/2741


RedSeer在周四发布的最新报告中称,到2025年,印度整个电子杂货市场预计将达到240亿美元的GMV,而其中55%的份额将由优先考虑性价比的家庭(可理解为中低收入家庭)贡献。印度国民人均收入水平低,中低收入人群占据人口总数的大部分,对印度家庭而言,负担能力是关键问题,因此性价比是他们考虑的首要因素,价格低廉的食品与杂货是他们的首选。报告搜集的数据显示,优先考虑性价比的印度家庭贡献了杂货零售市场
深诺互动:深诺互动
网上1号店:网上1号店
亚马逊美国返校季的数据报告 和消费者报告(一):亚马逊美国返校季的数据报告 和消费者报告(一)
所有卖家都可报名?符合条件即可参加eBay大促活动!:所有卖家都可报名?符合条件即可参加eBay大促活动!
码!最全亚马逊选品工具汇总!:码!最全亚马逊选品工具汇总!

Java异常处理(异常基本概念)

一:异常的基本概念

当我们的程序在运行中出现了不合理的地方则会出现异常,异 常就是终止程序运行的指令,当一行代码出现异常之后,那么后面的代码就不再继续执行,如果要让后面的代码继续需要将异常处理,异常处理有专门的语法实现,我们稍后会学习。

异常出现的原因可能有很多种,于是Java根据不同情况的异常提供了对应类型来表示异常,我们来看看常见的异常类型有哪些呢?在api文档中去观察(表示异常的英文单词是Exception)。

该异常叫做算术异常,比如说0除以一个整数的时候就会出现。

该异常表示的是数组下标越界异常,如果数组的下标是负数,或者是你给定的下标

大于或者等于了数组的长度时候就会出现该异常。

该异常是向下转型( 强制类型转换)可能出现的异常

当加载一个类的时候,如果该类不存在则出现该异常。

当我们根据属性名称去访问一个类的属性的时候,如果这个属性(变量)不存在则出现该异常(但是这里的访问不同于我们之前使用"类名.属性名"或者"对象名.属性名"的方式访问, 而是使用反射去访问)

当我们使用反射去访问一个类的方法的时候如果该方法不存在则出现该异常。

●当访问一个空对象的方法,或者属性的时候会出现

●访问一个空数组(不是里面没有数据的数组而是该数组还没创建)元素或者是下标时候会出现。

如果要将一个字符串转换成数字类型,假如字符串没有正确的格式,则出现该异常

总结:

1、异常的概念和重要,常见的异常你要知道,以后的学习或者是开发中是非常常见

2、你要记下上面讲解的异常类型,以及出现该异常的原因

 

详细的java系统视频免费学习地址

 

有完整的Java初级,高级对应的学习路线和资料!专注于java开发。分享java基础、原理性知识、JavaWeb实战、spring全家桶、设计模式、分布式及面试资料、开源项目,助力开发者成长!

欢迎关注微信公众号:码邦主 









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

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

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

雨果:https://www.ikjzd.com/w/1307


一:异常的基本概念当我们的程序在运行中出现了不合理的地方则会出现异常,异常就是终止程序运行的指令,当一行代码出现异常之后,那么后面的代码就不再继续执行,如果要让后面的代码继续需要将异常处理,异常处理有专门的语法实现,我们稍后会学习。异常出现的原因可能有很多种,于是Java根据不同情况的异常提供了对应类型来表示异常,我们来看看常见的异常类型有哪些呢?在api文档中去观察(表示异常的英文单词是Exce
锦桥纺织网:锦桥纺织网
usps:usps
紧急!旺季亚马逊卖家账户被暂停怎么办?4个简单技巧助你迅速恢复账户!:紧急!旺季亚马逊卖家账户被暂停怎么办?4个简单技巧助你迅速恢复账户!
CureFit:CureFit
亚马逊广告太难做,流量和转化好低怎么办?:亚马逊广告太难做,流量和转化好低怎么办?