测试开发之Vue学习笔记-Vue路由

news2024/11/29 6:34:28

Vue路由

18. Vue-路由基础

安装 cnpm install --save vue-router

官方文档:https://router.vuejs.org/zh/

src/main.js中

(1)引入VueRouter:import VueRouter from "vue-router"

(2)使用VueRouter:Vue.use(VueRouter);

(3)创建路由规则

Copyconst router = newVueRouter({
    routes: [
        { 
            path: '/hello',
            component: Hello
        }
    ]
});

(4)注入router

CopynewVue({
  el: '#app', 
  router,  // 添加路由components: { App }, 
  template: '<App/>' 
})

(5)App.vue中显示路由组件:<router-view />,访问http://localhost:8080/#/hello显示相应视图

也可以使用<router-view></router-view>

示例:

新建src/components/hello.vue

Copy<template><divclass="hello">
        Hello
    </div></template><script>exportdefault{
    name: 'chachao',
    data(){
        return {
           
        }
    }
}
</script><stylelang='css'></style>

修改src/main.js

CopyimportVuefrom'vue'importAppfrom'./App'importVueRouterfrom"vue-router"// 引入VueRouterimportHellofrom"./components/hello"// 引入相关组件Vue.config.productionTip = falseVue.use(VueRouter);

const router = newVueRouter({
    routes: [
        { 
            path: '/hello',
            component: Hello
        }
    ]
});

newVue({
  el: '#app', 
  router,  // 添加路由components: { App }, 
  template: '<App/>' 
})

修改src/App.vue

Copy<template><divid="app"><p>哈哈</p><router-view /></div></template><script>import $ from"jquery"exportdefault {
  name: 'App',
  data(){
    return {
    }
  }
}
</script><stylelang="css"></style>

19. Vue-路由跳转

在组件template中使用 <router-link to="/hello">Hello</router-link>添加跳转连接

示例:

新建src/components/hello.vue

Copy<template><divclass="hello">
        Hello组件
    </div></template><script>exportdefault{
    name: 'hello',
    data(){
        return {
           
        }
    }
}
</script><stylelang='css'></style>

新建新建src/components/hi.vue

Copy<template><divclass="hi">
        Hi组件
    </div></template><script>exportdefault{
    name: 'hi',
    data(){
        return {
           
        }
    }
}
</script><stylelang='css'></style>

src/main.js中配置路径

CopyimportVuefrom'vue'importAppfrom'./App'importVueRouterfrom"vue-router"// 引入VueRouterimportHellofrom"./components/hello"// 引入相关组件importHifrom"./components/hi"// 引入相关组件Vue.config.productionTip = falseVue.use(VueRouter);

const router = newVueRouter({
    routes: [
        { 
            path: '/hello',
            component: Hello
        },
        { 
            path: '/hi',
            component: Hi
        },
    ]
});

newVue({
  el: '#app', 
  router,  // 添加路由components: { App }, 
  template: '<App/>' 
})

src/App.vue中使用

Copy<template><divid="app"><divclass="nav"><ul><li><router-linkto="/hello">Hello</router-link></li><li><router-linkto="/hi">Hi</router-link></li></ul></div><router-view/></div></template><script>exportdefault {
  name: 'App',
  data(){
    return {
    }
  }
}
</script><stylelang="css"></style>

路由模块化处理

将src/main.js中路由相关的配置移动到src/router/index.js中

(1)src下新建router文件夹,新建src/router/index.js:

CopyimportVuefrom'vue'importVueRouterfrom"vue-router"importHellofrom"../components/hello"//改为两个..importHifrom"../components/hi"//改为两个..Vue.use(VueRouter);

exportdefaultnewVueRouter({   // 改为export default以使其可外部访问routes: [
        { 
            path: '/hello',
            component: Hello
        },
        { 
            path: '/hi',
            component: Hi
        },
    ]
});

(2)src/main.js改为

CopyimportVuefrom'vue'importAppfrom'./App'import router from'./router'// 自动导入该目录中的index.jsVue.config.productionTip = falsenewVue({
  el: '#app', 
  router,  // 添加路由components: { App }, 
  template: '<App/>' 
})

(3)src/components/hello.vue,src/components/hi.vue,src/App.vue配置同上

也可以新建src/components/nav.vue来引入hello和hi组件

Copy<template><divclass="nav"><ul><li><router-linkto="/hello">Hello</router-link></li><li><router-linkto="/hi">Hi</router-link></li></ul></div></template><script>exportdefault{
    name: 'nav2',
    data(){
        return {
           
        }
    },
}
</script><stylelang='css'>.nav{
    width: 100%;
    height: 50px;
    line-height: 50px;
    background: #fff;
}
.navul {
    clear: both;
    overflow: hidden;
}

.navulli {
    float: left;
    margin-left: 30px;
    list-style: none;
}
</style>

修改App.vue导入Nav组件

Copy<template><divid="app"><Nav/><router-view/></div></template><script>importNavfrom"./components/nav"exportdefault {
  name: 'App',
  data(){
    return {
    }
  },
  components: {
        Nav
    }
}
</script><style>body{
    background-color: #f1f1f1;
  }

  *{
    margin: 0;
    padding: 0;
  }
</style>
比起写死的 会好一些,理由如下:
  • 无论是 HTML5 history 模式还是 hash 模式,它的表现行为一致,所以,当你要切换路由模式,或者在 IE9 降级使用 hash 模式,无须作任何变动。

  • 在 HTML5 history 模式下,router-link 会守卫点击事件,让浏览器不再重新加载页面。

  • 当你在 HTML5 history 模式下使用 base 选项之后,所有的 to 属性都不需要写 (基路径) 了。

router-link可以指定渲染的标签,默认为a标签

Copy<router-linktag="li"to="hello">Hello</router-link>

配置默认重定向到的页面

routes配置中添加

Copy{ path: '/', redirect: '/hello'  },

src/router/index.js,完整代码:

CopyimportVuefrom'vue'importVueRouterfrom"vue-router"importHellofrom"../components/hello"//改为两个..importHifrom"../components/hi"//改为两个..Vue.use(VueRouter);

exportdefaultnewVueRouter({   // 改为export default以使其可外部访问routes: [
        { path: '/', redirect: '/hello'  },   // 配置默认重定向到hello组件视图
        { path: '/hello', component: Hello },
        { path: '/hi', component: Hi },
    ]
});

20. Vue-路由嵌套

在路由配置router中可以使用children添加嵌套路由。

Copy{ path: '/hello', 
  component: Hello, 
  redirect: '/hello/hello1',   // Hello充电线到/hello/hello1children:[      // 添加嵌套路由
    {path: 'hello1', component: Hello1},
    {path: 'hello2', component: Hello2},
    ]
}

在router-link中连接子路由要使用全路径

Copy<ul><li><router-linkto="/hello/hello1">Hello1</router-link></li><li><router-linkto="/hello/hello2">Hello2</router-link></li></ul><router-view/>

示例:

新建src/components/hello1.vue

Copy<template><divclass="hello1">
        Hello1组件
    </div></template><script>exportdefault{
    name: 'hello1',
    data(){
        return {
           
        }
    }
}
</script><stylelang='css'></style>

新建src/components/hello2.vue

Copy<template><divclass="hello2">
        Hello2组件
    </div></template><script>exportdefault{
    name: 'hello2',
    data(){
        return {
           
        }
    }
}
</script><stylelang='css'></style>

编辑src/routeindex.js

CopyimportVuefrom'vue'importVueRouterfrom"vue-router"importHellofrom"../components/hello"//改为两个..importHifrom"../components/hi"//改为两个..importHello1from"../components/hello1"importHello2from"../components/hello2"Vue.use(VueRouter);

exportdefaultnewVueRouter({   // 改为export default以使其可外部访问routes: [
        { path: '/', redirect: '/hello'  },   // 配置默认重定向到hello组件视图
        { path: '/hello', component: Hello, redirect: '/hello/hello1',   // Hello充电线到/hello/hello1children:[      // 添加嵌套路由
            {path: 'hello1', component: Hello1},
            {path: 'hello2', component: Hello2},
        ]},
        { path: '/hi', component: Hi },
    ]
});

编辑src/components/hello.vue

Copy<template><divclass="hello">
        Hello组件
        <ul><li><router-linkto="/hello/hello1">Hello1</router-link></li><li><router-linkto="/hello/hello2">Hello2</router-link></li></ul><router-view/></div></template><script>exportdefault{
    name: 'hello',
    data(){
        return {
           
        }
    }
}
</script><stylelang='css'></style>

21. Vue-路由参数传递

router-link

Copy<router-linkto="/hi">Hi</router-link>

也可以写为

Copy<router-linkv-bind:to='{ path: "/hi"}'>Hi</router-link>

(1)配置理由信息:route中为路由添加name和参数

Copy{ path: '/hi/:id/:count', component: Hi, name: 'hi'},

(2)配置路径调整信息

Copy<router-link v-bind:to='{ name: "hi", params: {id: "100", count: "10"}}'>Hi</router-link> 

(3)读取信息

Copy{{ $route.params.id }}

示例:

修改src/route/index.js

CopyimportVuefrom'vue'importVueRouterfrom"vue-router"importHellofrom"../components/hello"//改为两个..importHifrom"../components/hi"//改为两个..Vue.use(VueRouter);

exportdefaultnewVueRouter({   // 改为export default以使其可外部访问routes: [
        { path: '/', redirect: '/hello'  },   // 配置默认重定向到hello组件视图
        { path: '/hello', component: Hello},
        { path: '/hi/:id/:count', component: Hi, name: 'hi'},   //添加name和参数id和count
    ]
});

修改src/components/nav.vue

Copy<template><divclass="nav"><ul><li><router-linkto="/hello">Hello</router-link></li><li><!-- <router-link to="/hi">Hi</router-link> --><!-- <router-link v-bind:to='{ path: "/hi"}'>Hi</router-link> --><router-linkv-bind:to='{ name: "hi", params: {id: "100", count: "10"}}'>Hi</router-link><!--使用参数--></li></ul></div></template><script>exportdefault{
    name: 'nav2',
    data(){
        return {
           
        }
    },
}
</script><stylelang='css'></style>

修改src/components/h1.vue

Copy<template><divclass="hi">
        Hi组件:
        {{ $route.params.id }} - {{ $route.params.count }}
    </div></template><script>exportdefault{
    name: 'hi',
    data(){
        return {
           
        }
    }
}
</script><stylelang='css'></style>

22. Vue-路由高亮

可以通过对router-link-active设置样式实现高亮

Copy.router-link-active{
color: red !important;
}

可以在VueRouter中使用linkActiveClass: "active"设置active类并添加属性

还可以通过mode: "history"设置历史模式

示例:

src/route/index.js

CopyimportVuefrom'vue'importVueRouterfrom"vue-router"importHellofrom"../components/hello"//改为两个..importHifrom"../components/hi"//改为两个..importHello1from"../components/hello1"importHello2from"../components/hello2"Vue.use(VueRouter);
exportdefaultnewVueRouter({   // 改为export default以使其可外部访问linkActiveClass: "active",
    mode: "history",   // 使用历史模式routes: [
        { path: '/', redirect: '/hello'  },   // 配置默认重定向到hello组件视图
        { path: '/hello', component: Hello, redirect: '/hello/hello1',   // Hello充电线到/hello/hello1children:[      // 添加嵌套路由
            {path: 'hello1', component: Hello1},
            {path: 'hello2', component: Hello2},
        ]},
        { path: '/hi/:id/:count', component: Hi, name: 'hi'},   //添加name和参数id和count
    ]
});

src/App.vue中

Copy<template><divid="app"><Nav/><router-view/></div></template><script>importNavfrom"./components/nav"exportdefault {
  name: 'App',
  data(){
    return {
    }
  },
  components: {
        Nav
    }
}
</script><style>body{
    background-color: #f1f1f1;
  }

  *{
    margin: 0;
    padding: 0;
  }
  a:link,a:hover,a:active,a:visited{
    color: blue;
  }
 /* .router-link-active{
    color: red !important;
  }*/.active{
    color: red !important;
  }
</style>

23. Vue-element-ui组件

官方文档:https://element.eleme.cn/#/zh-CN/component/installation

  1. 安装element-ui: npm i element-ui --save

  1. 安装按需加载的依赖: npm install babel-plugin-component --save-dev

  1. 修改.babelrc

Copy{"presets":[["env",{"modules":false,"targets":{"browsers":["> 1%","last 2 versions","not ie <= 8"]}}],"stage-2"],"plugins":["transform-vue-jsx","transform-runtime",["component",{"libraryName":"element-ui","styleLibraryName":"theme-chalk "}]]}
  1. 引入组件(main.js)

Copyimport { Button } from'element-ui'Vue.use(Button)
  1. 使用组件

Copy<el-button type="primary">主要按钮</el-button>

npm install -d 就是npm install --save-dev
npm insatll -s 就是npm install --save
使用 --save-dev 安装的 插件,被写入到 devDependencies 域里面去,而使用 --save 安装的插件,则是被写入到 dependencies 区块里面去。
问题: throttle-debounce/throttle 安装不上 --未出现
presets中添加["es2015", { "modules": false }] 会报错

示例:

src/main.js

CopyimportVuefrom'vue'importAppfrom'./App'import { Button, Select, Option, Steps, Step } from'element-ui'// 按需导入Vue.use(Button)
Vue.use(Select)
Vue.use(Option)
Vue.use(Steps)
Vue.use(Step)

Vue.config.productionTip = falsenewVue({
  el: '#app', 
  components: { App }, 
  template: '<App/>' 
})

src/App.vue

Copy<template><divid="app"><el-buttontype="primary">主要按钮</el-button><el-selectv-model="value"placeholder="请选择"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"></el-option></el-select><br/><el-steps:active="active"finish-status="success"><el-steptitle="步骤 1"></el-step><el-steptitle="步骤 2"></el-step><el-steptitle="步骤 3"></el-step></el-steps><el-buttonstyle="margin-top: 12px;" @click="next">下一步</el-button></div></template><script>exportdefault {
  name: 'App',
  data(){
    return {
      active: 0,
      options: [{
          value: '选项1',
          label: '黄金糕'
        }, {
          value: '选项2',
          label: '双皮奶'
        }, {
          value: '选项3',
          label: '蚵仔煎'
        }, {
          value: '选项4',
          label: '龙须面'
        }, {
          value: '选项5',
          label: '北京烤鸭'
        }],
    }
  },
  methods: {
    next() {
      if (this.active++ > 2) this.active = 0;
    }
  }
  
}
</script><style></style>

24. Vue-常用组件swiper

swiper常用于移动端网站的内容触摸滑动

官网文档:https://github.surmon.me/vue-awesome-swiper/

中文文档:https://www.swiper.com.cn/api/

安装:npm install --save vue-avesome-swiper

(1)main.js中引入swipper

CopyimportVueAwesomeSwiperfrom'vue-awesome-swiper'import'swiper/dist/css/swiper.css'Vue.use(VueAwesomeSwiper)

(2)组件中使用

Copy<swiper:options="swiperOption"class="hello"><swiper-slidev-for="(slide, index) in swiperSlides":key="index"><p>{{ slide.title }}</p><p>{{ slide.type }}</p></swiper-slide><divclass="swiper-pagination"slot="pagination"></div><divclass="swiper-button-prev"slot="button-prev"></div><divclass="swiper-button-next"slot="button-next"></div></swiper>

(3)选项设置

Copydata() {
    return {
      swiperOption: {
        pagination: {
          el: '.swiper-pagination'
        },
        navigation: {   // 配置左右按钮可点nextEl: '.swiper-button-next',
          prevEl: '.swiper-button-prev',
        },
      },
      swiperSlides: [],
    }
  },

示例:

src/main.js

CopyimportVuefrom'vue'importAppfrom'./App'importVueAwesomeSwiperfrom'vue-awesome-swiper'importAxiosfrom'axios'import'swiper/dist/css/swiper.css'Vue.prototype.$axios = Axios;  // 不使用 Vue.use(Axios),而是绑定原型Vue.use(VueAwesomeSwiper)

// Axios.defaults.baseURL = 'https://httpbin.org'Vue.config.productionTip = falsenewVue({
  el: '#app', 
  components: { App }, 
  template: '<App/>' 
})

src/App.vue

Copy<template><divid="app"><swiper:options="swiperOption"class="hello"><swiper-slidev-for="(slide, index) in swiperSlides":key="index"><p>{{ slide.title }}</p><p>{{ slide.type }}</p></swiper-slide><divclass="swiper-pagination"slot="pagination"></div><divclass="swiper-button-prev"slot="button-prev"></div><divclass="swiper-button-next"slot="button-next"></div></swiper></div></template><script>exportdefault {
  name: 'App',
  data() {
    return {
      swiperOption: {
        pagination: {
          el: '.swiper-pagination'
        },
        navigation: {   // 配置左右按钮可点nextEl: '.swiper-button-next',
          prevEl: '.swiper-button-prev',
        },
      },
      swiperSlides: [],
    }
  },
  mounted() {
    this.$axios.get('https://httpbin.org/json')
    .then(res => {
      console.log(res.data.slideshow.slides)
      this.swiperSlides = res.data.slideshow.slides;
    })
    .catch(error =>{console.log(error)})
    // setInterval(() => {//   console.log('simulate async data')//   if (this.swiperSlides.length < 10) {//     this.swiperSlides.push(this.swiperSlides.length + 1)//   }// }, 3000)
  }
}
</script><style>.hello {
    width: 600px;
    height: 400px;
    background-color: #f1f1f1;
  }
</style>

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《知行合一王阳明》读书笔记

《知行合一王阳明》用通俗易懂的语言介绍了王阳明一生的传奇经历和他的心学的核心思想。这篇读后感主要介绍一下我对心学的理解。在我看来&#xff0c;心学最本质的要求是“致良知”&#xff0c;最核心的方法论是“知行合一”。致良知是说要遵从自己的本心。王阳明相信人性本善…

(蓝桥杯 刷题全集)【备战(蓝桥杯)算法竞赛-第1天(基础算法-上 专题)】( 从头开始重新做题,记录备战竞赛路上的每一道题 )距离蓝桥杯还有75天

&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6;&#x1f3c6; 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&a…

兔年新佳绩,思迈特软件获奖喜讯纷至沓来

近年来&#xff0c;随着大数据、云计算、人工智能、5G等技术加速创新&#xff0c;越来越多的ToB企业开始下沉探索边际&#xff0c;纵深业务服务场景&#xff0c;通过技术与行业的深度融合&#xff0c;为客户提供全面的转型服务&#xff0c;尽一切可能创造客户价值和商业价值。思…

【C++: list的模拟实现】

目录 1 list的简单回顾 2 类中成员变量的声明 3 __list_iterator 中运算符重载 4 list中的迭代器 5 list中增删查改以及clear 6 const迭代器 6.1 __list_iterator的重新实现 6.2 list类的巧妙修改 7 构造函数&&拷贝构造&&赋值运算符重载 8 反向迭代器…

金三银四丨黑蛋老师带你剖析-二进制漏洞

作者&#xff1a;黑蛋二进制漏洞岗上篇文章我们初步了解了一下简历投递方式以及二进制方向相关逆向岗位的要求&#xff0c;今天我们就来看看二进制漏洞相关的岗位&#xff0c;当然&#xff0c;漏洞岗位除了分不同平台&#xff0c;也有漏洞挖掘岗和漏洞分析利用岗。同样&#xf…

[人工智能-综述-11]:ChatGPT, 通用人工智能还是要来了

该来的还是要来的&#xff01;补充信息&#xff1a;ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型&#xff0c;一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&…

C语言共用体(C语言union用法)详解

我们知道结构体&#xff08;Struct&#xff09;是一种构造类型或复杂类型&#xff0c;它可以包含多个类型不同的成员。在C语言中&#xff0c;还有另外一种和结构体非常类似的语法&#xff0c;叫做共用体&#xff08;Union&#xff09;&#xff0c;它的定义格式为&#xff1a;un…

STM32的HAL库分析及使用

STM32的HAL库分析及使用 STM32的三种开发方式 通常新手在入门STM32的时候&#xff0c;首先都要先选择一种要用的开发方式&#xff0c;不同的开发方式会导致你编程的架构是完全不一样的。一般大多数都会选用标准库和HAL库&#xff0c;而极少部分人会通过直接配置寄存器进行开发…

【Mysql第八期 子查询】

文章目录前言1. 需求分析与问题解决1.2 子查询的基本使用1.3 子查询的分类2. 单行子查询2.1 单行比较操作符2.2 代码示例2.5 子查询中的空值问题3. 多行子查询3.1 多行比较操作符3.2 代码示例3.3 空值问题4. 相关子查询4.2 代码示例4.3 EXISTS 与 NOT EXISTS关键字4.4 相关更新…

开发者社区「运营官」招募启动啦!

国内首个聚焦AI3D视觉技术的开发者社区「运营官」招募启动啦&#xff01; 想积累实习经验&#xff0c;却苦于找不到大厂机会&#xff1f; 想进入AI3D视觉行业&#xff0c;却苦于没有知音伯乐&#xff1f; 想积累更多工作经历&#xff0c;却苦于路程奔波、天各一方&#xff1f…

我们的微服务中为什么需要网关?

说起 Spring Cloud Gateway 的使用场景&#xff0c;我相信很多小伙伴都能够脱口而出认证二字&#xff0c;确实&#xff0c;在网关中完成认证操作&#xff0c;确实是 Gateway 的重要使用场景之一&#xff0c;然而并不是唯一的使用场景。在微服务中使用网关的好处可太多了&#x…

MODBUS TCP 转 PROFINET 网关从站快速配置手册

一、本案例是1500PLC通过微硬创新MODBUS TCP 转 PROFINET 网关连接组态王服务器从站快速配置&#xff0c;将 Modbus TCP 设备数据转接入到西门子 PROFINET 网络中 二、设备列表如下&#xff1a; 三、MODBUS TCP 转 PROFINET 网关从站快速配置方法步骤&#xff1a; 第1步&#x…

全网最详细的介绍ChatGPT:包括ChatGPT原理、应用、如何试用以及回答ChatGPT能否让程序员失业

文章目录1. 介绍ChatGPT2. ChatGPT示例3. 试用ChatGPT4. ChatGPT原理5. ChatGPT应用5.1 世界杯问题咨询5.2 写书信&#xff08;情书&#xff09;6. 总结1. 介绍ChatGPT 今天开车去上班的路上&#xff0c;听到电台介绍ChatGPT&#xff0c;此时百度的股价涨幅为25%&#xff0c;当…

谈谈Spring中Bean的生命周期?(让你瞬间通透~)

目录 1.Bean的生命周期 1.1、概括 1.2、图解 2、代码示例 2.1、初始化代码 2.2、初始化的前置方法和后置方法&#xff08;重写&#xff09; 2.3、Spring启动类 2.4、执行结果 2.5、经典面试问题 3.总结 1.Bean的生命周期 1.1、概括 Spring中Bean的生命周期就是Bean在…

Spring Cloud Alibaba+saas企业架构技术选型+架构全景业务图 + 架构典型部署方案

基于Spring Cloud Alibaba 分布式微服务高并发数据平台化(中台)思想多租户saas设计的企业开发架构&#xff0c;支持源码二次开发、支持其他业务系统集成、集中式应用权限管理、支持拓展其他任意子项目。 一、架构技术选型 核心框架 Spring Boot SOA Spring Cloud …

如何搞垮一个测试团队【反向教学,最为致命】

如何搞垮一个测试团队【反向教学&#xff0c;最为致命】 目录&#xff1a;导读 一、QA 二、项目经理 三、产品经理 四、开发人员 五、测试人员 六、组织文化 七、组织战略 要想彻底搞垮一个测试团队并非易事&#xff0c;需要多角色通力配合、多方联动、综合施策&#x…

FFmpeg5.0源码阅读——内存池AVBufferPool

摘要&#xff1a;FFmpeg中大多数数据存储比如AVFrame,AVPacket都是通过AVBufferRef管理的&#xff0c;而承载数据的结构为AVBuffer。本文主要通过FFmpeg源码来分析下FFmpeg中AVBuffer相关的实现。 关键字&#xff1a;AVBuffer、AVBufferPool、AVBufferPool 1. AVBufferRef 1.…

谁说菜鸟不会数据分析,不用Python,不用代码也轻松搞定

作为一个菜鸟&#xff0c;你可能觉得数据分析就是做表格的&#xff0c;或者觉得搞个报表很简单。实际上&#xff0c;当前有规模的公司任何一个岗位如果没有数据分析的思维和能力&#xff0c;都会被淘汰&#xff0c;数据驱动分析是解决日常问题的重点方式。很多时候&#xff0c;…

RS232串口之RTS与CTS作用

RTS与CTS的定义 RTS和CTS用于流控&#xff0c;提供了流控信号&#xff0c;但实际的流控功能还是要在软件实现&#xff0c;就是说即使硬件上RTS和CTS做了连线&#xff0c;但软件没有使用这两个信号&#xff0c;则通信就如无流控状态。 RTS &#xff08;Require ToSend&#xf…

力扣64.最小路径和

文章目录力扣64.最小路径和题目描述方法1&#xff1a;动态规划力扣64.最小路径和 题目描述 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步…