Python Programing Basic

Python 强类型语言:C/C++/java 弱类型语言:js/python 数据结构 常用数据结构 序列、集合、字典 python中的数据结构主要有:序列(字符串,元组,列表,范围,字节序列),集合,字典 序列:可迭代,元素有序,可以重复出现 集合:可迭代,元素无序,不能重复出现 字典:可迭代,可变,的K-V对 Python没有数组,可以用列表(序列)代替 字符串 str 索引:a[0]表示第一个,最后一个元素是a[-1],不能超出范围会有IndexError 获取长度函数len(),max返回最后一个元素,min返回第一个元素 加法和乘法:+ 把两个字符串连接起来,* 把字符串重复多次 序列切分:从序列中且分出小的序列 [start : end]:包括start,不包括end [start : end : step] [0 : 0 : -1]:倒置 元组 tuple 不可变序列,一旦创建就不能修改 a = (21,32,43,45) b = ('hello','world') c = tuple([21,32,43,54]) 如果只有一个元素,后面一定要加逗号隔开 元组访问和分片,左闭右开: 元组拆包: 也可以用*n表示后面剩下所有元素形成一个list列表赋值给n 也可以用下划线表示不取哪些元素 遍历元组: for循环里的item,只是取出每个元素值 但有时需要在遍 历过程中同 获取索引,用到 enumerate() 函数可以获得元组对象,该元组对象有两个元素,一个是索引值,一个是元素值,所以(i, item) 是元组拆包过程 ...

July 3, 2021 · Caiyi

Computer Network

计算机网络引言 OSI 七层模型 OSI参考模型的三个主要概念:服务、协议、接口 OSI七层模型(Open System Interconnection)参考模型,是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议 七层模型传输数据过程: TCP/IP 四层模型 物理层 物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性,确保原始的数据可在各种物理媒体上传输,为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。 数据链路层 链路控制(同步,异步,二进制,HDLC) 差错控制(重发机制) 流量控制(窗口机制) 网络层 提供阻塞控制,路由选择(静态路由,动态路由)等 IP:网际协议。IP协议提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。IP地址是重要概念 ARP:地址解析协议。基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核必须知道目的端的硬件地址才能发送数据。P2P的连接是不需要ARP的 RARP:反向地址转换协议。允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。局域网网关路由器中存有一个表以映射MAC和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器。 IGMP:组播协议包括组成员管理协议和组播路由协议。组成员管理协议用于管理组播组成员的加入和离开,组播路由协议负责在路由器之间交互信息来建立组播树。IGMP属于前者,是组播路由器用来维护组播组成员信息的协议,运行于主机和和组播路由器之间。IGMP 信息封装在IP报文中,其IP的协议号为2 ICMP:Internet控制报文协议。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 BGP: 边界网关协议。处理像因特网大小的网络和不相关路由域间的多路连接。 RIP:路由信息协议。是一种分布式的基于距离矢量的路由选择协议。 传输层 提供分割与重组数据,按端口号寻址,连接管理差错控制和流量控制,纠错的功能。传输层要向会话层提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错。 TCP: 一种面向连接的、可靠的、基于字节流的传输层通信协议。 UDP: 用户数据报协议,一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 应用层 HTTP:超文本传输协议,基于TCP,是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少 SMTP:简单邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 SNMP:简单网络管理协议,由一组网络管理的标准组成,包含一个应用层协议、数据库模型和一组资源对象。 FTP:文件传输协议,用于Internet上的控制文件的双向传输。同时也是一个应用程序。 Telnet:是Internet远程登陆服务的标准协议和主要方式。为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器 SSH:安全外壳协议,为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议 NFS:网络文件系统,是FreeBSD支持的文件系统中的一种,允许网络中的计算机之间通过TCP/IP网络共享资源。 五层结构 应用层:为用户的应用进程提供网络通信服务,例如,HTTP协议提供了Web文档的请求和传送,SMTP(邮件传送协议)提供了电子邮件的传送,还有DNS(域名解析协议)将http://202.108.22.5转换为对人友好的www.baidu.com。功能包括提供各种不同的应用协议以满足应用进程的需求,识别并证实目的通信方的可用性,使协同工作的应用进程之间进行同步,为通信过程申请资源 传输层:为相互通信的应用进程提供了逻辑通信,提供端到端的服务,即主机到主机。负责将应用层的报文向目的地传送,还要确保传输差错控制和流量控制。在因特网中,有两个传输协议,即TCP和UDP,可提供端到端的、可靠的或者不可靠的传输 网络层:分组选择合适的路由,把分组从从一台主机移动到另一台主机,具体功能包括寻址、路由选择、连接建立、保持和终止等 数据链路层:将在网络层交下来的数据报组装成帧(frame),两个相邻结点间的链路实现帧的传输,传输到下一个节点的目的主机的数据链路层又将数据报上传给网络层。功能包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等 物理层:在物理媒介上正确地、透明地传输比特流,在物理层中的协议与链路相关,并且需要确保原始的数据可在各种物理媒体上传输。比如以太网的许多物理层协议有和双绞铜线、同轴电缆、光纤,等等相关 第五层 应用层 HTTP 协议定义 ...

September 20, 2020 · Caiyi

Operating System

用于记录大二的操作系统课程笔记 1. 操作系统结构 操作系统的概念 操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件 操作系统原子性 所谓原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程切换 原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征 两种处理器状态:用户态和核心态 **用户态:**用户进程执行所在的状态,运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。内核态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时,就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态,比如,应用程序、文件系统、设备驱动 **内核态:**内核是计算机配置的底层软件,是操作系统最基本、最核心的部分。操作系统内核执行的状态是受保护的状态,当程序运行在0级特权级上时,就可以称之为运行在内核态。比如,时钟管理、中断处理、原语、进程通信、进程管理、存储器管理、cpu调度、设备管理 两种状态的主要区别? 处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理机是可被抢占的,运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。而处于核心态执行中的进程,则能访问所有的内存空间和对象,且所占有的处理机是不允许被抢占的 为啥要区别? 是为了区别执行特权指令(启动I/O、内存清零、修改程序状态字、设置时钟、允许/禁止终端、停机)与非特权指令(普通的运算指令、控制转移、算数运算、取数指令、访管指令),在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等,如果所有的程序都能使用这些指令就会很危险。所以,CPU将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令 怎样区分处理器状态? 用程序状态字寄存器(PSW)中的某标志位来标识当前处理器处于什么状态,0为用户态,1为核心态 两者之间如何切换? 用户态到内核态: 系统调用:这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如fork()实际上就是执行了一个创建新进程的系统调用 中断:当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令,转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程,自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等 异常:当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常 核心态到用户态: 通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态” 系统调用 system call 系统调用 系统调用是操作系统提供给应用程序的接口,应用程序可以发出系统调用请求来获得操作系统的服务。比如,系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作,如存储分配、IO操作、文件管理等,都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成,这样可以保证系统的稳定性和安全性,防止用户进行非法操作 系统调用会使处理器从用户态进入核心态,因为系统调用相关处理涉及到对系统资源的管理、对进程的控制,这些功能需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下进行 系统调用按照功能分类:设备管理(请求/释放/启动)、文件管理(读/写/创建/删除)、进程控制(创建/撤销/阻塞/唤醒)、进程通信(消息传递/信号传递)、内存管理(分配/回收) 系统调用与库函数的区别: 系统调用是操作系统向上层提供的接口,有的库函数是对系统调用的进一步封装,当今编写的应用程序大多是通过高级语言提供的库函数间接的进行系统调用 中断 interrupt 中断指计算机 CPU 获知某些事,暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后再继续执行之前的程序。整个过程称为中断,分为内部中断和外部中断 内部中断(软中断,异常) 信号的来源是 CPU 的内部,与当前执行的指令有关 **陷阱 trap:**是一种有意而为之的,预先安排的异常事件,一般是在编写程序时故意设下的陷阱指令,而后执行到陷阱指令后,CPU 将会调用特定程序进行相应的处理,处理结束后返回到陷阱指令的下一条指令,比如系统调用,程序调试功能等 故障 fault:故障是由错误条件引起的,在 “引起故障的指令” 被执行但还没有执行结束时发生,由 CPU 检测到的一类的意外事件。出错时交由故障处理程序处理,如果能处理修正这个错误,就将控制返回到引起故障的指令即 CPU 重新执这条指令,如果不能处理就报错。 常见的故障为缺页,当 CPU 引用的虚拟地址对应的物理页不存在时就会发生故障。缺页异常是能够修正的,有着、专门的缺页处理程序,它会将缺失的物理页从磁盘中重新调进主存,而后再次执行引起故障的指令时便能够顺利执行了 **终止:执行指令的过程中发生了致命错误,不可修复,程序无法继续运行,只能终止。通常会是一些硬件的错误。**终止处理程序不会将控制返回给原程序,而是直接终止原程序,比如整数除0 外部中断 信号的来源是 CPU 的外部,与当前执行的指令无关 1、可屏蔽中断:通过INTR线向CPU请求的中断,主要来自外部设备如硬盘,打印机,网卡等。此类中断并不会影响系统运行,可随时处理,甚至不处理,所以名为可屏蔽中断。 2、不可屏蔽中断:通过NMI线向CPU请求的中断,如电源掉电,硬件线路故障等。这里不可屏蔽的意思不是不可以屏蔽,不建议屏蔽,而是问题太大,屏蔽不了,不能屏蔽的意思。 注:INTR和NMI都是CPU的引脚 2. 进程 进程和进程实体的概念 进程(Process)的概念 ...

September 1, 2020 · Caiyi

Java Language Basic

Java 初级 面向对象的三大基本特性:封装、继承、多态 第二章 java环境搭建 编写:利用记事本/IDE完成代码文件 (.java) 的编写 编译:利用JDK中 javac.exe 将代码文件 (.java) 编译为字节码文件 (.class) 运行:java.exe读入并解释字节码文件 (.class),最终在JVM上运行 Eclipse和java(JDK, JRE, JVM) 之间的关系 eclipse相当于帮我们管理很多java和class文件,给我们提供一个友好的界面,让我们更容易的写.java文件,.java要依靠JDK里面的 javac.exe来编译,编译完成后会产生一个.class文件,.class文件要继续调用JRE里面的java.exe来运行,JRE运行的时候里面会自动生成一个JVM(java virtual machine) java程序三种错误:语法错误,运行错误,逻辑错误 第三章 Java类基础知识 3.1 java类结构 类是java最基础的逻辑单位 java中所有的内容都是需要放在类的范围内,不允许游离在类以外 一个java文件里可以有多个class,但是只能有一个public class 一个class最多只能有一个main函数,是程序的入口,也可以没有main函数,没有main函数的类不能主动执行,但可以被动调用执行,main函数的形参和前缀修饰符都不能省略,public static void main(String[] args) 是固定写法 main函数不算成员函数,无法被其他方法和类调用 System.out.print() System.out println() //换行输出 import java.util.Scanner; Scanner input=new Scanner(System.in); int score=input.nextInt(); //输入整数 String name = in.nextLine();//读取一行字符串,中间可以有空格 String firstName = in.next();//读取一个字符串,中间没有空格 double d = in.nextDouble();//读取一个double类型的数据 3.2 基本数据类型和运算符 Java标识符(identifiers)规定: 以字母、下划线、美圆符开始的一个字符序列 除开始的第一个字符外,后面可跟字母、下划线、美圆符和数字 标识符区分大小写 ...

July 12, 2020 · Caiyi