2021年3月3日星期三

9,000+ 字,彻底征服 Spring AOP!

基本知识

其实, 接触了这么久的 AOP, 我感觉, AOP 给人难以理解的一个关键点是它的概念比较多, 而且坑爹的是, 这些概念经过了中文翻译后, 变得面目全非, 相同的一个术语, 在不同的翻译下, 含义总有着各种莫名其妙的差别. 鉴于此, 我在本章的开头, 着重为为大家介绍一个 Spring AOP 的各项术语的基本含义。

为了术语传达的准确性, 我在接下来的叙述中, 能使用英文术语的地方, 尽量使用英文。

什么是 AOP

AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与 OOP 不同的抽象软件结构的视角。

在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面)

术语

Aspect(切面)

aspect 由 pointcount 和 advice 组成, 它既包含了横切逻辑的定义, 也包括了连接点的定义. Spring AOP就是负责实施切面的框架, 它将切面所定义的横切逻辑织入到切面所指定的连接点中。

AOP的工作重心在于如何将增强织入目标对象的连接点上, 这里包含两个工作:

  1. 如何通过 pointcut 和 advice 定位到特定的 joinpoint 上
  2. 如何在 advice 中编写切面代码.

可以简单地认为, 使用 @Aspect 注解的类就是切面。

advice(增强)

由 aspect 添加到特定的 join point(即满足 point cut 规则的 join point) 的一段代码。

许多 AOP框架, 包括 Spring AOP, 会将 advice 模拟为一个拦截器(interceptor), 并且在 join point 上维护多个 advice, 进行层层拦截。

例如 HTTP 鉴权的实现, 我们可以为每个使用 RequestMapping 标注的方法织入 advice, 当 HTTP 请求到来时, 首先进入到 advice 代码中, 在这里我们可以分析这个 HTTP 请求是否有相应的权限, 如果有, 则执行 Controller, 如果没有, 则抛出异常. 这里的 advice 就扮演着鉴权拦截器的角色了。

连接点(join point)

a point during the execution of a program, such as the execution of a method or the handling of an exception. In Spring AOP, a join point always represents a method execution.

程序运行中的一些时间点, 例如一个方法的执行, 或者是一个异常的处理。

在 Spring AOP 中, join point 总是方法的执行点, 即只有方法连接点。

切点(point cut)

匹配 join point 的谓词(a predicate that matches join points)。

Advice 是和特定的 point cut 关联的, 并且在 point cut 相匹配的 join point 中执行。

在 Spring 中, 所有的方法都可以认为是 joinpoint, 但是我们并不希望在所有的方法上都添加 Advice, 而 pointcut 的作用就是提供一组规则(使用 AspectJ pointcut expression language 来描述) 来匹配joinpoint, 给满足规则的 joinpoint 添加 Advice。

关于join point 和 point cut 的区别

在 Spring AOP 中, 所有的方法执行都是 join point. 而 point cut 是一个描述信息, 它修饰的是 join point, 通过 point cut, 我们就可以确定哪些 join point 可以被织入 Advice. 因此 join point 和 point cut 本质上就是两个不同纬度上的东西。

advice 是在 join point 上执行的, 而 point cut 规定了哪些 join point 可以执行哪些 advice。

introduction

为一个类型添加额外的方法或字段. Spring AOP 允许我们为 目标对象 引入新的接口(和对应的实现). 例如我们可以使用 introduction 来为一个 bean 实现 IsModified 接口, 并以此来简化 caching 的实现。

目标对象(Target)

织入 advice 的目标对象. 目标对象也被称为 advised object。

因为 Spring AOP 使用运行时代理的方式来实现 aspect, 因此 adviced object 总是一个代理对象(proxied object)。

注意, adviced object 指的不是原来的类, 而是织入 advice 后所产生的代理类。

AOP proxy

一个类被 AOP 织入 advice, 就会产生一个结果类, 它是融合了原类和增强逻辑的代理类。

在 Spring AOP 中, 一个 AOP 代理是一个 JDK 动态代理对象或 CGLIB 代理对象。

织入(Weaving)

将 aspect 和其他对象连接起来, 并创建 adviced object 的过程。

根据不同的实现技术, AOP织入有三种方式:

  • 编译器织入, 这要求有特殊的Java编译器.
  • 类装载期织入, 这需要有特殊的类装载器.
  • 动态代理织入, 在运行期为目标类添加增强(Advice)生成子类的方式.
    Spring 采用动态代理织入, 而AspectJ采用编译器织入和类装载期织入.

advice 的类型

  • before advice, 在 join point 前被执行的 advice. 虽然 before advice 是在 join point 前被执行, 但是它并不能够阻止 join point 的执行, 除非发生了异常(即我们在 before advice 代码中, 不能人为地决定是否继续执行 join point 中的代码)
  • after return advice, 在一个 join point 正常返回后执行的 advice
  • after throwing advice, 当一个 join point 抛出异常后执行的 advice
  • after(final) advice, 无论一个 join point 是正常退出还是发生了异常, 都会被执行的 advice.
  • around advice, 在 join point 前和 joint point 退出后都执行的 advice. 这个是最常用的 advice.

关于 AOP Proxy

Spring AOP 默认使用标准的 JDK 动态代理(dynamic proxy)技术来实现 AOP 代理, 通过它, 我们可以为任意的接口实现代理。

如果需要为一个类实现代理, 那么可以使用 CGLIB 代理。当一个业务逻辑对象没有实现接口时, 那么Spring AOP 就默认使用 CGLIB 来作为 AOP 代理了. 即如果我们需要为一个方法织入 advice, 但是这个方法不是一个接口所提供的方法, 则此时 Spring AOP 会使用 CGLIB 来实现动态代理. 鉴于此, Spring AOP 建议基于接口编程, 对接口进行 AOP 而不是类。

彻底理解 aspect, join point, point cut, advice

看完了上面的理论部分知识, 我相信还是会有不少朋友感觉到 AOP 的概念还是很模糊, 对 AOP 中的各种概念理解的还不是很透彻. 其实这很正常, 因为 AOP 中的概念是在是太多了, 我当时也是花了老大劲才梳理清楚的.
下面我以一个简单的例子来比喻一下 AOP 中 aspect, jointpoint, pointcut 与 advice 之间的关系。

让我们来假设一下, 从前有一个叫爪哇的小县城, 在一个月黑风高的晚上, 这个县城中发生了命案. 作案的凶手十分狡猾, 现场没有留下什么有价值的线索. 不过万幸的是, 刚从隔壁回来的老王恰好在这时候无意中发现了凶手行凶的过程, 但是由于天色已晚, 加上凶手蒙着面, 老王并没有看清凶手的面目, 只知道凶手是个男性, 身高约七尺五寸. 爪哇县的县令根据老王的描述, 对守门的士兵下命令说: 凡是发现有身高七尺五寸的男性, 都要抓过来审问. 士兵当然不敢违背县令的命令, 只好把进出城的所有符合条件的人都抓了起来。

来让我们看一下上面的一个小故事和 AOP 到底有什么对应关系。

首先我们知道, 在 Spring AOP 中 join point 指代的是所有方法的执行点, 而 point cut 是一个描述信息, 它修饰的是 join point, 通过 point cut, 我们就可以确定哪些 join point 可以被织入 Advice. 对应到我们在上面举的例子, 我们可以做一个简单的类比, join point 就相当于 爪哇的小县城里的百姓, point cut 就相当于 老王所做的指控, 即凶手是个男性, 身高约七尺五寸, 而 advice 则是施加在符合老王所描述的嫌疑人的动作: 抓过来审问。

为什么可以这样类比呢?

  • join point --> 爪哇的小县城里的百姓: 因为根据定义, join point 是所有可能被织入 advice 的候选的点, 在 Spring AOP中, 则可以认为所有方法执行点都是 join point. 而在我们上面的例子中, 命案发生在小县城中, 按理说在此县城中的所有人都有可能是嫌疑人.
  • point cut --> 男性, 身高约七尺五寸: 我们知道, 所有的方法(joint point) 都可以织入 advice, 但是我们并不希望在所有方法上都织入 advice, 而 pointcut 的作用就是提供一组规则来匹配joinpoint, 给满足规则的 joinpoint 添加 advice. 同理, 对于县令来说, 他再昏庸, 也知道不能把县城中的所有百姓都抓起来审问, 而是根据凶手是个男性, 身高约七尺五寸, 把符合条件的人抓起来. 在这里 凶手是个男性, 身高约七尺五寸 就是一个修饰谓语, 它限定了凶手的范围, 满足此修饰规则的百姓都是嫌疑人, 都需要抓起来审问.
  • advice --> 抓过来审问, advice 是一个动作, 即一段 Java 代码, 这段 Java 代码是作用于 point cut 所限定的那些 join point 上的. 同理, 对比到我们的例子中, 抓过来审问 这个动作就是对作用于那些满足 男性, 身高约七尺五寸 的爪哇的小县城里的百姓.
  • aspect: aspect 是 point cut 与 advice 的组合, 因此在这里我们就可以类比: "根据老王的线索, 凡是发现有身高七尺五寸的男性, 都要抓过来审问" 这一整个动作可以被认为是一个 aspect.

或则我们也可以从语法的角度来简单类比一下. 我们在学英语时, 经常会接触什么 定语, 被动句 之类的概念, 那么可以做一个不严谨的类比, 即 joinpoint 可以认为是一个 宾语, 而 pointcut 则可以类比为修饰 joinpoint 的定语, 那么整个 aspect 就可以描述为: 满足 pointcut 规则的 joinpoint 会被添加相应的 advice 操作。

另外,关注公众号Java技术栈,在后台回复:面试,可以获取我整理的 Spring 系列面试题和答案,非常齐全。

@AspectJ 支持

@AspectJ 是一种使用 Java 注解来实现 AOP 的编码风格。

@AspectJ 风格的 AOP 是 AspectJ Project 在 AspectJ 5 中引入的, 并且 Spring 也支持@AspectJ 的 AOP 风格。

使能 @AspectJ 支持

@AspectJ 可以以

使用 Java Configuration 方式使能@AspectJ

@Configuration@EnableAspectJAutoProxypublic class AppConfig {}

定义 aspect(切面)

当使用注解 @Aspect 标注一个 Bean 后, 那么 Spring 框架会自动收集这些 Bean, 并添加到 Spring AOP 中, 例如:

@Component@Aspectpublic class MyTest {}

注意, 仅仅使用@Aspect 注解, 并不能将一个 Java 对象转换为 Bean, 因此我们还需要使用类似 @Component 之类的注解. 注意, 如果一个 类被@Aspect 标注, 则这个类就不能是其他 aspect 的 advised object 了, 因为使用 @Aspect 后, 这个类就会被排除在 auto-proxying 机制之外。

声明 pointcut

一个 pointcut 的声明由两部分组成:

  • 一个方法签名, 包括方法名和相关参数
  • 一个 pointcut 表达式, 用来指定哪些方法执行是我们感兴趣的(即因此可以织入 advice).

在@AspectJ 风格的 AOP 中, 我们使用一个方法来描述 pointcut, 即:

@Pointcut("execution(* com.xys.service.UserService.*(..))") // 切点表达式private void dataAccessOperation() {} // 切点前面

这个方法必须无返回值。

这个方法本身就是 pointcut signature, pointcut 表达式使用@Pointcut 注解指定。

上面我们简单地定义了一个 pointcut, 这个 pointcut 所描述的是: 匹配所有在包 com.xys.service.UserService 下的所有方法的执行。

切点标志符(designator)

AspectJ5 的切点表达式由标志符(designator)和操作参数组成. 如 "execution( greetTo(..))" 的切点表达式, execution 就是 标志符, 而圆括号里的 greetTo(..) 就是操作参数。

execution

匹配 join point 的执行, 例如 "execution(* hello(..))" 表示匹配所有目标类中的 hello() 方法. 这个是最基本的 pointcut 标志符。

within

匹配特定包下的所有 join point, 例如 within(com.xys.*) 表示 com.xys 包中的所有连接点, 即包中的所有类的所有方法. 而 within(com.xys.service.*Service) 表示在 com.xys.service 包中所有以 Service 结尾的类的所有的连接点。

this 与 target

this 的作用是匹配一个 bean, 这个 bean(Spring AOP proxy) 是一个给定类型的实例(instance of). 而 target 匹配的是一个目标对象(target object, 即需要织入 advice 的原始的类), 此对象是一个给定类型的实例(instance of)。

bean

匹配 bean 名字为指定值的 bean 下的所有方法, 例如:

bean(*Service) // 匹配名字后缀为 Service 的 bean 下的所有方法bean(myService) // 匹配名字为 myService 的 bean 下的所有方法
args

匹配参数满足要求的的方法。

例如:

@Pointcut("within(com.xys.demo2.*)")public void pointcut2() {}@Before(value = "pointcut2() && args(name)")public void doSomething(String name) { logger.info("---page: {}---", name);}@Servicepublic class NormalService { private Logger logger = LoggerFactory.getLogger(getClass()); public void someMethod() {  logger.info("---NormalService: someMethod invoked---"); } public String test(String name) {  logger.info("---NormalService: test invoked---");  return "服务一切正常"; }}

当 NormalService.test 执行时, 则 advice doSomething 就会执行, test 方法的参数 name 就会传递到 doSomething 中。

常用例子:

// 匹配只有一个参数 name 的方法@Before(value = "aspectMethod() && args(name)")public void doSomething(String name) {}// 匹配第一个参数为 name 的方法@Before(value = "aspectMethod() && args(name, ..)")public void doSomething(String name) {}// 匹配第二个参数为 name 的方法Before(value = "aspectMethod() && args(*, name, ..)")public void doSomething(String name) {}
@annotation

匹配由指定注解所标注的方法, 例如:

@Pointcut("@annotation(com.xys.demo1.AuthChecker)")public void pointcut() {}

则匹配由注解 AuthChecker 所标注的方法。

常见的切点表达式

匹配方法签名
// 匹配指定包中的所有的方法execution(* com.xys.service.*(..))// 匹配当前包中的指定类的所有方法execution(* UserService.*(..))// 匹配指定包中的所有 public 方法execution(public * com.xys.service.*(..))// 匹配指定包中的所有 public 方法, 并且返回值是 int 类型的方法execution(public int com.xys.service.*(..))// 匹配指定包中的所有 public 方法, 并且第一个参数是 String, 返回值是 int 类型的方法execution(public int com.xys.service.*(String name, ..))
匹配类型签名
// 匹配指定包中的所有的方法, 但不包括子包within(com.xys.service.*)// 匹配指定包中的所有的方法, 包括子包within(com.xys.service..*)// 匹配当前包中的指定类中的方法within(UserService)// 匹配一个接口的所有实现类中的实现的方法within(UserDao+)
匹配 Bean 名字
// 匹配以指定名字结尾的 Bean 中的所有方法bean(*Service)
切点表达式组合
// 匹配以 Service 或 ServiceImpl 结尾的 beanbean(*Service || *ServiceImpl)// 匹配名字以 Service 结尾, 并且在包 com.xys.service 中的 beanbean(*Service) && within(com.xys.service.*)

声明 advice

advice 是和一个 pointcut 表达式关联在一起的, 并且会在匹配的 join point 的方法执行的前/后/周围 运行. pointcut 表达式可以是简单的一个 pointcut 名字的引用, 或者是完整的 pointcut 表达式。

下面我们以几个简单的 advice 为例子, 来看一下一个 advice 是如何声明的.

Before advice

/** * @author xiongyongshun * @version 1.0 * @created 16/9/9 13:13 */@Component@Aspectpublic class BeforeAspectTest { // 定义一个 Pointcut, 使用 切点表达式函数 来描述对哪些 Join point 使用 advise. @Pointcut("execution(* com.xys.service.UserService.*(..))") public void dataAccessOperation() { }}@Component@Aspectpublic class AdviseDefine { // 定义 advise @Before("com.xys.aspect.PointcutDefine.dataAccessOperation()") public void doBeforeAccessCheck(JoinPoint joinPoint) {  System.out.println("*****Before advise, method: " + joinPoint.getSignature().toShortString() + " *****"); }}

这里, @Before 引用了一个 pointcut, 即 "com.xys.aspect.PointcutDefine.dataAccessOperation()" 是一个 pointcut 的名字。

如果我们在 advice 在内置 pointcut, 则可以:

@Component@Aspectpublic class AdviseDefine { // 将 pointcut 和 advice 同时定义 @Before("within(com.xys.service..*)") public void doAccessCheck(JoinPoint joinPoint) {  System.out.println("*****doAccessCheck, Before advise, method: " + joinPoint.getSignature().toShortString() + " *****"); }}

around advice

around advice 比较特别, 它可以在一个方法的之前之前和之后添加不同的操作, 并且甚至可以决定何时, 如何, 是否调用匹配到的方法。

@Component@Aspectpublic class AdviseDefine { // 定义 advise @Around("com.xys.aspect.PointcutDefine.dataAccessOperation()") public Object doAroundAccessCheck(ProceedingJoinPoint pjp) throws Throwable {  StopWatch stopWatch = new StopWatch();  stopWatch.start();  // 开始  Object retVal = pjp.proceed();  stopWatch.stop();  // 结束  System.out.println("invoke method: " + pjp.getSignature().getName() + ", elapsed time: " + stopWatch.getTotalTimeMillis());  return retVal; }}

around advice 和前面的 before advice 差不多, 只是我们把注解 @Before 改为了 @Around 了。

最后,关注公众号Java技术栈,在后台回复:面试,可以获取我整理的 Spring 系列面试题和答案,非常齐全。

作者:永顺
来源:segmentfault.com/a/1190000007469968

近期热文推荐:

1.600+ 道 Java面试题及答案整理(2021最新版)

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

3.阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!

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

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









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

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

环球b2b:https://www.ikjzd.com/w/1762

欧苏丹:https://www.ikjzd.com/w/1756


基本知识其实,接触了这么久的AOP,我感觉,AOP给人难以理解的一个关键点是它的概念比较多,而且坑爹的是,这些概念经过了中文翻译后,变得面目全非,相同的一个术语,在不同的翻译下,含义总有着各种莫名其妙的差别.鉴于此,我在本章的开头,着重为为大家介绍一个SpringAOP的各项术语的基本含义。为了术语传达的准确性,我在接下来的叙述中,能使用英文术语的地方,尽量使用英文。什么是AOPAOP(Aspec
淘粉吧返利:https://www.ikjzd.com/w/1725
xinong:https://www.ikjzd.com/w/1368
krazy:https://www.ikjzd.com/w/1801
ShopGo:https://www.ikjzd.com/w/873
口述:女友不在家 她闺蜜半夜偷睡我枕边:http://lady.shaoqun.com/m/a/7469.html
亚马逊如何上首页的方法:https://www.ikjzd.com/tl/107458

吉布森23分雷蒙首秀11+6 首钢力擒北控获两连胜_北京

原标题:吉布森23分雷蒙首秀11+6 首钢力擒北控获两连胜

北京时间3月2日晚,2020-21赛季CBA常规赛继续第40轮角逐。北京首钢男篮经过四节较量以93-83战胜北京紫禁勇士男篮,取得2连胜。

雷蒙强攻

四节的具体比分为17-20、27-23、27-26和22-14(北京队在前)。北京队这边,乔纳森-吉布森投进5记三分得到全队最高的23分并抢下3篮板1助攻1抢断,汉密尔顿有17分7篮板1助攻1抢断1盖帽入账,方硕贡献15分4篮板7助攻3抢断,雷蒙首秀拿下11分6篮板1助攻1抢断。北控队这边,杨得到全队最高的17分7篮板4助攻2抢断,孙桐林有17分6篮板2抢断入账,张帆贡献12分4篮板1助攻1盖帽,李根拿下10分2篮板2助攻。

王少杰突破上篮

北京队主帅雅尼斯迎来回归首秀。汉密尔顿中投得分,开场两队战成5-5平。杨和张帆各自投进三分,北控队11-5领先。在王骁辉外线还以颜色后,北京队打出一波流12-13缩小分差。孙桐林上篮得分,随后范子铭造犯规2罚全中。雷蒙快攻上篮得分并造犯规,紧接着北控队连得4分反超比分。首节战罢,北控队20-17领先北京队。

次节一开始,吉布森投进三分,两队战成25平。双方陷入拉锯战,从27平、31平,战至33平。杨突破上篮得分,随后吉布森外线命中三分。孙桐林外线还以颜色,两队又战成39平。在朱彦西投进三分后,汉密尔顿空接拿下2分。该节结束前,杨利用掩护上篮得分。上半场结束,北京队44-43领先北控队。

第三节开始后,张帆投进三分,两队战成50平。此时北京队连得7分,马布里请求暂停。孙桐林快攻左手上篮得分,紧接着李根2罚全中,北控队58-57反超1分打停北京队。在北京队连得5分后,李根命中三分,两队又战成63平。吉布森接连命中2记三分,北京队打出8-3攻击波确立优势。该节结束前,王子瑞压哨三分还以颜色。三节战罢,北京队71-69领先北控队。

末节开始后,雷蒙篮下强攻得手并造犯规,随后北控队连得4分,两队战成74平。在吉布森投进三分后,李慕豪篮下双手暴扣,北京队领先5分。俞长栋6犯离场,雷蒙命中三分,北京队85-78领先。刘晓宇拿下2分,落后9分的北控队请求暂停。汉密尔顿中投得分,北控队没有机会。最终,北京队赢下京城德比!

北京男篮首发:2-李慕豪、41-贾斯汀-汉密尔顿、10-刘晓宇、8-方硕、77-王骁辉

北控男篮首发:7-俞长栋、14-王少杰、3-约瑟夫-杨、9-孙悦、6-张帆返回搜狐,查看更多

责任编辑:

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

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

贝恩:https://www.ikjzd.com/w/1336

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


原标题:吉布森23分雷蒙首秀11+6首钢力擒北控获两连胜北京时间3月2日晚,2020-21赛季CBA常规赛继续第40轮角逐。北京首钢男篮经过四节较量以93-83战胜北京紫禁勇士男篮,取得2连胜。雷蒙强攻四节的具体比分为17-20、27-23、27-26和22-14(北京队在前)。北京队这边,乔纳森-吉布森投进5记三分得到全队最高的23分并抢下3篮板1助攻1抢断,汉密尔顿有17分7篮板1助攻1抢断1
慧聪商务网:https://www.ikjzd.com/w/1836
首信易:https://www.ikjzd.com/w/1841
中国邮政邮乐网:https://www.ikjzd.com/w/1776
Prime Day有亏损时怎么办?将由杂货品牌补上!:https://www.ikjzd.com/home/100593
跨境电商独立站卖家如何开启Dropshipping模式:https://www.ikjzd.com/home/18689
亚马逊中国成为被执行人 执行标的23420:https://www.ikjzd.com/home/132140

2021年3月2日星期二

NPOI 在指定单元格导入导出图片

NPOI 在指定单元格导入导出图片

NPOI 在指定单元格导入导出图片

Intro

我维护了一个 NPOI 的扩展(WeihanLi.Npoi),主要用来导入导出 Excel 数据,最近有网友提出了导入 Excel 的时候解析图片的需求,于是就有了本文的探索

导入Excel 时解析图片

xls 和 xlsx 的 API 稍有不同,详细可以直接参考以下代码,实现代码如下:

public static Dictionary<CellPosition, IPictureData> GetPicturesAndPosition(this ISheet sheet){ var dictionary = new Dictionary<CellPosition, IPictureData>(); if (sheet.Workbook is HSSFWorkbook) {  foreach (var shape in ((HSSFPatriarch)sheet.DrawingPatriarch).Children)  {   if (shape is HSSFPicture picture)   {    var position = new CellPosition(picture.ClientAnchor.Row1, picture.ClientAnchor.Col1);    dictionary[position] = picture.PictureData;   }  } } else if (sheet.Workbook is XSSFWorkbook) {  foreach (var shape in ((XSSFDrawing)sheet.DrawingPatriarch).GetShapes())  {   if (shape is XSSFPicture picture)   {    var position = new CellPosition(picture.ClientAnchor.Row1, picture.ClientAnchor.Col1);    dictionary[position] = picture.PictureData;   }  } } return dictionary;}

CellPosition 是一个自定义的结构体,表示当前单元格的位置,源码如下:

public readonly struct CellPosition : IEquatable<CellPosition>{ public CellPosition(int row, int col) {  Row = row;  Column = col; } public int Row { get; } public int Column { get; } public bool Equals(CellPosition other) {  return Row == other.Row && Column == other.Column; } public override bool Equals(object? obj) => obj is CellPosition other && Equals(other); public override int GetHashCode() => $"{Row}_{Column}".GetHashCode();}

根据上面的代码,我们就可以获取到获取到所有的图片以及图片的所在位置,这样根据单元格位置去找图片信息的时候就会很方便了

导出 Excel 时设置图片

实现代码如下:

public static bool TryAddPicture(this ISheet sheet, int row, int col, byte[] pictureBytes, PictureType pictureType = PictureType.PNG){ if (sheet is null) {  throw new ArgumentNullException(nameof(sheet)); } try {  var pictureIndex = sheet.Workbook.AddPicture(pictureBytes, pictureType);  var clientAnchor = sheet.Workbook.GetCreationHelper().CreateClientAnchor();  clientAnchor.Row1 = row;  clientAnchor.Col1 = col;  var picture = (sheet.DrawingPatriarch ?? sheet.CreateDrawingPatriarch())   .CreatePicture(clientAnchor, pictureIndex);  picture.Resize();  return true; } catch (Exception e) {  Debug.WriteLine(e); } return false;}

通过上面的代码我们就可以在指定的单元格设置图片,目前没有支持单元格合并操作,有需要自己进行修改

WeihanLi.Npoi

WeihanLi.Npoi 在 1.15.0 版本中增加了图片导入导出的支持,使用示例可以参考下面的单元测试:

[Theory][ExcelFormatData]public async Task ImageImportExportTest(ExcelFormat excelFormat){ using var httpClient = new HttpClient(); var imageBytes = await httpClient.GetByteArrayAsync("https://weihanli.xyz/assets/avator.jpg"); var list = Enumerable.Range(1, 5)  .Select(x => new ImageTest() { Id = x, Image = imageBytes })  .ToList(); var excelBytes = list.ToExcelBytes(excelFormat); var importResult = ExcelHelper.ToEntityList<ImageTest>(excelBytes, excelFormat); Assert.NotNull(importResult); Assert.Equal(list.Count, importResult.Count); for (var i = 0; i < list.Count; i++) {  Assert.NotNull(importResult[i]);  var result = importResult[i]!;  Assert.Equal(list[i].Id, result.Id);  Assert.NotNull(result.Image);  Assert.True(list[i].Image.SequenceEqual(result.Image)); }}private class ImageTest{ public int Id { get; set; } public byte[] Image { get; set; } = null!;}

导入时会自动将 byte[] 类型的属性尝试获取对应的单元格位置的图片,如果在对应的位置找到了图片就能够读取到图片的字节数组信息映射到 model 里的字节数组属性

除此之外,还支持直接导入的时候将图片信息 Map 到 IPictureData 属性上,但是觉得还是字节数组更通用一些,如果对此感兴趣可以参考项目源码以及单元测试

More

感谢 @ZeguangZhang94 童鞋提出的需求和帮忙测试~

如果你也有类似的读取指定单元格的图片或者在指定单元格插入图片的需求,可以试一下上面的方法,希望对你有帮助,可以直接引用我的类库或者直接拷贝源码到自己的项目里使用

References

  • https://github.com/WeihanLi/WeihanLi.Npoi
  • https://github.com/WeihanLi/WeihanLi.Npoi/blob/dev/src/WeihanLi.Npoi/NpoiExtensions.cs#L1143
  • https://stackoverflow.com/questions/24084129/read-image-from-excel-file-using-npoi
  • https://stackoverflow.com/questions/41138848/add-image-to-excel-xlsx-using-npoi-c-sharp
  • https://github.com/WeihanLi/WeihanLi.Npoi/issues/99








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

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

西集网:https://www.ikjzd.com/w/1353

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


NPOI在指定单元格导入导出图片NPOI在指定单元格导入导出图片Intro我维护了一个NPOI的扩展(WeihanLi.Npoi),主要用来导入导出Excel数据,最近有网友提出了导入Excel的时候解析图片的需求,于是就有了本文的探索导入Excel时解析图片xls和xlsx的API稍有不同,详细可以直接参考以下代码,实现代码如下:publicstaticDictionary<CellPos
易麦:https://www.ikjzd.com/w/2048
coles:https://www.ikjzd.com/w/2506
立刻网:https://www.ikjzd.com/w/2323
产品没有销量,可能是你的选品不行:https://www.ikjzd.com/home/142383
FBA物流费用计算错误怎么办?:https://www.ikjzd.com/home/96797
干货!如何做好跨境电商?亚马逊创业新手必知:https://www.ikjzd.com/home/97456

Covid弹性排名全球第9,日本“艰难”的抗疫之路

据彭博社1日发表的近期统计,在53个经济体的Covid弹性排名(Covid Resilience Ranking)中日本位居第9,而中国则排名第6名。

 

但日本自己,却似乎并不怎么看好自己的排名,抗疫之路走的也是比较"艰难"!

 

发生首例疫苗浪费事件

 SQTjFchGyJsrca.jpg


先是日本厚生劳动省1日发表声明称,据医疗机构上报,用于保管新冠疫苗用的冷柜于2月26日发生故障,致使172瓶疫苗脱离超低温储存状态,无法使用。

 

这批疫苗约合1032剂,目前全部报废处理。这也是日本首例新冠疫苗浪费事件。

 

其次是根据该国的疫苗接种时间表,将在3月开始对470万医务人员进行疫苗接种,然后从4月12日开始对3600万65岁以上的老年人进行疫苗接种。

 

但在这一接种关头,日本方面除了猪队友"浪费疫苗",优先接种的老年人也并不买账。有近一半的老年人却表示对于接种疫苗并不看好。

 

在最近接受调查的日本老年人群中,超过40%的人表示他们不确定是否会接受冠状病毒疫苗,这表明许多人对注射疫苗持谨慎态度。这与超过五成表示接种疫苗是社会责任的韩国人形成对比。

 

尽管有多位政界及医疗体系人士带头接受新冠疫苗,但依旧有近一半的受访者表示了对副作用的担忧和对疫苗有效性的怀疑。毕竟截止到3月1日,韩国接种疫苗后出现不良反应的报告已累计达152份。(韩国疾病管理厅厅长郑银敬表示,不良反应均是在体内形成免疫过程中可能出现的正常反应,症状3天之内就会自然消失。)

 

接种疫苗全靠买

 

当欧美和我们中国在加班加点研制新冠疫苗并初有成效时,日本却早早地便放弃治疗,寄希望于关系好的欧美等国,做好了掏钱的准备。

 辉瑞公司(Pfizer Inc.)的第三批COVID-19疫苗于2021年3月1日从比利时运抵东京。(图片来源:日本共同社).png

辉瑞公司(Pfizer Inc.)的第三批COVID-19疫苗于2021年3月1日从比利时运抵东京。

(图片来源:日本共同社)


在经济下滑的现状下,面对耗资巨大且难出成果的疫苗研发,日本也的有点力不从心。掏钱购买比自己更有钱更有实力的欧美的疫苗,或许是一笔更划算的账。

 

作为一个人口大国(1.27亿人,排名全球第),国土资源却只是一个小国的国家,日本尽管已经背上了抗疫不力的锅,但是日本政府面对疫情,也的确投入了巨大的资金、人力和物力。通过3次紧急状态,也有效遏制了疫情的加剧,这点成绩的确不容忽视。

 

不过随着日本计划3月7日全面结束紧急状态的消息传来,再加上日本西部的神户市变异冠状病毒的感染增加,使日本疫情加下来的走向的发展再次变成未知数!




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

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

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

白色清关:https://www.ikjzd.com/w/1410


据彭博社1日发表的近期统计,在53个经济体的Covid弹性排名(CovidResilienceRanking)中日本位居第9,而中国则排名第6名。但日本自己,却似乎并不怎么看好自己的排名,抗疫之路走的也是比较"艰难"!发生首例疫苗浪费事件先是日本厚生劳动省1日发表声明称,据医疗机构上报,用于保管新冠疫苗用的冷柜于2月26日发生故障,致使172瓶疫苗脱离超低温储存状态,无法使用。这批疫苗约合1032
jpgoodbuy:https://www.ikjzd.com/w/1553
亚马逊全球开店制造:https://www.ikjzd.com/w/204.html
出口易:https://www.ikjzd.com/w/1317
学会这些视频营销方法,让你的转化率提高40%!:https://www.ikjzd.com/home/128938
继"港独T恤"事件之后,亚马逊又作妖?!:https://www.ikjzd.com/home/108276
口述:女人爱情为何总得为男人友情让路(4/4):http://lady.shaoqun.com/m/a/71457.html

哈登30+14+15德罗赞22+11 欧文27分篮网加时擒马刺_比分

原标题:哈登30+14+15德罗赞22+11 欧文27分篮网加时擒马刺

北京时间3月2日消息,詹姆斯-哈登全场贡献30分14个篮板和15次助攻,凯里-欧文复出拿到27分,篮网队客场通过加时以124-113击败马刺队。

双方具体比分为(篮网在前):27-21,30-33,24-27,27-27,16-5。

篮网:詹姆斯-哈登30分14篮板15助攻2抢断0失误,凯里-欧文27分6篮板7助攻,德安德鲁-乔丹8分13篮板,布鲁斯-布朗23分,克拉克斯顿17分

马刺:德玛尔-德罗赞22分6篮板11助攻,特雷-莱尔斯10分7篮板,朗尼-沃克19分,德章泰-穆雷19分6篮板8助攻,雅各布-珀尔特尔14分12篮板,米尔斯14分。

比赛开始后,马刺率先开火,德罗赞以一记跳投拉开本场得分大幕,拥有欧文和哈登两大超级巨星的篮网瞬间掌控场上局势,一波15-5进攻高潮过后,篮网以15-9领先。马刺被迫再度叫停,米尔斯的三分球仍无法阻挡篮网攻势,欧文飙中三分后,又助攻小乔丹完成空接暴扣。2分37秒,欧文继续在外线建功,篮网将优势扩大到7分。末端,沙马尼奇的三分帮助马刺稳住军心,德罗赞也打进马刺该节最后一球,首节战罢,马刺将比分追至21-27。

次节,马刺开始发动反击,8分27秒,米尔斯上篮得手,马刺将比分扳成32平。篮网主帅纳什见势立刻叫停,沙梅特的三分球开启篮网新一轮攻势,克拉克斯顿打出2+1,哈登和哈里斯相继外线飙中三分,一波20-8进攻高潮过后,篮网以52-40领先。不过在该节最后3分半钟时间内,篮网进攻效率直线下滑,仅仅打进2球,马刺趁机回敬一波14-5攻势,半场战罢,马刺将比分追至54-57。

异地再战,篮网仍占据着场上优势,当领先优势扩大到6分后,穆雷和珀尔特尔联手打出一波12-5小高潮,马刺将比分以73-72反超。关键时刻,哈登突破篮下强打得手令篮网止血,而迪奥普的三分球再度将比分扳成76平。布朗接过篮网进攻大旗,一人连投再罚拿下5分,但沙马尼奇的三分帮助马刺在三节比赛结束时将比分扳成81平。

末节,篮网上来就奉出一波16-5小高潮,篮网以97-86领先。珀尔特尔的扣篮仍无法阻挡篮网的攻势,哈登一人连砍7分,篮网重新获得11分优势。马刺众将并未放弃,沃克飙中三分后,德罗赞也通过罚球帮助球队涨分。暂停回来后,哈登继续建功,紧接着小乔丹2罚全中,篮网以108-98领先。沃克和米尔斯相继射中三分,40.9秒,德罗赞上篮得手,马刺将分差缩小到2分。20.5秒,哈登出手未果,小乔丹抢下关键篮板,但5.0秒,欧文空位上篮不中。马刺抢到后场篮板推进前场,穆雷在混战之中跪地后从地板上捡起篮球出手压哨命中两分,将比分扳成108平,比赛进入加时。

加时赛,篮网一波8-0小高潮过后,将比分改写成116-108。马刺也不示弱,珀尔特尔上篮得手,穆雷也在外线飙中三分,马刺将分差缩小到3分。关键时刻,欧文底角飙中三分,哈登助攻布朗完成进攻后,1分3秒,哈登也在外线进攻,马刺放弃比赛,最终篮网以124-113击败马刺。

双方首发阵容

篮网:詹姆斯-哈登,乔-哈里斯,凯里-欧文,德安德鲁-乔丹,布鲁斯-布朗

马刺:德玛尔-德罗赞,特雷-莱尔斯,朗尼-沃克,德章泰-穆雷,雅各布-珀尔特尔

(晨晨)返回搜狐,查看更多

责任编辑:

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

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

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

aeo:https://www.ikjzd.com/w/2356


原标题:哈登30+14+15德罗赞22+11欧文27分篮网加时擒马刺北京时间3月2日消息,詹姆斯-哈登全场贡献30分14个篮板和15次助攻,凯里-欧文复出拿到27分,篮网队客场通过加时以124-113击败马刺队。双方具体比分为(篮网在前):27-21,30-33,24-27,27-27,16-5。篮网:詹姆斯-哈登30分14篮板15助攻2抢断0失误,凯里-欧文27分6篮板7助攻,德安德鲁-乔丹8分
刘小东:https://www.ikjzd.com/w/1853
邮乐网:https://www.ikjzd.com/w/1776
贝恩:https://www.ikjzd.com/w/1336
数据报告 | 北美成购物App第一大市场:https://www.ikjzd.com/home/132305
想要亚马逊跨境生意趁势增长?产品创新绝杀,居然是...:https://www.ikjzd.com/home/132232
自配送 or FBA?一文搞懂亚马逊跨境物流!:https://www.ikjzd.com/home/19766

Vue.js 多选列表(Multi-Select)组件

搬运公众号早前文章

多选列表 (Multi-Select) 是一种将所有选项列出,并允许用户利用 Ctrl/Shift 键进行多选的 UI 元素。这是一种常见的设计元素。有时候为了节省空间,我们会将选项折叠于 Combo Box 中。为了方便用户操作,这个组件还将添加 Select All 和 Clear All 两个按钮,允许用户快速选择或清除选择。这个 UI 元素曾被运用于 Correlation Plot App 中。

preview gif

注册组件


注册 Multi-Select 组件,简单来说就是复制粘贴已封装好的代码部分。此处建议注册全局组件。

设计该元素的时候考虑了两种模式:第一种是每次点击新选项将保留旧选项并添加新选项,如上述示例图形。这种是较为常见的一种方式。第二种是每次点击新选项则清除旧选项仅保留新选项。若使用这种方式进行多选,则需要利用Ctrl/Shift键。这种设计能便于用户在每一次的点击中消除旧选项。若使用第二方式,需要替换事件 @click.exact="AddToOrDeleteFromSelectedColumns"
为 @click.exact="ClickOnColumnListItem"

<script type="text/x-template" id="multi-select-template">…  <tr v-for = "(item,index) in columns"   @click.exact="AddToOrDeleteFromSelectedColumns"   @click.shift.exact="AddMultipleToSelectedColumns"   @click.ctrl.exact="AddToOrDeleteFromSelectedColumns"   :title="function(item){if(item.longname){return 'Short Name: ' + item.name + '\n----------------\n' + item.longname}else{return item.name}}(item)"   >  ...  </tr></script><script>Vue.component("multi-select", { template: "#multi-select-template",…</script>


调用组件


直接添加自定义标签 调用组件。

<multi-select :legend_name="legend_name"    :columns="columns"    :selected_columns="selected_columns"    @update_selected_columns="onSelectedColumnsChange"></multi-select>


传递数据


最后还需要对组件传递数据。我们可以利用 v-bind 动态绑定数据到父级组件的数据中。

props 中 legend_name 绑定 Multi-Select 的所需显示的名称,columns 绑定 Multi-Select 的选项, selected_columns 绑定当前的已选项。另外我们还需要在父级实例中定义事件 "onSelectedColumnsChange",用于刷新 Multi-Select 组件的显示。

data: function(){  return {   legend_name: "Input Columns",   columns:   [    {"name":"A","longname":"Copper"},    {"name":"B","longname":"Aluminum Aluminum"},    {"name":"C","longname":"Calcium"},    {"name":"D","longname":"Calcium"},  ],   selected_columns: [],  } },... methods:{  onSelectedColumnsChange:function(new_columns) {   this.selected_columns = new_columns;  }, },...


源代码

Github









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

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

巴克莱银行:https://www.ikjzd.com/w/2775

feedly:https://www.ikjzd.com/w/754


搬运公众号早前文章多选列表(Multi-Select)是一种将所有选项列出,并允许用户利用Ctrl/Shift键进行多选的UI元素。这是一种常见的设计元素。有时候为了节省空间,我们会将选项折叠于ComboBox中。为了方便用户操作,这个组件还将添加SelectAll和ClearAll两个按钮,允许用户快速选择或清除选择。这个UI元素曾被运用于CorrelationPlotApp中。注册组件注册Mu
hemingway:https://www.ikjzd.com/w/2344
铭宣:https://www.ikjzd.com/w/1551.html
西农:https://www.ikjzd.com/w/1368
为占领绝对发展优势,Lazada或将加快扩大其金融业务?:https://www.ikjzd.com/home/20580
惊!Facebook又陷信息丑闻风波,遭殃的竟是亚马逊....:https://www.ikjzd.com/home/21131
亚马逊后台界面怎么操作_后台各菜单功能介绍全教程:https://www.ikjzd.com/home/7041

亚马逊上到处都是广告?只剩下唯一一个推荐功能!

在亚马逊和其他零售商的网站上,广告已经取代了产品推荐和个性化服务。

亚马逊上的一切都是广告,他们不再试图引导产品发现,而是让广告主导这一整个过程。

2003年,亚马逊的研究人员格雷格·林登、布伦特·史密斯和杰里米·约克发表了一篇开创性的论文,名为《亚马逊推荐:商品到商品的协同过滤》。2017年,《IEEE互联网计算》杂志庆祝成立20周年时,编辑部认为它最经得起"时间的考验"。

"在亚马逊,我们使用推荐算法为客户的在线商店提供个性化建议。商店根据客户的兴趣而发生了根本性的变化,向软件工程师展示了编程标题,向新妈妈展示了婴儿玩具。但是,今天的亚马逊几乎没有所描述的功能。"

在过去的一年中,"与此商品相关的赞助产品","四颗星及以上"和"与亚马逊上该类别相关的品牌"广告部分几乎取代"购买此商品的客户也购买了"和"查看了此商品的客户也查看了......"剩下的最后一个推荐功能是"经常一起购买"。产品页面上的其他所有内容都是广告。

其他零售商正在模仿亚马逊。例如,eBay还用广告取代了产品推荐。沃尔玛也已经开始在相同的自然推荐布局中加入一系列建议。沃尔玛首席客户官珍妮·怀特塞德说:"我们非常有信心,将能够在未来几年内将该业务发展成为美国十大广告平台之一。"

广告激增的结果是无需增加销量即可增加收入(亚马逊在2020年带来了超过200亿美元的广告收入)。广告也是品牌用于增加销量的可预测渠道。

但是亚马逊上广告已经扭曲了(广告不仅限于产品详细信息页面;它在产品搜索结果中也在不断增长)。

广告同时也削弱了零售商在发现,个性化和任何形式的交互式购物方面进行创新的能力。在某个时候,每一项改善体验的决定都将与广告所替代的收入损失相抗衡。这就是为什么亚马逊在提高购物体验方面做得很少的原因,相反,屏幕上的每个小部件现在每次点击都会产生几美分。如果有足够的点击率,那么这些收入便成为可观的收入来源。


来源美鸥网 Lib.


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

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

美菜:https://www.ikjzd.com/w/1874

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

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

亚马逊上到处都是广告?只剩下唯一一个推荐功能!

在亚马逊和其他零售商的网站上,广告已经取代了产品推荐和个性化服务。 亚马逊上的一切都是广告,他们不再试图引导产品发现,而是让广告主导这一整个过程。

企业级DevOps实战案例-移动APP持续交付实践

本文由团队内大瑶同学撰写。

 

 

引言

 

移动App具有更新频繁的特性,这一点,从各大App在应用市场的版本发布频率可见一斑。高频发布意味着迅速迭代和交付,这对需求、开发、测试、运维的效率提出了更高的要求。那么,在快速变化的互联网环境下,如何在保证质量的前提下,提高App的交付速度?这是业界共同面临的问题。DevOps提供了解决该问题的答案,它倡导尽可能多地对软件构建过程中的所有步骤进行自动化处理,也就是构建自动化流水线,以提高效率、缩短开发周期。在当今的IT领域,DevOps倡导的持续交付理念已经被普遍接受,实施DevOps实践已经成为软件组织管理的趋势。近几年,随着敏捷软件模式的深化,我们也一直在尝试敏捷、持续集成等实践,以积极的态度拥抱DevOps。

 

值得重视的是,DevOps并非一个固定的模式或标准,事实上,业界对DevOps没有统一的定义(而且DevOps的定义是随着时间不断演变的)。它是一种普适的软件工程文化和实践,但每个企业的组织文化有差异,DevOps基础也不尽相同,现有的一些成功方案往往并不完全适合团队的实际情况,业界也不存在一个万能的实例供我们复制。因此,应当基于自身实际情况,参考同类优秀案例和经验,摸索出最适合自己的模式。一方面,我们缺乏专门的工具部门或团队,短时间内无法建立起大型的一体化持续交付平台;另一方面,我们又急需建立起持续交付流水线,以改进敏捷产品的开发测试流程。因此,我们以开源持续集成工具为核心,再适当开发辅助工具,构建了一个较为实用的App产品持续交付流水线。

 

一、案例背景

 

随着App的功能日益复杂,与第三方合作的模块越来越多,开发、测试阶段联调的难度也随之增加。同时,为迅速响应市场需求变化,App的迭代越来越快,发布周期越来越短。工期紧、任务多,这给开发、测试人员带来了很大的压力,例如,开发为了按时完成代码,挤压了一些本来用于代码评审、单元测试的时间,导致项目代码的质量下降;随之而来的是生产风险的提高,产品质量难以保障;开发需要花费额外的精力偿还技术债(漏洞、不规范的代码等),这又给新一轮迭代带来风险——如此便陷入"疲于奔命"的恶性循环。

 

为解决上述问题,在参考DevOps等主流解决方案基础上,我们也吸收DevOps和敏捷理念,开展App产品持续交付流水线实践,从工艺改进、组织文化等方面,改进App产品的持续交付实施过程,最终构建起一条完备的流水线。

 

二、案例内容

 

(一)问题分析

 

与其他产品不同,App的交付比较特殊。例如,H5产品需要将部署包放置到服务器上,并进行相应的配置,用户就可以通过访问网址获取服务;而安卓和IOS并不是部署在企业自己的服务器上,而是需要在各自的应用市场"上架",用户才能从市场上获取App,安装到自己的手机上,完成交付过程。

 

对症方能下药,我们首先必须明确,是什么影响了App的迭代效率?经过分析和总结,我们发现,App的实施过程存在以下痛点:

 

1、开发任务繁重,代码质量不高。

 

造成这一点的原因有很多,如需求规划不合理、环境问题导致联调失败、代码评审不到位、测试覆盖不全面等。

 

2、版本分发效率低。

 

由于App产品的特殊性,用户必须在手机上安装新版本才能获取其服务。在开发人员频繁打出新版本的场景下,测试者需要及时获得最新的App版本。然而现实情况通常是开发在自己的电脑上构建(俗称"打包"),再把构建出的App安装包发给测试人员——这样人工的构建分发效率低,也难以保证构建出的安装包是"合格"(即通过了单元测试、代码扫描等必要的检查环节)的。

 

3、容易出现不同环境下版本不一致问题。

 

在测试阶段,测试人员通常对测试环境下的版本进行测试,而产品发布时,使用的是测试版本对应的生产版本,必须做到这个两个版本除了环境相关的参数配置不同外,其他代码完全一致。然而从测试通过到人工切换成生产环境参数并构建生产版本的这段时间,可能会存在开发人员改动代码的风险,导致一个未经测试的App版本被发布。因此,需要寻求同时构建多个不同环境参数的App的方案。

 

4、测试分析不到位,同类质量问题重复出现。

 

我们的目的不仅仅是修复问题,而且要保证日后不再发生同样的错误。事实上,一个产品的缺陷可以给其他产品带来启发,我们需要吸取他人的经验和教训,加强不同产品之间的交流。

 

以上几个问题,其实都是缺乏规范的流程、人工介入过多等原因造成的。当人工操作影响到工作效率时,应当考虑借助工具来节省人力,提高效率。

 

(二)方法体系

 

从工艺改进和组织文化两个方面入手,逐步构建起持续交付的实施流程和与之匹配的组织结构。

 

1、从工艺改进的角度,构建App持续交付流水线。

 

● 分别对DevOps的各个步骤进行优化和改进,并组合成一条基于Jenkins自动化持续交付流水线,覆盖从需求到交付的各个环节,从实施流程上规范App交付的各个环节,如优化需求拆分、强化代码评审等步骤,提高代码质量。

 

● 自主开发小型工具,如App持续交付工具、挡板系统等,完善上述流水线,以提高开发、测试效率。

 

2、进行组织结构调整,开展开发测试融合实践。

 

● 在开发测试融合思维的导向下,开发与测试团队被规划到同一部门,这消除了部门壁垒,使得敏捷迭代中开发、测试成为一个整体,强化了二者的沟通和联系。

 

● 强化质量监督环节,测试团队发挥QA作用。测试团队不再仅仅负责传统的测试工作,而是统筹测试实施、质量管理、工艺改进三大板块。在这种模式下,测试团队不仅仅负责传统的测试实施任务,还要深入敏捷团队,担任QA角色,监督自动化测试、持续集成等环节,从更高层次上把控产品质量。

 

● 开展DevOps相关的交流活动,如开放日、系列培训等,在部门内部、部门之间进行推广和交流,互相借鉴经验,培养员工的持续交付理念和能力。

 

(三)构建持续交付流水线

 

在各类资源有限的情况下,我们必然要借助现有工具来支持持续交付实施过程。作为最受欢迎的CI工具之一,Jenkins成为我们的首选平台。它以插件的形式支持各种功能(官方提供了丰富的插件库,开发者也可以根据官方API开发定制化插件)。此外,Jira、Sonarqube等受业界认可的工具成为流水线的组成部分。

 

1、App持续交付流水线

 

正所谓"工欲善其事,必先利其器",自动化流水线的搭建必然需要借助工具。业界对于持续交付流水线工具的选择,可以大概分为两类:一是使用通用的CI、CD工具,二是使用一体化DevOps平台。前者灵活通用、不需要太多成本,但缺少业务元素;后者提供一站式解决方案,但通用性不强。

 

既然短时间内不具备采购或自主开发一体化DevOps平台的条件,我们选择前者来实现交付流水线。如图1所示,将各个环节如同串珠子一样串联起来,组合成完整的流水线。

 

图1 App交付流水线

 

1)需求/知识:需求决定了任务量,进而决定了开发、测试的工作量,也直接影响代码的质量。因此,要从流水线源头进行改进,避免因需求规划不合理影响开发效率。

 

● 过去:存在需求堆积、粒度过粗、变化频繁,把开发"逼疯"的情况;过分依赖人工看板,不容易统计迭代燃尽图、故事活跃度等数据。 

● 现在:合理规划需求、减少任务粒度,减轻迭代工作量,为实现小步交付做准备;使用Jira电子看板,方便存档用户故事、问题等,更好地把控敏捷健康状况。

 

2)源代码:使用SVN或Git托管代码。代码库也有鄙视链,在大多程序员看来,似乎Git才是更"高级"的工具。其实,无论是SVN还是Git,都具备相当完备的功能,选择哪一种工具并不重要,关键的是如何规范使用。

 

● 过去:由于并行任务多,分支策略混乱,代码整合起来很复杂,耗费人力。 

● 现在:逐步转换成串行任务,采取主干开发策略,减少产品并行开发的情况;强化代码提交纪律,如要求开发必须经过本地构建成功、单元测试通过、规范检查通过后方可提交,且注意及时拉取和提交代码。加强对关键逻辑代码的管控和审查,改进代码评审方式。

 

● 过去:人工走查的方式,经常一拖再拖,积压了大量代码,导致走查时耗费大量时间,效果也难以保证。 

● 现在:利用相关工具(如Gerrit)实施代码评审环节,取代原始的人工走查。这样既可以及时发现问题,又能减少开发人员的工作量。

 

● 过去:CI纪律形同虚设,常有构建失败无人处理的情况。 

● 现在:强化CI纪律,每个敏捷组配置红绿仪表盘,实时查看动向。若有构建失败,立即进行修复,修复不成功全组不下班。

 

3)代码拉取:即Jenkins从代码库拉取代码、触发后续流水线/Job构建。这通常是Jenkins Job执行的第一步。

 

4)自动化测试:主要分为自动化单元测试、自动化接口测试、自动化UI测试三部分。其中自动化单元测试作为Job的一个环节,随着Job构建而执行;而其他两类自动化测试则借助专门的自动化工具(RobotFramework、Appium)实施,在Jenkins上进行相应配置,可定时触发和构建自动化测试Job。

 

5)静态代码扫描:对于代码的质量,不能仅仅局限于那些"可视的"bug。代码中往往存在大量潜在的问题,如健壮性问题、浮点数比较大小等,不容易被发现,但就像定时炸弹一样,是产品质量的隐患。因此,我们借助静态代码扫描工具进行代码扫描。例如,Sonarqube工具为各开发语言提供了静态代码扫描支持,用户也可以自定义自己的规则。对于扫描出的各类问题,要求开发尽快解决。此外,Sonarqube还可以读取自动化单元测试报告,并将单元测试结果展示在其仪表盘上,方便相关人员随时了解代码质量。

 

6)安全扫描:增加安全扫描环节,提高代码安全性。以Checkmarx安全扫描工具为例,在流水线中引入Checkmarx插件,触发安全扫描环节。同时,对于扫描报告中出现的问题,要求开发予以解决,将问题及时归零。

 

7)App加固:对App进行加固处理,防止被反编译。

 

● 过去:使用客户端进行加固。 

● 现在:为了将加固环节自动化、纳入持续交付过程,使用shell脚本调用加固命令,取代手动加固。

 

8)构建:前面的环节都是为了这一步做准备。对App产品而言,最终构建的结构是生成安装包(ipa或apk)。App开发涉及开发、测试、灰度、生产环境,如何保证其处理环境参数外,其他代码完全一致,是值得我们关注的问题。对此,我们借助Jenkins的Pipeline流水线,提出并行构建机制。

 

● 过去:开发一般在开发、测试环境下编写代码,通过测试后,手动修改代码里的环境配置,然后构建出对应的生产版本,用于后续投产。若这个过程中有人修改了功能性代码,则构建出的生产包包含未经过测试的代码,直接投产的风险可想而知。 

● 现在:项目代码设置多环境(开发、生产、测试等环境)配置,执行构建命令时可指定环境,从而构建出对应环境的App版本;使用Pipeline并行脚本,同时构建出多个环境参数的版本,这几个版本除了环境配置不同,其他完全一致。在选取生产版本时,强制选择其中的生产版本,该生产版本和测试版本同时被构建出,不存在被修改代码的可能,可以保证App功能测试版本和生产版本一致性。

 

9)制品:制品即安装包,也就是构建出的版本,将被推送至App持续交付工具进行统一管理。

 

2、流水线中的工具建设

Jenkins不是万能的,它只提供了一个纯粹的流水线引擎,不包含业务属性。也就是说,Jenkins上的流水线无法关联软件管理周期中的需求、项目、任务、产品等元素,它们只能是一个无层次的平行Job的集合。因此,上述环节并不能满足App建设的实际需要。为此我们自主研发了几个工具:App持续交付工具、QA仪表盘、多协议挡板系统、错题本,以进一步提高交付效率。

 

● App持续交付工具:App产品版本管理的平台,提供开发、测试、交付功能。

 

1)可对接Jenkins平台,获取Jenkins制品,并按照其对应的环境参数,分阶段统一管理,解决Jenkins Job无序、缺乏制品管理的问题;

 

2)App可通过扫描二维码进行下载安装,取代原有的手工分发模式,极大地提高测试效率。

 

3)提供灰度发布功能,用于App的灰度测试。

 

● 多协议挡板系统:提供模拟接口,用于环境不联通导致真实接口无法调用的场景。开发人员不再手动编写假数据,而是像调用真实接口一样调用挡板模拟出的接口,解决环境不通引发的进度阻塞问题。

 

1)实际开发阶段、测试前期中,往往会遇到接口不通的问题,影响开发进度,使用该挡板可以Mock接口。

 

2)现有接口不具备复杂数据、特殊场景等,对测试异常情况造成困难,此时可以使用挡板模拟特殊数据,进行相应测试。

 

● QA仪表盘:必要的质量监督环节可以提高开发、测试的QA意识,QA仪表盘是对流水线质量数据进行收集和统一展示的平台。尽管我们可以从SVN、Jenkins、Sonar上看到相应的数据,但它们基于分散的Job,无产品关联信息,且缺少统计类数据。为了更好地发挥质量监督作用,我们开发了QA仪表盘,将各个环节质量数据进行收集、加工、展示。

 

1)以产品为基本维度组织数据,并进行团队、部门等不同层级的统计和展示。

 

2)提供邮件订阅等个性化功能,方便用户定期监督产品质量数据。

 

● 错题本:顾名思义,这是一个记录质量问题的平台。各个阶段注入的问题(需求、开发、测试分析、测试实施、运营等)都可以纳入这个平台,并进行详细跟踪记录。测试经理也会定期从错题本导出问题,组织质量问题分析会。通过及时记录问题、分析问题,可以为以后的测试分析积累经验,避免同类质量问题重复出现,减少日后"踩坑"的几率。

 

(四)开发测试融合组织形式 

 

开发测试融合与敏捷实施是相辅相成的。从组织结构上看,将开发、测试团队融于同一部门,其中测试团队承担部门的测试实施、质量管控、工艺改进(工具建设)工作;产品以敏捷组为单元开展任务实施,敏捷组里包含PO、开发、测试,逐步建立起一个全功能敏捷虚拟团队。通过这样的组织调整,加强测试与开发的联系,也增强敏捷团队的集体意识,有利于培养DevOps文化氛围。

 

伴随着上述组织调整,测试团队的职能也发生了改变。过去,测试团队的主要任务是实施测试任务,测试经理们重点关注的是案例执行情况、测试流程等;而随着开发测试融合的推进,我们赋予了测试经理更多的话语权:测试经理承担产品QA角色,从产品需求到投产阶段结束,关注整个工程活动周期的质量问题,如用户故事质量、单元测试情况、缺陷分析等,建立QA全流程质量控制机制。从这个角度讲,测试经理要不断提高自身能力,培养更全面的质量意识。

 

三、案例效果

 

经过上述一系列提升和改进工作,App产品的交付效率有了明显改善,各敏捷小组的质量意识和CI意识也得到了显著提升,DevOps的氛围已经形成。

 

1、App产品的迭代速率明显提高。得益于App持续交付流水线的有效实施,任务下达至完成时间明显缩短。App持续交付工具、挡板等工具得到了有效推广,工具赋能对于开发、测试效率提升发挥了巨大作用。

 

2、迭代质量显著提升。2018年以前,部门迭代成功率仅为70%,2019年已提升至93%。迭代过程中,持续交付流水线的构建成功率也保持在80%以上。

 

3、产品质量明显提升。开发更加注重自己的代码质量,并在QA的监督下关注自动化测试数据,从而使开发团队的Bug数量明显减少。自动化接口测试积累了大量案例,自动化单元测试覆盖率从无到有,从有到高,目前部分产品覆盖率已达90%以上。

 

 

本文介绍的实践案例仍处于初级阶段,App持续交付流水线还存在很大的提升空间。未来,计划进一步优化持续交付流水线,扩展工具功能,深化DevOps实践。

 

 

 

 

 









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

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

铭宣:https://www.ikjzd.com/w/1551.html

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


本文由团队内大瑶同学撰写。引言移动App具有更新频繁的特性,这一点,从各大App在应用市场的版本发布频率可见一斑。高频发布意味着迅速迭代和交付,这对需求、开发、测试、运维的效率提出了更高的要求。那么,在快速变化的互联网环境下,如何在保证质量的前提下,提高App的交付速度?这是业界共同面临的问题。DevOps提供了解决该问题的答案,它倡导尽可能多地对软件构建过程中的所有步骤进行自动化处理,也就是构建
铭宣:https://www.ikjzd.com/w/1551.html
vava:https://www.ikjzd.com/w/2780
海带宝:https://www.ikjzd.com/w/1548
【良心整理】想要又快又不敷衍,各类客服回复模板~:https://www.ikjzd.com/tl/59984
重磅:孟加拉国帕德玛银行列入违约黑名单,外贸人注意!:https://www.ikjzd.com/home/16598
亚马逊美国站提交审核失败,疑因资质审核改版新规所致:https://www.ikjzd.com/home/1625

Wish商户的物流单号被取消的订单将被重新释放,可重新履行

Wish 于北京时间2020年11月7日已就物流单号被取消的订单发布相关公告 (https://merchant.wish.com/announcement/5fa5efe16f23f380007621f8)。在此基础上,为进一步帮助商户妥善管理物流单号被取消的订单(基于 WishPost 物流记录),我们上线了一些新功能。此前,这些功能仅向部分商户开放使用,现全面向所有中国大陆商户推出。新功能具体如下,对于 UTC 时间2021年3月4日凌晨0时之后释放的订单:

1. 如果在订单初次释放之日的25个自然日内,订单的物流单号被取消,则 Wish 将把该订单重新释放给商户,商户可使用新的有效的物流信息(必须提供新的物流单号)重新履行订单。

请注意,根据商户政策5.1,商户须在订单重新释放之日起的5个自然日内将订单标记发货。

被重新释放的订单将会在商户平台的"订单">"待处理"页面显示,且"订单 ID"下方将显示"物流单号已取消"标志。

2. 如果在订单初次释放之日的25个自然日之后(包括25个自然日),订单的物流单号被取消,则 Wish 会将订单自动退款给用户。

请注意,以上内容也适用于 A+ 物流计划订单。具体而言:

1). 由于合作物流服务商取消物流单号而被重新释放的 A+ 物流计划订单将显示"A+ 物流单号已取消"标志,且该订单将被移除 A+ 物流计划,商户可通过 WishPost 直发该订单。商户可在"订单">"待处理">"订单详情"页面,或"订单">"待处理">"配送至"列下方查看用户配送地址。

2). 由于商户取消物流单号而被重新释放的 A+ 物流计划订单将显示"物流单号已取消"标志。商户仍需将其视为 A+ 物流计划订单来履行。

如需了解关于上述新功能的更多信息,请访问以下链接:

https://merchantfaq.wish.com/hc/zh-cn/articles/360056941014



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

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

ensogo:https://www.ikjzd.com/w/1485

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

naver:https://www.ikjzd.com/w/1727

Wish商户的物流单号被取消的订单将被重新释放,可重新履行

Wish 于北京时间2020年11月7日已就物流单号被取消的订单发布相关公告 。

我国自主研发日冕仪首次观测到白光日冕像|中国科学院|太阳

  来源:科技日报

  记者1日从中国科学院云南天文台获悉,该台近日和山东大学团队携手,利用我国自主研制的50毫米白光日冕仪成功观测到内日冕,并获得其白光像。这是我国首次在国内观测址点获得内日冕白光像。

2月27日在云南天文台稻城观测站获得的白光日冕像。图片来源:云南天文台2月27日在云南天文台稻城观测站获得的白光日冕像。图片来源:云南天文台

  日冕是太阳大气的最外一层结构,其中物质密度非常稀薄,其亮度比太阳圆面中心至少弱20万倍,全球仅有少数几个国家掌握了白光日冕仪的设计和制造技术。能否为白光日冕仪寻到一处合适的址点,标志着一个国家是否具备开展高水平太阳物理观测研究的自然环境。

  此次观测是云南天文台林隽团队承担的中国科学院战略性先导科技专项——"鸿鹄专项"子课题"日冕仪临近空间搭载实验"的任务内容,旨在距离地面30至35千米的临近空间,对1.1至1.5个太阳半径之间的内日冕进行观测,考察研究其中的磁场结构与等离子体分布及其可能的演化过程。观测在云南天文台稻城观测站2号址点进行,这是日冕仪进行临近空间观测前开展的核心设备地面实验。据悉,日冕仪的临近空间观测计划于今年8、9月份开展。 

观测现场部分团队成员。图片来源:云南天文台观测现场部分团队成员。图片来源:云南天文台

  此前,经过十余年艰苦巡视和踏勘,云南天文台刘煜团队在四川甘孜稻城县无名山发现一处适合天文观测的候选址点,目前这个址点已进入全面评估阶段。山东大学(威海)夏利东团队经过十余年磨砺,与中国科学院长春光机所张红鑫团队一道,研制出多种类型日冕仪,技术水平处于国内一流。

  此次白光日冕仪地面实验的成功,表明稻城无名山是一处优秀的太阳观测址点,完全符合高质量、高精度太阳地面观测的要求,属于国际一流的太阳观测址点。实验结果表明,我国已经完全掌握了白光日冕仪的研制技术,为自主研发高性能白光日冕仪趟出了一条新路。此次实验,受到了国内外太阳物理同行的普遍赞誉和认可。"我们将深入分析和研究本次实验结果,进一步优化观测方案,希望在不久后获得更加优良的观测结果。"林隽说。

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

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

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

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


来源:科技日报  记者1日从中国科学院云南天文台获悉,该台近日和山东大学团队携手,利用我国自主研制的50毫米白光日冕仪成功观测到内日冕,并获得其白光像。这是我国首次在国内观测址点获得内日冕白光像。2月27日在云南天文台稻城观测站获得的白光日冕像。图片来源:云南天文台  日冕是太阳大气的最外一层结构,其中物质密度非常稀薄,其亮度比太阳圆面中心至少弱20万倍,全球仅有少数几个国家掌握了白光日冕仪的设计
insider:https://www.ikjzd.com/w/1786
友家速递:https://www.ikjzd.com/w/1341
trax:https://www.ikjzd.com/w/1489
跨境电商竟然成为了汽车配件主销售渠道 :https://www.ikjzd.com/home/121084
卖家的春天来了!姐夫自断流量入口:https://www.ikjzd.com/home/114045
警惕!美国或将禁止所有中国企业采购美国的半导体芯片:https://www.ikjzd.com/home/116459

夫妻生活时,她是真高潮还是假高潮?

核心提示:据说,大部分的女性性高潮都是装出来的。女人为什么要在伴侣面前假装性高潮呢?男人又如何才能分辨是真还是假呢?

据说,大部分的女性性高潮都是装出来的。女人为什么要在伴侣面前假装性高潮呢?男人又如何才能分辨是真还是假呢?

女人为什么要假装性高潮?

性高潮是男女都想要的性爱过程,可女人毕竟不像男人一样容易获得,那为什么要假装呢?据了解,女性假装性高潮有以下原因:

1、能满足男人的自尊

2、捍卫自己的尊严,毕竟没有一个女人愿意承认自己在床上没有感觉。

3、假装高潮能迅速刺激你射精

那么,如何才能分辨她是真高潮还是假高潮呢?女人假装高潮有5个特征:

1、女生脚趾一直呈现平直的状态

女生高潮时脚趾会蜷曲、甚至会舒服到脚趾抽筋,所以说如果女生一直说她高潮了,但一看她脚趾还是平直的,那就是假的啦。

2、女生的骨盆肌肉没有收缩变紧

当女生高潮时,阴道和骨盆的肌肉应该要紧缩,紧紧得〝夹住〞男人的GG才对。

3、女生高潮喘息声很快就停下来了

高潮的时候女生的唿吸会越来越急促,而且要花1分钟呼吸才能慢慢恢復正常。如果女生急促的娇喘声一下变成正常的呼吸频率,那就证明前面的高潮都是装的啦。

4、女生的脸和胸部没有因为兴奋而涨红

高潮时,往阴道的血流&微血管的通透性会增加,出现心跳加速、体温上升的反应,胸部也可能会有涨红的斑块。PS.不过这可能要皮肤白皙一点才看的出来XDD


5、女生的瞳孔没有放大

瞳孔放大是高潮的重要征兆之一,文艺复兴的女性甚至还会点眼药水让瞳孔放大、假装高潮。

虽然,女性假装高潮会让男人有被欺骗的感觉,但反过来想,如果对你的行为她无动于衷,这是不是更让你伤心难过呢!其实,只要她是爱你的,在床上能达到共同满足,偶尔假装一下又能怎样?


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

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

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

cbo:https://www.ikjzd.com/w/2670


核心提示:据说,大部分的女性性高潮都是装出来的。女人为什么要在伴侣面前假装性高潮呢?男人又如何才能分辨是真还是假呢? 据说,大部分的女性性高潮都是装出来的。女人为什么要在伴侣面前假装性高潮呢?男人又如何才能分辨是真还是假呢?女人为什么要假装性高潮?性高潮是男女都想要的性爱过程,可女人毕竟不像男人一样容易获得,那为什么要假装呢?据了解,女性假装性高潮有以下原因:1、能满足男人的自尊2、捍卫自己的尊严
败欧洲运费:https://www.ikjzd.com/w/1555
google correlate:https://www.ikjzd.com/w/1887
万国邮政联盟:https://www.ikjzd.com/w/861
Facebook广告组如何解决广告疲劳?:https://www.ikjzd.com/home/132058
【货源供应商】------车载手机支架&电动牙刷:https://www.ikjzd.com/home/15524
口述:我把婆婆"调教"成时髦老太太:http://lady.shaoqun.com/m/a/6510.html

6件事坚持做,坐着也能瘦!

核心提示:工作节奏快,让很多人失去了自己的时间,胖子也没有机会减肥,怎么办?

没时间锻炼怎么办,别担心,看了今天的文章相信你不会在担心自己的时间问题了。



上下班途中燃烧热量

如果你工作的地点就在家附近,那么可从走路或是骑脚踏车上下班。虽然看上去不多,但实际上,一个体重60公斤的女士,轻快的走20分钟,以每小时5公里的速度计算,能消耗掉67卡路里,非匀速的同样的时间里,大约每20公里的速度,可消耗掉144大卡。如果每天这么来回的走一次,每周5次,加在一起可以燃烧掉600-1400卡路里的热量。

工作过程中

坐着工作的时候,背部不要靠着椅子靠背。累了就伸个懒腰,往前压压腿。坐着,双腿屈膝,用两手抱着大腿并抬起,对腹部肌肉施压。工作期间做些减肥动作,能及时消耗积聚,每天坚持,身材就能不发胖了。


保持标准的站姿与坐姿

人的站姿和坐姿对于塑造苗条的身材曲线是至关重要的。标准的站姿就是让两腿自然地并拢在一起,上身保持着挺直、抬头挺胸的姿势,两肩也要相应地放松,让手臂自然地垂直。在走路的时候,要注意收紧腹部的肌肉。

此外,在坐着的时候,最好就是只坐椅子的三分之二,上半身也要保持着挺直收腹,让腹部的肌肉不断地收紧来达到减肚子的功效。最重要的是,千万不要跷二郎腿或让双腿随意地伸开。

没工夫吃零食

和老板开一上午的会,然后狂奔穿越整个城市去见客户,回到办公室后,赶在deadline之前完成所有的报告文件后,再与本部门的同事进行另一个会议,你简直就是一个勤劳的小蜜蜂,谁还会有时间去吃所谓的零食呢?因此忙碌的日程,可让你没时间去想念休息室里的零食。


少在外面吃饭


中午如果你的午餐是在公司解决的话,那么告诉你外面饭馆的菜肯定是比自己家做的更油腻,也就意味着含有更多的热量和脂肪。你可以考虑自己从家里带饭菜,或是留意你上班的附近有没有提供低脂饭菜的餐馆。

多喝水少摄入卡路里

可再利用水杯和纯净水随处可见。纯净水当然意味着没有热量。选择纯净不而不是果汁或是软饮,不仅可省去几百卡路里的热量,还能让你感到饱意,这样你会吃的更少。


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

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

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

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


核心提示:工作节奏快,让很多人失去了自己的时间,胖子也没有机会减肥,怎么办? 没时间锻炼怎么办,别担心,看了今天的文章相信你不会在担心自己的时间问题了。上下班途中燃烧热量如果你工作的地点就在家附近,那么可从走路或是骑脚踏车上下班。虽然看上去不多,但实际上,一个体重60公斤的女士,轻快的走20分钟,以每小时5公里的速度计算,能消耗掉67卡路里,非匀速的同样的时间里,大约每20公里的速度,可消耗掉14
亿恩网:https://www.ikjzd.com/w/1461
张洁:https://www.ikjzd.com/w/1663
55海淘:https://www.ikjzd.com/w/1723
你的选品灵感从何而来?:https://www.ikjzd.com/home/123492
请查收!亚马逊最热销的情人节礼物清单!:https://www.ikjzd.com/home/115835
深度剖析:备受争议的社交电商究竟能走多远?:https://www.ikjzd.com/home/103887

试管婴儿和自然受孕宝宝之间有什么区别?

核心提示:试管婴儿技术解决了很多不孕不育患者的难题,但也很多人保持质疑,试管婴儿和自然受孕宝宝会一样健康吗?试管婴儿和自然受孕宝宝之间有什么区别?

试管婴儿技术解决了很多不孕不育患者的难题。中国第一个试管婴儿在1988年的3月10日诞生,到今天,中国的试管婴儿技术已经有三十多年的历史了,但是对于试管婴儿这项技术,有人为之振奋,也有人发出不支持的声音,认为试管婴儿跟自然孕育的婴儿是完全不一样的。这些人觉得试管婴儿比自然孕育的婴儿存在更多的缺陷,不是一个"真正的宝宝",那么试管婴儿跟自然孕育的婴儿相比较,存在哪些不一样的地方呢?

试管婴儿是怎么诞生的?

很多人对于试管婴儿的存在误解,以为试管婴儿就是一直在试管里长大的,并不是这样。试管婴儿只有卵子和精子结合并形成受精卵、发育成胚泡的这个过程移到体外进行,等到受精卵发育成胚泡之后,是会通过人工的方式将胚泡送回妈妈的子宫里生长发育的。

试管婴儿技术,最大的作用就是帮助一些因为输卵管不通的女性圆了当母亲的梦,不仅如此,试管婴儿技术还能有效预防畸形的婴儿,因为试管婴儿在受精卵发育成胚泡之后,还会对胚泡进行一系列的检查,保证胚泡的完整才植入妈妈的子宫,这在一定程度上能够确保婴儿的健康,对于优生优育有重要的意义。

试管婴儿和自然受孕宝宝有什么不同?

1.受精方式不同


有一些人认为,试管婴儿跟自然孕育的婴儿不一样,实在要找出试管婴儿不一样的地方,那就是试管婴儿是在体外受精,自然孕育的宝宝是在妈妈的输卵管里受精的。除此之外,试管婴儿跟自然孕育的婴儿并不存在任何区别,因为试管婴儿在完成体外受精,发育成胚泡之后,也是会回到妈妈的肚子里"生活"的,也就是说,试管婴儿不过是提前在妈妈的肚子外看了一眼世界,又回到妈妈的肚子长大而已。

2.试管婴儿不会有健康隐患

试管婴儿的智力和健康并不会比自然孕育的婴儿差,因为试管婴儿只不过是受精的地方跟自然孕育的婴儿不同,后面的妊娠过程跟正常的受孕并没有任何区别,都是在妈妈的子宫里长大的,因此并不会出现智力和健康的劣势。事实上,试管婴儿在受精的时候,医生都是筛选最优秀的精子跟卵子结合,而且试管婴儿得来不易,爸爸妈妈会更加小心去保护,所以试管婴儿在某种程度上甚至比自然孕育的婴儿更加"优秀"。


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

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

环球华网:https://www.ikjzd.com/w/1063

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


核心提示:试管婴儿技术解决了很多不孕不育患者的难题,但也很多人保持质疑,试管婴儿和自然受孕宝宝会一样健康吗?试管婴儿和自然受孕宝宝之间有什么区别? 试管婴儿技术解决了很多不孕不育患者的难题。中国第一个试管婴儿在1988年的3月10日诞生,到今天,中国的试管婴儿技术已经有三十多年的历史了,但是对于试管婴儿这项技术,有人为之振奋,也有人发出不支持的声音,认为试管婴儿跟自然孕育的婴儿是完全不一样的。这些
eori:https://www.ikjzd.com/w/499
海拍客:https://www.ikjzd.com/w/1742
聚贸:https://www.ikjzd.com/w/1305
更换亚马逊官方收款致账户被冻结?如何更换收款账号才安全?:https://www.ikjzd.com/home/2331
注意!Facebook官方解读广告违规热点!:https://www.ikjzd.com/home/106278
深度解析:公然售卖"港独"T恤的责任,亚马逊摘不掉!:https://www.ikjzd.com/home/104526

springmvc核心流程及配置

原文链 id="核心流程及配置">核心流程及配置

核心流程

  • 首先用户发送请求-------->DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为同一访问点,进行全局的流程控制

  • DispatcherServlet--------->HandlerMapping,HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器对象、多个HandlerInterceptor拦截器),通过策略模式,很容易添加新的映射策略

  • DispatcherServlet---------->HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配设计模式的应用,从而很容易支持很多类型的处理器

  • HandlerAdapter------------->处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理,并返回一个ModelAndView对象

  • ModelAndView的逻辑视图名-------->ViewResolver,ViewResolver将把逻辑视图解析为具体的View,通过这种策略模式,很容易更换其他视图技术

  • View------>渲染,View会根据传进来的Model模型进行渲染,此处的Model实际是一个Map

  • 返回控制权给DispatcherServlet,有DispatcherServlet返回响应给用户

配置

DispatcherServlet

DispatcherServlet充当SpringMVC的前端控制器。与其他Servlet一样,DispatcherServlet必须在Web应用程序的web.

web.

<!-- springmvc会过滤掉.html的 导致视图解析器无法找到  如果只是使用jsp资源而未使用html的话可以不配置该项--><servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern></servlet-mapping><!-- 配置DispatcherServlet --><servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 初始化参数:配置Springmvc配置文件的位置和名称  默认配置文件为:/WEB-INF/<servlet-name>-servlet.
静态资源请求问题

因为DispatcherServlet的配置的是/,针对的是所有请求,所以对于一些的静态资源(如.js、.css)等也会经过DispatcherServlet,但是DispatcherServlet是处理动态请求的,无法处理静态资源

配置<mvc:default-servlet-handler/>来解决,作用是处理静态资源,将在SpringMVC上下文中定义一个DefaultServletHttpRequestHandler,会对进行DispatcherServlet的请求进行筛选,如果发现是没有经过映射的请求,就将请求交给WEB服务器默认的Servlet来处理,否则交由DispatcherServlet来处理

default-servlet-name默认是default,如果不是default需要显式的进行配置(看所使用的web服务器,tomcat是default

<mvc:default-servlet-handler default-servlet-name="default"/>

需要注意的是,配置了<mvc:default-servlet-handler/>之后,@RequestMapping的映射会失效,需要加上<mvc:annotation-driven/>配置

HandlerMapping

spring自带了多个处理器映射实现

  • BeanNameUrlHandlerMapping 根据控制器Bean的名字将控制器映射到URL

  • ControllerBeanNameHandlerMapping 与BeanNameUrlHandlerMapping类似

  • ControllerClassNameHandlerMapping 通过使用控制器的类名作为URL基础将控制器映射到URL

  • DefaultAnnotationHandlerMapping 将请求映射给使用@RequestMapping注解的控制器和控制器方法

  • SImplerUrlHandlerMapping 使用定义在Spring应用上下文的集合将控制器映射到URL

<!-- 开启注解 --><mvc:annotation-driven/><bean id="defaultAnnotationHandlerMapping" 		 	/>
mvc:annotation-driven配置的作用
  • <mvc:annotation-driven/>会自动注册RequestMappingHandlerMapping、RequestMappingHandlerAdater、ExceptionHandlerExceptionResolver三个bean
  • 支持使用ConversionService实例对表单参数进行类型转换
  • 支持使用@NumberFormatannotation、@DataTimeFormat注解完成数据类型的格式化
  • 支持使用@Vaild注解对JavaBean实例进行JSR 303验证
  • 支持使用@RequestBody和@ResponseBody注解

HandlerAdapter

<bean id="annotationMethodHandlerAdapter" />

配置视图

InternalResourceViewResolver将逻辑视图名称解析为View对象,架构该对象渲染的任务委托给Web应用程序上下文的一个模板

<!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 --><bean >	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property></bean>

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






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

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

vava:https://www.ikjzd.com/w/2780

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


原文链id="核心流程及配置">核心流程及配置核心流程首先用户发送请求-------->DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为同一访问点,进行全局的流程控制DispatcherServlet--------->HandlerMapping,HandlerMapping将会把请求映射为Hand
卖家精灵:https://www.ikjzd.com/w/532
tiki:https://www.ikjzd.com/w/2053
photobucket:https://www.ikjzd.com/w/132
一份日本卖家和中国卖家CTR/CR的血淋淋对比数据:https://www.ikjzd.com/tl/98302
eBay:法国12月5日的罢工可能会影响送货时间!:https://www.ikjzd.com/home/112255
亚马逊北美站旺季爆款教卖家如何优化高质量listing?:https://www.ikjzd.com/home/11256

医生告诫:身上出现这5个症状,说明你的血糖太高了!不容忽视

核心提示:60岁以上老人,正常血糖是多少?

虽说随着社会生活水平的提高,越来越多的人们注重身体健康,但依旧很多人没有定期体检的习惯,自视免疫力强,身体素质高,哪怕身体真的出现了一些小毛病,也总是选择忍着,觉得问题不大不必担心,比如高血糖。

事实上,血糖高居不下,将会对我们的身体带来严重的影响,甚至会引发糖尿病。

一、老年人的正常血糖应该是多少?

一般来说,正常人的血糖会在一个比较小的波动范围内保持稳定。比如空腹血糖通常在4.0-6.1mmol/L之间,餐后血糖通常在4.4-7.8mmol/L之间,不同的个体会因为年龄、饮食、运动、情绪、疾病等因素有所差别。

其中,血糖水平的控制和年龄有密切的相关性,老年人由于各种各样的原因,正常血糖的标准会比年轻人稍微放宽一点,比如60岁以上的老年人空腹血糖小于7mmol/L,餐后两小时血糖小于8mmol/L即可。

如今,随着生活水平的提高,越来越多的老年人被高血糖"盯上"因此,学会自我检测血糖具有重要的意义。一方面有助于了解自身血糖的状况与波动,另一方面可以配合医生制定个体化的治疗方案。

需要注意的是,血糖水平会由于测量方式的不同而出现变化。对于以居家为主,生活比较有规律的老年人来说,可以在家自测血糖。

专家建议,老年人在家自测血糖需要把握几个点:空腹、早饭后2小时、午饭后2小时、晚饭后2小时及睡前,并及时将血糖值记录下来。

如果血糖控制达标了,可以每天测一次或隔天测一次血糖。经过血糖测量之后,如果空腹血糖高于4.0-6.1mmol/L,餐后两小时血糖高于7.8mmol/L,就称为高血糖。

如果空腹血糖≥7.0mmol/L,餐后两小时血糖≥11.1mmol/L,就可以诊断为糖尿病。

二、身上有这5个表现,说明你的血糖太高了

除了血糖监测,还可以通过身体发出的一些信号发现血糖过高的蛛丝马迹,以便及时采取应对措施。

1.多尿

当血糖不断升高,超过肾糖阈时,排入尿中的糖就会增多,从而增加排尿次数与尿量。

2.口渴

排尿增多,体内水份总量就会相应减少,引起大脑口渴中枢的兴奋,产生极度口渴的生理现象。

3.容易肚子饿

血糖过高,就会导致无法进入细胞,不能被细胞利用,从而刺激大脑的饥饿中枢兴奋,使人容易产生饥饿感,增加进食次数和食量。


4.消瘦

虽然饿得快,吃得多,但是体重却会出现明显的下降,原因是血糖过高导致体内的葡萄糖利用减少,脂肪分解增加,蛋白质合成不足,同时多尿会加速体内的水分流失,最终引起消瘦。

5.乏力

血糖无法进入细胞,就会造成细胞缺乏能量,使人疲乏无力,精神状况差。

此外,如果血糖持续过高,达到了糖尿病的标准,还有可能出现皮肤瘙痒、反复感染、视力下降、身体有烂苹果味等症状,需要提高警惕!

高血糖并不意味着得了糖尿病

前面提到,高血糖和糖尿病的血糖值标准是略有差别的,也就是说,高血糖不一定是糖尿病,但是一定会增加糖尿病的风险。一般来说,如果达到两次或两次以上血糖超过标准值,即可诊断为糖尿病。

简单来说,糖尿病一定会高血糖,但是高血糖不一定是糖尿病造成的。那么,造成血糖高的原因还有哪些呢?

大量喝酒,喝酒会增加饱腹感,但由于酒精在体内的吸收和代谢较快,不能长时间维持血糖水平,容易导致血糖升高。


精神压力过大,长期压力过大引起内分泌失调,导致体内环境紊乱,引起血糖升高。

肥胖,肥胖的人容易出现胰岛素抵抗,使食物不能得到充分的代谢,造成血糖升高。

饮食不当,摄入过多的含糖饮料和甜食,使体内的糖分含量高于正常标准,同时增加血液中脂肪的含量,从而引起血糖升高。

降血糖,不妨试试这3招

血糖长期过高,对身体百害无一利。在高血糖的状态下,机体免疫力会下降,容易被各种疾病侵袭。同时,还会危害血管,增加脑梗塞、中风的风险。此外,还会危害神经系统和代谢系统,最终危及生命安全。

所以,当发现自己血糖过高的时候,一定要重视,积极调理,让血糖降到正常标准。那么,血糖应该怎么降下来呢?应该从合理膳食、适度运动、控制体重等方面做起。

第一,合理膳食。积极控制饮食总热量,避免高糖食物,摄入充足的优质蛋白,多吃新鲜的蔬菜和水果。同时少吃多餐,每餐吃七分饱即可,注意进食时要细嚼慢咽,速度不宜过快。

第二,适度运动。以中等强度有氧运动为主,比如有氧操、健身舞、八段锦、太极拳,做到循序渐进,持之以恒。

第三,控制体重。重视体重对健康的影响,管住嘴,迈开腿,戒烟限酒,少熬夜,养成规律的作息,保持体态均匀。

现代社会,人们的生活水平越来越高,各种各样的美食都可以轻松吃到。然而,我们在满足口欲的同时,不要忘了身体健康,尽量保持血糖处在正常的标准,积极预防血糖过高。

参考资料:

[1]《监测血糖不能"凭感觉" 你会用血糖仪吗?》.新民晚报.2015-11-20

[2]《怎么吃才能管理好血糖?专家说出了"12345饮食秘诀"》.羊城晚报.2020-11-18


[3]《血糖控制目标因人而异》.人民日报.2017-08-04

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

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

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

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

美森:https://www.ikjzd.com/w/1693

环球b2b:https://www.ikjzd.com/w/1762


核心提示:60岁以上老人,正常血糖是多少? 虽说随着社会生活水平的提高,越来越多的人们注重身体健康,但依旧很多人没有定期体检的习惯,自视免疫力强,身体素质高,哪怕身体真的出现了一些小毛病,也总是选择忍着,觉得问题不大不必担心,比如高血糖。事实上,血糖高居不下,将会对我们的身体带来严重的影响,甚至会引发糖尿病。一、老年人的正常血糖应该是多少?一般来说,正常人的血糖会在一个比较小的波动范围内保持稳定。
打折网:https://www.ikjzd.com/w/74
孙琦:https://www.ikjzd.com/w/1638
paipaiwang:https://www.ikjzd.com/w/2205
二手货竟成假日送礼"香饽饽",eBay推出专门的"二手翻新"网站:https://www.ikjzd.com/home/132396
DealsPlus:https://www.ikjzd.com/w/162
速卖通怎么开店?最新速卖通开店新手教程!:https://www.ikjzd.com/home/98427

2021年3月1日星期一

水星表面发现岩石,水星表面陨坑中有冰水

水星是八大行星中的一员,同时也是最小的行星,由于位置特殊,要想发射一颗探测器进入水星轨道技术难度极高,直到2004年8月份美国宇航局发射了“信使”号水星探测器,它执行了一系列复杂的轨道机动,并于2011年3月18日成功点火制动,进入水星轨道。而现在,就在其主科学任务期开始后还不到一年,信使号开始有了重大发现。科学家们注意到,水星曾拥有远比我们之前想象的更加动荡活跃的过去。

水星上表面发现岩石?

通过对水星表面进行分析,科学家们现在已经可以大致重现水星在过去数十亿年间的地质历史。日前,借助对水星地表岩石化学成分的分析,美国麻省理工学院的科学家们提出,水星表面在45亿年前这颗行星形成之后不久可能曾经拥有一个巨大的岩浆洋。

对此,科学家在实验室中创建了两类岩石,模拟高温高压环境下的地质演化过程,通过实验科学家设想水星上曾经出现巨大的岩浆海洋,在这种环境下可演化出两种截然不同的岩石,通过结晶、凝固最后重新由熔岩喷发机制存在于水星表面。根据麻省理工学院地质学教授蒂莫西·格罗夫介绍:“水星上发生的事件其实是非常惊人的,地壳的年龄很可能超过了40亿岁,因此这些岩浆海洋应该存在于非常古老的过去。”

信使号探测器进入水星轨道时正处于强烈的太阳耀斑活跃期,作为太阳系内侧轨道上距离太阳最近的行星,水星受到太阳光和辐射的“烘烤”,其表面的岩石反射出强烈的光谱信号,科学家通过X射线光谱仪就可以确定水星表面物质的化学成分。

在信使号围绕水星轨道运行期间,其搭载的X射线光谱仪对水星地表物质发出的X射线辐射进行了测量。2011年9月,信使号科学团队在这些波谱中识别出一些峰,每一个波峰都代表一种岩石化学成分元素。通过这些数据,科学家们识别出水星地表两种主要的岩石类型。

针对水星上岩石出现的不同化学组分,格罗夫认为可在实验室中模拟二氧化硅、氧化镁以及三氧化二铝的比例,再将其熔化结晶,探索该过程中可能出现的情况。实验结果显示,两种成分可能来自同一地区,指向了一个巨大的岩浆海洋。此外,本项研究还暗示了水星存在一个极为混乱的早期演化过程,其中包括大块天体的撞击。

在对样品进行冷却之后研究组选取了其中微小的晶体颗粒以及熔化的基质样品进行了分析。起先研究人员们试图寻找那两种岩石成分类型可能相关的方面,如或许这两种岩石成分原本便是来自同一处的,这是由于其中一种成分结晶的速度更快而另一种结晶的速度较慢引起了成分的分异。

格罗夫小组的发现是:这两种岩石成分的差异实在太大,难以用同源理论来解释。相反它们很可能来源于水星上两个完全不同的区域。为对这一现象最简单的解释便是:一个巨大的岩浆洋,随着时间的推移,这个岩浆洋逐渐冷却并形成不同成分的结晶。在冷却之后这个岩浆洋后来又再次发生了熔融,并将大量熔浆以大规模火山爆发的形式抛射至水星地表。拉里·尼特勒是华盛顿卡内基学院地磁研究部的一名科学家,正是他最早领衔一个研究组从信使号的数据中识别出了两种不同的岩石类型。他表示麻省理工学院的实验结果揭示了一个非常可能的水星早期演化历史。

水星地表发现陨坑与水冰

除了在水星表面发现岩石之外,还发现了陨坑和冰水,尽管水星地表温度很高,但在水星极区的一些陨坑内却存在着水冰。还不止于此。水星极区陨坑内的水冰沉积物在一些区域还被某种神秘的暗色物质覆盖。这种物质的温度似乎比水冰稍高一些,厚度约20~30厘米,并且比水星上的任何其他物质都更黑。或许这是某种有机物。但这并不意味着与生命有关系——水星的环境条件对于生命而言太过严酷了,这些很可能只是某种含碳的化学物质而已。

许多距离太阳较远的天体,如彗星和一些富含水冰成分的小行星上都含有有机物。这些小天体中可能会有一部分撞击了水星并将其携带的有机物带到了水星上。所罗门表示:“如果这一理论正确,那么也就是说这些物质是由曾经将水冰物质带到地球上来的同一批小天体通过撞击作用带到水星上去的。”

随着人们对水星的了解越来越深,水星上的奥秘也渐渐被人们揭晓,水星上不止存在岩石,还有不少的陨坑和冰水等等物质,水星对于我们也不再那么神秘,那么遥不可及,相信在不久的将来,水星将带给我们更多的惊喜。



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

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

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

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


水星是八大行星中的一员,同时也是最小的行星,由于位置特殊,要想发射一颗探测器进入水星轨道技术难度极高,直到2004年8月份美国宇航局发射了&ldquo;信使&rdquo;号水星探测器,它执行了一系列复杂的轨道机动,并于2011年3月18日成功点火制动,进入水星轨道。而现在,就在其主科学任务期开始后还不到一年,信使号开始有了重大发现。科学家们注意到,水星曾拥有远比我们之前想象的更加动
002315焦点科技:https://www.ikjzd.com/w/1831
小马哥:https://www.ikjzd.com/w/1655
tradekey:https://www.ikjzd.com/w/1630
新老卖家必知:亚马逊站内外deal有哪些区别?:https://www.ikjzd.com/home/108791
79个高质量亚马逊套路玩法,值得一看!:https://www.ikjzd.com/tl/4424
2019年跨境出口电商营销报告:https://www.ikjzd.com/tl/106480

弗神36+9+8哈德森32分 上海27分逆转山东取3连胜_陈培东

原标题:弗神36+9+8哈德森32分 上海27分逆转山东取3连胜

北京时间3月1日,CBA常规赛继续激战,其中上海队一度落后27分,最终以120-114逆转击败了山东队,迎来了3连胜,而山东队则是两连败。其中弗雷戴特36分9篮板8助攻,而哈德森则是空砍32分10助攻。

四节比分(山东队在前):38-18、21-31、34-34、21-37。上海队:宗赞19分、弗雷戴特36分9篮板8助攻、刘铮4分7篮板、罗汉琛13分、郭昊文上海首秀7分5篮板3助攻2抢断1盖帽、董瀚麟13分、邓蒙19分4篮板。山东队:焦海龙12分9篮板、哈德森32分4篮板10助攻、陈培东27分、贾诚12分、特洛伊12分7篮板。

开场后,贾诚投中第一球,哈德森命中3分,尽管弗雷戴特挑篮得分,可是山东队开局以9-2取得领先。区俊炫打成2+1,幸好贾诚中距离投篮命中,再加上陈培东抢断上篮,山东队以13-5打停上海队。暂停后,宗赞利用脚步单打命中,不过焦海龙投中3分后连得7分,山东队将分差扩大为10分以上。上海队换上邓蒙和新援郭昊文,一次突破得分,郭昊文迎来了加盟上海队的第一球。随着董瀚麟补篮得分,山东队请求暂停。尽管陈培东和外援特洛伊均是两次犯规,不过陶汉林高举高打,山东队在还剩67秒时打出一波8-0的小高潮。首节,山东队以38-18领先20分。

第二节,陈培东快攻突破上篮,而焦海龙高举高打,山东队又是开局一波7-3的小高潮,将分差扩大为25分以上。弗雷戴特投中3分,宗赞封盖陈培东,"寂寞大神"再中3分,但哈德森马上三分还以颜色,随着张兆旭内线得分后场封盖,上海队将分差缩小为20分。暂停后,张兆旭双手补扣,罗汉琛勾手打板得分,郭昊文上篮得分,上海队完成一波16-0的攻击波将分差缩小为8分。关键时刻,陈培东突破打三分成功,张兆旭利用身高优势得分。弗雷戴特命中第三个三分,陈培东底角回敬。"寂寞大神"投中压哨球,他单节砍下了15分,帮助上海队半场以49-59落后。

第三节,陈培东投中三分,王汝恒连得4分,山东队又是开局一波7-0的小高潮拉开差距。王汝恒因为拉扯对手快攻被判违体犯规,董瀚麟投中上海队第一球,但哈德森强投三分命中。此后,两队开始对轰三分,邓蒙三分回敬,可是陈培东连中两个3分,得分突破20分。暂停后,哈德森造犯规罚中两分,陶汉林大力扣篮,董瀚麟快攻上篮。还剩3分钟时,弗雷戴特2+1打成,但特洛伊三分止血。三节战罢,山东队以93-83领先10分。

最后一节,宗赞高举高打,弗雷戴特命中两个追身三分,上海队开局打出一波14-0的攻击波,成功将比分反超。不过,郭昊文也领到第五犯。哈德森投中三分止住颓势,不过弗雷戴特再中3分。哈德森再命中,可是上海队宗赞和董瀚麟先后得分,上海队将分差扩大为7分。焦海龙底角三分命中,哈德森断球上篮打停了上海队。进入最后2分钟,罗汉琛突然发力,他连中两个三分球,尽管哈德森投中3分,可是山东队追身三分不中,而董瀚麟扣篮锁定胜局。最终,上海队一度落后27分,最终以120-114逆转击败了山东队,迎来了3连胜,而山东队则是两连败。

上海先发:宗赞、区俊炫、鞠明欣、弗雷戴特、刘铮

山东先发:刘毅、贾诚、哈德森、焦海龙、陈培东

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

责任编辑:

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

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

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

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


原标题:弗神36+9+8哈德森32分上海27分逆转山东取3连胜北京时间3月1日,CBA常规赛继续激战,其中上海队一度落后27分,最终以120-114逆转击败了山东队,迎来了3连胜,而山东队则是两连败。其中弗雷戴特36分9篮板8助攻,而哈德森则是空砍32分10助攻。四节比分(山东队在前):38-18、21-31、34-34、21-37。上海队:宗赞19分、弗雷戴特36分9篮板8助攻、刘铮4分7篮板、
深兰科技:https://www.ikjzd.com/w/1517
xinong:https://www.ikjzd.com/w/1368
oklink:https://www.ikjzd.com/w/1362
亚马逊新品上架测评怎么做?权威链接用起来(上篇):https://www.ikjzd.com/home/91445
亚马逊想要做得好,四大理论要记牢!:https://www.ikjzd.com/home/106289
亚马逊FBA窘迫的现状下,卖家的未来会如何?:https://www.ikjzd.com/home/122376

搜索量飙升450%,Shopify上这些产品依然很抢手!

在简报中,Shopify给出的热门产品包括刮舌器、光疗灯、有色润肤霜、瑞士奶酪植物、镀金银产品、机械游戏键盘、空气煎锅、床头灯、低醇啤酒、地板枕头、圆领运动衫和筋膜枪。


今天小编在新闻上看到"日本牙膏卖火了"的消息,主要得益于人们口腔保健意识的增强以及对口臭问题的日益关注。


这也解释了为什么在进入2021年以后,人们对刮舌器的搜索兴趣再一次呈上升趋势,其销量也有望在今年迎来下一次高峰。


图1.png



2020年,人们呆在家里摆弄花草,对室内植物的需求暴涨。到了2021年,人们对室内植物的热情依然不减,就以瑞士奶酪植物为例,它在去年的搜索热度一直居高不下,在今年的搜索势头依然十分强劲。


 

图2.png

 

室内植物的抢手固然是受到疫情期间消费者居家隔离的影响。除此以外,疫情也带火了家居装饰品、游戏设备、厨房用具、运动休闲服饰等诸多产品。


值得注意的是,进入到2021年,这些产品仍然有很大的增长空间。比如说,床头灯的发展势头就十分强劲。其中,"女孩床头灯"(girls bedside lamp)的搜索量更是增长了450%。



 图3.png


最后,在Shopify的选品简报中还提到了光疗灯。据Shopify解释,光疗灯也被称为"太阳能模拟器",是用于缓解多种精神疾病症状的医疗设备,主要可用于治疗季节性情感障碍(SAD),也包括抑郁症和昼夜节律性睡眠障碍。


在谷歌趋势上,光疗灯的搜索量增幅明显,不禁让人猜想是不是因为新冠肺炎疫情给人们心理上带来了不可磨灭的影响呢......


图4.png


 

不过,卖家需要注意的是,光疗灯属于医疗用品,跨境销售可能要面临认证之类的问题。


从以上Shopify分享的2月热门产品来看,到了2021年,新冠肺炎疫情仍在持续影响着消费者的购物选择,各位卖家在选品的时候也要多加注意。




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

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

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

香港会计师事务所:https://www.ikjzd.com/w/2434


在简报中,Shopify给出的热门产品包括刮舌器、光疗灯、有色润肤霜、瑞士奶酪植物、镀金银产品、机械游戏键盘、空气煎锅、床头灯、低醇啤酒、地板枕头、圆领运动衫和筋膜枪。今天小编在新闻上看到"日本牙膏卖火了"的消息,主要得益于人们口腔保健意识的增强以及对口臭问题的日益关注。这也解释了为什么在进入2021年以后,人们对刮舌器的搜索兴趣再一次呈上升趋势,其销量也有望在今年迎来下一次高峰。2020年,人们
跨境通电子商务网站:https://www.ikjzd.com/w/1329
sgshop:https://www.ikjzd.com/w/1982
亚马逊应用商店:https://www.ikjzd.com/w/531
DHL宣布在东南亚推出跨境配送货到付款服务,且支持现金支付!:https://www.ikjzd.com/home/7086
中东物流新星Shipa发力,在迪拜新增两个电商交付中心:https://www.ikjzd.com/home/142408
美仓互联:https://www.ikjzd.com/w/2187

想“暴瘦”,就多吃豆腐吧!增强饱腹感还能减脂

核心提示:很多人爱吃豆腐,口感好,味道美,营养价值丰富,今天小编想跟大家说的是豆腐减肥功效。

吃豆腐减肥,怎么回事呢?很多人不知道,想要通过豆腐减肥的小伙伴就跟着往下看吧。


豆腐的减肥原理

1、低卡路里但却能有饱足感。

2、拥有降低脂肪的成分。豆腐当中含有大豆卵磷脂,有防止多余的脂肪堆积的功效。

3、对于便秘也有效果。由于里头含有寡糖,所以也是便秘的一个好对策。治好了便秘的话,也能够确实瘦下来。

豆腐减肥都有哪些优势呢?

1、豆腐的能量转化率偏低

豆腐里面含有的主要是蛋白质。在食物的三大营养素中,相同重量的碳水化合物、蛋白质产生的卡路里还不要相同重量脂肪产生的卡路里的一半。也就是说,摄入相同重量的蛋、豆腐以及肉类,前者的增肥效果还没有后者的一半。

2、吃豆腐可以减少进食

豆腐中含有很丰富的大豆蛋白,这种大豆蛋白是从大豆中提取出来的蛋白质,也是唯一的以植物来源的蛋白质,它能给人体提供必要的氨基酸。

豆腐减肥食谱

1、过桥豆腐

准备好的辣酱,豆腐切块鸡蛋打好,将豆腐放入锅中蒸10分钟至熟,蒸好的豆腐鸡蛋,蒸豆腐的汤汁倒入锅中加辣酱调料等,浇在蒸好的豆腐上,再撒上葱末即可食用。

2、老干妈烧豆腐

准备食材,把香葱洗净切末,姜切末,把豆腐切小块,用开水烫烫,捞起用凉水过一下捞起,沥干水分,热锅凉油加姜末、豆豉炒出香味,加老干妈炒出香味,加豆腐,加盐翻炒均匀,加味极鲜,白糖、少许水一起烧一会入味,加胡椒粉,水淀粉翻炒均匀出锅,撒上香葱末即可食用。

豆腐减肥注意事项


豆腐可以和其它的蔬菜以及肉类一起煮,另外豆腐不能吃太多,不然可能会妨碍人体对于铁的吸收。不仅如此,长期吃豆腐还有可能引起蛋白质消化不良,出现腹胀、腹泻的情况。

长期吃一种单一的食物还有可能会出现缺碘的想象,所以可以多吃一些海带、紫菜等等能多补充碘。

任何一种食物,就算是营养再全面功效再好,也不能长期单独食用,不然都会有它的副作用。豆腐虽好,但是多吃可能会导致结石,一定要注意了!


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

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

心怡科技:https://www.ikjzd.com/w/1327

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


核心提示:很多人爱吃豆腐,口感好,味道美,营养价值丰富,今天小编想跟大家说的是豆腐减肥功效。 吃豆腐减肥,怎么回事呢?很多人不知道,想要通过豆腐减肥的小伙伴就跟着往下看吧。豆腐的减肥原理1、低卡路里但却能有饱足感。2、拥有降低脂肪的成分。豆腐当中含有大豆卵磷脂,有防止多余的脂肪堆积的功效。3、对于便秘也有效果。由于里头含有寡糖,所以也是便秘的一个好对策。治好了便秘的话,也能够确实瘦下来。豆腐减肥都
浩方:https://www.ikjzd.com/w/1046
aeo:https://www.ikjzd.com/w/2356
锦桥纺织网:https://www.ikjzd.com/w/2469
黑色星期五的由来,什么是亚马逊黑色星期五?:https://www.ikjzd.com/home/11603
旺季节日报名时段太短,如何解决备货难题?:https://www.ikjzd.com/home/6304
每日资讯:四川新增境外输入确诊病例!亚马逊子公司推出无人驾驶电动车!:https://www.ikjzd.com/home/137176

你做的运动,能减脂吗?心率5个“阶梯”一查便知

核心提示:或许你了解过心率的问题,但是你真的知道心率跟减肥之间的关系吗?

运动的心率会影响我们的减肥效果,在一定程度上把握好心率的节奏很有必要,今天小编来具体说说心率跟减肥之间的联系。


运动状态除了关心运动时间外,就属运动强度了,而对于运动强度而言:

● 很累、喘不过气、大汗淋漓——心率高了;

● 轻松、不累、简单——心率偏低了或适宜;

运动上对应的累与不累太受主观意识影响了,所以我们用心率的快慢来衡量运动强度。

心脏是人体发动机,和汽车发动机类似,也有自己的最大转速,俗称最大心率。居了解,脂肪的燃烧效率随强度提高而变化,不难发现把强度控制在60%左右,是脂肪和糖的最佳消耗结合点,也就是脂肪和糖都参与最多,俗称精准减脂区。

最大心率的百分比对应着心率的不同快慢程度。但精确到每个人时,这个区间是因人而异的。

因此,换句话讲,进行减脂心率运动时,有些人需要跑起来才能达到,而有些人只需要快走就可以。

但无论你的最佳减脂区间具体在哪里,它都意味着中低强度的跑步状态,不会太激烈,刚刚好,可以维持较长时间,这也是有氧慢跑的特点——如果你跑不动了,很可能是过早让心率进入无氧区间,此时血糖成为主要供能,而不是脂肪了。

尽管锻炼的目的和计划有所不同,但是下面两条是不变的:

1. 按运动顺序来说:先做无氧,再做有氧,最后拉伸。

2.心率控制

通常我们划分出5个心率区间,应对不同的训练目的:

区间1:50-60%MHR热身与恢复

轻度运动,耗能极少。用于跑步前的动态热身,跑步后的放松活动。

区间2:60%-70%MHR燃脂与耐力

轻度有氧区间,身体以脂肪代谢为主。适合以放松恢复为目的的慢跑和椭圆机、健身操等轻松锻炼项目。

区间3:70%-80%MHR有氧运动区间

中到高度有氧区间,糖原代谢比例增大。有效锻炼有氧能力,提高脂肪利用率。强度适中,适合健身减肥为目的的跑步者,马拉松选手的大部分训练应该在这一区间。

区间4:80%-90%MHR乳酸阈值

乳酸阈值区间,糖原代谢为主,出现乳酸堆积。强度较大。节奏跑(tempo)和马拉松配速跑在这一区间。用于训练身体提高乳酸耐受性,每周训练不应超过1.5小时。

区间5:90%-100%MHR无氧运动区间


接近无氧代谢,几乎全部能量来源于糖原分解。心脏负担很大,锻炼绝对速度能力,适合有经验的跑步者。持续时间在30分钟左右,每周不超过1个小时。

想判断心率是否与有氧运动的强度匹配,还可以从自身感受来判断:

运动时轻度呼吸急促、周身微热、面色微红,基本表明运动适量;如果有明显的心慌、气短、心口发热、头晕、疲惫不堪,表明运动超限;如果你的运动始终保持在"面不改色心不跳"的程度,显然是完全不够的。


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

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

epc:https://www.ikjzd.com/w/488

square:https://www.ikjzd.com/w/2106


核心提示:或许你了解过心率的问题,但是你真的知道心率跟减肥之间的关系吗? 运动的心率会影响我们的减肥效果,在一定程度上把握好心率的节奏很有必要,今天小编来具体说说心率跟减肥之间的联系。运动状态除了关心运动时间外,就属运动强度了,而对于运动强度而言:●很累、喘不过气、大汗淋漓——心率高了;●轻松、不累、简单——心率偏低了或适宜;运动上对应的累与不累太受主观意识影响了,所以我们用心率的快慢来衡量运动强
贝贝官网:https://www.ikjzd.com/w/1321
急速:https://www.ikjzd.com/w/1861
adore:https://www.ikjzd.com/w/2202
印度手机店遭电商碾压,厂商新机先供亚马逊, 被抢购后线下高价转售:https://www.ikjzd.com/home/108047
独立站吸引流量的20种最佳方法:https://www.ikjzd.com/home/124291
百佬汇跨境电商大咖论坛第六季:https://www.kjyunke.com/courses/118

线上支出增长60%!美国老年人消费群体崛起

疫情推动了线上购物的发展,美国许多被隔离在家中的老年人也开始去学习如何在网上购买杂货和更多的东西。

 

在这一期间,老年人消费群体开始崛起,在线支出不断增长。

 

老年人线上支出同比增长60%

 

现在,在线购物是美国老年人必须通过互联网进行的众多活动之一。据市场研究公司NPD Group的结账追踪显示,去年,65岁及以上的老年人每月在线结账费用接近187美元,较上年增长60%。

 

虽然他们的支出仍低于美国总人口平均每月的支出(约为238美元),但他们是按年龄组别计算增长最快的在线购物者群体。

 

网络零售商和快递公司也通过各种措施鼓励65岁以上的人保持网上购物的习惯,如Freshly提供熟食服务,正在增加针对老年人的小份量和低钠产品选择、食品杂货配送服务公司Instacart设立电话支持热线、塔吉特(Target)的送货服务Shipt取消了一些低收入老年人每年99美元的收费。

 

Instacart总裁Nilam Ganenthiran预测,即使疫情结束,网上购物也将成为老年人的新常态。

 

简化购物流程成老年人线上购物的关键

 

尽管老年人通过线上购物的支出有所增长,但在这个购物过程中,仍然存在许多障碍和问题。

 

与年轻人相比,65岁及以上的人拥有家庭网络或智能手机的可能性较小。非营利机构"老年科技服务"(older Adults Technology Services) 2021年的一项研究显示,美国65岁及65岁以上人群中有2200万人(42%)家中没有宽带。

 

那些有相关设备和互联网的老年人,他们可能会纠结于如何使用应用程序,或者担心泄露个人信息,因为他们担心骗子。根据美国联邦贸易委员会(Federal Trade Commission)的数据,去年,网上购物诈骗让美国人损失了2.459亿美元。

 

72岁的Lynnette White用她的iPhone从亚马逊和Target网上购买衣服和家居用品。除此之外,她还发现其他应用包括西夫韦超市(Safeway grocery)的应用程序,太难操作了,并且有太多的步骤。

 

综上,虽然老年人购物群体开始崛起,但是针对这一群体,简化购物步骤,提高操作的流畅度、提升在线购物的安全感十分重要。




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

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

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

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


疫情推动了线上购物的发展,美国许多被隔离在家中的老年人也开始去学习如何在网上购买杂货和更多的东西。在这一期间,老年人消费群体开始崛起,在线支出不断增长。老年人线上支出同比增长60%现在,在线购物是美国老年人必须通过互联网进行的众多活动之一。据市场研究公司NPDGroup的结账追踪显示,去年,65岁及以上的老年人每月在线结账费用接近187美元,较上年增长60%。虽然他们的支出仍低于美国总人口平均每月
笨鸟海淘:https://www.ikjzd.com/w/1550
敦煌网:https://www.ikjzd.com/w/189
黄远:https://www.ikjzd.com/w/1785
印尼迁都带来物流格局的大洗盘,外贸货代人必须抓住商机!:https://www.ikjzd.com/home/106655
做跨境电商,是否要考虑印度市场?:https://www.ikjzd.com/home/107259
FBA Fees & Calculator 美亚+欧洲站的 收费明细&费率计算器 英文原版 :https://www.ikjzd.com/tl/2705

有没有妇科病,下面的毛发会告诉你!

核心提示:女人私处毛发的情况,透露了子宫以及卵巢的健康程度,私处毛发的多少、颜色变化,都与女性健康息息相关。

提到私处的毛发,很多女性都有点不解:"弯弯曲曲的太丑了,长了到底有什么用?",事实上,阴毛可以抵御细菌和病毒入侵皮肤或者体内的,从而防止性病互相传染。除了这个作用,女人私处毛发的情况,透露了子宫以及卵巢的健康程度,私处毛发的多少、颜色变化,都与女性健康息息相关。


一、毛发过少

女人私处和腋下毛发都少时,不要庆幸省去了脱毛的麻烦,而是要担心卵巢有问题。先天卵巢发育不良或者卵巢提前衰退的人,会表现出私处毛发稀少,而且通常还会伴有性冷淡和生育能力低下等表现。所以,平时一定要注重对卵巢的保养。

二、毛发脱落

阴毛会自然脱落,大约每半年更换一次,所以能经常在家中看到这些掉落的毛发。随着年龄的增长,阴毛脱落也会越来越多,到了一定年龄,阴毛变得稀少,是正常现象。但如果年纪年轻的女人,出现这样的情况,要考虑卵巢功能低下的问题。

三、私处毛发过多

有些女性私处毛发异常多,一般是疾病的表现,并不一定就是性需求强烈。患有垂体腺瘤的女性,阴毛变多,往往还会出现肚子变大、闭经等症状。患肾上腺皮质过度增生及肿瘤的女人,雄性激素分泌太多,导致阴毛过多。

四、颜色变化


当私处毛发颜色由黑色变白时,那是体内黑色素减少,可能是由于营养不良或精神压力大,还要考虑是白化病导致的。如果出现黄色或者红色,那都有可能是营养不良或者是年龄增大造成的。

五、有附着物

阴毛上出现有颜色的物体,那有可能是感染了细菌,一般是黄、红、黑这三种颜色,那是阴毛癣。如果有灰白色的小颗粒物体,而且出现阴部瘙痒、红色斑点时则是由阴虱引起的,需要及时治疗。


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

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

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

barclays:https://www.ikjzd.com/w/2775


核心提示:女人私处毛发的情况,透露了子宫以及卵巢的健康程度,私处毛发的多少、颜色变化,都与女性健康息息相关。 提到私处的毛发,很多女性都有点不解:"弯弯曲曲的太丑了,长了到底有什么用?",事实上,阴毛可以抵御细菌和病毒入侵皮肤或者体内的,从而防止性病互相传染。除了这个作用,女人私处毛发的情况,透露了子宫以及卵巢的健康程度,私处毛发的多少、颜色变化,都与女性健康息息相关。一、毛发过少女人私处和腋下毛
6pm:https://www.ikjzd.com/w/317
cima是什么:https://www.ikjzd.com/w/1372
auditor:https://www.ikjzd.com/w/2437
口述:一年没怀孕我跪着向婆婆说明缘由:http://lady.shaoqun.com/m/a/73755.html
口述:闺蜜大胸撑破内衣 老公羡慕不已:http://lady.shaoqun.com/m/a/18625.html
两大深圳卖家老板出境,央视走进跨境电商行业!:https://www.ikjzd.com/home/113321

理解RESTful

1 何为RESTful

  RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。REST 是Representational State Transfer的缩写,翻译是"表现层状态转化"。 可以总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则。面向资源是REST最明显的特征,对于同一个资源的一组不同的操作。资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。REST要求,必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操作。
 
2 接口规范
 
  7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS

  GET
    安全且幂等
    获取表示
    变更时获取表示(缓存)
 
    200(OK) - 表示已在响应中发出
    204(无内容) - 资源有空表示
    301(Moved Permanently) - 资源的URI已被更新
    303(See Other) - 其他(如,负载均衡)
    304(not modified)- 资源未更改(缓存)
    400 (bad request)- 指代坏请求(如,参数错误)
    404 (not found)- 资源不存在
    406 (not acceptable)- 服务端不支持所需表示
    500 (internal server error)- 通用错误响应
    503 (Service Unavailable)- 服务端当前无法处理请求
 
  POST
    不安全且不幂等
    使用服务端管理的(自动产生)的实例号创建资源
    创建子资源
    部分更新资源
    如果没有被修改,则不过更新资源(乐观锁)
 
    200(OK)- 如果现有资源已被更改
    201(created)- 如果新资源被创建
    202(accepted)- 已接受处理请求但尚未完成(异步处理)
    301(Moved Permanently)- 资源的URI被更新
    303(See Other)- 其他(如,负载均衡)
    400(bad request)- 指代坏请求
    404 (not found)- 资源不存在
    406 (not acceptable)- 服务端不支持所需表示
    409 (conflict)- 通用冲突
    412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
    415 (unsupported media type)- 接受到的表示不受支持
    500 (internal server error)- 通用错误响应
    503 (Service Unavailable)- 服务当前无法处理请求
 
  PUT
    不安全但幂等
    用客户端管理的实例号创建一个资源
    通过替换的方式更新资源
    如果未被修改,则更新资源(乐观锁)
 
    200 (OK)- 如果已存在资源被更改
    201 (created)- 如果新资源被创建
    301(Moved Permanently)- 资源的URI已更改
    303 (See Other)- 其他(如,负载均衡)
    400 (bad request)- 指代坏请求
    404 (not found)- 资源不存在
    406 (not acceptable)- 服务端不支持所需表示
    409 (conflict)- 通用冲突
    412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
    415 (unsupported media type)- 接受到的表示不受支持
    500 (internal server error)- 通用错误响应
    503 (Service Unavailable)- 服务当前无法处理请求
 
  DELETE
    不安全但幂等
    删除资源
 
    200 (OK)- 资源已被删除
    301 (Moved Permanently)- 资源的URI已更改
    303 (See Other)- 其他,如负载均衡
    400 (bad request)- 指代坏请求
    404 (not found)- 资源不存在
    409 (conflict)- 通用冲突
    500 (internal server error)- 通用错误响应
    503 (Service Unavailable)- 服务端当前无法处理请求










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

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

primc:https://www.ikjzd.com/w/129

csa认证:https://www.ikjzd.com/w/904


1何为RESTful  RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。REST这个词,是RoyThomasFielding在他2000年的博士论文中提出的。REST是RepresentationalStateTransfer的缩写,翻译是"表现层状态转化"。可以总结为一句话:REST是所有Web应用都应该遵守的架构设
孙琦:https://www.ikjzd.com/w/1638
mymall:https://www.ikjzd.com/w/1050
亚马逊全球开店:https://www.ikjzd.com/w/1299
国际贸易术语大全:RFQ、CIF等常用国际贸易术语解释汇总:https://www.ikjzd.com/home/140108
美国毕业季杀到,快快抢占这个55亿的市场,这5种礼物最受欢迎 :https://www.ikjzd.com/home/96237
亚马逊注册怎么避开二审?:https://www.ikjzd.com/home/136237

设计模式之一单例模式(java实现)

  学习一下各种设计模式,看以后的用不用得上╮(╯_╰)╭

1. 饱汉式

/** * 饱汉式 * 1. 构造器私有化 * 2. 静态的私有变量instance * 3. 静态的public方法 */public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstance() {  return instance; }}

  懒汉式缺点:不管用不用这个对象,都会实例化,浪费资源;

 

2 饿汉式

/** * 饿汉式 * 只有在需要获取实例的时候,才会去实例化 */public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() {  if (instance == null) {   instance = new Singleton();  }  return instance; }}

  恶汉式也带来了问题,就是线程不安全

 

3. 对饿汉式+synchronized 

/** * 饿汉式+synchronized * 只有在需要获取实例的时候,才会去实例化 */public class Singleton { private static Singleton instance; private Singleton() { } public synchronized static Singleton getInstance() {  if (instance == null) {   instance = new Singleton();  }  return instance; }}

 

  在方法上加锁会锁住整个方法,继续优化一下,只是给new对象的部分代码加锁:

/** * 饿汉式+synchronized同步代码块 * 只有在需要获取实例的时候,才会去实例化 */public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() {  if (instance == null) {   synchronized (Singleton.class) {    instance = new Singleton();   }  }  return instance; }}

  但是在同步代码块这样的方式有产生了问题:线程A和线程B都执行到了同步代码块这里,线程A先进去,实例化对象instance,释放锁,然后线程B才进去,于是也实例化了一个instance,于是就有两个实例了,线程不安全

 

4. 双重检测锁

/** * 双重检测锁 * */public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() {  if (instance == null) {   synchronized (Singleton.class) {    if (instance == null) {     instance = new Singleton();    }   }  }  return instance; }}

 

  但是上面双重检测的方式在超高并发的环境下也有问题,涉及到JVM层面指令重排,这个双重检测单例模式加不加volatile是个经典面试题

  举个例子:Singleton instance = new Singleton() 这条指令虽然我们程序员看起来就是一条指令,但是在jvm层面却是会分解成三条
    (1)在java堆中分配空间,创建对象

   (2) 给创建的对象初始化赋值

   (3)在java栈中创建局部变量instance,指向java堆中的对象

  在上面(2)和(3)因为指令重排可能交换了顺序,执行过程就是(1)-->(3)-->(2),当线程A执行到(1)->(3)的时候,此时instance指向的是一个半成品的实例,因为这个实例中的属性值还没有初始化;

  此时线程B来调用Singleton.getInstance()就会发现跳过了里面的if语句,直接返回了instance实例,于是在线程B中调用该实例的方法的时候就会出问题(半成品的对象是什么呢,想一下类加载机制,加载,链接(验证,准备,解析),初始化,在加载,链接之后,初始化之前的对象就是半成品的)

  可以使用volatile关键字进行优化,禁止指令重排;

 

5.1  双重检测锁+volatile实现单例(完美版)

/** * 双重检测+volatile */public class Singleton { private static volatile Singleton instance; private Singleton() { } public static Singleton getInstance() {  if (instance == null) {   synchronized (Singleton.class) {    if (instance == null) {     instance = new Singleton();    }   }  }  return instance; }}

 

5.2 枚举实现(完美版)

/** * 枚举方式实现 */public enum SingletonEnum { instance; }

 

5.3 静态内部类的方式实现单例(完美版)

/** * 静态内部类实现单例 */public class Singleton { private static Singleton instance; private Singleton() { } private static class SingletonHelper {  private static final Singleton singleton = new Singleton(); } public static Singleton getInstance() {  return SingletonHelper.singleton; }}

 









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

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

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

kkr:https://www.ikjzd.com/w/1340


学习一下各种设计模式,看以后的用不用得上╮(╯_╰)╭1.饱汉式/***饱汉式*1.构造器私有化*2.静态的私有变量instance*3.静态的public方法*/publicclassSingleton{privatestaticSingletoninstance=newSingleton();privateSingleton(){}publicstaticSingletongetInstanc
贝贝官网:https://www.ikjzd.com/w/1321
e淘网:https://www.ikjzd.com/w/1698
史泰博办公用品:https://www.ikjzd.com/w/2112
口述:老婆是富婆我却爱上风尘女(10/10):http://lady.shaoqun.com/m/a/38726.html
亚马逊店铺注册注意事项!新手卖家如何运营店铺? :https://www.ikjzd.com/home/103533
Wish产品描述的撰写办法:https://www.ikjzd.com/home/7714

28日纪录:威少三双改写队史 比尔赛季第20次30+_比赛

原标题:28日纪录:威少三双改写队史 比尔赛季第20次30+

北京时间2月28日,2020-21赛季NBA常规赛继续进行。比赛结束后,又诞生了不少纪录:

1.兰德尔第9次25+10+5

尼克斯以110-107战胜步行者,此役,尼克斯前锋朱利叶斯-兰德尔出战41分钟,22投12中,其中三分球5投2中,罚球2投2中,得到28分10篮板6助攻4抢断。

数据显示,这是兰德尔本赛季第9次得到25分10篮板5助攻,该数字排在尼克斯队史第二,仅次于1977-78赛季的鲍勃-麦卡杜(15次)。

2.比尔赛季第20次30+

奇才128-112战胜森林狼,此役,奇才大将布拉德利-比尔出战30分钟,23投12中,其中三分球6投2中,罚球8投8中,得到34分8篮板6助攻1抢断。

数据显示,本赛季前29场比赛,比尔已20次轰出30+,近20年,除了比尔,只有阿伦-艾弗森、卡梅隆-安东尼和詹姆斯-哈登做到过。

3.威少三双改写队史

也是在这场比赛中,奇才后卫拉塞尔-威斯布鲁克表现出色,他上场32分钟,19投7中,其中三分球2投0中,罚球10投5中,得到19分14篮板12助攻2抢断。数据显示,这是威少赛季第10次三双。

这样,威少就超越达雷尔-沃克,独占奇才队史单季三双榜的头名。

另外,威少还成为历史第3位在一支球队首个赛季就收获至少10次三双的球员,其余两位是奥斯卡-罗伯特森和本-西蒙斯。

此外,这也是威少连续第6个赛季送出至少10次三双,追平奥斯卡-罗伯特森并列历史第1。本场,威少仅用了三节就送出三双,也是他生涯第46次做到这一点,是过去25个赛季联盟最多的。

4.大帝罚球载入历史

76人主场加时109-112不敌骑士,本场球,76人大中锋乔尔-恩比德出战40分钟,22投13中,其中三分球3投2中,罚球16投14中,空砍42分13篮板6助攻1抢断2封盖。

数据显示,恩比德已经连续17场比赛命中至少8记罚球,排名NBA历史第2,仅次于埃尔金-贝勒的连续19场。

另外,这也是恩比德本赛季第10次半场砍下20+,领跑全联盟。

5.约基奇再轰三双

掘金126-96大胜雷霆,此役,掘金中锋尼古拉-约基奇表现出色,他上场30分钟,10投8中,得到19分11篮板13助攻。

数据显示,这是约基奇本赛季第8次三双,生涯第49次三双,排名NBA历史第9。另外,这还是约基奇生涯第75次得到至少10次助攻,在所有中锋里仅次于威尔特-张伯伦,排名历史第2。(波洛)返回搜狐,查看更多

责任编辑:

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

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

myyearbook:https://www.ikjzd.com/w/726

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


原标题:28日纪录:威少三双改写队史比尔赛季第20次30+北京时间2月28日,2020-21赛季NBA常规赛继续进行。比赛结束后,又诞生了不少纪录:1.兰德尔第9次25+10+5尼克斯以110-107战胜步行者,此役,尼克斯前锋朱利叶斯-兰德尔出战41分钟,22投12中,其中三分球5投2中,罚球2投2中,得到28分10篮板6助攻4抢断。数据显示,这是兰德尔本赛季第9次得到25分10篮板5助攻,该数
vat:https://www.ikjzd.com/w/109
aca:https://www.ikjzd.com/w/1371
epc:https://www.ikjzd.com/w/488
西丽 大学城地铁站 亚马逊英语销售 :https://www.ikjzd.com/home/17352
Lazada泉州分拨中心正式开仓运营 打通中国企业出海"最前一公里":https://www.ikjzd.com/home/133241
卖口罩店铺大面积被封了!口罩额温枪也不能出口?:https://www.ikjzd.com/home/117250