2021-02-27

多佛恶魔是不是就是外星人的替身?

在大家的印象中就会认为,外星人一般会有着较大的眼睛,还会拥有一个椭圆形的脑袋,其实美国在上个世纪曾经发现一种未知的生物,这种未知的生物,和外星人的长相简直一模一样,她的身上没有毛发,被称之为多佛恶魔。人们也猜测,这会不会就是外星来的生物?

图片7.png 

    为什么人们会把它称之为多佛恶魔,是因为他有着像西瓜一样的脑袋,眼睛是湛蓝的,浑身上下都没有找到一丝毛发,可是他的外形却和外星人非常的相似,所以人们对此也会觉得比较好奇。在美国的一个小镇上,有三个年轻人行驶着汽车,但是他们突然就发现眼前出现一个怪物,他有着较大的眼睛,而且有一双大手和大脚,奇怪的是她浑身上下都没有一根毛发,人们都会觉得这是一件非常奇怪的事情。

 

    这三个年轻人的说法并没有得到大家的认可,人们可能认为这是一场恶作剧,但是后来也有许多的人发现了这种奇怪的生物,而且描述比较相似,都说没有毛发,有着一双会发光的眼睛,而且还拥有着大脑袋。所有的目击证人所说的话出奇的一致,显然这些人并没有歪曲事实,也许他们所看到的真的是这一种生物,由此可见,在这个世界上真的会有多佛恶魔,但是为什么会有这样的一种恶魔呢?有不少人都会认为很有可能这就是外星人




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

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

indiegogo:https://www.ikjzd.com/w/265

环球易购:https://www.ikjzd.com/w/1034


在大家的印象中就会认为,外星人一般会有着较大的眼睛,还会拥有一个椭圆形的脑袋,其实美国在上个世纪曾经发现一种未知的生物,这种未知的生物,和外星人的长相简直一模一样,她的身上没有毛发,被称之为多佛恶魔。人们也猜测,这会不会就是外星来的生物?为什么人们会把它称之为多佛恶魔,是因为他有着像西瓜一样的脑袋,眼睛是湛蓝的,浑身上下都没有找到一丝毛发,可是他的外形却和外星人非常的相似,所以人们对此也会觉得比较
慧聪商务网:https://www.ikjzd.com/w/1836
tradekey:https://www.ikjzd.com/w/1630
bsci:https://www.ikjzd.com/w/2339
史上最最疯狂的年终亚马逊旺季战役打响,用好广告锦囊,Q4收割一整年KPI!:https://www.ikjzd.com/home/132122
跨境电商:亚马逊店铺出现这10种情况,恭喜你可以找亚马逊索赔了:https://www.ikjzd.com/home/113669
注意:卖家忽略eBay图片政策或将影响搜索引擎可见性!:https://www.ikjzd.com/home/16416

中科院:发现新生肝细胞来源,为肝脏疾病治疗提供新路径|肝脏

  央广网上海2月27日消息(记者周洪)据中央广播电视总台中国之声《新闻晚高峰》报道,肝脏是人体内重要的代谢器官,它的主要功能细胞是肝细胞。肝脏一旦受损,需要"新生"肝细胞才能完成功能修复。所以肝脏疾病治疗中,寻找新生肝细胞的来源是科学家致力解决的问题。

  那么,肝脏的哪个区域肝细胞新生能力最强?科学家们还还没有找到准确答案。北京时间26日凌晨,国际顶级学术期刊《科学》发表的最新成果显示,我国科学家利用新技术发现了新生肝细胞来源,为肝脏疾病治疗提供新路径。

图片来源:中新网图片来源:中新网

  中科院分子细胞科学卓越创新中心周斌研究员说,以往检测肝细胞增殖的方法就像照相机,只能拍摄到一个瞬间情况,加上肝细胞新生速度远远低于其他细胞,获取有价值的增殖信息难上加难。"以往的研究有一个共同的局限性,在追踪肝细胞的增殖或扩增时,只盯住某一个区域,就像盲人摸象,只研究事物的局部而非整体。"

  周斌研究组开发的新技术ProTracer,则像一种能够捕捉细胞增殖的录像机,既可以在长时间内不间断地追踪细胞增殖,又可以精准定位,追踪某一特定细胞类群的细胞增殖,让黑夜中只有被锁定目标的"星群"发光,而不是在满天繁星中找寻其中的一两颗。"它可以让我们在活体中看到细胞增殖动态变化过程;另外,因为所有能够发出荧光的信号都局限在肝细胞中,不被其他信号干扰,这极大提高了(检测)信噪比和分辨率。"周斌介绍。

  利用这项技术,团队在小鼠实验中发现,新生肝细胞主要来源于肝小叶中间区域的肝细胞,为肝脏疾病的治疗提供了新的理论基础。周斌以新药研制为例:"比如我们在做心脏里面心肌细胞的增殖(检测时),如果一个药厂开发了一个药物,在体外很容易看到它促细胞增殖,但是你要证明一个药物在体内促细胞增殖,非常难。这是我们这个领域内的难点,如果有这项技术帮你更好地看清这个药物是否有效,在这个程度上讲,它非常有帮助。"

  更让生物化学家、李林院士称道的是,这项技术为其他不同组织器官细胞增殖检测提供了更优的"科学工具",有望推动发育生物学、肿瘤学、神经科学和再生医学等众多领域的基础研究和应用研究。他说:"生命科学的一些全新发现有赖于重要的技术方法的出现,我想,科学界广泛应用这项技术,可以发现过去可能藏在水面下的冰山,推动科学发展的进程。"

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

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

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

trademanager:https://www.ikjzd.com/w/730


央广网上海2月27日消息(记者周洪)据中央广播电视总台中国之声《新闻晚高峰》报道,肝脏是人体内重要的代谢器官,它的主要功能细胞是肝细胞。肝脏一旦受损,需要"新生"肝细胞才能完成功能修复。所以肝脏疾病治疗中,寻找新生肝细胞的来源是科学家致力解决的问题。  那么,肝脏的哪个区域肝细胞新生能力最强?科学家们还还没有找到准确答案。北京时间26日凌晨,国际顶级学术期刊《科学》发表的最新成果显示,我国科学家利
塔图:https://www.ikjzd.com/w/2274
Zozo:https://www.ikjzd.com/w/2180
zozotown:https://www.ikjzd.com/w/2180
春节回家期间,亚马逊店铺无人打理怎么办?:https://www.ikjzd.com/home/15634
运费节省56%还送prime标?带你了解亚马逊物流轻小商品计划:https://www.ikjzd.com/home/122567
【供应商资源】------床上用品 床单A:https://www.ikjzd.com/home/15410

詹皇攻守全能回击外界看衰 准三双之外送出4断3帽_比赛

原标题:詹皇攻守全能回击外界看衰 准三双之外送出4断3帽

北京时间2月27日,2020-21赛季NBA常规赛继续进行,洛杉矶湖人坐镇主场迎战波特兰开拓者。全场打完,湖人102-93逆转击败开拓者,止住4连败。

此役,勒布朗-詹姆斯发挥全能,他拿到28分11篮板7助攻4抢断3封盖,带队逆转开拓者,同时止住了紫金军的4连胜。

4连败过后,湖人的赛季征程遇到了前所未有的麻烦,虽然,在面对媒体时,无论主帅沃格尔,还是勒布朗-詹姆斯,都在努力克制焦虑的情绪。

可现实中,当浓眉哥持续伤停,湖人完全依仗36岁的詹姆斯扛鼎,比赛难度确实可想而知。

唯一幸运的是,湖人在经历了客场的辛苦旅行后,这个夜晚回到了斯台普斯中心。但比赛开场后,几乎与上场球相同,紫金军很快又陷入了被动中。

比赛只打了3分钟,开拓者就掀起高潮,利拉德三分入网,客队12-2开局。原本,詹姆斯希望先通过传球,努力贯通球队的进攻,但开场就大比分落后,逼着皇帝只能开启单挑模式,一次远距离跳投为湖人止血。

接下来的比赛,湖人一直在苦苦追赶,詹姆斯在命中跳投后,接下来大部分时间的攻击性并不算强。直到次节初段,他才又找回攻击灵感。期间,詹皇造犯规罚球入网,三分球和上篮也连续命中。随着皇帝上篮再中,他连拿9分,成功将湖人从落后的陷阱中解救了出来。

次节后段,开拓者掀起新高潮,但在对攻中,詹姆斯没有退缩,他三分再中,后仰跳投也进,半场拿到18分。显然,詹皇是要用个人攻击为比赛定下个基调,至少上半场,他传球喂饼的次数并不多。

詹姆斯的发力,的确提振了湖人全队的士气。易边再战后,在詹皇身边,其他队员突然一个个站了不来,而詹皇的分球也终于有了用武之地。先是小加索尔接到詹皇妙传,射中三分球,还完成暴扣,接着,外线的波普、卡鲁索也成为詹皇传球的受益者。

在组织之余,詹姆斯也随时保持机动性,一旦队友的传球到位,他的空接炸筐也进的干脆。更难能可贵的是,在进攻之余,詹皇在防守端的投入度也非常高,仅仅三节球,他已入账4抢断3封盖。

而湖人在被压制了两节多后,三节末段逐渐将比分反超了。末节,开拓者奋力追赶,但湖人拿出了卫冕冠军的老道经验。虽然,开拓者一直在尝试迫近比分,但詹皇没有给他们机会,他的上篮和翻身跳投彻底将悬念杀死。

当近期,外界质疑逐渐增多的时候,詹姆斯用自己的强硬输出,将连败,也将各种流言蜚语成功止住。(波洛)返回搜狐,查看更多

责任编辑:

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

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

f2c:https://www.ikjzd.com/w/1242

淘粉8:https://www.ikjzd.com/w/1725


原标题:詹皇攻守全能回击外界看衰准三双之外送出4断3帽北京时间2月27日,2020-21赛季NBA常规赛继续进行,洛杉矶湖人坐镇主场迎战波特兰开拓者。全场打完,湖人102-93逆转击败开拓者,止住4连败。此役,勒布朗-詹姆斯发挥全能,他拿到28分11篮板7助攻4抢断3封盖,带队逆转开拓者,同时止住了紫金军的4连胜。4连败过后,湖人的赛季征程遇到了前所未有的麻烦,虽然,在面对媒体时,无论主帅沃格尔,
淘粉:https://www.ikjzd.com/w/1725
writer:https://www.ikjzd.com/w/1280
bsci 认证:https://www.ikjzd.com/w/2339
亚马逊投影仪竞品分析 - 如何找到下一个行业趋势:https://www.ikjzd.com/home/96232
亚马逊日销1000刀运营日志,资源共享,有需要可以拿走啊!:https://www.ikjzd.com/tl/60024
口述:婚前 和暗恋我10年的男人爱爱:http://lady.shaoqun.com/m/a/12533.html

Java | zuul 1.x 是如何实现请求转发的

zuul 1.x 是如何实现请求转发的

文档写的再好,也不如源码写的好
源码地址:
GitHub: https://github.com/Netflix/zuul
Gitee: https://gitee.com/github_mirror_plus/zuul


目录
  • 简介
  • 实现逻辑
  • 源码
    • 基于 Servlet 的请求转发
    • ZuulServlet 核心代码
    • ZuulRunner 核心代码
    • RequestContext 核心代码
    • FilterProcessor 核心代码
    • 在官方示例中,提供了两个简单的 Route 的 ZuulFilter 实现
  • 总结
  • 参考


简介

官方简介,其实你要看这篇,说明你知道 zuul

Zuul is an edge service that provides dynamic routing, monitoring, resiliency, security, and more. Please view the wiki for usage, information, HOWTO, etc https://github.com/Netflix/zuul/wiki

Here are some links to help you learn more about the Zuul Project. Feel free to PR to add any other info, presentations, etc.

实现逻辑

上一篇文章 Go | Go 结合 Consul 实现动态反向代理 里面简单的实现了一个反向代理,并简述了一下步骤,这里复述一下

根据代理的描述一共分成几个步骤:

  1. 代理接收到客户端的请求,复制了原来的请求对象
  2. 根据一些规则,修改新请求的请求指向
  3. 把新请求发送到根据服务器端,并接收到服务器端返回的响应
  4. 将上一步的响应根据需求处理一下,然后返回给客户端

源码

注意:这里的源码指的是 1.x 分支的代码

基于 Servlet 的请求转发

在一开始学习 Java Web 时,Servlet 是一个绕不过去的坎,zuul 也是基于 Servlet 实现的,在源码

<?

在这里需要重点关注下 com.netflix.zuul.http.ZuulServletcom.netflix.zuul.context.ContextLifecycleFilter

ZuulServlet 核心代码

代码在 com.netflix.zuul.http.ZuulServlet

下面的代码中省略了一部分,在这个过程中主要做了以下几件事

  1. 将 将原始的 Request,Response 保存在 ThreadLocal 中,方便以后处理。因为 Tomcat 等 Servlet 容器默认使用了一个请求一个线程处理的方式,所以存在 ThreadLocal 即可在以后的处理流程中方便处理
  2. 执行前置过滤器 preRoute()
  3. 执行转发中过滤器 route()
  4. 执行后置过滤器 postRoute()

其中转发的关键就在 route() 方法

public class ZuulServlet extends HttpServlet { private ZuulRunner zuulRunner; @Override public void service(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse) throws ServletException, IOException {  try {   // 这一步是将原始的 Request,Response 保存在 ThreadLocal 中   init((HttpServletRequest) servletRequest, (HttpServletResponse) servletResponse);   RequestContext context = RequestContext.getCurrentContext();   context.setZuulEngineRan();   try {    // 前置处理    preRoute();   } catch (ZuulException e) {    error(e);    postRoute();    return;   }   try {    // 转发中处理    route();   } catch (ZuulException e) {    error(e);    postRoute();    return;   }   try {    // 后置处理    postRoute();   } catch (ZuulException e) {    // 异常处理    error(e);    return;   }  } catch (Throwable e) {   error(new ZuulException(e, 500, "UNHANDLED_EXCEPTION_" + e.getClass().getName()));  } finally {   RequestContext.getCurrentContext().unset();  } } void postRoute() throws ZuulException {  zuulRunner.postRoute(); } void route() throws ZuulException {  zuulRunner.route(); } void preRoute() throws ZuulException {  zuulRunner.preRoute(); } void init(HttpServletRequest servletRequest, HttpServletResponse servletResponse) {  zuulRunner.init(servletRequest, servletResponse); } void error(ZuulException e) {  RequestContext.getCurrentContext().setThrowable(e);  zuulRunner.error(); }}

ZuulRunner 核心代码

从上面的代码可以看出转发的关键在于 ZuulServlet#route(), 而 ZuulServlet#route() 在于 zuulRunner.route()

ZuulRunner 主要功能

  1. init 将 Request 和 Response 保存到 RequestContext.getCurrentContext(), 这里面就是上面提到的 ThreadLocal 的处理类
  2. 调用下 FilterProcessor.getInstance().route()
public class ZuulRunner { private boolean bufferRequests; public ZuulRunner() {  this.bufferRequests = true; } public ZuulRunner(boolean bufferRequests) {  this.bufferRequests = bufferRequests; } public void init(HttpServletRequest servletRequest, HttpServletResponse servletResponse) {  RequestContext ctx = RequestContext.getCurrentContext();  if (bufferRequests) {   ctx.setRequest(new HttpServletRequestWrapper(servletRequest));  } else {   ctx.setRequest(servletRequest);  }  ctx.setResponse(new HttpServletResponseWrapper(servletResponse)); } public void route() throws ZuulException {  FilterProcessor.getInstance().route(); }}

RequestContext 核心代码

主要是 ThreadLocal 和 copy

public class RequestContext extends ConcurrentHashMap<String, Object> { private static final Logger LOG = LoggerFactory.getLogger(RequestContext.class); protected static Class<? extends RequestContext> contextClass = RequestContext.class; private static RequestContext testContext = null; protected static final ThreadLocal<? extends RequestContext> threadLocal = new ThreadLocal<RequestContext>() {  @Override  protected RequestContext initialValue() {   try {    return contextClass.newInstance();   } catch (Throwable e) {    throw new RuntimeException(e);   }  } }; /**  * sets the "responseBody" value as a String. This is the response sent back to the client.  *  * @param body  */ public void setResponseBody(String body) {  set("responseBody", body); } /**  * Use this instead of response.setStatusCode()  *  * @param nStatusCode  */ public void setResponseStatusCode(int nStatusCode) {  getResponse().setStatus(nStatusCode);  set("responseStatusCode", nStatusCode); } /**  * Mkaes a copy of the RequestContext. This is used for debugging.  *  * @return  */ public RequestContext copy() {  RequestContext copy = new RequestContext();  // 这里省略了一部分代码,意思就是把原来的 request 深度复制一份  return copy; }}

FilterProcessor 核心代码

主要逻辑就是找到对应 type 的 List<ZuulFilter> 并执行 runFilter()

public class FilterProcessor { static FilterProcessor INSTANCE = new FilterProcessor(); /**  * @return the singleton FilterProcessor  */ public static FilterProcessor getInstance() {  return INSTANCE; } /**  * Runs all "route" filters. These filters route calls to an origin.  *  * @throws ZuulException if an exception occurs.  */ public void route() throws ZuulException {  try {   runFilters("route");  } catch (ZuulException e) {   throw e;  } catch (Throwable e) {   throw new ZuulException(e, 500, "UNCAUGHT_EXCEPTION_IN_ROUTE_FILTER_" + e.getClass().getName());  } } /**  * runs all filters of the filterType sType/ Use this method within filters to run custom filters by type  *  * @param sType the filterType.  * @return  * @throws Throwable throws up an arbitrary exception  */ public Object runFilters(String sType) throws Throwable {  if (RequestContext.getCurrentContext().debugRouting()) {   Debug.addRoutingDebug("Invoking {" + sType + "} type filters");  }  boolean bResult = false;  List<ZuulFilter> list = FilterLoader.getInstance().getFiltersByType(sType);  if (list != null) {   for (int i = 0; i < list.size(); i++) {    ZuulFilter zuulFilter = list.get(i);    Object result = processZuulFilter(zuulFilter);    if (result != null && result instanceof Boolean) {     bResult |= ((Boolean) result);    }   }  }  return bResult; } /**  * Processes an individual ZuulFilter. This method adds Debug information. Any uncaught Thowables are caught by this method and converted to a ZuulException with a 500 status code.  *  * @param filter  * @return the return value for that filter  * @throws ZuulException  */ public Object processZuulFilter(ZuulFilter filter) throws ZuulException {  RequestContext ctx = RequestContext.getCurrentContext();  boolean bDebug = ctx.debugRouting();  final String metricPrefix = "zuul.filter-";  long execTime = 0;  String filterName = "";  try {   long ltime = System.currentTimeMillis();   filterName = filter.getClass().getSimpleName();      RequestContext copy = null;   Object o = null;   Throwable t = null;   if (bDebug) {    Debug.addRoutingDebug("Filter " + filter.filterType() + " " + filter.filterOrder() + " " + filterName);    copy = ctx.copy();   }      ZuulFilterResult result = filter.runFilter();   ExecutionStatus s = result.getStatus();   execTime = System.currentTimeMillis() - ltime;   switch (s) {    case FAILED:     t = result.getException();     ctx.addFilterExecutionSummary(filterName, ExecutionStatus.FAILED.name(), execTime);     break;    case SUCCESS:     o = result.getResult();     ctx.addFilterExecutionSummary(filterName, ExecutionStatus.SUCCESS.name(), execTime);     if (bDebug) {      Debug.addRoutingDebug("Filter {" + filterName + " TYPE:" + filter.filterType() + " ORDER:" + filter.filterOrder() + "} Execution time = " + execTime + "ms");      Debug.compareContextState(filterName, copy);     }     break;    default:     break;   }      if (t != null) throw t;   usageNotifier.notify(filter, s);   return o;  } catch (Throwable e) {   if (bDebug) {    Debug.addRoutingDebug("Running Filter failed " + filterName + " type:" + filter.filterType() + " order:" + filter.filterOrder() + " " + e.getMessage());   }   usageNotifier.notify(filter, ExecutionStatus.FAILED);   if (e instanceof ZuulException) {    throw (ZuulException) e;   } else {    ZuulException ex = new ZuulException(e, "Filter threw Exception", 500, filter.filterType() + ":" + filterName);    ctx.addFilterExecutionSummary(filterName, ExecutionStatus.FAILED.name(), execTime);    throw ex;   }  } } /**  * Publishes a counter metric for each filter on each use.  */ public static class BasicFilterUsageNotifier implements FilterUsageNotifier {  private static final String METRIC_PREFIX = "zuul.filter-";  @Override  public void notify(ZuulFilter filter, ExecutionStatus status) {   DynamicCounter.increment(METRIC_PREFIX + filter.getClass().getSimpleName(), "status", status.name(), "filtertype", filter.filterType());  } }}

通过上面的代码中,可以看到得到简单的流程图

zuul

在官方示例中,提供了两个简单的 Route 的 ZuulFilter 实现

SimpleHostRoutingFilter.groovy

在这个示例中,在 Filter 实现中将请求复制并转发到目标服务,这个是简单的逻辑

class SimpleHostRoutingFilter extends ZuulFilter { 	// 声明这个过滤器是 route 类型 @Override String filterType() {  return 'route' } 	// 过滤器的执行逻辑 Object run() {  HttpServletRequest request = RequestContext.getCurrentContext().getRequest();  Header[] headers = buildZuulRequestHeaders(request)  String verb = getVerb(request);  InputStream requestEntity = request.getInputStream();  CloseableHttpClient httpclient = CLIENT.get()  String uri = request.getRequestURI()  if (RequestContext.getCurrentContext().requestURI != null) {   uri = RequestContext.getCurrentContext().requestURI  }  try {   	// 将请求转发到指定服务器   HttpResponse response = forward(httpclient, verb, uri, request, headers, requestEntity)   setResponse(response)  } catch (Exception e) {   throw e;  }  return null } HttpResponse forward(CloseableHttpClient httpclient, String verb, String uri, HttpServletRequest request, Header[] headers, InputStream requestEntity) {  requestEntity = debug(verb, uri, request, headers, requestEntity)  HttpHost httpHost = getHttpHost()  HttpRequest httpRequest;  switch (verb) {   case 'POST':    httpRequest = new HttpPost(uri + getQueryString())    InputStreamEntity entity = new InputStreamEntity(requestEntity, request.getContentLength())    httpRequest.setEntity(entity)    break   case 'PUT':    httpRequest = new HttpPut(uri + getQueryString())    InputStreamEntity entity = new InputStreamEntity(requestEntity, request.getContentLength())    httpRequest.setEntity(entity)    break;   default:    httpRequest = new BasicHttpRequest(verb, uri + getQueryString())  }  try {   httpRequest.setHeaders(headers)   return forwardRequest(httpclient, httpHost, httpRequest)  } finally {   //httpclient.close();  } } HttpResponse forwardRequest(HttpClient httpclient, HttpHost httpHost, HttpRequest httpRequest) {  return httpclient.execute(httpHost, httpRequest); }}

ZuulNFRequest 结合 Netflix 的 route 过滤器

这个示例中,从 HttpClient 转发改为了使用 RibbonCommand 转发,从而使用了 Ribbon 的功能。关于 Ribbon 以后有时间再说

class ZuulNFRequest extends ZuulFilter { @Override String filterType() {  return 'route' } boolean shouldFilter() {  return NFRequestContext.currentContext.getRouteHost() == null && RequestContext.currentContext.sendZuulResponse() } Object run() {  NFRequestContext context = NFRequestContext.currentContext  HttpServletRequest request = context.getRequest();  MultivaluedMap<String, String> headers = buildZuulRequestHeaders(request)  MultivaluedMap<String, String> params = buildZuulRequestQueryParams(request)  Verb verb = getVerb(request);  Object requestEntity = getRequestBody(request)  IClient restClient = ClientFactory.getNamedClient(context.getRouteVIP());  String uri = request.getRequestURI()  if (context.requestURI != null) {   uri = context.requestURI  }  //remove double slashes  uri = uri.replace("//", "/")  HttpResponse response = forward(restClient, verb, uri, headers, params, requestEntity)  setResponse(response)  return response } def HttpResponse forward(RestClient restClient, Verb verb, uri, MultivaluedMap<String, String> headers, MultivaluedMap<String, String> params, InputStream requestEntity) {  debug(restClient, verb, uri, headers, params, requestEntity)//  restClient.apacheHttpClient.params.setVirtualHost(headers.getFirst("host"))  String route = NFRequestContext.getCurrentContext().route  if (route == null) {   String path = RequestContext.currentContext.requestURI   if (path == null) {    path = RequestContext.currentContext.getRequest() getRequestURI()   }   route = "route" //todo get better name  }  route = route.replace("/", "_")  RibbonCommand<AbstractLoadBalancerAwareClient<HttpRequest, HttpResponse>> command = new RibbonCommand<>(restClient, verb, uri, headers, params, requestEntity);  try {   HttpResponse response = command.execute();   return response  } catch (HystrixRuntimeException e) {   if (e?.fallbackException?.cause instanceof ClientException) {    ClientException ex = e.fallbackException.cause as ClientException    throw new ZuulException(ex, "Forwarding error", 500, ex.getErrorType().toString())   }   throw new ZuulException(e, "Forwarding error", 500, e.failureType.toString())  } }}

总结

从 zuul 实现中看,还是基于 Servlet 的,并在过程中加入 前、中、后和异常处理链。因为基于 Servlet 其处理流程是阻塞的,性能会有所下降。

在 zuul 里面采用了 java 和 groovy 混合编程的方式,编程更加灵活。通过自定了一个 GroovyCompiler 来加载指定路径的 groovy 文件来实现在运行中动态添加 ZuulFilter 这种动态机制在一定程度上实现了热更新 ZuulFilter 功能,也是值得学习的。

参考

GitHub: https://github.com/Netflix/zuul

白色兔子公众号图片









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

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

dhl:https://www.ikjzd.com/w/516

国际标准书号:https://www.ikjzd.com/w/174


zuul1.x是如何实现请求转发的文档写的再好,也不如源码写的好源码地址:GitHub:https://github.com/Netflix/zuulGitee:https://gitee.com/github_mirror_plus/zuul目录简介实现逻辑源码基于Servlet的请求转发ZuulServlet核心代码ZuulRunner核心代码RequestContext核心代码FilterP
败欧洲网站:https://www.ikjzd.com/w/1555
浩方:https://www.ikjzd.com/w/1046
亿恩:https://www.ikjzd.com/w/1461
每日资讯:Parler起诉亚马逊停止为其提供网络托管服务系非法行为!亚马逊发布新产品 支持企业个性化直播:https://www.ikjzd.com/home/140401
亚马逊黑五旺季引流成功后,买家该如何提高转化率?:https://www.ikjzd.com/home/111886
口述:上司和我暧昧6年都没碰过我男人上司女人:http://lady.shaoqun.com/m/a/30874.html

刊登信息有多重要?少填这一项将无限期自动下架

近段时间,陆陆续续有卖家在群里反映自己的商品被下架了,不清楚原因,也不知道怎么回事,现在,它终于破!案!啦!

 

就在昨天,有卖家在群里甩下一张图,并表示自己的listing被下架之后去找人交涉,得到了这样的回复:

 

eBay UPC.png

 

不过,就算平台那边已经告知了原因,这位卖家还是带着截图回到了群里找各位同行交流:"这是什么?""没有UPC,无限期自动下架?!"

 

一图激起千层浪,众位卖家纷纷现身,其中也不乏在eBay从事多年的老卖家:"会的,我最近也被下架了好几个……"还有新手小白在群里卖萌发问:"UPC是什么意思?"

 

UPC实际上就是通用商品码的意思,英文全称是Universal Product Code,就是我们经常看到的黑白条纹的条纹码,由美国统一代码委员会制定,最早主要在美国和加拿大地区流通,目前已经在国际贸易中通行。因为使用范围广,UPC码还拥有万能条形码的美誉。

 

在亚马逊上,大多数商品都是要求有商品编码才能发布的,创建和匹配商品页面所需的特定GTIN(全球贸易项目代码)因商品分类而异,其中最常见的就是UPC码。

 

eBay的卖家则都需要拥有UPC码才可以上传发布产品。使用这些商品标识符可以让对产品感兴趣的消费者更容易找到商品,也可以帮助eBay防止伪造和重复listing,而缺少商品标识符的商品将不会被eBay继续展示,根据eBay客服的说法,如果没有填写UPC,就无法更新成功,最后就会导致自然下架。

 

有经验的卖家表示,这个UPC码已经要求两年了,最好还是都填写一下,否则把爆款商品下架了可就亏大了。

 

事实上使用正规的UPC码的确十分有必要,保存好UPC码,不重复使用UPC码,都是为了让自己能够安全运营,产品信息不冲突,让产品更有保障。一般来说,卖家的产品有多少个SKU,就需要多少UPC码,同一个SKU,在不同站点也可以使用相同的UPC码。对于UPC码,卖家们一定要认真对待,否则会影响产品上架

 

在这里也建议各位卖家要么自己申请UPC码,要么通过正规的渠道购买,同时还要小心照看好自己的UPC码,一定要避免UPC码泄露,因为UPC码通常来说只能使用一次,在某种程度上代表着该产品的唯一性,如果不小心重复使用,可能会导致系统识别不准而讲两条Listing合并,产品信息有可能出现交叉和混乱。





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

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

打折网站:https://www.ikjzd.com/w/74

达方物流:https://www.ikjzd.com/w/2562


近段时间,陆陆续续有卖家在群里反映自己的商品被下架了,不清楚原因,也不知道怎么回事,现在,它终于破!案!啦!就在昨天,有卖家在群里甩下一张图,并表示自己的listing被下架之后去找人交涉,得到了这样的回复:不过,就算平台那边已经告知了原因,这位卖家还是带着截图回到了群里找各位同行交流:"这是什么?""没有UPC,无限期自动下架?!"一图激起千层浪,众位卖家纷纷现身,其中也不乏在eBay从事多年的
一淘比价网:https://www.ikjzd.com/w/1698
patents:https://www.ikjzd.com/w/857
mav:https://www.ikjzd.com/w/2414
姐姐妹妹们太会营业了,戴的配饰一秒入魂!:http://fashion.shaoqun.com/a/279267.html
(精品分析)亚马逊美国站宠物粪便铲类目市场调查数据报告:https://www.ikjzd.com/home/108028
卖家自检:亚马逊上假货的一般特征:https://www.ikjzd.com/home/20175

汇率持续跌破!原材料集体涨价!卖家暴走...

如果说2020年是坎坷的一年,2021年必定是充满机遇的一年。

盼星星盼月亮,终于盼来了工厂开工,可是也盼来了汇率持续跌破、原材料集体涨价的坏消息....

汇率持续跌破,卖家因费率暴走

今年开年以来,美元对人民币汇率中间价从1月1日的6.52750跌至2月18日的6.4536,此后则在6.4516到6.4624区间震荡。2月26日,中国外汇交易中心公布人民币对美元汇率中间价报6.4713。

为了过个好年,一些卖家于春节前最后一个工作日——2月10日进行了提现操作,而当日的汇率创下开年新低:6.4391,而更让人崩溃的是提现手续费。有卖家表示:

感觉一整年都在为手续费和汇率打工,再加上成本渐涨,过年一算,根本没赚什么!

汇率持续走低,对于卖家来说,选择一款安全、实惠的支付服务就变得越来越重要。

据了解,中信银行于2020年1月推出信银致汇产品,费率0.2%,实时到账。透明实时汇率,0汇损!现在注册享前三个月0费率。相比市场上大部分支付机构,银行背景费率更低,到账更快,资金更加安全。点击👉这里注册

同时注册使用6个月以上,还可获得纯线上的贷款服务,贷款金额高至1000万元,利率低至4.35%。

注册地址:http://go.citicbank.com/888

开年第一波原材料涨价潮来袭

近日,受"供应短缺"因素影响,铜、铁、铝、塑料等原材料价格持续高涨。

由于全球大型炼油厂集体关闭,化工原料几乎全线飙涨……影响行业涉及家具、家电、电子、纺织、轮胎等等!

这次涨价对于小卖家来说又是一次巨大的挑战。处于行业头部的企业,因为用量大,对于原材料的价格基本都会有一定时间的锁定,原材料厂家也会有一定的涨价条件或者时间窗口。

而小卖因资金实力弱、进货量小等原因,与原材料厂家的议价能力较弱,成本价格只能一涨再涨。

成本上涨但却不能涨价,这种时候选择一个安全、实惠的收款服务才尤为重要,中信银行—信银致汇产品,费率0.2%,实时到账。相比市场上大部分支付机构,银行背景费率更低,到账更快,资金更加安全。

长按识别二维码即可注册↑

只需要轻松注册→实名认证→绑定店铺。即可享受90天的0手续费!

极致、安全、惠普

全流程资金监控

信银致汇是中信银行与境外银行合作的跨境电商收款产品。采用全封闭资金链路,即资金和信息闭环,卖家绑定在跨境电商平台的收款账户是中信银行境外伞形账户。

境外收到资金后卖家即可发起提现,进一步缩短收款流程并减少参与机构,做到安全性高、时效性强的兼顾。

什么是伞形结构实时资金清算体系?

据了解,该体系指的是中信银行在境外银行开立账户,下挂子账户分配给卖家收款使用,卖家子账户收到跨境电商平台资金后,资金归集至中信银行账户,不经过任何境内外第三方支付公司,保证资金安全。

相对其他跨境电商收款机构,信银致汇具备手续费费率低,安全性高,无汇损,综合金融服务等多方面显著优势,解决了长期以来困扰出口电商卖家的诸多痛点难点问题


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

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

tm商标:https://www.ikjzd.com/w/1069

paipaiwang:https://www.ikjzd.com/w/2205

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

汇率持续跌破!原材料集体涨价!卖家暴走...

如果说2020年是坎坷的一年,2021年必定是充满机遇的一年。 盼星星盼月亮,终于盼来了工厂开工,可是也盼来了汇率持续跌破、原材料集体涨价的坏消息....

2021-02-26

LinkedIn-DataHub专题: 初识DataHub

本文仅从普及角度让大家对元数据中心系统及其DataHub有个初步了解。DataHub部署、实战、更深入的技术剖析会单独给出

介绍

DataHub是由LinkedIn的数据团队开源的一款提供元数据搜索与发现的工具,在数据资产越来越重视的当下,探索数据治理解决方案,以满足不断增长的大数据复杂生态系统需求。
在这之前我们有必要先了解下整个大环境及其发展历程。

为什么需要元数据管理系统

随着企业的发展,不同的业务场景产生了不同形式的海量技术、业务数据。如何提取出有用的数据来帮助解决特定场景、发现潜在价值成为数据科学家的核心难题之一。业界通过元数据来提高数据科学家的生产力,一种描述数据的数据。(元数据概念请自行了解)不同的用例通常都会有自己特殊的元数据定义及其关系,最常见的如用户元数据、报表元数据、关系元数据。我们需要一套完备的系统帮助专业人员收集、组织、访问和丰富元数据,以支持数据发现和管理(俗称:数据治理,在数据资产化下数据治理尤为重要)。而如何设计一套行之有效的系统,更方便、快速的丰富、查询、使用元数据成为各大企业探索的目标。(国外更多的称呼该系统为 元数据中心\元数据目录)


简单点说,你想要一份数据,如果通过一个人就能拿到,那可能就不需要该系统;但往往在大公司里,这些数据散落在不同系统、存储、地域,你甚至不知道有什么数据,找谁拿,而元数据中心系统就可以帮助你快速准确定位到想要的数据,同时还能知道谁在使用、谁创建的、数据依赖,什么时候数据从A变成B等等。

元数据中心系统发展历程

本文档编写时,元数据中心系统架构经历了三代演变。在该领域内Lyft's Amundsen、DataHub处于领先者,Amundsen是社区最活跃的,DataHub也越来越被关注。

更详细的架构演进请跳转此文:LinkedIn-DataHub专题: 元数据中心系统架构演进

image.png

第三代架构确保我们能够以最具伸缩性和灵活性的方式集成、存储和处理元数据。本文的主角DataHub就是基于三代架构进行构建,市面上具有三代架构特性的还有Apache Atlas,Egeria,Uber Databook(非开源)。Atlas与Hadoop生态系统紧密耦合,最活跃的Amundsen现已可以与Atlas做整合;Egeria支持事件,但功能还不完整;Databook与DataHub较接近,但不开源。DataHub经历了WhereHows(第二代)的过渡,也存在内部版本(开源版版本与内部版本区别看这),在LinkedIn内部被广泛使用,每天处理超过千万实体和关系的变更事件,总计索引超过500万个实体和关系,毫秒级查询,用户体验也获得了极大的改进。不难看出LinkedIn的野心:推进DataHub成为数据资产的基础设施进程。

初探DataHub

DataHub功能清单(20210219)

最新功能清单以官方在线版为准: https://github.com/linkedin/datahub/blob/master/docs/features.md

开源版的数据结构仅支持Datasets、People;数据集支持:Hive、Kafka、RDBMS(如果需要额外的数据集,需编程式定义);存储源支持Oracle、Postgres、MySQL、H2等主流RDBMS 、Elasticsearch和Neo4j。除了以下列的这些,还有部分功能也在规划中,比如仪表盘、指标信息、元数据结构变更记录、数据抓取任务执行记录等等。

数据集集合

  • [x] 搜索:全文高级搜索,搜索排名
  • [x] 浏览可配置的浏览层次结构
  • [x] Schema:表格和JSON格式的表文档结构
  • [x] 粗粒度血缘:支持数据集级别的上下游血缘图形可视化
  • [x] Ownership:呈现数据集的所有者,查看您拥有的数据集
  • [x] 数据集生命周期管理
  • [x] 数据共享:支持向任何数据集添加自由格式文档
  • [ ] 细粒度血缘:支持字段级别
  • [ ] 喜欢、关注、书签
  • [ ] Compliance management:field level tag based compliance editing
  • [ ] Top 榜:数据集使用频次、或用户使用频次榜单

用户

  • [x] 搜索:全文高级搜索,搜索排名
  • [x] 个人资料编辑:如摘要、技能
  • [ ] 浏览:browsing through a configurable hierarchy

DataHub (& GMA)架构

DatahHub采用前后端分离+微服务/容器架构,但其完整的技术栈给我们带来了一定的挑战。(头大,会的越多越不会了)

  • 前端:Ember + TypeScript + ES9 + ES.Next + Yarn + ESLint
  • 服务端:Play Framework(web框架) + Spring + Rest.li(restful框架)+ Pegasus(数据建模语言) + Apache Samza (流处理框架)
  • 基础设施:elastic search(5.6) + Mysql + neo4j + kafka
  • 构建工具:Gradlew + Docker + Docker compose

image.png
DataHub 组成

  • datahub-gms (Generalized Metadata Store) : 元数据存储服务
  • datahub-gma (Generalized Metadata Architecture) : 通用元数据体系结构

GMA是datahub的基础设施,提供标准化的元数据模型和访问层

  • datahub-frontend : 应用前端
  • datahub-mxe 元数据事件
    • datahub-mce-consumer (MetadataChangeEvent):元数据变更事件,由平台或爬虫程序发起,写入到GMS
    • datahub-mae-consumer (MetadataAuditEvent): 元数据审计事件,只有被成功处理的MCE才会产生相应的MAE,由GMS发起 ,写入到es&Neo4j

一个完整DataHub应用所需部署的组件清单
image.png

DataHub web应用截图

前端提供三种类型的交互:(1)搜索,(2)浏览,(3)查看/编辑元数据。
以下是一些实际应用的截图。
v2-139d4719c96146cfb3c56cef5ac3d1ec_r.jpg

元数据建模

DataHub选择了Pegasus对元数据建模。由于Pegasus没有提供模型关系或关联的明确方法,因此引入了一些自定义扩展来支持这些用例。
image.png
以上图实体关系团来说,包含了三种类型实体:用户、组、数据集;同时也包含了三种关系:OwnedBy,HasMember和HasAdmin。与传统的ERD不同,我们将实体和关系的属性分别直接放在圆圈内和关系名称下面,以便将新类型的组件(称为"元数据方面")附加到实体。不同的团队可以拥有和发展同一实体元数据的不同方面,而不会相互干扰,从而实现分布式元数据建模要求。三种类型的元数据方面:所有权,配置文件和成员资格在上面的示例中呈现为绿色矩形。虚线表示元数据方面与实体的关联。例如,配置文件可以与用户相关联,且所有权可以与数据集等相关联。
每个实体,关系和"元数据方面"都是单独的Pegasus文件(PDSC/PDL),User(PDL文件)实体和OwnedBy(PDL文件)关系分别如下(DataHub内部维护了两种文件类型 pdl和avsc (json格式),看官方说明,内部建模都会改成pdl,而网络传输(MCE)则用avsc格式):

关于PDSC/PDL, AVSC相关的请看该文档:https://linkedin.github.io/rest.li/pdl_schema

image.png
image.png
以OwnerBy为例,编译完会生成以下两个文件OwnerBy.avsc、OwnerBy.java:

{ "type" : "record", "name" : "OwnedBy", "namespace" : "com.linkedin.metadata.relationship", "doc" : "A generic model for the Owned-By relationship", "fields" : [ { "name" : "source", "type" : "string", "doc" : "Urn for the source of the relationship", "java" : {  "class" : "com.linkedin.common.urn.Urn" } }, { "name" : "destination", "type" : "string", "doc" : "Urn for the destination of the relationship", "java" : {  "class" : "com.linkedin.common.urn.Urn" } }, { "name" : "type", "type" : {  "type" : "enum",  "name" : "OwnershipType",  "namespace" : "com.linkedin.common",  "doc" : "Owner category or owner role",  "symbols" : [ "DEVELOPER", "DATAOWNER", "DELEGATE", "PRODUCER", "CONSUMER", "STAKEHOLDER" ],  "symbolDocs" : {  "CONSUMER" : "A person, group, or service that consumes the data",  "DATAOWNER" : "A person or group that is owning the data",  "DELEGATE" : "A person or a group that overseas the operation, e.g. a DBA or SRE.",  "DEVELOPER" : "A person or group that is in charge of developing the code",  "PRODUCER" : "A person, group, or service that produces/generates the data",  "STAKEHOLDER" : "A person or a group that has direct business interest"  } }, "doc" : "The type of the ownership" } ], "pairings" : [ { "destination" : "com.linkedin.common.urn.CorpuserUrn", "source" : "com.linkedin.common.urn.DatasetUrn" }, { "destination" : "com.linkedin.common.urn.CorpuserUrn", "source" : "com.linkedin.common.urn.DataProcessUrn" } ]}
package com.linkedin.metadata.relationship;/** * A generic model for the Owned-By relationship * */@Generated(value = "com.linkedin.pegasus.generator.JavaCodeUtil", comments = "Rest.li Data Template. Generated from metadata-models/src/main/pegasus/com/linkedin/metadata/relationship/OwnedBy.pdl.")public class OwnedBy extends RecordTemplate{ private final static OwnedBy.Fields _fields = new OwnedBy.Fields(); private final static RecordDataSchema SCHEMA = ((RecordDataSchema) DataTemplateUtil.parseSchema("namespace com.linkedin.metadata.relationship/**A generic model for the Owned-By relationship*/@pairings=[{\"destination\":\"com.linkedin.common.urn.CorpuserUrn\",\"source\":\"com.linkedin.common.urn.DatasetUrn\"},{\"destination\":\"com.linkedin.common.urn.CorpuserUrn\",\"source\":\"com.linkedin.common.urn.DataProcessUrn\"}]record OwnedBy includes/**Common fields that apply to all relationships*/record BaseRelationship{/**Urn for the source of the relationship*/source:{namespace com.linkedin.common@java.class=\"com.linkedin.common.urn.Urn\"typeref Urn=string}/**Urn for the destination of the relationship*/destination:com.linkedin.common.Urn}{/**The type of the ownership*/type:{namespace com.linkedin.common/**Owner category or owner role*/enum OwnershipType{/**A person or group that is in charge of developing the code*/DEVELOPER/**A person or group that is owning the data*/DATAOWNER/**A person or a group that overseas the operation, e.g. a DBA or SRE.*/DELEGATE/**A person, group, or service that produces/generates the data*/PRODUCER/**A person, group, or service that consumes the data*/CONSUMER/**A person or a group that has direct business interest*/STAKEHOLDER}}}", SchemaFormatType.PDL)); private final static RecordDataSchema.Field FIELD_Source = SCHEMA.getField("source"); private final static RecordDataSchema.Field FIELD_Destination = SCHEMA.getField("destination"); private final static RecordDataSchema.Field FIELD_Type = SCHEMA.getField("type"); static {  Custom.initializeCustomClass(com.linkedin.common.urn.Urn.class); } public OwnedBy() {  super(new DataMap(4, 0.75F), SCHEMA); } public OwnedBy(DataMap data) {  super(data, SCHEMA); } public static OwnedBy.Fields fields() {  return _fields; } /**  * Existence checker for source  *  * @see OwnedBy.Fields#source  */ public boolean hasSource() {  return contains(FIELD_Source); } /**  * Remover for source  *  * @see OwnedBy.Fields#source  */ public void removeSource() {  remove(FIELD_Source); } /**  * Getter for source  *  * @see OwnedBy.Fields#source  */ public com.linkedin.common.urn.Urn getSource(GetMode mode) {  return obtainCustomType(FIELD_Source, com.linkedin.common.urn.Urn.class, mode); } /**  * Getter for source  *  * @return  *  Required field. Could be null for partial record.  * @see OwnedBy.Fields#source  */ @Nonnull public com.linkedin.common.urn.Urn getSource() {  return obtainCustomType(FIELD_Source, com.linkedin.common.urn.Urn.class, GetMode.STRICT); } /**  * Setter for source  *  * @see OwnedBy.Fields#source  */ public OwnedBy setSource(com.linkedin.common.urn.Urn value, SetMode mode) {  putCustomType(FIELD_Source, com.linkedin.common.urn.Urn.class, String.class, value, mode);  return this; } /**  * Setter for source  *  * @param value  *  Must not be null. For more control, use setters with mode instead.  * @see OwnedBy.Fields#source  */ public OwnedBy setSource(  @Nonnull  com.linkedin.common.urn.Urn value) {  putCustomType(FIELD_Source, com.linkedin.common.urn.Urn.class, String.class, value, SetMode.DISALLOW_NULL);  return this; } /**  * Existence checker for destination  *  * @see OwnedBy.Fields#destination  */ public boolean hasDestination() {  return contains(FIELD_Destination); } /**  * Remover for destination  *  * @see OwnedBy.Fields#destination  */ public void removeDestination() {  remove(FIELD_Destination); } /**  * Getter for destination  *  * @see OwnedBy.Fields#destination  */ public com.linkedin.common.urn.Urn getDestination(GetMode mode) {  return obtainCustomType(FIELD_Destination, com.linkedin.common.urn.Urn.class, mode); } /**  * Getter for destination  *  * @return  *  Required field. Could be null for partial record.  * @see OwnedBy.Fields#destination  */ @Nonnull public com.linkedin.common.urn.Urn getDestination() {  return obtainCustomType(FIELD_Destination, com.linkedin.common.urn.Urn.class, GetMode.STRICT); } /**  * Setter for destination  *  * @see OwnedBy.Fields#destination  */ public OwnedBy setDestination(com.linkedin.common.urn.Urn value, SetMode mode) {  putCustomType(FIELD_Destination, com.linkedin.common.urn.Urn.class, String.class, value, mode);  return this; } /**  * Setter for destination  *  * @param value  *  Must not be null. For more control, use setters with mode instead.  * @see OwnedBy.Fields#destination  */ public OwnedBy setDestination(  @Nonnull  com.linkedin.common.urn.Urn value) {  putCustomType(FIELD_Destination, com.linkedin.common.urn.Urn.class, String.class, value, SetMode.DISALLOW_NULL);  return this; } /**  * Existence checker for type  *  * @see OwnedBy.Fields#type  */ public boolean hasType() {  return contains(FIELD_Type); } /**  * Remover for type  *  * @see OwnedBy.Fields#type  */ public void removeType() {  remove(FIELD_Type); } /**  * Getter for type  *  * @see OwnedBy.Fields#type  */ public OwnershipType getType(GetMode mode) {  return obtainDirect(FIELD_Type, OwnershipType.class, mode); } /**  * Getter for type  *  * @return  *  Required field. Could be null for partial record.  * @see OwnedBy.Fields#type  */ @Nonnull public OwnershipType getType() {  return obtainDirect(FIELD_Type, OwnershipType.class, GetMode.STRICT); } /**  * Setter for type  *  * @see OwnedBy.Fields#type  */ public OwnedBy setType(OwnershipType value, SetMode mode) {  putDirect(FIELD_Type, OwnershipType.class, String.class, value, mode);  return this; } /**  * Setter for type  *  * @param value  *  Must not be null. For more control, use setters with mode instead.  * @see OwnedBy.Fields#type  */ public OwnedBy setType(  @Nonnull  OwnershipType value) {  putDirect(FIELD_Type, OwnershipType.class, String.class, value, SetMode.DISALLOW_NULL);  return this; } @Override public OwnedBy clone()  throws CloneNotSupportedException {  return ((OwnedBy) super.clone()); } @Override public OwnedBy copy()  throws CloneNotSupportedException {  return ((OwnedBy) super.copy()); } public static class Fields  extends PathSpec {  public Fields(List<String> path, String name) {   super(path, name);  }  public Fields() {   super();  }  /**   * Urn for the source of the relationship   *   */  public PathSpec source() {   return new PathSpec(getPathComponents(), "source");  }  /**   * Urn for the destination of the relationship   *   */  public PathSpec destination() {   return new PathSpec(getPathComponents(), "destination");  }  /**   * The type of the ownership   *   */  public PathSpec type() {   return new PathSpec(getPathComponents(), "type");  } }}

可以看下如果要新增一个元模型/实体要怎么操作。特别提下,URN类似于唯一标识/类型,数据建模相关后面会单开一篇来讲,暂不展开。
image.png

数据接入

DataHub提供两种数据接入方式:API调用或Kafka流。
DataHub的API基于Rest.li,Rest.li使用的是Pegasus作为接口定义,因此可以复用元数据模型。Kafka方式接收MCE,传输的格式为Avro(json格式),由Pegasus自动生成。由Apache Samza作为流处理框架,将Avro数据格式转换回Pegasus,并调用相应API。
image.png

数据服务&索引

DataHub支持四中常见查询:1、面向文档的查询;2、面向图形的查询;3、支持连接的复杂查询;4、全文检索
DataHub底层采用多级存储,以适配以上检索场景。并抽象出DAO层,以满足上层无感知调用。

image.png

结论

可以看出DataHub在元数据中心领域所做的努力,不但其架构的迭代、扩展性,以及未来将引入的新功能。希望将LinkedIn内部在元数据中心建设的经验分享并输出成业界通用的解决方案,借助LinkedIn内部和社区的发展,在未来还真有望成为下一代数据资产的基础设施。只是对国内来说,小众化的技术组件和不多的实践文档让企业决策者和开发者望而却步。但其先进的理念和架构,还是值得大家研究借鉴。

参考文献

[1] Open sourcing DataHub: LinkedIn's metadata search and discovery platform
[2] DataHub: Popular metadata architectures explained
[3] A Dive Into Metadata Hubs
[4] 数据治理篇-元数据: datahub概述
[5] DataPipeline丨LinkedIn元数据之旅的最新进展—Data Hub 【译】









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

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

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

一淘比价网:https://www.ikjzd.com/w/1698


本文仅从普及角度让大家对元数据中心系统及其DataHub有个初步了解。DataHub部署、实战、更深入的技术剖析会单独给出介绍DataHub是由LinkedIn的数据团队开源的一款提供元数据搜索与发现的工具,在数据资产越来越重视的当下,探索数据治理解决方案,以满足不断增长的大数据复杂生态系统需求。在这之前我们有必要先了解下整个大环境及其发展历程。为什么需要元数据管理系统随着企业的发展,不同的业务场
reddit:https://www.ikjzd.com/w/180
epc:https://www.ikjzd.com/w/488
网上1号店:https://www.ikjzd.com/w/2263
德国海关应对英国脱欧的安排!:https://www.ikjzd.com/home/20602
不让你坐在奔驰机盖上哭,2019最火热的亚马逊无货源店群模式介绍:https://www.ikjzd.com/home/22914
亚马逊小白开店快速进阶5大步骤:https://www.ikjzd.com/home/90810

在线购物增长22.6%!韩国家电和奢侈品需求上升

2月25日,韩国政府发布的一份报告显示,疫情期间在线购物旺盛,再加上春节的到来,1月份韩国在线购物增长了22.6%,而大型超市等实体商店的销售额却最多减少了11%。

 

于非面对面消费的普及和人们通过网络在线订购春节礼品的需要,继去年之后在线销售持续呈现增加趋势。

 

从各商品类别的销售额来看,家电文化产品的销售额分别为37.5%21.9%,海外名品牌的销售额大幅上升。这可以解释为,比起购买节日用品,购买名牌或更换家电产品的需求较大。

 

另一方面,线下购物连续第三个月下滑,减少的原因是疫情期间韩国限制了卖场营业时间,再加上寒流的原因和春节的到来,导致民众外部活动减少,社会距离拉大。

 

线下商店受到了最大的冲击,大卖场下降了11.7%,百货商店也下降了6.3%,乐天玛特等大型商店的销售额也下降了3.3%。受此影响,线下销售的比例从上一年的58.0%下降到51.5%。

 

另外,在便利店,香烟等其他商品也增加了2.4%相反,演出和旅游商品等服务和其他商品的销售额则减少14.2%。

 

据悉,现在韩国政府一直加强隔离措施,以遏制病毒传播。由于新年假期民众聚会增加,社区感染病例增加,预料疫情将出现反弹,防疫部门26日将公布防疫响应机制调整方案。

 

另一方面,首批阿斯利康疫苗已经运抵韩国,26日开始接种工作。

 

目前韩国疫情仍旧无法很好地被控制,而接下来的连续旺季,卖家需要抓紧备货,接下来的跨境物流形势,只会越来越复杂,卖家需要全面备战,做好营销推广,合理安排物流等等,争取逆风翻盘!

 

 





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

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

淘粉吧官网:https://www.ikjzd.com/w/1725.html

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


2月25日,韩国政府发布的一份报告显示,疫情期间在线购物旺盛,再加上春节的到来,1月份韩国在线购物增长了22.6%,而大型超市等实体商店的销售额却最多减少了11%。由于非面对面消费的普及和人们通过网络在线订购春节礼品的需要,继去年之后在线销售持续呈现增加趋势。从各商品类别的销售额来看,家电和文化产品的销售额分别为37.5%和21.9%,海外知名品牌的销售额大幅上升。这可以解释为,比起购买节日用品,
1号团:https://www.ikjzd.com/w/2263
rfq:https://www.ikjzd.com/w/251
海维:https://www.ikjzd.com/w/1891
亚马逊小白课堂:怎样提升listing在Amazon中的搜索排名:https://www.ikjzd.com/home/18391
请查收!亚马逊2020年发展复盘:https://www.ikjzd.com/home/138040
什么是新外贸?中国新外贸B2B的机会与前景!:https://www.ikjzd.com/home/18004

在线购物增长22.6%!韩国家电和奢侈品需求上升

2月25日,韩国政府发布的一份报告显示,疫情期间在线购物旺盛,再加上春节的到来,1月份韩国在线购物增长了22.6%,而大型超市等实体商店的销售额却最多减少了11%。

 

于非面对面消费的普及和人们通过网络在线订购春节礼品的需要,继去年之后在线销售持续呈现增加趋势。

 

从各商品类别的销售额来看,家电文化产品的销售额分别为37.5%21.9%,海外名品牌的销售额大幅上升。这可以解释为,比起购买节日用品,购买名牌或更换家电产品的需求较大。

 

另一方面,线下购物连续第三个月下滑,减少的原因是疫情期间韩国限制了卖场营业时间,再加上寒流的原因和春节的到来,导致民众外部活动减少,社会距离拉大。

 

线下商店受到了最大的冲击,大卖场下降了11.7%,百货商店也下降了6.3%,乐天玛特等大型商店的销售额也下降了3.3%。受此影响,线下销售的比例从上一年的58.0%下降到51.5%。

 

另外,在便利店,香烟等其他商品也增加了2.4%相反,演出和旅游商品等服务和其他商品的销售额则减少14.2%。

 

据悉,现在韩国政府一直加强隔离措施,以遏制病毒传播。由于新年假期民众聚会增加,社区感染病例增加,预料疫情将出现反弹,防疫部门26日将公布防疫响应机制调整方案。

 

另一方面,首批阿斯利康疫苗已经运抵韩国,26日开始接种工作。

 

目前韩国疫情仍旧无法很好地被控制,而接下来的连续旺季,卖家需要抓紧备货,接下来的跨境物流形势,只会越来越复杂,卖家需要全面备战,做好营销推广,合理安排物流等等,争取逆风翻盘!

 

 





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

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

淘粉吧官网:https://www.ikjzd.com/w/1725.html

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


2月25日,韩国政府发布的一份报告显示,疫情期间在线购物旺盛,再加上春节的到来,1月份韩国在线购物增长了22.6%,而大型超市等实体商店的销售额却最多减少了11%。由于非面对面消费的普及和人们通过网络在线订购春节礼品的需要,继去年之后在线销售持续呈现增加趋势。从各商品类别的销售额来看,家电和文化产品的销售额分别为37.5%和21.9%,海外知名品牌的销售额大幅上升。这可以解释为,比起购买节日用品,
1号团:https://www.ikjzd.com/w/2263
rfq:https://www.ikjzd.com/w/251
海维:https://www.ikjzd.com/w/1891
亚马逊小白课堂:怎样提升listing在Amazon中的搜索排名:https://www.ikjzd.com/home/18391
请查收!亚马逊2020年发展复盘:https://www.ikjzd.com/home/138040
什么是新外贸?中国新外贸B2B的机会与前景!:https://www.ikjzd.com/home/18004

科学家发现超致密恒星“胚胎”|恒星

  来源:中科院之声

  天文学家使用麦克斯韦望远镜(JCMT)和阿塔卡玛大型毫米及亚毫米波阵列(ALMA),首次在猎户座巨分子云中发现超致密恒星"胚胎"及恒星"胚胎"的分裂。

  年轻新生恒星(如太阳)诞生于"分子云"中,也就是太空中冷气体和尘埃聚集而成的云气。分子云中最稠密的可能形成恒星的区域,称为"星前云核"(prestellar cores)。有理论认为,"星前云核"会凝聚出超致密的结构,在1000日地距离尺度内粒子平均密度达107cm-3以上,即恒星的"胚胎"。过去,天文学家试图在星前云核中寻找这种"恒星胚胎",但多是徒劳无功。这也许是因为它们存在的时间很短,所以很难找到。然而,了解"恒星胚胎"诞生的时间及演化的过程,对研究恒星形成十分重要。

  自2018年,中国科学院上海天文台博士刘铁领衔的ALMASOP团队,利用ALMA对猎户座23个星前云核进行了超高分辨率(~100倍日地距离)的观测,系统探测了它们的内部结构。ALMASOP项目组首次在其中5个星前云核中发现了超致密的"恒星胚胎",并发现其中的一个"恒星胚胎"G205.46-14.56M3正在分裂形成一对"双胞胎"恒星。相关研究成果发表在《天体物理学快报》(The Astrophysical Journal Letters)。审稿人评价道,"这项引人入胜和令人信服的工作对天体物理的多个领域具有重要意义"。

  论文的第一作者、中国台湾"中央研究院"天文及天文物理研究所(ASIAA)博士沙德培(Dipen Sahu)表示,"这好像试着研究受精卵刚在母亲子宫着床的那一刻,即形成恒星宝宝的最关键阶段。想知道恒星系统是如何形成,就必须在它们诞生之际找到这些孕育恒星的胚胎"。论文的共同通讯作者、ALMASOP项目负责人刘铁表示,"这些包含恒星胚胎的星前云核非常稀有且珍贵。中科院天文大科学中心主导运行的麦克斯韦望远镜(JCMT)在研究中起重要作用。JCMT工作在亚毫米波,适合搜寻分子云中寒冷、暗淡但稠密的气体团块。JCMT首先定位了这些猎户座中的冷的星前云核"。JCMT发现这些星前云核后,研究团组转向ALMA。论文的共同通讯作者、中国台湾"中央研究院"天文及天文物理研究所博士吕圣元表示,"ALMA提供了前所未有的灵敏度和角分辨率,因此可以看到带有清晰影像的微弱信号。ALMA发现的这些恒星胚胎蕴藏着前所未有的高密度气体,它们巨大的质量使天文学家认为它们将来会形成新的恒星。G205.46-14.56M3就像里面有两个蛋黄的鸡蛋一样,将来很可能形成双星系统"。天文学家尚不清楚这些星前云核中的超致密结构是如何形成的,有可能是气体运动、重力和磁场的复杂交互作用。目前,ALMASOP的观测只探究了气体和尘埃的分布。未来对这些星前云核内部气体运动和磁场的观测研究将使我们进一步了解恒星形成的这一决定性过程。沙德培认为,"目前检测出的少量恒星胚胎仅是个开始。相信我们将在未来的观测中找到更多恒星胚胎,并透过JCMT、ALMA及SKA详细了解它们的性质"。刘铁表示,"在JCMT SCOPE大型观测中,已发现了一批致密的星前云核。我们正通过国际合作积极申请ALMA等大型望远镜进行后续观测。未来,我们将会捕捉到恒星诞生那一瞬间的画面"。

  ALMASOP项目团队包含来自中国大陆及台湾、韩国、日本、美国等国家和地区的40余位学者。该项工作合作者还包括上海天文台研究员沈志强、国家天文台研究员李菂、北京大学教授吴月芳及云南大学教授秦胜利等。研究工作得到国家自然科学基金、中科院对外合作重点项目及上海市浦江人才计划的支持。

G205.46-14.56M3无星云核位于猎户座巨分子云中。内嵌的上图是JCMT观测的850微米连续谱图像,下图是ALMA观测的1.3mm连续谱图像。ALMA探测到其内部包含正形成双星的恒星胚胎(B1,B2)。图像来源:ASIAA/Wei-Hao Wang/ALMA (ESO/NAOJ/NRAO)/Tie Lie/Sahu et al。  G205.46-14.56M3无星云核位于猎户座巨分子云中。内嵌的上图是JCMT观测的850微米连续谱图像,下图是ALMA观测的1.3mm连续谱图像。ALMA探测到其内部包含正形成双星的恒星胚胎(B1,B2)。图像来源:ASIAA/Wei-Hao Wang/ALMA (ESO/NAOJ/NRAO)/Tie Lie/Sahu et al。

  来源:中国科学院上海天文台

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

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

002315焦点科技:https://www.ikjzd.com/w/1831

tiki:https://www.ikjzd.com/w/2053


来源:中科院之声  天文学家使用麦克斯韦望远镜(JCMT)和阿塔卡玛大型毫米及亚毫米波阵列(ALMA),首次在猎户座巨分子云中发现超致密恒星"胚胎"及恒星"胚胎"的分裂。  年轻新生恒星(如太阳)诞生于"分子云"中,也就是太空中冷气体和尘埃聚集而成的云气。分子云中最稠密的可能形成恒星的区域,称为"星前云核"(prestellarcores)。有理论认为,"星前云核"会凝聚出超致密的结构,在1000
prime:https://www.ikjzd.com/w/129
e淘网:https://www.ikjzd.com/w/1698
欧苏丹:https://www.ikjzd.com/w/1756
第二届616全球跨境电商节盛大启幕!:https://www.ikjzd.com/home/98108
亚马逊客服常用英文回复模板,绝对实用,超级全!:https://www.ikjzd.com/tl/5549
运营想要"突破",不妨看看这份2020电商发展趋势:https://www.ikjzd.com/home/113371

FIFA裁定贝肯鲍尔参与腐败 因过起诉时效未开罚单_国际足联

原标题:FIFA裁定贝肯鲍尔参与腐败 因过起诉时效未开罚单

北京时间2月26日,国际足联官方消息,贝肯鲍尔、特奥-茨万齐格和霍斯特-施密特在参与2006年世界杯申办的过程中涉嫌腐败,贿赂金额高达1000万瑞士法郎,由于过了起诉时效,他们并不会受到处罚。

最近几届世界杯,申办过程中都被指涉嫌腐败,2006年、2018年和2022年等这三届世界杯可谓是腐败案中的焦点,前国际足联主席布拉特、前欧足联主席普拉蒂尼以及前亚足联主席哈曼等,均因为腐败而被禁足。

在布拉特下课后,国际足联独立道德委员开始调查参与腐败的官员们,在2006年世界杯申办的过程中,肯鲍尔、特奥-茨万齐格和霍斯特-施密特在2002年向时任国际足联执委会委员哈曼行贿1000万瑞士法郎。据悉,这笔款项与2002至2006年间国际足联批准向世界杯组委会拨款2.5亿瑞士法郎有关。

国际足联独立道德委员会表示,贝肯鲍尔、特奥-茨万齐格和霍斯特-施密特违反了《国际足联道德规范条例》的第27条规定,不过,根据《国际足联道德规范条例》第12条的规定,他们三人并不会受到惩罚,因为这些腐败的行为,已经过了起诉失效期。《国际足联道德规范条例》第12条规定,针对官员违规行为的指控,开始时间不应该基于整个行贿过程的持续时间(直至2006年),而是应当基于每个人违规行为的确切时间点。贝肯鲍尔的起诉有效期已在2012年到期,茨万齐格和施密特的起诉期限也在2016年到期。所以,贝肯鲍尔等三人,不会受到国际足联的惩罚。返回搜狐,查看更多

责任编辑:

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

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

卖家精灵:https://www.ikjzd.com/w/532

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


原标题:FIFA裁定贝肯鲍尔参与腐败因过起诉时效未开罚单北京时间2月26日,国际足联官方消息,贝肯鲍尔、特奥-茨万齐格和霍斯特-施密特在参与2006年世界杯申办的过程中涉嫌腐败,贿赂金额高达1000万瑞士法郎,由于过了起诉时效,他们并不会受到处罚。最近几届世界杯,申办过程中都被指涉嫌腐败,2006年、2018年和2022年等这三届世界杯可谓是腐败案中的焦点,前国际足联主席布拉特、前欧足联主席普拉蒂
黄劲:https://www.ikjzd.com/w/2426
e淘网:https://www.ikjzd.com/w/1698
上海跨境通:https://www.ikjzd.com/w/1329
亚马逊产品流量低,如何正确使用PPC广告推广 | PPC广告投放策略(3):https://www.ikjzd.com/home/139061
Amazon使用频率高的选品工具:https://www.ikjzd.com/tl/107345
情感口述:老婆和男同事用纸笔谈论性经验:http://lady.shaoqun.com/m/a/79245.html

决裂!扣篮王放弃薪水+直接离队 为了总冠军非得撕破脸吗?_格伦·罗宾逊

原标题:决裂!扣篮王放弃薪水+直接离队 为了总冠军非得撕破脸吗?

离开一支球队的方式,有很多种。你可以像考辛斯那样,和球队商讨后达成一致,和平离队;也可以像哈登那样,轰轰烈烈,最终火箭还是把大胡子送到了他想去的地方。

也有个别的球员,离队的方式相当强硬。例如萨克拉门托国王的格伦·罗宾逊三世

此前对阵公牛的比赛,国王给出的赛前伤病报告称,格伦·罗宾逊三世右膝酸疼,无法出场。接下来对阵雄鹿的比赛前,主教练沃顿表示,格伦·罗宾逊三世已经因为个人的原因离开了球队。

欧文本赛季也曾离开球队一段时间,最终还是回归。那格伦·罗宾逊三世呢?

最新的消息是格伦·罗宾逊三世已经不想再回到国王了,按照联盟的规定,罗宾逊膝盖还有伤病,国王如果选择裁掉他,格伦·罗宾逊三世有权要求国王支付全额的薪水。但是,罗宾逊三世却告诉国王管理层,为了离开,他愿意放弃本赛季的剩余薪水!

看来,罗宾逊三世已经迫不及待想要离开了。当然,这也是没有办法的事情,一句话来形容罗宾逊三世的处境:上错花轿嫁错郎!

三个月前,罗宾逊三世还是自由市场上的香饽饽,多家美国媒体报道,包括洛杉矶湖人、洛杉矶快船在内的多支强队,都对罗宾逊三世非常感兴趣,想要签下他。

面对着多支有希望冲击总冠军的强队,罗宾逊三世最终的决定是:加盟国王!

当时这一决定已经让人大跌眼镜了,毕竟,此前一个赛季,罗宾逊三世效力于勇士时,场均可以贡献12.2分4.7篮板三分命中率高达40%。赛季中期成为费城的一员,罗宾逊三世仍然可以拿到7.7分3.1篮板。

可以说,上赛季的罗宾逊三世,已经是2017年全明星周末后,最辉煌的时期了。2017年全明星扣篮大赛,格伦·罗宾逊三世击败德安德鲁·乔丹、阿隆·戈登和小德里克·琼斯,夺得冠军。

视线再拉回到现在,不知道罗宾逊三世是否会后悔没有加盟湖人,本赛季在国王,罗宾逊三世场均只捞到16分钟的出场时间,数据降到了5.3分2篮板0.9助攻

不知道这一次罗宾逊三世如此决绝的和国王分手,基本上荒废了两个月的他,还能引起湖人等球队的兴趣吗?已经裁掉了库克的湖人,会签下他吗?返回搜狐,查看更多

责任编辑:

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

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

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

执御:https://www.ikjzd.com/w/717.html


原标题:决裂!扣篮王放弃薪水+直接离队为了总冠军非得撕破脸吗?离开一支球队的方式,有很多种。你可以像考辛斯那样,和球队商讨后达成一致,和平离队;也可以像哈登那样,轰轰烈烈,最终火箭还是把大胡子送到了他想去的地方。也有个别的球员,离队的方式相当强硬。例如萨克拉门托国王的格伦·罗宾逊三世。此前对阵公牛的比赛,国王给出的赛前伤病报告称,格伦·罗宾逊三世右膝酸疼,无法出场。接下来对阵雄
wario:https://www.ikjzd.com/w/887
kk馆:https://www.ikjzd.com/w/1713
海豚村:https://www.ikjzd.com/w/1779
亚马逊品牌卖家需要避开哪些坑?:https://www.ikjzd.com/home/140583
亚马逊选品选不出来怎么办?:https://www.ikjzd.com/home/113186
寻找亚马逊关键词,竟然还有这种玩法?:https://www.ikjzd.com/home/127906

亨利正式辞职 告别美职联 因难忍与孩子分隔两地_主帅

原标题:亨利正式辞职 告别美职联 因难忍与孩子分隔两地

当地时间本周四,美职联球队蒙特利尔冲击官方宣布,主帅亨利因为"个人家庭原因"辞职。亨利在2019年11月出任该队主帅,他率队参加了29场比赛,战绩为7胜2平11负。

不久之后,亨利就在推特上发文,揭晓了自己辞职的原因。"我怀着非常沉痛的心情,写下了这封信。"亨利发布公开信,"对我个人而言,去年非常艰难。由于全球疫情,我无法见到孩子们。不幸的是,基于目前的防疫状况,我将不得不在美国再待至少几个月。分隔两地对我和孩子来说压力很大,因此我不得不做出离开蒙特利尔、重返伦敦的决定,这是个非常悲伤的决定。"

"我想要感谢球迷、球员和工作人员,他们让我感到自己在俱乐部中很受欢迎,我还要感谢高层给了我这个绝佳的执教机会。"亨利继续写道,"我们一起度过了不可思议的一年,随队打进季后赛是我永生难忘的经历。感谢你们在这段旅途中给我的支持,祝大家未来一切顺利。"

亨利的下一站,将会是何方?此前英格兰媒体曾指出,亨利接近于入主伯恩茅斯,但如今伯恩茅斯已经将代理主帅伍德盖特转正,他的合同签到了本赛季结束。如果亨利还想要入主伯恩茅斯的话,那就至少要等到今年夏天了。返回搜狐,查看更多

责任编辑:

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

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

marks spencer:https://www.ikjzd.com/w/2385

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


原标题:亨利正式辞职告别美职联因难忍与孩子分隔两地当地时间本周四,美职联球队蒙特利尔冲击官方宣布,主帅亨利因为"个人家庭原因"辞职。亨利在2019年11月出任该队主帅,他率队参加了29场比赛,战绩为7胜2平11负。不久之后,亨利就在推特上发文,揭晓了自己辞职的原因。"我怀着非常沉痛的心情,写下了这封信。"亨利发布公开信,"对我个人而言,去年非常艰难。由于全球疫情,我无法见到孩子们。不幸的是,基于目
友家快递:https://www.ikjzd.com/w/1341
沃尔玛:https://www.ikjzd.com/w/220
徐家骏:https://www.ikjzd.com/w/1803
英国站卖家要注意了!你的订单可能配送不到了:https://www.ikjzd.com/home/131349
口述:大肚表姐被渣男抛弃,我又跳入火坑:http://lady.shaoqun.com/m/a/128337.html
教你如何干预亚马逊秒杀排名:https://www.ikjzd.com/tl/108065

男人保养性功能的方法,你能知道几种?

核心提示:作为男性朋友,要知道男人保养性功能的方法有哪些,就可知道从哪些方面努力提升个人性功能,提高夫妻性生活质量。

夫妻生活可促进夫妻关系,维持家庭幸福,不过有些男性经常忙于工作忽略健身,导致体力越来越弱,有同房行为有些力不从心。作为男性朋友,要知道男人保养性功能的方法有哪些,就可知道从哪些方面努力提升个人性功能,提高夫妻性生活质量。

男人保养性功能的方法:

1、运动锻炼一定不可少,在运动时能增强男性身体力量,同时也能进强肌肉含量,主要对健康也有保障。比较推荐多参与下半身可活动的项目,比如跑步、跳绳、游泳等,能锻炼到腰部以下的部位,因为性功能强弱关键在于腰和足。

2、本身性功能就不太强的情况下更要适度行房事,过于频繁有性行为反而不利于保持性生活能力。当然也不能完全没有夫妻生活,时间久了容易使内发泌紊乱,隔太久有性生活,身体会因为过多全不适应而出同体力不支的情况。

3、避免长期久坐,像开车司机或久坐办公室的男性,很容易对前列腺健康、睾丸健康有影响,工作性质虽然没办法改变,就尽可能给自己留出活动时间,每坐30分钟左右就站立参与一些小幅度活动,呼吸一下新鲜空气,再活动一下关节,坚持下来对预防性功能低下有显著作用。


4、保持良好作息时间,拒绝熬夜对每个人来说都至关重要,若长时间睡眠不足,对男性性能力也有很大影响,甚至可能对房事没有任何兴趣。保持充足睡眠质量,能让个人精神始终处于充沛状态,对提升性生活质量也有好处。

以上内容中推荐了几个有助于促进男人保养性功能的方法,如果男性想展现个人雄姿,非常有必要了解以上内容中所介绍的方法,尤其四十岁以上的男性肩膀上的担子本来就很重,压力也比较大,这个时候更要注重保养,避免出现健康隐患。

要知道男性的性功能会随着年龄增长慢慢减退,如果平时不注重保养的话,年龄越长,性功能越弱。


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

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

飞书互动:https://www.ikjzd.com/w/1319

jpgoodbuy:https://www.ikjzd.com/w/1553


核心提示:作为男性朋友,要知道男人保养性功能的方法有哪些,就可知道从哪些方面努力提升个人性功能,提高夫妻性生活质量。 夫妻生活可促进夫妻关系,维持家庭幸福,不过有些男性经常忙于工作忽略健身,导致体力越来越弱,有同房行为有些力不从心。作为男性朋友,要知道男人保养性功能的方法有哪些,就可知道从哪些方面努力提升个人性功能,提高夫妻性生活质量。男人保养性功能的方法:1、运动锻炼一定不可少,在运动时能增强男
1号店网:https://www.ikjzd.com/w/2263
东杰智能:https://www.ikjzd.com/w/1967
跨境通网站:https://www.ikjzd.com/w/1329
商务部:完善跨境电商零售进口监管政策!:https://www.ikjzd.com/home/113967
整哪出!跨境电商闹腾,国内电商也出事了! :https://www.ikjzd.com/home/99652
Ingenico(银捷尼科):https://www.ikjzd.com/w/2782

Power BI成功的背后

Power BI成功的背后

魔力象限

又是一年Gartner数据分析与BI魔力象限报告的发布,Power BI毫无悬念的第一,并且拉开与其他产品的差距越来越大。在Power BI dataflows(Power Query Online)与 DirectQuery for Power BI datasets and Azure Analysis Services发布后,可以认为Power BI与其他产品已经不在一个层次上了。真正的将企业BI与自助分析融为一体。

 

官方文章

先看下官方blog的说明,主要推荐了几个最新的医疗,保险,零售大客户的案例。列举了客户选择Power BI的10大原因,虽然是比较Marketing的说法,但毫不夸张。与Teams的集成是一个完美的组合。

  1. Power BI Insights, Office 365 productivity—integrated into Excel and Microsoft Teams.
  2. Connect to data anywhere with hundreds of built-in connectors with Power Query.
  3. Quickly build systems of intelligence with Power BI + Microsoft Azure Synapse Analytics.
  4. Go from insight to action with Microsoft Power Platform.
  5. Only BI product with built in Data Loss Prevention through Microsoft Information Protection and Microsoft Cloud App security.
  6. Industry leading AI to help you find answers fast.
  7. Best in class mobile experiences with Power BI Mobile.
  8. Cloud maturity—rely on one of the largest and fastest growing BI clouds.
  9. Rapid, user driven innovation—new features released weekly based user feedback.
  10. Economics to drive a data culture with access for everyone.

Zdnet

Zdnet同时发布的一篇文章通过与Power BI之父Amir Netz(微软技术fellow)的交流介绍成功背后的故事并总结几大原因:

  1. 低价格
  2. 云原生SaaS
  3. 自我革命(创业心态)
  4. 社区

https://www.zdnet.com/article/as-power-bi-aces-gartners-new-magic-quadrant-whats-the-story-behind-microsofts-success/

两大特性

Power BI可以认为是3个模块组成

  • Power Query-自助式,无代码ETL
  • SQL Server Analysis Services Tabular-内存列式数据库引擎,业界第一的企业级OLAP
  • Power BI Report-300+可视化图形

如下图所示:

 

Power BI dataflows是Power Query Online版本,通过与Azure Data Lake的集成,做成了自助模式数据湖或数据仓库。

https://docs.microsoft.com/en-us/power-query/dataflows/overview-dataflows-across-power-platform-dynamics-365

 DirectQuery for Power BI datasets and Azure Analysis Services解决了语义模型的最后难题。

https://www.sqlbi.com/articles/new-composite-models-in-power-bi-a-milestone-in-business-intelligence/

 

个人经历

我在数据分析和BI的工作分为3段

  • Oracle+SAP BO
  • SAP BW/HANA
  • SQL Server Analysis Services Tabular+Power BI

1.前2段都是传统的企业BI,最终都是将数据导出,使用Excel制作动态报表。Excel的各种函数与技巧。sumifs,sumproduct,index+match这类函数的大量使用。

2.最早是在2015年通过一个宣传视频了解到了PowerPivot,在Excel里面处理1亿数据(Power BI的前身),当时花了2个月的时间研究。

3.后来使用SAP HANA OLAP的时候看到HANA与Power BI组合,才真正开始使用Power BI。

4.学习SQL Server Analysis Services Tabular时候了解到SQLBI,通过SQLBI的书和Blog,完全掌握了SSAS与DAX,之后的工作就完全是Power BI。

5.2017年Power BI的本地部署版本(Power BI Report Server)发布后,开始使用各种数据库做SSAS模型,从Oracle,SQL Server,Sybase IQ到Mysql,PostgreSQL。

6.2020年下半年开始Azure Data探索,开始了数据湖与现代化数仓(AWS也发布了SQL Server Analysis Services Tabular的RDS服务)

 

         (个人学习使用中,还未用到生产中)

 

 Power BI产品本身的成熟度时间也刚好吻合,因为工作只能使用本地部署版本就只介绍本地部署相关产品,公有云就不介绍了。

2016-Power BI成熟

        -SQL Server Analysis Services Tabular大规模生产级可用

2017-Power BI Report Server本地部署发布

2018-Power BI Report Server生产级可用

2019-Power BI Report Server大规模生产级可用

        -SQL Server Analysis Services Tabular 2019

2020-DirectQuery for Power BI datasets and Azure Analysis Services

2021-等待DirectQuery for Power BI datasets and Azure Analysis Services成熟到生产可用和SQL Server Analysis Services Tabular 2021发布(?)

SQLBI

Power BI的学习官方文档是最强的,从来没有见到那个产品有这么好的文档。

功能都在Desktop

https://docs.microsoft.com/en-us/power-bi/

最佳实践

https://docs.microsoft.com/en-us/power-bi/guidance/

DAX

https://docs.microsoft.com/en-us/dax/dax-function-reference

Power Query

https://docs.microsoft.com/en-us/power-query/

SSAS只看表格模型Tabular(多维模型与数据挖掘已经淘汰过时,可以完全忽略)

https://docs.microsoft.com/en-us/analysis-services

Power BI Report Server

https://docs.microsoft.com/en-us/power-bi/report-server/

(en-us切成zh-cn就是中文版,同时可以下载pdf)

如果要达到企业级的使用,专家水平,那就需要SQLBI.

 

https://www.sqlbi.com/books/

https://www.sqlbi.com/tools/dax-studio/

未来计划

从2017开始到现在4年的Power BI使用,相关的架构,解决方案培训材料写了很多,今年开始有时间分享出来。

  1. 第一阶段准备翻译The Definitive Guide to DAX – 2nd Edition,预计一周1-2章,估计2个月完成。
  2. Power Query,SSAS,Power BI Report Server分享
  3. 业界最佳实践材料分享

 

附录

Power BI博客地图

 

 Power BI生态(德语区)

 









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

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

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

亿恩:https://www.ikjzd.com/w/1461


PowerBI成功的背后魔力象限又是一年Gartner数据分析与BI魔力象限报告的发布,PowerBI毫无悬念的第一,并且拉开与其他产品的差距越来越大。在PowerBIdataflows(PowerQueryOnline)与DirectQueryforPowerBIdatasetsandAzureAnalysisServices发布后,可以认为PowerBI与其他产品已经不在一个层次上了。真正的将
邮乐网:https://www.ikjzd.com/w/1776
gem:https://www.ikjzd.com/w/1997
e邮宝:https://www.ikjzd.com/w/594.html?source=tagwish
亚马逊美国站儿童珠宝儿童首饰儿童发卡儿童发箍ASTMF2923-14:https://www.ikjzd.com/home/18309
心怡科技:https://www.ikjzd.com/w/1327
大多数企业领导人预计会受到冠状病毒的打击?他们如何应对?:https://www.ikjzd.com/home/118470

2021-02-25

澳大利亚夫妇所上传的UFO图片

之前有一对来自于澳大利亚的夫妇所上传的UFO图片,让人觉得有一些叹为观止,当他们把这张照片上传到网络时,很多人都在探索,这到底是怎么回事呢?这对夫妇表示当他们在查看视频时,就发现了这一条非常奇怪的现象。

图片8.png 

    而且他们有过将近30年的天文现象拍摄经验,虽然从来都不相信有UFO的存在,但是在看到这张UFO图片是根本就没有办法找出任何的语言来解释。保罗就表示看到这张图片,真的百思不得其解,不知道该如何来解释眼前看到的现象,这个东西真的让自己觉得非常的困惑,而且显然它不可能是喷气式飞机,因为喷剂飞机,不可能会有这么快速的速度。根据视频的显示,当时拍摄的时间是2015年的6月12号,当时在人们的眼前就出现了一条快速飞过的光线,而且还会呈现出彩色状态。

 

    有人认为很可能是挡风玻璃上的光线,但是保罗就表示这种说法显然不正确,当时他已经分析了种种原因,可是看到眼前的UFO图片时,真的让自己无话可说。因为除了UFO之外,根本就没有什么能够像他这般拥有着较快的速度。为了能够证明自己所言非虚,特意还把视频的画面放大,还提高了对比度,看起来就好像是在天空快速划过的彩色珍珠。根据报道表示他之所以把这张照片上传到网上,就是希望大家都能够提出意见,如此才能够让大家知道引发的原因到底是什么。

 




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

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

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

孙琦:https://www.ikjzd.com/w/1638


之前有一对来自于澳大利亚的夫妇所上传的UFO图片,让人觉得有一些叹为观止,当他们把这张照片上传到网络时,很多人都在探索,这到底是怎么回事呢?这对夫妇表示当他们在查看视频时,就发现了这一条非常奇怪的现象。而且他们有过将近30年的天文现象拍摄经验,虽然从来都不相信有UFO的存在,但是在看到这张UFO图片是根本就没有办法找出任何的语言来解释。保罗就表示看到这张图片,真的百思不得其解,不知道该如何来解释眼
香港会计师事务所:https://www.ikjzd.com/w/2434
prime day:https://www.ikjzd.com/w/131.html
coles:https://www.ikjzd.com/w/2506
2020年,做跨境电商还来的及么?:https://www.ikjzd.com/home/113364
亚马逊Listing产品文案撰写套路:https://www.ikjzd.com/tl/108137
跨境电商企业成香饽饽,泽宝拟被上市公司全资收购!:https://www.ikjzd.com/home/2045

亚马逊荷兰站用户达650万,泰国将向外国互联网运营商征收增值税

亚马逊荷兰站用户达650万,增长近一倍

 

据外媒报道,自2020年1月亚马逊荷兰站正式对全球买家开放以来,目前其平台用户数量已从380万增加到650万。

 

据悉,亚马逊荷兰站在2014年就上线了,但当时该站点只是一个图书销售平台。直到2020年1月,亚马逊荷兰站正式向全球家开放。

 

据网站调查机构Vinex的数据显示,在2020年8月,亚马逊荷兰站点用户数量就达到了490万。在11月购物旺季,亚马逊荷兰站的访问量达到了730万。此外,2021年1月份,有650万荷兰消费者在本月至少访问了亚马逊荷兰站一次。相比之下,Coolblue在该月的访问人数为500万,Bol.com为1150万。

 

法国反垄断机构称谷歌违反与新闻出版商协商指令

 

据外媒报道,近日法国反垄断调查人员指控谷歌,称其未能遵守该国反垄断当局有关如何与新闻出版商就版权问题展开协商的指令。

 

调查人员在这份93页的反对声明报告中写道,谷歌未遵守相关规定的性质极为严重。反垄断当局可以向被其认定为违反规定的公司征收最高相当于公司营收10%的罚金。

 

泰国9月起将向外国互联网运营商征收增值税

 

泰国宪政公报网报道,近日泰国将对外国电子服务运营商征收增值税

 

从今年9月1日开始,泰国将向所有提供线上服务、年收入超过180万泰铢(约合38.7万元人民币)的"外国企业"收取7%的电子服务增值税。

 

据悉,受这一税收新规影响的企业包括:影视游戏制作公司、在线服务平台等,尤其是在泰国落地的国际互联网巨头——苹果、谷哥、脸书、奈飞、油管、抖音等都要缴纳增值税。

 

香港DHL发布有关海报申报信息问题有关通知

 

据悉,香港DHL发布通知,海关申报货件发票信息不全会被香港DHL退件,完整信息包括:

 

寄件公司名、人名、地址;

收件公司名、人名、地址;

货物信息:详细的产品描述包括材质、成分、用途等,单价、数量等。

 

特别注意的是,发件人的信息不能空白,私人件可以没有公司名,但是必须有人名和地址否则将会被退件。

 

"湾区号"中欧班列开行半年累计货值突破10亿元

 

据悉,深圳"湾区号"中欧班列自去年8月始发以来已累计开行38列,运送货物19201.39吨,货值达10.35亿元。

 

到目前为止,"湾区号"中欧班列已经累计发往29个欧洲国家,出口货值前三位的分别是德国、匈牙利和波兰。在全球抗疫背景下,中欧班列持续有序畅通运行,为全球抗疫和提振经济输送了"中国力量"。





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

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

欧麦:https://www.ikjzd.com/w/2085

亚马逊全球开店:https://www.ikjzd.com/w/1299


亚马逊荷兰站用户达650万,增长近一倍据外媒报道,自2020年1月亚马逊荷兰站正式对全球买家开放以来,目前其平台用户数量已从380万增加到650万。据悉,亚马逊荷兰站在2014年就上线了,但当时该站点只是一个图书销售平台。直到2020年1月,亚马逊荷兰站才正式向全球买家开放。据网站调查机构Vinex的数据显示,在2020年8月,亚马逊荷兰站点用户数量就达到了490万。在11月购物旺季,亚马逊荷兰站
feedback:https://www.ikjzd.com/w/159
naver:https://www.ikjzd.com/w/1727
damai:https://www.ikjzd.com/w/1391
推荐8个最好的YouTube关键词工具(免费和付费):https://www.ikjzd.com/home/132885
如何计划一次利润丰厚的黑色星期五网络星期一促销:https://www.ikjzd.com/home/133295
听说大家都玩抖音,现在抖音在国外也挺火的,给大家分享点抖音营销的内幕:https://www.ikjzd.com/tl/15528

面试被问Java序列化和反序列化为什么要实现Serializable接口

最近公司的在做服务化, 需要把所有model包里的类都实现Serializable接口, 同时还要显示指定serialVersionUID的值. 听到这个需求, 我脑海里就突然出现了好几个问题, 比如说:

(1) 序列化和反序列化是什么? (2) 实现序列化和反序列化为什么要实现Serializable接口? (3) 实现Serializable接口就算了, 为什么还要显示指定serialVersionUID的值? (4) 我要为serialVersionUID指定个什么值?2021Java面试宝典

下面我们来一一解答这几个问题.

序列化和反序列化

序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化.

什么时候需要用到序列化和反序列化呢?

当我们只在本地JVM里运行下Java实例, 这个时候是不需要什么序列化和反序列化的, 但当我们需要将内存中的对象持久化到磁盘, 数据库中时, 当我们需要与浏览器进行交互时, 当我们需要实现RPC时, 这个时候就需要序列化和反序列化了.

前两个需要用到序列化和反序列化的场景, 是不是让我们有一个很大的疑问? 我们在与浏览器交互时, 还有将内存中的对象持久化到数据库中时, 好像都没有去进行序列化和反序列化, 因为我们都没有实现Serializable接口, 但一直正常运行.

下面先给出结论:

只要我们对内存中的对象进行持久化或网络传输, 这个时候都需要序列化和反序列化.

理由:

服务器与浏览器交互时真的没有用到Serializable接口吗? JSON格式实际上就是将一个对象转化为字符串, 所以服务器与浏览器交互时的数据格式其实是字符串, 我们来看来String类型的源码:

public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0 /** use serialVersionUID from JDK 1.0.2 for interoperability */ private static final long serialVersionUID = -6849794470754667710L;	......}

String类型实现了Serializable接口, 并显示指定serialVersionUID的值.

然后我们再来看对象持久化到数据库中时的情况, Mybatis数据库映射文件里的insert代码:

<insert id="insertUser" parameterType="org.tyshawn.bean.User"> INSERT INTO t_user(name, age) VALUES (#{name}, #{age})</insert>

实际上我们并不是将整个对象持久化到数据库中, 而是将对象中的属性持久化到数据库中, 而这些属性都是实现了Serializable接口的基本属性.

实现序列化和反序列化为什么要实现Serializable接口?

在Java中实现了Serializable接口后, JVM会在底层帮我们实现序列化和反序列化, 如果我们不实现Serializable接口, 那自己去写一套序列化和反序列化代码也行, 至于具体怎么写, Google一下你就知道了.

实现Serializable接口就算了, 为什么还要显示指定serialVersionUID的值?

如果不显示指定serialVersionUID, JVM在序列化时会根据属性自动生成一个serialVersionUID, 然后与属性一起序列化, 再进行持久化或网络传输. 在反序列化时, JVM会再根据属性自动生成一个新版serialVersionUID, 然后将这个新版serialVersionUID与序列化时生成的旧版serialVersionUID进行比较, 如果相同则反序列化成功, 否则报错.

如果显示指定了serialVersionUID, JVM在序列化和反序列化时仍然都会生成一个serialVersionUID, 但值为我们显示指定的值, 这样在反序列化时新旧版本的serialVersionUID就一致了.

在实际开发中, 不显示指定serialVersionUID的情况会导致什么问题? 如果我们的类写完后不再修改, 那当然不会有问题, 但这在实际开发中是不可能的, 我们的类会不断迭代, 一旦类被修改了, 那旧对象反序列化就会报错. 所以在实际开发中, 我们都会显示指定一个serialVersionUID, 值是多少无所谓, 只要不变就行.

写个实例测试下:

(1) User类

不显示指定serialVersionUID.

public class User implements Serializable { private String name; private Integer age; public String getName() {  return name; } public void setName(String name) {  this.name = name; } public Integer getAge() {  return age; } public void setAge(Integer age) {  this.age = age; } @Override public String toString() {  return "User{" +    "name='" + name + '\'' +    ", age=" + age +    '}'; }}

(2) 测试类

先进行序列化, 再进行反序列化.

public class SerializableTest { private static void serialize(User user) throws Exception {  ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("D:\\111.txt")));  oos.writeObject(user);  oos.close(); } private static User deserialize() throws Exception{  ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("D:\\111.txt")));  return (User) ois.readObject(); } public static void main(String[] args) throws Exception {  User user = new User();  user.setName("tyshawn");  user.setAge(18);  System.out.println("序列化前的结果: " + user);  serialize(user);  User dUser = deserialize();  System.out.println("反序列化后的结果: "+ dUser); }}

(3) 结果

先注释掉反序列化代码, 执行序列化代码, 然后User类新增一个属性sex

public class User implements Serializable { private String name; private Integer age; private String sex; public String getName() {  return name; } public void setName(String name) {  this.name = name; } public Integer getAge() {  return age; } public void setAge(Integer age) {  this.age = age; } public String getSex() {  return sex; } public void setSex(String sex) {  this.sex = sex; } @Override public String toString() {  return "User{" +    "name='" + name + '\'' +    ", age=" + age +    ", sex='" + sex + '\'' +    '}'; }}

再注释掉序列化代码执行反序列化代码, 最后结果如下:

序列化前的结果: User{name='tyshawn', age=18}Exception in thread "main" java.io.InvalidClassException: org.tyshawn.SerializeAndDeserialize.User; local class incompatible: stream classdesc serialVersionUID = 1035612825366363028, local class serialVersionUID = -1830850955895931978

报错结果为序列化与反序列化产生的serialVersionUID不一致.

接下来我们在上面User类的基础上显示指定一个serialVersionUID

private static final long serialVersionUID = 1L;

再执行上述步骤, 测试结果如下:

序列化前的结果: User{name='tyshawn', age=18}反序列化后的结果: User{name='tyshawn', age=18, sex='null'}

显示指定serialVersionUID后就解决了序列化与反序列化产生的serialVersionUID不一致的问题.

Java序列化的其他特性

先说结论, 被transient关键字修饰的属性不会被序列化, static属性也不会被序列化.

我们来测试下这个结论:

(1) User类

public class User implements Serializable { private static final long serialVersionUID = 1L; private String name; private Integer age; private transient String sex; private static String signature = "你眼中的世界就是你自己的样子"; public String getName() {  return name; } public void setName(String name) {  this.name = name; } public Integer getAge() {  return age; } public void setAge(Integer age) {  this.age = age; } public String getSex() {  return sex; } public void setSex(String sex) {  this.sex = sex; } public static String getSignature() {  return signature; } public static void setSignature(String signature) {  User.signature = signature; } @Override public String toString() {  return "User{" +    "name='" + name + '\'' +    ", age=" + age +    ", sex='" + sex +'\'' +    ", signature='" + signature + '\'' +    '}'; }}

(2) 测试类

public class SerializableTest { private static void serialize(User user) throws Exception {  ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("D:\\111.txt")));  oos.writeObject(user);  oos.close(); } private static User deserialize() throws Exception{  ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("D:\\111.txt")));  return (User) ois.readObject(); } public static void main(String[] args) throws Exception {  User user = new User();  user.setName("tyshawn");  user.setAge(18);  user.setSex("man");  System.out.println("序列化前的结果: " + user);  serialize(user);  User dUser = deserialize();  System.out.println("反序列化后的结果: "+ dUser); }}

(3) 结果

先注释掉反序列化代码, 执行序列化代码, 然后修改User类signature = "我的眼里只有你", 再注释掉序列化代码执行反序列化代码, 最后结果如下:

序列化前的结果: User{name='tyshawn', age=18, sex='man', signature='你眼中的世界就是你自己的样子'}反序列化后的结果: User{name='tyshawn', age=18, sex='null', signature='我的眼里只有你'}复制代码

static属性为什么不会被序列化?2021Java面试宝典 

因为序列化是针对对象而言的, 而static属性优先于对象存在, 随着类的加载而加载, 所以不会被序列化.

看到这个结论, 是不是有人会问, serialVersionUID也被static修饰, 为什么serialVersionUID会被序列化? 

其实serialVersionUID属性并没有被序列化, JVM在序列化对象时会自动生成一个serialVersionUID, 然后将我们显示指定的serialVersionUID属性值赋给自动生成的serialVersionUID.












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

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

淘粉8:https://www.ikjzd.com/w/1725

折扣网站:https://www.ikjzd.com/w/74


最近公司的在做服务化,需要把所有model包里的类都实现Serializable接口,同时还要显示指定serialVersionUID的值.听到这个需求,我脑海里就突然出现了好几个问题,比如说:(1)序列化和反序列化是什么?(2)实现序列化和反序列化为什么要实现Serializable接口?(3)实现Serializable接口就算了,为什么还要显示指定serialVersionUID的值?(4)
中转贸易:https://www.ikjzd.com/w/1427
邮乐网购:https://www.ikjzd.com/w/1776
东西网:https://www.ikjzd.com/w/1238
电商选品——如何找到供应商并与其谈判?:https://www.ikjzd.com/home/107252
90后美女资深运营Nancy:不刷单如何快速获得review?:https://www.ikjzd.com/home/367
数据报告 | 北美成购物App第一大市场:https://www.ikjzd.com/home/132305

Shopee注册条件以及入驻流程(2021年最新版本)

Shopee是一个免费入驻的平台,不收取任何入驻费用。现在给大家整理最新的适用的Shopee入驻流程:

2021年Shopee最新最全最详细入驻指南没看先收藏,再也不用乱花冤枉钱

一、首先,入驻必须先要了解入驻渠道

入驻的渠道可分为2种(完全免费啊),说入驻要收费的绝对都骗人的。

1、官网入驻

2、招商经理VIP绿色通道入驻(快速)

这两种入驻渠道有何不同呢?通过Shopee官网入驻(https://shopee.cn/seller)的,你有问题就只能打Shopee上官方客户电话或者发邮件联系Shopee的客服;而通过招商经理VIP绿色通道入驻的,你有问题可以直接联系招商经理!招商经理还能给你一些Shopee运营,推广,设计方面的指导,而且会帮你对接很多东南亚跨境电商运营需要的资源,比如海外仓,物流,客服等等,避免走很多弯路!

1)官网入驻链接:直接打开Shopee中国的官网:https://shopee.cn/seller就可以了;但是这种比较慢(初审5个工作日,复审7个工作日,加起来就是2个多星期了

2)招商经理直接入驻,这个快(只要3~7个工作日),https://www.futurecommerce.cn/shopee-signup

二、其次,先准备好入驻虾皮网(Shopee)需要的提交的材料

1、香港内地有限公司或个体工商户的企业资质的营业执照原件照片(香港的公司执照也可以拿来注册Shopee)-没有营业执照可以找人代理办理,淘宝代办下证也很快,或者自己跑工商局办一张,办证流程很快。

2、法人手持身份证原件照片(手持正反面各一张)照片共2张,照片要清晰,最好上传原件,不要用微信等上传到电脑上传影响照片质量导致审核失败;(单个照片需要小于3M ,太大上传不了

3、法人手持身份证正反面及营业执照视频视频共2个,正面一个,反面一个。同样,视频内容要清晰可见;(单个视频需要小于40M ,时长控制在20秒以内)

4、开店时长超过3个月的相关电商平台链接(淘宝,拼多多,京东,1688、亚马逊、速卖通、ebay、Wish等)

5、公司办公地址例如:F-Commerce, China Beijing 北京市北苑路北***号***楼

6、近三个月内贸的流水订单截图(订单流水金额大于0),企业营业执照入驻不需要流水,但是个体工商户入驻必须要提供流水截图,像国内的淘宝,拼多多等电商平台流水都可以,但是快手电商灯电商平台还不支持。

如果没有流水截图,可以去能的淘宝找人买,搜关键词如:shopee代入驻,但是千万要注意。一份流水只能使用一次。如果多次使用同一份流水(包括PS的流水),会导致入驻不成功。

下面是重复使用同一份流水提交Shopee入驻申请,收到Shopee怀疑虚假材料的邮件,入驻申请被关闭。使用重复流水的严重后果就是,导致该套营业执照作废,永远再也没有入驻Shopee的资格。

如果想要干净,唯一的流水截图,可以私信我,每月免费提供几份流水帮助大家入驻Shopee还是没有问题。

三、准备好资料之后,接下来就是走Shopee入驻流程了

2021年Shopee(虾皮网)最新的入驻流程,一共分为4个步骤

第一步必须要先注册Shopee主账号

有了主账号之后才能进行第二步:申请Shopee线上店铺。

完成第二步环节之后,就会进入第三步资料审核环节,这个环节包括初审复审,如果初审没问题,那么就能直接开店成功,如果提交的审核材料有问题,那么初审就会被驳回,系统会让你修改材料之后,再次提交申请,进入复审。

第四步就是开店任务收到开店任务,就是意味着开店成功了,这个时候要尽快完成新手任务,一周内上传完50个SKU。下面是Shopee官方入驻的截图,供大家参考:

顺便提一下Shopee主账号

为什么Shopee会有主账号呢?

主账号是卖家权限最高的账号,一般是公司的老板或者主管所拥有。主账号是用来管理下面所有账号的,包括店铺账号、员工运营账号的,主账号下的所有子账号拥有的权限各不相同。

一套营业执照只能有一个主账号,一个主账号下面可以有多个店铺账号、员工运营账号。

另外,Shopee申请也是通过主账号来申请的。

主账号的四个作用

1) Shopee入驻时用于提交申请信息,查看申请进度

2) 通过主账户统一设置所有店铺的钱包密码,然后才能前往店铺绑定收款账户

3) 方便您对不同站点的多个店铺进行统一管理

4) 为您的团队成员设置不同的访问权限,对各店铺的使用权限进行配置

四、详细入驻流程实操指南

第一步:点击注册主账号。

注册主账号的链接可以自己进入Shopee中国官网https://shopee.cn/seller,也可以通过招商经理发给你的发的邮件直接点击进入

点击第一个按钮:"点我注册"

第二步填写公司名字,注册电话和邮箱信息

每个信息怎么填,我已经在框框里面给大家备注好了。按照我的提示来弄

第三步:填写注册主账号的相关信息,特别要注意主账号的格式为XXX:main.

第四步:完成手机号码的验证

第五步:完成主账号的注册

好!到此,我们第一个环节,注册主账号的工作就完成了。现在进入第二个环节通过登陆主账号来申请Shopee店铺

接下来就是提交和完善资料:

申请Shopee店铺,需要提交3份资料

第一次提交申请资料,需填写以下信息: 联系人信息,公司信息以及店铺信息

第一步:联系人信息

请注意,建议按照我的模板来进行填写,避免出错

第二步:公司信息

按照框内提示语填写即可

另外需要特别注意以下几点:

1、上传图片:卖家确保证材料中的文字信息,图片都清晰可见,不要用前置摄像机拍摄,建议卖家拍完自行检查无误后再上传。

必须是法人手持的图片,其他人会按照虚假材料处理

2、拍摄视频的技巧:卖家可以先拍一个全景,并且分别聚焦营业执照和身份证(或是其他材料证明)确保看清楚视频内的材料信息

3、若网页多次提交无法成功,可刷新网页尝试,或者先保存草稿,再点击提交,推荐使用Chrome浏览器。

第三步: 填写店铺信息

同样也可以参考我下面的模板来填写:

走完上面这一步,Shopee的主要流程算是基本上已经完成了。现在要做的事情就是定时查看邮箱中,Shopee官方给我们发的"欢迎入驻"的开店成功邮件,见下图:

邮件内容正文如下(谨防假冒):

等待的过程取决大家选择的入驻渠道,通过Shopee官网比较慢,需要15个工作日左右;如果通过招商经理则是3个工作日

五、入驻常见问题及FAQ

1、各种申请补发、申诉链接

1) 申请补发审核链接 https://shopee.wjx.cn/jq/53294427.aspx

2) 申请补发开店链接 https://shopee.wjx.cn/jq/52877378.aspx

3) Reopen的入驻申请 https://shopee.wjx.cn/jq/52885822.aspx

4)申诉链接:https://shopee.wjx.cn/jq/530406

2、Shopee中国官方客服联系方式

Shopee跨境卖家客服联系方式;

邮箱:help@support.shopee.cn

电话:4001268888

3、注册成功后注意事项:

1)开店成功后,请卖家尽快完成50SKU上新,之后一周内运营经理会给卖家发邮件进行企业微信激活,请务必留意邮件(有时会出现在垃圾箱里);

2)前三个月为新卖家孵化期,卖家也可通过官网Shopee大学(https://shopee.cn/college)进行开店前期的运营学习(几乎都有)

3)孵化期有任何店铺操作及运营问题均可以找运营经理或者关注微信公众号"虾皮问问"进行咨询。

4) 每个营业执照只能先申请一个店铺,开店成功后出5单并上传200款产品即可找运营经理申请下一个店铺,以此类推。(虾皮8个站点都可以开店,每个站点最多开三个店铺);

4、Shopee的入驻政策是什么?

针对中国跨境卖家,无平台使用费、年费,无保证金。

5、Shopee主要的热门品类是什么?

Shopee是一个备受女性用户青睐的移动电商平台,服装配饰、美妆、母婴、家居装饰、流行鞋包等依然是主要品类。同时,随着男性用户及不同消费需求的增加,3C数码,男装,户外用品等品类也属于比较火的招商品类。

6、在官网提交申请以后,我需要做什么?

可以定期密切关注官网的入驻进度和邮箱:

1)通过https://shopee.cn/seller点击查看入驻记录,查看自己的入驻进度;

2)也可以关注自己提交的邮箱,一般在5-7个工作日内会收到邮件,如果没有收到,务必查看垃圾箱;

3)保持电话畅通,Shopee中国在上海有办事处,务必接听021开头的电话,审核人员会根据情况联系你

7、为什么我递交的申请没有收到回复?

通常有以下可能的原因:

1)您的邮箱错误/异常/被系统屏蔽导致无法接收到邮件,您也可以通过https://shopee.cn/seller点击查看入驻记录,查看自己的入驻进度

2)被您拒接电话或者没有及时接听,您也可以通过https://shopee.cn/seller查看审核进度

3)查询到您的申请之前已经递交过或者发现您的申请跟已经开店的卖家重复

8、什么叫做重复申请?

通常有以下两种情况:

1)之前递交过申请,又再次递交申请,审核会保留一个继续审核,然后关闭其他申请

2)卖家的账户与其他账户存在关联,被系统判定为"重复入驻",该行为属于平台禁止行为。

9、如果我没有收到开店回复,需要更改手机号码或者邮箱地址,或者需要修改电话接收验证码应该如何操作?

Shopee.cn入驻卖家可在入驻记录界面自行选择注册店铺,如果通过招商经理入驻未收到开店邮件需要点击https://shopee.wjx.cn/jq/52877378.aspx 进行申请。

10、Shopee APP下载链接:

iOS系统:请前往app store直接搜索关键字"Shopee"下载,台湾站需购买台湾苹果ID登录后下载

11、平台开店收费:

平台注册免收注册费,年费和押金,入驻新卖家前三个月免收佣金,三个月后收5%-6%佣金(2019/07/16开始)。请卖家通过官方渠道,如:官网,官方微信公众号,官方招商经理绿色入驻通道进行合法合规入驻,保障卖家的账号及资金安全。

12、个体营业执照与企业营业执照:

个体户执照只可以首站开台湾,看清楚是只可以首站是台湾,后面可以开其他站点,只要开通虾皮后就不区分个体还是企业,享受同样的权益;


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

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

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

勤商网:https://www.ikjzd.com/w/2219

米谷:https://www.ikjzd.com/w/1788

Shopee注册条件以及入驻流程(2021年最新版本)

Shopee是一个免费入驻的平台,不收取任何入驻费用。现在给大家整理最新的适用的Shopee入驻流程:2021年Shopee最新最全最详细入驻指南,没看先收藏,再也不用乱花冤枉钱。一、首先,入驻必须先要了解入驻渠道。入驻的渠道可分为2种(完全免费啊),说入驻要收费的绝对都骗人的。1、官网入驻2、招商经理VIP绿色通道入驻(快速)这两种入驻渠道有何不同呢?通过Shopee官网入驻(https://s