CVTE前端面经(2023)

news2025/7/27 17:33:19

CVTE前端面经

  • 项目介绍(重点)
  • 在数据B中找到数组A对应的值,并把数组B对应的值放在数据最前面
  • css
    • 1 定位
    • 2 外边距
    • 3 css高级应用
      • 3.1. 过渡
      • 3.2. 变形
    • 2. 浮动
      • 2.1 浮动元素特点
      • 2. 2 清除浮动
    • 3. html5语义标签
    • 4. 实现圣杯布局的两种方式
      • 4.1 定位+浮动
      • 4.2 flex布局
    • 5. 两栏布局
    • 6. 水平垂直居中
      • 6.1 水平居中
      • 6.2 垂直居中
      • 6.3 水平垂直居中
  • JS
    • 1. es6新增的数据类型
    • 2. 数据类型的判别
    • 3. 栈和堆的区别,为什么栈可以保存基础数据类型,为什么可以频繁操作
    • 4. 手写深拷贝
    • 5. 重绘和重排,怎么减少重排?
    • 6. 垃圾回收机制
    • 7. promise是什么 promise 有哪些方法,promise.all 和 promise.race 的区别(这两者里面的promise的执行顺序) 实现一个20个请求的串行和并行 promise(我讲了链式调用 但是面试官并不太满意,更优雅的方式)
    • 8. Promise如何用来进行限定并发请求个数的功能,说下思路?
    • 9. 浏览器加载原理
  • VUE
    • 1. React和VUE的区别
    • 2. vue3有什么更新,为什么项目用vue2
  • 浏览器
    • 1. 浏览器如何渲染
    • 2. 输入google会发生什么
    • 3. 浏览器事件循环机制
    • 4. 常见网络攻击
    • 5. 浏览器本地化存储 cookie sessionStorage localStorage indexDB
    • 6. 就比如那个promise,他问你怎么一张一张图片发,常规就是一直.then()下去,也可以用all去减少then的层级,用promise第一次请求的结果和第二次请求放到all数组里面,但面试官应该是想听到async await, await 请求一 await请求二 用同步的方式写异步,代码可读性可维护性都好。。
    • 你说到了用gzip压缩请求数据,那你还了解其他相关的content-coding方式么?
  • 计算机网络
    • 1. https和http的区别
    • 2. HTTP2有哪些特性
  • 网页优化
    • 1. 性能优化方式
    • 2. 首屏优化方式
    • 3. 首屏加载速度可以怎么改善
    • 4. 如何提高页面加载速度
    • 5. cookie 有什么值(似乎把 secure 和 httponly 弄混了)
  • 设计模式
    • 1. 简单说一下设计模式
    • 2. 项目中用到了什么设计模式
  • 数据结构
    • 1. 常见的排序,堆排序
    • 2. 平衡二叉树
    • 3. 使用两个栈模仿队列

项目介绍(重点)

在数据B中找到数组A对应的值,并把数组B对应的值放在数据最前面

数组的遍历

  • for …of:遍历数组项,可以随时使用break语句停止遍历
  • for 循环使用递增的索引变量遍历数组项
  • array.forEach():方法通过在每个数组项上调用callback函数来遍历数组项
  • array.map(callback)方法通过在每个数组项上使用callback调用结果来创建一个新的数组。
  • array.from()方法通过在每个数据项上使用callback调用结果来创建一个新数组
  • array.reduce()可以进行累加求和。
  • 数组的拷贝
    • array.concat()将一个或多个数组连接到原始数组。连接两个数组
    • array.slice()返回数组的一个片段,该片段从fromIndex开始,toIndex结尾(但不包括toIndex本身)
      • array.slice())是另一种拷贝数组的方法。
  • 查找数组
    • array.includes()返回一个布尔值,判断是否包含itemToSearch。
    • array.find()方法返回数组中满足提供的测试函数的第一个元素的值,否则返回undefined
    • array.indexOf()返回array中第一个出现的itemToSearch的索引。
  • 查询数组
    • array.every(),遍历每一个数组,是否都通过callback的检查,返回结果是boolean
    • array.som(),只要有一个通过callback的检查,就会返回true。
  • 数组过滤
    • array.filter()方法创建一个新数组,其包含所有通过callback测试的所有元素。
      • filter是创建一个新的数组,不改变原始数组。
  • 数组的插入
    • array.push()将一个或多个项目追加到数组的末尾
    • array.unshift()将一个或多个项追加到数组的开头,返回数组的新长度
  • 删除数组元素
    • array.pop()从数组中删除最后的一个元素
    • array.shift()从数组中删除第一个元素
    • array.splice()从数组中删除元素,并插入新的元素
  • 清空数组
    • array.length=0 删除数组中所有的项目
    • array.splice()从数组中删除元素,并插入新的元素
  • 数组扁平化:array.flat()

css

css中有三种基本定位机制:普通文档流、浮动、定位

1 定位

static(静态定位)、relative (相对定位)、absolute (绝对定位)、fixed(固定定位)。

静态定位:元素 默认的定位方式,无法通过位置偏移属性(top、bottom、left或right)来改变元素的位置。
相对定位:是普通文档流的一部分,相对于本元素在文档原来出现位置的左上角进行定位,可以通过位置偏移属性改变元素的位置。虽然其移动到其他位置,但该元素仍占据原来未移动时的位置,该元素移动后会导致其覆盖其他的框元素

  • 代码展示:
      .he1 {
            height: 100px;
             width: 100px;
             background-color: rgb(164, 175, 219);
         }
    
         .he2 {
             position: relative;
             top: -10px;
             right: -20px;
             height: 100px;
             width: 100px;
             background-color: rgb(238, 177, 197);
         }
          <div class="he1">
    	      盒子1
    	   </div>
    	   <div class="he2">
    	       盒子2
    	   </div>
    
    在这里插入图片描述
    如果给盒子2加上 z-index:-1的话,可以使得盒子2在盒子1的下面
    在这里插入图片描述
    绝对定位:脱离文档流,不占据原来未移动时的位置,相对于父级元素或更 高的祖先元素中有relative。(也可以是absolute,开absolute会开启BFC,所以效果可能会跟设置relative不一样)
    固定定位:是绝对定位的一种特殊形式,以浏览器窗口作为参照物来定义网页元素。当position属性的取值为fixed时,即可将元素的定位模式设置为固定定位。会脱离文档流控制,始终依据浏览器窗口的左上角来定义自己的显示位置。不管浏览器滚动条如何滚动,也不管浏览器窗口的大小如何变化,该元素都会始终显示在浏览器窗口的固定位置。

2 外边距

margin外边距合并有以下原则:

(1)块级元素的垂直相邻外边距会合并,且其垂直相邻外边距合并之后的值为上元素的下外边距和下元素的上外边距的较大值。
(2)行内元素实际上不占上下外边距,行内元素的左右外边距不会合并。
(3)浮动元素的外边距不会合并。

3 css高级应用

3.1. 过渡

过渡是使元素从一种样式转变为另一种样式时添加的效果,如渐显、渐弱、 动面快慢等
过渡通过以下属性实现:
(1)transition-property属性:规定设置过渡效果的CSS属性的名称。
(2)transition-duration属性:规定完成过渡效果需要多少秒或毫秒。
(3)transition-timing-function属性:规定速度效果的速度曲线。
(4)transition-delay属性:定义过渡效果何时开始。

3.2. 变形

transform:如:平移、旋转、缩放和倾斜,每个效果都被称为变形函数
在这里插入图片描述

<style>
        div {
            width: 100px;
            height: 100px;
            border: 1px solid #000;
            background-color: red;
            float: left;
            margin: 50px;
        }

        .one {
            transform: rotate(30deg);
            /*旋转30度*/
        }

        .two {
            transform: translate(20px, 20px);
            /* 向右向下移动20px*/
        }

        .three {
            transform: scale(2, 1.5);
            /*宽度为原来两倍,高度为原来1.5倍*/
        }

        .four {
            transform: skew(30deg, 20deg);
            /*在X轴上和Y轴上倾斜20度和30度*/
        }
</style>
    <div class="one"></div>
    <div class="two"></div>
    <div class="three"></div>
    <div class="four"></div>

在这里插入图片描述

2. 浮动

2.1 浮动元素特点

  1. CSS 的 Float(浮动),会使元素向左或向右移动,使元素共享一行,类似于给元素加了inline-block的作用
  2. 由于浮动框不在普通文档流之中,所以文档普通流中的块元素表现的像浮动框不存在一样。
  3. 浮动会将行内元素和行内块元素转化为块元素
  4. 浮动元素比标准文档流的元素层级要高,会将标准文档流的元素遮挡住。
  5. 浮动元素会遇到父元素的边缘或者浮动元素或者块元素就停止了浮动。
  6. 浮动起来的元素不会影响上面的布局,影响的是下面的布局
    如下面代码所示
<style>
        .container {
            width: 400px;
            border: 1px solid deeppink;
            overflow: hidden;
        }

        .top {
            height: 100px;
            width: 100px;

            background-color: rgb(223, 162, 162);
        }

        .main {
            height: 100px;
            width: 100px;
            float: left;
            z-index: -1;
            background-color: rgb(151, 211, 229);
        }

        .footer {
            height: 100px;
            width: 100px;
            float: left;
            background-color: rgb(207, 182, 240);

        }
    </style>
    <div class="container">
        <div class="top">Top</div>
        <div class="main">Main</div>
        <div class="footer">Footer</div>
    </div>

从下图中我们可以验证上面的两个规则:

  • 浮动元素比标准文档流的元素层级要高,会将标准文档流的元素遮挡住。因为Main盒子把Footer盒子遮盖住了,说明加了浮动的Main的盒子的层级更高。
  • 浮动起来的元素不会影响上面的布局,影响的是下面的布局。因为加了浮动的是第二个元素,他在遇到Top盒子的时候并没有选择去覆盖掉他,而是老老实实的在Top的下面,但他下面的Footer盒子,跑到上面来了。所以影响了下面盒子的布局。在这里插入图片描述

2. 2 清除浮动

为什么要清除浮动

  • 因为浮动的元素会影响到下面元素
  • 会造成父盒子高度塌陷
    在这里插入图片描述

清除浮动的3中方式:

  • 方式1:给浮动的元素父元素设置一个固定的高度,从视觉上看到浮动的元素在父元素包裹之内。
  • 方式2:要使用这个clear属性必须创建一个新的div元素,创建新的div元素不能放置任何内容,它只能做一个件事情,那就是清除浮动并且将这个新创建的div元素放在最后一个浮动元素的后面才会生效。
  • 方式3:使用属性为overflow并且属性值为hidden来清除浮动,必须将这个属性设置在浮动元素的父元素身上。

3. html5语义标签

  • header标签:页面或页面中某一个区块,通常是一些引导和导航信息
  • nav标签:可以作为页面导航的链接组
  • section标签:页面中的一个内容区块,通常由内容及其标题组成
  • aside标签:非正文的内容,与页面的主要内容分开的,被删除而不会影响到网页的内容
  • article标签:代表一个独立的、完整的一个区块,可独立于页面其他内容使用
  • footer标签:页面或页面中的某一个脚注
  • main标签:h5的语义化标签,除了单词不一样,本质上就是一个div

4. 实现圣杯布局的两种方式

圣杯布局:header、footer定高,left和right定宽,center宽度自适应

4.1 定位+浮动

<div class="header">header</div>
    <div class="container">
        <div class="center column">center</div>
        <div class="left column" >left</div>
        <div class="right column" >right</div>
    </div>
<div class="footer">footer</div>
  • 首先给header、footer、container一个固定的高度,宽度100%;给left、right一个固定的宽度,高度为container的定高;center宽度100%。
    在这里插入图片描述- 然后给container内的三个子元素float:left;浮动,但是因为center的宽度是container的100%所以left和right并没有与center浮动在一行。(注意这里不要给container盒子加宽度,要让left、right、center自己撑开盒子的宽度
    在这里插入图片描述
  • 为了使left和right浮动与center一行,可以使用margin-left属性,给left(margin-left:-100%)这样left就覆盖在center的左边;给right(margin-left:-【right的宽度】)这样子right就覆盖在了center的右边。
    在这里插入图片描述
  • 虽然container的子元素现在都在一行上面,但是center内容的宽度还是container的100%,所以给container一个padding,左右分别与left和right等宽。
    在这里插入图片描述
  • 这时候left和right还是覆盖在center上,所以可以给container开启相对定位,然后将left和right分别移动对应的宽度,这样container的子元素刚好占满container 的宽度。
    在这里插入图片描述

4.2 flex布局

<div class="header">header</div>
    <div class="container">
        <div class="left column" >left</div>
        <div class="center column">center</div>
        <div class="right column" >right</div>
    </div>
<div class="footer">footer</div>

  • 设置好所需要的header、footer的高度,以及left、right的宽度,然后对中间的container容器开启display:flex,center宽度:flex:1
    在这里插入图片描述

5. 两栏布局

一栏定宽,一栏自适应

  • float:left;+margin-left;float使左边的元素脱离文档流,右边的元素可以和左边的元素显示在同一行,设置margin-left让右边的元素不覆盖掉左边的元素。
  • float:left;+overflow:hidden;给要自适应的盒子加overflow:hidden;会触发块级格式化上下文(BFC),利用了BFC 不会重叠浮动元素的特点。
  • position: absolute + margin-left;左边绝对定位,右边设置margin-left
  • flex布局;flex布局可以使两个子元素显示在同一行,只要左边的宽度固定,就可以实现效果,

6. 水平垂直居中

6.1 水平居中

  • 行内元素:首先看它的父元素是不是块级元素,如果是,则直接给父元素设置 text-align: center;
  • 块级元素
    • 需要谁居中,给其设置 margin: 0 auto; (作用:使盒子自己居中)
    • 首先设置父元素为相对定位,再设置子元素为绝对定位,设置子元素的left:50%,即让子元素的左上角水平居中;然后设置绝对子元素的 margin-left: -元素宽度的一半px; 或者设置transform: translateX(-50%);
    • 使用flex布局实现(宽度定不定都可以):只需要给待处理的块状元素的父元素添加属性 display: flex; justify-content: center;

6.2 垂直居中

  • 单行的行内元素:只需要设置单行行内元素的"行高等于盒子的高"即可;
  • 块级元素:
    • 首先设置父元素为相对定位,再设置子元素为绝对定位,设置子元素的top: 50%,即让子元素的左上角垂直居中;然后设置绝对子元素的 margin-top: -元素高度的一半px; 或者设置transform: translateY(-50%);
    • 使用flexbox布局实现(高度定不定都可以):给待处理的块状元素的父元素添加属性 display: flex; align-items: center;

6.3 水平垂直居中

  • 设置父元素为相对定位,给子元素设置绝对定位,top: 0; right: 0; bottom: 0; left: 0; margin: auto;
  • left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%);
  • left: 50%; top: 50%; margin-left: --元素宽度的一半px; margin-top: --元素高度的一半px;
  • 设置父元素为flex定位,justify-content: center; align-items: center;

JS

1. es6新增的数据类型

  1. Symbol
    Symbol是一种基本数据类型,Symbol()函数会返回symbol类型的值,该类型具有静态属性和静态方法,每一个Symbol()函数的值都是唯一的。
  2. BigInt
    BigInt是一种内置对象,用来表示大于2^53 - 1的整数,它可以表示任意大的整数,如果有小数的话会向下取整。
    let big = BigInt(1) // 1n
  3. Set(在使用instanceof检测的时候是Object类型)
    集合就是一组值,与数组类似。但是与数组不同的是,集合没有索引或顺序,也不允许重复
    常用api:
    在这里插入图片描述
    注意:
    • Set类是可迭代的,可以for of遍历,也可以使用…扩展操作符
    • 集合中不会出现重复数据的判断
    • 因为通过add操作返回的是集合本身,所以可以使用add(1).add(2)
  4. Map
    Map对象表示一组被称为键(key)的值,其中每个键都关联着(或映射到)另一个值,它的key可以为引用数据类型
    在这里插入图片描述
  5. WeakMap和WeakSet
    • 弱映射不是可迭代对象,它只实现了set()、get()、has()、delete()方法
    • 弱映射的主要用途是实现值与对象的关联,因为它容易被垃圾回收,所以不会造成内存泄漏
    • 弱映射的key只能为引用数据类型,value可以为任意类型

2. 数据类型的判别

JS的基本数据类型:Undefined、Null、Boolean、Number、String
引用数据类型:Array、Object、Function、Data、RegExp
判断js数据类型的方法:

  • typeOf:可以对除了null、数组、对象都会被判断为object,其他判断正确
  • instanceof可以正确判断对象的类型,其内部运行机制是判断在其原型链能否找到该类型的原型
  • constructor:对象实例可以通过constructor对象访问他的构造函数。
  • Object.prototype.toString.call():使用的是Object对象的原型方法toStrig来判断数据类型;

3. 栈和堆的区别,为什么栈可以保存基础数据类型,为什么可以频繁操作

栈(stack)会自动分配内存空间,会自动释放。堆(heap)动态分配的内存,大小不定也不会自动释放。
基本类型:简单的数据段,存放在栈内存中,占据固定大小的空间。
引用类型:指那些可能由多个值构成的对象,保存在堆内存中,包含引用类型的变量实际上保存的不是变量本身,二十指向该对象的指针

4. 手写深拷贝

三种方式:

  1. 使用JSON.stringify和JSON.parse()
  2. 手写实现
function deepcope(obj) {
     if (!obj || typeof obj !== 'object') return obj;
      let newObj = Array.isArray(obj) ? [] : {};
      for (let key in obj) {
          newObj[key] = typeof obj === 'object' ? deepcope(obj[key]) : obj[key]
      }
      return newObj
  }
  let obj = {
      a: 1,
      b: {
          c: 1
      }
  }

5. 重绘和重排,怎么减少重排?

  1. 重排:通过构造渲染树,将可见DOM节点以及它对应的样式结合起来,计算它们在设备视口(viewport)内的确切位置和大小,这个计算的阶段就是重排。
  2. 重绘:我们通过构造渲染树和回流阶段,知道了哪些节点是可见的,以及可见节点的样式和具体的几何信息(位置、大小),那么我们就可以将渲染树的每个节点都转换为屏幕上的实际像素,这个阶段就叫做重绘节点。

何时发生重排呢?
回流这一阶段主要是计算节点的位置和几何信息,那么当页面布局和几何信息发生变化的时候,就需要回流。比如以下情况:

  • 添加或删除可见的DOM元素
  • 元素的位置发生变化
  • 元素的尺寸发生变化(包括外边距、内边框、边框大小、高度和宽度等)
  • 内容发生变化,比如文本变化或图片被另一个不同尺寸的图片所替代。
  • 页面一开始渲染的时候(这肯定避免不了)
  • 浏览器的窗口尺寸变化(因为回流是根据视口的大小来计算元素的位置和大小的)

如何减少回流与重排呢?

  1. 批量修改元素样式
  2. 对于复杂的动画效果,可以先采用绝对定位,使其脱离文档流。否则会引起父元素以及后续元素频繁的回流。
  3. css3硬件加速(GPU加速)

参考博客:https://www.cnblogs.com/wangguoxinyue/p/16253671.html

6. 垃圾回收机制

  1. 标记清除:标记阶段需要从根节点遍历内存中的所有对象,并为可达的对象做上标记,清除阶段则把没有标记的对象(非可达对象)销毁。
  2. 引用计数

7. promise是什么 promise 有哪些方法,promise.all 和 promise.race 的区别(这两者里面的promise的执行顺序) 实现一个20个请求的串行和并行 promise(我讲了链式调用 但是面试官并不太满意,更优雅的方式)

8. Promise如何用来进行限定并发请求个数的功能,说下思路?

9. 浏览器加载原理

VUE

1. React和VUE的区别

2. vue3有什么更新,为什么项目用vue2

浏览器

1. 浏览器如何渲染

2. 输入google会发生什么

3. 浏览器事件循环机制

4. 常见网络攻击

5. 浏览器本地化存储 cookie sessionStorage localStorage indexDB

6. 就比如那个promise,他问你怎么一张一张图片发,常规就是一直.then()下去,也可以用all去减少then的层级,用promise第一次请求的结果和第二次请求放到all数组里面,但面试官应该是想听到async await, await 请求一 await请求二 用同步的方式写异步,代码可读性可维护性都好。。

你说到了用gzip压缩请求数据,那你还了解其他相关的content-coding方式么?

计算机网络

1. https和http的区别

2. HTTP2有哪些特性

网页优化

1. 性能优化方式

2. 首屏优化方式

3. 首屏加载速度可以怎么改善

4. 如何提高页面加载速度

5. cookie 有什么值(似乎把 secure 和 httponly 弄混了)

设计模式

1. 简单说一下设计模式

2. 项目中用到了什么设计模式

数据结构

1. 常见的排序,堆排序

2. 平衡二叉树

3. 使用两个栈模仿队列

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

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

相关文章

不会吧,难道真的有程序员不知道怎么接单赚钱吗?

随着大环境逐渐转好&#xff0c;跳槽、新工作、兼职等等机会都浮出水面。抛开跳槽、新工作不谈&#xff0c;今天就专门来说说程序员接单赚钱有哪些靠谱的平台。 首先分享一波关于接私活有哪些注意事项&#xff0c;给大家提个醒&#xff0c;避免盲目入坑。 一、程序员接单须知…

搬得进来,搬得出去!快来过一把数据迁移的“瘾”

欢迎访问OceanBase官网获取更多信息&#xff1a;https://www.oceanbase.com/ 经过前几次“剧透”&#xff0c;我们知道了 OceanBase 开发者大会有嘉宾、有演讲&#xff0c;有开源生态专场&#xff0c;也知道我们还会有 3 场 Hands-on Workshop 动手实验营&#xff0c;从部署到…

从LiveData迁移到Kotlin的 Flow,才发现是真的香!

LiveData 对于 Java 开发者、初学者或是一些简单场景而言仍是可行的解决方案。而对于一些其他的场景&#xff0c;更好的选择是使用 Kotlin 数据流 (Kotlin Flow)。虽说数据流 (相较 LiveData) 有更陡峭的学习曲线&#xff0c;但由于它是 JetBrains 力挺的 Kotlin 语言的一部分&…

一文搞定!postman接口自动化测试【附项目实战详解】

目录&#xff1a;导读 | 接口结果判断 功能区 脚本相关 代码模板 | 集合(批量)测试 变化的参数数据 定期任务 接口执行顺序 数据传递 | 解决依赖问题 假设场景 Postman 中的操作 运行 写在最后 附带项目实战教程地址&#xff1a;postman接口自动化测试使用教程项…

[计算机组成原理(唐朔飞 第2版)]第一章 计算机系统概论 第二章 计算机的发展及应用(学习复习笔记)

第1章 计算机系统概论 1.1 计算机系统简介 1.1.1 计算机的软硬件概念 计算机系统由“硬件”和“软件”两大部分组成。 硬件 是指计算机的实体部分&#xff0c;它由看得见摸得着的各种电子元器件&#xff0c;各类光、电、机设备的实物组成如主机、外部设备等 软件 软件看不见…

【protoc自定义插件】「go语言」实现rpc的服务映射成http的服务,protoc生成gin的插件,(详解实现原理及过程)

文章目录前言一、工程实践中如何更好的使用proto文件&#xff1f;二、protoc命令如何查询依赖的proto文件以及执行原理1. protoc命令如何查询依赖的proto文件2. protoc执行的插件加载原理是什么&#xff1f;3. proto文件中的package和go_package的作用三、protoc插件开发原理体…

春招冲刺(十): Vue2 技术复盘

vue2 技术复盘 Q1&#xff1a;MVVM框架的理解&#xff1f; MVVM模型&#xff1a; M&#xff1a;模型&#xff08;Model&#xff09;&#xff0c;data中的数据V&#xff1a;视图&#xff08;View&#xff09;&#xff0c;模板代码VM&#xff1a;视图模型&#xff08;ViewModel…

Me-and-My-Girlfriend-1靶场通关

Me-and-My-Girlfriend-1靶场通关 靶机ip:192.168.112.135 信息收集 端口&#xff1a;22、80 还是从80WEB服务器端口入手 对服务器目录进行扫描&#xff0c;扫出以下目录 访问80端口WEB服务&#xff0c;显示一段文字只允许本地用户访问。 一眼伪造ip&#xff0c;查看页面…

基于土壤数据与机器学习算法的农作物推荐算法代码实现

1.摘要 近年来&#xff0c;机器学习方法在农业领域的应用取得巨大成功&#xff0c;广泛应用于科 学施肥、产量预测和经济效益预估等领域。根据土壤信息进行数据挖掘&#xff0c;并在此基础上提出区域性作物的种植建议&#xff0c;不仅可以促进农作物生长从而带来经济效益&#…

为什么想到微前端,是巨石应用?

为什么想到微前端&#xff0c;是巨石应用&#xff1f; 现代的前端应用的发展趋势正在变得越来越富功能化&#xff0c;富交互化&#xff0c;也就是传说中的SPA(单页面应用)&#xff1b;这样越来越复杂的单体前端应用&#xff0c;背后的后端应用则是数量庞大的微服务集群。被一个…

STM32和emWin必须知道的那些事

emWin 是由德国 SEGGER 公司开发&#xff0c;可为图形 LCD 设计提供高级支持&#xff0c;极大简化了 LCD 设计。 为恩智浦ARM 微控制器用户免费提供的 emWin 图形库。在国内做嵌入式系统的大部分都使用 emwin&#xff0c; 其简单来说就是一套图形库。STemWin是SEGGER公司授权给…

HTML DOM 事件监听器

通过JavaScript&#xff0c;我们可以给页面的某些元素添加事件的监听器&#xff0c;当元素触发相应事件的时候监听器就会捕捉到这个事件并执行相应的代码。addEventListener() 方法实例当用户点击按钮时触发监听事件&#xff1a;document.getElementById("myBtn").ad…

Balsamiq Wireframes 安装配置

文章目录Balsamiq Wireframes 安装配置一、简介二、软件特色1、零学习曲线&#xff0c;随时随地提供强大功能2. 专为协作而设计3. 每个人的第一个 UX工具三、Balsamiq Wireframes功能介绍1、工具列2、快速添加工具3、UI库4、帆布5、导航器面板6、键盘快捷键&#xff1a;四、安装…

经纬恒润再传佳讯,斩获大奖

阳春二月&#xff0c;经纬恒润屡传佳讯&#xff0c;凭借产品、研发等多方面的出色表现&#xff0c;再次斩获东风柳汽“优秀供应商”和广汽传祺“科技创新奖”&#xff0c;以实力印证良好口碑&#xff0c;不忘初心&#xff0c;载誉而行&#xff01; 东风柳汽&#xff1a;优秀供…

【信号量机制及应用】

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 目录 一、信号量机制 二、信号量的应用 >利用信号量实现进程互斥   >利用信号量实现前驱关系   >利用记录型信号量实现同步 三、例题 四、参考 一、信号量机制 信号量是操作系统提…

现在招个会自动化测试的人是真难呀~你会个锤子的自动化测试

现在招个会自动化测试的人是真难呀~ 前一段时间公司计划要招2个自动化测试到岗&#xff0c;同事面试了十几个来应聘的人&#xff0c;发现一个很奇怪的现象&#xff0c;在面试的时候&#xff0c;如果问的是框架API、脚本编写这些问题&#xff0c;基本上所有人都能对答如流&…

centos6下为Rstudio安装多版本R

之前的R版本太旧,不少包装不上,需要安装新版本的R: R --version R version 3.6.0 (2019-04-26) -- "Planting of a Tree"于是下载最新版R: 因为没有证书,需要加上最后面的参数. wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-4/R-4.2.2.tar.gz --no…

MySQL OCP888题解042-审计日志格式

文章目录1、原题1.1、英文原题1.2、中文翻译1.3、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3.1、知识点1&#xff1a;审计日志3.1.1、审计日志是什么3.1.2、审计日志格式4、总结1、原题 1.1、英文原题 Consider the MySQL Enterprise Audit plugin. You are check…

好使!NAS中傻瓜式配置反向代理及SSL证书,提升网络安全性!

对于有NAS或者有个人主机的朋友来说&#xff0c;将机器映射到外网是基本操作。 但是一般来说&#xff0c;能直接从外网访问的往往仅有80和443端口。事实上&#xff0c;运营商一般把家庭宽带的这两个端口都封了&#xff0c;所以如果我们想要从外网访问自己家中机器部署的服务&a…

【Ajax】异步通信

一.概述 概念&#xff1a;AJAX(Asynchronous JavaScript And XML)&#xff1a;异步的 JavaScript 和 XML 作用&#xff1a; 与服务器进行数据交换&#xff1a;通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应的数据 使用了AJAX和服务器进行通信&#xff0c;就可以使…