read

mysql死锁问题分析

▼魔方 西西 提交于 2020-01-18 03:55:12
参考了这篇文章: http://www.cnblogs.com/LBSer/p/5183300.html 《 mysql死锁问题分析 》 写的不错。 如果Mysql死锁,会报出: 1.1 死锁成因&&检测方法 我们mysql用的存储引擎是innodb,从日志来看,innodb主动探知到死锁,并回滚了某一苦苦等待的事务。问题来了,innodb是怎么探知死锁的? 直观方法是在两个事务相互等待时,当一个等待时间超过设置的某一阀值时,对其中一个事务进行回滚,另一个事务就能继续执行。这种方法简单有效,在innodb中,参数innodb_lock_wait_timeout用来设置超时时间。 仅用上述方法来检测死锁太过被动,innodb还提供了 wait-for graph算法 来主动进行死锁检测,每当加锁请求无法立即满足需要并进入等待时,wait-for graph算法都会被触发。 1.2 innodb隔离级别、索引与锁 1.2.1 锁与索引的关系 假设我们有一张消息表(msg),里面有3个字段。假设id是主键,token是非唯一索引,message没有索引。 id: bigint token: varchar(30) message: varchar(4096) innodb对于主键使用了 聚簇索引 ,这是一种数据存储方式,表数据是和主键一起存储,主键索引的叶结点存储行数据。对于普通索引

python文件操作

心已入冬 提交于 2020-01-17 05:39:10
文件的打开与关闭 打开文件 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件 open(文件名,访问模式) f = open('test.txt', 'w') 关闭文件 close( ) # 新建一个文件,文件名为:test.txt f = open('test.txt', 'w') # 关闭这个文件 f.close() 文件的读写 写数据 使用write()可以完 成向文件写入数据 f = open('test.txt', 'w') f.write('hello world, i am here!') f.close() 运行现象: 注意: 如果文件不存在那么创建,如果存在那么就先清空,然后写入数据 读数据 使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是 字节 ),如果没有传入num,那么就表示读取文件中所有的数据 f = open('test.txt', 'r') content = f.read(5) print(content) print("-"*30) content = f.read() print(content) f.close() 运行现象: 注意: 如果open是打开一个文件,那么可以不用谢打开的模式,即只写 open('test.txt') 如果使用读了多次

分享一个微信域名拦截检测的API接口以及官方的调用文档

筅森魡賤 提交于 2020-01-17 05:18:25
背景 由于微信限制比较严格,域名很容易会被判定一下几种情况: 1、诱导分享 2、 非微信官方网页 3、 网页包含恶意欺诈内容 4、已停止访问该网页 5、如需浏览请长按复制浏览器打开 6、其他等等情况! 出现这一问题之后,自己的业务往往会受到巨大影响。使用微信域名检测接口是为了方便检测自己的域名状态,及时获取自己域名在微信的状态,域名是否被微信查封。方便自己及时更换推广域名! 微信域名检测接口分享 接口地址: http://www.maoapi.cn/wxymjc?url_long=http://www.baidu.com 接口说明: 把上面的微信域名检测api接口的" http://www.baidu.com "替换成需要检测的链接即可使用 微信工作原理 通过模拟微信发送需要检测的域名,进行环境测试。 域名有如下几种状态: 1. 域名能正常访问(未被微信拦截) 2. 域名被微信拦截 3. 非微信官方网页,继续访问将转换成手机预览模式 4. 据用户投诉及腾讯安全网址安全中心检测,该网页包含恶意欺诈内容,为维护绿色上网环境,已停止访问 5. 网页包含诱导分享、关注等诱导行为内容,被多人投诉,为维护绿色上网环境,已停止访问 6、如需浏览请长按复制浏览器打开 7、其他等等 说明:总共分为2种返回方式,1是正常。2则是以上出现的几种情况。均是在微信中无法正常打开!! 接口文档 PHP调用演示

初识Socket通讯编程(一)

喜夏-厌秋 提交于 2020-01-17 00:38:51
一、什么是socket?   当两台计算机需要通信的时候,往往我们使用的都是TCP去实现的,但是并不会直接去操作TCP协议,通常是通过Socket进行tcp通信。Socket是操作系统提供给开发者的一个接口,通过它,就可以实现设备之间的通信。 二、TCP是如何通信的?   TCP连接和断开分别会存在3次握手/4此握手的过程,并且在此过程中包含了发送数据的长度(接受数据的长度),无容置疑,这个过程是复杂的,这里我们不需要做深入的探讨。如果有兴趣,可以参考此文章,这里详细的解释了TCP通信的过程: https://ketao1989.github.io/2017/03/29/java-server-in-action/ 三、Socket消息的收发   在Java中处理socket的方式有三种: 传统的io流方式(BIO模式),阻塞型; NIO的方式; AIO的方式;   这里只介绍传统的IO流方式的tcp连接,即InputStream和OutputStream的方式读取和写入数据。对于长连接,通常情况可能我们如下做: //<--------------服务端代码--------------------> public class SocketReadLister implements Runnable { private final int tcpPort=9999; private

FileInputStream read函数何时返回-1

我是研究僧i 提交于 2020-01-16 13:19:05
read函数,返回-1 例子:三个字节(1,2,3)的文件,每次读两个字节,第三次才会返回-1, 第一次读取到的是 (1,2),read返回 len = 2; 第二次读取到的是(3,2), read返回 len = 1; 第三次读取到的是(3,2), read返回 len = -1; read源码: public int read(byte[] b) throws IOException { int getData = read(); if (getData==-1) { return -1; }else{ b[0] = (byte)getData; for (int i = 1; i < b.length; i++) { getData = read(); if(-1==getData) return i; b[i] = (byte)getData; } } return b.length; } 来源: https://www.cnblogs.com/SA226343/p/12200495.html

java IO转换流:InputStreamReader,OutputStreamWriter

好久不见. 提交于 2020-01-16 04:28:38
概述 字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制 数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照 某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本f符 号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。 文件一定是以字节的形式保存在计算机中的。。 程序写入文件的过程,反之亦然 InputStreamReader类 概念 转换流 java.io.InputStreamReader ,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。 构造方法 InputStreamReader(InputStream in) : 创建一个使用默认字符集的字符流。 InputStreamReader(InputStream in, String charsetName) : 创建一个指定字符集的字符流。 由于本地的文件有可能是不同字符集的,所以读出的时候有可能出现乱码,如下实例,程序读取一个GBK字符集的文本,程序默认以UTF-8解码,所以无法输出真确结果 public class Demo { public

事务ACID

此生再无相见时 提交于 2020-01-15 08:02:36
A是原子性(atomic):事务中包含的各项操作必须全部成功执行或者全部不执行。任何一项操作失败,将导致整个事务失败,其他已经执行的任务所作的数据操作都将被撤销,只有所有的操作全部成功,整个事务才算是成功完成。 C是一致性(consistent):保证了当事务结束后,系统状态是一致的。那么什么是一致的系统状态?例如,如果银行始终遵循着"银行账号必须保持正态平衡"的原则,那么银行系统的状态就是一致的。上面的转账例子中,在取钱的过程中,账户会出现负态平衡,在事务结束之后,系统又回到一致的状态。这样,系统的状态对于客户来说,始终是一致的。 I是隔离性(isolated):使得并发执行的事务,彼此无法看到对方的中间状态。保证了并发执行的事务顺序执行,而不会导致系统状态不一致。 D是持久性(durable):保证了事务完成后所作的改动都会被持久化,即使是发生灾难性的失败。可恢复性资源保存了一份事务日志,如果资源发生故障,可以通过日志来将数据重建起来。 银行转帐的例子是最经典的事务范例: 用户把钱从一个银行账号转账至另一个银行账号,需要将资金从一个银行账号中取出,然后再存入另一个银行账号中。理想来说,这两次操作都应该成功。但是,如果有错误发生,则两次操作都应该失败,否则的话,操作之后其中一个账号中的金额将会是错误的,整个操作过程应该是原子性的,两个操作都是一个原子事务操作的一部分。

【零】JavaIO

和自甴很熟 提交于 2020-01-14 01:52:20
一、IO原理及流的分类 IO流用来处理设备之间的数据传输 Java程序中,对于数据的输入/输出操作以”流(stream)” 的方式进行。是指从源节点到目标节点的数据流动 源节点和目标节点可以是文件、网络、内存、键盘、显示器等等。 1.1 原理 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。 输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中 1.2 流的分类 按操作数据单位不同: 字节流(8 bit) 字符流(16 bit) 按照数据流的流向: 输入流 输出流 二、文件流 2.1 步骤 读文件: 使用文件输入流打开指定文件: 对于文本文件,应使用字符输入流FileReader流 对于二进制文件,应使用字节输入流FileInputStream流 读取文件数据 关闭输入流 写文件: 使用文件输出流打开指定文件: 对于文本文件,应使用字符输出流FileWriter流 对于二进制文件,应使用字节输出流FileOutputStream流 将数据写入文件 关闭输出流 2.2 输入流 Reader(FileReader): int read() // 读取一个字符 int read(char [] c) //一次性读多个字符到缓冲区数组 int read(char [] c, int off, int len) InputStream

【译】Java NIO AsynchronousFileChannel

此生再无相见时 提交于 2020-01-12 16:24:35
在Java 7中NIO部分新增了AsynchronousFileChannel。AsynchronousFileChannel可以异步的读写文件了。下面教程介绍了它的用法。 创建一个AsynchronousFileChannel 通过它的静态方法open可以创建一个对象: Path path = Paths.get("data/test.xml"); AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ); 第一个参数是一个文件路径,它指向要访问的文件。 第二个参数是一个或多个打开的操作选项,它告诉AsynchronousFileChannel在底层对文件执行什么操作。上面的例子我们使用了StandardOpenOption.READ,这就表示文件打开是为了读取数据。 读数据 有两种方法。每种读取数据的方法都调用了AsynchronousFileChannel的read()方法之一。这两种读取数据的方法将在下面几节中讨论。 通过Future读数据 第一种是通过返回一个Future对象来读数据: Future<Integer> operation = fileChannel.read(buffer, 0); 第一个参数是一个buffer

python 文件操作

隐身守侯 提交于 2020-01-12 06:53:47
  open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。 一 r 模式与 rb 模式的区别   r 模式,需要指定编码,windows下默认是gbk编码。rb模式直接读取二进制,与编码没有关系,加上就报错。 with open('1.txt','rb') as f: data=f.read() print(data,type(data))   输出: b'\xe4\xbc\x98\xe9\x85\xb7\n' <class 'bytes'>      如果在 rb模式下,强行加上encoding,报错。 with open('1.txt',encoding='utf-8',mode='rb') as f: data=f.read() print(data,type(data))   报错信息: ValueError: binary mode doesn't take an encoding argument      一般情况下要指定encoding,windows下默认是gbk,如果保存的时候是gbk,不加上encoding是可以的。   以下代码是在windows下运行。 with open('1.txt','r') as f: data=f.read() print(data,type(data))   输出: 优酷 <class 'str'>   因为文件1