【前端查漏补缺】每日10题 2023-12-25

news2025/7/10 18:15:55

1. 实现lodash _get方法

_.get 是 Lodash 库中的一个方法,用于按照给定的路径从对象中获取值。它是一种安全的方式,可以避免在获取嵌套属性时出现的空指针错误。

_.get 方法的语法如下:

_.get(object, path, [defaultValue])

参数说明:

object:要从中获取值的对象。
path:表示要获取的属性路径的字符串或数组。
defaultValue(可选):如果路径不存在或获取的值为 undefined,则返回的默认值。
以下是一个示例:

const obj = {
  foo: {
    bar: {
      baz: 'value'
    }
  }
};

const result = _.get(obj, 'foo.bar.baz');
console.log(result); // 输出 'value'

const defaultValue = _.get(obj, 'foo.bar.qux', 'default');
console.log(defaultValue); // 输出 'default'

手动实现lodash._get

// 手动实现lodash_get

const lodash_get = (obj, path, defaultValue) => {
  const keys = Array.isArray(path) ? path : path.split(".");
  let result = obj;
  for (let key of keys) {
    if (result && typeof result === "object" && key in result) {
      result = result[key];
    } else {
      return defaultValue;
    }
  }
  return result;
};
const obj = {
  a: {
    b: {
      c: 1,
    },
  },
};
console.log(lodash_get(obj, ["a", "b", "c"], "no result"));
console.log(lodash_get(obj, "a.b.d", "no result"));

2. 介绍一下网络的分层

网络的分层是指将网络功能按照不同的层次组织起来,每一层负责特定的任务和功能。这种分层的设计使得网络的开发、管理和维护更加简化和灵活。最常用的网络分层模型是 OSI 参考模型和 TCP/IP 参考模型。

OSI 参考模型:在这里插入图片描述

物理层(Physical Layer):负责传输比特流,处理物理连接和电信号。
数据链路层(Data Link Layer):处理帧(Frame)的传输和错误检测,提供可靠的点对点通信。
网络层(Network Layer):负责寻址、路由和分组转发,实现不同网络之间的通信。
传输层(Transport Layer):提供端到端的可靠或不可靠的数据传输,确保数据的完整性和可靠性。
会话层(Session Layer):负责建立、管理和终止会话(Session)。
表示层(Presentation Layer):处理数据的格式、加密和压缩,确保数据能被正确解释。
应用层(Application Layer):提供网络服务和应用程序之间的接口,包括电子邮件、文件传输等。
TCP/IP 参考模型:
在这里插入图片描述

网络接口层(Network Interface Layer):处理数据在物理媒体上的传输。
互联网层(Internet Layer):负责 IP 地址分配、路由和分组转发。
传输层(Transport Layer):提供端到端的可靠或不可靠的数据传输,包括 TCP 和 UDP。
应用层(Application Layer):包括网络应用和协议,如 HTTP、FTP、SMTP 等。

3. tcp/udp是哪一层的?

TCP(传输控制协议)和 UDP(用户数据报协议)是传输层的协议,属于网络分层模型中的传输层。

传输层的主要任务是提供端到端的可靠或不可靠的数据传输服务。它通过使用不同的协议来实现这些服务。

TCP 是一种面向连接的协议,它提供可靠的数据传输。TCP 使用握手、确认和重传机制来确保数据的可靠性和完整性。它还提供流量控制和拥塞控制,以确保在网络拥塞的情况下仍能保持适当的数据传输速率。

UDP 是一种无连接的协议,它提供不可靠的数据传输。UDP 不提供可靠性保证,也不处理数据的重传或流量控制。相比于 TCP,UDP 的优点是传输速度快,开销小,适用于一些实时性要求较高的应用,如音视频传输、实时游戏等。

在 OSI 参考模型中,TCP 和 UDP 位于传输层。它们是应用程序和网络之间的桥梁,负责将应用程序的数据分割为数据包,并在网络中进行传输。

在 TCP/IP 参考模型中,TCP 和 UDP 也位于传输层。它们是 TCP/IP 协议族中的两个主要协议,用于在 IP 网络上提供可靠的或不可靠的数据传输。

4. tcp/udp的区别

TCP(传输控制协议)和 UDP(用户数据报协议)是两种常见的传输层协议,它们在以下几个方面有所区别:

连接性:TCP 是面向连接的协议,而 UDP 是无连接的协议。TCP 在通信之前需要建立连接,而 UDP 直接发送数据包。

可靠性:TCP 提供可靠的数据传输,通过确认和重传机制来确保数据的完整性和正确性。UDP 则不提供可靠性保证,不进行数据的确认和重传,接收方无法确定数据是否完整。

有序性:TCP 保证数据的有序传输,确保数据按照发送的顺序接收。UDP 不保证数据的有序性,接收方收到数据的顺序可能与发送方不同。

延迟和效率:TCP 由于提供了可靠性保证和有序性,需要进行数据确认和重传,因此在传输效率和延迟方面相对较低。UDP 没有这些额外的机制,传输效率高,延迟低。

流量控制和拥塞控制:TCP 提供了流量控制和拥塞控制机制,可以根据网络的状况调整数据的传输速率,以避免网络拥塞。UDP 不提供这些机制。

应用场景:由于 TCP 提供可靠性和有序性保证,适用于对数据准确性要求较高的应用场景,如文件传输、电子邮件、网页浏览等。UDP 适用于实时性要求较高、数据丢失可接受的应用场景,如音视频传输、实时游戏等。

综上所述,TCP 和 UDP 在连接性、可靠性、有序性、延迟和效率等方面存在区别。选择使用 TCP 还是 UDP 取决于具体的应用需求和场景要求。

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

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

相关文章

【【IIC模块Verilog实现---用IIC协议从FPGA端读取E2PROM】】

IIC模块Verilog实现–用IIC协议从FPGA端读取E2PROM 下面是 design 设计 I2C_dri.v module IIC_CONTROL #(parameter SLAVE_ADDR 7b1010000 , // E2PROM 从机地址parameter CLK_FREQ 26d50_000_000 , // 50MHz 的时钟频率parameter …

怎么卸载macOS上的爱思助手如何卸载macOS上的logitech g hub,如何卸载顽固macOS应用

1.在App Store里下载Cleaner One Pro (注意,不需要订阅付费!!!白嫖基础功能就完全够了!!!) 2.运行软件,在左侧目录中选择“应用程序管理”,然后点…

迪文屏开发保姆级教程6----触摸实现界面切换

这篇文章要讲啥事呢? 本篇文章主要介绍了在DGBUS平台上触摸实现界面切换的方法。 文哥悄悄话: 官方开发指南PDF:(不方便下载的私聊我发给你) https://download.csdn.net/download/qq_21370051/88647174?spm1001.201…

vue场景 无分页列表条件过滤,子组件多选来自父组件的列表

日常开发中,经常会遇到下面场景: 页面加载一个无分页列表,同时工具栏设置多个条件可对列表过滤的场景(典型的就是关键字模糊查询)父组件传给子组件列表,子组件中需要多选列表多选,选择结果返回父组件 1 无分页列表过…

JavaScript常用技巧专题五

文章目录 一、使用适当的命名和注释来提高代码可读性二、优雅的写条件判断代码2.1、普通的if else2.2、三元运算符2.3、多个if else2.4、switch case2.5、对象写法2.6、Map写法 三、封装条件语句四、函数应该只做一件事五、Object.assign给默认对象赋默认值六、函数参数两个以下…

python(上半部分)

第一部分 1、input()语句默认结果是字符串 2、type()可以判断变量的类型 3、input()输出语句 (默认为字符串类型) 4、命名规则:中文、英文、数字、_,数字不可开头,大小写敏感。 5、 %s:将内容转换成…

2024年手把手教你安装FL Studio Producer Edition 21.2.2.3914中文汉化破解版

FL Studio Producer Edition 21.2.2.3914中文汉化破解版也就是 Image-Line 出品的一款功能强大的编曲软件,全名 Fruity Loops Studio 简称“FL Studio”今天突然的发现我们经常使用的水果音乐制作软件 FL STUDIO 居然从FL STUDIO 21.1.1 一下子跨越了版本号到了FL S…

Typora Mac激活

首先去官网选择mac版本下载安装 typora下载 然后打开typora包内容找到 /Applications/Typora.app/Contents/Resources/TypeMark/page-dist 找到/static/js/Licen..如下图 编辑器打开上面文件夹 输入 hasActivated"true"e.hasActivated 进行搜索 将它改为 hasA…

Typora图床搭建PicGo+阿里云OSS(免费白嫖)

文章目录 1. 目的2. 方案2.1 Typora2.2 PicGo2.3 阿里云OSS 3. 开始配置3.1 获取KeyId和KeySecret3.2 创建Bucket3.3 配置PicGo3.4 配置Typora 4. 成功结束 1. 目的 本地使用Typora编写markdown文档的时候,文档中的图片路径是本地的。这个时候如果需要将该markdown…

TDengine 创始人陶建辉受邀参与 TOP100Summit,发表工程师文化主题演讲

在 AGI 时代,数字化成为组织形态的重要特征,它可以帮助组织实现上下一致的目标和信息的高频传递,从而实现战略目标的协同和敏捷进化。在这样的大背景下,开发者们面临的实际挑战是如何避免技术和业务之间的割裂。 12 月 14-17 日&…

革新搜索从健康场景开始 夸克App全面升级健康搜索体验

大模型时代,夸克率先迈出了革新搜索的第一步。12月25日,夸克App宣布全面升级健康搜索,推出健康大模型应用“夸克健康助手”,并在部分搜索结果和功能板块中上线全新的内容交互方式。升级后,用户在夸克中搜索健康信息的正…

05|提示工程(下):用思维链和思维树提升模型思考质量 ## 什么是 Chain of Thought

05|提示工程(下):用思维链和思维树提升模型思考质量 什么是 Chain of Thought CoT 这个概念来源于学术界,是谷歌大脑的 Jason Wei 等人于 2022 年在论文《Chain-of-Thought Prompting Elicits Reasoning in Large La…

华清远见嵌入式学习——ARM——作业3

作业要求: 代码效果图: 代码: led.h #ifndef __LED_H__ #define __LED_H__#define RCC_GPIO (*(unsigned int *)0x50000a28) #define GPIOE_MODER (*(unsigned int *)0x50006000) #define GPIOF_MODER (*(unsigned int *)0x50007000) #defi…

TensorFlow 模型中的回调函数与损失函数

回调函数 tf.keras 的回调函数实际上是一个类,一般是在 model.fit 时作为参数指定,用于控制在训练过程开始或者在训练过程结束,在每个 epoch 训练开始或者训练结束,在每个 batch 训练开始或者训练结束时执行一些操作,…

如何使用PatchaPalooza对微软每月的安全更新进行全面深入的分析

关于PatchaPalooza PatchaPalooza是一款针对微软每月安全更新的强大分析工具,广大研究人员可以直接使用该工具来对微软每月定期推送的安全更新代码进行详细、全面且深入的安全分析。 PatchaPalooza使用了微软MSRC CVRF API的强大功能来获取、存储和分析安全更新数…

大语言模型说明书

在浩瀚的信息宇宙中,大语言模型如同一颗璀璨的星星正在熠熠生辉。21世纪以来,人工智能可谓是飞速发展,从简单的神经网络到大语言模型、生成式AI,这并非仅仅是一种技术的进步,更是人类智慧的飞跃。大语言模型不仅仅是语…

Wireshark网络工具来了

Wireshark是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。 Wireshark是一个免费开源软件,不需要付费,免费使用,可以直接登陆到Wireshark的官网下载安装。 在windows环境中&#x…

【强化学习】PPO:近端策略优化算法

近端策略优化算法 《Proximal Policy Optimization Algorithms》 论文地址:https://arxiv.org/pdf/1707.06347.pdf 一、 置信域方法(Trust Region Methods) ​ 设 π θ o l d \pi_{\theta_{old}} πθold​​是先前参数为 θ o l d \theta_{old} θold​的策略网…

JavaScript:DOM-事件

JavaScript:DOM - 事件 事件监听什么是事件监听事件监听的方式事件类型点击事件鼠标事件键盘事件焦点事件文本框输入事件 事件对象什么是事件对象获取事件对象事件对象常用属性事件解绑 环境对象 this事件流事件捕获事件冒泡事件捕获与事件冒泡的影响阻止冒泡事件委…

CentOS7安装Java11

文章目录 Java11下载地址卸载OpenJDK查询原系统安装的 JDK根据原系统安装的 JDK 进行卸载命令修改 安装JDK生成JRE Java11下载地址 https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html 卸载OpenJDK 查询原系统安装的 JDK java -version yum l…