2024年Vue最常见的面试题以及答案(面试必过),数据结构与算法面试题及答案_面试题 vue 数结构数据怎么组合-程序员宅基地

技术标签: 2024年程序员学习  面试  前端  vue.js  

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

vue中data的属性可以和methods中方法同名吗,为什么?

===============================================================================================

可以同名,methods的方法名会被data的属性覆盖;调试台也会出现报错信息,但是不影响执行;

原因:源码定义的initState函数内部执行的顺序:props>methods>data>computed>watch

//initState部分源码

export function initState (vm: Component) {

vm._watchers = []

const opts = vm.$options

if (opts.props) initProps(vm, opts.props)

if (opts.methods) initMethods(vm, opts.methods)

if (opts.data) {

initData(vm)

} else {

observe(vm._data = {}, true /* asRootData */)

}

if (opts.computed) initComputed(vm, opts.computed)

if (opts.watch && opts.watch !== nativeWatch) {

initWatch(vm, opts.watch)

}

}

vue中created与mounted区别

====================================================================================

在created阶段,实例已经被初始化,但是还没有挂载至el上,所以我们无法获取到对应的节点,但是此时我们是可以获取到vue中data与methods中的数据的;

在mounted阶段,vue的template成功挂载在$el中,此时一个完整的页面已经能够显示在浏览器中,所以在这个阶段,可以调用节点了;

//以下为测试vue部分生命函数,便于理解

beforeCreate(){ //创建前

console.log(‘beforecreate:’,document.getElementById(‘first’))//null

console.log(‘data:’,this.text);//undefined

this.sayHello();//error:not a function

},

created(){ //创建后

console.log(‘create:’,document.getElementById(‘first’))//null

console.log(‘data:’,this.text);//this.text

this.sayHello();//this.sayHello()

},

beforeMount(){ //挂载前

console.log(‘beforeMount:’,document.getElementById(‘first’))//null

console.log(‘data:’,this.text);//this.text

this.sayHello();//this.sayHello()

},

mounted(){ //挂载后

console.log(‘mounted:’,document.getElementById(‘first’))//

console.log(‘data:’,this.text);//this.text

this.sayHello();//this.sayHello()

}

Vue中computed与method的区别

=====================================================================================

相同点:

如果作为模板的数据显示,二者能实现响应的功能,唯一不同的是methods定义的方法需要执行

不同点:

1.computed 会基于响应数据缓存,methods不会缓存;

2.diff之前先看data里的数据是否发生变化,如果没有变化computed的方法不会执行,但methods里的方法会执行

3.computed是属性调用,而methods是函数调用

虚拟DOM中key的作用

===========================================================================

简单的说:key是虚拟DOM对象的标识,在更新显示时key起着极其重要的作用。

复杂的说:当状态中的数据发生了变化时,react会根据【新数据】生成【新的虚拟DOM】,随后React进行【新虚拟DOM】与【旧虚拟DOM】的diff比较,比较规则如下:

  • 旧虚拟DOM中找到了与新虚拟DOM相同的key

1.若虚拟DOM中的内容没有变,直接使用之前的真是DOM

2.若虚拟DOM中内容变了,则生成新的真实DOM,随后替换掉页面中之前的真实DOM

  • 旧虚拟DOM中未找到与新虚拟DOM相同的key

1.根据数据创建新的真实DOM,随后渲染到页面

用index作为key可能会引发的问题

==================================================================================

  • 若对数据进行:逆序添加/逆序删除等破坏顺序的操作,会产生没有必要的真实DOM更新,界面效果虽然没有问题,但是数据过多的话,会效率过低;

  • 如果结构中还包含输入类的DOM,会产生错误DOM更新,界面有问题;

  • 注意!如果不存在对数据的逆序操作,仅用于渲染表用于展示,使用index作为key是没有问题的。

Vue中watch用法详解

============================================================================

在vue中,使用watch来监听数据的变化;

1.监听的数据后面可以写成对象形式,包含handler方法,immediate和deep。

2.immediate表示在watch中首次绑定的时候,是否执行handler,值为true则表示在watch中声明的时候,就立即执行handler方法,值为false,则和一般使用watch一样,在数据发生变化的时候才执行handler。

3.当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,只有data中的数据才能够监听到变化,此时就需要deep属性对对象进行深度监听。

watch: {

name: {

handler(newName, oldName) {

},

deep: true,

immediate: true

}

}

vue中对mixins的理解和使用

================================================================================

mixins是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件选项。当组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。

而mixins引入组件之后,则是将组件内部的内容如data等方法、method等属性与父组件相应内容进行合并。相当于在引入后,父组件的各种属性方法都被扩充了。

可点击vue中对mixins的理解和使用的介绍作为参考

vue中的插槽

======================================================================

在这里插入图片描述

或者点击Vue中组件神兵利器,插槽Slot!查看详解!

为什么vue采用异步渲染

===========================================================================

vue是组件级更新,当前组件里的数据变了,它就会去更新这个组件。当数据更改一次组件就要重新渲染一次,性能不高,为了防止数据一更新就更新组件,所以做了个异步更新渲染。(核心的方法就是nextTick)

源码实现原理:

当数据变化后会调用notify方法,将watcher遍历,调用update方法通知watcher进行更新,这时候watcher并不会立即去执行,在update中会调用queueWatcher方法将watcher放到了一个队列里,在queueWatcher会根据watcher的进行去重,多个属性依赖一个watcher,如果队列中没有该watcher就会将该watcher添加到队列中,然后通过nextTick异步执行flushSchedulerQueue方法刷新watcher队列。flushSchedulerQueue中开始会触发一个before的方法,其实就是beforeUpdate,然后watcher.run() 才开始真正执行watcher,执行完页面就渲染完成啦,更新完成后会调用updated钩子。

在这里插入图片描述

Vue 的异步更新机制是如何实现的?

=================================================================================

Vue 的异步更新机制的核心是利用了浏览器的异步任务队列来实现的,首选微任务队列,宏任务队列次之。

当响应式数据更新后,会调用 dep.notify 方法,通知 dep 中收集的 watcher 去执行 update 方法,watcher.update 将 watcher 自己放入一个 watcher 队列(全局的 queue 数组)。

然后通过 nextTick 方法将一个刷新 watcher 队列的方法(flushSchedulerQueue)放入一个全局的 callbacks 数组中。

如果此时浏览器的异步任务队列中没有一个叫 flushCallbacks 的函数,则执行 timerFunc 函数,将 flushCallbacks 函数放入异步任务队列。如果异步任务队列中已经存在 flushCallbacks 函数,等待其执行完成以后再放入下一个 flushCallbacks 函数。

flushCallbacks 函数负责执行 callbacks 数组中的所有 flushSchedulerQueue 函数。

flushSchedulerQueue 函数负责刷新 watcher 队列,即执行 queue 数组中每一个 watcher 的 run 方法,从而进入更新阶段,比如执行组件更新函数或者执行用户 watch 的回调函数。

$nextTick的理解

===========================================================================

用法:

在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

为什么?

Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。Vue 在更新 DOM 时是异步执行的。只要侦听到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作是非常重要的。然后,在下一个的事件循环“tick”中,Vue 刷新队列并执行实际 (已去重的) 工作。

所以为了在数据变化之后等待 Vue 完成更新 DOM,可以在数据变化之后立即使用 Vue.nextTick(callback)。这样回调函数将在 DOM 更新完成后被调用。

使用场景

在你更新完数据后,需要及时操作渲染好的 DOM时

Vue中常用的一些指令

==========================================================================

1.v-model指令:用于表单输入,实现表单控件和数据的双向绑定。

2.v-on:简写为@,基础事件绑定

3.v-bind:简写为:,动态绑定一些元素的属性,类型可以是:字符串、对象或数组。

4.v-if指令:取值为true/false,控制元素是否需要被渲染

5.v-else指令:和v-if指令搭配使用,没有对应的值。当v-if的值false,v-else才会被渲染出来。

6.v-show指令:指令的取值为true/false,分别对应着显示/隐藏。

7.v-for指令:遍历data中存放的数组数据,实现列表的渲染。

8.v-once: 通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新

vue的自定义指令

========================================================================

Vue除了核心功能默认内置的指令 ,Vue 也允许注册自定义指令。

自定义指令是用来操作DOM的。尽管Vue推崇数据驱动视图的理念,但并非所有情况都适合数据驱动。自定义指令就是一种有效的补充和扩展,不仅可用于定义任何的DOM操作,并且是可复用的。

添加自定义指令的两种方式:

  • 全局指令: 通过 Vue.directive() 函数注册一个全局的指令。

  • 局部指令:通过组件的 directives 属性,对该组件添加一个局部的指令。

可以参考如何写一个Vue自定义指令Vue.js官网关于自定义指令的详细讲解学习

你有写过自定义指令吗?自定义指令的应用场景有哪些?

========================================================================================

可以参考如何写一个Vue自定义指令

v-show和v-if指令的共同点和不同点

====================================================================================

相同点:

v-show和v-if都能控制元素的显示和隐藏。

不同点:

1.实现本质方法不同:v-show本质就是通过设置css中的display设置为none;控制隐藏v-if是动态的向DOM树内添加或者删除DOM元素;

2.v-show都会编译,初始值为false,只是将display设为none,但它也编译了;v-if初始值为false,就不会编译了

总结:v-show只编译一次,后面其实就是控制css,而v-if不停的销毁和创建,如果要频繁切换某节点时,故v-show性能更好一点。

为什么避免v-if和v-for一起使用

==================================================================================

vue2.x版本中,当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级;

vue3.x版本中,当 v-if 与 v-for 一起使用时,v-if 具有比 v-for 更高的优先级。

官网明确指出:避免 v-if 和 v-for 一起使用,永远不要在一个元素上同时使用 v-if 和 v-for。

可以先对数据在计算数据中进行过滤,然后再进行遍历渲染;

操作和实现起来都没有什么问题,页面也会正常展示。但是会带来不必要的性能消耗;

vue为什么在 HTML 中监听事件?

==================================================================================

你可能注意到这种事件监听的方式违背了关注点分离 (separation of concern) 这个长期以来的优良传统。但不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel 上,它不会导致任何维护上的困难。实际上,使用 v-on 或 @ 有几个好处:

  • 扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。

  • 因为你无须在 JavaScript 里手动绑定事件,你的 ViewModel 代码可以是非常纯粹的逻辑,和 DOM 完全解耦,更易于测试。

  • 当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何清理它们。

Vue.set 改变数组和对象中的属性

==================================================================================

在一个组件实例中,只有在data里初始化的数据才是响应的,Vue不能检测到对象属性的添加或删除,没有在data里声明的属性不是响应的,所以数据改变了但是不会在页面渲染;

解决办法:

使用 Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上

vm.$set(obj, key, val) 做了什么?

===========================================================================================

由于 Vue 无法探测对象新增属性或者通过索引为数组新增一个元素,所以这才有了 vm. s e t , 它 是 V u e . s e t 的 别 名 。 v m . set,它是 Vue.set 的别名。 vm. set,它是Vue.set的别名。vm.set 用于向响应式对象添加一个新的 property,并确保这个新的 property 同样是响应式的,并触发视图更新。

  • 为对象添加一个新的响应式数据:调用 defineReactive 方法为对象增加响应式数据,然后执行 dep.notify 进行依赖通知,更新视图

  • 为数组添加一个新的响应式数据:通过 splice 方法实现

说说vue的生命周期的理解

============================================================================

生命周期通俗说就是Vue实例从创建到销毁的过程,就是生命周期。

beforecreate (初始化界面前)

created (初始化界面后)

beforemount (渲染界面前)

mounted (渲染界面后)

beforeUpdate (更新数据前)

updated (更新数据后)

beforedestory (卸载组件前)

destroyed (卸载组件后)

注意:面试官想听到的不只是你说出了以上八个钩子名称,而是每个阶段做了什么?可以收藏下图!

在这里插入图片描述

第一次页面加载会触发哪几个钩子?

===============================================================================

第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子

Vue组件通信有哪些方式

===========================================================================

1.父传子:props

父组件通过 props 向下传递数据给子组件。注:组件中的数据共有三种形式:data、props、computed

2.父传子孙:provide 和 inject

父组件定义provide方法return需要分享给子孙组件的属性,子孙组件使用 inject 选项来接收指定的我们想要添加在这个实例上的 属性;

3.子传父:通过事件形式

子组件通过 $emit()给父组件发送消息,父组件通过v-on绑定事件接收数据。

4.父子、兄弟、跨级:eventBus.js

这种方法通过一个空的 Vue 实例作为中央事件总线(事件中心),用它来( e m i t ) 触 发 事 件 和 ( emit)触发事件和( emit)触发事件和(on)监听事件,巧妙而轻量地实现了任何组件间的通信。

5.通信插件:PubSub.js

6.vuex

vuex 是 vue 的状态管理器,存储的数据是响应式的。只需要把共享的值放到vuex中,其他需要的组件直接获取使用即可;

router和route的区别

==============================================================================

router为VueRouter的实例,相当于一个全局的路由器对象,里面含有很多属性和子对象,例如history对象。。。经常用的跳转链接就可以用this.$router.push,和router-link跳转一样。

route相当于当前正在跳转的路由对象。。可以从里面获取name,path,params,query等

vue-router有几种钩子函数?

=================================================================================

1.全局路由

全局导航钩子主要有两种钩子:前置守卫(beforeEach)、后置钩子(afterEach)

2. 路由独享的钩子

单个路由独享的导航钩子,它是在路由配置上直接进行定义的

routes: [

{

path: ‘/file’,

component: File,

beforeEnter: (to, from ,next) => {

//do something

}

}

]

  1. 组件内的导航钩子

组件内的导航钩子主要有这三种:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave。他们是直接在路由组件内部直接进行定义的。

ps:详细知识点可以点击路由导航守卫查看;

vue-router路由跳转方式

===============================================================================

声明式(标签跳转)

编程式( js跳转)

this.$router.push(‘/home’)

this.$router.push({name:‘home’})

this.$router.push({path:‘/home’})

vue-router路由传参

=============================================================================

router-link 进行页面按钮式路由跳转传参

this.$router.push进行编程式路由跳转传参

keep-alive了解吗

============================================================================

< keep-alive >是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

< keep-alive > 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。

Vuex是什么?怎么使用?

============================================================================

Vuex是实现组件全局状态(数据)管理的一种机制,可以方便实现组件数据之间的共享;Vuex集中管理共享的数据,易于开发和后期维护;能够高效的实现组件之间的数据共享,提高开发效率;存储在Vuex的数据是响应式的,能够实时保持页面和数据的同步;

Vuex重要核心属性包括:state,mutations,action,getters,modules.

state

Vuex 使用单一状态树,即每个应用将仅仅包含一个store 实例,但单一状态树和模块化并不冲突。存放的数据状态,不可以直接修改里面的数据。

mutations

mutations定义的方法动态修改Vuex 的 store 中的状态或数据。

action

actions可以理解为通过将mutations里面处里数据的方法变成可异步的处理数据的方法,简单的说就是异步操作数据。view 层通过 store.dispath 来分发 action。

getters

类似vue的计算属性,主要用来过滤一些数据。

modules

项目特别复杂的时候,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。

ps:详细使用和对其各属性的理解可以参考以下文章!

认识vuex和使用

核心概念State和Mutation的理解和使用

核心概念Action和Getter的理解和使用

什么情况下使用 Vuex?

============================================================================

如果应用够简单,最好不要使用 Vuex,一个简单的 store 模式即可;

需要构建一个中大型单页应用时,使用Vuex能更好地在组件外部管理状态;

Vuex和单纯的全局对象有什么区别?

=================================================================================

Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。

不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

为什么 Vuex 的 mutation 中不能做异步操作?

============================================================================================

每个mutation执行完成后都会对应到一个新的状态变更,这样devtools就可以打个快照存下来,然后就可以实现 time-travel 了。如果mutation支持异步操作,就没有办法知道状态是何时更新的,无法很好的进行状态的追踪,给调试带来困难。

axios 是什么,其特点和常用语法

=================================================================================

是什么?

  1. Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。前端最流行的 ajax 请求库,

  2. react/vue 官方都推荐使用 axios 发 ajax 请求

特点:

  1. 基于 promise 的异步 ajax 请求库,支持promise所有的API

  2. 浏览器端/node 端都可以使用,浏览器中创建XMLHttpRequests

  3. 支持请求/响应拦截器

  4. 支持请求取消

  5. 可以转换请求数据和响应数据,并对响应回来的内容自动转换成 JSON类型的数据

  6. 批量发送多个请求

  7. 安全性更高,客户端支持防御 XSRF,就是让你的每个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,这样,后台就可以轻松辨别出这个请求是否是用户在假冒网站上的误导输入,从而采取正确的策略。

常用语法:

axios(config): 通用/最本质的发任意类型请求的方式

axios(url[, config]): 可以只指定 url 发 get 请求

axios.request(config): 等同于 axios(config)

axios.get(url[, config]): 发 get 请求

axios.delete(url[, config]): 发 delete 请求

axios.post(url[, data, config]): 发 post 请求

axios.put(url[, data, config]): 发 put 请求

axios.defaults.xxx: 请求的默认全局配置

axios.interceptors.request.use(): 添加请求拦截器

axios.interceptors.response.use(): 添加响应拦截器

axios.create([config]): 创建一个新的 axios(它没有下面的功能)

axios.Cancel(): 用于创建取消请求的错误对象

axios.CancelToken(): 用于创建取消请求的 token 对象

axios.isCancel(): 是否是一个取消请求的错误

axios.all(promises): 用于批量执行多个异步请求

axios.spread(): 用来指定接收所有成功数据的回调函数的方法

对SSR有了解吗,它主要解决什么问题?

==================================================================================

Server-Side Rendering 我们称其为SSR,意为服务端渲染指由服务侧完成页面的 HTML 结构拼接的页面处理技术,发送到浏览器,然后为其绑定状态与事件,成为完全可交互页面的过程;

解决了以下两个问题:

  • seo:搜索引擎优先爬取页面HTML结构,使用ssr时,服务端已经生成了和业务想关联的HTML,有利于seo

  • 首屏呈现渲染:用户无需等待页面所有js加载完成就可以看到页面视图(压力来到了服务器,所以需要权衡哪些用服务端渲染,哪些交给客户端)

缺点

  • 复杂度:整个项目的复杂度

  • 性能会受到影响

  • 服务器负载变大,相对于前后端分离务器只需要提供静态资源来说,服务器负载更大,所以要慎重使用

Vue要做权限管理该怎么做?控制到按钮级别的权限怎么做?

===========================================================================================

具体详解查看Vue要做权限管理该怎么做?控制到按钮级别的权限怎么做

Vue项目前端开发环境请求服务器接口跨域问题

=====================================================================================

对于vue-cli 2.x版本在config文件夹配置服务器代理;

对于vue-cli 3.x版本前端配置服务器代理在vue.config.js中设置服务器代理;如下图:

在这里插入图片描述

target对应的属性值为你准备向后端服务器发送请求的主机+端口,含义为:相当于把前端发送请求的主机+端口自动替换成挂载的主机和端口,这样前后端的主机端口都一一就不会存在跨域问题;

ws:表示WebSocket协议;

changeOrigin:true;表示是否改变原域名;这个一定要选择为true;

这样发送请求的时候就不会出现跨域问题了。

做过哪些Vue的性能优化?

最后

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
g.js中设置服务器代理;如下图:

在这里插入图片描述

target对应的属性值为你准备向后端服务器发送请求的主机+端口,含义为:相当于把前端发送请求的主机+端口自动替换成挂载的主机和端口,这样前后端的主机端口都一一就不会存在跨域问题;

ws:表示WebSocket协议;

changeOrigin:true;表示是否改变原域名;这个一定要选择为true;

这样发送请求的时候就不会出现跨域问题了。

做过哪些Vue的性能优化?

最后

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-oinfNeKJ-1713273659003)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_61040489/article/details/137840993

智能推荐

nmap 查看服务器版本信息,nmap命令-nmap命令扫描服务器信息的格式-程序员宅基地

文章浏览阅读3.1k次。用这条命令就可以扫描出目标网络的操作系统和开放端口号nmap-O...0/24上面的扫描信息直接输出到终端,如果想把结果写到文件里,可以用-oN,-oX选项输出到文本文件或xml文件。nmap-O...0/24-oXnmap_info.xml,结果会输出到XML文件:nmap_info.xml。nmap-O...0/24-oNnmap_info.nmap,结果会输出到普通文件:nmap_info...._nmap 查看系统版本

我说我不会Mybatis-Plus,他说你看这一篇试试-程序员宅基地

文章浏览阅读449次。在相同的Mapper接口中,可以定义自己的方法,并在对应的XML文件中为这些方法提供SQL语句或Mybatis查询逻辑。

基于OpenCV的火焰检测(三)——HSI颜色判据-程序员宅基地

文章浏览阅读160次。上文向大家介绍了如何用最简单的RGB判据来初步提取火焰区域,现在我要给大家分享的是一种更加直观的判据——HSI判据。 为什么说HSI判据是更加直观的判据呢?老规矩,先介绍一下HSI色彩模型: HSI颜色模型用H、S、I三参数描述颜色特性,其中: H表示颜色的色调,它表示人的感官对不同颜色的感受,如红色、绿色、蓝色等,它也可表示一定范围的颜色,如暖色、冷色等..._c# 通过hsi进行颜色判断

实验四python程序设计之文件_python程序设计实验报告八:文件-程序员宅基地

文章浏览阅读560次。安徽工程大学Python程序设计实验报告班级物流191 姓名郭森学号3190505134 成绩日期2020.6.2 指导老师修宇实验八 文件【实验目的】掌握读写文本文件或 CSV 文件,进而对数据进行处理的方法。【实验条件】PC机或者远程编程环境【实验内容】完成二个编程题。1、水浒传词频统计水浒传-词频统计(1)描述使用词频统计的方法,生成《水浒传》出场次数最多的10个人物的姓名。(2..._根据所给素材:ctiyname.txt及不完整代码,参考创建项目,编写代码实现解析,并输出如

域名--泛解析-程序员宅基地

文章浏览阅读78次。背景:主域名下多数子域名访问后直接跳转至www域名的服务。百度百科--域名泛解析:在域名前添加任何子域名,均可访问到所指向的WEB地址。也就是客户的域名#.com之下所设的*.#.com全部。泛域名解析:利用通配符* (星号)来做次级域名以实现所有的次级域名均指向同一IP地址。子域名挖掘: 泛解析这个问题的解决方法很简单,向DNS请求*记录,然后把枚举子域名回来的..._dns枚举泛解析

基于对赋值为随机数的数组实现打印、求和及最大值、平均值的计算,排序问题_编写一个方法,对数组的元素用[0,100)之间的随机数进行初始化,初始化之后对数组进-程序员宅基地

文章浏览阅读206次。我们先定义一个数组x并为其分配储存空间,如下:int[] x=new x[100] 想要对数组中的每一个元素进行随机数赋值,需要用到循环控制语句,这里以for循环为例:定义一个变量i并赋值为0,作为for循环的起始条件;需要注意的是,数组的下标是从0开始的,比如x[0]到x[99],代表数组的长度为100。所以再写入判断语句的时候,不能写成a<=x.length;控制变量语句应写入自加语句。在循环体里,对x[a]进行随机数赋值,以0到100为例如图: 完成对x[a]的赋值之后,开始写入打印代_编写一个方法,对数组的元素用[0,100)之间的随机数进行初始化,初始化之后对数组进

随便推点

城市建筑类毕业论文文献都有哪些?_城市空间文献有哪些-程序员宅基地

文章浏览阅读204次。本文是为大家整理的城市建筑主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇学位论文,为城市建筑选题相关人员撰写毕业论文提供参考。_城市空间文献有哪些

会声会影软件2023破解版最新激活序列号_会声会影2023-程序员宅基地

文章浏览阅读3.3k次。会声会影2023简单易用,具有拖放式标题、转场、覆叠和滤镜,色彩分级、动态分屏视频和新增强的遮罩创建器,超越基本编辑,实现影院级效果。优化分屏剪辑功能,简化多时间轴编辑的工作流程,让创作更轻松。添加趣味性3D标题,内置NewBlueFX和proDAD转场和防抖插件,一键防抖和校准色彩。使用MultiCam Capture Lite可以轻松录制并编辑视频教程、产品演示、游戏视频、在线课程。会声会影2023的智能工具,使用AI面部识别对效果最好的照片和视频片段进行分析,提取,并编译到可以项目中,将我们的精彩时刻_会声会影2023

Spring Boot 中的异步调用_springboot异步调用-程序员宅基地

文章浏览阅读1w次,点赞9次,收藏53次。Spring Boot 中的异步调用通常我们开发的程序都是同步调用的,即程序按照代码的顺序一行一行的逐步往下执行,每一行代码都必须等待上一行代码执行完毕才能开始执行。而异步编程则没有这个限制,代码的调用不再是阻塞的。所以在一些情景下,通过异步编程可以提高效率,提升接口的吞吐量。这节将介绍如何在Spring Boot中进行异步编程。要开启异步支持,首先得在Spring Boot入口类上加上@EnableAsync注解:@SpringBootApplication@EnableAsyncpublic _springboot异步调用

VK1668 SSOP24兼用TM1668的LED数码驱动芯片_sm1668led驱动芯片与tm1668芯片可通用?-程序员宅基地

文章浏览阅读1.6k次。概述VK1668 是 1/5~1/8 占空比的 LED 显示控制驱动电路。由 10 根段输出、4 根栅输出、3 根段/栅输出,1 个显示存储器、控制电路、键扫描电路组成了一个高可靠性的单片机外围 LED 驱动电路。串行数据通过4线串行接口输入到 VK1668采用 SOP24 的封装形式。功能特点1.CMOS 工艺2. 低功耗3.多种显示模式:设置选择段和位的个数(4~7 位,10~1..._sm1668led驱动芯片与tm1668芯片可通用?

com wechat.class.php,wechat-php-sdk/wechat.class.php at master · l953422179/wechat-php-sdk · GitHub...-程序员宅基地

文章浏览阅读127次。/***微信公众平台PHP-SDK, 官方API部分* @author dodge * @link https://github.com/dodgepudding/wechat-php-sdk* @version 1.1* usage:* $options = array(*'token'=>'tokenaccesskey' //填写你设定的key*);* $weObj = n..._public static function message($msg='',$link=''){ $datatype = ifilter::a

交流电过零点检测电路总结_交流过零检测电路-程序员宅基地

文章浏览阅读7.3k次,点赞3次,收藏32次。交流电的过零点检测方案较多,目前较常见的也是我之前所使用的方案如图1所示:图1 交流电光耦过零检测电路图1的电路可以检测到交流电经过零点的时间,但是它存在诸多的弊端,现列举如下:电阻消耗功率太大,发热较多。220V交流电,按照有效值进行计算三个47K的电阻平均每个电阻的功率为220^2/(3*47k)/3=114.42mw。对于0805的贴片电阻按照1/8w的功率计算,当前的消耗功率接近其额..._交流过零检测电路

推荐文章

热门文章

相关标签