- 博客(24)
- 收藏
- 关注
原创 自然语言处理 -文本预处理以及逻辑回归分类的简单实现(附代码)
注:本博客基于python3.7 Anaconda使用到的库import nltk from nltk import word_tokenizeimport simplejson as jsonsimport sklearnfrom sklearn.feature_extraction.text import * from sklearn.model_selection import train_test_split from sklearn import linear_model fr
2022-02-03 13:07:15 1621
原创 网页请求过程 Webpage Request (不包含TCP握手)
前言:网络七层协议(通常简化为5类)层数功能应用第七层内容层如:网页,视频,博客…第五到七层应用层如:http,邮件,文件传输,直播…第四层传输层TCP堵塞控制,UDP第三层网络层IP地址,路由第一二层物理层,连接层以太网,Wi-Fi,DSL…1. 输入网页地址前:在浏览器输入网址前,电脑在连接进互联网时会通过DHCP协议,向服务器请求得到自己的IP地址。在整个过程起始前,假设电脑首次连接到网络,还没有自己的IP和MAC地址等。
2021-12-05 05:18:32 165
原创 4.1 进程交互
进程竞争**并发(concurrency)**是多个进程(或线程)同时执行的行为。当多个物理 CPU 可用时,进程可以并行执行。在单 CPU 上,可以通过分时来实现并发。临界区是一个代码段,其当在其他进程正在执行相应的代码时,进程不能访问该代码段。临界区的问题:源代码指令x=x+c通过用CPU寄存器R,被编译成3个机器级别的指令进程p执行指令x=x+1. 进程q执行指令x=x+2如果x的初始值为0,p执行代码首先把0放入 Rp,将Rp加1,在重新储存回x。如果q接下来执行,q把x值载入到Rq
2021-09-18 16:49:42 343
原创 3.4 实时进程的调度
实时进程(real-time process) 的特征在于必须把连续的输入处理地足够快,以产生几乎瞬时的输出。每个到达的输入项都有一个截止日期。例如:音频或视频流、处理和显示雷达数据、控制机器人或电传飞行器。周期是一个时间间隔(通常在毫秒甚至微秒内)。期间每个输入项目必须进行处理。每个周期的结束是处理当前项目隐含的最后期限。曲率单调 调度算法曲率单调(rate monotonic(RM)) 算法根据周期调度进程。周期越短,优先级越高。p1 和 p2 根据RM算法调度。p1的周期为4,总CPU时间为
2021-09-18 15:49:16 341
原创 3.3 交互进程的调度
交互进程通过从键盘或指示装置接收命令或数据,并且通过生成用户的终端或其它输出设备上的输出响应与在对话框的形式与用户通信。调度交互进程的主要目标是对每个输入做出迅速响应。因此,交互式进程必须使用抢占式调度来分时共享 CPU,以便让每个进程都有机会及时取得进展。RR调度算法时间量子,Q,是在进程内被允许使用的CPU时间的一个很短的时间单位(通常为10到100毫秒)。RR(round-robin)算法使用单一的进程队列。优先级仅由进程在队列中的位置决定。队列头部的进程具有最高优先级,允许运行 Q 个时间单
2021-09-03 20:17:15 455
原创 3.2 批量进程调度
**批量进程(batch process)**进行一个长期运行的一般重复性的任务,不需要用户的任何干预。例如:工资单、保险索赔处理、天气预报、科学计算。FIFO调度算法FIFO(先入先出/First-In-FIrst-Out) 算法严格按照进程的到达时间来调度。到达时间越早,优先级越高。理论上,多个进程可以有相同的到达时间,在这种情况下,仲裁规则(arbitration rule)可以随机选择一个进程。实际上,所有请求都是顺序处理的,因此所有进程都有不同的到达时间。FIFO是非抢占式的。例:需要
2021-09-03 19:13:43 289
原创 3.1 进程调度原则
长期调度与短期调度调度决策是在两个不同的层次上做出的。**长期调度(long-term scheduling)**决定进程何时应进入就绪状态并开始争夺 CPU。**短期调度(short-term scheduling)**决定接下来应该在 CPU 上运行哪个就绪进程。进程在不可预测的时间创建并进入系统。长期调度决定哪些进程被移动到就绪列表以争夺 CPU。进程在被操作系统挂起和稍后重新激活时也会受到长期调度的控制。短期调度把进程在就绪列表和CPU之间移动。当一个正在运行的进程被堵塞从而进
2021-08-27 14:30:09 783
原创 2.6 线程
线程的概念作为实现一个单一进程在程序中遵循一个单一路路径的应用。每当执行被堵塞,等待一些资源可用时,整个进程被堵塞。只有当每个部分单独堵塞,许多应用才可以部分并发运行。类似的,独立的部分可以平行运行在多个CPU上。为许多潜在的短期进程中的每一个创建单独的进程效率太低。线程thread 是执行一个进程中的程序的一部分,而不会产生创建和管理独立的PCB的开销的一个实例。线程的典型用途浏览器可以在屏幕上绘制图像,同时等待来自 Internet 的数据。一个线程可能忙于绘制图像,而另一个线程在检索数据时可
2021-08-17 22:12:31 204
原创 2.5 资源
资源表示操作系统维护着大量的资源。进程可以在运行时请求和释放这些资源。例如:硬件资源包括键盘,打印机,磁盘以及驱动器,摄像头,扬声器等很多类型的设备。软件资源包括输入/输出缓冲区,数据库表锁,消息,计时器等。大多数的资源可以使用相同的数据结构和操作统一表示和处理。类似于PCB,资源控制块(resource control block/RCB) 是一种表示资源的数据结构。在不同的 OS 之间,RCB 的具体实现和内容有所不同,但以下是可以处理多种类型的资源的通用结构。资源r的通用RCB:RCB
2021-08-17 21:38:38 145
原创 2.4 进程上的操作
进程创建层次结构进程创建的层次结构(process creation hierarchy) 是所有进程中动态变化父子关系的图形表示。每次创建或删除进程时,此图形都会发生变化。进程创建当 当前运行的进程开始创建一个子进程时,操作系统执行一个创建进程的函数,create()。创建进程函数(create process function) 分配一个新的PCB,初始化PCB内的条目,并把PCB连接到系统中的其他数据结构。create(state0, mem0, sched0, scc0){ p = al
2021-08-16 16:03:05 136
原创 2.3 进程控制块
进程控制块的内容(process control block/PCB)进程控制块(PCB)是进程的实例化。创建时,操作系统为每一个进程分配一个唯一标识符。该标识符p可以是指向PCB结构的指针,或是很多PCB的数组的索引。PCB的具体实现和内容因操作系统而异,但以下是代表绝大多数现代操作系统的通用结构。进程p的通用PCBPCB区域解释CPU_state当p停止时,由各种硬件寄存器(register)和状态标志(flag)组成的CPU当前状态保存在该区域中。当p恢复执行时,保存的信
2021-08-15 15:52:58 1520
原创 2.2 为什么有进程的概念?
虚拟CPU将应用程序构建成进程,可以独立于:CPU的数量:物理CPU(physical CPU) 是CPU的真实硬件实例。多个进程可以用 分时系统 (time sharing) 的技术运行在同一个物理CPU上。每一个进程会有一个 虚拟CPU (virtual CPU/vCPU) :进程假定此CPU只对自己可用。CPU的类型:虚拟CPU可以就被看作是物理CPU的抽象化,或者也可以是模拟不同CPU行为的软件。每一个进程都可以分别有一个物理CPU。所有的进程也可以“分时”同一个CPU,通过进程间的
2021-08-09 09:48:04 277
原创 进程的概念
2.1 进程的概念 【进程、线程、资源】进程的概念进程(process)是由操作系统(OS)执行的程序的实例。如:当用户打开网页浏览器或者文本编辑器时,操作系统就会创建一个新的进程。操作系统本身被组织成为进程的集合。操作系统使用 进程控制块 (process control block/PCB)来跟踪记录每一个进程。进程控制块是保存进程信息的一个数据结构,包括当前指令地址,执行栈,进程所用到的资源,以及正在执行的程序。进程控制块是进程的具体表现形式。进程状态与转换一个进程总是处在多个状态中的一种
2021-08-08 22:42:54 119
原创 Python的几种lambda排序方法
Python的几种lambda排序方法复习一下lambda排序方法1. 对单个变量进行排序#lst = [[5,8],[5,3],[3,1]]lst.sort(key = lambda x : x[1])#lst = [[3,1],[5,8],[5,3]]以元素的第二个元素升序排列2. 对多个变量进行排序#lst = [[5,8],[5,3],[3,1]]lst.sort(key = lambda x : (x[1],x[0]))#lst = [[3,1],[5,3],[5,8]]
2021-03-22 22:10:28 10055
原创 排序算法介绍及实现:选择;冒泡;归并;快排等
排序算法记录一下最近学习的各种排序算法。目录:排序算法选择排序思路:时间复杂度:O(n^2)插入排序思路:时间复杂度:O(n^2)冒泡排序思路:时间复杂度:O(n^2)归并排序时间复杂度:O(N log N)空间复杂度:O(N)快速排序时间复杂度O(N Log N) -> O(n^2)选择排序选择排序是最简单且容易想到的排序方法。它把输入值(以下均以列表为例)分为两个部分:已排序 和 未排序部分。先看一组伪代码:for (i = 0; i < numbersSize - 1; ++
2021-03-15 23:52:01 492
原创 C++ 类的继承模式(Modes of Inheritances)
继承模式当C++中类在继承时,有三种模式:public模式,protected模式和private模式。在这里简单介绍一下这三种模式的不同之处。public使用public模式时,基类(base class)中的:public在继承类中仍为public;protected仍为protected;private不能访问。protected使用protected时,基类中的:public在继承类变为protected;protected仍为protected;private不能访问。pr
2020-12-09 18:48:38 196
原创 C++中的抽象基类(Abstract Base Class)
背景:有时候,我们想调用两个相似类的同名函数,如下图:Circle类:class Circle{public: Circle(double radius) : radius{radius} { } double area() const { return radius * radius * 3.1415927; }private: double radius;};Rectangle类:class Rectangle{public: Rectangle(d
2020-11-30 13:42:09 1315
原创 引用传递(passing by references) 在C语言和C++中的区别
Passing by references在提到passing by reference前,想必我们已经知道什么是passing by value了。但是,如果我们在函数内不会更改参数值的情况下,用传值(passing by value)的方法似乎会有些低效。因为每当我们传入参数时,程序会有一个复制value的过程。所以,为了使代码高效,或是出于想要更改原数值的目的,我们会使用到传递引用(passing by reference)的方法。可是,在C语言和C++中,passing by referen
2020-11-10 16:30:49 1562
原创 C语言读取文件函数:fgets(); fgetc()
每一种函数都对应一个非常有用的读取目的,这篇博客就是把他们简单的归纳总结一下# C语言中不同读取函数的用法与区别:1. fgets()函数语法参数描述返回值范例2. fgetc()函数语法参数描述返回值范例1. fgets()函数语法char *fgets(char *str, int n, FILE *stream)参数str: 字符串指针,用于储存读取到的字符串n: 最大字符数量,也自动包含'\0'。(这就是为什么要读到(n-1))stream: FILE指针,函数从此流中读取。
2020-09-16 13:15:53 5789 2
原创 C语言常见转换说明符
C语言中常见的转换说明符今天看课程时偶然看到不怎么常用的%u的语句,所以想把一些基本的转换说明符归纳总结一下。转换说明符图表转换说明符类型英文%d有符号整数signed integer%u无符号整数unsigned integer%c单字符character%s字符串string%f浮点数float values%p指针值pointer values%e或%E科学记数法式浮点数scientific notation
2020-09-15 21:06:01 2293
原创 C语言中fopen()函数的使用方法
fopen()函数的使用方法C语言中fopen()的基本用法:语法:FILE *fopen(const char *filename, const char *mode);`返回值:fopen函数返回新打开文件的文件指针;如果此文件不能打开,则返回NULL指针。所需头文件:#include <stdio.h>`参数和模式filename: 要打开的文件名字符串mode: 访问文件的模式, 它包括:一个简单的表格是这么创建的:模式描述文件可否存在
2020-09-14 23:20:26 62383 11
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人