<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<h1>
我是vue新手我对你说{
{
message }}
</h1>
<!-- Mustache不仅仅可以直接写变量,也可以写成表达式 -->
<h2>
我有{
{
count * 2}}个苹果
</h2>
</div>
<script>
const app = new Vue({
el:'#app',
data:{
message:'hello',
count:4
}
})
</script>
v-once 指令
语法:直接v-once 当给某个元素增加了这个指令后,该元素只会在最开始的时候显示对应的值,如果对其进行修改,则加入了这个指令的元素不会被修改。
v-html
语法:v-html=‘变量名’ 如果想要将一个元素解析成html格式在网页中呈现出来,就要在该元素上增加该指令。
v-text
语法:v-text=‘变量名’ 该指令会将标签内原有的数据进行覆盖,无法拼接
v-pre
语法:v-pre 该指令不会解析标签里边的内容,反而会将标签里边的内容原封不动的展示出来,
v-cloak
语法:v-cloak 该指令用于解析完js代码后才将渲染效果展示出来;在vue解析之前,div中有一个属性v-cloak;在vue解析之后,div中就没有属性v-cloak,给这个属性添加一个display:none;可以让用户看不见渲染过程。
v-bind
语法:v-bind:属性名 该指令用于动态绑定某个元素的属性,简写方式:直接在要绑定的属性名前加上: 。比如动态绑定a标签的href属性,动态绑定img的src属性。
v-bind动态绑定class类(对象语法)
语法:
<div id="app" v-bind:class="{要起的类名1:布尔值,要起的类名2:布尔值}">
这的布尔值,是要在Vue中,data属性事先定义好的。
v-bind数组语法
语法:
<h1 v-bind:class="['active','line']">{
{
message}}</h1>
v-bind动态绑定style
对象语法:
v-bind:style="{属性名:属性值,属性名:属性值}"
注:当属性值直接写值时,只需要加引号;如果要用data中的数据时,则值不需要加引号,但是data中的数值需要加引号
数组语法:
v-bind:style="[data中的属性名,data中的属性名]"
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<h1 :style="[baseStyle1,baseStyle2]">{
{
message}}</h1>
</div>
<script>
const app = new Vue({
el:'#app',
data:{
message:"你好啊",
baseStyle1:{
backgroundColor:"red"},
baseStyle2:{
fontSize:"40px"}
}
})
在Vue中,data对象中含有一个computed属性,该属性为计算属性,使用该属性时,直接调用属性名(无需加括号,因为是一个计算属性)。
计算属性的复杂操作
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<h1>{
{
message}}{
{
totalPrice}}</h1>
</div>
<script>
const app = new Vue({
el: '#app',
data: {
message: "总价格为:",
books: [
{
id: 1, name: '三国演义', price: 100 },
{
id: 2, name: '西游记', price: 100 },
{
id: 3, name: '水浒传', price: 100 },
{
id: 4, name: '红楼梦', price: 100 }
]
},
computed: {
totalPrice:function(){
let sum=0
for(let i=0;i<this.books.length;i++){
sum+=this.books[i].price
}
return sum
}
}
})
在Vue中使用v-on来完成事件的监听,语法:v-on:事件名称=“调用的函数”
<button v-on:click="add()">+</button>
简写语法:
<button @click="add">+</button>
v-on的参数问题
当通过methods中定义方法,以提供@click调用时,需要注意参数问题:
1.如果该方法不需要提供额外的参数,那么方法后面的()可以不添加;
但是:如果方法本身有一个参数,你又给()省略的话,此时Vue会默认将浏览器生产的event事件作为参数传递到方法中
2.如果方法需要传入一个参数,同时也需要传递event事件,可以通过==$event==的方式来手动获取浏览器参数的event对象。
v-on修饰符
Vue提供了修饰符来进行处理一些事件:
v-if、v-else-if、v-else
Vue中的条件指令可以根据表达式的值在DOM中渲染或者销毁元素或组件
v-if与v-show的区别使用
v-if:当条件为false时,包含v-if指令的元素,根本就不会存在dom中
v-show:当条件为false时,v-show只是给元素添加了一个行内样式 dispaly:none
**使用场景:**当显示与隐藏很频繁时,使用v-show,当只有一次切换时使用v-if
使用v-for来进行循环遍历,遍历数组
<!-- 只遍历元素 -->
<ul>
<li v-for="item in games" :key="item">{
{
item}}</li>
</ul>
<!-- 索引与元素一起拿到 -->
<ul>
<li v-for="(item,index) in games">{
{
index +" "+ item}}</li>
</ul>
</div>
使用v-for来遍历对象
<!-- 1.只获取value -->
<ul>
<li v-for="item in people" :key="item">{
{
item}}</li>
</ul>
<!-- 2.获取value和key -->
<ul>
<li v-for="(value,key) in people">{
{
value}}+{
{
key}}</li>
</ul>
<!-- 3.获取value和key和index -->
<ul>
<li v-for="(value,key,index) in people">{
{
value}}+{
{
key}}+{
{
index}}</li>
</ul>
在v-for里边加上 ==:key=“item”==可以提高性能
数组中哪些方法是响应式(当数组内部数据改变,页面上的元素也会随之改变)
push() 往数组的末尾添加一个或者多个元素
pop() 删除数组中的最后一个元素
shift() 删除数组中的第一个元素
unshift() 在数组最前面添加一个或多个元素
splice() 作用:删除元素/插入元素/替换元素
sort() 对数组中元素进行排序
reverse() 对数组中的元素进行反转
Vue.set()方法 三个参数,(要修改的对象,索引值,修改后的值)
注意:通过索引修改数组中的元素不是响应式的
语法:v-model=“data中的属性名”
实现原理
v-model的实现原理实际上进行了两个操作
1.v-bind绑定一个value属性
2.v-on 指令绑定给当前元素一个input事件
v-model与radio的结合使用
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<label for="man">
<input type="radio" name="man" value="男" v-model="sex">男
</label>
<label for="woman">
<input type="radio" name="woman" value="女" v-model="sex">女
</label>
<h1>您选择的性别是:{
{
sex}}</h1>
</div>
<script>
const app = new Vue({
el: '#app',
data: {
message: '你好啊',
sex:''
}
})
</script>
v-model与checkbox的结合使用
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<!-- 单选按钮的演示 -->
<label for="agree">
<input type="checkbox" name="agree" v-model="isAgree">同意
</label><br>
<button :disabled="!isAgree">下一步</button>
<br>
<!-- 多选按钮演示 -->
<input type="checkbox" value="鱼香肉丝" v-model="foods">鱼香肉丝
<input type="checkbox" value="过油肉" v-model="foods">过油肉
<input type="checkbox" value="红烧肉" v-model="foods">红烧肉
<input type="checkbox" value="酱猪蹄" v-model="foods">酱猪蹄
<h1>您要选择的食物是:{
{
foods}}</h1>
</div>
<script>
const app = new Vue({
el:"#app",
data:{
message:"你好啊",
isAgree:false, //单选返回布尔值
foods:[] //多选返回数组
}
})
</script>
v-model与select的结合使用
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<!-- 单选 -->
<select name="fruit" v-model="fruit">
<option value="青瓜" >青瓜</option>
<option value="苦瓜" >苦瓜</option>
<option value="香瓜" >香瓜</option>
<option value="甜瓜" >甜瓜</option>
</select>
<h1>您选择的水果是:{
{
fruit}}</h1>
<br>
<select name="foods" v-model="foods" multiple>
<option value="鱼香肉丝">鱼香肉丝</option>
<option value="葱爆肉">葱爆肉</option>
<option value="过桥米线">过桥米线</option>
<option value="红烧茄子">红烧茄子</option>
</select>
<h1>您选择的食物是:{
{
foods}}</h1>
</div>
<script>
const app = new Vue({
el:'#app',
data:{
fruit:'甜瓜', //单选返回字符串
foods:[] //多选返回数组
}
})
</script>
v-model的修饰符
语法:v-model.修饰符名=“data中的属性名”
lazy修饰符
lazy修饰符可以让数据在市区焦点或者按回车时才会更新
number修饰符
number修饰符可以让输入框中的内容自动转换成数字类型
trim修饰符
trim修饰符可以过滤掉内容左右两边的空格
创建组件构造器,调用Vue.extend()方法,里边传入template代表的是要进行组件的 模板对象
该模板就是在使用到组件的地方,要显示HTML代码
注册组件,调用Vue.component()方法,里边有两个参数 (“要用的模板标签名”,组件构造器对象)
使用组件,在Vue实例的作用范围内使用组件
全局组件与局部组件
使用==Vue.component(“my-cpn”,cpnC)==这种方式注册的组件是全局组件,
在Vue的实例对象中component属性中注册的组件属于局部组件,局部组件只能在Vue的实例对象中使用,超出该Vue的实例对象外,浏览器不会对其进行解析。
基本使用:
<div id="app">
<!-- 3.使用组件 -->
<my-cpn></my-cpn>
<my-cpn></my-cpn>
<my-cpn></my-cpn>
<my-cpn></my-cpn>
<my-cpn></my-cpn>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// 1.创建组件构造器对象
const cpnC = Vue.extend({
template:`
<div>
<h1>我是标题</h1>
<p>我是第一个p标签的内容</p>
<p>我是第二个p标签的内容</p>
</div>`
})
// 2.注册组件
Vue.component("my-cpn",cpnC) //全局组件
const app = new Vue({
el: '#app',
data: {
},
//局部组件(只能在当前Vue的实例对象下使用)
/*
components:{
//cpn是使用时的标签名
cpn:cpnC
}*/
})
</script>
<div id="app">
<cpn></cpn>
<cpn2></cpn2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// 1.创建组件构造器
// const cpnC = Vue.extend()
// 全局组件语法糖的创建方式
Vue.component('cpn', {
template: `
<div>
<h1>AAAA</h1>
<P>111111</P>
</div>
`
})
// 局部组件语法糖的创建方式
const app = new Vue({
el: '#app',
components: {
cpn2: {
template: `
<div>
<h1>BBBB</h1>
<P>2222</P>
</div>
`
}
}
})
</script>
<div id="app">
<cpn></cpn>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- 模板抽取的第一种写法 -->
<!-- <script type="text/x-template" id="cpn">
<div>
<h1>我是标题呀</h1>
<p>我是内容啊</p>
</div>
</script> -->
<!-- 模板抽取的第二种写法 -->
<template id="cpn">
<div>
<h1>我是第二个</h1>
<p>我是第二个内容</p>
</div>
</template>
<script>
// 1.注册一个全局组件
Vue.component('cpn',{
template:'#cpn'
})
const app = new Vue({
el:'#app'
})
</script>
<div id="app">
<cpn></cpn>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<template id="cpn">
<div>
<h1>我是第二个</h1>
<p>我是第二个内容</p>
<p>{
{
name}}</p>
</div>
</template>
<script>
// 1.注册一个全局组件
Vue.component('cpn', {
template: '#cpn',
data() {
return {
name: "我是数据,存储在返回对象中"
}
}
})
const app = new Vue({
el: '#app'
})
</script>
在组件中,使用props来声明需要从父级接收到的数据。
props的值有两种方式:
<div id="app">
<!-- 传入变量要是用v-bind,如果不用将会直接将字符串赋给前面的属性值 -->
<cpn v-bind:childfoods="foods" :childmessage="message"></cpn>
</div>
<!-- 在子组件中显示 -->
<template id="cpn">
<div>
<h1>{
{
childmessage}}</h1>
<h1>{
{
childfoods}}</h2>
<ul>
<li v-for="item in childfoods">{
{
item}}</li>
</ul>
</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// 注册组件
const cpn = {
template:'#cpn',
// 父传子,使用props
// 1.使用数组类型
// props:['childfoods','childmessage']
// 2.使用对象类型,可以完成类型限制
props:{
// 传入属性,可以设置其类型
// childfoods:Array,
// childmessage:String
// 提供一些默认值(默认值在没有传的情况下显示)default
// require 当添加了require,值为true时,该变量必须传递
childmessage:{
type:String,
default:'我是默认值类型',
require:true
},
childfoods:{
type:Array,
// 类型是对象或者数组时,默认值必须是一个函数
// default(){ return {} }
default:['我是默认数组1','我是默认数组2'],
require:true
}
}
}
const app = new Vue({
el:'#app',
data:{
message:"我是父组件中的元素",
foods:['鱼香肉丝','蛋炒饭','尖椒肉丝']
},
components:{
cpn
}
})
</script>
组件通信-父传子(props中的驼峰命名标识)
组件通信,父传子的驼峰命名中,如果在子组件中定义的属性是以驼峰命名法定义的,那么在父组件当中就应该用 - 来代替每一个驼峰
<div id="app">
<cpn :child-message="message" :child-person="person"></cpn>
</div>
<template id="cpn">
<div>
<h1>{
{
childMessage}}</h1>
<h1>{
{
childPerson}}</h1>
</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// 注册组件
const cpn = {
template:'#cpn',
props:{
childMessage:{
type:String,
default:''
},
childPerson:{
type:Object,
default(){
return {
}
}
}
}
}
const app = new Vue({
el:'#app',
components:{
cpn
},
data:{
message:'你好啊',
person:{
name:'张三',
age:18,
hobby:['lol','吃鸡']
}
}
})
</script>
子传父(自定义事件)
当子组件需要向父组件传递数据时,就要用到自定义事件,用v-on也可以监听自定义事件。
自定义事件的流程:
<!-- 父组件模板 -->
<div id="app">
<cpn @item-click="cpnClick"></cpn>
</div>
<!-- 子组件模板 -->
<template id="cpn">
<div>
<button v-for="item in categories"
@click="btnClick(item)">
{
{
item.name}}
</button>
</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
//子组件
const cpn = {
template:'#cpn',
data(){
return {
categories:[
{
id:1,name:'热门推荐'},
{
id:2,name:'手机数码'},
{
id:3,name:'家用家电'},
{
id:4,name:'电脑办公'}
]
}
},
methods:{
btnClick(item){
// 发射事件 自定义事件
this.$emit("item-click",item)
}
}
}
// 父组件
const app = new Vue({
el:'#app',
// 注册子组件
components:{
cpn
},
methods:{
cpnClick(item){
console.log('cpnClick',item)
}
}
})
</script>
个人总结:
父传子,需要在子组件中用props来声明出新的属性名来接收父组件中的内容;之后在父模板中使用v-bind将父组件中的内容赋给子组件,然后子组件模板直接展示自己内部的属性即可
子传父,需要在子组件中用 $emit()来发射一个自定义事件 给父组件;在子组件模板中直接展示自己内部的属性即可;之后在父组件模板中使用v-on来监听自定义事件,并将父组件中的内容赋值给该自定义事件
父组件访问子组件:使用 c h i l d r e n = = 或 者 = = children== 或者== children==或者==refs
this.$children是一个数组类型,包含所有子组件对象
$refs是一个对象类型,默认是一个空对象;使用时在组件上给 ref赋值 例如:<cpn ref="aaa"></cpn>
子组件访问父组件:使用 p a r e n t = = , 使 用 = = parent== ,使用 == parent==,使用==root 来访问组件的根组件
组件的插槽:
组件的插槽可以使封装的组件更加具有扩展性,让使用者可以决定组件内部的一些内容到底展示什么。
基本使用方式:在组件模板中使用<slot></slot>
标签来占据空位。如果在该标签内部填入相应的html代码,则会在网页中显示插槽的默认内容,如果不想显示默认内容,直接在组件写入其他元素,会将默认的样式全部覆盖。
具名插槽:给相应的插槽添加一个name
属性,在要显示的元素标签内部添加一个slot
属性,想要替换哪个插槽,就将相应的name值赋值给slot。
编译作用域的概念
编译作用域指的是在哪一个组件模板下,寻找到的只能是当前组件作用域的属性,父组件不能够跨到子组件,子组件也不可能跨越到父组件。父组件模板的所有东西都会在父级作用域内编译;子组件模板的所有东西都会在子级作用域内编译。
作用域插槽的使用(在父组件中拿子组件的数据)
一句话总结:父组件替换插槽的标签,但是内容由子组件来提供。父组件对子组件所展示的内容不满意,想要换一种展示方式,就用作用域插槽。(内容在子组件,希望父组件来告诉我们,使用slot作用域插槽就可以了)
使用方式:
在子组件中的slot中这样写<slot :data="languages"></slot>
,然后在父组件中的<cpn></cpn>
中,写上template
这样写<template slot-scope="slot"></template>
,在template内部写上要呈现出的效果内容。
<div id="app">
<cpn></cpn>
<cpn>
<!-- 目的是为了获取子组件中的languages -->
<template slot-scope="slot">
<span>{
{
slot.data.join(' - ')}}</span>
</template>
</cpn>
<cpn>
<!-- 目的是为了获取子组件中的languages -->
<!-- VUE2.5之后支持的不仅仅是template -->
<div slot-scope="slot">
<span>{
{
slot.data.join(' ~ ')}}</span>
</div>
</cpn>
</div>
<template id="cpn">
<div>
<slot :data="languages">
<ul>
<li v-for="item in languages">{
{
item}}</li>
</ul>
</slot>
</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
// 注册子组件
components: {
cpn: {
template: '#cpn',
data() {
return {
languages: ['java', 'c', 'c++', 'js', 'php']
}
}
}
}
})
</script>
Vue Cli 可以快速搭建Vue开发环境以及对应的webpack配置。
安装的脚手架3,但是想用2的版本,需要拉取2的模板
Vue CLI2初始化项目
vue init webpack my-project
my-project 是要设置的项目的名称
Vue CLI3初始化项目
vue create my-project
Runtime-Compiler和Runtime-only的区别
如果开发使用template,就需要选择Runtime-Comoiler;如果使用.vue文件夹开发,那就选择Runtime-only
Vue CLI3与2的区别
cli3的目录详解
vue-router是Vue.js官方的路有插件,适合用于构建单页面应用,他是基于路由和组件的;
路由用于设定访问路径,将路径和组件映射起来;在vue-router的单页面应用中,页面的路径的改变就是组件的切换。
安装vue-router npm install vue-router --save
在模块化中使用
Vue-router的使用步骤
创建路由组件
配置路由映射,组件和路径映射关系
使用路由,通过<router-link>
和<router-view>
来显示组件内容。
<router-link>
该标签是一个vue-router中已经内置的组件。他会被渲染成一个a标签,其中<router-link>
中有一个to属性,后面跟着路径地址,<router-view>
,该标签会根据当前的路径,动态渲染出不同的组件,<router-view>
是用来显示在<router-link>
里边内容位置的上方还是下方。在路由切换时,切换的是<router-view>
挂载的组件,其他内容不会发生改变。
<router-link>
的属性
<router-link>
被渲染成什么组件,例如渲染成button,<router-link to="/home" tag="button">首页</router-link>
<router-link>
对应的路由匹配成功时,会自动给当前元素设置一个 router-link-active的class,设置active-class可以修改默认的类的名称。
路由懒加载的作用主要就是将路由对应的组件打包成一个个js代码块,只有当某个路由被访问的时候,才加载它。
路由懒加载的方式:
这里使用Vue组件和Webpack的代码分割写法
const Home = ()=> import('../components/home.vue')
keep-alive是Vue内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。
两个属性:示例,include='User,Profile'
router-view也是一个组件,如果直接被包在keep-alive里面,所有的路径匹配到的视图组件都会被缓存。
只有在用keep-alive时,才能使用activated、deactivated这两个函数。
文章浏览阅读5.3k次,点赞9次,收藏59次。博客主页:看看是李XX还是李歘歘每天分享一些包括但不限于计算机基础、算法等相关的知识点点关注不迷路,总有一些知识点是你想要的️今天的内容是 MySQL的索引结构为什么是B+树? ️先来看一下树的演化:树:非线性结构,每个节点有唯一的一个父结点和多个子结点(子树),为一对多的关系。 二叉树:每个结点最多有两颗子树,并且子树有左右之分,不能颠倒。 满二叉树:每一层的结点个数都达到了当层能达到的最大结点数。 完全二叉树:除了最..._navicat为什么只能创建的索引结构是b树
文章浏览阅读1.2k次,点赞13次,收藏9次。主流的开发语言和开发环境介绍 _开发语言
文章浏览阅读595次。作为一个WPF程序员,我最希望看到的是WPF的应用,或者更确切的说是绚丽的应用,虽然限于自身的实力还不能拿出成绩来,但看到别人的作品时,心里还是有很大的宽慰——WPF是可以做出更加动人地产品的,只要你坚定的走下去,带着不满现状的追求走下去。 下图是Telerik的WPF控件,我相信很多人也下过他的DEMO,研究过他的代码,并由此激起对WPF的信心。今天我们就来仿造他的Drag..._wpf 自定义控件示例
文章浏览阅读380次。先来无事,开始总结自己最近学过做过的东西。想想,数据才是所有网络和编程的核心,包括人工智能。但是自己的数据处理能力,仅仅停留在excel基础,只用代码完成过64个表格的批量筛选和提取。后来阅读和搜索发现,Python里面处理数据,pandas和numpy才是王道。所以最近开始想办法学习这两个东西。怎么学?看代码,看书,太枯燥。买课又不想花钱。经过研究发现,pandas是可以处理类似excel结..._pandas对于excel来说什么时候好用
文章浏览阅读955次。周计划和学习总结
文章浏览阅读1.1k次,点赞15次,收藏20次。本文基于前期介绍的风速数据(文末附数据集),介绍一种多特征变量序列预测模型CEEMDAN + CNN-Transformer,以提高时间序列数据的预测性能。
文章浏览阅读172次。Windows环境中同时安装Oracle9i 和10g 原创者:大胖黑马(授权发布)简单说一下在windows的同一用户下,安装Oracle的9i、10g 的方法1、安装版本需要从低到高。也就是说先安装9i的数据库,然后安装10g的数据库2、安装目录分开。3、在低版本的数据库安装完成后,最好通过..._oracle 9i 和oracle 10g同时使用
文章浏览阅读305次。使用SVM进行手写数据OCR在 kNN 中我们直接使用像素的灰度值作为特征向量。这次我们要使用方向梯度直方图Histogram of Oriented Gradients (HOG)作为特征向量。在计算 HOG 前我们使用图片的二阶矩对其进行抗扭斜(deskew)处理,也就是把歪了的图片摆正。所以我们首先要定义一个函数 deskew(),它可以对一个图像进行抗扭斜处理。下面就是 deskew() 函数:..._python opencv 计算向量
文章浏览阅读2.7k次。思路1,通过某种方法获取图片数据,并且了解数据结构。 2,通过某种数学公式将鱼眼画面处理成全景图。 3,通过CUDA并行运算实现鱼眼转全景图功能。 本篇主要讲述OpenCV获取图片以及指针的使用,与CUDA无关。获取图片数据OpenCV环境配置1 下载OpenCVOpenCV 下载驿站(百度云盘下载,同步更新)2 配置OpenCV开发环境配置的方法网上很多,可以查找。我用的是 OpenCV环境_鱼眼图像展开成全景图
文章浏览阅读2.1k次,点赞3次,收藏13次。最近做SFTP连接获取文件,遇到好多坑,记录一下防止以后重复踩坑无效秘钥文件1.版本低导致文件无效2.windows系统不支持ppk秘钥文件,必须转换成pem秘钥文件com.jcraft.jsch.JSchException: invalid privatekey: C:/upload/tpl/privateKey.ppk at com.jcraft.jsch.IdentityFile.<init>(IdentityFile.java:302) at com.jc..._如何用sftp密钥下载文件到本地密钥
这篇文章介绍了通过在阿里云镜像网站下载epel源来安装nginx的过程,包括下载epel源、安装nginx rpm包、访问nginx默认网页以及nginx的安装配置文件路径和默认文件位置。
文章浏览阅读9.2k次。oracle expdp/impdp 数据泵导入导出# 创建directory,指定导入导出时的数据存储路径create directory dir_dp as 'd:/database/dir_dp';# 授权grant read,write on directory dir_dp to user_name;# 查看目录及权限select * from dba_directories;-_impdb schemas