<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这两个函数。
文章浏览阅读3.6k次,点赞2次,收藏2次。DELL7080台式机两块硬盘。_没有u盘怎么装ubuntu
文章浏览阅读32次。题面Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 500). The grid contains K asteroids (1 <= K <= 10,000), which are conv...
文章浏览阅读2.6w次,点赞21次,收藏112次。机器视觉则主要是指工业领域视觉的应用研究,例如自主机器人的视觉,用于检测和测量的视觉系统等。它通过在工业领域将图像感知、图像处理、控制理论与软件、硬件紧密结合,并研究解决图像处理和计算机视觉理论在实际应用过程中的问题,以实现高效的运动控制或各种实时操作。_工业机器视觉系统的构成与开发过程(理论篇—1
文章浏览阅读5.9w次,点赞32次,收藏58次。legend 传奇、图例。plt.legend()的作用:在plt.plot() 定义后plt.legend() 会显示该 label 的内容,否则会报error: No handles with labels found to put in legend.plt.plot(result_price, color = 'red', label = 'Training Loss') legend作用位置:下图红圈处。..._plt.legend
文章浏览阅读2.2k次,点赞3次,收藏11次。深入理解 C# .NET Core 中 async await 异步编程思想引言一、什么是异步?1.1 简单实例(WatchTV并行CookCoffee)二、深入理解(异步)2.1 当我需要异步返回值时,怎么处理?2.2 充分利用异步并行的高效性async await的秘密引言很久没来CSDN了,快小半年了一直在闲置,也写不出一些带有思想和深度的文章;之前就写过一篇关于async await 的异步理解 ,现在回顾,真的不要太浅和太陋,让人不忍直视!好了,废话不再啰嗦,直入主题:一、什么是异步?_netcore async await
文章浏览阅读6.5w次,点赞166次,收藏309次。当我看到别人的类上面的多行注释是是这样的:这样的:这样的:好装X啊!我也想要!怎么办呢?往下瞅:跟着我左手右手一个慢动作~~~File--->Settings---->Editor---->File and Code Templates --->Includes--->File Header:之后点applay--..._idea作者和日期等注释
文章浏览阅读175次。Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。工作原理Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,c..._netperf 麒麟
文章浏览阅读1.1k次,点赞2次,收藏3次。作者| qcrao责编 | 屠敏出品 | 程序员宅基地刚开始写这篇文章的时候,目标非常大,想要探索 Go 程序的一生:编码、编译、汇编、链接、运行、退出。它的每一步具体如何进行,力图弄清 Go 程序的这一生。在这个过程中,我又复习了一遍《程序员的自我修养》。这是一本讲编译、链接的书,非常详细,值得一看!数年前,我第一次看到这本书的书名,就非常喜欢。因为它模仿了周星驰喜剧..._go run 每次都要编译吗
文章浏览阅读1.4k次,点赞4次,收藏2次。0、C++的输入输出分为三种:(1)基于控制台的I/O (2)基于文件的I/O (3)基于字符串的I/O 1、头文件[cpp] view plaincopyprint?#include 2、作用istringstream类用于执行C++风格的字符串流的输入操作。 ostringstream类用_c++ istringstream a >> string
文章浏览阅读2k次,点赞3次,收藏14次。我们在每个修改的地方都记录一条对应的 redo 日志显然是不现实的,因此实现方式是用时间换空间,我们在数据库崩了之后用日志还原数据时,在执行这条日志之前,数据库应该是一个一致性状态,我们用对应的参数,执行固定的步骤,修改对应的数据。1,MySQL 就是通过 undolog 回滚日志来保证事务原子性的,在异常发生时,对已经执行的操作进行回滚,回滚日志会先于数据持久化到磁盘上(因为它记录的数据比较少,所以持久化的速度快),当用户再次启动数据库的时候,数据库能够通过查询回滚日志来回滚将之前未完成的事务。_binglog
文章浏览阅读3k次。概述之前介绍过 移动Web开发基础-flex弹性布局(兼容写法) 里面有提到过想做一个Chrome插件,来生成flexbox布局的css代码直接拷贝出来用。最近把这个想法实现了,给大家分享下。play-flexbox插件介绍play-flexbox一秒搞定flexbox布局,可直接预览效果,拷贝CSS代码快速用于页面重构。 你也可以通过点击以下链接(codepen示例)查_chrome css布局插件
文章浏览阅读308次。我自己的配置是GeForce GTX 1660 +CUDA10.0+CUDNN7.6.0 + TensorFlow-GPU 1.14.0Win10系统安装tensorflow-gpu(按照步骤一次成功)https://blog.csdn.net/zqxdsy/article/details/103152190环境配置——win10下TensorFlow-GPU安装(GTX1660 SUPER+CUDA10+CUDNN7.4)https://blog.csdn.net/jiDxiaohuo/arti