2023年深圳某互联网公司前端开发初级岗笔试真题(含解析和源码)

news2024/11/30 2:28:02

📚关于该专栏: 该专栏的发布内容是前端面试中笔试部分真题、答卷类、机试等等的题目,题目类型包括逻辑题、算法题、选择题、问答题等等,除了内容的分享,还有解析和答案。真实来自某些互联网公司,坐标广东广州、深圳。

🔥🔥🔥 持 续 更 新 🔥🔥🔥

😉专栏博主: 黛琳ghz,万粉博主,计算机软件专业博主,CSDN 实力新星CSDN 全栈领域新星创作者CSDN 前端领域优质创作者2022年度博客之星前端领域TOP 82022年度博客之星TOP 95华为云社区云享专家阿里云社区专家博主CSDN 第四届猿创征文优质博文奖(分数85第一)、以及多项优秀TOP 博文,欢迎你的关注与访问、可私信交流学习、问答等等。在这里插入图片描述


文章目录

  • 📋前言
  • 📑题目总览与分析
  • 🎯题目一
    • 💻代码和解析
  • 🎯题目二
    • 💻代码和解析
  • 🎯题目三
    • 💻代码和解析
  • 🎯题目四
    • 💻代码和解析
  • 🎯题目五
    • 💻代码和解析
  • 🎯题目六
    • 💻代码和解析
  • 📝最后


在这里插入图片描述

📋前言

这篇文章来自一个全新的专栏,同时也是这个专栏的第一篇文章,该专栏的发布内容是前端面试中笔试部分真题答卷类机试等等的题目,题目类型包括逻辑题算法题选择题问答题等等,除了内容的分享,还有解析和答案。真实来自某些互联网公司,坐标广东广州、深圳。

这篇文章分享的真题是来自2023年某科技公司的笔试真题,面试的岗位的范围是初级前端,题目内容包括了布局样式题、逻辑题、字符串题,根据题目的要求和提供的代码,补全功能。


📑题目总览与分析

首先这份笔试题一共有 六道题目 ,而且有一个笔试题选题规则,具体规则如下图(顺应这份题目的规则的同时,这篇文章也会对全部题目进行解析和通过源码)。接下来我们来看看有哪些题目类型。
在这里插入图片描述
在这里插入图片描述
通过目录我们可以大致了解题目类型,分别是非常非常基础的输出内容题(必选题)(学C语言、Java都应该做过这题吧)、样式布局两题二选一、最后是逻辑题三选二(涉及到了字符串的运用和 JavaScript 内置函数、对象的使用)。接下来按照顺序来解决这六道题目吧。


🎯题目一

一、输出一个菱形
请补充一个renderDiamond方法的实现,根据入参的一个奇数n,在控制台打印出一个由 * 填充而成的菱形,横向最长的填充为n个 *

例如输入 5 ,输出的结果为

  *
 ***
*****
 ***
  *

例如输入 7 ,输出的结果为

   *
  ***
 *****
*******
 *****
  ***
   *

💻代码和解析

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    const n =prompt("Please enter an odd number:")
    function renderDiamond(n) {
        // 当输入的数字不为奇数或小于1时,输出错误信息
        if (n % 2 === 0 || n < 1) {
            console.error("Please enter a correct odd number!");
            return;
        }

        // 输出上半部分菱形
        for (let i = 1; i <= n; i += 2) {
            let row = "";
            // 计算当前行需要填充的空格数和星号数
            let spaceNum = (n - i) / 2;
            let starNum = i;
            // 生成当前行
            for (let j = 0; j < spaceNum; j++) {
                row += " ";
            }
            for (let j = 0; j < starNum; j++) {
                row += "*";
            }
            console.log(row);
        }

        // 输出下半部分菱形
        for (let i = n - 2; i >= 1; i -= 2) {
            let row = "";
            // 计算当前行需要填充的空格数和星号数
            let spaceNum = (n - i) / 2;
            let starNum = i;
            // 生成当前行
            for (let j = 0; j < spaceNum; j++) {
                row += " ";
            }
            for (let j = 0; j < starNum; j++) {
                row += "*";
            }
            console.log(row);
        }
    }
    renderDiamond(n)
</script>
</html>

运行在 html 文件中的 script 标签,方便调试和运行(第四、六题也是如此),该方法首先会检查输入的数字是否为正奇数,如果不满足条件则输出错误信息。然后,该方法会分别输出菱形的上半部分和下半部分。对于每一行,会先计算需要填充的空格数和星号数,然后按照一定的格式生成当前行并输出到控制台。运行效果如下。
在这里插入图片描述
下面还有一个更加简短的方法,该方法的思路与上面的方法类似,但是使用了字符串的 padStart 方法来填充空格。对于每一行,可以直接使用字符串的 repeat 方法生成一行星号,然后使用 padStart 方法在其左侧填充指定数量的空格来实现居中对齐。代码如下。(关于 padStart 方法和 repeat 方法等等 ES6 新增的字符串方法也会在之后的博客中介绍到,留意更新内容)

function renderDiamond(n) {
    // 如果输入n不是正奇数,则退出
    if (n % 2 === 0 || n < 1) {
        console.error("Please enter a correct odd number!");
        return;
    }
    let half = Math.floor(n / 2); // 上下两部分各需要打印的行数
    // 输出上半部分
    for (let i = 0; i <= half; i++) {
        let line = "*".repeat(i * 2 + 1);
        console.log(line.padStart(n - half + i));
    }
    // 输出下半部分
    for (let i = half - 1; i >= 0; i--) {
        let line = "*".repeat(i * 2 + 1);
        console.log(line.padStart(n - half + i));
    }
}

🎯题目二

二、请通过HTML+CSS 实现以下页面的布局和大致样式
效果图如下。
在这里插入图片描述

💻代码和解析

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>股票列表</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
        }

        .stock-container {
            margin: 0 auto;
            width: 60%;
        }

        .stock-heading {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: space-between;
            width: 100%;
            height: 40px;
        }

        .stock-heading span {
            font-size: 16px;
            color: #333;
        }

        .stock-data {
            padding-top: 10px;
            border-top: 1px solid #ddd;
        }

        .stock-row {
            display: flex;
            flex-direction: row;
            justify-content: space-between;
            align-items: center;
            width: 100%;
            padding: 10px 0;
            border-bottom: 1px solid #ddd;

        }

        .left-col {
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            flex: 1;
        }

        .middle-col {
            display: flex;
            flex-direction: column;
            align-items: center;
            flex: 1;
        }

        .right-col {
            display: flex;
            flex-direction: row;
            justify-content: center;
            align-items: flex-end;
            flex: 1;
            font-weight: bold;

        }

        .stock-name {
            font-size: 16px;
            color: #333;
            margin-bottom: 5px;
        }

        .stock-desc {
            font-size: 12px;
            color: #999;
            margin-bottom: 10px;
        }

        .stock-price {
            display: flex;
            flex-direction: row;
            align-items: center;
        }

        .stock-price span {
            font-size: 16px;
            margin-right: 10px;
        }

        .stock-price-change {
            font-size: 12px;
            color: green;
        }

        .stock-price-down {
            font-size: 12px;
            color: red;
            font-weight: bold;
        }

        .stock-percentage {
            font-size: 14px;
            color: #999;
            margin-top: 10px;
        }

        .stock-percentage-change {
            font-size: 12px;
            color: green;
            font-weight: bold;
        }

        .stock-percentage-down {
            font-size: 12px;
            color: red;
            font-weight: bold;
        }

        .stock-arrow-up::before {
            content: "▲";
            color: green;
            margin-left: 5px;
        }

        .stock-arrow-down::before {
            content: "▼";
            color: red;
            margin-left: 5px;
        }

        .stock-arrow-next {
            position: relative;
            width: 28px;
            height: 28px;
            margin-top: 20px;
        }

        .stock-arrow-next::after {
            display: inline-block;
            content: " ";
            height: 10px;
            width: 10px;
            border-width: 2px 2px 0 0;
            border-color: #999;
            border-style: solid;
            transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
            position: absolute;
            left: 10px;
        }
    </style>
</head>
<body>
    <div class="stock-container">
        <div class="stock-heading">
            <span>股票名称</span>
            <span>价格涨跌</span>
            <span>占比</span>
            <span>占比较上期</span>
        </div>
        <div class="stock-data">
            <div class="stock-row">
                <div class="left-col">
                    <div class="stock-name">华泰证券</div>
                    <div class="stock-desc">非银金融</div>
                </div>
                <div class="middle-col">
                    <div class="stock-price">
                        <span class="stock-price-change stock-price-number">-0.62%</span>
                    </div>
                    <div class="stock-percentage">
                        <span class="stock-price-number">14.50</span>
                    </div>
                </div>
                <div class="right-col"><span class="stock-price-number">9.34%</span></div>
                <div class="right-col">
                    <span class=" stock-arrow-down">0.58%<i class="stock-arrow-next"></i></span>
                </div>
            </div>
        </div>
        <div class="stock-data">
            <div class="stock-row">
                <div class="left-col">
                    <div class="stock-name">华泰证券</div>
                    <div class="stock-desc">非银金融</div>
                </div>
                <div class="middle-col">
                    <div class="stock-price">
                        <span class="stock-price-change stock-price-number">-0.62%</span>
                    </div>
                    <div class="stock-percentage">
                        <span class="stock-price-number">14.50</span>
                    </div>
                </div>
                <div class="right-col">9.34%</div>
                <div class="right-col">
                    <span class="stock-arrow-down">0.58%<i class="stock-arrow-next"></i></span>
                </div>
            </div>
        </div>
        <div class="stock-data">
            <div class="stock-row">
                <div class="left-col">
                    <div class="stock-name">华泰证券</div>
                    <div class="stock-desc">非银金融</div>
                </div>
                <div class="middle-col">
                    <div class="stock-price">
                        <span class="stock-price-change stock-price-number">-0.62%</span>
                    </div>
                    <div class="stock-percentage">
                        <span class="stock-price-number">14.50</span>
                    </div>
                </div>
                <div class="right-col">9.34%</div>
                <div class="right-col">
                    <span class="stock-arrow-down">0.58%<i class="stock-arrow-next"></i></span>
                </div>
            </div>
        </div>
        <div class="stock-data">
            <div class="stock-row">
                <div class="left-col">
                    <div class="stock-name">华泰证券</div>
                    <div class="stock-desc">非银金融</div>
                </div>
                <div class="middle-col">
                    <div class="stock-price">
                        <span class="stock-price-change stock-price-number">-0.62%</span>
                    </div>
                    <div class="stock-percentage">
                        <span class="stock-price-number">14.50</span>
                    </div>
                </div>
                <div class="right-col">9.34%</div>
                <div class="right-col">
                    <span class="stock-arrow-down">0.58%<i class="stock-arrow-next"></i></span>
                </div>
            </div>
        </div>
        <div class="stock-data">
            <div class="stock-row">
                <div class="left-col">
                    <div class="stock-name">华泰证券</div>
                    <div class="stock-desc">非银金融</div>
                </div>
                <div class="middle-col">
                    <div class="stock-price">
                        <span class="stock-price-change stock-price-number">-0.62%</span>
                    </div>
                    <div class="stock-percentage">
                        <span class="stock-price-number">14.50</span>
                    </div>
                </div>
                <div class="right-col">9.34%</div>
                <div class="right-col">
                    <span class="stock-arrow-down">0.58%<i class="stock-arrow-next"></i></span>
                </div>
            </div>
        </div>
    </div>
    </div>
</body>
</html>

这题没啥难度,很基础的样式布局题,有点搬砖的感觉。首先题目中的箭头没用用字符图标,升降是直接用符号来表示,右箭头是用 html 和 css 写的。然后是数据,知道是那个意思就行了,所以复制粘贴了第一条数据填充全部页面。

页面中包含一个股票列表的容器(class=“stock-container”),以及每个股票的行数据(class=“stock-row”)。整个页面的 CSS 样式比较简洁,使用了 flex 布局。页面中的表头(class=“stock-heading”),显示着股票名称、价格涨跌、占比和占比较上期。在股票价格中涨跌的情况下,会显示相应的红色或绿色字体以及对应的箭头图标(class=“stock-arrow-up”、class=“stock-arrow-down”)。

每个股票行数据中包含左侧列(class=“left-col”),显示着股票名称(class=“stock-name”)和股票描述(class=“stock-desc”);中间列(class=“middle-col”),显示着股票价格(class=“stock-price”)和占比(class=“stock-percentage”);右侧列分两个部分(class=“right-col”),第一个部分显示着占比(class=“stock-price-number”),第二个部分是一个箭头图标(class=“stock-arrow-next”)。运行效果如下。
在这里插入图片描述
最后这题说一下如何用 html 和 css 来制作一个箭头,以本题的这个箭头为例子,下面是具体的代码实现。

<i class="stock-arrow-next"></i>
.stock-arrow-next {
	position: relative;
	width: 28px;
	height: 28px;
	margin-top: 20px;
}

.stock-arrow-next::after {
	display: inline-block;
	content: " ";
	height: 10px;
	width: 10px;
	border-width: 2px 2px 0 0;
	border-color: #999;
	border-style: solid;
	transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
	position: absolute;
	left: 10px;
}

这个箭头图标的绘制通过伪元素(::after)实现,该伪元素使用了border进行绘制。其样式选项包括:设置内联块级元素(display: inline-block;)、内容为空格(content: " ";)、高度和宽度分别为10px(height: 10px; width: 10px;)、三个边框宽度设置为2px、0、0和2px(border-width: 2px 2px 0 0;)、边框颜色设置为#999(border-color: #999;)、边框样式设置为实线(border-style: solid;)、旋转45度(transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);)以及绝对定位(position: absolute;)和左边距为10px(left: 10px;)以调整位置。


🎯题目三

三、实现一下悬浮弹窗的布局和样式
效果图如下。
在这里插入图片描述

💻代码和解析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .modal {
            width: 360px;
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background-color: #fff;
            border-radius: 10px;
            border: 1px solid #b8b5b5;

        }

        .modal-header {
            height: 60px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            border-bottom: 1px solid #cbc8c8;
        }

        .modal-title {
            margin: 0;
            padding-left: 10px;
            font-size: 18px;
        }

        .close {
            font-size: 36px;
            color: #808080;
            padding-right: 18px;
            cursor: pointer;
        }

        .modal-body {
            padding-left: 10px;
            height: 60px;
            border-bottom: 1px solid #cbc8c8;
        }

        .modal-footer {
            height: 70px;
            display: flex;
            justify-content: flex-end;
            align-items: center;
            padding-right: 18px;
        }

        .btn-close,
        .btn-save {
            padding: 8px 12px;
            border: none;
            border-radius: 4px;
            margin-left: 10px;
            cursor: pointer;
        }

        .btn-close {
            background-color: #6e757c;
            color: #fff;
        }

        .btn-save {
            background-color: #306ef4;
            color: #fff;
        }
    </style>
</head>
<body>
    <div class="modal">
        <div class="modal-header">
            <h3 class="modal-title">Modal title</h3>
            <span class="close">&times;</span>
        </div>
        <div class="modal-body">
            <p>Modal body text goes here.</p>
        </div>
        <div class="modal-footer">
            <button class="btn-close">Close</button>
            <button class="btn-save">Save Changes</button>
        </div>
    </div>
</body>
</html>

这题也是没啥难度,很基础的样式布局题,不搬砖,很快就能完成。首先要设置好布局,这个弹窗分为上中下三个部分,其中每个部分里面的内容使用 flex 布局来完成,其中让弹窗固定在页面的居中位置使用了 fixed 定位来完成。

.modal 是整个弹窗的容器,固定了宽度、位置和样式。.modal-header 是弹窗的头部,包含了标题和关闭图标。.modal-title 是标题部分的样式,包括了字体大小、内边距等。.close 是关闭按钮的样式,固定了大小、颜色和内边距,并添加了光标指针的样式。.modal-body 是弹窗的主体部分,包括了文本内容。.modal-footer 是弹窗的底部部分,包括了两个按钮分别是.btn-close 关闭按钮和.btn-save 保存按钮。运行效果如下。
在这里插入图片描述


🎯题目四

四、实现一个方法查找字符串中出现最多的字符和个数。
例:abbcccddddd => 字符最多的是d,出现了5次。请实现以下方法:

function getLongestStrNum (date){
	//请在这里编码
}

💻代码和解析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
<script>
    const str = prompt("Please enter a string:")
    function getLongestStrNum(str) {
        if (typeof str !== "string") {
            console.error("Please enter a correct string!");
            return;
        }
        let maxChar = "";
        let maxCount = 0;
        let charMap = {};
        // 统计每个字符出现的次数
        for (let i = 0; i < str.length; i++) {
            let char = str.charAt(i);
            if (charMap[char]) {
                charMap[char]++;
            } else {
                charMap[char] = 1;
            }
        }
        // 找到出现次数最多的字符
        for (let char in charMap) {
            if (charMap[char] > maxCount) {
                maxChar = char;
                maxCount = charMap[char];
            }
        }
        console.log(`字符最多的是${maxChar},出现了${maxCount}`);
    }
    getLongestStrNum(str)
</script>
</html>

该方法首先会判断输入的内容是否为字符串,然后遍历字符串,统计每个字符出现的次数,并将结果存储在一个对象 charMap 中。接着,从 charMap 中找到出现次数最多的字符和对应的出现次数,最后输出结果。运行效果如下。
在这里插入图片描述


🎯题目五

五、实现一个方法把日期转换成特定格式的字符串
例如:date2Str(new Date()) 输出 Y/M/d/h/m/s/ms 格式的字符串,即执行date2Str 输出的结果是 2023/5/17/0/39/15 。请实现以下方法:

function date2Str (date){
	//请在这里编码
}

💻代码和解析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
<script>
    const date = new Date()
    function date2Str(date) {
        let year = date.getFullYear();
        let month = date.getMonth() + 1;
        let day = date.getDate();
        let hour = date.getHours();
        let minute = date.getMinutes();
        let second = date.getSeconds();
        let millisecond = date.getMilliseconds();
        console.log("转换前:"+new Date());
        console.log("转换后:"+year + "/" + month + "/" + day + "/" + hour + "/" + minute + "/" + second + "/" + millisecond);
    }
    date2Str(date)
</script>
</html>

该方法首先从传入的日期对象中获取年、月、日、小时、分钟、秒以及毫秒等数据,然后将它们拼接成 Y/M/d/h/m/s/ms 格式的字符串,并返回该字符串。

需要注意的是,该方法返回的月份从1开始编号,因此在获取月份时必须加上1。此外,毫秒数有可能非常小,因此最好使用字符串连接符将所有字段连接起来,而不是使用加号。运行效果如下。
在这里插入图片描述


🎯题目六

六、写一个简单的计数函数,执行第 1 次打印 1 ,执行第 2 次打印 2 ,执行第 N 次打印 N

例如:
fn();//1
fn();//2
fn();//3
.
.
.
fn();//n

请实现这个这个计数函数:

function fn(){
	//请在这里编码
}

💻代码和解析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
<script>
    function fn() {
        let count = 0;
        return function () {
            count++;
            console.log(count);
        };
    }
    let counter = fn();
    counter(); // 输出 1
    counter(); // 输出 2
    counter(); // 输出 3
</script>
</html>

这题我们可以使用闭包函数来解决,该函数返回了一个新的函数,每次调用该新函数,都会将计数器(count 变量)的值加1,并将其打印到控制台中。由于该计数器定义在 fn() 函数的作用域内,并且返回的新函数可以访问该作用域,因此在多次调用该新函数时,计数器的值会持续增加。

在这里插入图片描述


📝最后

这套面试题适用于前端开发初级的岗位,适合准备面试或者没有面试经验的同学进行练习和阅读,这套面试题涉及的内容非常基础,难度不大,但是涉及到的初级内容还是很丰富的。比如说逻辑题涉及到的简单算法、字符串的运用、时间对象、闭包函数等等,样式布局题涉及到绝对定位、相对定位、fixed 定位、flex 布局等等内容。

而且这套题的规则是选做的方式,不用六题全部做完,因此就需要考核面试的同学的做题速度了,基础好不好通过这套题就能看出来了。如果这套题的可以在规定的时间内完成并且效果都大致实现了,说明你的基础很扎实了、思维逻辑能力很强了,继续努力、加油。
在这里插入图片描述

🎯点赞收藏,防止迷路🔥
✅感谢观看,下期再会📝
@CSDN | 黛琳ghz

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

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

相关文章

如何使用Python Flask和MySQL创建管理用户的REST API

部分数据来源&#xff1a;ChatGPT 引言 在现代化的应用开发中&#xff0c;数据库是一个非常重要的组成部分。关系型数据库&#xff08;例如&#xff1a;MySQL、PostgreSQL&#xff09;在这方面尤其是很流行。Flask是一个Python的web框架&#xff0c;非常适合实现REST API。在…

NLP学习笔记六-lstm模型

NLP学习笔记六-lstm模型 上一篇我们讲的是simple RNN模型&#xff0c;那么其实lstm模型更像是simple RNN模型的改进或者变种。 对于lstm模型&#xff0c;我们先看下面一张图&#xff1a; 其实lstm模型的思想是建立在simple RNN模型上的&#xff0c;但是要更加贴近于显示&…

内网安全:内网渗透.(拿到内网主机最高权限 vulntarget 靶场 A)

内网安全&#xff1a;内网渗透.&#xff08;拿到内网主机最高权限&#xff09; 内网穿透又被称为NAT穿透&#xff0c;内网端口映射外网&#xff0c;在处于使用了NAT设备的私有TCP/IP网络中的主机之间建立连接的问题。通过映射端口&#xff0c;让外网的电脑找到处于内网的电脑。…

数据分析第19课pyecharts布局(基础图形绘制)

官网:https://pyecharts.org/#/zh-cn/global_options?id=legendopts%ef%bc%9a%e5%9b%be%e4%be%8b%e9%85%8d%e7%bd%ae%e9%a1%b9 不想每个属性方法的看,可以直接看gallery 官网的数据都是静态的,如果要做数据实时更新的,即做前后端结合时,会用到Vue框架,与后端连接,实现动…

Nacos架构与原理 - CAP一致性协议 ( Raft Distro)

文章目录 为什么 Nacos 需要⼀致性协议为什么 Nacos 选择了 Raft 以及 Distro从服务注册发现来看从配置管理来看为什么是 Raft 和 Distro &#xff1f;Raft (CP模式)Distro &#xff08;AP模式&#xff09; Nacos ⼀致性协议的演进早期的 Nacos ⼀致性协议当前 Nacos 的⼀致性协…

[Python图像处理] 基于离散余弦变换的安全扩频数字水印

基于离散余弦变换的安全扩频数字水印 数字水印基于离散余弦变换的安全扩频数字水印实现安全扩频数字水印相关链接 数字水印 数字水印是可见的或不可见的标识码&#xff0c;这种标识码被永久嵌入图像中&#xff0c;并且即使在解码过后后仍存在于图像中。为了保证有效性&#xf…

Jetpack Compose 中在屏幕间共享数据的 5 种方案

1. 路由传参 Jetpack Compose 中路由传参的方式有很多种&#xff0c;具体可以参考 Jetpack Compose 中的导航路由 以下是最简单的路由传参测试代码&#xff1a; import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.…

Java开发框架:Spring介绍

Spring 概述特点Spring 程序遇到的问题与解决 概述 Spring 是 Java EE 编程领域中的一个轻量级开源框架&#xff0c;由 Rod Johnson 在 2002 年最早提出并随后创建&#xff0c;目的是解决企业级编程开发中的复杂性&#xff0c;实现敏捷开发的应用型框架 。其中&#xff0c;轻量…

代理模式的运用

文章目录 一、代理模式的运用1.1 介绍1.2 结构1.3 静态代理1.3.1 火车站买票案例类图1.3.2 代码 1.4 JDK动态代理1.4.1 代码1.4.2 JDK动态代理的执行流程 1.5 CGLIB动态代理1.5.1 导包1.5.2 代码 1.6 三种代理的对比1.7 优缺点1.8 使用场景 一、代理模式的运用 1.1 介绍 由于…

从0开始搭建Hyperledger Fabric2.x环境(fabric2.5版本)

Hyperledger Fabric 2.5环境搭建 一.Linux环境准备 # root登录 yum -y install git curl docker docker-compose tree yum -y install autoconf autotools-dev automake m4 perl yum -y install libtool autoreconf -ivf # 安装jq相关包 cd /opt git clone --recursive https…

软考A计划-系统架构师-官方考试指定教程-(8/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

Redis从入门到精通【进阶篇】之数据类型Stream详解和使用示例

文章目录 0.前言1. 基本概念1.1. Stream的结构1.2. 持久化1.3. Stream的消费者组 2.实现原理2.1. Stream的数据结构2.2. Stream的消息追加2.3. Stream的消费2.4. Stream的消费者组 3.Redis Stream底层原理3.1. 基数树&#xff08;Radix Tree&#xff09;3.2. listpacks小结 4.命…

数据清洗、数据处理入门!R语言我来了,数据不再零散!

一、引言 数据清洗和预处理是数据科学中必不可少的一部分&#xff0c;它们能够帮助我们准确地分析和预测未来趋势。如果你曾经尝试过进行分析或建模&#xff0c;你会发现数据往往不像我们所想象的那样干净、整洁。需要对数据进行仔细的检查、清理和处理&#xff0c;才能真正把…

JavaSE笔记(五)重制版

泛型程序设计 在前面我们学习了最重要的类和对象&#xff0c;了解了面向对象编程的思想&#xff0c;注意&#xff0c;非常重要&#xff0c;面向对象是必须要深入理解和掌握的内容&#xff0c;不能草草结束。在本章节&#xff0c;我们还会继续深入了解&#xff0c;从泛型开始&a…

delphi D11编程语言手册 学习笔记(P344-392) 接口/类操作

P344-365 接口 "接口" 的概念和 "类" 特别是 "抽象类" 近似, Delphi 之初并没有接口, 后来(Delphi 3)为了支持 COM 引入了接口, 再后来发展成为 Delphi 重要的语言特性. 使用 COM 步骤可能是这样的:     1.程序在使用组件之初, 先联系 "…

Java-API简析_java.util.ArrayList类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131119289 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

2023最新ChatGPT商业版4.8.8支持GPT4.0+AI绘画midjourney+实时语音识别输入+后台一键版本更新!

2023最新ChatGPT商业版4.8.8支持GPT4.0AI绘画midjourney永久更新&#xff01; 1.网站系统源码介绍&#xff1a; 程序已支持ChatGPT4.0、Midjourney绘画、GPT3.5 API绘画、语音识别输入、用户会员套餐用户每日签到功能后台管理一键更新版本。支持手机电脑不同布局页面自适应。…

【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】

目录 一、索引概述二、索引结构(1) 不同类型的索引结构(2) 二叉树和红黑树(3) B 树(4) B树(5) Hash(6) 为什么InnoDB存储引擎选择使用Btree索引结构相对于二叉树&#xff0c;层级更少&#xff0c;搜索效率高&#xff1b; 三、索引的分类(1) 聚集索引和二级索引(2) 思考题 四、索…

STM32之FreeRTOS

目录 FreeRTOS 介绍 什么是 FreeRTOS &#xff1f; 为什么选择 FreeRTOS ? FreeRTOS 资料与源码下载 祼机开发与 FreeRTOS 祼机开发&#xff1a; FreeRTOS&#xff1a; FreeRTOS 实现多任务的原理 二、移植 FreeRTOS 手动移植 使用CubeMX快速移植 快速移植流程…

基于Hadoop与Electron的京东商品评论词云统计系统

一、综合设计目的与要求 合肥工业大学软件工程专业《云计算、大数据技术与应用》课程综合设计报告。 爬取京东或淘宝某一商品的评论1000条&#xff0c;统计词频&#xff08;使用MapReduce或HBase或Hive&#xff09;&#xff0c;并以词云的方式可视化呈现&#xff0c;最后设计为…