2021年2月28日星期日

Java(JDK/Tomcat/Maven)运行环境配置及工具(idea/eclipse)安装

Java (计算机编程语言)

  • Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
  • Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  • Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。
  • Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。

Java环境配置(Windows)

安装JDK及环境变量配置

  • 下载JDK

Oracle官网:https://www.oracle.com/index.html

JDK官网下载:https://www.oracle.com/java/technologies/javase-downloads.html

  • 安装JDK

安装过程很简单,建议修改JDK的安装路径(这样不会安装到C盘,你也可以不改),需要记住安装路径,环境变量配置时要用,然后全部点击下一步即可。

  • 配置环境

右键"我的电脑">>选择"属性">>点击左侧的"高级系统设置">>高级>>环境变量

 

在系统变量框下

(1)新建JAVA_HOME变量

变量名:JAVA_HOME

变量值:填写JDK安装目录(我的JDK安装路径是 E:\Java\JDK)

 

(2)找到Path变量进行编辑

变量名:Path

变量值: %JAVA_HOME%\bin(新版JDK8及以上版本就不需要配置 jre 了)

(原有变量值不要删除,直接在末尾添加)

注意前面有个英文的分号,不要漏掉,这是为了跟前面的变量值间隔开的

 

(3)新建CLASSPATH变量(这是JDK8需要配置的,JDK11不需要配置CLASSPATH变量

变量名:CLASSPATH

变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

(可以直接复制这句话到变量值那一栏,注意前面有个"."不要漏掉)

 

这样JDK就配置好了

 

 

安装Tomcat及环境变量配置

  • 下载Tomcat(建议下载压缩包)

Tomcat和JDK版本兼容(Tomcat版本要比JDK高)

Apache Tomcat官网下载 data-sup="2" data-ctrmap=":2,">安装过程很简单,建议修改Tomcat的安装路径,需要设置用户与密码然后全部点击下一步即可。如果是下载压缩包,解压就行。

  • 配置环境

右键"我的电脑">>选择"属性">>点击左侧的"高级系统设置">>高级>>环境变量

在系统变量框下

(1)新建CATALINA_HOME变量

变量名:CATALINA_HOME

变量值:E:\Java\Tomcat\apache-tomcat-8.5.42

 

(2)找到Path变量,点击编辑

变量名:Path

变量值: %CATALINA_HOME%\bin

 (原有变量值不要删除,直接在末尾添加)

 

  • 测试成功

在tomcat目录\bin目录中 ,运行命令行 ,输入  service.bat install

出现Tomcat的版本信息,则安装成功

 

这样Tomcat就配置好了

 

安装Maven

  • 下载Maven(建议下载压缩包)

Maven官网下载:https://maven.apache.org/download.cgi

  • 安装Maven

安装过程很简单,建议修改Maven的安装路径然后全部点击下一步即可。如果是下载压缩包,解压就行。

  • 配置环境

右键"我的电脑">>选择"属性">>点击左侧的"高级系统设置">>高级>>环境变量

在系统变量框下

(1)新建MAVEN_HOME变量

变量名:MAVEN_HOME

变量值:E:\Java\Maven\apache-maven-3.3.9

(2)找到Path变量,点击编辑

变量名:Path

变量值: %MAVEN_HOME%\bin

 (原有变量值不要删除,直接在末尾添加)

  • 测试成功

在CMD中 ,运行命令行 , 输入  service.bat install

出现Maven的版本信息,则安装成功

 

  • 配置Maven本地仓库(存放本地jar包)

新建一个文件夹,路径自定义,名称为"maven-repository"

 

 

  • 修改settings.

打开Maven解压路径下的conf下的settings.在它下面添加Maven本地仓库路径 。

 <localRepository>/path/to/local/repo</localRepository>

 

  • 配置阿里云镜像

Maven默认访问国外服务器下载包,会很慢的。而配置阿里云镜像下载包就会很快。
在settings.

  <mirror>   <id>alimaven</id>   <mirrorOf>central</mirrorOf>   <name>aliyun maven</name>   <url></url>  </mirror> 

 

 

这样Maven就配置好了

 

Eclipse集成软件的使用(开源免费)

  • 下载Eclipse

Eclipse官网下载:https://www.eclipse.org/downloads/

Eclipse官网下载:https://www.eclipse.org/downloads/packages/

  • 安装Eclipse

安装过程很简单,建议修改Eclipse的安装路径然后全部点击下一步即可。

 

idea集成软件的使用(付费)

  • 下载idea

idea官网:https://www.jetbrains.com/idea/

idea官网下载:https://www.jetbrains.com/idea/download/#section=windows

  • 安装idea

 安装过程很简单,建议修改idea的安装路径然后全部点击下一步即可。

  • 打开idea只有30天的试用期
  • 认定学生老师有一年的免费使用期
  • 之后需要购买(相当于Windows系统购买后永久使用,当然也有破解版,建议购买正版)

 

Eclipse与idea的比较

  • 个人觉得idea还是好用一点,idea比较主流一点

 

 

本文网址: https://www.cnblogs.com/dmflysky/p/14457843.html









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

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

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

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


Java(计算机编程语言)Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java
聚贸:https://www.ikjzd.com/w/1305
stadium:https://www.ikjzd.com/w/2729
卖家精灵:https://www.ikjzd.com/w/532
Amazon's Choice是什么?Amazon's Choice新变化及获取方法!:https://www.ikjzd.com/home/552
亚马逊卖家如何保护自己的链接以及赶走跟卖?:https://www.ikjzd.com/home/121972
跨境干货| 非常重要却最易忽略的关税知识点,你都清楚吗?:https://www.ikjzd.com/home/131542

2021年2月27日星期六

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

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

图片7.png 

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

 

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




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

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

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

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


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

绝望!苏宁最快今天宣布解散 泰达已准备沉默中消亡_中超

原标题:绝望!苏宁最快今天宣布解散 泰达已准备沉默中消亡

记者寒冰报道 屹立中国顶级联赛22年的天津泰达,新科中超冠军江苏苏宁,恐怕很难坚持过2021年的中超寒冬,元宵节当天江苏队要解散的消息不断传来,而当晚最后的消息显示,苏宁最快将于今日宣布球队解散,而泰达高层已经准备好在沉默中消亡。

如果两家俱乐部真的在2021年2月消亡,这不仅是中国足球的巨大挫折,即便在世界足坛,也算是罕见的奇葩事件——中国北方足球重镇之一的天津,连续两年解散职业联赛顶级球队,江苏苏宁从夺得队史首个联赛冠军到确定解散仅历时107天,创下世界男足主流联赛卫冕冠军破产解散的最短纪录!南北两大中超劲旅的"突然死亡",不仅是中国职业足球的耻辱,更让中超联赛的颓败一夜间成为世界足坛的焦点。

令人绝望的是,即将发生的这两个悲剧还仅仅是中超"至暗时刻"到来的开始……

(足球报)返回搜狐,查看更多

责任编辑:

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

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

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

黄远:https://www.ikjzd.com/w/1785


原标题:绝望!苏宁最快今天宣布解散泰达已准备沉默中消亡记者寒冰报道屹立中国顶级联赛22年的天津泰达,新科中超冠军江苏苏宁,恐怕很难坚持过2021年的中超寒冬,元宵节当天江苏队要解散的消息不断传来,而当晚最后的消息显示,苏宁最快将于今日宣布球队解散,而泰达高层已经准备好在沉默中消亡。如果两家俱乐部真的在2021年2月消亡,这不仅是中国足球的巨大挫折,即便在世界足坛,也算是罕见的奇葩事件——中国北方足
孙琦:https://www.ikjzd.com/w/1638
网上1号店:https://www.ikjzd.com/w/2263
灰色清关:https://www.ikjzd.com/w/1409
7个小tips教你提升独立站在Facebook广告的转化 - 独立站广告转化:https://www.ikjzd.com/home/141981
本周精选:indiegogo上热门大功率移动电源产品一览:https://www.ikjzd.com/home/138754
海外网红营销干货_如何通过网红经济带货_网红经济营销:https://www.ikjzd.com/home/118629

Coposition 详解

LifeCycle Hooks

在新版的生命周期函数,可以按需导入到组件中,且只能在setup()函数中使用.

import { onMounted, onUnmounted } from 'vue';export default { setup () {  onMounted(()=>{   //  });  onUnmounted(()=> {   //  }); }};



 

 

生命周期2.x与Composition之间的映射关系

  • beforeCreate -> use setup()
  • created -> use setup()
  • beforeMount -> onBeforeMount
  • mounted -> onMounted
  • beforeUpdate -> onBeforeUpdate
  • updated -> onUpdated
  • beforeDestroy -> onBeforeUnmount
  • destroyed -> onUnmounted
  • errorCaptured -> onErrorCaptured

 

setup

理解

setup()函数是vue3中专门新增的方法,可以理解为Composition Api的入口.

执行时机

在beforecreate之后,create之前执行.

接收props数据

export default { props: { msg: {  type: String,  default: () => {} } }, setup(props) { console.log(props); }}



context:

setup()的第二个参数是一个上下文对象,这个上下文对象大致包含了这些属性,注意:在setup()函数中无法访问this

const MyComponent = { setup(props, context) { context.attrs context.slots context.parent context.root context.emit context.refs }}



 

reactive

reactive是用来创建一个响应式对象,等价于2.x的Vue.observable,具体可以参考下面demo。

<template> <div>  <p @click="incment()">   click Me!  </p>  <p>   一:{{ state.count }} 二: {{ state.addCount }}  </p> </div></template><script>import { reactive } from 'vue';export default { setup () {  const state = reactive({//创建响应式数据   count: 0,   addCount: 0  });  function incment () {   state.count++;   state.addCount = state.count * 2;  }      return {   state,   incment  }; }};</script>



 

ref

基本语法

ref()函数用来给定的值创建一个响应式的数据对象,ref()的返回值是一个对象,这个对象上只包含一个.value属性.下面是基本数据类型创建步骤.

import { ref } from 'vue';export default { setup () {  const valueNumber = ref(0);  const valueString = ref('hello world!');  const valueBoolean = ref(true);  const valueNull = ref(null);  const valueUndefined = ref(undefined);  return {   valueNumber,   valueString,   valueBoolean,   valueNull,   valueUndefined  }; }};



image.png

 

在template中访问ref创建的响应式数据

import { ref } from 'vue';export default { setup () {  const value = ref(1);  return {   value,   msg: 'hello world!'  }; }};



<template> <p>  {{ value }} {{ msg }} </p></template>



将ref响应式数据挂载到reactive中

当把ref()创建出来值直接挂载到reactive()中时,会自动把响应式数据对象的展开为原始的值,不需要通过.value就可以直接访问到.

import { ref, reactive } from 'vue';export default { setup () {  const count = ref(1);  const state = reactive({   count  });      console.log(state.count);//1 可以直接访问到,不需要通过.value就可以直接访问到  state.count++;  console.log(count.value);//2 我们发现,最初count值也发生了改变  return {   count  }; }};



新的ref会覆盖旧的ref,实例如下:

import { ref, reactive } from 'vue';export default { setup () {  const count = ref(1);  const state = reactive({   count  });  const newCount = ref(9);  state.count = newCount;  state.count++;  console.log(state.count, newCount, count);// 10 10 1  return {   count  }; }};



image.png

我们发现,这次的count值却没有发生改变,还是原始值1,是因为新创建的newCount替换并覆盖了之前的count值,取代了它的位置.

 

 

isRef

用来判断某个值是否为ref创建出来的对象,场景:当需要展开某个值可能是ref()创建出来的对象时.

import { ref, isRef } from 'vue';export default { setup () {  const count = ref(1);  const unwrappend = isRef(count) ? count.value : count;  return {   count,   unwrappend  }; }};



 

toRefs

torefs()函数可以将reactive()创建出来的响应式对象转换为普通的对象,只不过这个对象上的每个属性节点都是ref()类型的响应式数据

<template> <p>   <!-- 可以不通过state.value去获取每个属性 -->  {{ count }} {{ value }} </p></template><script>import { ref, reactive, toRefs } from 'vue';export default { setup () {  const state = reactive({   count: 0,   value: 'hello',  })  return {   ...toRefs(state)  }; }};</script>



 

toRef

概念:为源响应式对象上的某个属性创建一个ref对象,二者内部操作的是同一个数据值,更新时二者是同步的。相当于浅拷贝一个属性.

区别ref: 拷贝的是一份新的数据单独操作,更新时相互不影响,相当于深拷贝。

场景:当要将某个prop的ref传递给某个复合函数时,toRef很有用.

import { reactive, ref, toRef } from 'vue'export default { setup () {  const m1 = reactive({   a: 1,   b: 2  })  const m2 = toRef(m1, 'a');  const m3 = ref(m1.a);  const update = () => {   // m1.a++;//m1改变时,m2也会改变   // m2.value++; //m2改变时m1同时改变   m3.value++; //m3改变的同时,m1不会改变  }  return {   m1,   m2,   m3,   update  } }}



 

computed

computed()用来创建计算属性,返回值是一个ref的实例。

 

创建只读的计算属性

import { ref, computed } from 'vue';export default { setup () {  const count = ref(0);  const double = computed(()=> count.value + 1);//1  double++;//Error: "double" is read-only  return {   count,   double  }; }};



 

创建可读可写的计算属性

在使用computed函数期间,传入一个包含get和set函数的对象,可以额得到一个可读可写的计算属性

// 创建一个 ref 响应式数据const count = ref(1)// 创建一个 computed 计算属性const plusOne = computed({ // 取值函数 get: () => count.value + 1, // 赋值函数 set: val => { count.value = val - 1 }})// 为计算属性赋值的操作,会触发 set 函数plusOne.value = 9// 触发 set 函数后,count 的值会被更新console.log(count.value) // 输出 8



 

watch

watch()函数用来监视某些数据项的变化,从而触发某些特定的操作,看下面这个案例,会实时监听count值的变化. 查看官方文档API

import { ref, watch } from 'vue';export default { setup () {  const count = ref(1);  watch(()=>{   console.log(count.value, 'value');  })  setInterval(()=>{   count.value++;  },1000);  return {   count,  }; }};



 

监听指定的数据源

监听reactive的数据变化

import { watch, reactive } from 'vue';export default { setup () {  const state = reactive({   count: 0  })  watch(()=>state.count,(count, prevCount)=>{   console.log(count, prevCount);//变化后的值 变化前的值  })  setInterval(()=>{   state.count++;  },1000);  return {   state  }; }};



监听ref类型的数据变化

import { ref, watch } from 'vue';export default { setup () {  const count = ref(0);  watch(count,(count, prevCount)=>{   console.log(count, prevCount);//变化后的值 变化前的值  })  setInterval(()=>{   count.value++;  },1000);  return {   count  }; }};



 

监听多个指定数据变化

监听reactive类型数据变化

import { watch, reactive } from 'vue';export default { setup () {  const state = reactive({   count: 0,   msg: 'hello'  })  watch([()=> state.count, ()=> state.msg],([count, msg], [prevCount, prevMsg])=>{   console.log(count, msg);   console.log('---------------------');   console.log(prevCount, prevMsg);  })  setTimeout(()=>{   state.count++;   state.msg = 'hello world';  },1000);  return {   state  }; }};



 

监听ref类型数据变化

import { ref, watch } from 'vue';export default { setup () {  const count = ref(0);  const msg = ref('hello');  watch([count, msg],([count, name], [prevCount, prevname])=>{   console.log(count, name);   console.log('---------------------');   console.log(prevCount, prevname);  })  setTimeout(()=>{   count.value++;   msg.value = 'hello world';  },1000);  return {   count,   msg  }; }};



 

清除监视

在setup()函数内创建的watch监视,会在当前组件被销毁的时候自动停止。如果想要明确的停止某个监视,可以调用watch()函数的返回值即可

// 创建监视,并得到 停止函数const stop = watch(() => { /* ... */})// 调用停止函数,清除对应的监视stop()



 

清除无效的异步任务

有时候watch()监视的值发生了变化,我们期望清除无效的异步任务,此时watch回调函数中提供了cleanup registrator function来执行清除工作

    • 场景
      • watch被重复执行了
      • watch被强制stop()
<template> <p>  <input type="text" v-model="keyword"> </p></template><script>import { watch, ref } from 'vue';export default { setup () {  const keyword = ref('');  const asyncPrint = val => {   return setTimeout(()=>{    console.log(val);   },1000);  }  watch(keyword, (keyword, prevKeyword, onCleanup) => {   const timeId = asyncPrint(keyword);   onCleanup(()=> clearTimeout(timeId));  }, {lazy: true})  return {   keyword  }; }};</script>



 

watchEffect

vue3中新增的api,用于属性监听.

与watch有什么不同?

      • watchEffect不需要指定监听属性,可以自动收集依赖,只要我们回调中引用了响应式的属性,那么这些属性变更的时候,这个回调都会执行,而watch只能监听指定的属性而做出变更(v3中可以同时监听多个)
      • watch可以获取到新值和旧值,而watchEffect获取不到
      • watchEffect会在组件初始化的时候就会执行一次与computed同理,而收集到的依赖变化后,这个回调才会执行,而watch不需要,除非设置了指定参数。

 

基础用法

import { watchEffect, ref } from 'vue'setup () { const userID = ref(0) watchEffect(() => console.log(userID)) setTimeout(() => {  userID.value = 1 }, 1000) /*  * LOG  * 0   * 1 */ return {  userID } }



停止监听

如果watchEffect是在setup或者生命周期里面注册的话,在取消挂在的时候会自动停止。

//停止监听const stop = watchEffect(() => { /* ... */})// laterstop()



使 side effect 无效

什么是 side effect ,不可预知的接口请求就是一个 side effect,假设我们现在用一个用户ID去查询用户的详情信息,然后我们监听了这个用户ID, 当用户ID 改变的时候我们就会去发起一次请求,这很简单,用watch 就可以做到。 但是如果在请求数据的过程中,我们的用户ID发生了多次变化,那么我们就会发起多次请求,而最后一次返回的数据将会覆盖掉我们之前返回的所有用户详情。这不仅会导致资源浪费,还无法保证 watch 回调执行的顺序。而使用watchEffect我们就可以做到.

onInvalidate(fn)传入的回调会在watchEffect重新运行或者watchEffect停止的时候执行。

watchEffect(() => {  // 异步api调用,返回一个操作对象  const apiCall = someAsyncMethod(props.userID)  onInvalidate(() => {  // 取消异步api的调用。  apiCall.cancel()  })})



 

shallowReactive

概念:只处理对象最外层属性的响应式(也就是浅响应式),所以最外层属性发生改变,更新视图,其他层属性改变,视图不会更新.

场景:如果一个对象的数据结构比较深,但变化只是最外层属性.

import { shallowReactive } from 'vue'export default { setup() {  const obj = {   a: 1,   first: {    b: 2,    second: {     c: 3    }   }  }  const state = shallowReactive(obj)  function change1() {   state.a = 7  }  function change2() {   state.first.b = 8   state.first.second.c = 9   console.log(state);  }  return { state } }}



 

shallowRef

概念:只处理了value的响应式,不进行对象的reactive处理.

场景:如果有一个对象数据,后面会产生新的对象替换.

 

import { shallowRef } from 'vue'export default { setup () {  const m1 = shallowRef({a: 1, b: {c: 2}})  const update = () => {   m1.value.a += 1  }  return {   m1,   update  } }}



 

customRef

创建一个自定义的ref,并对其依赖跟踪和更新触发进行显式控制.

场景:使用customRef实现输入框防抖

<template> <div>  <input v-model="keyword" placeholder="搜索关键字"/>  <p>{{keyword}}</p> </div></template><script>import { customRef } from 'vue'export default { setup () {  const keyword = useDebouncedRef('', 500)  console.log(keyword)  return {   keyword  } }}function useDebouncedRef(value, delay = 200) { let timeout; return customRef((track, trigger) => {  return {   get() {    // 告诉Vue追踪数据    track()    return value   },   set(newValue) {    clearTimeout(timeout)    timeout = setTimeout(() => {     value = newValue     // 告诉Vue去触发界面更新     trigger()    }, delay)   }  } })}</script>



 

自定义Hook函数

自定义hook的作用类型于vue2中的mixin技术。

优势:清楚知道代码来源,方便复用

案例:收集用户点击的页面坐标

 

hook/useMousePosition.js

import { ref, onMounted, onUnmounted } from "vue";export default function useMousePosition() { // 初始化坐标数据 const x = ref(-1); const y = ref(-1); // 用于收集点击事件坐标的函数 const updatePosition = e => {  x.value = e.pageX;  y.value = e.pageY; }; // 挂载后绑定点击监听 onMounted(() => {  document.addEventListener("click", updatePosition); }); // 卸载前解绑点击监听 onUnmounted(() => {  document.removeEventListener("click", updatePosition); }); return { x, y };}



 

模版中使用hook函数

<template> <div>  <p>{{ x }}</p>  <p>{{ y }}</p> </div></template><script>import useMousePosition from '@/hook/useMousePosition'export default { setup () {  const {x, y} = useMousePosition();  return {   x,   y  } }}</script>



 

readonly与shallowReadonly

  • readonly:
    • 深度只读数据
    • 获取一个对象 (响应式或纯对象) 或 ref 并返回原始代理的只读代理。
    • 只读代理是深层的:访问的任何嵌套 property 也是只读的。
  • shallowReadonly
    • 浅只读数据
    • 创建一个代理,使其自身的 property 为只读,但不执行嵌套对象的深度只读转换
  • 应用场景:
    • 在某些特定情况下, 我们可能不希望对数据进行更新的操作, 那就可以包装生成一个只读代理对象来读取数据, 而不能修改或删除

 

<template> <div @click="update()">  <p>{{ a }}</p>  <p>{{ b }}</p> </div></template><script>import { reactive, readonly, shallowReadonly } from 'vue'export default { setup () {  const state = reactive({   a: 1,   b: {    c: 2   }  })  const m = readonly(state);  const m2 = shallowReadonly(state);  const update = () => {   m.a++ //无法修改 只读   m2.a++ //无法修改   m2.b.c++ //可以修改 视图层数据改变  }  return {   ...toRefs(state),   update  } }}</script>



 

Template refs

通过ref()还可以引用页面上的元素或者组件.

 

元素引用

使用ref()函数创建DOM引用,需在onMounted中获取.

<template> <div>  <p ref="dom">hello</p> </div></template><script>import { ref, onMounted } from 'vue';export default { setup () {  const dom = ref(null);  onMounted(()=> {   console.log(dom.value)//当前dom元素  });  return {   dom  } }};</script>



 

组件引用

<template> <div>  <Test ref="comRef"/> </div></template><script>import { ref, onMounted } from 'vue';import Test from "./test2";export default { components: { Test }, setup () {  const comRef = ref(null);  onMounted(()=> {   comRef.value.coun;//获取子组件值   comRef.value.Handle();//调用子组件函数  })  return {   comRef  } }};</script>



 

  • test2
<template> <p>  {{ count }} </p></template><script>import { ref } from 'vue';export default { setup () {  const count = ref('count');  const Handle = (()=> {   console.log('hello');  })  return {   count,   Handle  } }};</script>



 

createComponent

这个函数不是必须的,除非你想完美结合TypeScript提供的类型推断来进行项目开发

场景:这个函数仅仅提供了类型推断,能为setup()函数中的props提供完整的类型推断.

import { createComponent } from 'vue'export default createComponent({ props: { foo: String }, setup(props) { props.foo // <- type: string }})



 

getCurrentInstance

描述:可以获取当前组件的实例,然后通过ctx属性获取当前上下文,这样我们就可以在steup中使用router和vuex了.

<script>import { getCurrentInstance } from 'vue'export default { setup () { const { ctx } = getCurrentInstance() console.log(ctx.$router.currentRoute.value) //当前路径 //与以前this获取原型上东西一样 //ctx.$parent 父组件 // ctx.$nextTick 组件更新完毕  // ctx.$store VueX }}</script>



 

学习手册

https://vue3js.cn/vue-composition-api









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

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

epa认证:https://www.ikjzd.com/w/1769

hts:https://www.ikjzd.com/w/525


LifeCycleHooks在新版的生命周期函数,可以按需导入到组件中,且只能在setup()函数中使用.import{onMounted,onUnmounted}from'vue';exportdefault{setup(){onMounted(()=>{//});onUnmounted(()=>{//});}};生命周期2.x与Composition之间的映射关系b
imgur:https://www.ikjzd.com/w/156
mile:https://www.ikjzd.com/w/1746
rakuten:https://www.ikjzd.com/w/2718
口述:妹妹想跟我一起嫁给老公:http://lady.shaoqun.com/m/a/108158.html
亚马逊自动定价逻辑更新,可在特定情况下提高商品价格!:https://www.ikjzd.com/home/107559
勤商网:https://www.ikjzd.com/w/2219

月球表面带回的三眼女尸,这件奇闻异事是怎么回事?

如果大家一直关注神秘月球的新闻,必然也会听说过三眼女尸,据说他是探险队在来到月球表面的时候带回,很有可能是来自于一艘几万年之前坠毁的飞船。很多人都会知道阿波罗计划仅仅是执行到17,根本就没有执行到18,还有19,所以这一切很有可能只是掩人耳目的说法,在看到这里时,奇闻异事也终于揭开答案。

图片4.png 

  据说在月球的表面发现这一个宇宙飞船,而且长度达到3千米,对于这样的一个目标,美国,还有俄罗斯都非常的感兴趣,尽管苏联始终都没有实施载人登月的计划,但是美国在神不知鬼不觉的情况下,又怎么可能会独自一个人享受非常的秘密呢?所以极为意识在这里就已经有答案,估计也是为吸引人眼球,比如在1976年8月份的时候,两个国家就选择联合起来准备实行登月的计划,当时就在一座山脉的附近。

 

  当他们在联合登月成功之后,看到宇宙飞船,本来想进入到宇宙飞船的内部,可是在飞船上这些设备也让宇航人员感觉到目瞪口呆,虽然说这个飞船早就已经不知道坠毁很多年,但是到目前为止都处于休眠的状态,这真是一件奇闻异事。最可怕的就是,宇航员还发现里面有一位乘客在某种磁场的保护下处于生死的边缘,这一个尸体的口鼻和眼睛部位好像被某一种物质连接,身上到处都是月球的尘埃,因此根本无法想象到底经历多长时间?

 




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

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

万色:https://www.ikjzd.com/w/2382

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


如果大家一直关注神秘月球的新闻,必然也会听说过三眼女尸,据说他是探险队在来到月球表面的时候带回,很有可能是来自于一艘几万年之前坠毁的飞船。很多人都会知道阿波罗计划仅仅是执行到17,根本就没有执行到18,还有19,所以这一切很有可能只是掩人耳目的说法,在看到这里时,奇闻异事也终于揭开答案。  据说在月球的表面发现这一个宇宙飞船,而且长度达到3千米,对于这样的一个目标,美国,还有俄罗斯都非常的感兴趣,
worldfirst:https://www.ikjzd.com/w/289
黄远:https://www.ikjzd.com/w/1785
阿里巴巴 批发:https://www.ikjzd.com/w/1084
口述:吵架后 女友找我情敌喝酒买醉:http://lady.shaoqun.com/m/a/2797.html
寻找知音:2018亚马逊大事件分享与接龙之VC篇:https://www.ikjzd.com/home/12869
秘籍!2020亚马逊Prime Day爆款产品分析:https://www.ikjzd.com/home/125354

2021年2月26日星期五

曝深足欲签4强援提升阵容 挖角重庆攻防核心或签苏宁国脚_马里

原标题:曝深足欲签4强援提升阵容 挖角重庆攻防核心或签苏宁国脚

2月26日,据国内多家媒体消息,深足由于外援马里和毕福马无法近期归队,计划补充两名球员。据悉,他们希望得到阿奇姆彭和卡尔德克。

马里因曾经感染新冠肺炎抗体呈阳性,鉴于国内疫情防控要求无法入境,深足有意接受J联赛球队邀请,租借马里离队。为了填补攻击线的空缺,深足有意卡尔德克与天津津门虎的阿奇姆彭。据悉,深足已与卡尔德克有了实质性接触。

同时,在内援方面,深足希望后防线得到充分补强。苏宁后卫李昂和重庆球员元敏诚成为引援目标。返回搜狐,查看更多

责任编辑:

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

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

promotion:https://www.ikjzd.com/w/127

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


原标题:曝深足欲签4强援提升阵容挖角重庆攻防核心或签苏宁国脚2月26日,据国内多家媒体消息,深足由于外援马里和毕福马无法近期归队,计划补充两名球员。据悉,他们希望得到阿奇姆彭和卡尔德克。马里因曾经感染新冠肺炎抗体呈阳性,鉴于国内疫情防控要求无法入境,深足有意接受J联赛球队邀请,租借马里离队。为了填补攻击线的空缺,深足有意卡尔德克与天津津门虎的阿奇姆彭。据悉,深足已与卡尔德克有了实质性接触。同时,在
stadium:https://www.ikjzd.com/w/2729
e邮包:https://www.ikjzd.com/w/594.html?source=tagwish
net a porter:https://www.ikjzd.com/w/2132
侵权预警:Vivere室外躺椅吊床的专利情况!:https://www.ikjzd.com/home/138563
亚马逊产品卖不出去,你可能犯了6种致命错误!:https://www.ikjzd.com/home/107956
eBay启用新APIs 功能 助力卖家在线业务腾飞:https://www.ikjzd.com/home/125713

沙特电商新变化,近一半消费者直播购物支出增加

研究显示,在新型的购物方式中,直播购物和AR最引人注目。56%的受访者在去年都尝试过直播购物,88%的人表示在接下来将增加他们直播购物的次数。

 

直播购物可以通过社交媒体、网站或其他应用程序为消费者提供实时的反馈,更好地展示产品功能。近一半(48%)受访者说,他们去年直播购物的支出有所增加,其中奢侈品、汽车配件、运动器材和旅游配件等品类最受欢迎。

 

AR方面,83%的受访者觉得利用AR和品牌卖家互动非常有趣。在国内,AR在零售市场的应用已经非常广泛,消费者可以在通过AR试口红颜色、试鞋子、试衣服,甚至试试哪个发型适合自己。不过沙特的AR发展仍有进步空间,84%的受访者表示当地的AR技术需要加大努力。

 

除此之外,研究还发现沙特消费者在疫情封锁期间大量使用社交媒体,目的是寻找新的品牌和线上商店。数据显示,使用Instagram的消费者多数是寻找食品饮料(47%)和时尚类(48%),而使用Facebook的则是寻找游戏(39%)。

 

一些大品牌也窥探到这一趋势,加大了在社交媒体上的支出。例如,雀巢中东在斋月期间创建了一个信息机器人,使人们在雀巢官网浏览的时间比其他活动期长2.9倍。由于大型商店在封锁期间继续营业,中小企业遭到冲击。因此,当地中小企业也开始使用社交媒体来提高品牌知名度和销售额。

 

Facebook中东地区总经理拉梅兹·谢哈迪(Ramez Shehadi)表示:"人们为了寻求方便,会继续尝试不同的功能和服务。但对于营销人员来说,无论是直播购物还是AR等,其最终目的都是增加销量,而不是单纯为了迎合市场去使用。"




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

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

二类电商:https://www.ikjzd.com/w/1457

四海商舟:https://www.ikjzd.com/w/1516


研究显示,在新型的购物方式中,直播购物和AR最引人注目。56%的受访者在去年都尝试过直播购物,88%的人表示在接下来将增加他们直播购物的次数。直播购物可以通过社交媒体、网站或其他应用程序为消费者提供实时的反馈,更好地展示产品功能。近一半(48%)受访者说,他们去年直播购物的支出有所增加,其中奢侈品、汽车配件、运动器材和旅游配件等品类最受欢迎。AR方面,83%的受访者觉得利用AR和品牌卖家互动非常有
tradeindia:https://www.ikjzd.com/w/2305
bsci 认证:https://www.ikjzd.com/w/2339
dmm.adult:https://www.ikjzd.com/w/2026
紧急!2月13日比利时全国罢工,沙勒罗瓦机场关闭!:https://www.ikjzd.com/home/16502
一周跨境要闻:日本"十连休"影响交货,美国加税可退:https://www.ikjzd.com/home/59936
打造爆款计划书和赛维广告分析:https://www.ikjzd.com/tl/4300

LinkedIn-DataHub专题: 元数据中心系统架构演进

本文翻译自 Shirshanka Das 的 DataHub: Popular metadata architectures explained

自从WhereHows(第二代,DataHub前身)在2016年被推出以来,在本文档编写时,元数据中心系统架构经历了三代演变,WhereHows作为最早的元数据中心开源产品影响着后来同类型的项目。在该领域内Lyft's Amundsen、DataHub处于领先者,Amundsen(2019年10月开源)社区最活跃的,"基于推送"架构之上的DataHub在2019年8月重构推出以来也越来越被关注。
(以下的部分竞品分析可看这)
image.png

第一代架构:Pull-based ETL (基于Pull-ETL模式)

整体架构会简单些,采用单体架构。通常会利用爬取方式定时抓取并结构化数据,存储在一个便于检索的主存储(MySQL/Postgres),和搜索引擎(ES)中,提供一前端展示数据并支持简单检索。1.5 代可能会引入图形数据库(Neo4j)、批处理作业(Spark作业)。
image.png

优点:

  • 较少的组件依赖

只需一个查找存储、一个搜索索引和几个爬虫程序,就可以快速聚合元数据,并构建一个有用的应用程序

  • 资源投入少,可快速响应

一般服务于固定场景,可快速响应,较少的资源投入

缺点(主要):

  • pull模式

采集方式虽然很容易实现并可聚合数据,但该方式却及其脆弱。爬虫程序与数据源在不同环境下,往往由各自团队单独管理,共识很容易随着时间推移、产品迭代、人员变动而被打破(比如防火墙规则或密码更改、存储源结构调整),而导致一系列异常。另一个问题,爬虫程序通常会导致负载飙升影响到正常的业务系统以及需考虑增量、非增量带来的影响。而在系统负载过高情况下,爬虫程序总是会被优先挂起或被关闭。这就引出了第二个问题。

  • 数据时效性过低

采集模式都是T+1(n)方式进行,这仅仅只是比以前更有效率了。然而一旦开始运营数据,在多数重要场景下,数据的即时性和高保真度就变得格外重要。(例如数据质量、数据标签)

第二代架构:3-tier app with a service API(支持push的微服务架构)

通过添加基于推送的体系和微服务的API进行存储、检索元数据,第二代架构已经可以为数据资产提供可靠的搜索和发现服务。可能还会引入访问控制,但是元数据依然存储在单个元数据存储区中。
image.png

优点:

  • 统一接入方式
  • 可编程

通过服务API,最终可以做到对数据集或字段进行标记,并可对这些数据进行业务操作(如自动删除,提取,备份)

缺点:

  • 没有变更日志

没有日志,当出现问题时,很难重建或修复搜索和图形索引。另外没有实时的元数据变更日志,也无法构建高效的反应系统。

  • 中心化团队

这种架构仍然依赖一个集中化的团队,需要参与到业务数据构建中,支持所有下游消费者希望访问元数据的方式。这不仅限制了中心服务为下游提供动力的能力,也阻碍了业务的快速发展。基于服务的集成操作,还需考虑服务提供方停机带来的影响。

第三代架构:Event-sourced metadata (基于流的组件服务)

基于"中心服务"的元数据解决方案难以跟上企业对元数据用例的需求。要解决这个问题,必须满足两个要求,第一个元数据本身可流动、基于事件的、可实时订阅的;第二个元数据模型是开放的,使用方可按需扩展丰富模型。
在三代架构中做出了两个重大改进:面向日志的元数据体系、面向领域的元数据建模
面向日志的元数据体系:
image.png
面向领域的元数据建模:
image.png
完整版:
image.png

优点:

  • 可以获得基于流的元数据日志(如变更通知)

元数据的细化和丰富可以通过低延迟的日志更改事件来执行

  • 开放扩展

不同的业务团队/用例可附加属性到需要的模型上,以满足不同的需求

缺点:

  • 系统复杂、更多的组件依赖
  • 用户体验可能差、繁琐

开发一个简单的用例,所需的工作量大,繁琐。需要投入一定精力和经验成本在可用性和体验方面下功夫。


经过这样的演化,优良的架构让使用方可以按不同的方式进行对接;可以获得基于流的事件通知;更低时延的查询和全文检索能力;直观的元数据关系图形查询;在不牺牲一致性或时效性情况细化和丰富元数据;更优的用户体验。第三代架构确保我们能够以最具伸缩性和灵活性的方式集成、存储和处理元数据。但这还不够。

"Putting metadata to work is harder than just putting metadata together."
使用元数据比将元数据放一起更难

首先需要定义正确的元数据模型,以真正捕获对企业有意义的概念。然后,您需要一个支持AI的途径,从这个完整、可靠的数据资产清单过渡到元数据的可信知识图。这将允许您真正释放企业的生产力和治理。









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

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

宝付:https://www.ikjzd.com/w/539

环球市场:https://www.ikjzd.com/w/1762


本文翻译自ShirshankaDas的DataHub:Popularmetadataarchitecturesexplained自从WhereHows(第二代,DataHub前身)在2016年被推出以来,在本文档编写时,元数据中心系统架构经历了三代演变,WhereHows作为最早的元数据中心开源产品影响着后来同类型的项目。在该领域内Lyft'sAmundsen、DataHub处于领先者,Amund
一淘网比价平台:https://www.ikjzd.com/w/1698
tenso:https://www.ikjzd.com/w/1552.html
upc:https://www.ikjzd.com/w/111
亚马逊选品的全流程分析,选品要考虑的因素有哪些?:https://www.ikjzd.com/home/131660
路灯_路灯新闻资讯_路灯报道:http://tech.shaoqun.com/s/%E8%B7%AF%E7%81%AF.aspx
星徽精密以15.3亿收购泽宝案获证监会批复核准!:https://www.ikjzd.com/home/13215

前瞻:猛龙欲送火箭10连败 湖人盼借开拓者止颓势_比赛

原标题:前瞻:猛龙欲送火箭10连败 湖人盼借开拓者止颓势

北京时间2月26日消息,NBA常规赛继续进行,以下是明日赛事部分前瞻:

火箭(11-19)VS猛龙(16-17)(08:30)

上一场输给骑士队后,火箭遭遇一波9连败。据统计,9连败是联盟现阶段最长的连败。放眼火箭队史,球队上次遭遇9场及以上连败还要追溯到2001年,当年11月24日至12月21日,火箭曾连续输掉15场比赛。目前,火箭的战绩为11胜19负,排名西部倒数第2位、联盟倒数第4位。火箭队只差一场输球就能追平NBA本赛季最长的连败纪录,骑士队此前遭遇一波10连败。此外,火箭全队外线手感冰凉,三分球命中率已低至33.9%,为全联盟最低。"我们的防守不好,进攻也脱节,从各个方面来看,全队的表现非常糟糕。"火箭主帅塞拉斯无奈地表示。

反观猛龙,本赛季,猛龙低开高走,排名已经升至东部第五位。不过球队目前正处于一波2连败期间,另外,球队也遭遇交易流言困扰,猛龙对于交易球队主力控卫洛瑞持开放性态度,后者想去76人这样的争冠球队。洛瑞经纪人Mark Bartelstein近日在电台节目中辟谣了此事,称洛瑞目前不会去任何地方。

猛龙目前的赛程十分紧凑,过去7天内打了五场比赛,也是20天内的第12场。"感觉就像每天起床,都要打一场比赛。我知道这不是真的,但按照日程安排,这似乎非常繁忙。"猛龙主帅纳斯表示。

开拓者(18-13)VS湖人(22-11)(11:00)

在失去安东尼-戴维斯又失去施罗德后,湖人的状态一蹶不振,最近6场比赛输了5场,其中包括目前的4连败。连败期间,湖人有3场得分不破百,去年整个赛季只出现过2次,而上一场与爵士的比赛,89分也是湖人赛季新低得分。自戴维斯受伤后,湖人的进攻效率已经跌到了联盟倒数第二。勒布朗-詹姆斯表示湖人现在遇到了疲惫问题,但他相信很快就能"反弹",并称现在的困难和考验最终对球队有益。对于湖人来说好消息是,施罗德大概率(75%)将在与开拓者的比赛中复出,此前他因为联盟健康与安全协议连续缺席4场比赛。

反观开拓者,球队目前状况不佳,上一场输给掘金后,遭遇一波3连败。连败期间,开拓者场均失分为120.3分,这对全明星球员达米安-利拉德来说很失望,"这很令人沮丧,因为我们想要赢得比赛。我们在很长一段时间里都打出高水平比赛,显然,要维持这个水平并不容易。"利拉德表示。

快船VS灰熊(09:00)

黄蜂VS勇士(11:00)

老鹰VS雷霆(09:00)

太阳VS公牛(09:00)

爵士VS热火(09:00)

国王VS活塞(09:00)

步行者VS凯尔特人(08:30)

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

责任编辑:

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

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

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

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


原标题:前瞻:猛龙欲送火箭10连败湖人盼借开拓者止颓势北京时间2月26日消息,NBA常规赛继续进行,以下是明日赛事部分前瞻:火箭(11-19)VS猛龙(16-17)(08:30)上一场输给骑士队后,火箭遭遇一波9连败。据统计,9连败是联盟现阶段最长的连败。放眼火箭队史,球队上次遭遇9场及以上连败还要追溯到2001年,当年11月24日至12月21日,火箭曾连续输掉15场比赛。目前,火箭的战绩为11胜
mil:https://www.ikjzd.com/w/1285
worldfirst:https://www.ikjzd.com/w/289
livingsocial:https://www.ikjzd.com/w/714.html
跨境电商 | 美国再发3万亿元补贴!跨境卖家爆单大赚又来了! :https://www.ikjzd.com/home/121973
OnerWay万唯:https://www.ikjzd.com/w/685
关于亚马逊广告,多的是你不知道的事!:https://www.ikjzd.com/home/132404

宠溺!篮网队内气氛有多好?欧文大笑找哈登被“无视”,后遭熊抱_杜兰特

原标题:宠溺!篮网队内气氛有多好?欧文大笑找哈登被"无视",后遭熊抱

NBA常规赛,魔术对阵篮网的比赛,我们再次看到了篮网队内良好的氛围。欧文大笑找哈登被"无视",随即换来的是一个大大的拥抱。

第三节暂停的时候,或许是优势太大,或许是打得太顺利,欧文此时已经笑得合不拢嘴,开始于队友拥抱。找到了哈登,结果一度被哈登"无视"。

欧文也并不生气,而回过神来的哈登赶紧将欧文搂在怀里。在1米96的哈登面前,1米88的欧文就像是一个孩子,被哈登疯狂"宠溺"着。

这就是现在的篮网,击碎了外界一切的质疑!赛季初,当欧文突然离队的情况下,外界认为,所谓双巨头只剩下杜兰特,篮网队内的问题很大。随后哈登来了,又有质疑的声音,哈登与欧文肯定不兼容!因为2人都要持球,而且都不是省油的灯。

很快,这个问题随着欧文让步迎刃而解。欧文让出控球后卫?是的,这位不可一世的控球高手,就是这么服哈登!可以说,这就是现在的篮网,不仅战斗力强,而且队内气氛很好。看看,杜兰特疯狂休息,球队继续赢球,"皆大欢喜"。也没有声音说,杜兰特拿着高薪休息?因为杜兰特的实力可以让人服气。也没有人说欧文出手权比哈登多?哈登也不说什么,他甘愿成为助攻的那一个,因为他明白欧文的得分能力。

这就是篮网,极佳的队内状态,从竞技层面到球员关系方面,无懈可击。本赛季,谁能击败这样一支球队?返回搜狐,查看更多

责任编辑:

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

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

敦煌网:https://www.ikjzd.com/w/189

周宁:https://www.ikjzd.com/w/1647


原标题:宠溺!篮网队内气氛有多好?欧文大笑找哈登被"无视",后遭熊抱NBA常规赛,魔术对阵篮网的比赛,我们再次看到了篮网队内良好的氛围。欧文大笑找哈登被"无视",随即换来的是一个大大的拥抱。第三节暂停的时候,或许是优势太大,或许是打得太顺利,欧文此时已经笑得合不拢嘴,开始于队友拥抱。找到了哈登,结果一度被哈登"无视"。欧文也并不生气,而回过神来的哈登赶紧将欧文搂在怀里。在1米96的哈登面前,1米8
贝贝特卖:https://www.ikjzd.com/w/1321
sca:https://www.ikjzd.com/w/2424
catch:https://www.ikjzd.com/w/832
这类review权重最高!常见的4种亚马逊review类型:https://www.ikjzd.com/home/59863
贸易摩擦影响逐渐显,全球运输先扬后抑电商包裹逆势上扬:https://www.ikjzd.com/home/110275
不要等关店了 ,才学店铺安全!:https://www.ikjzd.com/home/16458

Facebook发起新广告活动,以应对Apple即将更新的IDFA条款

苹果公司自去年夏季公布了随其iOS14系统的更新更改IDFA条款的计划以来,Facebook等社媒平台的"王牌"个性化广告便遭遇了当头一棒,引发了不少广告商和小企业主的担忧。

 

IDFA是指可被用来跟踪苹果用户的在线活动、并以此为依据来投放个性化广告的标识符。更新之后,苹果将提示用户有关其打开的每个应用程序收集的数据及其使用情况的具体信息,同时还提供了阻止任何应用程序进行此类跟踪的选项。

 

图片2.jpg


苹果调整IDFA政策的消息一经传出,Facebook这边在8月就警告称其Audience Network广告客户的广告发布效果将大打折扣,通过广告获得的收入也可能会下降50%以上,甚至血本无归。

 

虽然尚不清楚苹果的IDFA政策变更将带来什么程度的影响,但Facebook正在尽最大努力站稳脚跟,并帮助广告合作伙伴做好万全的准备。

 

12月公开抗议苹果预计将在今年"初春"进行IDFA隐私条款变更的过程中,Facebook表示:"也许Facebook需要向用户解释为什么它要收集这么多数据,以及为什么还要在未来继续收集,从而为他们提供更好的使用体验。"

 

因此,"说到做到"的Facebook在昨天发起了一个名为"Good Ideas Deserve to Be Found"的广告活动并添加了同名标签,以此来更好地解释为什么个性化广告是一件好事,以及为什么用户不应该关闭数据跟踪。


图片1.jpg


除了发起上述广告活动,Facebook还发布了能够帮助中小型企业进行广告营销的其他方法,包括:

 

简化Ads Manager,帮助卖家更轻松地开个性化营销

 

两项免费措施:一直到今年6月,企业可免费使用Checkout on Shops工具;Facebook将至少在2021年8月之前免收企业的付费在线活动产品的费用

 

开发人员提供新的"受限登录模式",以使他们能够继续收集一些用户数据,避免被新的IDFA提示完全封锁;

 

启动新的微型网站来为其Audience Network广告客户提供替代性的广告选项和工具。

 

Facebook表示,每个企业的创立起初都只是从一个想法开始,而个性化广告可以帮助中小型企业成为一个真正的"游戏规则改变者",苹果公司对个性化广告的限制将夺走企业至关重要的增长动力。

 

但是Facebook的"自救运动"能否取得成效还要看公众的态度,公众可能会相信继续允许数据跟踪能够帮助中小企业的发展 ,也可能会认为这只不过是帮助Facebook继续赚钱而已。




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

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

i号店:https://www.ikjzd.com/w/2263

modcloth:https://www.ikjzd.com/w/1271


苹果公司自去年夏季公布了随其iOS14系统的更新更改IDFA条款的计划以来,Facebook等社媒平台的"王牌"个性化广告便遭遇了当头一棒,引发了不少广告商和小企业主的担忧。IDFA是指可被用来跟踪苹果用户的在线活动、并以此为依据来投放个性化广告的标识符。更新之后,苹果将提示用户有关其打开的每个应用程序收集的数据及其使用情况的具体信息,同时还提供了阻止任何应用程序进行此类跟踪的选项。苹果调整IDF
香港会计师事务所:https://www.ikjzd.com/w/2434
易联通:https://www.ikjzd.com/w/1854.html
扬帆计划:https://www.ikjzd.com/w/1581
口述:色狼上司对我女友动手动脚:http://lady.shaoqun.com/m/a/2134.html
Amazon运营大神详细复盘公司团队新品推广实操全流程:https://www.ikjzd.com/home/125659
WeloveShopping:https://www.ikjzd.com/w/692

eBay卖家更新:持续发力垂直领域,不断优化管理支付

在一场出席人数超过900人的活动上,eBay北美市场高级副总裁兼总经理Jordan Sweetnam回顾了eBay在三个类别中的垂直战略,包括豪华手表、贸易卡和运动鞋,并表示,eBay下一步将采取垂直策略的类别包括漫画、硬币、邮票和乙烯基唱片。

 

Sweetnam放映的幻灯片中,eBay展现出了对垂直领域的关注和信心:高调激活垂直市场,只要够勇气迈出这一步,eBay就已经取得了胜利。

 

eBay北美地区的首席营销官兼卖方社区副总裁的Andrea Stairs在Zoom会议期间表示,eBay正在与三个领域中有影响力的人合作,而在这三个领域中,eBay一直专注于开发新的垂直方式。

 

eBay还致力于在包括TikTok和Reddit在内的新地方吸引流量,其中Twitch是eBay正在测试和试验的新平台, Stairs表示,eBay正在加强自己讲故事的能力来努力吸引更年轻的用户。

 

除了垂直领域,付款服务副总裁Keala Gaines还在会上提供了有关管理支付的最新信息,称eBay会努力加快向卖家的付款速度。管理支付服务推广之前,卖家可以立即在他们的PayPal账户收到款项,而管理支付向卖家支付的付款时间则维持在了2-4天的时间段里。Keala Gaines表示,银行通过ACH网络转移资金的速度超出了eBay的完全控制范围,但eBay正在努力优化向银行发送批货时的截止时间等事项。

 

Gaines表示,管理支付的推广将在2021年底基本完成,但eBay将在2022年及以后继续发布新功能,并根据客户需求增强支付平台。

 

全球客户服务高级总监Hazel Mitchell向卖家做出了大胆承诺:在未来几周内,等待客户服务的时间将会缩短。她还宣布eBay即将推出一种创新的客户服务模式——它允许eBay最畅销的卖家通过帮助其他eBay卖家成功销售来赚取额外的美元。"我们将把专业卖家和新卖家联系起来,"她说。

 

卖方体验部副总裁Harry Temkin则谈到了新的统一列表工具,称该工具仍处于beta测试中,而eBay正在收集卖方反馈。他提醒卖家注意listing中写明"物品详细信息"(产品属性)的重要性,以确保最大程度的搜索可见性。Temkin还表示,借助新的统一列表工具,eBay的图像清理工具将适用于台式机用户(目前仅在移动设备中可用)。





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

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

跨境通电子商务:https://www.ikjzd.com/w/1329

跨境通:https://www.ikjzd.com/w/1329


在一场出席人数超过900人的活动上,eBay北美市场高级副总裁兼总经理JordanSweetnam回顾了eBay在三个类别中的垂直战略,包括豪华手表、贸易卡和运动鞋,并表示,eBay下一步将采取垂直策略的类别包括漫画、硬币、邮票和乙烯基唱片。在Sweetnam放映的幻灯片中,eBay展现出了对垂直领域的关注和信心:高调激活垂直市场,只要够勇气迈出这一步,eBay就已经取得了胜利。eBay北美地区的
母婴团购网:https://www.ikjzd.com/w/716
crowd:https://www.ikjzd.com/w/880
ebay易趣:https://www.ikjzd.com/w/210
日本乐天正精心布局一盘大棋:反击亚马逊、软银:https://www.ikjzd.com/home/98004
Shopee发布Q1财报:2019年第一季度GMV达35亿美元!:https://www.ikjzd.com/home/95883
【教程】亚马逊Search Term是什么,亚马逊Search Terms该怎么填写:https://www.ikjzd.com/tl/6399

SpringBoot 整合 Shiro 密码登录

  • 导入依赖(pom.

  <!--整合Shiro安全框架-->  <dependency>   <groupId>org.apache.shiro</groupId>   <artifactId>shiro-spring</artifactId>   <version>1.4.0</version>  </dependency>  <!--集成jwt实现token认证-->  <dependency>   <groupId>com.auth0</groupId>   <artifactId>java-jwt</artifactId>   <version>3.2.0</version>  </dependency>

  • 创建 ShiroConfig 配置类

@Configurationpublic class ShiroConfig { /**  * ShiroFilterFactoryBean  */ @Bean public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebSecurityManager) {  ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();  //设置安全管理器  factoryBean.setSecurityManager(defaultWebSecurityManager);  // 添加shiro的内置过滤器  /*   * anon:无需认证就可以访问   * authc:必须认证才能访问   * user:必须拥有 记住我 功能才能用   * perms:拥有对某个资源的权限能访问   * role:拥有某个角色权限能访问   */  Map<String, String> filterMap = new LinkedHashMap<>();  // 放行不需要权限认证的接口  //放行登录接口  filterMap.put("/login/**", "anon");  //放行用户接口  filterMap.put("/", "anon");    // 网站首页   //认证管理员接口  filterMap.put("/administrators/**", "authc");  factoryBean.setFilterChainDefinitionMap(filterMap);  // 设置无权限时跳转的 url  // 设置登录的请求  factoryBean.setLoginUrl("/login/toLogin");  return factoryBean; } /**  * 注入 DefaultWebSecurityManager  */ @Bean(name = "securityManager") public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("customRealm") CustomRealm customRealm) {  DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();  //关联CustomRealm  securityManager.setRealm(customRealm);  return securityManager; } /**  * 注入 securityManager  */ @Bean public CustomRealm customRealm() {  return new CustomRealm(); }}

  • 创建密码登录时验证授权 CustomRealm 类

@Componentpublic class CustomRealm extends AuthorizingRealm { @Autowired AdministratorsService administratorsService; /*  * 设置加密方式  */ {  HashedCredentialsMatcher mather = new HashedCredentialsMatcher();  // 加密方式  mather.setHashAlgorithmName("md5");  // 密码进行一次运算  mather.setHashIterations(512);  this.setCredentialsMatcher(mather); } /**  * 授权  */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {  System.out.println("————授权————doGetAuthorizationInfo————");  return null; } /**  * 认证  */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {  System.out.println("————认证————doGetAuthenticationInfo————");  UsernamePasswordToken userToken = (UsernamePasswordToken) token;  // 连接数据库 查询用户数据  QueryWrapper<Administrators> wrapper = new QueryWrapper<>();  wrapper.eq("username", userToken.getUsername());  Administrators administrators = administratorsService.getOne(wrapper);  if (administrators == null) {   return null; // 抛出异常 UnknownAccountException  }  // 密码认证,shiro做  return new SimpleAuthenticationInfo("", administrators.getPassword(), ""); }}

  • 控制层用户密码登录

//用户名登录 @ApiOperation(value = "管理员登录", notes = "用户名登录--不进行拦截") @PostMapping("/doLogin") public String doLogin(@RequestParam("username") String username,       @RequestParam("password") String password,       HttpSession session,Model model) {  // 获取当前的用户  Subject subject = SecurityUtils.getSubject();  // 封装用户的登录数据  UsernamePasswordToken token = new UsernamePasswordToken(username, password);  try {   subject.login(token);   //保存session会话 管理员名字   session.setAttribute("adname", username);   return "admin";  } catch (UnknownAccountException e) {   model.addAttribute("usererror", "用户名错误!请重新输入。");   return "login";  } catch (IncorrectCredentialsException ice) {   model.addAttribute("pwerror", "密码错误!请重新输入。");   return "login";  } }

SpringBoot 整合 Shiro 密码登录

 









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

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

瀚霖:https://www.ikjzd.com/w/2345

shirley:https://www.ikjzd.com/w/1684


导入依赖(pom.<!--整合Shiro安全框架--><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.4.0</version></dependency&g
net a porter:https://www.ikjzd.com/w/2132
gtc:https://www.ikjzd.com/w/974
55海淘:https://www.ikjzd.com/w/1723
中国跨境电商高峰论坛暨鼎堃跨境电商俱乐部年会:https://www.kjyunke.com/courses/27
姐夫呼吁竞争对手匹配亚马逊的薪酬和福利,沃尔玛喊话:你啥时候把税交了?:https://www.ikjzd.com/home/21963
解密!古怪狂人贝佐斯是如何成就亚马逊电商巨头的?:https://www.ikjzd.com/home/112921

站内流量跟不上?试试站外引流冲销量!


刚上新品的时候,虽说亚马逊会给一个名义上的新品流量扶持期,但是总的还是根据订单和转化率来分配,流量增加较慢,对于想短期快速增加流量和销量的卖家不妨尝试站外引流辅助冲排名,加上站内的手段,能让新品更快速的成长,达到自己想要的排名和销量。

站外引流的方式主要是国外社交媒体如Facebook、Twitter、pinterest、Youtube和各种deal网站,本次呢主要想跟大家聊聊deal网站,像国内的促销网站一样,国外也有大量的本土促销网站。相信很多卖家的微信好友里,或多或少都有几个做站外deal的服务商,但每参加一次deal,费用都要几百块甚至上千块,而且效果还不一定能达到自己的预期。自己学会怎么找deal网站,掌握资源的源头,才能更好的把控自己的推广进度,不至于处在被动的位置。
评估一个deal网站的可行性之前,首先要清楚地知道这几点:
1. 如何合作?比如有些网站就是直接发帖,有些网站要先联系管理员,通过审核后才能由管理员上传帖子,有些是要联系编辑,审查产品和折扣力度后确定收费标准付费后才能发布帖子。
2. 需要达到什么条件才能发帖? 比如注册账号可发帖的等级要求,对于付费网站则需要了解收费标准,有些网站甚至要参考店铺等级和产品状况等等。
3.Deal站新贴更新频率如何? 网站那么多,那必然网站质量也良莠不齐。对于自己觉得可以发帖的网站,要注意观察网站帖子更新频率如何,置顶帖子可以停留多少时间,可以产生多少热度,这些都是需要了解的,因为这直接影响到站外的效果。
4.哪些品牌已经在上面发帖了?通过对网站上已有品牌的分析,可以初步判断自己的产品是否适合,也能看看竞争对手的情况,同时也能对网站促销效果有个大致了解。
 5.主要是哪些类目? 排在首页的是什么类目?了解这个点的意图,第一也是想知道这个网站更适合什么产品,第二是对自己产品类目的深挖也有一定的帮助。
这些都是需要自己去联系或者分析的,另外给大家分享一个网站:https://www.alexa.com/siteinfo/。在这个网站里,可以对你所查询的deal网站给出一些比较详细的分析数据,在决定分析某个deal网站之前先查询一下,可以对网站有个整体的了解,然后再根据上述几点去细致分析。

(来源:AMZ跨境不求人)

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

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

声网agora:https://www.ikjzd.com/w/2176

asiabill:https://www.ikjzd.com/w/1014

谷歌趋势:https://www.ikjzd.com/w/397

站内流量跟不上?试试站外引流冲销量!

刚上新品的时候,虽说亚马逊会给一个名义上的新品流量扶持期,但是总的还是根据订单和转化率来分配,流量增加较慢,对于想短期快速增加流量和销量的卖家不妨尝试站外引流辅助冲排名,加上站内的手段,能让新品更快速的成长,达到自己想要的排名和销量。站外引流的方式主要是国外社交媒体如Facebo

月经期怎么补血

核心提示:正常女性每个月都会有月经,会造成失血

正常女性每个月都会有月经,会造成失血。所以女性朋友每个月要补血量,女性朋友补血时可以选择补充食物。如果他们选择正确的食物,他们会有好的结果。那么月经吃什么补血?今天这篇文章来做介绍。

月经吃什么补血

红枣,这是一种非常有效的补血食物。红枣是一种温暖的食物,食用后可以改善人体血液循环,而且吃红枣还能增加血液中的红细胞含量,让女性朋友的脸色变得红润。

红糖,红糖具有补气、消食、补血的功效,还能散寒止痛。喝红糖水对女性来说可以使月经顺畅。女性朋友经期喝红糖水,对身体有好处。

胡萝卜,胡萝卜含有大量的萝卜,胡萝卜素有很好的补血作用。女性经期每天喝一碗胡萝卜汤,可以补血益气。

红米,红米富含蛋白质,可以补充人体能量。吃红米还可以补充体力,帮助维持体温。此外,红米富含铁,铁是造血不可缺少的元素。因此,红曲具有良好的补血和预防贫血的作用。

冬瓜,它的价格也很便宜。其实冬瓜有很好的养颜补血作用,热量、维生素、矿物质元素、碳水化合物、蛋白质等含量都很低。这是一种对健康非常有益的食物。月经来了可以熬冬瓜汤喝,补血效果好。


阿胶,没有不知道阿胶的女人。以益气补血著称,是女性经期补血的好产品。吃阿胶不仅可以在经期补血,平时也可以经常吃。经常吃阿胶,可以缓解气血虚弱,慢慢改善女性的容貌,使女性的肤色暗沉、黄褐斑得到很好的缓解。而且吃阿胶还可以调节女性月经不调、头晕、乏力等症状。

南瓜,南瓜含有必需氨基酸,如钙、锌、铁、钴、磷等。钴可以帮助血液中的红细胞正常运转,锌会直接影响红细胞的功能,铁是产生血红蛋白的基本微量元素之一。

龙眼肉,桂圆肉是孕妇和产妇补充气血的最佳食物。龙眼含有维生素A、B、葡萄糖、蔗糖和大量铁。可以直接买新鲜的桂圆当水果,也可以用桂圆干煮汤,但是桂圆内热大,不宜过度使用。


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

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

点通:https://www.ikjzd.com/w/1913

联动优势:https://www.ikjzd.com/w/1921


核心提示:正常女性每个月都会有月经,会造成失血 正常女性每个月都会有月经,会造成失血。所以女性朋友每个月要补血量,女性朋友补血时可以选择补充食物。如果他们选择正确的食物,他们会有好的结果。那么月经吃什么补血?今天这篇文章来做介绍。月经吃什么补血红枣,这是一种非常有效的补血食物。红枣是一种温暖的食物,食用后可以改善人体血液循环,而且吃红枣还能增加血液中的红细胞含量,让女性朋友的脸色变得红润。红糖,红
败欧洲运费:https://www.ikjzd.com/w/1555
洋老板:https://www.ikjzd.com/w/2779
writer:https://www.ikjzd.com/w/1280
口述:同居五年他仍不愿结婚(图)(4/4):http://lady.shaoqun.com/m/a/40043.html
花1万美元上搜索首页,亚马逊算法被"玩坏"了:https://www.ikjzd.com/home/108524
(精品分析)亚马逊德国站男装上衣类目市场调查数据报告:https://www.ikjzd.com/home/91616

SpringBoot 文件或图片上传与下载

  • 导入依赖(pom.

     <!-- 上传下载需要设计到的jar包 -->  <dependency>   <groupId>commons-io</groupId>   <artifactId>commons-io</artifactId>   <version>2.6</version>  </dependency>  <dependency>   <groupId>commons-fileupload</groupId>   <artifactId>commons-fileupload</artifactId>   <version>1.3.3</version>  </dependency>  <!--servlet-api导入高版本的-->  <dependency>   <groupId>javax.servlet</groupId>   <artifactId>javax.servlet-api</artifactId>   <version>4.0.1</version>  </dependency>  <!-- 图片处理类 -->  <dependency>   <groupId>net.coobird</groupId>   <artifactId>thumbnailator</artifactId>   <version>0.4.8</version>  </dependency>

  • 全局配置 application.properties

# 上传文件大小spring.servlet.multipart.max-file-size=5MBspring.servlet.multipart.max-request-size=5MB

  • 创建 WebMvcConfig 配置类  静态资源映射

@Configurationpublic class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) {  ApplicationHome h = new ApplicationHome(getClass());  File jarF = h.getSource();  String dirPath = jarF.getParentFile().toString()+"/upload/";  String os = System.getProperty("os.name");  if (os.toLowerCase().startsWith("win")) { //如果是Windows系统   registry.addResourceHandler("/upload/**").addResourceLocations("file:"+dirPath);  } else {   registry.addResourceHandler("/upload/**").addResourceLocations("file:"+dirPath);  } }}

  • 文件或图片上传

  • 控制层
// 上传文件 @ResponseBody @RequestMapping("/upload") public String fileUpload(@RequestParam("files") MultipartFile files) throws IOException {//  // win系统 上传路径保存设置//  // 获取项目路径//  File projectPath = new File(ResourceUtils.getURL("classpath:").getPath());//  // 绝对路径=项目路径+自定义路径//  File pathFile = new File(projectPath.getAbsolutePath(), "static/upload/");//  if (!pathFile.exists()) {//   pathFile.mkdirs();//  }//  //上传文件地址//  UUID uuid = UUID.randomUUID();//  File serverFile = new File(pathFile, uuid + "_" + files.getOriginalFilename());//  files.transferTo(serverFile);////  String imgPath = ("/upload/" + uuid + "_" + files.getOriginalFilename()).replace("\\", "/");////  return imgPath;  // Linux服务器 上传路径保存设置  // 项目路径 /home/www/  File pathFile = new File("/home/www/upload/");  if (!pathFile.exists()) {   pathFile.mkdirs();  }  //上传文件地址  UUID uuid = UUID.randomUUID();  File serverFile = new File(pathFile, uuid + "_" + files.getOriginalFilename());  files.transferTo(serverFile);  String imgPath = ("/upload/" + uuid + "_" + files.getOriginalFilename()).replace("\\", "/");  return imgPath; }

  • HTML页面    Ajax 无刷新上传 

<form action="" class="layui-form" enctype="multipart/form-data" method="post">  <input type="hidden" name="blogImg" id="imgPath" value="">  <div class="form-group">    <label>图片上传</label>    <input type='file' style='margin: 5px;' name='files' required><br>    <button type="button" class="layui-btn" id="img_upload">上传图片</button>  </div>  <input type="submit"></form>

  • JS

//普通图片上传  $('#img_upload').click(function () {   var formData = new FormData();   //获取选择的文件   $.each($('input[name="files"]'),function (index,item) {    formData.append("files",item.files[0])   });   //发送异步请求   $.ajax({    method:'post',    url: '[[@{/user/upload}]]', // 文件上传接口    data:formData,    processData: false,    contentType:false,    success:function (data) {     //成功返回触发的方法     $('#imgPath').val(data);     alert("上传成功");    },    //请求失败触发的方法    error:function () {     alert("上传失败");    }   });  });

  • 文件或图片下载

  • 控制层
@RequestMapping(value="/download")public String downloads(HttpServletResponse response ,HttpServletRequest request) throws Exception{ //要下载的图片地址 String path = request.getServletContext().getRealPath("/upload"); String fileName = "基础语法.jpg"; //1、设置response 响应头 response.reset(); //设置页面不缓存,清空buffer response.setCharacterEncoding("UTF-8"); //字符编码 response.setContentType("multipart/form-data"); //二进制传输数据 //设置响应头 response.setHeader("Content-Disposition",   "attachment;fileName="+URLEncoder.encode(fileName, "UTF-8")); File file = new File(path,fileName); //2、 读取文件--输入流 InputStream input=new FileInputStream(file); //3、 写出文件--输出流 OutputStream out = response.getOutputStream(); byte[] buff =new byte[1024]; int index=0; //4、执行 写出操作 while((index= input.read(buff))!= -1){  out.write(buff, 0, index);  out.flush(); } out.close(); input.close(); return null;}

  • HTML页面  

<a href="/download">点击下载</a>

  • SpringBoot 文件或图片上传与下载就可以了 

 

 

参考资料:狂神说SpringMVC:文件上传下载









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

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

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

hemingway:https://www.ikjzd.com/w/2344


导入依赖(pom.    <!--上传下载需要设计到的jar包--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>&
虚拟信用卡:https://www.ikjzd.com/w/1055
海鹰数据:https://www.ikjzd.com/w/2539
ebay易趣:https://www.ikjzd.com/w/210
做亚马逊拥有这些工具,运营水平迅速上升一个level!:https://www.ikjzd.com/home/138755
口述:女邻居爱爱太高调每晚都叫:http://lady.shaoqun.com/m/a/18818.html
新纪录!2018天猫双11物流订单超10亿个!:https://www.ikjzd.com/home/10573

2021年2月25日星期四

反转!特谢拉有望接受400万年薪条件:成为国足最强归化!_欧元

原标题:反转!特谢拉有望接受400万年薪条件:成为国足最强归化!

李铁目前参加了多场英超联赛的解说引发争议,而外界最关心的其实还是他带领国足的成绩,今年李铁就将率领多名归化国脚出征世预赛40强赛,而对于李铁来说,他也面临着巨大的成绩压力,相比于现有归化国脚,特谢拉无疑是外界最期待的"国足最强归化"!虽然此前特谢拉与中国足球渐行渐远,但是随着沙特联赛转会窗关闭,记者爆料特谢拉有望迎来反转,接受400万年薪归化条件!

众所周知,特谢拉在中国已经待满5年,他也完全符合中国男足的归化条件,只要他点头同意,他就能迅速办理入籍手续,获得国际足联审核,并且代表国足出战国际比赛。然而,上赛季结束后,他与江苏队合同到期,他的经纪团队也开出了4年8000万欧元的天价归化条件,这也直接吓退了不少买家,特谢拉团队开始将目光投向西亚足坛!

然而,在西亚赛场,特谢拉团队开出的年薪800万欧元要求都没有能够实现,而看上特谢拉的利雅得新月也只开出了年薪600万欧元的报价。随着时间的推移,现在沙特联赛转会窗截止日到来,特谢拉团队没能在这次谈判中取胜,反而消磨掉了西亚人所有耐心。现在,特谢拉在欧洲没有市场,而他只有巴西不高于300万欧元的选择以及中国市场最后的机会!

相比于特谢拉团队此前的超高预期以及一度拒绝600万欧元的雄心壮志,记者寒冰爆料,特谢拉现在无法接受巴西国内撑死300万欧元的报价,而中超联赛成为特谢拉最后的机会,毕竟他留在中国还能实现归化!据记者透露消息,中超潜在买家此前提供了500万欧年薪的归化条件,而现在中超的萧条背景下,这个条件可能会有所降低!

寒冰还表示,特谢拉早在去年下半年曾一度考虑接受400万欧年薪报价,当时他的经纪人还没有那么大的野心和贪念,毫无疑问,现在只剩下中国一条道路选择的特谢拉,400万欧左右的年薪待遇或是他能获得的最高条件,并且还需要通过足协"特谢拉条款"来实现!不得不说,在经历了一番周折后,或许我们将真正迎来国足史上最强归化了!(老邱 中超球评)返回搜狐,查看更多

责任编辑:

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

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

mymall:https://www.ikjzd.com/w/1050

跨境通电子商务网站:https://www.ikjzd.com/w/1329


原标题:反转!特谢拉有望接受400万年薪条件:成为国足最强归化!李铁目前参加了多场英超联赛的解说引发争议,而外界最关心的其实还是他带领国足的成绩,今年李铁就将率领多名归化国脚出征世预赛40强赛,而对于李铁来说,他也面临着巨大的成绩压力,相比于现有归化国脚,特谢拉无疑是外界最期待的"国足最强归化"!虽然此前特谢拉与中国足球渐行渐远,但是随着沙特联赛转会窗关闭,记者爆料特谢拉有望迎来反转,接受400万
e淘网:https://www.ikjzd.com/w/1698
c-tick认证:https://www.ikjzd.com/w/2074
cima是什么:https://www.ikjzd.com/w/1372
亚马逊的日常运营实用工具:https://www.ikjzd.com/home/16156
易仓erp:https://www.ikjzd.com/w/1420
口述:老婆当裸模是为帮我还债 原谅她吗裸模老婆女人:http://lady.shaoqun.com/m/a/25387.html

包裹配送出新模式啦!日本亚马逊解锁2021新趋势

据悉,2月25日亚马逊将在日本启动"Key for Business"新功能,为公寓推出一项新的"送货"服务,并提供公寓自动锁定功能。

 

"Key for Business"翻译为商业钥匙它允许亚马逊送货员使用专用终端打开公寓等集体住宅的自动锁,并将包裹放在玄关处。

 

根据亚马逊的介绍,该系统可以"改装"现有的自动锁

 

据了解,在与Daito Trust Construction和Sohgo Security Services(ALSOK)合作,计划在服务启动时将其引入200个公寓中之后开始在全国范围扩张。

 

"Key for Business"可以在现有的自动锁定设备中设置无线终端(例如小型调制解调器)来引入业务密钥。

 

不过,令人担心的是,虽然是亚马逊的送货员,但可以自由出入公寓,这样真的没问题吗?

 

根据亚马逊代表的说法,"Key for Business"允许送货司机仅在将包裹运送到公寓的情况下临时"自动锁定和解锁"交付完成后,它将与亚马逊的送货状态系统链接,"自动解锁"会过期,无法进入建筑物。

 

从合作伙伴是Daito Trust Construction和ALSOK可以看出,亚马逊最初将其开发为出租公寓的服务。不过,亚马逊负责人表示,将来还会考虑在商品房等领域引入该技术。

 

"Key for Business"设想的是集体玄关有自动锁,在电梯需要专用卡钥匙的情况下不能使用。此外,它不能由Kuroneko Yamato等物流合作伙伴用于送货上门服务,只能在显示为"运输公司:Amazon"时使用。

 

此外,大和运输有限公司于2月24日宣布,将开始" EAZY"的实际实验,将实验自动锁定公寓的放置。

 

虽然与亚马逊的合作还是未知数,但减少再配送、提高物流效率的举措在公寓领域推广开来,这可以说是2021年的新发展趋势。





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

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

asiabill:https://www.ikjzd.com/w/1014

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


据悉,2月25日,亚马逊将在在日本启动"KeyforBusiness"新功能,为公寓推出一项新的"送货"服务,并提供公寓自动锁定功能。"KeyforBusiness"翻译为商业钥匙,它允许亚马逊送货员使用专用终端打开公寓等集体住宅的自动锁,并将包裹放在玄关处。根据亚马逊的介绍,该系统可以"改装"到现有的自动锁上。据了解,在与DaitoTrustConstruction和SohgoSecurityS
美菜网:https://www.ikjzd.com/w/1874
乐一番:https://www.ikjzd.com/w/1562
福茂:https://www.ikjzd.com/w/1633
最新无良操作!listing半夜突然消失,订单暴跌,小心被搞!:https://www.ikjzd.com/home/2253
2020做外贸是打工还是自己创业好?:https://www.ikjzd.com/home/114121
亚马逊产品价格的设计办法:https://www.ikjzd.com/home/20574

分类广告网Avito上线电商功能,瓜分俄罗斯2千亿元电商市场

Avito创立于2007年,是俄罗斯最受欢迎的分类广告网站,是一个专门展示商品、工作、租房、汽车、宠物等出售广告的平台。平台只提供展示,所有交易由买卖双方通过其他渠道完成。

 

此次测试的电商功能,Avito将接受卖家入驻,并将向他们收取佣金。Avito计划在三到五年内成为俄罗斯电商市场的头部玩家。但有专家表示如果Avito要与Wildberries、Ozon等竞争,还需要更大的投入和努力

 

INFOLine Analytics数据显示,2020年俄罗斯电商市场总体规模约为2.7万亿卢布(约2371亿人民币)。线上销售方面,2020年上半年Wildberries、Ozon和DNS三者占据了21.3%的市场份额。

 

目前,Avito已经对电商功能着手测试,已经有200家左右的卖家在平台上进行销售测试。Avito计划在今年年底前扩大这一规模。根据Mediascope的数据,2020年11月Avito在俄罗斯的用户达4040万人。这一庞大的用户基础,将有益于发展其电商功能。

 

上线电商功能后,Avito将继续保持原先的分类广告模式,因为用户投放和推广广告是该公司收入的主要来源。

 

就为何推出电商功能这一问题,Avito总经理阿列克谢·库拉金(Alexey Kurakin)解释道,由于疫情影响,Avito许多用户都流向了其他电商平台,推出电商功能的主要目的是留住用户。其次,Avito希望电商功能可以增加该公司的收入和商业价值。

 

推出电商功能是俄罗斯互联网企业去年至今的一大"喜好"。去年年底,俄罗斯互联网巨头Yandex旗下的比价购物平台Yandex.Market上线了电商功能。并在1月表示,将优先展示那些入驻卖家的产品信息,一度引起用户的抵制。

 

Avito这一举措也不被专家看好。INFOLine Analytics认为,Avito进入电商领域已经有点晚。而且其他电商平台有能力补贴物流,Avito这方面的资源还很欠缺。同时,Avito还将面临另一个大挑战——如何与大卖家建立关系并维持。

 

短期内看Avito很难在俄罗斯电商市场分上一杯羹。眼下,Avito应该着眼于现存问题并考虑如何解决。




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

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

邓白氏集团:https://www.ikjzd.com/w/582

c79:https://www.ikjzd.com/w/1016


Avito创立于2007年,是俄罗斯最受欢迎的分类广告网站,是一个专门展示商品、工作、租房、汽车、宠物等出售广告的平台。平台只提供展示,所有交易由买卖双方通过其他渠道完成。此次测试的电商功能,Avito将接受卖家入驻,并将向他们收取佣金。Avito计划在三到五年内成为俄罗斯电商市场的头部玩家。但有专家表示如果Avito要与Wildberries、Ozon等竞争,还需要更大的投入和努力。INFOLi
雨果网:https://www.ikjzd.com/w/1307
海淘贝:https://www.ikjzd.com/w/1726
友家速递:https://www.ikjzd.com/w/1341
跨境电商平台疯狂"刷单"走私,涉案金额达4亿多人民币:https://www.ikjzd.com/home/22823
2019外贸旺季,业务员要做些什么?:https://www.ikjzd.com/home/107031
eBay卖家请注意:只能通过eBay支付给物流供应商付款!:https://www.ikjzd.com/home/10020

[20210225]控制文件序列号满的恢复.txt

[20210225]控制文件序列号满的恢复.txt

--//继续昨天的测试,今天主要是测试恢复.
--//我想给自己增加一点点难度,就是使用noresetlogs打开,因为这样重建的控制文件要读取redo,数据文件重新
--//回填一些信息,实际上resetlogs也类似,但是noresetlogs回填的控制文件seq很大,一样打不开数据库.
--//也就是必须提到我前面要修改的数据文件以及redo文件的几个偏移位置.

1.环境:
SCOTT@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

--//首先做一个冷备份便于重复测试:
$ cp /mnt/ramdisk/book/*.* /u01/tmp/
*/

2.首先注意要修改的位置:
$ seq 6 | xargs -IQ echo "p dba Q,1  kcvfh.kcvfhhdr.kccfhcsq" | rlbbed| grep kccfhcsq
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
BBED> ub4 kccfhcsq                                @40       0xffffffff
--//数据文件块1的偏移40的位置.

$ seq 501 503 | xargs -IQ echo "dump /v dba Q,1 offset 36 count 8" | rlbbed | grep 00900100
 f8ffffff 00900100                                                       l ........
 fcffffff 00900100                                                       l ........
 fcffffff 00900100                                                       l ........
--//redo文件的位置.

$ echo 15,17,281,319 | tr ',' '\n' | xargs -IQ echo -e 'set dba 101,Q\ndump /v offset 8 count 8'  | rlbbed | grep -C2 "\-\-"
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 15                                Offsets:    8 to   15                            Dba:0x1940000f
-----------------------------------------------------------------------------------------------------------
 ffffffff ffff0104                                                       l ........

--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 17                                Offsets:    8 to   15                            Dba:0x19400011
-----------------------------------------------------------------------------------------------------------
 ffffffff ffff0104                                                       l ........

--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 281                               Offsets:    8 to   15                            Dba:0x19400119
-----------------------------------------------------------------------------------------------------------
 85ffffff ffff0104                                                       l ........

--
BBED>  File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 319                               Offsets:    8 to   15                            Dba:0x1940013f
-----------------------------------------------------------------------------------------------------------
 83ffffff ffff0104                                                       l ........

--//控制文件的位置,以上内容是昨天的分析.控制文件的修改比较麻烦我重建使用noresetlogs建立,主要这样修改我不确定这样操作是否
--//会遗漏.

3.修改脚本准备:
$ seq 6 | xargs -IQ echo -e "assign dba Q,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000\nsum apply dba Q,1"
assign dba 1,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 1,1
assign dba 2,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 2,1
assign dba 3,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 3,1
assign dba 4,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 4,1
assign dba 5,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 5,1
assign dba 6,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 6,1

--//手工执行如上命令.如果不想手工执行,必须在第2行加上Y,这样可以通过管道执行.
$ cat aa.txt
assign dba 1,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
Y
sum apply dba 1,1
assign dba 2,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 2,1
assign dba 3,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 3,1
assign dba 4,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 4,1
assign dba 5,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 5,1
assign dba 6,1  kcvfh.kcvfhhdr.kccfhcsq=0x77770000
sum apply dba 6,1

--//修改redo文件:
$ seq 501 503 | xargs -IQ echo -e "modify /x 77770000 dba Q,1 offset 36\nsum apply dba Q,1"
modify /x 77770000 dba 501,1 offset 36
sum apply dba 501,1
modify /x 77770000 dba 502,1 offset 36
sum apply dba 502,1
modify /x 77770000 dba 503,1 offset 36
sum apply dba 503,1

--//我按照输出修改如下:
$ cat bb.txt
modify /x 17770000 dba 501,1 offset 36
Y
sum apply dba 501,1
modify /x 57770000 dba 502,1 offset 36
sum apply dba 502,1
modify /x 37777000 dba 503,1 offset 36
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sum apply dba 503,1

--//注:下划线的地方我修改错误.

4.建立建立控制文件脚本:
--//这个过程略,在mount阶段(不能使用当前的控制文件,可以使用备份的控制文件),执行alter database backup controlfile to trace.
--//也可以手工建立:
$ cat /tmp/aa.txt
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "BOOK" NORESETLOGS FORCE LOGGING ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/mnt/ramdisk/book/redo01.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 '/mnt/ramdisk/book/redo02.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 '/mnt/ramdisk/book/redo03.log'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
--   GROUP 4 '/mnt/ramdisk/book/redostb01.log'  SIZE 50M BLOCKSIZE 512,
--   GROUP 5 '/mnt/ramdisk/book/redostb02.log'  SIZE 50M BLOCKSIZE 512,
--   GROUP 6 '/mnt/ramdisk/book/redostb03.log'  SIZE 50M BLOCKSIZE 512,
--   GROUP 7 '/mnt/ramdisk/book/redostb04.log'  SIZE 50M BLOCKSIZE 512
DATAFILE
  '/mnt/ramdisk/book/system01.dbf',
  '/mnt/ramdisk/book/sysaux01.dbf',
  '/mnt/ramdisk/book/undotbs01.dbf',
  '/mnt/ramdisk/book/users01.dbf',
  '/mnt/ramdisk/book/example01.dbf',
  '/mnt/ramdisk/book/tea01.dbf'
CHARACTER SET ZHS16GBK
;

5.开始恢复:
$ cat aa.txt | rlbbed
$ cat bb.txt | rlbbed
--//输出略.
--//检查:
$ seq 6 | xargs -IQ echo "p dba Q,1  kcvfh.kcvfhhdr.kccfhcsq" | rlbbed| grep kccfhcsq
BBED> ub4 kccfhcsq                                @40       0x77770000
BBED> ub4 kccfhcsq                                @40       0x77770000
BBED> ub4 kccfhcsq                                @40       0x77770000
BBED> ub4 kccfhcsq                                @40       0x77770000
BBED> ub4 kccfhcsq                                @40       0x77770000
BBED> ub4 kccfhcsq                                @40       0x77770000

$ seq 501 503 | xargs -IQ echo "dump /v dba Q,1 offset 36 count 8" | rlbbed | grep 00900100
 17770000 00900100                                                       l .w......
 57770000 00900100                                                       l Ww......
 37777000 00900100                                                       l 7wp.....
 ~~~~~~~~~~
--//这里输入错误.

--//建立控制文件.
SYS@book> @ /tmp/aa.txt
ORACLE instance started.

Total System Global Area  643084288 bytes
Fixed Size                  2255872 bytes
Variable Size             205521920 bytes
Database Buffers          427819008 bytes
Redo Buffers                7487488 bytes

Control file created.

$ dbv file=/mnt/ramdisk/book/control01.ctl blocksize=16384
DBVERIFY: Release 11.2.0.4.0 - Production on Thu Feb 25 09:19:00 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
DBVERIFY - Verification starting : FILE = /mnt/ramdisk/book/control01.ctl
DBVERIFY - Verification complete
Total Pages Examined         : 614
Total Pages Processed (Data) : 0
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 29
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 585
Total Pages Marked Corrupt   : 0
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 2004287491 (65535.2004287491)

--//2004287491 = 0x77770003.
--//昏后面的3从哪里跑出来的,估计哪里搞错了.

BBED> dump /v   dba 101,1 Offset 40 count 8
 File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                 Offsets:   40 to   47                            Dba:0x19400001
-----------------------------------------------------------------------------------------------------------
 04007777 66020000                                                       l ..wwf...
 <32 bytes per line>

--//昏前面的修改错误.大小头问题搞晕了.bbed的修改应该是0x00007777,所以做这类恢复工作要小心小心在小心.前面的检查也没注意.
--//还有就是redo修改脚本也存在错误.

$ cat aa.txt
assign dba 1,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
Y
sum apply dba 1,1
assign dba 2,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 2,1
assign dba 3,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 3,1
assign dba 4,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 4,1
assign dba 5,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 5,1
assign dba 6,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 6,1

$ cat aa.txt | rlbbed
$ seq 6 | xargs -IQ echo "p dba Q,1  kcvfh.kcvfhhdr.kccfhcsq" | rlbbed| grep kccfhcsq
BBED> ub4 kccfhcsq                                @40       0x00007777
BBED> ub4 kccfhcsq                                @40       0x00007777
BBED> ub4 kccfhcsq                                @40       0x00007777
BBED> ub4 kccfhcsq                                @40       0x00007777
BBED> ub4 kccfhcsq                                @40       0x00007777
BBED> ub4 kccfhcsq                                @40       0x00007777

--//建立控制文件的步骤从来.
SYS@book> @ /tmp/aa.txt
ORACLE instance started.
Total System Global Area  643084288 bytes
Fixed Size                  2255872 bytes
Variable Size             205521920 bytes
Database Buffers          427819008 bytes
Redo Buffers                7487488 bytes
Control file created.

$ dbv file=/mnt/ramdisk/book/control01.ctl blocksize=16384
DBVERIFY: Release 11.2.0.4.0 - Production on Thu Feb 25 09:28:18 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
DBVERIFY - Verification starting : FILE = /mnt/ramdisk/book/control01.ctl
DBVERIFY - Verification complete
Total Pages Examined         : 614
Total Pages Processed (Data) : 0
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 29
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 585
Total Pages Marked Corrupt   : 0
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 7370554 (65535.7370554)
--//7370554 = 0x70773a

BBED> dump /v   dba 101,1 Offset 40 count 8
 File: /mnt/ramdisk/book/control01.ctl (101)
 Block: 1                                 Offsets:   40 to   47                            Dba:0x19400001
-----------------------------------------------------------------------------------------------------------
 3b777000 66020000                                                       l ;wp.f...
 <32 bytes per line>

--//先不管它,.看看是否可以open.
--//昏事后仔细检查我前面的脚本写成如下:
modify /x 37777000 dba 503,1 offset 36
--//多写了一个7.颠倒就是0x00707737 = 7370551,这样比较接近了.

SYS@book> alter database open ;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/mnt/ramdisk/book/system01.dbf'

SYS@book> recover database ;
Media recovery complete.

SYS@book> alter database open ;
Database altered.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
              7370584

--//OK恢复成功.

5.重来:
--//从冷备份恢复.
SYS@book> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

$ /bin/cp  /u01/tmp/* /mnt/ramdisk/book/
*/

$ cat aa.txt
assign dba 1,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
Y
sum apply dba 1,1
assign dba 2,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 2,1
assign dba 3,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 3,1
assign dba 4,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 4,1
assign dba 5,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 5,1
assign dba 6,1  kcvfh.kcvfhhdr.kccfhcsq=0x00007777
sum apply dba 6,1

$ cat bb.txt
modify /x 17770000 dba 501,1 offset 36
Y
sum apply dba 501,1
modify /x 57770000 dba 502,1 offset 36
sum apply dba 502,1
modify /x 37770000 dba 503,1 offset 36
sum apply dba 503,1

--//其它步骤忽略.

$ dbv file=/mnt/ramdisk/book/control01.ctl blocksize=16384 2>&1 | grep Highest
Highest block SCN            : 30586 (65535.30586)

--//30586 = 0x777a,这样与我的测试接近了.

SYS@book> alter database open ;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/mnt/ramdisk/book/system01.dbf'

SYS@book> recover database ;
Media recovery complete.
SYS@book> alter database open ;

Database altered.

SYS@book> select  CONTROLFILE_SEQUENCE# from v$database;
CONTROLFILE_SEQUENCE#
---------------------
                30616

--//30616= 0x7798.
RMAN> list incarnation ;
using target database control file instead of recovery catalog
List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       BOOK     1337401710       CURRENT 925702     2015-11-24 09:11:12

--//没有生成新的incarnation

6.收尾:
--//执行如下,里面的脚本选择性执行:
-- Configure RMAN configuration record 1
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');
-- Configure RMAN configuration record 2
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('DEVICE TYPE','DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET');
-- Configure RMAN configuration record 3
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('DEFAULT DEVICE TYPE TO','DISK');
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/archivelog/book/1_1_824297850.dbf';
-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/archivelog/book/1_1_896605872.dbf';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE
-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
-- Database can now be opened normally.
ALTER DATABASE OPEN;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/mnt/ramdisk/book/temp01.dbf' REUSE;
-- End of tempfile additions.
--
--
--
----------------------------------------------------------
-- The following script can be used on the standby database
-- to re-populate entries for a standby controlfile created
-- on the primary and copied to the standby site.
----------------------------------------------------------
ALTER DATABASE ADD STANDBY LOGFILE '/mnt/ramdisk/book/redostb01.log'
 SIZE 50M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/mnt/ramdisk/book/redostb02.log'
 SIZE 50M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/mnt/ramdisk/book/redostb03.log'
 SIZE 50M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/mnt/ramdisk/book/redostb04.log'
 SIZE 50M BLOCKSIZE 512 REUSE;

7.总结:
--//有点乱,但是记录我整个操作过程.我之所以这样写,便于以后回忆总结,也避免一些低级错误.
--//建议遇到这类文件选择重建控制文件选择resetlogs,不建议像我这样操作,我自不过当作练刀过程.

8.补充说明:
--//前面我提到的rlbbed我建立的bash shell函数,你可以使用别名代替,效果一样的.
$ export RLWRAP=$(which rlwrap)
$ type rlbbed
rlbbed is a function
rlbbed ()
{
    cd /home/oracle/bbed;
    $RLWRAP -s 9999 -c -r -i -f /usr/local/share/rlwrap/bbed $ORACLE_HOME/bin/bbed parfile=bbed.par cmdfile=cmd.par
}

--//关于bbed配置看相关文档.
$ cat cmd.par
set count 64
set width 160

$ cat bbed.par
blocksize=8192
listfile=$HOME/bbed/filelist.txt
mode=edit
PASSWORD=blockedit
SPOOL=Y

--//filelist.txt文件通过select file#||' '||name c100 from v$dbfile order by file#;生成.我增加了控制文件以及redo文件.
--//还有临时文件.
$ cat filelist.txt  | grep -v "#"
4 /mnt/ramdisk/book/users01.dbf
1 /mnt/ramdisk/book/system01.dbf
2 /mnt/ramdisk/book/sysaux01.dbf
3 /mnt/ramdisk/book/undotbs01.dbf
5 /mnt/ramdisk/book/example01.dbf
6 /mnt/ramdisk/book/tea01.dbf

101 /mnt/ramdisk/book/control01.ctl
102 /mnt/ramdisk/book/control02.ctl

201 /mnt/ramdisk/book/temp01.dbf

501 /mnt/ramdisk/book/redo01.log
502 /mnt/ramdisk/book/redo02.log
503 /mnt/ramdisk/book/redo03.log
504 /mnt/ramdisk/book/redostb01.log











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

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

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

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


[20210225]控制文件序列号满的恢复.txt--//继续昨天的测试,今天主要是测试恢复.--//我想给自己增加一点点难度,就是使用noresetlogs打开,因为这样重建的控制文件要读取redo,数据文件重新--//回填一些信息,实际上resetlogs也类似,但是noresetlogs回填的控制文件seq很大,一样打不开数据库.--//也就是必须提到我前面要修改的数据文件以及redo文件的
google correlate:https://www.ikjzd.com/w/1887
淘粉8:https://www.ikjzd.com/w/1725.html
汇通天下:https://www.ikjzd.com/w/2055
2135亿!天猫海外2018双11成交亮点及趣味数据揭秘!:https://www.ikjzd.com/home/10650
独家:马逊日刷万单的刷单团队,是怎样炼成的!:https://www.ikjzd.com/home/17460
Mysku.ru:https://www.ikjzd.com/w/1672