四
osi7层
应用层
与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序就需要实现OSI的第7层。示例:TELNET,HTTP,FTP,NFS,SMTP等。
表示层
这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。
会话层
它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。
传输层
网络层
这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。
数据链路层
物理层
OSI的物理层规范是有关传输介质的特性,这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。
随机生成n位随机数(包含大写字母、小写字母、数字)
面试官多次引导还是没能想出来临场发挥还是不好
自己的想法优化版
function anystring(N) { let arr = [1,2,3,4,5,6,7,8,9,0,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'] function any(){ let a =arr.length*Math.random() console.log(a) return Math.round(a-1) } let angarr = [] for(let i = 0;i<N;i++){ angarr.push(arr[any()]) } return angarr }
bug(有可能不会生成数字)
网上参考优化
function anystring(N) { let arr = [1,2,3] let num = [48,49,50,51,52,53,54,55,56,57] let up = [65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90] let down = [97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122] function getradmon(arr){ return Math.round(Math.random()*(arr.length-1)) } let angstring = '' for(let i= 0;i<N;i++){ switch (arr[getradmon(arr)]) { case 1:angstring = angstring + String.fromCharCode(num[getradmon(num)]);break case 2:angstring = angstring + String.fromCharCode(up[getradmon(up)]);break case 3:angstring = angstring + String.fromCharCode(down[getradmon(down)]);break } } return angstring } console.log(anystring(10))
2个矩形是否相交
class rect { constructor(x, y, height, width) { this.x = x; // 横坐标 this.y = y; // 纵坐标 this.height = height; // 高 this.width = width; // 宽 } } function bool(a, b) { if ((a.x + a.width) > b.x && a.x < b.x && (a.y + a.height) > b.y && b.y > a.y) { console.log(1) return true } else if ((b.x + b.width) > a.x && b.x < a.x && (b.y + b.height) > a.y && a.y > b.y) { console.log(2) return true } else if (a.x < b.x && (a.x + a.width) > b.x && a.y < (b.y + b.height) && (b.y + b.height) < (a.y + a.height)) { console.log(3) return true } else if (b.x < a.x && (b.x + b.width) > a.x && b.y < (a.y + a.height) && (a.y + a.height) < (b.y + b.height)) { console.log(4) return true } else { return false } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~