2021年1月4日星期一

凹凸技术揭秘·羚珑页面可视化·成长蜕变之路

作者: 凹凸曼

前言

京东零售集团 · 用户体验设计部打造的「羚珑智能设计平台」于 2019 年 5 月为内部运营及商家推出了智能页面设计工具,羚珑智能页面设计是一款在线可视化页面搭建平台,拥有在线搭建 PC、H5、小程序等多平台页面能力,覆盖频道页、活动页、店铺页、滑屏宣传页、答题类、互动游戏类、小程序等多个应用场景,为商家、运营人员提供在线服务,让不懂设计、不懂代码的用户也可以一键上线页面。

基于「Taro」强大的多端能力,能够实现一次搭建,生成 H5、小程序、RN等跨端应用,极大地解决重复开发的问题,提高开发效率。

聊聊羚珑智能页面设计的历史

业务中求突破

在 2017 年以前,京东线上大量的 PC 频道页都是通过手工开发的,开发周期非常长,当时公司内部也有一个 CMS 系统,前端开发完的页面,需要通过这个系统进行发布上线。整个页面的开发依赖这个系统,并且需要在线上完成这些工作。另外还要录入一些数据坑位,才能预览到页面。当时为了解决前端的开发效率,我们把线上开发及数据坑位录入的工作,搬到本地通过一系列自研工具完成。完全颠覆了整个频道页的开发方式,整体的开发思路沿用至今。

日积月累,我们手上已经开发了非常多的频道页,而且到后面发现,很多页面都非常相似,只是一些样式上的差异。当发现工作重复的时候,应该是造车的时候了,可以让我们跑得更快。

搭建平台雏形

羚珑智能页面设计的前身,它只能说是一个页面拼装系统,有一位频道运营的同事找过来,希望能快速开发一个页面,问:"能不能把线上的某几页面中的不同楼层拼在一起,快速上线几个页面",很显然对于不懂技术的人来说似乎非常简单的事情,但是对于我们开发来说,并非如此简单。我们尝试把不同页面的代码找出来,快速开发一个新的页面,发现很多问题,如样式冲突、脚本冲突等一系列问题。

于是后面我们对已有的页面,进行楼层级的改造,改造后的楼层,能够独立运行,并且不同的代码及样式只作用于当前楼层,这样,不同楼层组合出来的页面,能够正常显示。

经过改造后的公共楼层,为了让用户能够自由组合楼层去拼装出一个页面,我们搭建了一个在线可视化平台,把所有公共楼层以列表形式展示出来,支持通过拖拽形式组装页面,支持一些常规的属性配置,如公共头部、颜色等,基本上能满足部分用户诉求。

拼装系统

真正的可视化之路

页面拼装系统的痛点

页面拼装系统,它主要解决了开发及用户的一小部分诉求,离真正的可视化之路,还很远。很快拼装系统暴露了它一些问题:

  1. 在技术层面,由于楼层的粒颗度不够小,要做一些布局上的调整,需要调整到代码才能支持,缺乏一定的灵活性。以及使用过时的技术栈 jQuery,后期维护成本也非常高。
  2. 在用户运营方面,在我们的平台上不支持根据真实的数据预览效果,系统只是完成了页面框架搭建的事情。
  3. 在数据录入方面,还是难以摆脱前面提及的 CMS 系统,用户需要回到 CMS 系统上面填写真实的素材,所以存在不同系统之间的切换。

可视化编辑器设计思路

给合拼装系统的一些问题,我们开始重新设计一款真正基于组件化的页面搭建平台。

羚珑智能页面可视化编辑器,包括几个基本核心要素:组件库、设计器、属性编辑。

  1. 组件库分为基础组件和业务组件,由于 PC 页面比较复杂,有布局的概念,所以我们需要设计一套布局系统,借鉴于业界优秀的栅格设计思想,再结合我们页面的实际情况,完成了页面的框架与基础组件设计。业务组件穷举了大量线上页面,把常用的组件进行组件化改造,并且支持灵活的属性配置。

  2. 设计器负责组件拖拽、组件加载、渲染逻辑、组件树操作、动态属性注入等功能。通过高阶组件的方式,能帮助我们轻松给组件添加一些特定功能。

  3. 属性编辑,组件每个属性都对应着一个类型,那么它属性数据编辑的方式也不一样。我们设计的类型基本覆盖所有组件。另外还设计了一套条件规则,让属性之间能够联动显示。

实际上要完成一个高可用的可视化编辑器,需要了解的知识点与细节非常之多,这里不做详细展开介绍。

经过近一年的沉淀,频道页开发已经从人工开发,全面转型为可视化,目前京东线上大部分频道页都是通过自助搭建方式完成上线。

PC搭建平台

编辑器全面升级

2019年初,借鉴于过去在公司内可视化领域取得了小有成绩,我们产品方向重新定位为聚焦商家在线上经营过程中的页面设计需求,希望通过降低页面上线门槛,从而提高商家、运营人员上线页面的效率,因此,对页面可视化编辑器进行了一次迁往移动端的升级。整个视觉风格及交互方式,都进行了全面升级,去除了复杂的布局,用户使用起来更加便捷。

编辑器全面升级

组件库升级

我们把组件库升级为一个全新的平台「Quark」,它作为一个独立的设计资产平台。为编辑器提供组件、图标库等物料,目前已经沉淀的官方组件有50多个,200多种布局形态,能够满足大部分页面需求。同时还支持公司内部其他研发团队开发自己的组件,接入到我们的可视化平台中,通过我们的上线页面服务上线。

组件库升级

属性面板升级

配置体验影响用户搭建效率: 用户在日常使用编辑器时,需通过更改组件配置项以满足页面个性化需求。我们发现,组件配置项的面板结构复杂、组件配置项理解成本高、操作方式不符合用户习惯等体验问题已经严重影响了用户的配置体验与搭建效率。

旧版组件配置项面板: 分类以「功能」、「样式」、「数据」做区分,用户理解成本高,经常出现同一配置项出现在多个分区的情况,极大增加了用户的操作成本。

新版组件配置项面板: 重新定义了面板结构规范,从用户配置操作行为区分,划分为「组件名称」、「组件布局」、「数据录入」、「样式配置」与「楼层配置」5大区域,不仅利于用户理解,缩短了用户的操作路径,对于产品本身而言,清晰的布局划分与功能定义还提效了新增组件的配置项拆解工作。

属性面板升级

改版前 v.s 改版后 配置项面板整体结构分区、配置项元件化示意

元素编辑器

当我们的官方组件无法满足用户个性化需求的时候,我们思考着能否为用户提供一种自定义组件的能力,所以元素编辑器应运而生。它提供了一个自定义画板的能力,用户可以自由拖拽一些基础元素,如文本、图片、图形等,添加上一些自定义事件和动画,一个生动的的自定义组件,便能轻松完成。

元素编辑器

设计资产沉淀

设计师沉淀了上千套模板提供给用户使用,这些模板全部接入「羚珑」智能图片设计能力,用户能够直接在线修改图片素材内容,轻松实现高质量的页面。另外我们的模板还支持智能配色,用户可以根据配色方案进行页面整体换肤。

设计资产沉淀

羚珑智能作图

为解决用户做图的痛点,羚珑页面编辑器与羚珑图片编辑器深度结合,为用户提供在线图片编辑的能力,用户无须使用一些做图软件,便能在线上完成图片编辑。

羚珑智能作图

多应用场景适配

活动场景

我们的活动页是如何完美适配移动端和桌面端的呢?

一个移动端页面要适配桌面端,通常的做法是通过响应式的手段来实现,这种方式比较简单粗暴,但是效果其实并不好,例如移动端的首焦图,如果在桌面端等比放大,那将会占满首屏,用户体验极差。

所以我们采取了一系列的转换规则来实现:

举个例子

PC端的内容其实是跟移动端的内容做了对应关系。并且根据端的特性做了一系列通用的变换规则。比如秒杀商品中秒杀倒计时与商品在移动端为上下布局,而在PC端则为左右布局,商品单元在移动端为一排2个,在PC端则增加为一排4个。

秒杀商品

转化的规则是什么?

拉伸: 在布局不发生改变、内容没有增减的情况下进行拉伸,如广告组模块:

拉伸

文本: 文本内容较重要时我们会做无增减的拉伸,当空间位置受限,同时文本内容又不是非常关键的信息时会选择文本截断的方式进行拉伸。

文本

图片: 一般来说细节图去做等比拉伸,这样尽最大可能的保证两端效果的一致性。

图片

由于移动端宽高比相比 PC 端要小很多,为了保证在大屏上的效果不至于出现"霸屏"的情况,还会有取舍的进行裁切。

图片

模块: 移动端通常会将一个楼层划分为一个模块,对应到PC端会将模块在横向进行拉伸。

模块

布局改变: 布局发生改变时需要将元素进行重排

如头图banner模块,如果采取等比拉伸的策略会导致头图特别高,在 PC 端影响第一屏的页面效率,如果采取裁切的形式将会影响图片的展示效果,所以采取图片内元素重排的形式进行变化。

布局改变

锚点导航模块在移动端是横向的导航,上滑页面时会吸附到页面的顶部,而在 PC 端我们一般会吸附在页面的侧边固定位置。

锚点导航

内容增减: 单元重复展示模块一般会用内容增加和删减的形式来处理,比如商品模块在 PC 端横向空间比较大的情况下会多展示单元格数。

内容增减

结合这些转换规则,能让用户只要搭建一次页面,便能快速同时生成两端活动页,投放到移动、PC端平台,节省运营成本。

互动营销场景

过去商家想做一个互动类的页面,基本上是很难实现的。有着成本高、开发周期长等问题。互动营销场景为了解决这一系列痛点,把互动玩法进行组件拆解,再通过页面可视化平台进行配置上线。原来一个互动玩法从方案到上线大概需要一个月左右,现在通过可视化搭建方式只需要十分钟,大大提高了效率。

互动营销场景

互动营销场景2

小程序场景

我们是京东内部首个小程序可视化搭建平台,借助「Taro」的跨端能力,我们平台天然具备了发布跨端小程序页面的能力,结合京东「开普勒平台」的黄金流程,快速产生一套完整的电商小程序代码。支持发布微信、百度等多个小程序平台,完成「九阳」、「戴森」等多个商家小程序上线。

小程序场景

小程序场景

店铺场景

店铺场景下,我们实现了三个重要的应用场景:

  1. 店铺首页,为商家提供店铺首页搭建的能力,并实现了把设计结果与「京东智铺」的素材打通,满足商家店铺首页装修诉求。

店铺首页

  1. 店铺推广,一个基于元素编辑器扩展的场景,提供滑屏类页面活动搭建的能力,提供了极具个性化宣传页能力。

店铺推广

  1. 店铺购物小程序,以中心化小程序的形式为商家提供私域流量工具,提供丰富的营销工具,如抽奖、关注有礼、全景馆等多种玩法。

店铺购物小程序

编辑器积木化

为何要做编辑器积木化?

  1. 随着场景越来越多,编辑器的代码逻辑也变得非常复杂,不同场景都有一些特殊的功能逻辑,每个场景又分为模板搭建端和用户使用端,在编辑器中的表现形式不同,而且编辑器与平台的业务逻辑强耦合。
  2. 公司内部很多平台,都有可视化搭建的诉求,如果重新开发一个可视化编辑器,少则至少需要半年时间。如果直接复用我们的编辑器积木,将会大大提升效率。也减少公司内部重复造车的情况。
  3. 我们编辑器的研发团队人力有限,不能及时满足各场景的需求,扩展性差。
  4. 改动一个小小的功能,整个编辑器都需要发布,如果出问题,所有场景都受影响。
  5. 编辑器的功能越来越多,体积也随之上升,时间久了,整个编辑器变得非常臃肿。

为了解决这些问题,我们进行了一次编辑器的架构全面升级

基于配置的插件化架构

我们将编辑器划分为:主设计器 + 插槽区域,分别用两种颜色表示:

主设计器

  1. 主设计器:负责编辑器核心逻辑,配置文件解析、插件加载器、组件加载、全局状态管理等;
  2. 插槽区域:编辑器会预留几个主插槽位置用来加载插件功能;

我们大致来了解一下整个编辑器的工作流程:

  1. 编辑器读取配置文件,配置文件是对整个编辑器的描述,包括所有插件的配置。
  2. 编辑器中提供几个核心位置以插槽的形式,读取配置文件中的插件。
  3. 编辑器的功能抽离成一个个插件文件,通过异步的形式进行加载,这样做的好处是可以按需加载、逻辑解耦、有利于提高系统的扩展性。
  4. 每个插件加载可以动态注入到编辑器应用中,同时它能够共享编辑器的状态,完成插件之间通讯以及调用编辑器的数据和方法。
  5. 编辑器实际上只做一件事情,就是页面描述的生成,其他业务逻辑交业务侧做,这样的好处是能使编辑器完全解耦独立运行。只需要做一些与编辑器、插件的通信接口,就能快速使用起来。
  6. 各使用场景只需要关注自己的编辑器应用配置即可,互相不影响,包括插件个性化升级。

对外赋能应用

目前,我们的编辑器积木化解决方案已经应用在京东内部其他平台当中,如京东数科江湖平台、京东ME行业版平台等,作为页面设计引擎助力各平台的商业化快速发展。

对外赋能应用

结语

目前为止,业界有很多优秀的页面可视化产品,为何一直没有尽头,一直有新的平台出现,但都没有最终极的解决方案,那是因为没有真正的「银弹」,只有适应业务发展的产品,才是最适合的。未来我们将会往智能化页面设计的方向努力,必然会擦出新的火花,敬请期待!

参考

  • 羚珑组件智能编辑新体验
  • 揭秘羚珑页面-多端智能转换
  • 智能页面引擎全新亮相 页面设计中台初长成——架构篇

欢迎关注凹凸实验室博客:aotu.io

或者关注凹凸实验室公众号(AOTULabs),不定时推送文章:

欢迎关注凹凸实验室公众号









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

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

薇美铺:https://www.ikjzd.com/w/2312

转运四方:https://www.ikjzd.com/w/1342


作者:凹凸曼前言京东零售集团·用户体验设计部打造的「羚珑智能设计平台」于2019年5月为内部运营及商家推出了智能页面设计工具,羚珑智能页面设计是一款在线可视化页面搭建平台,拥有在线搭建PC、H5、小程序等多平台页面能力,覆盖频道页、活动页、店铺页、滑屏宣传页、答题类、互动游戏类、小程序等多个应用场景,为商家、运营人员提供在线服务,让不懂设计、不懂代码的用户也可以一键上线页面。基于「Tar
香港会计师事务所:香港会计师事务所
文化衫事件:文化衫事件
2020深圳万圣节带孩子去哪玩?深圳野生动物园万圣节表演几:2020深圳万圣节带孩子去哪玩?深圳野生动物园万圣节表演几
去香港买什么洗发水?能带多少?:去香港买什么洗发水?能带多少?
卖家收到律师函?新律所维权iPad保护套产品!:卖家收到律师函?新律所维权iPad保护套产品!

医生提醒:人体开始衰老的5个迹象,哪怕占一个,都该保养了!

核心提示:"唉!人老了,不中用了,一身都是病……"今年73岁的老朱,退休前在一家事业单位工作。单位福利不错,年年组织体检。

"唉!人老了,不中用了,一身都是病……"今年73岁的老朱,退休前在一家事业单位工作。单位福利不错,年年组织体检。新的体检报告出来后,老朱会拿出原来的体检报告比对,数据上下浮动超过1,就会有点紧张。

而后,老朱的外孙去做了一个入职体检,非常简单。但是这份体检报告让老朱心生疑惑,因为他发现外孙的健康指标非常好,竟然没有一项超标的。

老朱觉得,自己天天锻炼身体、健康饮食,凭什么指标就不能达到年轻人的水平?

别和年轻人比数据,健康不是比数据!

很多老年人体检时,都会被身体各种偏高的指标吓到,还经常拿比自己小几十岁的年轻人体检数据对比,发现差值如此之大后,更是对身体产生各种怀疑。

北京医院院长王建业看来,其实很多数值偏高的老年人,也属于健康范畴。他表示,人到老年,健康参考指标都会发生变化。

人的健康状况在25岁时达到顶峰,然后逐渐走向衰老,但过程比较缓慢,不易察觉。到过了45岁,进程加快,不少人进入更年期,才开始警惕:走向衰老了!

衰老是一种自然规律,如同花开花谢,日出日落,不可避免。老年人应该正确面对衰老,而不是把所有衰老的正常表现看成是各种病。

比如脸上的黑斑、头顶的白发、胃口变小等等都仅是机体功能永久必衰的自然表现。

人类39岁开始衰老

"老了,老了……"时常听到十几岁、二十几岁的年轻人遇到做事力不从心,就喊老,但真到上了年纪的老人,反而不服老了,时常喊着:"我还年轻呢!"

我们究竟何时开始变老,美国加州大学洛杉矶分校近日的一项研究给出了答案——人类衰老开始于39岁。

研究人员发现衰老源于大脑慢慢停止生成髓鞘。此次研选取了72名23~80岁的健康男性志愿者,对比他们的运动速度与髓鞘数量,发现39岁可到达高峰值后,就开始逐渐停止生成。

髓鞘是神经细胞的保护层,是神经细胞轴突外面的一层膜。髓鞘退化的最早迹象是反射速度的下降,也就意味着反应不再灵活。

随着神经细胞信号丢失或扭曲,神经功能紊乱,就会导致颤抖、平衡和协调力变差以及记忆减退;同时,疲劳感增加,活动量大时容易疲惫不堪。这也是大多老年人上了年纪的外在表现。

衰老是人类进化无法避免的课题,每个人的遗传因素、生活经历、生活习惯、心理状态都不一样,步入老年的界限也并没有太准确的时间。但若是轻易通过体检数据判断自己因为年老,一身病痛,那就是太"小瞧"自己了。

易忽视的五大衰老信号

发现自己变老了,真得是一朝一夕之间吗?其实很早之前,这些身体部位就已经有变老的迹象,只是细微的变化,让我们难以发觉。

1.臀部变大

浑圆紧实的臀部是年轻人身材姣好的象征。随着年龄增长,臀部会慢慢下垂以及外扩。解放军总医院第一附属医院章亚东称,久坐族、肥胖者臀部脂肪堆积更快,长期久坐就意味着缺乏运动,如再摄入大量高糖高脂的食物,脂肪比例相对就会高于肌肉比例。

2.额头变大

衰老最明显的特征是头发的老化。多表现为头发变白、开始脱发,尤其是发际线的上移,已成为现在年轻人关注的重点。

南京市中西医结合医院杜长明医师表示经常熬夜、精神压力太大导致内分泌失调是脱发的主要原因。经常染发、烫发也会导致化学性脱发,破坏毛发组织,损伤头皮。

3.腰围变大

不少女性的腰围在更年期暴涨,从前的"小蛮腰",如今一下子变成"救生圈"。

中国营养学会理事范志红解释,这不仅仅是因为年龄增长导致身体代谢缓慢,而是综合多种因素所引起的。雌激素水平的降低也会影响身体脂肪的代谢。

4.脚掌变大

有没有发现老年人的鞋子,都是偏大偏松软。中国中医科学院桑志成医师认为:年龄大了,足底肌肉和韧带会发生退行性变化,足弓塌陷,弹性丧失,同时肌腱和韧带连接微小的骨头失去弹性,脚会变得更长更宽。

5.牙缝变大

解放军总医院口腔科李雅彬医师表示:口腔也是会衰老的。当一个人的牙齿与牙齿之间的牙缝开始变宽,并且越来越宽,这就表明牙齿出现了问题,有可能是牙龈萎缩,也有可能是牙龈周围炎症导致的。

这是最简单的延缓衰老方法!一分钱不花

当发现眼角细小的皱纹时,我们认识到自己开始走向衰老,多希望时间可以慢一点,到底有没有什么"神丹妙药"可以让老去的速度缓慢些呢?

事实上真有"延缓术",且不用花费高昂的价格。

打太极:有助心脏康复

《美国心脏协会杂志》的研究报告中发现,太极缓慢而轻柔的动作或许能作为一种可选择的方法帮助患者心脏康复。

跳舞:可延缓大脑衰老

德国一项研究提示,经常参加体育锻炼可以逆转老年人的大脑衰老,而运动中又以舞蹈尤甚。

跑步:早亡风险降低40%

《心血管疾病进展》所发布的关于早亡风险的研究结果显示跑步1小时可以将寿命延长7个小时,跑步运动会将一个人的早亡风险降低40%。

正确认识衰老,才能更好地预防衰老,延缓衰老。而老年人也要每年坚持一次身体检查,随时关注自己身体变化,及早发现疾病,不要把亚健康当作是正常。

参考资料:

[1]《人类39岁开始衰老》.人民网-生命时报.2018-06-15

[2]《老人们,别把衰老当病治!很多病其实并不是病,别再那么胆战心惊!》.健康时报.2017-04-25


[3]《易忽视的五大衰老信号》.健康时报.2019-05-24

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

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

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

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

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

敏思达:https://www.ikjzd.com/w/2304


核心提示:"唉!人老了,不中用了,一身都是病……"今年73岁的老朱,退休前在一家事业单位工作。单位福利不错,年年组织体检。 "唉!人老了,不中用了,一身都是病……"今年73岁的老朱,退休前在一家事业单位工作。单位福利不错,年年组织体检。新的体检报告出来后,老朱会拿出原来的体检报告比对,数据上下浮动超过1,就会有点紧张。而后,老朱的外孙去做了一个入职体检,非常简单。但是这份体检报告让老朱心生疑惑,因
易佰:易佰
ola:ola
深圳东部华侨城景区门票要多少?:深圳东部华侨城景区门票要多少?
深圳企业复工困难重重,这几条就足以拦住开工之路……:深圳企业复工困难重重,这几条就足以拦住开工之路……
十一去三亚好还是鼓浪屿好?:十一去三亚好还是鼓浪屿好?

Synchronized和Lock的区别

引言

  在多线程中,为了使线程安全,我们经常会使用synchronized和Lock进行代码同步和加锁,但是具体两者有什么区别,什么场景下适合用什么可能还不大清楚,主要的区别大致如下:

区别

    1、synchronized是java关键字,而Lock是java中的一个接口

    2、synchronized会自动释放锁,而Lock必须手动释放锁

    3、synchronized是不可中断的,Lock可以中断也可以不中断

   4、通过Lock可以知道线程有没有拿到锁,而synchronized不能

    5、synchronized能锁住方法和代码块,而Lock只能锁住代码块

    6、Lock可以使用读锁提高多线程读效率

    7、synchronized是非公平锁,ReentranLock可以控制是否公平锁

 

从Lock接口中我们可以看到主要有5个方法,这些方法的功能从注释中可以看出:

1 lock():获取锁,如果锁被暂用则一直等待 2 unlock():释放锁 3 tryLock(): 注意返回类型是boolean,如果获取锁的时候锁被占用就返回false,否则返回true4 tryLock(long time, TimeUnit unit):比起tryLock()就是给了一个时间期限,保证等待参数时间 5 lockInterruptibly():用该锁的获得方式,如果线程在获取锁的阶段进入了等待,那么可以中断此线程,先去做别的事   通过 以上的解释,大致可以解释在上个部分中"锁类型(lockInterruptibly())","锁状态(tryLock())"等问题,还有就是前面子所获取的过程我所写的"大致就是可以尝试获得锁,线程可以不会一直等待"用了"可以"的原因。

lock():

 1 public class LockTest { 2  private Lock lock = new ReentrantLock(); 3  4  private void method(Thread thread) { 5   lock.lock(); 6   try { 7    System.out.println(thread.getName() + " has gotten the lock!"); 8   } catch (Exception e) { 9    e.printStackTrace();10   } finally {11    System.out.println(thread.getName() + " has unlocked the lock!");12    lock.unlock();13   }14  }15 16  public static void main(String[] args) {17   final LockTest test = new LockTest();18 19   Thread t1 = new Thread(new Runnable() {20    @Override21    public void run() {22     test.method(Thread.currentThread());23    }24   }, "t1");25   Thread t2 = new Thread(new Runnable() {26    @Override27    public void run() {28     test.method(Thread.currentThread());29    }30   }, "t2");31   t1.start();32   t2.start();33  }34 35 }

运行结果:

t1 has gotten the lock!t1 has unlocked the lock!t2 has gotten the lock!t2 has unlocked the lock!

 

tryLock():

 1 public class LockTest { 2  private Lock lock = new ReentrantLock(); 3  4  private void method(Thread thread) { 5   6   if (lock.tryLock()) { 7    lock.lock(); 8    try { 9     System.out.println(thread.getName() + " has gotten the lock!");10    } catch (Exception e) {11     e.printStackTrace();12    } finally {13     System.out.println(thread.getName() + " has unlocked the lock!");14     lock.unlock();15    }16   } else {17    System.out.println("I'm "+thread.getName()+". Someone has gotten the lock!");18   }19  }20 21  public static void main(String[] args) {22   LockTest test = new LockTest();23 24   Thread t1 = new Thread(() -> test.method(Thread.currentThread()), "t1");25   Thread t2 = new Thread(new Runnable() {26    @Override27    public void run() {28     test.method(Thread.currentThread());29    }30   }, "t2");31   t1.start();32   t2.start();33  }34 }

运行结果:

t1 has gotten the lock!t1 has unlocked the lock!I'm t2. Someone has gotten the lock!

看到这里相信大家也都会使用如何使用Lock了吧,关于tryLock(long time, TimeUnit unit)和lockInterruptibly()不再赘述。前者主要存在一个等待时间,在测试代码中写入一个等待时间,后者主要是等待中断,会抛出一个中断异常,常用度不高,喜欢探究可以自己深入研究。











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

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

net-a-porter:https://www.ikjzd.com/w/2132

shopyy:https://www.ikjzd.com/w/1661


引言在多线程中,为了使线程安全,我们经常会使用synchronized和Lock进行代码同步和加锁,但是具体两者有什么区别,什么场景下适合用什么可能还不大清楚,主要的区别大致如下:区别1、synchronized是java关键字,而Lock是java中的一个接口2、synchronized会自动释放锁,而Lock必须手动释放锁3、synchronized是不可中断的,Lock可以中断也可以不中断4
汇通天下:汇通天下
c88:c88
爬山看夜景 武汉三大地点推荐:爬山看夜景 武汉三大地点推荐
口述:90后娇妻欲望强 我不行她就睡邻居90后妻子欲望:口述:90后娇妻欲望强 我不行她就睡邻居90后妻子欲望
东莞风车节在哪里?2020东莞风车节时间地点票价?:东莞风车节在哪里?2020东莞风车节时间地点票价?

JVM 常用命令行工具


本文部分摘自《深入理解 Java 虚拟机第三版》


基础故障处理工具

Java 开发人员肯定都知道 JDK 的 bin 目录下有许多小工具,这些小工具除了用于编译和运行 Java 程序外,打包、部署、签名、调试、监控、运维等各种场景都可能会见到它们的影子

本文主要介绍的是用于监视虚拟机运行状态和进行故障处理的工具,根据软件可用性和授权的不同,可以分成三类:

  • 商业授权工具:主要是 JMC(Java Mission Control)及它要使用到的 JFR(Java Flight Recorder)。JMC 在个人开发环境中使用是免费的,但在商业环境中使用则需付费
  • 正式支持工具:这一类工具属于长期被支持的工具
  • 实验性工具:这一类工具带有实验性质,日后可能会转正,也可能会在某个 JDK 版本中无声无息地消失

虚拟机进程状况工具

使用 jps(JVM Process Status Tool)可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(main 函数所在的类)名称以及这些进程的本地虚拟机唯一 ID(LVMID,Local Virtual Machine Identifier)

该命令可以获取虚拟机进程的 LVMID,从而定位想要监控的程序,而 LVMID 一般与操作系统的进程 ID 一致

jps [options] [hostid]

jps 也可以通过 RMI 协议查询开启了 RMI 服务的远程 Java 虚拟机进程状态,参数 hostid 为 RMI 注册表中注册的主机名

jps 的其他常用选项如表:

选项作用
-q只输出 LVMID,省略主类的名称
-m输出虚拟机进程启动时传递给主类 main() 函数的参数
-l输出主类的全名,如果进程执行的是 JAR 包,则输出
-v输出虚拟机进程启动时的 JVM 参数

虚拟机统计信息监视工具

jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具,可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据

jstat [ option vmid [interval[s|ms] [count]] ]

如果是本地虚拟机进程,VMID 与 LVMID 是一致的;如果是远程虚拟机进程,那 VMID 的格式应当是

[protocaol:][//]lvmid[@hostname[:port]/servername]

参数 interval 和 count 代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每 250 毫秒查询一次进程 2764 的垃圾收集情况,一共查询 20 次,那命令应当是

jstat -gc 2764 250 20

选项 option 代表用户希望查询的虚拟机信息,主要分三类:类加载、垃圾收集、运行期编译状况等

选项作用
-class监视类加载、卸载数量、总空间以及类装载所耗费的时间
-gc监视 Java 堆状况,包括 Eden 区、两个 Survivor 区、老年代、永久代等的容量、已用空间、垃圾收集时间合计等信息
-gccapacity监视内容与 -gc 基本相同,但输出主要关注 Java 堆各个区域使用到的最大、最小空间
-gcutil监视内容与 -gc 基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause与 -gcutil 功能一样,但会额外输出导致上一次垃圾收集产生的原因
-gcnew监视新生代垃圾收集情况
-gcnewcapacity监视内容与 -gcnew 基本相同,但输出主要关注使用到的最大、最小空间
-gcold监视老年代垃圾收集情况
-gcoldcapacity监视内容与 -gcold 基本相同,但输出主要关注使用到的最大、最小空间
-gcpermcapacity输出永久代使用到的最大、最小空间
-compiler输出即时编译器编译过的方法、耗时等信息
-printcompilation输出已经被即时编译的方法

Java 配置信息工具

jinfo(Configuration Info for Java)的作用是实时查看和调整虚拟机各项参数,使用 jps 命令的 -v 参数可以查看虚拟机启动时显示指定的参数列表,获取 pid

jinfo [option] pid

使用 -flag <name> 选项打印虚拟机标记参数的值,name 表示虚拟机标记参数的名称

jinfo -flag PrintGC 21768

使用 -flag [+|-]<name> 选项可以开启或关闭虚拟机表示参数,+ 表示开启,- 表示关闭

jinfo -flag +PrintGC 21768jinfo -flag -PrintGC 21768

使用 -flag <name> = <value> 可以设置虚拟机标记参数的值,但并不是每个参数都可以被动态修改

jinfo -flag HeapDumpPath=C:\error.hprof 21768

剩下的常用选项如表

选项作用
-flags打印虚拟机参数,如 -XX:NewSize
no option不带任何选项时,会同时打印虚拟机参数和系统参数
-sysprops打印系统参数
-h | -help打印帮助信息

Java 内存映射工具

jmap(Memory Map for Java)命令用于生成堆转储快照,还可以查询 finalize 执行队列、Java 堆和方法区的详细信息,如空间使用率、当前用的是哪种收集器等

jmap [option] vmid

option 选项的合法值与具体含义

选项作用
-dump生成 Java 堆转储快照,格式为 -dump:[live,]format=b,file=<filename>,其中 live 子参数说明是否只 dump 出存活的对象
-finalizerinfo显示在 F-Queue 中等待 Finalizer 线程执行 finalize 方法的对象
-heap显示 Java 堆详细信息,如使用哪种回收期、参数配置、分代状况
-histo显示堆中对象统计信息,包括类、实例数量、合计容量
-permstat以 ClassLoader 为统计口径显示永久代内存状态
-F当虚拟机进程对 -dump 选项没有响应时,可使用该选项强制生成 dump 快照

虚拟机堆转储快照分析工具

JDK 提供 jhat(JVM Heap Analysis Tool)命令和 jmap 搭配使用,用来分析 jmap 生成的堆转储快照。不过 jhat 的分析功能相等简陋,一般会使用其他功能更强大的分析工具

jhat 内置一个简单的 web 服务器,此命令执行后,jhat 在命令行里显示分析结果的访问地址,可以用 -port 选项指定端口

有时 dump 出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数

jhat -J-Xmx512m <heap dump file>	# 这个内存大小可根据自己电脑进行设置

Java 堆栈跟踪工具

jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为 threaddump 或 javacore 文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂起等

jstack [option] vmid

option 选项的合法值与具体含义如表

选项作用
-F当正常输出的请求不被响应时,强制输出线程堆栈
-l除堆栈外,显示关于锁的附加信息
-m如果调用到本地方法的话,可以显示 C/C++ 的堆栈

从 JDK5 开始,java.lang.Thread 类新增了一个 getAllStackTraces() 方法用于获取虚拟机中所有线程的 StackTraceElement 对象,使用这个方法可以完成 jstack 的大部分功能,在实际项目中可以调用这个方法做一个管理员页面,随时使用浏览器来查阅线程堆栈










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

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

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

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


本文部分摘自《深入理解Java虚拟机第三版》基础故障处理工具Java开发人员肯定都知道JDK的bin目录下有许多小工具,这些小工具除了用于编译和运行Java程序外,打包、部署、签名、调试、监控、运维等各种场景都可能会见到它们的影子本文主要介绍的是用于监视虚拟机运行状态和进行故障处理的工具,根据软件可用性和授权的不同,可以分成三类:商业授权工具:主要是JMC(JavaMissionControl)及
ishare:ishare
mav:mav
虾皮Shopee新手卖家想安全快速度过孵化器?需做好这几点!:虾皮Shopee新手卖家想安全快速度过孵化器?需做好这几点!
韶关浈江樱花公园新春樱花节举办时间地点?2020浈江樱花公:韶关浈江樱花公园新春樱花节举办时间地点?2020浈江樱花公
清远宝晶宫油菜花开了吗?最佳赏花时间是什么时候?:清远宝晶宫油菜花开了吗?最佳赏花时间是什么时候?

2021年1月3日星期日

卖家如何防跟卖?_防跟卖技巧

卖家如何防跟卖?_防跟卖技巧

跟卖制度是亚马逊允许的政策,他的前期初衷是为了减少平台同类商品堆砌,让客户可以选择更低更好价格。但是这也是产生平台漏洞的原因,很多卖家会恶搞你,或者低价跟卖不发货。让你listing排名下跌。所以做亚马逊很头疼的问题就是经常赶跟卖和防止跟卖。赶跟卖的方式五花八门,有黑科技、有暴力手段、也有白帽手法。白帽手法就是报官方活动,完全合规的方法。

常见的有

Transparency program(亚马逊透明计划)

Amazon Exclusives(独家销售计划)

Amazon Project Zero(亚马逊零计划)

亚马逊透明计划

透明计划的产品会被贴上"透明二维码(Transparency code)",一个唯一的蓝色二维码标签,这个二维码标签会对应到参加透明计划的SKU上。顾客只需要使用亚马逊的Transparency app应用扫描产品外包装上的二维码,马上就能知道产品的真实性以及从生产到销售的整个过程包含的信息。

透明计划的费用包括两块:

二维码的购买费用,目前是分段计费:

一次性购买数量<100万个,则0.05美元/个;

100万个<一次性购买数量<1000万个,则0.03美元/个;

一次性购买数量>1000万个,则0.01美元/个。

提示:加入项目的前6个月免费,6个月后按二维码的使用数量分段收费。

二维码打印费用,目前亚马逊支持制定合作方进行二维码的打印。中国有两家供应商,收费4美分一个。(无免费期)

申请网址:https://sellercentral.amazon.com/gp/help/202033750?ie=UTF8&*Version*=1&*entries*=0&

Amazon Exclusives(独家销售计划)申请条件:

•订单缺陷率(Order Defect Rate)在1%及以下;

•订单取消率在2.5%及以下;

•延迟送货率在4%及以下;

•有一个信誉良好的专业销售帐户;

•愿意仅通过亚马逊(以及自己的网站或实体店)独家销售产品;

•愿意只使用FBA配送Amazon Exclusives项目中刊登的产品;

•想通过Amazon Exclusives销售产品,卖家必须是品牌的所有人;

•使用亚马逊品牌注册项目(Amazon Brand Registry)注册产品

这些仅仅是最低的要求,并非所有申请人都可以参加Amazon Exclusives项目。亚马逊还会评估申请卖家的产品独特性和"合适性"。

要求:Amazon Exclusives项目中刊登的产品必须使用FBA,卖家必须是品牌的所有人,并且使用亚马逊品牌注册

项目(Amazon Brand Registry)注册产品。

独家计划的费用:获准参加Amazon Exclusives项目的卖家帐号上,"亚马逊销售费用表(Selling on Amazon Fee Schedule )"

的Referral Fees部分费用将增加5%。此溢价适用于该账号所有产品的销售。

零计划

运行机制:自动保护功能能够不断扫描亚马逊站点,主动移除可疑的假冒产品。

权限:该工具赋权品牌商自行删除假冒商品。

商品可追溯服务能够帮助我们通过扫描条码来鉴别亚马逊站点所售品牌商品的真伪。该服务为每一件商品提供唯一条码,由品牌商在生产环节将其应用于所生产的每一件商品上。


来源:SamChen谈跨境

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

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

weebly:https://www.ikjzd.com/w/2486

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

lithium:https://www.ikjzd.com/w/2505

卖家如何防跟卖?_防跟卖技巧

跟卖制度是亚马逊允许的政策,他的前期初衷是为了减少平台同类商品堆砌,让客户可以选择更低更好价格。但是这也是产生平台漏洞的原因,很多卖家会恶搞你,或者低价跟卖不发货。让你listing排名下跌。所以做亚马逊很头疼的问题就是经常赶跟卖和防止跟卖。赶跟卖的方式五花八门,有黑科技、有暴力

天问一号飞行里程突破4亿公里,距离火星约830万公里|天问一号

  来源:中国探月工程

  截至2021年1月3日6时,天问一号探测器已在轨飞行163天,飞行里程突破4亿公里,距离地球约1.3亿公里,距离火星约830万公里,飞行状态良好。按计划将在一个多月后实施近火制动,进入环火轨道。


  天问一号任务是我国独立开展行星际探测的第一步,旨在通过一次发射实现对火星的"绕、着、巡",即火星环绕、火星着陆、火面巡视。天问一号探测器总重约5吨,由环绕器和着陆巡视器组成,着陆巡视器主要包括进入舱和火星车。目前,环绕器已完成第三次在轨自检,各系统工作正常。

  探月逐火共奋进,追梦求真向天行。行星探测"天问工程"是月球探测"嫦娥工程"的再发展,是中国人探索宇宙星辰征程的再延伸。中国深空探测事业一步一个脚印,一棒接力一棒,继承与创新并举,稳妥与挑战兼具。现在,探月工程"绕、落、回"三步走发展规划圆满收官,天问一号正在抵近火星,带着中国人民的期愿飞向这颗神秘的红色星球。

天问一号火星车地面测试天问一号火星车地面测试

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

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

ishare:https://www.ikjzd.com/w/2308

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


来源:中国探月工程  截至2021年1月3日6时,天问一号探测器已在轨飞行163天,飞行里程突破4亿公里,距离地球约1.3亿公里,距离火星约830万公里,飞行状态良好。按计划将在一个多月后实施近火制动,进入环火轨道。  天问一号任务是我国独立开展行星际探测的第一步,旨在通过一次发射实现对火星的"绕、着、巡",即火星环绕、火星着陆、火面巡视。天问一号探测器总重约5吨,由环绕器和着陆巡视器组成,着陆巡
名人堂是什么:名人堂是什么
jpgoodbuy:jpgoodbuy
Listing、做广告、销售·····超详细答疑干货,赶快收藏起来吧!:Listing、做广告、销售·····超详细答疑干货,赶快收藏起来吧!
河源漂流能玩了吗?河源漂流2020几月开始?:河源漂流能玩了吗?河源漂流2020几月开始?
福建横坑温泉度假村门票多少?:福建横坑温泉度假村门票多少?

没有哈登火箭照样赢!沃尔+伍德同样给力,再胜国王带来一大惊喜_比赛

原标题:没有哈登火箭照样赢!沃尔+伍德同样给力,再胜国王带来一大惊喜

北京时间1月3日,NBA常规赛展开较量,火箭坐镇主场继续迎接国王队的挑战。在两天前的比赛中,火箭队是凭借着哈登在比赛最后阶段的大爆发,是险胜国王队。而本场比赛,哈登因为脚踝扭伤缺阵,火箭队今日赢球的重任,落在了沃尔和伍德两位新援的身上。最终沃尔和伍德的表现也没有让火箭球迷失望,此役沃尔和伍德合砍48分,率领火箭队102比94击败国王队,助球队迎来两连胜。

本场比赛,由于登哥这位大腿缺阵,火箭队的战斗力是大打折扣,这给了国王赢球的希望。前三节比赛,两队打得是难解难分,火箭队是83比81,仅仅领先国王2分。而在双方第一节和第二节的比赛中,火箭与国王的得分甚至是完全一样。

上半场比赛,火箭队这边表现最为出色的还是沃尔和伍德两位新援。伍德不用多说,作为如今这支火箭队的内线支柱,半场比赛就贡献了18分8个篮板的亮眼数据。至于沃尔在半场也有着不俗的表现,上半场砍下16分3助攻。正是得益于沃尔和伍德的不俗发挥,面对志在复仇的国王队,火箭队在半场结束时,是将双方比分战成64平。

到了第三节比赛,火箭与国王在场面上还是形成僵持的局面。火箭队是在沃尔和伍德的带领下,持续与国王抗衡,双方始终都没能拉大分差。

第四节比赛,成为本场比赛的分水岭。火箭队这边一上来,凭借着恩瓦巴和戈登的两记三分球,以及戈登的三次罚球,暂时拉开分差。而反观国王队这边,随着投篮命中率下降,失误不断增加。在第四节前3分半钟的时间里,居然是一分未得。被火箭趁势打出了一波9比0的攻击波,92比81,火箭成功将双方分差拉大至两位数。

此后随着火箭队换上沃尔和伍德后,比赛的主动权被火箭队牢牢掌控。特别是沃尔不断利用自己的速度冲击国王内线制造杀伤,再加上伍德在篮板球的保护上做的十分出色和在防守端巨大的威胁,以及戈登在进攻端的持续火力输出,圆脸登第四节独砍10分,火箭队在这一节锁定了比赛的胜局。

也正是在这一节比赛中,火箭队还带给球迷们额外的惊喜。那就是球队罕见的在防守端,打出强硬表现。沃尔在防守端奋不顾身倒地拼抢,为球队拿回球权,伍德在内线送出霸气封盖,就足以说明火箭队在第四节防守端是多么拼。要知道国王队末节在火箭队的防守压迫下,居然前8分钟仅有2分进账。如果不是比赛最后时刻胜负已分,巴恩斯在无人看防的情况下,投进一记无关痛痒的三分球,在第四节比赛中,国王队的单节得分,在火箭队的防守下,甚至有可能停留在个位数。

本场比赛,伍德砍下20分15篮板4盖帽的大号两双,沃尔28分4篮板6助攻3抢断2盖帽,再加上戈登21分3篮板4助攻2抢断,凭借着这三大主力的优异发挥,火箭即便在哈登缺阵的情况下,依旧拿下国王队!返回搜狐,查看更多

责任编辑:

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

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

transfer:https://www.ikjzd.com/w/1735

cb体系:https://www.ikjzd.com/w/2063


原标题:没有哈登火箭照样赢!沃尔+伍德同样给力,再胜国王带来一大惊喜北京时间1月3日,NBA常规赛展开较量,火箭坐镇主场继续迎接国王队的挑战。在两天前的比赛中,火箭队是凭借着哈登在比赛最后阶段的大爆发,是险胜国王队。而本场比赛,哈登因为脚踝扭伤缺阵,火箭队今日赢球的重任,落在了沃尔和伍德两位新援的身上。最终沃尔和伍德的表现也没有让火箭球迷失望,此役沃尔和伍德合砍48分,率领火箭队102比94击败国
菜鸟网络:菜鸟网络
wario:wario
云南通海县秀山好玩吗?:云南通海县秀山好玩吗?
木龙湖东盟园门票多少钱?桂林木龙湖东盟园团购价格?:木龙湖东盟园门票多少钱?桂林木龙湖东盟园团购价格?
香格里拉有哪些特色产品?:香格里拉有哪些特色产品?

人类真的就是外星人所养的宠物吗

外星人是一种高等文明,所以很懂得去隐藏自己,虽然在目前的地球上,人类早就已经创造出许多高科技的产物,比如火箭,飞船,人造卫星,这一些都是之前所不敢想象的,虽然人类的科技事业已经进入到快速提升的阶段,可是在外星文明面前依然不值得一提。图片8.png

 

    大家所看到的UFO事件都是真实存在的,而外星人的科技水平也同样是大家所没有办法达到的,在宇宙间有着巨大的引力,就算人类发射卫星,也不能够保证每颗卫星都可以安然无恙,也有一些卫星可能会坠毁和地球失去联系。人类在漫长的进化过程中已经创造出属于自己的独特语言,彼此之间都会用语言来交流,可是外星人的语言和人类的语言是不相通的,虽然科学家也尝试着用引力波或者电磁向宇宙发射信号,可是未必外星人就能够感觉到。

 

    还有一个比较有趣的说法,人类生活在地球上就好像是外星人所养的宠物一样,这和我们平时说养的动物一样,把自己需要保护的动物全部都放在动物园中,这不仅仅是保护了自己,也同样可以让别人欣赏。因此有不少人都说,人类真的很有可能就是外星人所养的一份子,他们一直躲在巨大的宇宙后面,始终都在观察人类的一言一行,所以在看到这一切时,大家可能就会有所明白。




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

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

李群:https://www.ikjzd.com/w/1767

王惟:https://www.ikjzd.com/w/1744


外星人是一种高等文明,所以很懂得去隐藏自己,虽然在目前的地球上,人类早就已经创造出许多高科技的产物,比如火箭,飞船,人造卫星,这一些都是之前所不敢想象的,虽然人类的科技事业已经进入到快速提升的阶段,可是在外星文明面前依然不值得一提。大家所看到的UFO事件都是真实存在的,而外星人的科技水平也同样是大家所没有办法达到的,在宇宙间有着巨大的引力,就算人类发射卫星,也不能够保证每颗卫星都可以安然无恙,也有
writer:writer
zappos.com:zappos.com
年后转行,放弃做亚马逊的那些人,现在怎么样了?-跨境知道:年后转行,放弃做亚马逊的那些人,现在怎么样了?-跨境知道
低配高能版VP Review操作,简单获取废弃listing:低配高能版VP Review操作,简单获取废弃listing
地戏的灵魂:地戏脸谱(图) - :地戏的灵魂:地戏脸谱(图) -

2021年1月2日星期六

Thymeleaf语法总结 | 笔记分享

Thymeleaf语法总结

一、Thymeleaf介绍

Thymeleaf是Spring boot推荐使用的模版引擎,直接以html显示,前后端可以很好的分离。

 

二、Thymeleaf语法(Thymeleaf3)

在使用Thymeleaf时页面要引入名称空间:  
1、th属性,常用th属性如下:
    1)th:text:文本替换;
<h1 th:text="${session.vel2}"></h1>


    2)th:utext:支持html的文本替换。
    3)th:value:属性赋值  
    4)th:each:遍历循环元素
//每次遍历都会产生th:each所标注的标签以及内部标签 

<tr th:each="user : ${users}">
  <td th:text="${user.name}">Onions</td>
  <td th:text="${user.age}">2.41</td>
</tr>


    5)th:if:判断条件,类似的还有th:unless,th:switch,th:case
<div th:if="true"> 你填的是true</div> //这里引用了一个th:if指令,跟vue中的v-if类似


    6)th:insert:代码块引入,类似的还有th:replace,th:include,常用于公共代码块提取的场景
    7)th:fragment:定义代码块,方便被th:insert引用
    8)th:object:声明变量,一般和*{}一起配合使用,达到偷懒的效果。
<h2 th:object="${user}">   <p>Name: <span th:text="*{name}">Jack</span>.</p>   <p>Age: <span th:text="*{age}">21</span>.</p>   <p>friend: <span th:text="*{friend.name}">Rose</span>.</p> </h2>


    9)th:attr:设置标签属性,多个属性可以用逗号分隔
例子:

前端HTML

<!DOCTYPE html><!--名称空间-->

<html lang="en" <head> <meta charset="UTF-8"> <title>Thymeleaf 语法</title>
</head>
<body> <h2>ITDragon Thymeleaf 语法</h2> <!--th:text 设置当前元素的文本内容,常用,优先级不高--> <p th:text="${thText}" /> <p th:utext="${thUText}" /> <!--th:value 设置当前元素的value值,常用,优先级仅比th:text高--> <input type="text" th:value="${thValue}" /> <!--th:each 遍历列表,常用,优先级很高,仅此于代码块的插入--> <!--th:each 修饰在div上,则div层重复出现,若只想p标签遍历,则修饰在p标签上--> <div th:each="message : ${thEach}"> <!-- 遍历整个div-p,不推荐--> <p th:text="${message}" /> </div> <div> <!--只遍历p,推荐使用--> <p th:text="${message}" th:each="message : ${thEach}" /> </div> <!--th:if 条件判断,类似的有th:switch,th:case,优先级仅次于th:each, 其中#strings是变量表达式的内置方法--> <p th:text="${thIf}" th:if="${not #strings.isEmpty(thIf)}"></p> <!--th:insert 把代码块插入当前div中,优先级最高,类似的有th:replace,th:include,~{} :代码块表达式 --> <div th:insert="~{grammar/common::thCommon}"></div> <!--th:object 声明变量,和*{} 一起使用--> <div th:object="${thObject}"> <p>ID: <span th:text="*{id}" /></p><!--th:text="${thObject.id}"--> <p>TH: <span th:text="*{thName}" /></p><!--${thObject.thName}--> <p>DE: <span th:text="*{desc}" /></p><!--${thObject.desc}--> </div>
</body>
</html>


后台controller:

@Controllerpublic class ThymeleafController {  @RequestMapping("thymeleaf") public String thymeleaf(ModelMap map) {  map.put("thText", "th:text 设置文本内容 <b>加粗</b>");  map.put("thUText", "th:utext 设置文本内容 <b>加粗</b>");  map.put("thValue", "thValue 设置当前元素的value值");  map.put("thEach", Arrays.asList("th:each", "遍历列表"));  map.put("thIf", "msg is not null");  map.put("thObject", new ThObject(1L, "th:object", "用来偷懒的th属性"));  return "grammar/thymeleaf"; }}

 


2、标准表达式语法:

  • ${...} 变量表达式,Variable Expressions
  • @{...} 链接表达式,Link URL Expressions
  • #{...} 消息表达式,Message Expressions
  • ~{...} 代码块表达式,Fragment Expressions
  • *{...} 选择变量表达式,Selection Variable Expressions
  • ~{...} 代码块表达式,支持两种语法结构

    推荐:~{templatename::fragmentname}
    支持:~{templatename::#id}
 
templatename:模版名,Thymeleaf会根据模版名解析完整路径:/resources/templates/templatename.html,要注意文件的路径。
fragmentname:片段名,Thymeleaf通过th:fragment声明定义代码块,即:th:fragment="fragmentname"
id:HTML的id选择器,使用时要在前面加上#号,不支持class选择器。

代码块表达式的使用

代码块表达式需要配合th属性(th:insert,th:replace,th:include)一起使用。
th:insert:将代码块片段整个插入到使用了th:insert的HTML标签中,
th:replace:将代码块片段整个替换使用了th:replace的HTML标签中,
th:include:将代码块片段包含的内容插入到使用了th:include的HTML标签中,

#{...} 消息表达式

消息表达式一般用于国际化的场景。

@{...} 链接表达式

链接表达式好处
不管是静态资源的引用,form表单的请求,凡是链接都可以用@{...} 。这样可以动态获取项目路径,即便项目名变了,依然可以正常访问
#修改项目名,链接表达式会自动修改路径,避免资源文件找不到 server.context-path=/itdragon
链接表达式结构
无参:@{/xxx}
有参:@{/xxx(k1=v1,k2=v2)} 对应url结构:xxx?k1=v1&k2=v2
引入本地资源:@{/项目本地的资源路径}
引入外部资源:@{/webjars/资源在jar包中的路径}
列举:
<link th:href="@{/webjars/bootstrap/4.0.0/css/bootstrap.css}" rel="stylesheet"><link th:href="@{/main/css/itdragon.css}" rel="stylesheet"><form th:action="@{/user/login}" th:method="post" ><a th:href="@{/login.html(l='zh_CN')}">中文</a><a th:href="@{/login.html(l='en_US')}">English</a>

 


${...} 变量表达式功能

一、可以获取对象的属性和方法
二、可以使用ctx,vars,locale,request,response,session,servletContext内置对象
三、可以使用dates,numbers,strings,objects,arrays,lists,sets,maps等内置方法(重点介绍)

常用的内置对象

一、ctx :上下文对象。
二、vars :上下文变量。
三、locale:上下文的语言环境。
四、request:(仅在web上下文)的 HttpServletRequest 对象。
五、response:(仅在web上下文)的 HttpServletResponse 对象。
六、session:(仅在web上下文)的 HttpSession 对象。
七、servletContext:(仅在web上下文)的 ServletContext 对象
这里以常用的Session举例,用户刊登成功后,会把用户信息放在Session中,Thymeleaf通过内置对象将值从session中获取。
// java 代码将用户名放在session中 session.setAttribute("userinfo",username); // Thymeleaf通过内置对象直接获取 th:text="${session.userinfo}"

常用的内置方法

一、strings:字符串格式化方法,常用的Java方法它都有。比如:equals,equalsIgnoreCase,length,trim,toUpperCase,toLowerCase,indexOf,substring,replace,startsWith,endsWith,contains,containsIgnoreCase等
二、numbers:数值格式化方法,常用的方法有:formatDecimal等
三、bools:布尔方法,常用的方法有:isTrue,isFalse等
四、arrays:数组方法,常用的方法有:toArray,length,isEmpty,contains,containsAll等
五、lists,sets:集合方法,常用的方法有:toList,size,isEmpty,contains,containsAll,sort等
六、maps:对象方法,常用的方法有:size,isEmpty,containsKey,containsValue等
七、dates:日期方法,常用的方法有:format,year,month,hour,createNow等
 
 1 <!DOCTYPE html><html lang="en" 

 


 
 1 @RequestMapping("varexpressions")public String varexpressions(ModelMap map) { 2 map.put("itdragonStr", "itdragonBlog"); 3 map.put("itdragonBool", true); 4 map.put("itdragonArray", new Integer[]{1,2,3,4}); 5 map.put("itdragonList", Arrays.asList(1,3,2,4,0)); 6 Map itdragonMap = new HashMap(); 7 itdragonMap.put("thName", "${#...}"); 8 itdragonMap.put("desc", "变量表达式内置方法"); 9 map.put("itdragonMap", itdragonMap);10 map.put("itdragonDate", new Date());11 map.put("itdragonNum", 888.888D); return "grammar/varexpressions";12 }

 


 








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

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

net a porter:https://www.ikjzd.com/w/2132

eori:https://www.ikjzd.com/w/499


Thymeleaf语法总结一、Thymeleaf介绍Thymeleaf是Springboot推荐使用的模版引擎,直接以html显示,前后端可以很好的分离。二、Thymeleaf语法(Thymeleaf3)在使用Thymeleaf时页面要引入名称空间:1、th属性,常用th属性如下:1)th:text:文本替换;<h1th:text="${session.vel2}">
好卖家:好卖家
三维度科技:三维度科技
马尔代夫真的会沉没吗?:马尔代夫真的会沉没吗?
昆明市内一日游有什么好玩的呢?:昆明市内一日游有什么好玩的呢?
做巴西跨境电商,能赚到钱吗?:做巴西跨境电商,能赚到钱吗?

申花冬窗首签曝光:将免签中超助攻王,17场造17球,大黑马亏大了_阿德里安

原标题:申花冬窗首签曝光:将免签中超助攻王,17场造17球,大黑马亏大了

目前新赛季中超冬窗已经开启,第一笔转会交易已经完成,如今第二笔转会即将到来。据波兰媒体futbol报道,重庆当代外援阿德里安即将加盟上海申花,由于阿德里安已经自由身,所以申花可以免费引进,考虑到本赛季阿德里安拿下中超助攻王,申花一旦签下中场实力大增。

1986年出生的阿德里安,已经34岁,本赛季分别效力重庆当代和广州富力,17场制造17球。中超第一阶段,阿德里安为重庆当代送出5次助攻,还有6个进球,帮助球队打进争冠组,提前完成保级,随后中超第二阶段租借到广州富力,阿德里安贡献2球4助攻,帮助富力完成保级。

本赛季阿德里安力压奥斯卡、巴坎布、马修斯等人,以9次助攻拿下中超助攻王,表现非常出色,也突出出色的传球能力、盘带能力、控球能力等中场球员的优势。如果申花顺利引进,那么中场实力得到了提升,有中场指挥官,球队的攻防更有效率。

此前富力官宣阿德里安离开球队,结束租借,而阿德里安要不要返回重庆当代呢?答案是不用,因为双方合同已经到期,阿德里安可以和其他球队进行谈判,目前最接近的新东家是上海申花。

对于申花来说,由于阿德里安是自由身,所以球队引进只需要提供薪水待遇,不用支付给重庆当代转会费。所以,重庆当代眼睁睁地看着本赛季表现出色的阿德里安自由身走人,无疑是亏大了,没有机会赚取转会费。

目前申花在引援方面没有任何动作,所以阿德里安加盟的话,将是球队冬窗第一签。根据上海媒体的消息,球队除了金信煜和莫雷诺基本留队之外,还有租借回归的伊哈洛,但姆比亚等其他三名外援离开只差时间问题。返回搜狐,查看更多

责任编辑:

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

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

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

燕文物流:https://www.ikjzd.com/w/2229


原标题:申花冬窗首签曝光:将免签中超助攻王,17场造17球,大黑马亏大了目前新赛季中超冬窗已经开启,第一笔转会交易已经完成,如今第二笔转会即将到来。据波兰媒体futbol报道,重庆当代外援阿德里安即将加盟上海申花,由于阿德里安已经自由身,所以申花可以免费引进,考虑到本赛季阿德里安拿下中超助攻王,申花一旦签下中场实力大增。1986年出生的阿德里安,已经34岁,本赛季分别效力重庆当代和广州富力,17场
ebay易趣:ebay易趣
东杰智能:东杰智能
史上最详细峨眉山旅游攻略 - :史上最详细峨眉山旅游攻略 -
第九届中国金鹰电视艺术节获奖详情:第九届中国金鹰电视艺术节获奖详情
巴塞罗那有什么好玩的:巴塞罗那有什么好玩的

Docker 的 2020,实 "鼠" 不易!

元旦你们出去嗨,栈长在家撸文章,惨惨惨…

没错, Docker 的 2020 年也过的不是很顺利,可以说是流年不利、命运多舛,一年发生两件大事,太折腾!

相信大家也已经看到很多相关的报道了,但同时也有很多人被铺天盖地的信息所误解、所迷惑,很多人不清楚事实的真相,咱技术群里还有人说不要学了之类的,带着很多偏见和误解,比如:

  • Docker 真的被禁止使用了?
  • Docker 真的被 K8S 弃用了?
  • Docker 到底还能不能用?
  • Docker 到底还要不要继续学?
  • ……

今天栈长就来总结下 Docker 的 2020,带大家来揭开这些谜团。

Docker 简介:

Docker 是现在最主流的开源容器,Docker 的核心思想是:"Build once, Run anywhere",即:一次构建,处处运行,也基本成为了现在容器的代名词。

我们可以将 Docker 理解为一个轻量级的沙盒,Docker 容器完全使用沙盒机制,每个容器内都有其独立运行的环境和组件,容器之间是相互隔离互不影响的,也可以进行容器间的通信。

更多请参考:年轻人的第一个 Docker 应用!

Docker 真的被禁用了?

关于 Docker 被禁的消息,其实最早在 2017 年就被禁止在 7 个国家使用了,去年的 8 月,一则 Docker 被禁的消息又袭转了朋友圈和各大技术平台,因为其主要针对的是 "实体清单" 上的公司,而许多中国公司又在实体清单上面。

来看下最新的 Docker 服务条款:

https://www.docker.com/legal/docker-terms-service

最新的条款生效日期是 2020/12/14:

依旧写着禁止 Docker 在米国政府 "实体清单" 上的企业、个人使用,Docker 虽然是一个开源容器,但其本身也是一家米国公司,所以必须得遵守米国在出口方面的法律限制。

所以,如果你所在的公司不在那个实体清单上面,那完全不用惊慌!!

那公司在这个清单上面该怎么办呢?

看 1.1 的描述,这个条款针对的是 Docker 相关网站上提供的服务,那禁用的也是 Docker 网站提供的商业服务(比如 Docker Hub、Docker EE 等),开源的版本并不受影响,然而真正用商业服务和付费版的公司又有几个呢?不得而知!反正我们不用~

一句话再总结下:

禁止 Docker 在米国政府 "实体清单" 上的企业、个人使用在其网站上提供的商业服务

所以不用 Docker 的商业服务不就没事了,一般的公司完全不用担心,再不行在开源版本上拉个分支自己干或者换一个容器不就完事了。

推荐阅读:Docker 被禁?还有千千万万个 Docker 站起来!

Docker 被 K8S 弃用?

去年 12 月,又有一波关于 "K8S 弃用 Docker" 的消息开始刷屏……

Kubernetes 简介:

kubernetes,简称:K8s,是 Google 开源的一个容器编排引擎,它支持自动化部署,以及大规模、可伸缩应用容器化管理。Kubernetes 中可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置负载均衡策略实现这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员进行复杂的手工配置和处理。

参考来源:百度百科

为什么 K8S 弃用 Docker?

没错,来看 Kubernates 1.2.0 的变更日志:

如图所示,在弃用部分第一条就是:

现在 Docker 在 Kubelet 中的支持已经被弃用,并且会在未来的版本中彻底移除,因为 Kubelet 使用了一个名叫 "dockershim" 的模块,它实现了 Docker 对 CRI 的支持,但它在 Kubernetes 社区已经出现了一些维护性的问题。我们建议你评估并迁移容器运行时,也就是成熟的 CRI 完整实现(兼容 v1alpha1 和 v1),现在已经是可用状态。

总而言之就是维护问题,建议迁移到新的容器运行时。

Docker 和 k8s 有什么关系?

首先需要搞清楚 Docker 在现有 Kubernetes 架构中的作用,来看下 Kubernetes 的架构图:

在 Kubernetes 架构中,每个 Kubernetes 节点都与控制面板进行通信,Docker(或者其他容器运行时)仅用于在实际主机中运行应用程序,各个节点上的 kubelet 通过获取元数据,并执行 CRI(Container Runtime Interface,即容器运行时 API 接口)以在该节点上进行容器的创建/删除操作。

Kubernetes 只能与CRI 进行通信,而不能直接用 Docker API 进行通信,Docker 又并不支持 Kubernetes 提供的 CRI,所以之前使用 Kubernetes 就只能通过 "dockershim" 提供的桥接服务来转换 Docker API 和 CRI,但由于维护性问题,Kubernetes 最终还是弃用了 dockershim 这一桥接服务。

Docker 被弃用后怎么办?

其实也不用慌,CRI 运行时有两种实现方案:

  • containerd
  • CRI-O

containerd 就是从 Docker 分出去的开源项目,并且提供的 CRI 功能也是完全由 Docker 提供的,Docker 自身也用到了 containerd,而 CRI-O 主要由 Red Hat 开发,并不依赖 Docker,所以,从 Docker 迁移到 containerd 是最好的选择。

总结

Docker 确实被禁用了,但影响的只是实体清单上的公司的 Docker 提供的商业服务,开源版本不受影响,和我们普通开发也没关系。

Docker 也确实被 k8s 弃用了,但还有其他的选择,比如:containerd,就是完全兼容 Docker 的,可以继续使用 Docker 进行开发,所以对于普通开发用户来说是不受任何影响的,但对于 k8s 管理员来说就需要考虑迁移到新的容器运行时,毕竟在未来不久的版本中 k8s 会彻底移除对 Docker 的支持。

总之, Docker 仍是目前最优秀的开源容器,放心大胆用吧!

所以,不要再被误导了,我们普通开发人员完全不用考虑禁不禁、弃用不弃用的事,该学学,该用用,吃嘛嘛香,何乐而不为呢?

但话又说回来,Docker 是家米国公司,未来开源版会不会也受影响呢?

我只能说应该不会,如果开源的都被禁,那我们常用的 Java、Linux、Spring 等开源技术都不能用了?不太可能!很多人的担心、惊慌也并不无道理,唯有开发自己的核心技术才会不用受制于人!

最后, Docker 被禁损失的是 Docker 公司和米国自己的利益,简直是搬起石头砸自己的脚,另外,Docker 也不是必须的,不用 Docker 也还有很多其他的选择,Docker 没火之前不也过的好好的,所以完全不用惊慌。

至于 Docker 的后续发展,请持续关注Java技术栈微信公众号,栈长将第一时间跟进最新动态。你也可以在后台回复:动态,获取栈长整理的更多往期热门好玩的技术资讯。

参考:

  • https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation
  • https://dev.to/inductor/wait-docker-is-deprecated-in-kubernetes-now-what-do-i-do-e4m

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

近期热文推荐:

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

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

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

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

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

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









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

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

华翰物流:https://www.ikjzd.com/w/1799

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


元旦你们出去嗨,栈长在家撸文章,惨惨惨…没错,Docker的2020年也过的不是很顺利,可以说是流年不利、命运多舛,一年发生两件大事,太折腾!相信大家也已经看到很多相关的报道了,但同时也有很多人被铺天盖地的信息所误解、所迷惑,很多人不清楚事实的真相,咱技术群里还有人说不要学了之类的,带着很多偏见和误解,比如:Docker真的被禁止使用了?Docker真的被K8S弃用了?Docker到底还能不能用?
转口贸易:转口贸易
tm商标:tm商标
2020五一广州长隆水上乐园门票价格?长隆水上乐园五一优惠:2020五一广州长隆水上乐园门票价格?长隆水上乐园五一优惠
2020广州除夕之夜哪里有倒数活动?除夕广州跨年倒数活动介:2020广州除夕之夜哪里有倒数活动?除夕广州跨年倒数活动介
海南博鳌玉带滩景色怎么样?:海南博鳌玉带滩景色怎么样?

思考:做跨境电商非得在深圳,不单干卖家就没出路了?

深圳作为我国的经济特区和一线城市,跨境电商的发展成果大家也有目共睹,"来了深圳就是深圳人"这句话更是让不少青年热血沸腾,纷纷前往深圳打拼。


虽然优势多多,但是现实却很残酷。随着年龄的增长,不少跨境人发现在深圳做亚马逊很好,但有些问题还是不好解决,比如说,奋斗这么久,为啥连房子都买不起!


那么,问题来了,做跨境电商非得在深圳吗?


做跨境电商非得在深圳?


相信不少人看到小编这样说肯定会想,这不是瞎扯吗,不在深圳做跨境电商还能去哪做?难不成回老家做?


但是,在内地做跨境电商真的不香吗?就拿郑州的致欧和吉客印来说,虽说是在内地,这两个大卖在整个跨境圈还是非常有知名度的。


毋庸置疑的是,深圳确实有很大的优势。首先,深圳是世界第三大集装箱港口城市,跨境电商物流优势明显;其次,深圳还有非常多的跨境电商人才,不愁找不到人学习交流;除此之外,深圳还有各种跨境电商扶持政策。


但是,想要在深圳长久待下去,买房还是刚需。不过深圳的房子可不是说买就能买的,早些年到深圳做跨境电商可以轻轻松松买到房,现在呢?


小编之前从一位卖家那里了解到,之前深圳的房子才五六千一平,买房压力的确不大,现在当然不可同日而语。


小编之前做过一次投票,投票的题目是"如果在深圳做亚马逊买不到房,接下来你会如何选择?",投票结果如下所示↓


图一.png


大家从投票结果中也能看出,虽然买不到房,但还是有不少人(37%)打算继续留在深圳,还有大多数人(36%)选择离开深圳,选择到二三线城市继续做,还有部分人(27%)选择在深圳打拼几年后回老家。


看得出来,深圳虽然是个淘金的地方,但是房价水平一般人都接受不了,既然这样,为什么不选择回老家做呢?当然,这其中的利弊大家都能看得出来


国家正在大力支持内地跨境电商的发展,而且房租水电费便宜,各项开支和深圳比起来较低,还可以和家人在一起。


但是,内地物流运输不方便,人才匮乏、交流渠道单一,电商环境总体来说都不太好,这也是卖家选择去深圳打拼的主要原因。


有卖家直言,虽然回内地做亚马逊想比深圳来说确实省钱,而且也很轻松,但是没有那种拼搏的环境,总感觉离开了深圳啥也干不成……


相信不少卖家也会有这样的想法,说起在深圳打拼,相信很多打工仔都有自己的店铺吧,单靠工资怎么活?自己开个店继续兼职做亚马逊不香吗?


想要多挣钱还得自己单干?


除了是否要在深圳做跨境电商的话题之外,小编在各大论坛和卖家群里总是看到这样的讨论


一边上班一边偷偷单干亚马逊,被公司发现了怎么办?

做亚马逊应该单干还是合伙?

单干亚马逊真的能赚到钱吗?


总之,讨论的中心就离不开"单干"这个扎心的话题。有卖家称,不少朋友都是边上班边单干,这都是跨境圈里看破不说破的"潜规则"了。


除此之外,"单干后被老板发现了怎么办"也让不少卖家瑟瑟发抖,但是已经豁出去了还能怎么办呢?有位幸运的卖家称,自己单干后竟然被老板在天眼查上查到了公司法人信息,不过这位卖家的业务和公司的业务不冲突,老板知道后也没说啥。


对于大部分年轻人来说,想在深圳落地生根并不容易。有卖家在这风华正茂的时候选择单干亚马逊,没钱投资就把房子卖了,虽说现在每天的营业额岌岌可危,这样做也真的需要勇气,但是不趁着年轻闯一闯怎么甘心呢


不过对于年轻人把底牌都当掉的行为,有卖家觉得不妥:没钱投资就卖房,这样单干后连底盘都没有,还建啥大楼呢?现在的小年轻,有闲钱的话可以玩玩亚马逊,没资本就先打好基础。


图二.jpg


但是,还是有卖家认为,自己赚的钱比老板给的那些蝇头小利更香,反正大家都是给姐夫打工,谁也不比谁高贵。


总的来说,现在很多卖家都选择了边上班边单干,不过做什么工作都要有职业道德,对得起自己的良心,不要用公司的资源为自己的私活服务。


当然了,对于刚创业的卖家来说,还有一个选择就是找合伙人,不过单从"合伙"这两个字也能窥得人生百态。毕竟不同行业的价值观也不同,选择在跨境圈里跟别人一起混,也要承担不小的风险。


如果是和有契约精神的伙伴一起玩,可能会有1+1>2的效果,但是如果"遇人不淑",一切终究还是错付了。


之前就有卖家遇到这样狗血的事——创业做亚马逊,合伙人却跑路自己开公司去了,而且这种过河拆桥的事不少卖家都遇到过……


所以说,如果选择合伙,对方的人品至关重要,如果选择单干,自己就要承担一切风险。


2020年做亚马逊的你挣了多少?


进入2021后,还有不少卖家问,现在单干亚马逊还有机会吗?能赚到钱吗?


在情况特殊的2020年,对于大部分卖家来说,能不能赚到钱不是问题,怎么赚钱才是问题。


有卖家说,2020年,我赚到了脱发;还有:我赚到了空气;还有喜大普奔的消息:我赚到了女朋友!


图三.jpg


不管怎么样,在过去的一年里,亚马逊可谓是风起云涌,前段时间引起热议的"深圳湾1号的房子都被做亚马逊的抢光了"等案例让人艳羡不已。


当然,挣到钱的亚马逊卖家不在少数,跨境圈里的货代也是赚得盆满钵满,狂揽豪房豪车的成功案例更是成为不少同行入坑的动力。


不过大家看到的这些都是成功案例,如果卖家失败了还会大张旗鼓地说自己失败了吗?针对这个敏感又扎心的话题,跨境圈里也衍生了一些两极化的段子。


比如说这样的


深圳赚钱深圳花
一分别想带回家
临走还欠一万八


还有这样的


深圳赚钱深圳花
深圳买房就成家
来了就别想回家


虽说都是调侃,但是"不用再给别人打工了,自己当老板"的心态也支配着大多数跨境人,那为啥大家都想在亚马逊上单干、创业呢?


有卖家认为,主要还是因为亚马逊的创业门槛底,刚入门的新手小白拿个3—5万就能启动,前期做好选品出单就很快,这个时候不在乎能出多少单,尝到甜头就有动力往下做,但是谁能保证店铺能一直这么顺利?


其实这些都是老生常谈的话题。一些经验老道的卖家建议,如果选择单干亚马逊,就做好资金这块的规划,看准市场,前期投资不要太大,至少最后不会亏得太多,最重要的是,得有一个强大的心理,做好能接受任何结果的准备。


现如今,跨境电商遍地开花,不论你在深圳还是内地,不论选择单干还是合伙,不管是买到了深圳湾的房子,还是租房住,只要坚持初心在哪里都能大有作为,总能闯出属于自己的一片天。





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

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

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

三维度科技:https://www.ikjzd.com/w/1312


深圳作为我国的经济特区和一线城市,跨境电商的发展成果大家也有目共睹,"来了深圳就是深圳人"这句话更是让不少青年热血沸腾,纷纷前往深圳打拼。虽然优势多多,但是现实却很残酷。随着年龄的增长,不少跨境人发现在深圳做亚马逊很好,但有些问题还是不好解决,比如说,奋斗这么久,为啥连房子都买不起!那么,问题来了,做跨境电商非得在深圳吗?做跨境电商非得在深圳?相信不少人看到小编这样说肯定会想,这不是瞎扯吗,不在深
heap:heap
铭宣海淘:铭宣海淘
【俄罗斯旅游游轮线路】--俄罗斯旅游有什么游轮线路:【俄罗斯旅游游轮线路】--俄罗斯旅游有什么游轮线路
安顺:做好全域旅游大文章 助推旅游高质量发展:安顺:做好全域旅游大文章 助推旅游高质量发展
亚马逊FBA计算器-FBA Calculator for Amazon 小插件:亚马逊FBA计算器-FBA Calculator for Amazon 小插件

2021年1月1日星期五

站点迁移指北

前面的话】由于服务器快到期了,就重新另购了一台服务器。这边就来记录一下迁移的过程和日常数据备份等等。

壹、站点概览

我的站点使用halo搭建的,主要涉及到的中间件有:NginxMysql等;日常运行产生的数据有站点运行数据和资源数据,所以站点迁移也会从这些方面着手。

贰、中间件迁移

2.1、Nginx

其实Nginx的迁移很简单,只需要在新的服务器中安装即可,然后迁移nginx.conf配置文件。我的站点还用到https,所有在安装的时候要注意安装相应的模块以及证书的迁移。

./configure --prefix=/usr/local/nginx --add-module=../ngx_cache_purge-1.3/ --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module

2.2、Mysql

在新的服务器安装Mysql服务,然后导入sql文件即可:

mysqldump -u$db_user -p$db_password $db_name | gzip > /home/firbackup/halodb.sql.gz

叁、资源数据

对于资源数据,主要是halo产生的主题以及上传的文章的图片等等。就直接采用压缩打包,然后发送到新服务器再解压即可。

tar czvf /home/firbackup/halo.tar.gz /root/.halo
#如果在同一个内网,记得使用内网ip,速度会更快哦scp halo.tar.gz root@ip.ip.ip.ip:/root/

然后再解压到/root/.halo 文件夹即可

肆、重新启动

配置域名解析和相应的安全策略以及安装JDK之后,你就可以重新启动halo服务就好,到这里站点迁移工作就完成了。


后面的话

日常备份也就是应用的配置文件以及应用产生的必要数据的备份。我这边的方案是定时打包压缩之后发送到邮箱中。下面给出具体脚本:

安装配置mailx

yum -y install mailx
vim /etc/mail.rc#添加如下配置set ssl-verify=ignoreset nss-config-dir=/root/.certs/ #使用命令find / -name "cert*.db" 查找位置(根据自身系统而定)#weikeyi 发送email的设置set from=youremail@163.com #163邮箱账号set smtp=smtps://smtp.163.com:465 ###smtp服务商#端口465#smtps协议set smtp-auth-user=youremail@163.com #与上邮箱相同set smtp-auth-password=yourpasswd #自己的授权码#非邮箱密码set smtp-auth=login

如果在测试执行脚本,发现发送报错的话,那就是证书有问题,只需要在上面提到的/root/.certs/文件夹中放置163邮箱的证书即可。

Resolving host smtp.163.com . . . done.Connecting to 220.181.12.11:465 . . . connected.Error initializing NSS: Unknown error -8015."/root/dead.letter" 236028/17228757. . . message not sent.Resolving host smtp.163.com . . . done.Connecting to 220.181.12.16:465 . . . connected.Error initializing NSS: Unknown error -8015."/root/dead.letter" 6966/507305. . . message not sent.Resolving host smtp.163.com . . . done.Connecting to 220.181.12.11:465 . . . connected.Error initializing NSS: Unknown error -8015."/root/dead.letter" 324/22426. . . message not sent.Resolving host smtp.163.com . . . done.Connecting to 220.181.12.14:465 . . . connected.Error initializing NSS: Unknown error -8015."/root/dead.letter" 48/2440. . . message not sent.Resolving host smtp.163.com . . . done.Connecting to 220.181.12.17:465 . . . connected.Error initializing NSS: Unknown error -8015."/root/dead.letter" 342/10021. . . message not sent.

编写脚本

#!/bin/bash#firbackup 文件和 and database###################删除halo备份#################rm -fr /home/firbackup/halo_$(date -d '7 days ago' +%Y%m%d).tar.gz###################备份halo#################tar czvf /home/firbackup/halo_$(date +%Y%m%d).tar.gz /root/.haloecho 'halo备份的下载地址 +%Y%m%d).tar.gz >> /home/firbackup/info_$(date +%Y%m%d).txt###################删除备份数据库####################rm -fr /home/firbackup/halodb_$(date -d '7 days ago' +%Y%m%d).sql.gz###################备份halodb数据库####################db_user="root"  #输入你的数据库用户名 db_password="root" #输入你的数据库密码db_name="halodb"  #输入你要备份的数据库名 mysqldump -u$db_user -p$db_password $db_name | gzip > /home/firbackup/halodb_$(date +%Y%m%d).sql.gzecho 'halo数据库备份的下载地址 +%Y%m%d).sql.gz >> /home/firbackup/info_$(date +%Y%m%d).txt ###################准备开始发邮件###############cd /home/firbackup/###################邮件发halo数据库备份###############mailx -v -s "请注意查收"$(date +%Y%m%d)"halo数据库的相关备份" -a halodb_$(date +%Y%m%d).sql.gz i@eelve.com<halodb_$(date +%Y%m%d).sql.gz

配置定时任务

[root@fir /home]#crontab -e##每天定时01:00:00 执行脚本 /home/firbackup.sh0 1 * * * sh /home/firbackup.sh##每天凌晨2点重启springboot应用0 2 * * * sh /home/auto_restart_springboots.sh

到这里你只需要去邮箱中下载备份的数据就好了。另外邮箱发送附件是有大小限制的,每个邮箱的具体情况不一。另外对于文章中的图片数据可以上传到又拍云等云存储中即可。最后一句话道路千万条,数据备份第一条


薏米笔记

本文由博客一文多发平台 OpenWrite 发布!









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

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

淘粉吧返利:https://www.ikjzd.com/w/1725

斑马物联:https://www.ikjzd.com/w/1316


【前面的话】由于服务器快到期了,就重新另购了一台服务器。这边就来记录一下迁移的过程和日常数据备份等等。壹、站点概览我的站点使用halo搭建的,主要涉及到的中间件有:Nginx、Mysql等;日常运行产生的数据有站点运行数据和资源数据,所以站点迁移也会从这些方面着手。贰、中间件迁移2.1、Nginx其实Nginx的迁移很简单,只需要在新的服务器中安装即可,然后迁移nginx.conf配置文件。我的站
c2c模式:c2c模式
eori:eori
推广干货:Facebook账户常见问题详解!:推广干货:Facebook账户常见问题详解!
【新西兰旅游婚纱摄影】--新西兰婚纱摄影攻略:【新西兰旅游婚纱摄影】--新西兰婚纱摄影攻略
车八岭国家自然保护区攻略?始兴车八岭最新价格?:车八岭国家自然保护区攻略?始兴车八岭最新价格?

SpringCloud之Config

前面的话】本文的某些知识依赖我的微服务系列文章,如果没有看过可以先移步去看一下。在前面的应用当中,我们所有的配置都是写在yaml配置文件当中的,这样就会造成几个问题:安全、统一管理等等。而SpringCloud也是考虑到这一点,给出的方案就是Spring Cloud Config


壹、Config的简介

Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。Spring Cloud Config实现了对服务端和客户端中环境变量和属性配置的抽象映射,所以它除了适用于Spring构建的应用程序之外,也可以在任何其他语言运行的应用程序中使用。由于Spring Cloud Config实现的配置中心默认采用Git来存储配置信息,所以使用Spring Cloud Config构建的配置服务器,天然就支持对微服务应用配置信息的版本管理,并且可以通过Git客户端工具来方便的管理和访问配置内容。当然它也提供了对其他存储方式的支持,比如:SVN仓库、本地化文件系统。

贰、准备工作

  • 首先在工程下面新建lovin-config-repo,作为存放配置文件的地方,并且添加dev,test,pro的相关配置文件,最后在配置文件中添加token的配置,具体见下图

新建配置中心
添加token配置

  • 新建一个config的服务端子工程lovin-config-server,用于后面的操作。下面是主要的pom依赖:
<parent>  <artifactId>lovincloud</artifactId>  <groupId>com.eelve.lovincloud</groupId>  <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>lovin-config-server</artifactId> <packaging>jar</packaging> <name>lovinconfigserver</name> <version>0.0.1</version> <description>配置服务端</description> <dependencies>  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-security</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-web</artifactId>  </dependency>  <dependency>   <groupId>de.codecentric</groupId>   <artifactId>spring-boot-admin-starter-client</artifactId>   <version>2.1.6</version>  </dependency>  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-config-server</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-bus-amqp</artifactId>  </dependency> </dependencies> <build>  <plugins>   <plugin>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-maven-plugin</artifactId>   </plugin>  </plugins> </build>
  • 这里为了安全,我这里还是添加spring-boot-starter-security
server: port: 8886 # 服务端口号spring: application: name: lovinconfigserver  # 服务名称 security: basic:  enabled: true user:  name: lovin  password: ${REGISTRY_SERVER_PASSWORD:lovin} cloud: config:  server:  git:   uri: https://github.com/lovinstudio/lovincloud   search-paths: lovin-config-repo  label: mastereureka: client: serviceUrl:  defaultZone: # 注册到的eureka服务地址
  • 上面的配置文件是用git作为配置文件管理中心,还有svn和本地文件系统两种,我这里也在下面简单罗列以下:

git版本配置

spring: cloud:  config:  server:   git:   uri: https://github.com/lovinstudio/lovincloud   search-paths: lovin-config-repo   username: #如果是私人仓库,还需要配置用户名,公共仓库可以省略   password: #如果是私人仓库,还需要配置密码,公共仓库可以省略  label: master

svn版本配置

spring: cloud: config:  server:  svn:   uri:   username: username   password: password  default-label: trunk profiles: active: subversion #这里需要显式声明为subversion

同时还需要引入相应的配置:

  <!--SVN-->  <dependency>   <groupId>org.tmatesoft.svnkit</groupId>   <artifactId>svnkit</artifactId>  </dependency>

本地版本配置

spring: cloud: config:  server:  native:   searchLocations: file:D:\\config #classpath:/config profiles: active: native #native
  • 配置spring-boot-starter-security,这里为了方便我这里放开所有请求
package com.eelve.lovin.config;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;/** * @ClassName WebSecurityConfig * @Description TDO * @Author zhao.zhilue * @Date 2019/8/18 13:52 * @Version 1.0 **/@Configurationpublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception {  http.authorizeRequests().anyRequest().permitAll()    .and().csrf().disable(); }}
  • 在主类上添加@EnableConfigServer,当然也需要注册到注册中心:
package com.eelve.lovin;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.config.server.EnableConfigServer;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;/** * @ClassName LovinEurekaClientApplication * @Description TDO * @Author zhao.zhilue * @Date 2019/8/15 16:37 * @Version 1.0 **/@SpringBootApplication@EnableEurekaClient@EnableConfigServerpublic class LovinConfigServerApplication { public static void main(String[] args) {  SpringApplication.run(LovinConfigServerApplication.class,args); }}

叁、启动测试

  • 依次启动eureka的服务端和新建的lovin-config-server
  • 访问地址 /{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties

    上面的url会映射{application}-{profile}.properties对应的配置文件,其中{label}对应Git上不同的分支,默认为master。我们可以尝试构造不同的url来访问不同的配置内容,比如,要访问master分支,config-client应用的dev环境,就可以访问这个url src="https://img2020.cnblogs.com/other/1035487/202101/1035487-20210101224727769-1152559252.png" alt="成功访问配置" loading="lazy">
    这里有一点疑问,我通 12:55:54.686 INFO 9256 --- [nio-8886-exec-4] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/C:/Users/Chirius/AppData/Local/Temp/config-repo-8280352825025657146/lovin-config-repo/lovin-config-dev.properties2019-08-19 12:55:57.560 INFO 9256 --- [nio-8886-exec-2] o.s.cloud.commons.util.InetUtils : Cannot determine local hostname2019-08-19 12:55:57.576 INFO 9256 --- [nio-8886-exec-2] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/C:/Users/Chirius/AppData/Local/Temp/config-repo-8280352825025657146/lovin-config-repo/lovin-config-dev.properties2019-08-19 12:56:00.544 INFO 9256 --- [nio-8886-exec-1] o.s.cloud.commons.util.InetUtils : Cannot determine local hostname2019-08-19 12:56:00.559 INFO 9256 --- [nio-8886-exec-1] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/C:/Users/Chirius/AppData/Local/Temp/config-repo-8280352825025657146/lovin-config-repo/lovin-config-dev.properties2019-08-19 12:56:07.136 INFO 9256 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration2019-08-19 13:01:07.140 INFO 9256 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration2019-08-19 13:06:07.142 INFO 9256 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration

    ps:通过日志我们可以看到配置文件是被保存在我们本地的,当然我们也就可以通过配置,修改保存的路径,具体配置为:basedir

    肆、新建配置客户端

    新建一个config的服务端子工程lovin-config-client,用于后面的操作。下面是主要的pom依赖:

    <parent>  <artifactId>lovincloud</artifactId>  <groupId>com.eelve.lovincloud</groupId>  <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>lovin-config-client</artifactId> <packaging>jar</packaging> <name>lovinconfigclient</name> <version>0.0.1</version> <description>配置消费端</description> <dependencies>  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-security</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-web</artifactId>  </dependency>  <dependency>   <groupId>de.codecentric</groupId>   <artifactId>spring-boot-admin-starter-client</artifactId>   <version>2.1.6</version>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-actuator</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-config</artifactId>   <version>2.1.3.RELEASE</version>  </dependency> </dependencies> <build>  <plugins>   <plugin>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-maven-plugin</artifactId>   </plugin>  </plugins> </build>

    ps:在这里为了监控配置变化我们需要添加spring-boot-starter-actuator的依赖

    • 这里为了安全,我这里还是添加spring-boot-starter-security的配置
    1. 新建bootstrap.yml
    spring: cloud: config:  name: lovin-config  profile: dev  uri:  label: mastereureka: client: serviceUrl:  defaultZone: # 注意在高可用的时候需要见注册中心配置移到该文件中,在application.yml中见会读取不到配置
    1. 添加application.yml
    server: port: 8807 # 服务端口号spring: application: name: lovinconfigclient  # 服务名称 security: basic:  enabled: true user:  name: lovin  password: ${REGISTRY_SERVER_PASSWORD:lovin}
    • 配置spring-boot-starter-security,这里为了方便我这里放开所有请求
    package com.eelve.lovin.config;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;/** * @ClassName WebSecurityConfig * @Description TDO * @Author zhao.zhilue * @Date 2019/8/20 16:59 * @Version 1.0 **/@Configurationpublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception {  http.authorizeRequests().anyRequest().permitAll()    .and().csrf().disable(); }}
    • 我们需要注册到注册中心:
    package com.eelve.lovin;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;/** * @ClassName LovinEurekaClientApplication * @Description TDO * @Author zhao.zhilue * @Date 2019/8/15 16:37 * @Version 1.0 **/@SpringBootApplication@EnableEurekaClientpublic class LovinConfigClientApplication { public static void main(String[] args) {  SpringApplication.run(LovinConfigClientApplication.class,args); }}
    • 添加ConfigController用来测试获取配置
    package com.eelve.lovin.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @ClassName ConfigController * @Description TDO * @Author zhao.zhilue * @Date 2019/8/20 17:17 * @Version 1.0 **/@RestController@RefreshScope // 使用该注解的类,会在接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中。public class ConfigController { @Value("${lovin.token}") private String token; @RequestMapping("/token") public String getToken() {  return this.token; }}

    PS:其中RefreshScope注解是为了刷新配置来添加的,这样让配置仓库中的配置发生改变的时候,我们可以通过访问/refresh请求来刷新配置(由spring-boot-starter-actuator提供的监控功能)

    通过客户端去访问获取配置数据

    • 访问

    • 修改配置,然后再次访问,我们可以看到配置是没有变更的
      修改配置
      客户端再次访问配置

    • 刷新配置再次访问
      获取最新的配置

    可以看到这是我们已经获取到了最新的配置,当时这样就存在一个问题,每一个配置客户端都需要刷新配置,会非常麻烦,也很容易出错。解决方案由webhook来刷新配置,但是这个不是最好的解决办法。但是我们可以通过消息总线来解决,这里见会在下一篇文章中详细讲解,在这里就不作赘述了。


    • 最后的最后是本博客的源码,欢迎关注这一套SpringCloud的实践








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

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

    patents:https://www.ikjzd.com/w/857

    燕文物流:https://www.ikjzd.com/w/2229


    【前面的话】本文的某些知识依赖我的微服务系列文章,如果没有看过可以先移步去看一下。在前面的应用当中,我们所有的配置都是写在yaml配置文件当中的,这样就会造成几个问题:安全、统一管理等等。而SpringCloud也是考虑到这一点,给出的方案就是SpringCloudConfig。壹、Config的简介SpringCloudConfig是SpringCloud团队创建的一个全新项目,用来为分布式系统
    bol:bol
    terapeak:terapeak
    清远黄腾峡山水乐园门票价格?黄腾峡山水乐园要门票吗?:清远黄腾峡山水乐园门票价格?黄腾峡山水乐园要门票吗?
    第三届中国跨境电商年度盛典今日在深召开!:第三届中国跨境电商年度盛典今日在深召开!
    打卡苏城的「夜宵江湖」!贴秋膘的日子里,这五条街不允许你瘦:打卡苏城的「夜宵江湖」!贴秋膘的日子里,这五条街不允许你瘦

注意!美国包裹量暴增,快递公司征收附加费,暂停大订单

注意!美国包裹量暴增,快递公司征收附加费,暂停大订单

每年圣诞购物旺季,美国的包裹量都会暴增,随之全国性寄递企业就跟着收取附加费,缓解成本压力,今年也不例外。

但不同之处在于,受新冠肺炎疫情影响,北美快递企业提前半年就展开了"寄递马拉松"拉锯战。据Supplychiandive网站报道,美国企业递送压力可能会延续到2021年。附加费加收的日期也将会被延长。

据《巴伦周刊》12月15日报道,由于受新冠肺炎疫情影响,美国联邦快递和联合包裹业务量激增,有时甚至会出现快递延误。

近年来,快递时效的提升拉高了消费者的期望,一周或者更长的等待时间会导致消费者的不满。某些零售商也会因此流失客源。因此,联邦快递和联合包裹开始限制揽收零售商包裹,以确保时效。

据MarketWatch报道,不久前,联合包裹就告知快递司机在"网络星期一"要选择性接单,避免延误,其中就包括12月初暂时拒接GAP和耐克等品牌的某些订单。

MarketWatch援引《华尔街日报》从联合包裹员工处得知的消息称,其他临时限制接单的大型零售客户还包括Hot Topic、New Egg和梅西百货等。

除了限制接单,联邦快递和联合包裹还在附加费方面增添了"新花样"。

Supplychaindive网站报道称,联邦快递为了应对持续业务压力,自今年6月开始加收附加费。12月第三周又公布了3项附加费,其中包括76美分的SmartPost轻小件服务附加费,从2021年1月18日生效,持续时间等待进一步通知。虽然76美分低于旺季附加费的1-2美元,但高于6月份公布的40美分的水平。其他附加费还包括针对超大尺寸包裹加收30美元,高于6月份的旺季附加费标准。

咨询公司LPF Spend Management创始人Nate Skiver认为,2021年如果市场环境与2020年相似,承运企业运能有限、送货上门需求旺盛、市场主体稀缺,这种附加费价格机制就将持续,其他快递企业也会有类似调价行为。

当压力传导至末端时,美国邮政也招架不住了。

此前8月份美国邮政公布,从10月18日至12月27日,美国国内商业包裹的季节性附加费标准为0.24-1.5美元,这对于整个旺季期间依赖美国邮政的小包裹商家影响尤其大。

其中,包裹退货服务原来起步价为3.05美元,其间涨价24美分;优先商务邮件原价为7.02美元,涨了40美分;优先商务快递邮件原价为22.75美元涨价1.5美元。

报道显示,除了临时附加费,美国邮政最近还公布了其他涨价内容。从2021年1月24日开始,各项运输服务价格均要上涨,幅度为1.2%-20%。尤其是优先邮件和一类包裹价格变动较大。即便如此,美国邮政2020年预计仍将亏损,亏损额高达76亿美元。


虽然美国邮政不会对燃油、送件上门和常规的周六快递服务收取附加费,不过对于在邮件处理系统内发现的超尺寸大件包裹要多收取100美元,以抑制邮件处理系统内经常出现大件的网购包裹。

专家认为,由于美国邮政提供的末端派送服务国内最低,涨价意味着美国的"免费快递服务"很快将成为历史。

今后大小零售商需要不断创新,节约成本,扩大快递服务选择,在全国性、区域性及第三方物流企业之间找到业务平衡点。分析认为,多元化寄递选择确实可以降低物流成本,提高寄递时效,且减少客户因对寄递服务的不满影响品牌美誉度。

因此,零售商要尽量避免季节性附加费以及可能超过业务量上限带来的高收费,同时也要确保满足客户寄递需求,留住客户。研究称,56%的美国被调查者表示如果寄递体验差就不会选择相应零售商。

相应的,国际快递寄到美国的派送服务也受到延误影响。


来源:威速易供应链平台

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

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

张洁:https://www.ikjzd.com/w/1663

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

旺店通:https://www.ikjzd.com/w/2390

注意!美国包裹量暴增,快递公司征收附加费,暂停大订单

每年圣诞购物旺季,美国的包裹量都会暴增,随之全国性寄递企业就跟着收取附加费,缓解成本压力,今年也不例外。

如果到了宇宙的终极时刻,一切会是什么样子的!无限的循环下去。

世界自从产生那一刻起就意味着没有止境了,因为世界由无数个小世界组成的。但是这无数个小世界最终都会一个一个的消亡的一起又会重新产生一个小世界。整个世界都会无限的这样死的死,生的又生这样无限的循环下去。

宇宙会有尽头吗?如果到了宇宙的终极时刻,一切会是什么样子的!

虽然整个大世界无限无边,但这个无限无边的大世界逃不出人类思维的规模。因而整个大世界根本就不存在什么外围,人的思维便是整个大世界的外围。却是人类的思维得不到真正的进化,人类就一定有止境。不要忧虑什么外星人,也不要忧虑什么星球大战,世界白从形成那一刻起就注定没有星球大战。由于一个星球的生物有能力到其它星球生计就足以证明这个星球生物思维进化的相当的高级了。

宇宙会有尽头吗?如果到了宇宙的终极时刻,一切会是什么样子的!

一个高档生物思想首要思考的是怎么与别人共存,一个高档生物思想绝不会用低智商的丛林规律的动物国际的方法生计。这是必然。比如说:地球上的人真有才能到其它星球上去,咱们首要考虑的是怎么在这星球生计,这个星球的环境气候适应咱们吗?如果咱们把这儿的一些生物灭了之后咱们就真的能在这儿生计吗?或许咱们会用混血的方法才是在这个星球最好的生计下去。

宇宙会有尽头吗?如果到了宇宙的终极时刻,一切会是什么样子的!

不要动不动就灭了这个,灭了那个,这是低智商的动物思想。世界中全部低智商的动物思想只是在世界中的生计论这个阶段而已。世界全部低智商的动物思想最终结果都逃不出消亡的结果。可是消亡的同时会重新的新生一种物种。因而得出一个世界生物思想界的终极理论:这个终极理论就是世界中全部生物思想进化越高的生物生命力和生计力就越强大。咱们用自己做比喻,假如咱们现在自己就有能力到其它星球,难道咱们看不顺眼的都灭了吗?这不等于自己在破坏世界的运动规则吗?破坏世界规则不等于咱们自己自取消亡吗?

因而,又得出一个世界生物思想界的终极理论:那就是越是在世界活动规模越广泛的生物思想越是敬畏世界的自然规律的,越是敬畏世界自然规律的生物思想仁爱的规模就越广泛。越仁爱世界规模越广泛的生物思想生命力和生计力就越强大。咱们人类如果没有这些世界的敬畏仁爱之心,咱们人类地球的规模都别想走出去。这个看不顺眼灭了,那个看不顺眼灭了,由于这种心态没资历走出地球,由于这种思想不是真实高智商高才智的思想。由于达不到真实高智商高才智思想的生物就绝没有在其它星球生计的才能。



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

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

败欧洲:https://www.ikjzd.com/w/1555

c88是什么:https://www.ikjzd.com/w/1017.html


世界自从产生那一刻起就意味着没有止境了,因为世界由无数个小世界组成的。但是这无数个小世界最终都会一个一个的消亡的一起又会重新产生一个小世界。整个世界都会无限的这样死的死,生的又生这样无限的循环下去。虽然整个大世界无限无边,但这个无限无边的大世界逃不出人类思维的规模。因而整个大世界根本就不存在什么外围,人的思维便是整个大世界的外围。却是人类的思维得不到真正的进化,人类就一定有止境。不要忧虑什么外星人
insider:insider
心怡科技:心怡科技
亚马逊广告如何不烧钱?ACoS的常见问题以及检验标准!:亚马逊广告如何不烧钱?ACoS的常见问题以及检验标准!
超好用的邮箱去重复工具V1.2:超好用的邮箱去重复工具V1.2
2020南沙湿地公园春节活动?广州南沙湿地公园春节候鸟季开:2020南沙湿地公园春节活动?广州南沙湿地公园春节候鸟季开

探索发现凯斯伯格曾目睹外星人降落地球

凯斯伯格曾经在上是非常有名的,因为凯斯伯格是唯一一个见到过外星人的人,虽然说网络上有许多的人声称自己曾经见到过外星人,曾经与外星人打过交道,但是却没有真实的证据。人们之所以确定凯斯伯格真的见到过外星人,是因为凯斯伯格出示了外星人的相关图片,而且凯斯伯格对当时的情景以及外星人的形态描述的非常的具体,所以也获得了许多外星人爱好者的认可,但是探索发现凯斯伯格事件之后没有任何的后续,人们对该事件也是存在一些疑虑的。

图片7.png 

探索发现凯斯伯格见到外星人的时间是在1999年,该事件发生的还是比较晚的,所以说人们的关注度还是比较高的。据凯斯伯格所述,他在见到外星人的时候是非常恐惧的,所以他在目睹外星人降落到地球上之后,没有任何其他的行动,一直到外星飞船离开地面之后才出来,并且仔细观察了周围的情景,在这样紧急的时刻,他还使用自己的手机将外星人降落地球的一幕拍摄了下来,但是由于当时凯斯伯格与外星飞船的距离比较近,所以不敢有较大的动作,拍摄下来的相关图片也不是特别直观。在人们不断加大对于外星人探索的过程当中,人类获取了更多有关于外星人的信息,也获取了更多相关的踪迹,在众多与UFO或者是外星人具有关联的事件当中,凯斯伯格事件真实度是比较高的,所以探索发现的许多信息还是需要通过仔细斟酌,进行一一对比的,这样才能够确认是否真的与外星人有关。




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

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

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

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


凯斯伯格曾经在上是非常有名的,因为凯斯伯格是唯一一个见到过外星人的人,虽然说网络上有许多的人声称自己曾经见到过外星人,曾经与外星人打过交道,但是却没有真实的证据。人们之所以确定凯斯伯格真的见到过外星人,是因为凯斯伯格出示了外星人的相关图片,而且凯斯伯格对当时的情景以及外星人的形态描述的非常的具体,所以也获得了许多外星人爱好者的认可,但是探索发现凯斯伯格事件之后没有任何的后续,人们对该事件也是存在一
woot:woot
i号店:i号店
在三亚的阳光下长相厮守 - :在三亚的阳光下长相厮守 -
对于大卖家而言,用eBay支付可能费用比Paypal更高:对于大卖家而言,用eBay支付可能费用比Paypal更高
【昆明荷花节】2019昆明荷花节将持续到8月底,昆明荷花节:【昆明荷花节】2019昆明荷花节将持续到8月底,昆明荷花节

出现4种情况你可能宫寒了,宫寒该如何调理?

核心提示:很多女性都有宫寒的问题,你知道宫寒有哪些症状吗?冬季宫寒该如何调理?

什么是宫寒?


宫寒是中医理论中的病名,是指女性由于肾阳不足,胞宫失于温煦,表现出以子宫、输卵管、卵巢等生殖器官为主的一系列功能紊乱症状。由于宫寒,很多女性在经前都有小腹坠胀感,并出现白带增多、两乳胀痛等明显的经前综合症现象;经期则经血瘀滞,痛经次数增多且加重,身体疲软虚弱。

宫寒有哪些症状?4种情况要警惕

如果有以下多数症状,则应小心你可能成为了"宫寒女":

1.白带多且清,闻上去有一股腥味;

2.经期不稳定,经血量少,血色偏深偏暗;

3.面色苍白或暗黑,无血色,舌苔发白且滑;

4.经常感到劳累,精力不佳,手脚和关节发冷。

宫寒除了跟天生的体质有关外,也与外界环境和平时的生活习惯相关,需要长时间的调理,不管什么季节都不能过于贪凉。

宫寒引起月经不调,该如何调理?

"宫寒女"要想调理月经,防止受寒是远远不够的,还需要保持生活规律,注重饮食,并调整自己的心态。

1.防止受寒。经期不要冒雨涉水,无论何时都要避免小腹受寒。经期前3天可以喝红糖水,以促进经血排出干净,也能起到暖宫的效果。

2.生活规律,加强锻炼。在工作、学习中,要学会劳逸结合,勿熬夜。加强体育锻炼,以在鹅卵石的路上快步走最为简便,可刺激足部的经络,改善血液循环,切忌运动过多而疲劳。


3.多补铁。经期要注意补气调血,补充足够的铁质,以免发生缺铁性贫血。可以吃一些乌鸡、羊肉、虾、莲藕、红枣等滋补性的食物。

4.及时就医。一旦发现自己月经量减少或突然停经,要及时去看医生,切不可拖延,错过治疗的最佳时机。

5.保持良好心态。心理受挫、压力大等都会引起月经不调,要学会及时调整心态。


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

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

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

名人堂是什么:https://www.ikjzd.com/w/1082


核心提示:很多女性都有宫寒的问题,你知道宫寒有哪些症状吗?冬季宫寒该如何调理? 什么是宫寒?宫寒是中医理论中的病名,是指女性由于肾阳不足,胞宫失于温煦,表现出以子宫、输卵管、卵巢等生殖器官为主的一系列功能紊乱症状。由于宫寒,很多女性在经前都有小腹坠胀感,并出现白带增多、两乳胀痛等明显的经前综合症现象;经期则经血瘀滞,痛经次数增多且加重,身体疲软虚弱。宫寒有哪些症状?4种情况要警惕如果有以下多数症状
新单:新单
腾邦:腾邦
漓江是属于哪个省的?:漓江是属于哪个省的?
从河源到万绿湖有车直达的吗?该怎么走?:从河源到万绿湖有车直达的吗?该怎么走?
这家企业营收超60亿元!跨境大卖前三季度财报公布:这家企业营收超60亿元!跨境大卖前三季度财报公布