茉莉清茶LG
这个作者很懒,什么都没留下…
展开
-
操作系统OS
单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。以及存储体切换(bank switching,尤其是在8位的系统上)。的控制,在较为简单的计算机体系结构中,负责。管理)、内存保护、中央处理器。原创 2024-02-28 14:52:08 · 112 阅读 · 0 评论 -
什么是SOCKET通信
一、Socket概述Socket,即套接字。就是两台主机之间逻辑连接的端点。(通俗来说:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket)。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输。HTTP是应用层协议,主要解决如何包装数据。Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。原创 2024-02-28 13:55:08 · 153 阅读 · 0 评论 -
中央处理单元
1、CPU的组成:CPU主要是由运算器、控制器、寄存器组和内部总线等部件组成。④状态条件寄存器(PSW):保存指令运行结果的条件码内容,如溢出标志等。①算数逻辑单元(ALU):实现对数据的的算术和逻辑运算。③地址寄存器(AR):保存当前CPU所访问的 内存地址。③数据缓冲寄存器(DR):暂时存放内存的指令或数据。②累加寄存器(AC):运算结果或源操作数的存放区。①指令寄存器(IR):暂存CPU执行指令。②程序计数器(PC):存放指令执行地址。④指令译码器(ID):分析指令操作码。原创 2024-02-19 00:46:47 · 73 阅读 · 0 评论 -
存储管理-磁盘管理
3、扫描算法(SCAN),也叫电梯算法,是双向扫描实现的。4、循环扫描算法(CSCAN),是单向扫描实现的。2、最短寻道时间优先(SSTF)1、先来先服务(FCFS)原创 2024-02-18 22:43:21 · 50 阅读 · 0 评论 -
GetQueuedCompletionStatus
`lpCompletionKey`:指向 `DWORD` 指针,接收与完成通知关联的完成键(completion key),这个键可以用来识别特定的 I/O 操作。- `lpOverlapped`:指向 `OVERLAPPED` 结构的指针,如果 I/O 操作是重叠的,这个参数将指向关联的重叠结构。- `dwMilliseconds`:超时时间,如果设置为 0,函数会立即返回;- `lpNumberOfBytesTransferred`:指向 `DWORD` 指针,接收 I/O 操作转移的字节数。原创 2024-02-02 17:33:11 · 613 阅读 · 0 评论 -
WSARecv
这个函数是 winsock2.h 头文件中定义的,与基本的 `recv` 函数相比,`WSARecv` 提供了更多的功能和灵活性,特别是在处理复杂或大量的数据传输时。- 在使用 `WSARecv` 时,需要正确处理异步操作的完成情况,包括处理可能出现的错误和正确地管理 `lpOverlapped` 和 `lpCompletionRoutine`。- `dwBufferCount`:指定 `lpBuffers` 数组中 `WSABUF` 结构的个数。- `s`:指定要接收数据的套接字。原创 2024-02-02 17:30:42 · 322 阅读 · 0 评论 -
完成端口(Completion Port)
I/O操作由操作系统内核来处理,当I/O操作完成后,内核会将完成的通知放到完成端口的队列中。2. **减少线程使用**:对于每个并发I/O操作创建一个线程的传统模型,完成端口允许使用少量的线程来处理大量的I/O操作,降低了线程上下文切换的开销。4. **获取完成通知**:应用程序通过GetQueuedCompletionStatus等函数从完成端口获取完成的I/O操作的通知,并处理这些通知。- 完成端口处理的是I/O操作的完成通知,而不是I/O操作本身的结果,因此应用程序需要处理可能出现的错误。原创 2024-02-02 17:24:13 · 155 阅读 · 0 评论 -
IOCP(IO Completion Port)机制
在同步I/O操作中,应用程序会等待每个I/O操作完成后再进行下一操作,这通常会导致应用程序在I/O操作期间阻塞,从而浪费CPU资源。IOCP(I/O Completion Port,I/O完成端口)是微软Windows平台特有的一个高级网络编程接口,它允许应用程序高效地处理大量的并发I/O操作。完成端口是一个队列,用于存放已完成I/O操作的通知。- 减少了线程上下文切换的开销:应用程序不需要为每个连接创建一个线程,而是在一个或几个工作线程中处理所有完成的I/O操作,这样就减少了线程创建和上下文切换的开销。原创 2024-02-02 17:01:42 · 77 阅读 · 0 评论 -
selectedKeys方法
在这些上下文中,`selectedKeys`可能是一个组件的属性,用于指定在某些输入元素(如`<input type="text"/>`或`<select/>`)中应该被选中的键。`selectedKeys`方法通常是指在JavaScript编程语言中,使用Web API操纵HTML元素时,用来获取焦点的元素上绑定的键盘事件的相关属性或方法。如果你是在提到React框架中的`useSelect`钩子,那么`selectedKeys`可能是用来获取当前选中的项的键的数组。原创 2024-02-02 17:01:04 · 93 阅读 · 0 评论 -
Selector对象
5. **处理事件**:调用`selectedKeys`方法获取所有准备好的通道的`SelectionKey`对象,然后遍历这些键,处理对应的事件。2. **打开Channel**:对于每个需要进行非阻塞I/O操作的Channel,都需要调用其`open`方法来打开,并设置为非阻塞模式。4. **选择事件**:调用Selector的`select`方法,该方法会阻塞直到至少有一个通道的事件准备好。3. **注册Channel**:将打开的Channel注册到Selector上,并指定需要监听的事件。原创 2024-02-02 16:43:38 · 72 阅读 · 0 评论 -
Socket事件
在这些模型中,一个线程可以同时监听多个Socket事件,而不会因为单一事件的处理而阻塞其他事件的检测。例如,在Java中,可以通过使用`Selector`对象来监听多个Socket通道的事件,并在事件发生时进行相应的处理。5. **超时事件**:在网络编程中,超时事件是指在特定的时间内没有接收到预期的数据或事件。2. **数据到达事件**:当服务器端收到来自客户端的数据时,就会产生数据到达事件。3. **数据发送事件**:当应用程序向Socket发送数据时,会产生数据发送事件。原创 2024-02-02 16:19:48 · 136 阅读 · 0 评论 -
RTT ---- 往返时延
3. **排队时延**:这是指分组在经过网络中的节点缓存队列时所经历的等待时间。在有优先级算法的网络中,排队时延还取决于数据的优先级和节点的队列调度算法。例如,在自由空间中,电磁波的传播速度接近光速,而在铜线中的传播速度会略低于光速,光纤中的传播速度也略低于光速。在不同的网络环境和应用场景中,RTT的优化都是提升用户体验的关键因素。1. **发送时延**:这是指从数据分组的第一位开始发送,到最后一位发送完毕所需的时间。4. **处理时延**:这指的是网络节点处理分组的时间,包括检查、处理和转发分组等操作。原创 2024-02-02 16:10:05 · 981 阅读 · 0 评论 -
空测试 localhost http 的瓶颈都在CPU。
那么假设RTT 延迟 1ms。如果假设我们一个 http 的请求是 10kb,如果达到带宽上限,我们 qps 应该是 1,024,000 m/10kb = 100,024,000 /s. 天文数字。localhost的一个RTT,我们假设1ms,那么带宽上限就是20000m/1ms = 20,000,000 m/s。那么 1s 可以处理多少请求的呢, 1s/1us = 1,000,000 /s。所有我们得出,我们的带宽上限是 1,024,000 m/s。1. localhost 的带宽的上限是内存的上限。原创 2024-02-02 16:08:02 · 77 阅读 · 0 评论 -
Python用例的开发与调试,考虑性能优化和异常处理等方面的例子。
在处理用户输入或不确定的数据时,应该考虑异常处理。例如,如果列表中包含非字符串元素,我们的函数应该能够优雅地处理这种情况,而不是崩溃。我们可以使用Python的内置函数sum()和列表推导式来优化性能。通过这个例子,我们可以看到如何在Python用例中考虑性能优化和异常处理。在Python用例的开发与调试中,性能优化和异常处理是两个重要的方面。# 如果输入列表中包含非字符串元素,捕获TypeError并返回错误信息。编写一个函数,该函数接受一个字符串列表,并返回列表中所有字符串长度的总和。原创 2024-01-30 17:27:50 · 36 阅读 · 0 评论 -
Python用例的开发与调试
通过以上步骤,我们可以开发并调试一个简单的Python用例。测试驱动开发(TDD):先编写测试,再编写代码,确保代码的健壮性。假设我们要开发一个简单的Python用例,计算两个数的和。需求分析:需要实现一个函数,接受两个参数,返回它们的和。文档:编写必要的注释和文档,说明代码的功能和使用方法。注重代码的复用性,避免复制粘贴,尽量编写函数和类。调试:如果测试失败,检查add函数的逻辑是否正确。需求分析:明确用例需要实现的功能和性能要求。系统测试:测试整个系统的功能是否符合需求。原创 2024-01-30 17:19:14 · 43 阅读 · 0 评论 -
nlp中文数据的预处理是如何完成的?
中文数据的预处理是一个不断迭代和优化的过程,需要根据具体的应用场景和业务需求来调整预处理的步骤和参数。此外,随着深度学习技术的发展,更多的预处理步骤可以通过模型自动学习完成,如使用BERT、RoBERTa等预训练模型进行预处理。在自然语言处理(NLP)中,中文数据的预处理是一个复杂且重要的步骤,因为它直接影响到后续算法模型的性能。格式统一:将不同格式的文本转换为统一的格式,如全部转换为简体中文或规范的繁体中文。数据集构建:将预处理后的数据存储在合适的格式,如CSV、JSON或数据库中。原创 2024-01-26 17:20:58 · 338 阅读 · 0 评论 -
在 PyCharm 中使用 JavaScript(JS)主要涉及以下几个步骤:
如果你需要更多的 JavaScript 工具,可以在 PyCharm 的插件市场中搜索并安装,例如,一个 Vue.js 插件可以帮助你更容易地创建和管理 Vue.js 项目。在你的 PyCharm 项目中,右键点击项目目录,选择“新建”(New)> “JavaScript 文件”(JavaScript File)。在左侧选择“Vue.js”或其他 JavaScript 框架(如果你使用的是 Vue.js,需要先安装 Vue.js 的插件)。给你的 JavaScript 文件命名,然后点击“确定”(OK)。原创 2024-01-26 11:42:11 · 2898 阅读 · 1 评论 -
python中Flask框架面试题
即使使用的是线程,WSGI应用也无法保证每个http请求使用的都是不同的线程,因为后一个http请求可能使用的是之前的 http请求的线程,这样的话存储于thread local中的数据可能是之前残留的数据。session:用来记录请求会话中的信息,针对的是用户信息。在项目开发过程中,需要把项目根据相关的功能划分为对应的模块,通过模块的划分可以更好的组织项目的目录结构,使项目的整个框架更加清晰。它的作用是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象。原创 2024-01-25 01:34:55 · 487 阅读 · 0 评论 -
详解python之协程gevent模块(python协程模型)
在任何一个时刻,操作系统都只能执行一个进程代码,当操作系统决定把控制权从当前进程转移到某个新进程时,就会进行上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权传递到新进程,新进程就会从它上次停止的地方开始。在下面的例子中,5个waiter协程都会等待事件evt,当setter协程在3秒后设置evt事件,所有的waiter协程即被唤醒。执行流的调度者不同,进程是内核调度,而协程是在用户态调度,也就是说进程的上下文是在内核态保存恢复的,而协程是在用户态保存恢复的,很显然用户态的代价更低。原创 2024-01-24 13:51:45 · 189 阅读 · 0 评论 -
“猴子补丁”(monkey patching)指的是什么?
之前做的一个游戏server,非常多地方用的import json,后来发现ujson比自带json快了N倍,于是问题来了,难道几十个文件要一个个把import json改成import ujson as json吗?把标准库中的thread/socket等给替换掉,这样我们在后面使用socket的时候能够跟寻常一样使用,无需改动不论什么代码,可是它变成非堵塞的了。执行main.py,能够看到都是输出'ujson',说明后面import的json是被patch了的。原创 2024-01-23 18:25:56 · 160 阅读 · 1 评论 -
python面试题集
解析:切片[start:stop:step],当step为负值时,表示从右往左,索引start=-1的元素是6,索引stop=1的元素是2,但是不会取到该索引,因此从右往左,间隔为1取到的结果就是D选项。解析:在Python3中break语句用来终止循环语句,因此当 i == ‘h’ 时就会跳出 for 循环,因此打印出的结果依次是 'p','y','t',不包含 'h'。根据题意:11赋值给了a,22赋值给了b,(33, 44, 55, 66, 77, 88, 99)赋值给了args。原创 2024-01-23 18:19:42 · 96 阅读 · 1 评论 -
Python学习随记-列表方法
reverse-- 可选参数,是否反向排序,默认为False。以上就是我对11种python列表方法的学习和总结,希望可以帮助到大家。key-- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。value —— 要查找的元素。star —— 索引的起始位置。stop —— 索引的结束位置。原创 2024-01-23 17:58:15 · 88 阅读 · 1 评论 -
文本预处理步骤及代码
在进行文本分析前,需要对文本数据进行一系列的预处理,eg:*去除停用词、分词、词干提取、词向量化等。停用词是指那些在文本中频繁出现,但却没有实际意义的 词语,如:“的”、“是”等。去除停用词可以减少文本数据的噪音,提高模型的准确性。词干提取是将单词转化为其基本形式的过程,如:将“running”转化为“run”。这可以减少文本数据的歧义性,提高模型的准确性。在英文中,一般按照空格或标点符号进行分词,在中文中,需要使用专门的中文分词库。词向量化将文本数据转换为计算机可以理解的数值型数据。原创 2024-01-18 11:53:26 · 197 阅读 · 1 评论