read

3.16作业

主宰稳场 提交于 2020-03-17 10:24:16
#1、通用文件copy工具实现 # file_path = input('请输入源文件路径:').strip() # # copy_path = input('复制后文件的路径:').strip() # # with open(r'%s'%file_path,mode='rb') as f1,\ # # open(r'%s'%copy_path,mode='wb') as f2: # # for item in f1: # # f2.write(item) #2、基于seek控制指针移动,测试r+、w+、a+模式下的读写内容 r+模式: with open(r'kkk.txt',mode='r+',encoding='utf-8') as f: print(f.read()) f.seek(3,0) print(f.tell()) f.write('345') f.seek(0,0) print(f.read()) w+模式: with open(r'kkk.txt',mode='w+',encoding='utf-8') as f: print(f.read()) f.seek(3,0) print(f.tell()) f.write('123') f.seek(0,0) print(f.read()) a+模式: with open(r'kkk.txt',mode='a+'

千锋学习的31天:Io

限于喜欢 提交于 2020-03-17 02:38:01
千锋马海超 千锋学习的31天今天学习异常 三、流的分类,对于fileinputStream来说。从方向上来分,他时_ (输入 ) 流,从数据单位上分,它是 ( 字节) 流,从功能上分它是 _( 节点 )_流 四、(字节流)fileinprtstream有三个重载read方法,其中: 1 无参的read方法返回值为_(int) 类型,表示 (从这个输入流读取一个字节的数据); 2 int read(byte[] bs)方法返回值表示_ (byte数据数组 ) ,参数表示__( 读取文件存在一个临时数组中 ) 3 int read(byte[] bs,int offset,int len)方法返回值表示 (byte数据数组 ) 参数分别表示 _ (存入数组的下标 ), ( 下标长度 ) 五(字节流)下面关于fileinputStream类型说法正确的是:( AC ) A 创建FileinputStream 对象时,为了读取硬盘上的文件 B 创建fileinputStream,对象时,如果硬盘上对应的文件不存在,则抛出一个异常 C 利用fileinputStream 对象可以创建文件 D FileInputStream 对象读取文件是,只能读取文本文件 六(字节流)填空 1创建fileoutputStream对象时,如果对应的文件在硬盘上不存在,怎会_( 创建一个文件 )

Java NIO系列教程(八) SocketChannel

纵然是瞬间 提交于 2020-03-16 11:51:54
某厂面试归来,发现自己落伍了!>>> 原文链接 作者: Jakob Jenkov Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器。 一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。 打开 SocketChannel 下面是SocketChannel的打开方式: SocketChannel socketChannel = SocketChannel.open(); socketChannel.connect(new InetSocketAddress("http://jenkov.com", 80)); 关闭 SocketChannel 当用完SocketChannel之后调用SocketChannel.close()关闭SocketChannel: socketChannel.close(); 从 SocketChannel 读取数据 要从SocketChannel中读取数据,调用一个read()的方法之一。以下是例子: ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = socketChannel.read(buf);

Oracle事务

孤街浪徒 提交于 2020-03-15 11:52:17
目录 一、事务的基本概念 二、事务的特征 1、原子性(Atomicity) 2、一致性(Consistency) 3、隔离性(Isolation) 4、持久性(Durability) 三、事务控制 1、设置事物属性 2、数据异常 3、选择隔离层 4、保存点 四、版权声明 一、事务的基本概念 在数据库中事务是工作的逻辑任务,一个事务是由一个或一组SQL语句组成,通过事务机制确保这一组SQL语句的操作要么全部成功执行成功,完成整个工作任务,如果任何一条SQL执行失败,对数据表所做的操作全部撤销。 事务的目的就是为了保证数据的完整性,以银行转换业务为例: A用户向B转账1000元,步骤如下: 1)A用户账户余额减少1000元; 2)B用户账户余额增加1000元; 3)记录A用户的交易日志。 4)记录B用户的交易日志。 一笔转帐交易将产生四次数据库操作,要么全部都成功,如果有一个失败,其它操作也应该全部被撤销。 转账交易有四次数据库操作,即四条SQL语句,第一条SQL执行的时候是事务的开始,如果全部的SQL语句执行成功,提交事务,如果有任何一条SQL语句执行失败,回滚事务。 commit; -- 提交事务。 rollback; -- 回滚事务。 二、事务的特征 对一组SQL语句操作构成的事务,数据库系统必须保证这些操作的原子性、一致性、隔离性和持久性,即ACID原则。 1、原子性

读写锁分离的循环队列

空扰寡人 提交于 2020-03-14 05:21:05
在很多需要高性能的场合下,锁的设计一直是一个比较关键的问题。无锁队列、读写锁分离的队列在业界以及学术界都已经有很成熟的研究。在网上也有很多资料, 但其实有很多实现都是错误的 。最近在工作中帮忙追查一个线上问题时,就发现实现一个正确的版本是比较困难的事情。 背景:实现一个循环队列,队列长度已预先分配。支持不同线程的多写多读。 原本的实现是对读和写分别使用了两个不同的锁来提升性能,但是在最早实现的时候 并没有发现到 线程间数据的同步修改会造成小概率读取脏数据 导致线上服务有问题 。 1 size_t Queue::pop(int &value) 2 { 3 AutoLock lock(_poplock); 4 if (!empty()) { 5 value = _queue[_read]; 6 ++ _read; 7 if (_read == _maxsize) { 8 _read = 0; 9 } 10 return 1;11 }12 return 0;13 }14 15 size_t Queue::push(int value)16 {17 AutoLock lock(_pushlock);18 if (!full()) {19 _queue[_write] = value;20 ++ _write;21 if (_write == _maxsize) {22 _write = 0

【2020Python修炼记14】Python语法入门—文件处理

拈花ヽ惹草 提交于 2020-03-13 21:43:40
【目录】 1、什么是文件 2、为何要用文件 3、如何使用文件— open() 3.1 模式介绍 3.2 基本操作流程 3.3 with上下文管理 3.4 指定字符编码 3.5 文件操作模式详解 1、什么是文件 文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口 ==计算机三大层次结构== 用户/应用程序(open()) 操作系统(文件) 计算机硬件(硬盘) 2、为何要用文件 ==保存数据== 用户/应用程序 可以通过文件将数据永久保存的硬盘中 ,即 操作文件 就是 操作硬盘 ==读取数据== 用户/应用程序 直接操作的是文件,对文件进行的所有的操作,都是在 向操作系统发送系统调用 ,然后再 由操作将其转换成具体的硬盘操作 3、如何使用文件— open() 3.1 模式介绍 =1= 模式一:控制文件 读写内容 的模式—— t 和 b 强调:t 和 b 不能单独使用,必须跟r / w / a 连用 t 文本 1、读写都以str(unicode)为单位的 2、、文本文件 3、必须指定encoding='utf-8' b 二进制/bytes =2= 模式二:控制文本 读写操作 的模式—— r /w / a / + r只读模式 w只写模式 a只追加写模式 +:r+、w+、a+ 3.2 基本操作流程 =1=打开文件—— open() =Windows路径分隔符问题 \ /

小结

风格不统一 提交于 2020-03-13 20:50:35
1、open()功能的使用: 模式介绍:1、控制文件读写内容的模式: t文本与b二进制 2、控制文件读写操作的模式: r、w、a: r(默认的操作模式):只读模式,当文件不存在时 with open('d.tet',mode='rt',encoding='utf-8') as f: res=f.read()#把所有内容从硬盘读入内存 print(res) w只写模式,当文件不存在时会创建空文件,当文件存在会清空文件 指针位于开始位置 with open('d.tet', mode='wt', encoding='utf-8') as f: f.write() 强调一下:再以w模式打开文件没有关闭的情况下,连续的写,新的内容总是跟在旧内容之后 二下:如果从新以w模式打开文件,则会清空文件 a只追加写,在文件不存在时,会创建空文档,存在时文件指针会直接跳到末尾 with open('d.tet', mode='wt', encoding='utf-8') as f: f.read()报错并不能读 f.write() 2、基本操作流程: 1、打开文件 open(r'c:\a\b\d.txt') open('c:/a/b.txt') f=open(r'aaa/a.txt')f的值是一种变量,zh占用的是应用程序的内存空间 2、读/写文件,res=f.read()print(res)3

9月12日培训日记

岁酱吖の 提交于 2020-03-12 19:39:06
一个事务的一致性,举例:银行转帐的过程 两个事务之间的隔离性,举例:你取钱时,有人给汇款(产品购买)! 默认情况下,直接执行的一条语句自己就是一个独立的事务,一个事务不能回滚其他的事务。 并发事务中可能发生的各种问题:脏读、不可重复读、虚(幻)读。 事务隔离级别:Read Uncommitted、Read Committed、Repeatable Read、Serializable 做事务实验时要注意MyISAM与InnoDB的问题,MyISAM就是Access一样的桌面数据库,不支持事务和主外键关联,讲课时用MyISAM犯犯错误,再引出InnoDB有较好的教学效果。 要把一个表从一个类型转到另一个类型,可使用ALTER TABLE语句,这个语句指明新的类型: ALTER TABLE t ENGINE = MYISAM; ALTER TABLE t TYPE = BDB; 虽然TYPE仍然在MySQL 5.1中被支持,现在ENGINE是首选的术语。 select @@autocommit;set autocommit=0|1 begin,commit,rollback; 用begin,则不用设置autocommit;设置autocommit,则不用begin; 第一个实验(select @@tx_isolation,看show variables知道的

python基础 & 读写文件

主宰稳场 提交于 2020-03-11 01:16:54
1、open函数用来打开文件 open(name[, mode[, buffering]]) 打开文件可传的参数 open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。 模式(mode)和缓冲(buffering)参数都是可选的 打开文件的模式有 r,只读模式(默认)。 w,只写模式。【不可读;不存在则创建;存在则删除内容;】 a,追加模式。【可读; 不存在则创建;存在则只追加内容;】 注 : “+” 表示可以同时读写某个文件 w,只写模式。【不可读;不存在则创建;存在则删除内容;】 w+,写读 a+,同a with语句 作用 :将打开文件写在with中当对文件操作完成后with语句会自动帮关闭文件,避免忘记写f.close() with open ( "data1.txt" , 'r' ,encoding = 'utf-8' ) as f: for line in f: print ( line ) 2、三种读操作比较 readline()每次读取一行,当前位置移到下一行 readlines()读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素 read(size)从文件当前位置起读取size个字节,如果不加size会默认一次性读取整个文件(适用于读取小文件) #1. read()一次读取所有内容 '' 'aaa111 bbb222' '' f

epoll与selector的简单理解

て烟熏妆下的殇ゞ 提交于 2020-03-08 13:46:59
概念理解 selector与epoll是多路复用的函数。我认为多路复用是针对bio而言,指的是通过单线程来追踪管理多个socket对象。传统的bio中,在socket的accept与read两个阶段都会造成阻塞,那么就无法处理并发问题,即仅一个socket对象就已经占用了IO对象,没有余力解决其他线程的请求。那么如何让bio能够处理并发问题呢?就是在accept和read阶段不再阻塞,当accept到socket对象的时候就将其缓存至list中,同时如果read到数据了就处理数据。但如果没有accept对象,则会去list中询问以前accept的对象有没有需要read的数据。如此,通过一个线程完成了多个socket对象的管理。那么selector与epoll就是完成了上述功能。 对比分析 selector内部维持了一个数据结构(bitmap),用来存储已经接受的socket对象。然后将此数据复制一份,交给内核去轮训每个socket对象是否有期待的事件发生,如果有就会进行置位(用户态到内核态的复制)。然后返回给用户态,由用户态完成事件的处理。 epoll针对selector进行了优化,采用红黑树来存储accept的socket对象,同时还维持着一个list,存放有发生的事件的socket以及事件,然后将此任务队列返回。用户态无需遍历所有的socket对象。下图即为epoll的说明图。