read

5233杨光--第十章

耗尽温柔 提交于 2020-01-31 21:49:04
Unix I/O 所有的I/O设备,如网络、磁盘都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。这种将设备映射为文件的方式,允许UNIX内核引出一个简单、低级的应用接口,称为UNIX I/O。     输入输出的执行方式:       打开文件:         打开文件,内核会返回描述符。标准输入(STDIN_FILENO)描述符为0、标准输出(STDOUT_FILENO)描述符为1、标准错误(STDERR_FILENO)描述符     为2。     改变当前文件位置:         文件位置k,是文件开头起始的字节偏移量。     读写文件:         读是从文件拷贝到存储器。写相反。当k超过文件字节数m时,会触发end-of-file(EOF)条件。     关闭文件:         释放文件打开时创建的数据结构(释放文件的存储器资源),将描述符恢复到可用的描述符池中。 打开和关闭文件     进程通过open函数来打开一个已存在的文件或者创建一个新文件的。     int open(char *filename, int flags, int mode);     flags参数指明了进程打算如何访问这个文件:     O_RDONLY:只读     O_WRONLY:只写     O_RDWR:可读可写     O_CREAT

pip更新超时失败之解法

风流意气都作罢 提交于 2020-01-31 13:07:21
python卡在pip安装包上了,我用的是pycharm,在它的交互命令行里使用 python - m pip install - - upgrade pip 始终报错! Traceback ( most recent call last ) : File "d:\soft\python3.7\lib\site-packages\pip\_vendor\urllib3\response.py" , line 331 , in _error_catcher yield File "d:\soft\python3.7\lib\site-packages\pip\_vendor\urllib3\response.py" , line 413 , in read data = self . _fp . read ( amt ) File "d:\soft\python3.7\lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py" , line 62 , in read data = self . __fp . read ( amt ) File "d:\soft\python3.7\lib\http\client.py" , line 447 , in read n = self . readinto ( b ) File "d

MySQL事务隔离级别详解

坚强是说给别人听的谎言 提交于 2020-01-31 13:03:57
MySQL事务隔离级别详解 博客分类: SQL MySQL 数据结构 SQL SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。 Read Committed(读取提交内容) 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。 Repeatable Read(可重读) 这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行

MySQL事务隔离级别详解

家住魔仙堡 提交于 2020-01-31 13:03:16
原文地址: http://xm-king.iteye.com/blog/770721 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。 Read Committed(读取提交内容) 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。 Repeatable Read(可重读) 这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影”行

MySQL事务隔离级别详解

白昼怎懂夜的黑 提交于 2020-01-31 13:02:34
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。 Read Committed(读取提交内容) 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。 Repeatable Read(可重读) 这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读 (Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion

python基础之文件基本操作

ε祈祈猫儿з 提交于 2020-01-30 21:09:27
代码的存储可以通过定义变量来存储,但是变量存储代码,这只能存在内存中,一旦关闭,原先的代码就会消失,所以我们需要把代码通过文件的形式,永久将代码保存在硬盘中,所以需要学会文件的基本操作。 文件的只读和只写模式分别为r和w 1. 先建立一个文件demo1.txt , 并写入内容 查看demo1文件中的内容 # 我们在桌面上操作文件:1.打开文件;2.读取文件; 3.关闭文件 f = open("demo1.txt", "r", encoding="utf-8")# f = open(r"C:\Users\dyl\Desktop\demo3.txt", "r", encoding='utf-8') r代表转义,后面的r代表read模式 print(f.read()) f.close() """ 1. 打开文件操作 demo1.txt 文件的路径 文件的路径可以是绝对路径,也可以是相对路径,绝对路径比较死,如果文件的路径发生了改变,那么打开文件的路径就要相对地改,所以我们尽量用相对路径如果是绝对路径,需要用r""转义符 "r" 是只读模式 encoding 是指定文件的编码方式 如果桌面文件的编码方式与指定的编码方式不一样,那么就会报错 (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3:

脏读、不可重复读、幻读

て烟熏妆下的殇ゞ 提交于 2020-01-30 19:08:01
脏读 出现脏读需要mysql设置事务隔离级别为 read uncommited 。 有两个session,A和B,现在A开启事务,假设有一条记录为, id=1,name=zhangsasn,money=1000 现在A做更新操作,把money增加200,但是还未提交事务。 此时B开启事务,进行了查询操作,B查询的结果就会money=1200,B进行修改操作,将money减少100,提交事务。那么B查询的结果就是money=1100 之后,A并没有提交事务,而是因为某种情况回滚了事务,那么A查询的结果是money=1200。 脏读就产生了。 在数据库层面防止脏读 只需要将mysql的隔离级别设置为read commited及以上就能防止脏读的产生 不可重复读 将事务的隔离级别设置为 read commited 有两个session,A和B,现在A开启事务,假设有一条记录为, id=1,name=zhangsasn,money=1000 A查询这条记录money=1000,此时B开启事务,并进行修改这条记录的money=1200,B提交事务。 A再次查询,此时money=1200。这就出问题了,A并没有提交事务,但是第二次读到的数据跟第一次竟然不一样,就算查询语句后面加上 lock in share mode 也没用。 这就是不可重复读。 在数据库层面防止不可重复读

升级 pip ,加入超时处理方法

℡╲_俬逩灬. 提交于 2020-01-29 20:50:24
WARNING: You are using pip version 19.3.1; however, version 20.0.2 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command. 警告:您正在使用pip 19.3.1版本;但是,版本20.0.2是可用的。 您应该考虑通过“ python -m pip install --upgrade pip ”命令进行升级。 1、 在cmd命令窗口中输入提示的命令即可: python -m pip install --upgrade pip 2、 如果遇到如下 超时 socket.timeout 问题: G:\works\PythonCharmPre>python -m pip install --upgrade pip Collecting pip Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a1 7495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB) |█▌ | 61kB 1.8kB

编码转换 文件的操作

╄→гoц情女王★ 提交于 2020-01-28 22:53:39
1.编码的转换 1 s1 = "汤圆" 2 s2 = s1.encode("utf-8") 将s1的Unicode编码转换成utf-8格式的编码 3 s3 = bs.decode("utf-8") 将s2的utf-8格式的编码转换成Unicode的编码 4 bs2 = s2.encode("gbk") 将bs的Unicode格式的编码转换成gbk格式的编码 2.文件的操作流程 操作文件的流程: 1,打开文件,产生一个文件句柄. 2, 对文件句柄进行相应的操作. 3,关闭文件句柄. 1 f = open("D:\美女校花联系方式.txt",encoding='utf-8',mode='r') 2 print(f.read()) 3 f.close() 3.文件的常用操作: r: ①.read()全部读取 1 f1 = open = ('r模式',encoding = 'utf-8') 2 comment = f1.read() 3 print(comment) 4 f1.close() ②.read(n) 在r模式下就是: 读取前n个字符 在rb模式下就是:读取前n个字节 1 f1 = open('r模式',encoding = 'utf-8',mode = 'r') 2 print(f1.read(3)) 3 f1.close() 4 5 f2 = open('r模式'

TCP协议的客户端与服务器的通信过程

廉价感情. 提交于 2020-01-27 22:52:20
使用TCP时,客户端与服务器端的通信流程 服务器初始化 1)调用socket,创建文件描述符fd 2) 调用bind将fd与服务器的IP与PORT绑定 3)调用listen将套接字设为监听模式,准备接收客户端连接请求 4)调用accept等待并接收客户端的连接请求,建立好TCP连接后,该函数会返回一个新的已连接套接字newfd 建立连接 1)客户端调用socket创建文件描述符 2)调用connect,向服务器发送连接请求 3)connect会发送一个请求SYN段并阻塞等待服务器应答(第一次握手) 4)服务器收到SYN,会给客户端发送一个确认应答ACK,同时发送一个请求(SYN)建立连接(第二次握手) 5)客户端收到服务器发的SYN+ACK段,表明客户端连接已建立成功,进入已连接状态。客户端再向服务器 发送一个ACK段,服务器收到后则服务器连接成功。 数据传输 1)连接建立成功后,在同一连接、同一时刻,通信双方可同时写数据(全双工) 2)服务器端从accept()返回后调用read()开始读数据,若没有数据则阻塞等待 3)客户端调用write()向服务器发送数据请求,客户端收到之后调用read()处理请求,此过程服务器调用read()阻塞等待 4)服务器调用write()将处理好的请求发送给客户端,再次调用read()等待下一个请求 5)客户端收到后从read()返回