前端面试题+算法题(二)

一、LeeCode 算法题

1、643. 子数组最大平均数 I

题目:给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。任何误差小于 10-5 的答案都将被视为正确答案。

场景1:输入 nums = [1,12,-5,-6,50,3], k = 4  输出 12.75

场景2:输入 nums = [5], k = 1  输出 5.0000

小编思路

var findMaxAverage = function (nums, k) {
  let sum = null
  let asn = -Infinity
  for (let i = 0; i < nums.length; i++) {
    if (i < k) {
      sum += nums[i]
    } else {
      sum += nums[i] - nums[i - k]
    }
    if (i >= k - 1) {
      asn = Math.max(asn, sum / k)
    }
  }
  return asn;
};

官方题解

var findMaxAverage = function(nums, k) {
    let sum = 0;
    const n = nums.length;
    for (let i = 0; i < k; i++) {
        sum += nums[i];
    }
    let maxSum = sum;
    for (let i = k; i < n; i++) {
        sum = sum - nums[i - k] + nums[i];
        maxSum = Math.max(maxSum, sum);
    }
    return maxSum / k;
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/maximum-average-subarray-i/solutions/590322/zi-shu-zu-zui-da-ping-jun-shu-i-by-leetc-us1k/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2、645. 错误的集合

题目:集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

场景1:输入 nums = [1,2,2,4]  输出 [2,3]

场景2:输入 nums = [1,1]  输出 [1,2]

小编思路

  • sort()方法:对nums进行从小到大的排序
  • 第一个for()循环:找出重复的数
  • splice()方法:去除一个重复数
  • 第二个for()循环:找出不连续的数,即是丢失的数字
/**
 * @param {number[]} nums
 * @return {number[]}
 */
var findErrorNums = function (nums) {
  nums.sort((a, b) => a - b);
  let repeat = null;// 重复
  for (let i = 0; i < nums.length; i++) {
    if (nums[i] === nums[i + 1]) {
      repeat = nums[i]
      nums.splice(i,1)
    }
  }
  for (let j = 0; j < nums.length; j++) {
    if(nums[j] !== j+1){
      return [repeat, j+1]
    }
  }
  return [repeat, nums.length+1]
};

官方题解1:排序

将 nums 数组排序,n 为 nums 数组长度

  • 重复的数:相邻两个元素相等
  • 丢失的数:
    • 丢失的数大于等于 1 且小于 n,则相邻两个元素的差等于2,两个数间的值即为丢失的数字
    • 丢失的数是 n ,则 nums 的最后一个数不等于 n
var findErrorNums = function(nums) {
    const errorNums = new Array(2).fill(0);
    const n = nums.length;
    nums.sort((a, b) => a - b);
    let prev = 0;
    for (let i = 0; i < n; i++) {
        const curr = nums[i];
        if (curr === prev) {
            errorNums[0] = prev;
        } else if (curr - prev > 1) {
            errorNums[1] = prev + 1;
        }
        prev = curr;
    }
    if (nums[n - 1] !== n) {
        errorNums[1] = n;
    }
    return errorNums;
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/set-mismatch/solutions/857255/cuo-wu-de-ji-he-by-leetcode-solution-1ea4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

官方题解2:哈希表

  • 第一个for()循环:记录每个数字出现的次数
  • 第二个for()循环:
    • 重复的数字,会在数组中出现 2 次
    • 丢失的数字,会在数组中出现 0 次
var findErrorNums = function(nums) {
    const errorNums = new Array(2).fill(0);
    const n = nums.length;
    const map = new Map();
    for (const num of nums) {
        map.set(num, (map.get(num) || 0) + 1);
    }
    for (let i = 1; i <= n; i++) {
        const count = map.get(i) || 0;
        if (count === 2) {
            errorNums[0] = i;
        } else if (count === 0) {
            errorNums[1] = i;
        }
    }
    return errorNums;
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/set-mismatch/solutions/857255/cuo-wu-de-ji-he-by-leetcode-solution-1ea4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

3、674. 最长连续递增序列

题目:给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 rl < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。

场景1:输入 nums = [1,3,5,4,7]  输出 3

场景2:输入 nums = [2,2,2,2,2]  输出 1

小编思路

  • reduce()方法:遍历nums,并返回
    • 对于 reduce() 方法不理解的小伙伴,可以看下小编的这篇文章:ES6新特性详解-CSDN博客
  • 当前一项比后一项小,则说明还在递增当前递增长度+1,同时如果超出已记录的最大长度,则赋值给最大长度
  • 否则重新开始记录递增长度
/**
 * @param {number[]} nums
 * @return {number}
 */
var findLengthOfLCIS = function(nums) {
  let maxLength = 1;
  let curLength = 1;
  nums.reduce((pre,cur)=>{
    if(pre < cur){
      curLength++;
      if(maxLength < curLength){
        maxLength = curLength;
      }
    } else {
      curLength = 1;
    }
    return cur
  })
  return maxLength;
};

官方题解:贪心

  • for() 循环:当不是递增时,则更新 start 起始下标
  • Math.max()方法:每次循环判断当前记录的最大长度与更新下标后哪个长度更大,则取哪个长度
var findLengthOfLCIS = function(nums) {
    let ans = 0;
    const n = nums.length;
    let start = 0;
    for (let i = 0; i < n; i++) {
        if (i > 0 && nums[i] <= nums[i - 1]) {
            start = i;
        }
        ans = Math.max(ans, i - start + 1);
    }
    return ans;
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/longest-continuous-increasing-subsequence/solutions/573383/zui-chang-lian-xu-di-zeng-xu-lie-by-leet-dmb8/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

4、682. 棒球比赛

 题目:你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:

  1. 整数 x - 表示本回合新获得分数 x
  2. "+" - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。
  3. "D" - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。
  4. "C" - 表示前一次得分无效,将其从记录中移除。题目数据保证记录此操作时前面总是存在一个有效的分数。

请你返回记录中所有得分的总和。

场景1:输入 ops = ["5","2","C","D","+"]  输出 30

场景2:输入 ops = ["5","-2","4","C","D","9","+","+"]  输出 27

场景3:输入 ops = ["1"]  输出 1

小编思路

  • arr 记录每次有效分数,num1 前两次的有效得分,num2 前一次的有效得分
  • forEatch() 方法:分别判断 nums 为 4 种情况的计分处理,同时更新num1,num2值
/**
 * @param {number[]} nums
 * @return {number}
 */
var findLengthOfLCIS = function(nums) {
  let maxLength = 1;
  let curLength = 1;
  nums.reduce((pre,cur)=>{
    if(pre < cur){
      curLength++;
      if(maxLength < curLength){
        maxLength = curLength;
      }
    } else {
      curLength = 1;
    }
    return cur
  })
  return maxLength;
};

官方题解

  • 主要是将 if() 换成 switch()
var calPoints = function(ops) {
    let ret = 0;
    const points = [];
    for (const op of ops) {
        const n = points.length;
        switch (op[0]) {
            case '+':
                ret += points[n - 1] + points[n - 2];
                points.push(points[n - 1] + points[n - 2]);
                break;
            case 'D':
                ret += 2 * points[n - 1];
                points.push(2 * points[n - 1]);
                break;
            case 'C':
                ret -= points[n - 1];
                points.pop();
                break;
            default:
                ret += parseInt(op);
                points.push(parseInt(op));
                break;
        }
    }
    return ret;
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/baseball-game/solutions/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

5、697. 数组的度

  题目:给定一个非空且只包含非负数的整数数组 nums,数组的  的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。

场景1:输入 nums = [1,2,2,3,1]  输出 2

场景2:输入 nums = [1,2,2,3,1,4,2]  输出 6

其他思路

  • 定义map:记录每个数值的开始下标,结束下标,个数(分别对应 degree 的0,1,2)
  • 第一个forEatch() :
    • 如果map存在当前数值,则更新结束下标,计数+1
    • 如果map不存在当前数值,则初始化该数值开始、结束下标为当前循环下标,初始计数为1
  • 定义minLen、maxCount:最小长度、数组的度
  • 第二个forEatch():
    • 如果当前循环计数大于当前记录的最大计数(度),则更新最大计数(度),最小长度
    • 如果当前循环计数等于当前记录的最大计数(度),则更新最小长度
var findShortestSubArray = function (nums) {
  const map = new Map();
  nums.forEach((item, index) => {
    if (map.has(item)) {
      const degree = map.get(item);
      degree[1] = index; //right
      degree[2]++; //计数
      map.set(item, degree);
    } else {
      const degree = [index, index, 1];
      map.set(item, degree);
    }
  });

  let minLen = nums.length + 1;
  let maxCount = 0;
  map.forEach((item) => {
    if (item[2] > maxCount) {
      maxCount = item[2];
      minLen = item[1] - item[0] + 1;
    } else if (item[2] === maxCount) {
      minLen = Math.min(minLen, item[1] - item[0] + 1);
    }
  });
  return minLen;
};

官方题解

思路和上面相似,只是实现方式不同

var findShortestSubArray = function(nums) {
    const mp = {};

    for (const [i, num] of nums.entries()) {
        if (num in mp) {
            mp[num][0]++;
            mp[num][2] = i;
        } else {
            mp[num] = [1, i, i];
        }
    }
    
    let maxNum = 0, minLen = 0;
    for (const [count, left, right] of Object.values(mp)) {
        if (maxNum < count) {
            maxNum = count;
            minLen = right - left + 1;
        } else if (maxNum === count) {
            if (minLen > (right - left + 1)) {
                minLen = right - left + 1;
            }
        }
    }
    return minLen;
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/degree-of-an-array/solutions/610337/shu-zu-de-du-by-leetcode-solution-ig97/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

二、面试题

1、Less 和 Scss 的区别

Less 和 SCSS 都是 CSS 的预处理器,它们允许开发者使用更强大和灵活的语法来编写样式表,从而提高开发效率和代码的可维护性

(1)语法差异

①Less

  • 语法与标准 CSS 有所不同,更接近 js 的语法
  • . 定义类选择器,# 定义 ID 选择器,> 定义子选择器
  • 使用较少的特殊字符,eg:变量定义以 @ 开头,Mixin 以 . 开头,选择器嵌套使用 &
@primary-color: #333;
.header {
  background-color: @primary-color;
}

②SCSS

  • 语法更接近标准的 CSS ,会保留标准 CSS 的所有特性
  • 用缩进或大括号 {} 定义选择器,用分号 ; 定义分隔属性
  • 支持嵌套规则、变量、运算符等
$primary-color: #333;
.header {
  background-color: $primary-color;
}

(2)编译方式

①Less

  • 通常以 .less 为扩展名

②SCSS

  • 通常以 .scss 为扩展名

二者编译后均生成纯 CSS 文件,文件扩展名为 .css

(3)兼容性

①Less

  • 在早期版本中对 CSS 语法更宽松,较容易与现有的 CSS 文件集成。最新版本的 Less 也支持更严格的 CSS 语法

②SCSS

  • 采用更接近标准 CSS 的语法,更易上手

(4)社区和生态系统

①Less

  • 在生态系统方面较早出现,会有一些基于 Less 的工具和库,相较于 SCSS 使用率较低
  • 插件和工具支持不够丰富,尤其是与现代前端开发工具链的集成可能不如 SCSS 无缝

②SCSS

  • 与生态系统整合紧密
  • 有大量的插件和工具支持,与现代前端开发工具链的集成非常好

(5)性能

①Less

  • Less 的性能通常优于 SCSS,尤其在处理大量代码时,Less 的编译速度更快

②SCSS

  • SCSS 在处理大量嵌套和变量时,会比 Less 稍微慢一些

2、link 标签和 import 标签的区别?

<link> 和 @import 都用于引入外部 CSS 文件资源

(1)用法

① <link>

  • <link> 标签是 HTML 标记,用于在 HTML 文档的 <head> 部分中引入外部 CSS 文件
  • 其属性有: rel(关系)、href(资源链接)、type (MIME类型)等
<head>
  <link rel="stylesheet" href="style.css">
</head>

② @import

  • CSS 规则,用于在 CSS 样式表中引入外部 CSS 文件
  • 必须位于 CSS 样式表中,通常放在样式表的顶部
@import url("style.css");

(2)加载时机

① <link>

  • 引入的资源通常在页面加载时,同步加载 CSS 文件
  • 这样并行执行不会阻止页面的渲染(阻塞页面渲染,但不会阻塞解析)

② @import

  • 通常用于异步加载,当控制台开始执行遇到 import 语句时,对应的文件才会被加载
  • 这样会阻止页面的渲染,导致页面渲染延迟

(3)兼容性

① <link>

  • 可用于所有 HTML 版本

② @import

  • 其规则是 CSS2 引入的特性,旧版浏览器可能不支持

(4)可维护性

① <link>

  • 与 HTML 文档分开,更容易维护和管理,且可以在文档的 <head> 部分轻松找到

② @import

  • 引入的 CSS 文件与 CSS 代码混在一起,会导致维护复杂度增加

3、Js 中的隐藏类是什么?以下哪段代码运行效率更高?

答案:左边例1的效率更高,因为重用了隐藏类(Hidden Class)

(1)隐藏类

  • 隐藏类是指V8引擎(Google Chorme 和 Node.js 使用的 JS 引擎)中的一种优化机制
  • JS是一门动态语言,V8引擎会为每个JS对象分配一个隐藏类,以便更快找到属性所在的内存位置

(2)测试案例

// 测试代码
console.time("a");//例1
for (let i = 0; i < 1000000; i++) {
  const obj = {};
  obj["a"] = i;
}
console.timeEnd("a");

console.time("b");//例2
for (let i = 0; i < 1000000; i++) {
  const obj = {};
  obj[`${i}`] = i;
}
console.timeEnd("b");

(3)分析案例

①方案一:User1
  • 第 1 次循环,i=0,执行 new User1(`User_0`, 0); 时
    • 执行第一行:V8会生成一个叫 Hidden Class 0{} 的类
    • 执行第二行:添加一个叫 name 的属性。V8会生成一个新的 Hidden Class 1 带上 name 属性,并在 Class 0 上标记内存偏移量指向 Class 1。当前 Class 1 则用于表示当前所执行的代码
    • 执行第三行:添加 age 属性。V8会生成一个新的 Hidden Class 2 带上 age 属性,并在 Class 1 上标记内存偏移量指向 Class 2。当前 Class 2 则用于表示实例化出来的真实对象
  • 第 2 次循环时,V8会寻找能够代表当前代码的隐藏类
    • 执行第一行:如果有寻找到,则直接使用。因此会找到 Class 0,并分配给当前代码
    • 执行第二行:会找到 Class 1
    • 执行第三行:会找到 Class 2

综上,即使这段代码在执行1,000万次,哪怕更多的循环,V8始终在利用这三个隐藏类来表示这段代码,不用新建新的隐藏类来进行表示

②方案二:User2
  • 第 1 次循环,i=0,执行 new User2(`User_0`, 0); 时
    • 执行第一行:同方案一是一样,都生成一个隐藏类 Hidden Class 0
    • 执行第二行:用 name 的值 User_0 来作为属性名,因此V8会建一个新的 Hidden Class 1,带上 User_0 参数,并在 Class 0 上标记 User_0 的内存偏移指针,指向 Class 1,当前 Class 1 标记所执行的代码
    • 执行第三行:同上,新建 Hidden Class 2

与方案一相同都是只生成了3个隐藏类【到目前为止V8所消耗的性能和方案一是一致的】

  • 第 2 次循环时,i=1,执行 new User2(`User_1`, 1); 时
    • 执行第一行:同理还是可以找到 Class 0
    • 执行第二行:由于 name 的参数变为 User_1,原来并没有一个隐藏类可以与之对应。因此V8需要新建新的隐藏类 Hidden Class 3,并在 Class 0 上标记 User_1 的指针偏移,指向 Class 3
    • 执行第三行:需要再新建一个隐藏类 Hidden Class 4,在原来的 Class 3 上新建 age 的指针偏移量,指向 Class 4(指当前正在执行的这段实例化出来的代码)

综上,当执行1,000万次循环时,V8则要针对这段代码实例化2,000万个隐藏类

③总结

方案二比方案一耗时多出许多的原因是:建隐藏类的过程,造成了极大的性能损耗

function User1(name, age) {
  this.name = name; // age 为固定属性
  this.age = age; // age 为固定属性
}
console.time("例1耗时");
for (let i = 0; i < 10000000; i++) {
  new User1(`User_${i}`, i);
}
console.timeEnd("例1耗时");

function User2(name, age) {
  this[name] = name; // name 为动态属性
  this.age = age; // age 为固定属性
}
console.time("例2耗时");
for (let i = 0; i < 10000000; i++) {
  new User2(`User_${i}`, i);
}
console.timeEnd("例2耗时");

(4)优化建议

①在构造函数中初始化所有属性,尽量避免“添加动态属性”的场景

②始终按照同样属性顺序构建对象,使得隐藏类可以得到重用

③不要加载未初始化已经删除的属性

4、数组的快速模式、字典模式是什么?以下哪段代码效率更高?

答案:左边效率更高,因为利用了数组的快速模式

(1)数组模式

V8会以不同的形式去存储 JS 的数组

①快速模式
  • 对应 C 语言的数组来对 JS 的数组进行存储,具备速度快,紧凑的特点

  • 触发机制:索引从 0 到 length-1 且无空洞 或 预分配数组小于100000,无论有无空洞
②字典模式
  • 对应 C 语言的哈希表,具备速度慢,松散的特点

  • 触发机制:预分配数组大于等于100000,且数组有空洞

(2)测试案例

// 测试代码
console.time('a');
const arr1 = [];
for (let i = 0; i < 10000000; i++) {
  arr1[i] = 1;
}
console.timeEnd('a');

console.time('b');
const arr2 = [];
arr2[10000000 - 1] = 1;
for (let i = 0; i < 10000000; i++) {
  arr2[i] = i;
}
console.timeEnd('b');

(3)优化策略

①从 0 开始连续的初始化数组,以避免数组进入字典模式

不要预分配一个超大数组(如长度大于等于 100000)

③删除数组元素时让数组保持紧凑,尽可能避免使用 delete

④不要访问未初始化已删除的数组元素

5、以下代码什么时候成立?

if (a == 1 && a == 2 && a == 3) {
  console.log("结果成立");
}

结果如下: 

const a = {
  i: 1,

  valueOf: function() {
    return this.i++;
  }
}

if (a == 1 && a == 2 && a == 3) {
  console.log("结果成立");
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【弹性计算】容器、裸金属

容器、裸金属 1.容器和云原生1.1 容器服务1.2 弹性容器实例1.3 函数计算 2.裸金属2.1 弹性裸金属服务器2.2 超级计算集群 1.容器和云原生 容器技术 起源于虚拟化技术&#xff0c;Docker 和虚拟机和谐共存&#xff0c;用户也找到了适合两者的应用场景&#xff0c;二者对比如下图…

DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析

在人工智能领域&#xff0c;DeepSeek、Kimi、文心一言和通义千问作为国内领先的 AI 大语言模型&#xff0c;各自展现出了独特的特点和优势。本文将从技术基础、应用场景、用户体验和价格与性价比等方面对这四个模型进行对比分析&#xff0c;帮助您更好地了解它们的特点和优势。…

DeepSeek 15天指导手册——从入门到精通

大家好&#xff0c;欢迎来到今天的教程&#xff01;前几天发表 DeepSeek 的文章&#xff0c;收到大家的一致好评。 YYDS&#xff01;WPS 集成 DeepSeek&#xff0c;办公从此更智能 DeepSeek使用技巧&#xff1a;9个技巧让AI助手变身超级英雄 今天我们为大家带来的是DeepSeek…

百问网(100ask)提供的烧写工具的原理和详解;将自己编译生成的u-boot镜像文件烧写到eMMC中

百问网(100ask)提供的烧写工具的原理 具体的实现原理见链接 http://wiki.100ask.org/100ask_imx6ull_tool 为了防止上面这个链接失效&#xff0c;我还对上面这个链接指向的页面保存成了mhtml文件&#xff0c;这个mhtml文件的百度网盘下载链接&#xff1a; https://pan.baidu.c…

Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析

#作者&#xff1a;孙德新 文章目录 分区分配操作(kafka-reassign-partitions.sh)1.1 分区扩容、数据均衡、迁移(kafka-reassign-partitions.sh)1.2、修改topic分区partition的副本数&#xff08;扩缩容副本&#xff09;1.3、Partition Reassign场景限流1.4、节点内副本移动到不…

初阶c语言(练习题,猜随机数,关机程序)

目录 第一题&#xff0c;使用函数编写一个随机数&#xff0c;然后自己猜&#xff0c;猜随机数 第二道题&#xff08;关机程序&#xff09; 实现代码&#xff08;关机程序&#xff09; 实现代码&#xff08;猜数字&#xff09; 前言&#xff1a; 学习c语言&#xff0c;学习…

《千多桃花一世开》:南胥月为何爱暮悬铃

●前世故人&#xff1a;混沌珠神女 •一边不知情为何物时&#xff0c;一边又情不知所起&#xff0c;一往而深 上一世&#xff0c;他们还是神器的时候&#xff0c;混沌珠与天命书形影不离&#xff0c;为天命所创、为天命执行法则&#xff0c;如执行指令的机器&#xff0c;没有…

SpringBoot3 快速启动框架

文章目录 1 SpringBoot3 介绍 1.1 SpringBoot3 简介1.2 快速入门1.3 入门总结 2 SpringBoot3 配置文件 2.1 统一配置管理概述2.2 属性配置文件使用2.3 YAML配置文件使用2.4 批量配置文件注入2.5 多环境配置和使用 3 SpringBoot 整合 springMVC 3.1 实现过程3.2 web相关配置3.3…

21爬虫:使用playwright接管本地已经登录淘宝的浏览器并查找python相关店铺信息

1.playwright如何接管本地浏览器 &#xff08;1&#xff09;首先找到电脑上安装的Chrome浏览器可执行程序的完整路径&#xff1a; Mac电脑上可执行程序的完整路径为&#xff1a; /Applications/Google Chrome.app/Contents/MacOS/Google Chrome windows系统的电脑上查找可执行…

C++ Primer 返回值和return语句

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

【Java集合二】HashMap 详解

一、简介 1.1 概述 JDK1.8之前&#xff1a;HashMap使用数组链表实现&#xff0c;即使用链表处理冲突&#xff0c;同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多&#xff0c;即hash值相等的元素较多时&#xff0c;通过key值依次查找的效率较低。 JDK1.8…

3、树莓派5 安装VNC查看器 开启VNC服务器

在前序文章中&#xff08; 2、树莓派5第一次开机&#xff09;&#xff0c;可以使用三种方式开机&#xff0c;其中使用网线及wifi的方式均需要使用到VNC查看器进行远程桌面控制&#xff0c;本文将介绍如何下载安装并配置及使用VNC查看器及服务器&#xff0c;对前序文章做一些补充…

Flutter 常见布局模型

Flutter的常见的布局模型有容器&#xff08;Container&#xff09;、弹性盒子布局&#xff08;Flex、Row、Column、Expanded&#xff09;、流式布局&#xff08;Wrap、Flow&#xff09;、层叠布局&#xff08;Stack、Position&#xff09;、滚动布局&#xff08;ListView、Grid…

Java类与类的关系

类与类之间最常见的关系主要有以下三种&#xff1a; 依赖&#xff08;或uses–a&#xff09;聚合&#xff08;或has–a&#xff09;继承&#xff08;或is–a&#xff09; 依赖 依赖关系是类中最常见的关系&#xff0c;例如订单类&#xff08;order&#xff09;需要访问用户账…

神经网络的学习 求梯度

import sys, ossys.path.append(os.pardir) import numpy as npfrom common.functions import softmax, cross_entropy_error from common.gradient import numerical_gradient# simpleNet类 class simpleNet:def __init__(self):self.W np.random.rand(2, 3) # 随机形状为2*…

架构——Nginx功能、职责、原理、配置示例、应用场景

以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明&#xff1a; 一、Nginx 的核心功能 1. 静态资源服务 功能&#xff1a;直接返回静态文件&#xff08;如 HTML、CSS、JS、图片、视频等&#xff09;。配置示例&#xff1a;server {listen 80…

如何在 Mac 上解决 Qt Creator 安装后应用程序无法找到的问题

在安装Qt时&#xff0c;遇到了一些问题&#xff0c;尤其是在Mac上安装Qt后&#xff0c;发现Qt Creator没有出现在应用程序中。通过一些搜索和操作&#xff0c;最终解决了问题。以下是详细的记录和解决方法。 1. 安装Qt后未显示Qt Creator 安装完成Qt后&#xff0c;启动应用程…

优选算法《位运算》

在本篇当中我们将会复习之前在C语言阶段学习的各种位运算&#xff0c;并且在复习当中将再补充一些在算法题当中没有进行总结的位运算的使用方法&#xff0c;再总结完常见的位运算使用方法之和接下来还是和之前的算法篇章一样通过几道算法题来对这些位运算的方法技巧进行巩固。在…

应对DeepSeek总是服务器繁忙的解决方法

最近由于访问量过大&#xff0c;DeepSeek服务器官网经常弹出&#xff1a;“服务器繁忙&#xff0c;请稍后再试”的提示&#xff0c;直接卡成PPT怎么办&#xff1f;服务器繁忙直接看到视觉疲劳&#xff1a; 解决DeepSeek卡顿问题 DeepSeek使用卡顿问题&#xff0c;是因为访问量…

docker容器部署jar应用导入文件时候报缺少字体错误解决

如题&#xff0c;在导入文件时候报错如下&#xff1a; Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager 经查是缺少对应字体&#xff0c;解决办法有两张&#xff1a; 第一种&#xff1a;…