计算机网络面试题——第三篇
1. TCP超时重传机制是为了解决什么问题
因为TCP是一种面向连接的协议,需要保证数据可靠传输。而在数据传输过程中,由于网络阻塞、链路错误等原因,数据包可能会丢失或者延迟到达目的地。因此,若未在指定时间内收到对方的确认应答(ACK),则认为数据包可能丢失,此时,会触发超时重传机制,重新发送该数据包,以确保数据的可靠到达。
扩展:
1. TCP ACK确认号
TCP的可靠性是靠确认号的,比如我发给你1、2、3、4这4个包,你告诉我现在要5那说明前面4个包都收到了。不过,这里要注意、SeqNum和ACK都是以字节数为单位的。也就是说假设收到了1、2、4但是3没有收到,此时不能ack 5,如果回了5那么发送方就以为5之前的都收到了。所以,只能回复确认最大连续收到的包,也就是3.
2. 超时重传的时间RTO
RTO是指TCP数据报文段发出去后,经过一定时间没有收到其确认报文,就会重新发送该报文段的时间阈值。TCP协议通过采样RTT(往返时延)的时间和波动范围,不断更新,动态调整RTO的值。
2. TCP有超时重传为什么还需要快速重传机制
因为超时重传局限性,他是按时间来驱动的,如果是网络状况真的不好的情况下,超时重传没问题,但是,如果网络状况好的时候,只是恰巧丢包了,那么等长时间就没必要。
所以,引入了数据驱动的重传叫快速重传,他的设计初衷是为了在检索到丢包的情况下,尽快重传丢失的数据包,而不必等待超时计时器的触发。
他通过检测三个或者更多的重复的ACK,认为数据包丢失 ,从而触发立即重传。
通过快速重传,TCP能够更快的恢复丢失的数据包,减少重传等待时间。提升数据传输的整体效率,特别是在网络条件良好的情况下。
3. TCP的SACK的引入是为了解决什么问题
传统的TCP使用累计确认(ACK)机制,只能确认到达的连续数据段,无法有效告知发送方中间某些数据段的丢失或者乱序。结果是发送方只能依赖超时或者重复ACK来重传数据。这可能导致不必要的重传,浪费带宽、降低效率。
SACK(选择性确认),他的引入是为了解决发送方不知道该重传哪些数据的问题。使接收方能够告知发送方已收到的非连续数据段。这样,发送方只需重传确实丢失的数据段,而不是整个发送窗口,从而提高传输效率。
SACK就是接收方会回传他已经收到的数据,这样发送方就知道哪些数据对方已经收到了,所以就可以选择性的发送丢失的数据。如上图,通过ACK告知我接下来要5500开始的数据,并一直更新SACK,6000-6500收到了,6000-7000收到了。6000-7500收到了,发送方很明确的知道5500-5999的那一波数据丢失了,应该重传。
4. TCP滑动窗口的作用是什么
TCP滑动窗口机制的主要作用是实现流量控制,即协调发送方和接收方的数据传输速率。确保发送方不会发送超出接收方处理能力的数据量,防止接收端缓冲区溢出。
滑动窗口允许发送方在未收到前一个数据包的确认前继续发送多个数据包,从而提高网络吞吐量,减少等待时间,实现高效的数据流传输。
扩展
滑动窗口详细分析
网络是复杂多变的,有时候就会阻塞住,有时候又很通畅。需要根据情况来控制一下发送速率。发送方需要知道接收方的情况,好控制一下发送的速率。不至于蒙着头一个劲的发然后接收方都接受不过来。因此,TCP有个滑动窗口来做流量控制,就是接收方告诉发送方我还能接受多少数据,然后发送方就可以根据这个信息来进行数据的发送。
已经有滑动窗口了为什么还要拥塞控制
滑动窗口仅根据接收方的处理能力进行调节,主要防止接收端因处理不及时导致的数据丢失或者拥塞。而拥塞控制是为了防止网络本身的拥塞情况,即在网络中出现过载时,网络中途路由器和链路的负载仍可能造成数据丢失或者延迟,因此,需要拥塞控制机制来应对。
5. 说说TCP拥塞控制的步骤
- 慢启动:发送方在连接建立初期,缓慢增加数据发送速率。初始的拥塞窗口(cwnd)通常为一个MSS(最大报文段大小),然后在每次收到ACK后成倍的增加cwnd,直到达到慢启动阈值或者监测到网络拥塞。
- 拥塞避免:当cwnd达到阈值后,tcp进入拥塞避免阶段,拥塞窗口的增长速度从指数变为线性增长,即每个RTT(往返时间)增加一个MSS。这一阶段旨在避免激烈的拥塞反应,保持网络稳定性。
- 快速重传:发送方在收到三个重复的ACK后,立即重传被认为丢失的报文段,而无需等待超时。这减少了重传的延迟,迅速应对数据丢失。
- 快速恢复:在快速重传后,TCP不进入慢启动,而是减小cwnd到阈值的一般,然后开始线性增长cwnd,以快速恢复到丢包前的传输速率。
6. ARP和RARP分别是什么?有什么区别?
ARP将IP地址转换为MAC地址,工作在网络层和数据链路层之间,主要 用于在局域网中确定一个特定IP地址对应的物理地址。
因为最终需要找到MAC地址才能跟具体的设备通信。
RARP用于将MAC地址转换为IP地址,比如一些设备启动的时候,需要根据RARO得知分配给他的ip是什么。
7. TCP/IP四层模型是什么
TCP/IP四层模型是一个分层网络通信模型,将网络通信过程分为四个层次,这四个层次分别是:网络接口层、网络层、传输层和应用层。
- 网络接口层负责在计算机和网络硬件之间传输数据,负责在物理网络上发送和接受数据帧,包括以太网,wifi等协议。
- 网络层通过ip协议提供数据包的路由和转发
- 传输层:负责在两个主机之间提供端到端的通信服务,常见的有tcp、udp
- 应用层通过各种协议提供网络应用程序的功能,如http、ftp等
8. OSI七层模型是什么
- 应用层:用户交互界面,提供网络服务,如http、ftp、smtp
- 表示层:数据格式转换,加密、解密,如jpeg、ssl/tls等
- 会话层:建立、管理、终止会话
- 传输层:可靠传输,流量控制,错误检测,如TCP、UDP等
- 网络层:路径选择和逻辑地址管理,如ip、icmp等
- 数据链路层:物理地址(MAC)寻址,错误检测与纠正。
- 物理层:比特流传输。
9. Cookie、Session、Token之间有什么区别
- Cookie
Cookie是存储在用户浏览器的一个小型数据文件,用于跟踪和保存用户的状态信息。主要用于保持用户登录状态、跟踪用户行为、存储用户偏好等。
保存在浏览器端。
- Session
Session是服务端保存用户状态的机制,每个用户会话都有一个唯一的session id。主要用于跟踪用户在服务器上的状态信息,例如登录状态和购物车内容。
存储在服务器端,然后对应的sessionId通过Cookie保存在客户端浏览器中。
- Token
Token本质上是一种加密的字符串,用于身份验证和授权,可以包含用户信息和权限,用于验证用户身份或者授权访问资源。认证后,后端服务会返回token,存储在客户端,后续客户端访问服务端需要带上这个token。
使用场景区别
- Cookie:主要用于客户端状态的简单存储和追踪
- Session:用于服务器端的复杂状态管理,特别是在需要存储大量会话数据时
- Token:用于无状态的认证和授权,特别是在分布式和跨域环境下。
10. JWT Token
JWT是一种用于在各方之间传递安全信息的紧凑,URL安全的令牌格式。在用户登录后,服务器生成JWT并返回给客户端。客户端在后续请求中通过HTTP头部(通常是Authorization头)发送该JWT,服务器验证JWT的有效性以进行用户身份验证。
因为他的无状态性,常用于分布式系统和微服务架构中。
其结构主要包括三个部分:Header、Payload和Signature。
JWT的工作原理可以总结为以下几个步骤:
- Header:描述令牌的元数据,通常包含令牌的类型(JWT)和所使用的签名算法(如HMAC).
- Payload:包含声明,即传递的数据。这些数据通常包含用户信息和其他相关数据。
- Signature:将Header和Payload用指定的算法进行签名,以验证JWT的真实性和完整性。签名确保了令牌内容在传输过程中未被篡改。
JWT的优点
- 自包含:JWT中包含了所有必要的信息,因此,在验证时不需要查询数据库,提升了性能
- 跨语言:JWT是基于JSON的,几乎所有编程语言都支持他的生成和解析。
1. 如何废除一个过期的JWT
因为JWT是无状态的,一般服务器并不保存已签发的JWT,所以服务器无法主动撤销一个已经签发的。不过可以通过其他方式来实现。
使用黑名单
实现思路:在服务器端维护一个黑名单,该列表包含所有已经被废除的JWT标识符,每次服务器验证JWT时,除了验证签名和其他标准信息外,还需要检查该JWT是否在黑名单中。
优点:可以精确废除特定的JWT,不影响其他合法的JWT。
缺点:需要在服务器端存储和管理黑名单,违背了JWT的无状态特性,增加了系统复杂度。使用版本控制
实现思路: 在用户信息中引入一个“Token版本号”的字段,每次生成JWT时,将这个版本号作为JWT的一部分。当需要废除某个用户的JWT时,只需要将用户的版本号递增,在服务器验证JWT时,检查JWT中的版本号和用户当前的版本号是否匹配。结合状态信息
实现思路:在某些场景下, 可以在服务器端结合一些状态信息来决定JWT是否有效。例如,在用户注销或者更改密码时,更新服务器上的某些状态。当用户发出请求时,除了验证JWT外,服务器还检查这些状态是否符合要求。
2. JWT和Session的对比
无状态认证:JWT通常用于无状态认证,即服务器不存储会话数据。
扩展性:由于JWT不依赖服务器存储,因此在分布式系统中更具扩展性。
11. 什么是DNS
DNS(域名系统)是一个用于将域名转换为IP地址的互联网基础服务。当用户输入一个域名时,DNS服务器会查询该域名对应的IP地址,并将结果返回给用户。这样,用户就可以通过易记的域名访问网站,而不需要记录复杂的IP地址。
除此之外,DNS还有负载均衡能力,通过将域名解析到多个IP地址,DNS可以帮助分散流量,进行负载均衡,提高服务的可靠性和性能。
互联网中的域名地址,分为多级结构:最顶级是根域,然后是顶级域,如 .com、.org 接着是二级域(taobao.com),以及子域(www.taobao.com)。
DNS服务器和客户端会缓存DNS查询结果,以减少查询时间和降低对DNS服务器的负载。缓存的内容会在一定时间后过期,具体取决于DNS记录的生成时间(TTL)设置。
1. DNS的工作流程
- 域名解析请求:用户在浏览器输入一个域名,浏览器首先检查本地缓存是否有该域名的IP地址。
- 递归DNS解析:如果本地缓存中没有所需的IP地址,浏览器会向配置的递归DNS服务器发送请求。
- 查询根域名服务器:递归DNS服务器会查询根域名服务器以获取顶级域的DNS服务器地址,跟域名服务器负责将请求转发到对应的顶级域服务器。
- 查询顶级域服务器:跟域名服务器将请求转发到对应的顶级域服务器(如.com、.net) ,这些服务器负责处理特定顶级域的请求。
- 查询权威DNS服务器:顶级域名服务器将请求转发到域名对应的权威DNS服务器(如taobao.com),权威DNS服务器拥有该域名的最终DNS记录。
- 返回IP地址:权威DNS服务器返回与域名对应的IP地址给递归DNS服务器,然后递归DNS服务器将该IP地址返回给用户的浏览器。
- 缓存和访问:浏览器缓存该IP地址以供后续请求使用,并通过IP地址连接到目标服务器以访问网站。
2. DNS记录类型
- A记录:将域名映射到IPv4地址。
- AAAA记录:将域名映射到IPv6地址。
- CNAME记录:将一个域名别名指向另一个域名
- MX记录:定义邮件服务器的地址,用于电子邮件的传输。
- TXT记录:存储任意文本信息,通常用于验证和安全设置
- NS记录:定义域名的权威DNS服务器。
12. 什么是CDN
CDN是一个由多个地理位置分散的服务器节点组成的分布式网络架构,用于加速互联网内容的分发。
当用户请求内容时,CDN会根据用户的地理位置,将请求转发到最近的缓存服务器上,这样可以减少数据传输的延迟,提高用户访问速度,同时减轻服务器的负载。
CDN通常用于加速静态内容的访问,提高网络的性能和用户体验。
- CDN的通俗理解
如果网站服务器部署在北京,香港的用户访问该网站,由于物理距离的缘故,时延相对而言会比较大,导致体验上并不是很好。并且当用户量比较大的时候,全国各地所有请求都涌向北京的服务器,网络的主干道就会被阻塞。这其实就是所谓的“热点”问题,可以采用分流
的操作解决这个问题。
主服务器部署在北京不变,但是全国各地都建立一些缓存站,这些缓存站可以缓存一些主服务器上变化不频繁的资源,比如css/js/图片等静态资源。当用户访问网站的时候,根据就近原则,选择一个距离他最近的缓存站。
如果缓存站找不到,那么就回源到源站,也就是缓存站回去北京的服务器要数据,然后将这些数据缓存到本地且返回给用户。
当然,一些热点的数据也可以让源站主动推送给缓存站,进行缓存预热
。这样,就减少了回源的操作,使得高峰时期服务器更加平稳。
动态数据怎么办
静态的按照上面说的路子走,动态的则是根据内部的一些调度算法,智能的选择最优回源路径去请求源站
,节省请求的时间。
2.CDN基础结构
所谓CDN缓存节点就是上面说的缓存站,然后还是一个很重要的GSLB(全局负载均衡器)
这个GSLB实现的主要功能就是:根据就近原则,选择一个距离他最近的缓存站。简单来说,就是请求转发,转发到最近的站。GSLB转发机制有三种实现
- 基于DNS解析
- 基于HTTP重定向
- 基于IP路由
业界实现转发的主流技术是DNS解析,因为DNS有缓存以及负载均衡能力。
13. 从网络角度看,用户从输入网址到网页显示,期间发生了什么
- 浏览器解析URL:浏览器会解析URL,根据请求信息生成对应的HTTP请求报文。
- DNS解析:请求需要知晓服务器域名对应的IP地址才能通信,浏览器会检查本地缓存、操作系统缓存、甚至路由器缓存,如果未命中缓存,浏览器向配置的DNS服务器发送查询请求。DNS服务器递归查询最终返回IP地址。
- TCP或者UDP:接着浏览器会调用socket库委托协议栈工作,根据指定的情况选择TCP或者UDP。如果使用TCP,需要通过三次握手建立连接,需要在数据发送前通过三次握手和服务端建立连接。此时得到了封装了HTTP数据的TCP数据包。
- IP:在TCP数据包的基础上,在封装源地址IP和目标地址IP等信息,得到网络包。有了IP就能在多个网络节点中确定数据包的传输路径,最终找到目标服务器。
- MAC:得到网络包后,需要在IP头部的前面加上mac头部,封装发送方MAC地址和接收方MAC地址。MAC用来确保子网内设备两点之间的通信寻址。
- 网卡:这个时候,网络包还是存储在内存中的二进制数据,需要网卡把二进制数据转换为电信号,通过网线进行传输。
- 交换机:通过网线会连接到交换机,交换机是二层网络设备。工作在mac层,他会根据数据包的mac头找到另一个设备连接在交换机的哪个端口,然后传输。如果找不到对应的端口,则会向交换机上的所有端口广播。
- 路由器:路由器也是进行转发,他是三层网络设备,包含IP层,利用路由器,数据在不同网络节点之间转发,最后到达服务器。
- 层层验证:服务器确认MAC地址匹配、IP地址匹配,如果是TCP协议则看看序列号是否匹配,若匹配,根据对应的端口号找到监听进程,此时服务器上对应的应用就接收到数据了。
- 服务器处理:服务器收到请求后,处理相应的业务逻辑,生成HTTP响应,这期间可能涉及到读取数据库、访问文件系统等。最终会生成响应给客户端(又是一层层的封装TCP、IP、MAC等头部数据,得到最终的数据包),从网卡到交换机到路由器。。。。
- 浏览器接收响应并渲染页面:经过多个路由器转发后,浏览器最终会接收到服务器返回的响应,进行页面渲染展示。
相关文章:

计算机网络面试题——第三篇
1. TCP超时重传机制是为了解决什么问题 因为TCP是一种面向连接的协议,需要保证数据可靠传输。而在数据传输过程中,由于网络阻塞、链路错误等原因,数据包可能会丢失或者延迟到达目的地。因此,若未在指定时间内收到对方的确认应答&…...

Elasticsearch 开放推理 API 增加了对 Google AI Studio 的支持
作者:来自 Elastic Jeff Vestal 我们很高兴地宣布 Elasticsearch 的开放推理 API 支持 Gemini 开发者 API。使用 Google AI Studio 时,开发者现在可以与 Elasticsearch 索引中的数据进行聊天、运行实验并使用 Google Cloud 的模型(例如 Gemin…...

react-问卷星项目(7)
实战 React表单组件 入门 重点在于change的时候改变state的值,类似vue的双向数据绑定v-model,即数据更新的时候页面同步更新,页面数据更新时数据源也能获得最新的值,只是Vue中设置在data中的属性默认绑定,React中需…...

【git】main|REBASE 2/6
很久没合并代码合并出现冲突,自动进入了 main|REBASE 2/6 的提示: 【git】main|REBASE 2/6 It looks like you’ve encountered several merge conflicts after a git pull operation while a rebase is in progress. Here’s how you can resolve these conflict…...

51单片机的水质检测系统【proteus仿真+程序+报告+原理图+演示视频】
1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温度传感器ph传感器浑浊度传感器蓝牙继电器LED、按键和蜂鸣器等模块构成。适用于水质监测系统,含检测和调整水温、浑浊度、ph等相似项目。 可实现功能: 1、LCD1602实时显示水温、水体ph和浑浊度 2、温…...

【python面试宝典7】线程池,模块和包
目录标 题目37:解释一下线程池的工作原理。题目38:举例说明什么情况下会出现KeyError、TypeError、ValueError。题目39:说出下面代码的运行结果。题目40:如何读取大文件,例如内存只有4G,如何读取一个大小为…...

Android input系统原理二
1.inputmanager启动源码分析 在SystemServer.java中构造了 inputmanagerservice的对象,在其构造函数中,最重要的是这个nativeInit函数。 下面是核心代码 inputManager new InputManagerService(context);public InputManagerService(Context context)…...

Oracle登录报错-ORA-01017: invalid username/password;logon denied
接上文:Oracle创建用户报错-ORA-65096: invalid common user or role name 我以为 按照上文在PDB里创建了用户,我以为就可以用PLSQL远程连接了,远程服务器上也安装了对应版本的Oracle客户端,但是我想多了,客户只是新建…...

JavaScript 获取浏览器本地数据的4种方式
JavaScript 获取浏览器本地数据的方式 我们在做Web开发中,客户端存储机制对于在浏览器中持久化数据至关重要。这些机制允许开发者存储用户偏好设置、应用状态以及其他关键信息,从而增强用户体验。本文将介绍几种常用的JavaScript获取浏览器本地数据的方…...

77寸OLED透明触摸屏有哪些应用场景
说到77寸OLED透明触摸屏,那可真是市场营销中的一大亮点,应用场景多到数不清!我这就给你细数几个热门的: 商业展示:这可是77寸OLED透明触摸屏的拿手好戏!在高端零售店铺里,它可以作为陈列窗口&am…...

二分解题的奇技淫巧都有哪些,你还不会吗?
先说一下我为什么要写这篇文章。 “二分“ 查找 or ”二分“ 答案的思想大家想必都知道吧(如果不懂,可以看一下我之前写的一篇文章)。 二分求解 可是呢?思想都会,做题的时候,就懵圈了。 这个题竟然考的是…...

LeetCode-871 最低加油次数
重启力扣每日一题系列! 因为过去两个月里掉粉掉的好严重,我想大抵是因为更新的频率不如上半年了,如果我重启了每日一题系列那岂不是至少是每日一更☝🤓? 也不是每天都更,我有两不更,特难的就不…...

OpenCV-OCR
文章目录 一、OCR技术的基本原理二、OpenCV在OCR识别中的应用1.图像预处理2.文字区域检测3.OCR识别:4.后处理: 三、OCR识别示例代码四、注意事项 OpenCV-OCR主要涉及使用OpenCV库进行光学字符识别(OCR)的技术。OCR技术可以识别图像…...

Linux卸载mysql
一、查看当前安装mysql情况,查找以前是否装有mysql rpm -qa|grep -i mysql二、停止MySQL服务 三、删除mysql库和文件 查找MySQL库 # 查找命令 find / -name mysql# 显示结果 /var/lib/mysql/var/lib/mysql/mysql/usr/lib64/mysql删除对应的mysql目录 rm -rf /v…...

【大语言模型-论文精读】用于医疗领域摘要任务的大型语言模型评估综述
【大语言模型-论文精读】用于医疗领域摘要任务的大型语言模型评估综述 论文信息: 用于医疗领域摘要任务的大型语言模型评估:一篇叙述性综述, 文章是由 Emma Croxford , Yanjun Gao 博士 , Nicholas Pellegrino , Karen K. Wong 等人近期合作…...

图吧工具箱
图吧工具箱202309绿色版自动解压程序R2.exe,永久有效 链接:https://pan.baidu.com/s/1M6TI7Git8bXOzZX_qZ3LJw?pwdzked 提取码:zked...

vue2 + View design 使用inputNumber设置默认值为undefined但展示数据为1且表单校验不通过的原因
文章目录 一、背景二、操作步骤1.复现前的准备工作(1)vue版本和view design 版本(2)创建一个组件(组件中根据类型渲染不同的组件)(3)在list.vue页面中引入组件,传入配置&…...

【SpringSecurity】基本流程
【中文文档: Spring Security 中文文档 :: Spring Security Reference】 【英文文档:Spring Security】 以下内容只是记录springsecurity最简单的一种验证流程,所有配置基本都是默认的配置。 引入依赖 <dependency><groupId>org.springf…...
算法-汉诺塔问题(Hanoi tower)
介绍 汉诺塔是源于印度的一个古老传说的小游戏,简单来说就是有三根柱子,开始的时候,第一根柱子上圆盘由大到小,自下往上排列。这个小游戏要实现的目的呢,就是要把第一根柱子上的圆盘移到第三根的柱子上去;…...

HarmonyOS鸿蒙 Next 实现协调布局效果
HarmonyOS鸿蒙 Next 实现协调布局效果 假期愉快! 最近大A 的涨势实在是红的让人晕头转向,不知道各位收益如何,这会是在路上,还是已经到目的地了? 言归正传,最近有些忙,关于鸿蒙的实践系列有些脱节了,…...

【自然语言处理】(1) --语言转换方法
文章目录 语言转换方法一、统计语言模型1. 词向量转换2. 统计模型问题 二、神经语言模型1. 词向量化2. 维度灾难3. 解决维度灾难4. embedding词嵌入5. Word2Vec技术5.1 连续词袋模型(CBOW)5.2 跳字模型(Skip-gram) 总结 语言转换方…...

叉车防撞系统方案,引领安全作业新时代
在现代工业的舞台上,叉车如同忙碌的“搬运工”,在仓储和制造环境中发挥着不可或缺的作用。然而,随着叉车使用频率的不断攀升,安全事故也如影随形,给企业带来经济损失的同时,更严重威胁着操作人员的生命安全…...

Nginx的核心架构和设计原理
Nginx 是一个免费的、开源的、高性能 Http 服务器和反向代理。Nginx 的架构设计是为了提供高性能、稳定性和可扩展性。 Nginx 的主要架构组件和工作原理: 1、Master 进程:Nginx 的运行始于一个 master 进程,它负责管理所有的工作进程。mast…...

leetcode35--搜索插入位置--二分查找刷题
搜索插入位置 一共会出现下面四种情况: 目标值在数组所有元素之前 目标值等于数组中某一个元素 目标值插入数组中的位置 目标值在数组所有元素之后 首先在二分查找的代码之前处理掉目标值在数组所有元素之前和之后的情况如果目标值在数组中的某个位置,…...

Django对接支付宝沙箱环境(2024年9月新测有效)
1、申请沙箱环境 #需要填一些个人信息 https://opendocs.alipay.com/ 2、使用支付宝登入,并进入控制台,进入开发者工具推荐-->沙箱 3、获取基本信息 主要是APPID,和支付宝网关地址 4、生成应用私钥和应用公钥和支付宝公钥 上面的接口加签方式选择…...

【MySQL】-- 库的操作
文章目录 1. 查看数据库1.1 语法 2. 创建数据库2.1 语法2.2 示例2.2.1 创建一个名为java114的数据库2.2.2 创建数据库java114,如果数据库不存在则创建2.2.3 查看警告信息 3. 字符集编码和校验(排序)规则3.1 查看数据库支持的字符集编码3.2 查…...

linux桌面软件(wps)内嵌到主窗口后的关闭问题
程序测试环境是:slackware系统,属于linux系统,有桌面(Xface Session)。系统镜像是:slackware64-15.0-install-dvd.iso。qt、c代码实现。 问题描述:延续上一篇文章,将wps软件窗口内嵌…...

WindowsTerminal 美化-壁纸随机更换
目录 一. 相关网址二. 壁纸随机更换思路三. 指定 WindowsTermina 壁纸路径四. 编写脚本,随机替换壁纸4.1 powershell脚本4.2 .bat批处理脚本 四. 配置定时任务,添加触发器五. 效果 一. 相关网址 官方下载 Windows Terminal 官方Github微软商店 美化 Oh …...

iOS 多次获取图片主题色不一样
一个需求中,要求获取图片的主题色 代码如下 -(void)kk_getImage:(UIImage *)image fetchthemeColor:(void(^)(UIColor *color))callBack {dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{// 第一步 先把图片缩小 加快计算速度.…...

UE5 武器IK瞄准系统
创建空项目 创建基础蓝图类My_GameMode,My_HUD,My_PlayChar,My_PlayController 项目设置地图模式 近裁平面 0.1 My_PlayChar蓝图中添加摄像机,角色骨骼网格体,武器骨骼网格体 编辑角色骨骼,预览控制器使用特定动画,动画选择ANM_ark-47-Idle hand_r 添加插槽WeaponMes…...