面试ssss

深拷贝和浅拷贝

深拷贝和浅拷贝是关于对象(包括数组)复制的两个概念。

浅拷贝在复制对象属性的时候,复制的是指针(引用),所以,修改目标对象的属性值会影响到原对象的对应属性值 obj。assign

深拷贝

这个函数使用递归的方式对对象进行深拷贝。对于每个属性,如果是基本类型或null,则直接复制;如果是数组,则创建一个新的数组,并递归深拷贝每个元素;如果是对象,则创建一个新的对象,并递归深拷贝每个属性。

function deepCopy(obj) {if (typeof obj !== 'object' || obj === null) {// 对于基本类型和null,直接返回return obj;}
​let copy;if (Array.isArray(obj)) {// 处理数组copy = [];for (let i = 0; i < obj.length; i++) {copy[i] = deepCopy(obj[i]);}} else {// 处理对象copy = {};for (let key in obj) {if (obj.hasOwnProperty(key)) {copy[key] = deepCopy(obj[key]);}}}
​return copy;
}

  1. 如何实现一个new

1 创建一个新的对象obj2 将对象与构建函数通过原型链连接起来3 将构建函数中的this绑定到新建的对象obj上4 根据构建函数返回类型作判断,如果是原始值则被忽略,如果是返回对象,需要正常处理
如果构造函数有返回值并且返回值是一个对象,则返回该对象;否则返回新对象实例举个例子:function Person(name, age){this.name = name;this.age = age;
}
const person1 = new Person('Tom', 20)
console.log(person1)  // Person {name: "Tom", age: 20}
t.sayName() // 'Tom'手动实现一下
function mynew(Func, ...args) {// 1.创建一个新对象const obj = {}// 2.新对象原型指向构造函数原型对象obj.__proto__ = Func.prototype// 3.将构建函数的this指向新对象let result = Func.apply(obj, args)// 4.根据返回值判断return result instanceof Object ? result : obj
}
  1. 跨域是什么?怎么解决?isonp方式是如何做的

以下是使用 JSONP 的具体实现步骤:

  1. 客户端发送 JSONP 请求:在客户端(例如浏览器中的 JavaScript)中创建一个 <script> 标签,其中的 src 属性指向目标服务器的接口,并在 URL 中包含一个回调函数名作为参数。

function handleResponse(data) {// 处理响应数据
}
​
const script = document.createElement('script');
script.src = 'https://api.example.com/data?callback=handleResponse';
document.head.appendChild(script);
  1. 服务器返回响应:服务器接收到请求后,将数据包装在回调函数中返回给客户端。回调函数名由客户端指定,它会作为参数出现在响应中。例如,服务器响应如下:

handleResponse({ message: 'Hello, JSONP!' });
  1. 客户端处理响应:由于服务器返回的是一个包裹在回调函数中的 JavaScript 代码,浏览器会将该代码当作脚本执行,从而触发客户端事先定义的回调函数。通过在客户端定义一个与服务器返回的回调函数名相同的函数,可以在回调函数中处理服务器返回的数据。

javascript

function handleResponse(data) {// 处理响应数据console.log(data.message); // 输出:Hello, JSONP!
}

需要注意的是,JSONP 的使用有一些限制和安全风险:

  • JSONP 只支持 GET 请求,不支持其他 HTTP 方法。

  • 由于 JSONP 是通过动态创建 <script> 标签来实现的,因此无法像使用 XMLHttpRequest 或 Fetch API 那样获取完整的响应对象,例如状态码、响应头等。

  • JSONP 要求服务器能够返回一个包装在回调函数中的 JavaScript 代码,这可能会导致安全问题,因为服务器端的代码可以被注入到客户端页面中。

  1. 事件循环说说,宏任务和微任务有哪些

事件循环(Event Loop)是 JavaScript 中处理异步操作的机制。它负责管理任务队列(Task Queue)中的任务,并按照特定的执行顺序将它们执行。

宏任务:setTimeout setInterval Ajax DOM事件 微任务:Promise

事件循环的执行顺序如下:

事件循环的执行顺序是先执行同步任务,然后处理微任务队列,再执行异步任务,接着处理宏任务队列,最后再次处理微任务队列,然后进入下一个循环。微任务具有高优先级,会在下一个宏任务之前执行,这意味着微任务队列中的任务会在下一个宏任务执行之前完成。

事件循环的基本流程如下:

  1. 执行同步任务: 从调用栈中取出一个同步任务执行,直到调用栈为空或遇到异步任务。

  2. 执行微任务(Microtasks): 在同步任务执行完毕后,会检查微任务队列(也称为 Promise 队列)。如果存在微任务,事件循环会依次执行微任务直到微任务队列为空。微任务通常包括 Promise 的回调函数、MutationObserverprocess.nextTick 等。

  3. 执行宏任务(Macrotasks): 如果微任务队列为空,事件循环会从宏任务队列中选择一个任务执行。宏任务包括定时器回调函数(setTimeoutsetInterval)、事件回调函数(如用户交互事件、网络请求、文件读写等)等。

  4. 更新渲染(Update rendering): 如果浏览器需要重绘或重新布局页面,会执行相应的渲染操作。

  5. 重复步骤: 重复以上步骤,不断处理任务直到所有任务完成。

需要注意的是,微任务优先级高于宏任务,即在执行微任务队列之前不会执行下一个宏任务。这意味着微任务可以在同一次事件循环中立即执行,而宏任务需要等待下一次事件循环。

  1. this指向问题

// 全局上下文
console.log(this); // 输出全局对象 (window 或 global)// 函数调用
function sayHello() {console.log(this);
}sayHello(); // 输出全局对象 (window 或 global)const obj = {name: 'John',greet: function() {console.log(this.name);}
};obj.greet(); // 输出 "John"function Person(name) {this.name = name;this.greet = function() {console.log('Hello, ' + this.name);};
}const person1 = new Person('Alice');
person1.greet(); // 输出 "Hello, Alice"const greet = person1.greet;
greet(); // 输出 "Hello, undefined" (非严格模式下),或抛出错误 (严格模式下)const arrowFunc = () => {console.log(this);
};arrowFunc(); // 输出全局对象 (window 或 global)

在 JavaScript 中,this 关键字用于引用当前执行上下文中的对象。它的值取决于函数被调用的方式和上下文。

  1. 全局上下文:
    当在全局作用域中使用 this 时,它将指向全局对象(浏览器环境中为 window 对象,Node.js 环境中为 global 对象)。

  2. 函数调用:
    在函数内部,this 的指向取决于函数的调用方式:

    • 作为函数调用时,this 指向全局对象(非严格模式下),或者是 undefined(严格模式下)。
    • 作为对象方法调用时,this 指向调用该方法的对象。
    • 作为构造函数调用时,this 指向新创建的对象实例。
    • 使用 call()apply()bind() 方法显式地指定 this 的值。
  3. 箭头函数:
    箭头函数的 this 在定义时就被绑定,它的指向始终是定义时所在的上下文,而不是运行时的调用方式。

  1. 箭头函数和普通函数的区别

  • this 的绑定:

    • 普通函数:每个函数都有自己的 this 值,它在运行时根据调用方式进行绑定。在普通函数内部,this 的值取决于函数是如何被调用的。
    • 箭头函数:箭头函数没有自己的 this 值,而是继承其父作用域的 this 值。箭头函数内部的 this 始终指向定义时所在的上下文的 this 值。
  • arguments 对象:

    • 普通函数:普通函数内部可以访问到特殊的 arguments 对象,该对象包含了函数被调用时传递的参数列表。
    • 箭头函数:箭头函数没有自己的 arguments 对象。如果需要访问参数,可以使用剩余参数语法 ...args 或者使用普通函数来获取 arguments 对象。
  • 构造函数:

    • 普通函数:普通函数可以用作构造函数,通过 new 关键字创建实例对象。
    • 箭头函数:箭头函数不能用作构造函数,无法通过 new 关键字创建实例对象。
  1. 异步任务分为哪些

宏任务和微任务

  1. 垂直居中的方式

​1 使用Flexbox布局:。这种方法适用于父元素和子元素都是块级元素的情况,这将使容器内的所有子元素都垂直和水平居中。.parent {display: flex;justify-content: center;align-items: center;
}2 使用绝对定位和transform属性, left: 50%; top: 50%会使子元素的左上角在父元素的中心位置;.parent {position: relative;
}
​
.child {position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);
}3 使用绝对定位和margin属性.parent {position: relative;
}
​
.child {position: absolute;left: 0;right: 0;top: 0;bottom: 0;margin: auto;
}​

  1. 怎么理解回流和重绘

回流(Reflow)和重绘(Repaint)是浏览器渲染过程中的两个重要概念

回流是跟据元素的样式和结构,确定其在页面上位置的过程,当元素的大小和位置发生变化时,就回触发回流,

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

重绘,确定位置之后,跟据其样式,将元素绘制到屏幕上的过程。

  • 颜色的修改

  • 文本方向的修改

  • 阴影的修改

避免,

  • 尽量减少对样式的频繁修改,最好一次性修改多个样式,或者使用 CSS 类进行批量修改。
  • 避免频繁访问布局信息(如 offsetTop、offsetWidth 等),因为这会导致强制回流。
  • 使用 CSS3 的 transform 属性来进行复杂的动画效果,它可以在不引起回流的情况下改变元素的视觉呈现。
  • 使用分离布局和样式的原则,避免样式改变引起布局的变化。
  • 合理使用 CSS 布局技术,如 Flexbox 和 Grid,它们可以更高效地处理元素布局
  • 如果想设定元素的样式,通过改变元素的 class 类名 (尽可能在 DOM 树的最里层)
  1. 元素显示和隐藏的方法有哪些

  • CSS 的 display 属性

    • 显示元素:element.style.display = 'block';element.style.display = '';
    • 隐藏元素:element.style.display = 'none';
  • CSS 的 visibility 属性

    • 显示元素:element.style.visibility = 'visible';
    • 隐藏元素:element.style.visibility = 'hidden'
  1. vue的双向数据绑定的原理

  1. 数据劫持(Data Observation):
    Vue 使用了一种称为「数据劫持」的技术来追踪数据的变化。它通过使用 Object.defineProperty() 方法,将数据对象的属性转换为 getter 和 setter。当访问或修改属性时,Vue 能够捕获到这些操作,并触发相应的更新。

  2. 监听器(Watcher):
    在 Vue 中,每个数据属性都有一个对应的监听器对象。监听器会订阅数据的变化,并根据变化触发相应的更新操作。当数据发生变化时,监听器会通知相关的视图进行更新。

  3. 模板编译(Template Compilation):
    Vue 的模板编译过程会解析模板中的指令(如 v-model),并生成对应的更新函数。这些更新函数能够在数据发生变化时,更新视图的内容。

  4. 视图更新:
    当数据发生变化时,监听器会收到通知,并触发视图的更新操作。这样,当用户在视图中修改数据时,数据会自动更新,反之亦然。

  1. 虚拟dom的理解

虚拟 DOM 的优势在于它能够提供一种高效的方式来管理和更新界面,减少直接操作真实 DOM 的成本。通过比较虚拟 DOM 树的差异,可以最小化对真实 DOM 的操作,提高性能和用户体验。

  1. 如何清除浮动

伪元素

可以使用伪元素在浮动元素的父元素中插入一个额外的元素,并设置其样式为 clear: both;<div class="clearfix"><div class="float-left">浮动元素1</div><div class="float-left">浮动元素2</div>
</div>.clearfix::after {content: "";display: table;clear: both;
}

overflow:hidden

  1. BFC

BFC(块级格式化上下文)是一种页面渲染的 CSS 布局概念。它是一种独立的渲染区域,其中的元素按照一定规则进行布局和渲染

BFC 主要用于解决以下问题:

  1. 清除浮动(Clear Float):当父元素包含浮动元素时,父元素的高度会塌陷,导致无法正确包裹浮动元素。通过创建一个 BFC,可以使父元素包含浮动元素的布局正常显示,不再塌陷。

例子:

<div class="parent"><div class="float-left">Float Left</div><div class="float-right">Float Right</div>
</div>
​
.parent {overflow: hidden;
}
​
通过设置 overflow: hidden;,.parent 元素成为一个 BFC,它会包裹内部的浮动元素,防止元素的高度塌陷。
  1. 阻止边距重叠(Margin Collapse):在普通流中,相邻的两个元素的上下边距可能会发生重叠。但是,位于不同的 BFC 中的元素的边距不会重叠,这可以用于控制边距的表现。

  2. 自适应两栏布局:通过创建两个相邻的 BFC 容器,可以实现一种自适应的两栏布局,其中一个容器可以固定宽度,另一个容器会自动填充剩余空间。

  3. 避免浮动元素覆盖文字:当文字环绕在浮动元素周围时,文字可能会被浮动元素覆盖。通过创建一个 BFC 容器来包裹文字,可以避免文字被浮动元素覆盖。

如何设置一个bfc , 一般用overflow:hidden 和flex盒子

.bfc-container {overflow: hidden;
}
​
.bfc-container {display: inline-block;
}
​
.flex-container {display: flex;
}
​
  1. CSS如何画一个三角形

.triangle {width: 0;height: 0;border-left: 5px solid transparent;border-right: 5px solid transparent;border-top: 10px solid #000;
}


响应式布局

详解

响应式布局是一种设计和开发网页的方法,使网页能够适应不同的设备和屏幕尺寸,提供更好的用户体验。它通过使用媒体查询(Media Queries)和弹性布局(Flexbox)等技术,根据设备的特性和视口(Viewport)大小来自动调整和重新排列页面的元素和内容。

响应式布局的目标是使网页在各种设备上都能呈现良好的布局和可用性,无论是在桌面电脑、笔记本电脑、平板电脑还是手机等移动设备上。

以下是一个简单的响应式布局的示例,假设我们有一个包含导航栏和内容区域的网页布局:

html

<!DOCTYPE html>
<html>
<head><meta name="viewport" content="width=device-width, initial-scale=1.0"><style>/* 基础样式 */body {margin: 0;padding: 0;font-family: Arial, sans-serif;}/* 导航栏样式 */.navbar {background-color: #333;color: #fff;padding: 10px;}/* 内容区域样式 */.content {padding: 20px;}/* 媒体查询 */@media (max-width: 768px) {/* 在小屏幕上调整布局 */.navbar {text-align: center;}}</style>
</head>
<body><div class="navbar">导航栏</div><div class="content"><h1>响应式布局示例</h1><p>这是页面的内容。</p></div>
</body>
</html>

在上述示例中,我们使用了媒体查询来针对小屏幕设备(最大宽度为768px)调整导航栏的样式。在小屏幕上,导航栏的文本居中显示,以适应较小的视口。

通过设置 <meta> 标签中的 viewport 属性,我们告诉浏览器对页面进行响应式布局。width=device-width 表示将视口宽度设置为设备的宽度,initial-scale=1.0 表示初始缩放级别为 1.0。

当在不同的设备上打开上述示例页面时,可以看到导航栏在桌面和小屏幕设备上有不同的布局效果,以适应不同的屏幕尺寸。

这只是一个简单的示例,实际的响应式布局可能涉及更复杂的调整和适配,包括使用媒体查询和弹性布局来改变元素的大小、位置和显示方式,以适应不同的设备和屏幕布局

  1. git svn

  2. webpack

  3. 内存泄露是什么,怎么导致的

  4. promise介绍

  5. 图片懒加载和预加载

  6. 数组去重的方法?至少说出2种

  7. 前端性能优化问题

  8. 前端缓存

  9. https和http的区别,http缓存有哪些,为什么要减少http的请求,https为什么比http更安全

  10. 了解axios的原理吗?怎么实现的

  11. Vue的导航守卫有哪一些? 你的登录拦截怎么实现的?

  12. keep-alive是什么?有哪几个生命周期阶段?

  13. 判断一个变量是否是数组,有哪些办法? 判断一个变量是否是对象,有哪些办法?

  14. 数组去重

  15. mixins有几个生命周期阶段?

  16. 弹性布局,一行两列,一列固定宽,如何实现?

  17. Flex:1 包含哪三种属性

  18.  async      async的作用是定义这个函数是异步:async 放在函数前的一个关键字,再函数内  return 1、return "1"、return new Promise(),

    外部打印这个函数都是获取到的是一个promise对象,通过函数.then获取到return的值

    await的作用是等待:如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。如果它等到的是一个 Promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。

和promise的区别,

现在把业务要求改一下,仍然是三个步骤,但每一个步骤都需要之前每个步骤的结果。/** 传入参数n,表示这个函数执行的时间(毫秒)* 执行的结果是 n+200,这个值将用于下一步骤
*/  
function takeLongTime(n){return new Promise((resolve) => {setTimeout(() => resolve(n + 200),n);})
}
function step1(n){console.log(`step1 with ${n}`);return takeLongTime(n);
}
function step2(m,n){console.log(`step2 with ${m} + ${n}`);return takeLongTime(m + n);
}
function step3(k,m,n){console.log(`step3 with ${k} + ${m} + ${n}`);return takeLongTime(k + m + n);
}==========================================async function doIt() {console.time('doIt');let time1 = 300;let time2 = await step1(time1);//将Promise对象resolve(n+200)的值赋给time2let time3 = await step2(time2,time1);let result = await step3(time3,time2,time1);console.log(`result is ${result}`);console.timeEnd('doIt');
}doIt();//执行结果为:
//step1 with 300
//step2 with 500 + 300
//step3 with 1000 + 500 + 300
//result is 2000
//doIt: 2916.655029296875ms

 有没有感觉有点复杂的样子?那一堆参数处理,就是 Promise 方案的死穴—— 参数传递太麻烦了,看着就晕!

注意点
就目前来说,已经理解 async/await 了吧?但其实还有一些事情没提及——Promise 有可能 reject 啊,怎么处理呢?

await 命令后面的 Promise 对象,运行结果可能是 rejected,所以最好把 await 命令放在 try...catch 代码块中。

    async function myFunction() {
      try {
        await somethingThatReturnAPromise();
      } catch (err){
        console.log(err);
      }
    }
     
    //另一种写法
    async function myFunction() {
      await somethingThatReturnAPromise().catch(function(err) {
        console.log(err);
      })
    }

webpack

常见的plugin

1 html -webpack=plugin

在打包结束后,⾃动生成⼀个 html ⽂文件,并把打包生成的js 模块引⼊到该 html

2 clean-webpack-plugin

每次打包时,都会把上一次打的包删除

3 mini-css-extract-plugin

打包之后i的css文件在js中,该插件可以把css单独提取出来

如何借助webpack来优化前端性能?

关于webpack对前端性能的优化,

可以通过文件体积大小入手,

对js,css,html代码进行压缩

使用插件

使用HtmlWebpackPlugin插件来生成HTML的模板时候,通过配置属性minify进行html优化
​
module.exports = {...plugin:[new HtmlwebpackPlugin({...minify:{minifyCSS:false, // 是否压缩csscollapseWhitespace:false, // 是否折叠空格removeComments:true // 是否移除注释}})]
}
其次还可通过分包的形式

这里通过splitChunksPlugin来实现,将代码分离到不同的bundle中,之后我们可以按需加载,或者并行加载这些文件

module.exports = {...optimization:{splitChunks:{chunks:"all"}}
}
​
splitChunks主要属性有如下:
​Chunks,对同步代码还是异步代码进行处理minSize: 拆分包的大小, 至少为minSize,如何包的大小不超过minSize,这个包不会拆分maxSize: 将大于maxSize的包,拆分为不小于minSize的包minChunks:被引入的次数,默认是1

提高webpack的构建速度?

随着我们的项目涉及到页面越来越多,功能和业务代码也会随着越多,相应的 webpack 的构建时间也会越来越久

构建时间与我们日常开发效率密切相关,当我们本地开发启动 devServer 或者 build 的时候,如果时间过长,会大大降低我们的工作效率

所以,优化webpack 构建速度是十分重要的环节

1· 缩小文件搜索范围

可以通过配置includeexcludetest属性来匹配文件,接触includeexclude规定哪些匹配应用loader

2 使用dll进行分包
3 bable缓存,第二次构建时,会读取之前的缓存

使用 cache-loader

在一些性能开销较大的 loader之前添加 cache-loader,以将结果缓存到磁盘里,显著提升二次构建速度

保存和读取这些缓存文件会有一些时间开销,所以请只对性能开销较大的 loader 使用此loader

echart

1 创建一个div,给其宽和高

2 拿到这个div,初始化,获取echart实例

const echartaa = echart.init(this.$ref.social)

3

echartaa.setOptin({
​
})

难点之一

拿home。data来设置optins,但是这里的homedata为空

虽然 getHomeData是在create里

image-20240428185858833

image-20240429092656276

后台管理系统登录

退出

清除cooike 并且 跳转到登录页

image-20240429103935668

登录

如果token不存在,并且当前页面不是login页面,就跳转到登录页

如果token存在,并且当前页面是login,就跳转到home页面

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop之路---伪分布式环境搭建

hadoop更适合在liunx环境下运行&#xff0c;会节省后期很多麻烦&#xff0c;而用虚拟器就太占主机内存了&#xff0c;因此后面我们将把hadoop安装到wsl后进行学习,后续学习的环境是Ubuntu-16.04 &#xff08;windows上如何安装wsl&#xff09; 千万强调&#xff0c;创建完hado…

Ansible-Tower安装破解

主机IP地址版本Ansible192.168.169.2042.9.1Tower192.168.169.2043.6.2 基础环境 systemctl disable firewalld --now && setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config mv /etc/yum.repos.d/CentOS-* /tmp/ curl -o /etc/yum.repo…

JAVA实现easyExcel批量导入

注解类型描述ExcelProperty导入指定当前字段对应excel中的那一列。可以根据名字或者Index去匹配。当然也可以不写&#xff0c;默认第一个字段就是index0&#xff0c;以此类推。千万注意&#xff0c;要么全部不写&#xff0c;要么全部用index&#xff0c;要么全部用名字去匹配。…

Unity 实现原神中的元素反应

一、元素反应 原神中共有七种元素&#xff0c;分别是水、火、冰、岩、风、雷、草。这七种元素能互相作用 Demo下载&#xff1a;Download 元素反应表格图示&#xff0c;可能不够精准 /火水雷冰草岩风绽放原激化火/蒸发超载融化燃烧结晶扩散烈绽放/水蒸发/感电冻结/碎冰绽放结晶…

mysql优化面试总结

mysql优化 和 mysql优化之索引 两篇文章有大量的实验性的内容&#xff0c;我暂时没时间理解&#xff0c;把八股部分总结到这篇文章中&#xff0c;方便记忆 我们为什么要对sql进行优化 我们开发项目上线初期&#xff0c;由于业务数据量相对较少&#xff0c;一些SQL的执行效率对…

计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密数据恢复流程

网络技术的不断应用与发展&#xff0c;为企业的生产运营带来了极大便利&#xff0c;越来越多的企业依赖网络开展各项工作业务&#xff0c;网络也大大提升了企业的生产运营效率&#xff0c;但网络是一把双刃剑&#xff0c;在为企业提供便利的同时&#xff0c;也为企业的数据安全…

泽攸科技无掩膜光刻机在MEMS压力传感器制造中的应用

在当今的科技快速发展时代&#xff0c;微电子机械系统&#xff08;MEMS&#xff09;技术已成为推动现代传感器技术革新的关键力量。MEMS压力传感器&#xff0c;作为其中的重要分支&#xff0c;广泛应用于生物医学、航空航天、汽车工业等多个领域。随着对传感器性能要求的不断提…

后台架构总结

前言 疫情三年&#xff0c;全国各地的健康码成为了每个人的重要生活组成部分。虽然过去一年&#xff0c;但是回想起来任然历历在目。 今天我就通过当时基于小程序的健康码架构&#xff0c;来给大家讲一下如何基于java&#xff0c;springboot等技术来快速搭建一个后台业务系统…

Docker基本操作 挂载数据卷

在创建一个容器的时候让容器挂载到一个数据卷: 命令:docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx 这里的数据卷如果没有提前创好会自动创建 下边是命令解析 将容器挂载到一个数据卷之后 可以在查看数据卷的目录 在数据卷的目录可以找到容器的内容…

自然语言处理 (NLP) 和文本分析

自然语言处理 (NLP) 和文本分析&#xff1a;NLP 在很多领域都有着广泛的应用&#xff0c;如智能助手、语言翻译、舆情分析等。热门问题包括情感分析、命名实体识别、文本生成等。 让我们一起来详细举例子的分析讲解一下自然语言处理&#xff08;NLP&#xff09;和文本分析的应用…

电子式汽车机油压力传感器的接线方法及特点

电子式机油压力传感器由厚膜压力传感器芯片、信号处理电路、外壳、固定电路板装置和两根引线&#xff08;信号线和报警线&#xff09;组成。信号处理电路由电源电路、传感器补偿电路、调零电路、电压放大电路、电流放大电路、滤波电路和报警电路组成。 厚膜压力传感器是20世纪…

Deckset for Mac激活版:MD文档转幻灯片软件

Deckset for Mac是一款专为Mac用户打造的Markdown文档转幻灯片软件。它凭借简洁直观的界面和强大的功能&#xff0c;成为许多用户的心头好。 Deckset for Mac激活版下载 Deckset支持Markdown语法&#xff0c;让用户在编辑文档时无需分心于复杂的格式设置&#xff0c;只需专注于…

探索的时光 (整数三分)

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 5 3 2 1 2 3 输出 28 思路&#xff1a; 根据题意&#xff0c;已经给出了运算函数 当我们看到这些函数的时候&#xff0c;联想一下&#xff0c;它们的单调性&#xff0c;以…

Spark集群配置Hive

Spark搭建过程 Spark集群搭建-CSDN博客 1.首先先下载并解压对应的hive压缩包&#xff0c;要选择适配自己系统的&#xff0c;我这个用的是3.1.2 2.配置环境变量 vim ~/.bashrc export HIVE_HOME/usr/local/hive export PATH$PATH:$HIVE_HOME/bin source ~/.bashrc 3.修改hiv…

半导体制造工艺之分类浅述

半导体制造工艺分为逻辑制程(也叫逻辑工艺)和特殊制程(也叫特色工艺)。 1、逻辑工艺概述 随着集成电路行业沿着摩尔定律不断发展,晶体管数量增加的同时,工艺节点不断缩小。先进逻辑工艺是相对的概念,2005年全球先进逻辑工艺的工艺节点在65/55纳米,现在则变为3纳米。中…

达梦(DM) SQL聚集函数及日期运算操作

达梦DM SQL聚集函数及日期运算操作 聚集函数MAX、MIN、SUM、AVG、COUNT使用分析函数 sum (…) over (order by…) 可以生成累计和更改累计和的值计算出现次数最多的值 日期运算加减日、月、年加减时、分、秒日期间隔之时、分、秒日期间隔之日、月、年求两个日期间的工作天数确定…

Microsoft Access Database使用

“小规模数据用Excel&#xff0c;大规模数据用Access。” 当涉及到大规模数据时&#xff0c;使用excel非常的卡顿&#xff0c;使用access就不会出现这个问题。 一、常用操作 1.新建一个数据库 直接右键&#xff0c;新建 access数据库 2.excel内容导入到access中&#xff08;成…

阿里云服务器(Ubuntu22)上的MySQL8更改为大小写不敏感

因为windows上默认的mysql8.0是大小写不敏感的&#xff0c;部署到服务器上之后发现ubuntu默认的是大小写敏感&#xff0c;所以为了不更改代码&#xff0c;需要将mysql数据库设置为大小写不敏感的。 &#xff01;&#xff01;&#xff01;重要一定要做好数据库的备份&#xff0…

零基础HTML教程(31)--HTML5多媒体

文章目录 1. 背景2. audio音频3. video视频4. audio与video常用属性5. 小结 1. 背景 在H5之前&#xff0c;我们要在网页上播放音频、视频&#xff0c;需要借助第三方插件。 这些插件里面最火的就是Flash了&#xff0c;使用它有几个问题&#xff1a; 首先要单独安装Flash&…

机器学习:逻辑回归

概念 首先&#xff0c;逻辑回归属于分类算法&#xff0c;是线性分类器。我们可以认为逻辑回归是在多元线性回归的基础上把结果给映射到0-1的区间内&#xff0c;hθ&#xff08;x&#xff09;越接近1越有可能是正例&#xff0c;反之&#xff0c;越接近0越有可能是负例。那么&am…