read

Linux下进程中的通信(上)

给你一囗甜甜゛ 提交于 2020-01-04 19:23:31
一.进程通信的概念 为什么要进程通信? 进程通信:顾名思义,应该是两个进程间进行通信。 进程之间具有独立性,每个进程都有自己的虚拟地址空间,进程A不知道进程B的虚拟地址空间的数据内容(类似于一个人不知道另一个人脑子里在想啥) 二.进程间通信方式的分类 进程间通信方式的共同点: 进程间需要“介质”—两个进程都能访问到的公共资源。 常见的通信方式: 文件(最简单的方法) 假如用vim打开一个test.c文件,这时候会自动产生一个以文件名结尾的.swap文件,用于保存数据。 当正常关闭时,此文件会被删除。当文件非正常关闭时(比如编辑代码时突然断网),如果此时再次通过vim打开该文件,就会提示存在.swap文件,此时你可以通过它来恢复文件:vim -r filename.c 恢复以后把.swap文件删掉,就不会再出现一堆提示了。所以该文件存在就是为了进行进程中的通信。 管道 1.管道定义:一个进程连接到另一个进程的数据流。 ps aux | grep test ,将前一个进程(ps)的输出作为后一个进程(grep)的输入两进程间通过管道进行通信。 ps aux | -l :wc指word count,-l指行数,将ps aux进程的标准输出作为wc -l的标准输入。 2.管道分类 匿名管道和命名管道。 匿名管道 管道是在内核中的一块内存(构成了一个队列)

Excel Data Reader - Read Excel files in .NET

落花浮王杯 提交于 2020-01-04 17:07:00
http://exceldatareader.codeplex.com/ 代码 FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read); // 1. Reading from a binary Excel file ('97-2003 format; *.xls) IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); // ... // 2. Reading from a OpenXml Excel file (2007 format; *.xlsx) IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); // ... // 3. DataSet - The result of each spreadsheet will be created in the result.Tables DataSet result = excelReader.AsDataSet(); // ... // 4. DataSet - Create column names from first row

阻塞非阻塞-同步异步

白昼怎懂夜的黑 提交于 2020-01-04 04:57:44
硬件上下文切换 每个进程都拥有自己的内存空间,CPU任何时间只能运行一个进程. 运行之前,每个进程需要将内存状态复制到CPU的寄存器才能工作。这种复制就是进程的上下文切换 二种切换都会导致成本升高 1.进程内存-CPU寄存器相互切换 硬件上下文 解决:上下文切换一般都是由阻塞引起的,所以使用非阻塞 2.进程二种运行状态的切换 用户态-内核态 解决:减少不避要的系统调用。 阻塞的特点:进程睡眠 阻塞: 如果条件未就绪,'你'必须死等它就绪;进程睡眠(睡眠的缺点就是会让出CPU控制权) 非阻塞:如果条件未就绪,'你'可以转身作别的事情;进程可以作任何想做的事情,不过通常是低效的轮询。(轮询的特点是CPU寄存器一直被当前进程使用。轮询不是一种好的方式,可以使用wait/notify机制) 以这种理解方式,阻塞/非阻塞只对同步操作有意义;异步I/O总是意味着进程不会因为I/O陷入睡眠。 阻塞非阻塞示例: 比如一个人去银行办业务,拿到流水号之后,一 边抬头看显示屏幕上当前显示的流水号一边打电话这就是同步非阻塞。(当前进程在等待的过程中可以做其它事情,注意,如果将柜台触发流水号理解为消息通知的 话,就能避免用户不停的在二件事情上来回切换,此时用户只需要打你的电话就OK了,不用再抬头看流水号是否轮到了自己,这件事情交给了银行柜台去做,因为 柜台与用户是二个主体各做一件事情

数据库事务隔离级别

我的未来我决定 提交于 2020-01-04 01:25:58
数据库隔离级别 : 是在在数据库操作中,为了有效保证并发读取数据的正确性提出的。   隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把 数据库系统 的隔离级别设为Read Committed。它能够避免脏读取,而且具有较好的并发性能。尽管它会导致 不可重复读 、 幻读 和 第二类丢失更新 这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用 悲观锁 或 乐观锁 来控制。 数据库的几种隔离级别: READ UNCOMMITTED (读未提交数据):允许事务读取未被其他事务提交的变更数据,会出现脏读、不可重复读和幻读问题。 READ COMMITTED (读已提交数据):只允许事务读取已经被其他事务提交的变更数据,可避免脏读,仍会出现不可重复读和幻读问题。 REPEATABLE READ (可重复读):确保事务可以多次从一个字段中读取相同的值,在此事务持续期间,禁止其他事务对此字段的更新,可以避免脏读和不可重复读,仍会出现幻读问题。 SERIALIZABLE (序列化):确保事务可以从一个表中读取相同的行,在这个事务持续期间,禁止其他事务对该表执行插入、更新和删除操作,可避免所有并发问题,但性能非常低。 Oracle支持两种事务隔离级别:    READ COMMITTED (默认事务隔离级别),

用文件字符流复制.txt文件

余生颓废 提交于 2020-01-02 20:24:47
用文件字符流复制.txt文件 代码: package cn.tedu.io.file; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileCopyText1 { public static void main(String[] args) { //在try块外声明文件字符流对象 FileReader read=null; FileWriter writer=null; try{ //进行对象的初始化 //指明从哪获取数据 read=new FileReader(“D:\1.txt”); //指明往哪存储数据 writer=new FileWriter(“D:\5\4.txt”); //自建缓冲区 char[] cs=new char[1024*1024]; int len=-1;//用于接受获取的字符个数 while ((len=read.read(cs))!=-1){//如果返回值是-1循环结束 //往外写出数据 writer.write(new String(cs,0,len)); //冲刷 writer.flush(); } }catch (IOException e){ }finally { //判断字符输出流对象是否为null

关于幻读

浪尽此生 提交于 2020-01-01 04:18:06
不可重复读 在同一事务中,两次读取同一数据,得到内容不同,侧重点在于数据修改 幻读 同一事务中,用同样的操作读取两次,得到的记录数不相同,幻读的侧重点在于两次读取的纪录数量不一致 不可重复读和幻读在概念上有些交叉,对于不可重复读来说,在同一个事务中,如果读取到的记录数量发生变化,也可以看作是一种不可重复读,同样,对于幻读来说,同一个事务中的读取结果数量一致,但是内容发生了变化,也可以看成是一种不可重复读。 对于mysql,这里讨论一下read committed和repeatable read两个事务隔离级别的不可重复读和幻读: read committed: 在read committed隔离级别下,存在不可重复读和幻读现象。 起两个事务1和2,1采用快照读读取数据,2修改其中一条满足1查询条件的数据并提交,这时1再快照读一次,就会发现2添加的记录,这就是不可重复读。但如果1采用当前读方式读取数据,由于读取数据的时候会给满足条件的数据加锁,因此,事务2无法修改数据内容,如果单纯从数据内容发生变化这个方面来考虑的话,是不会出现不可重复读的问题的。同时,如果考虑到记录数量增减,由于read committed隔离级别并没有gap锁,所以虽然不能修改采用当前读方式锁定的数据,但是可以在查询条件满足的范围内增加新的数据,这也可以看作是一种不可重复读,但显然这种情况划分到幻读更好。

MongoDB的授权登录处理

杀马特。学长 韩版系。学妹 提交于 2019-12-30 03:49:14
一、command line 实际操作: http://www.mzwu.com/article.asp?id=3324 http://www.jb51.net/article/50501.htm http://www.jb51.net/article/53830.htm 我将MongoDB用户分为两类: 全局用户和库用户 。全局用户保存在admin库中,对所有数据库都有访问权限;库用户保存在单个数据库中,只能访问单个库。 用户信息保存在哪个库,身份验证时就得到那个库中才能验证 。用户信息保存在db.system.users中。 创建用户流程为: 先在非安全模式下启动数据库,创建全局用户,再停止数据库,在安全模式下重新启动,然后用全局用户登录并进行管理 。 1.创建用户 ①.在非安全模式下启动数据库: $ mongod --dbpath d:\mongodb\db ②.创建全局用户: 创建一个超级用户: //打开新的命令行 $ mongo MongoDB shell version: 2.0.6 connecting to: localhost/admin >use admin >db.createUser( { user: "name", pwd: "name123", roles: [ { roles: "userAdminAnyDatabase", db: "admin" }

pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

混江龙づ霸主 提交于 2019-12-29 20:49:04
(venv) C:\Users\tangxx\Desktop\information_management>pip install Django==2.0 Collecting Django==2.0 Downloading https://files.pythonhosted.org/packages/44/98/35b935a98a17e9a188efc2d53fc51ae0c8bf498a77bc224f9321ae5d111c/Django-2.0-py3-none-any.whl (7.1MB) | | 40kB 14kB/s eta 0:08:05ERROR: Exception: Traceback (most recent call last): File "c:\program files\python36\lib\site-packages\pip\_vendor\urllib3\response.py", line 425, in _error_catcher yield File "c:\program files\python36\lib\site-packages\pip\_vendor\urllib3\response.py", line 507, in read data = self._fp.read(amt) if not fp_closed

Python Pandas read_csv报错

自作多情 提交于 2019-12-29 05:50:53
为实现文本去重(将前面采集的数据进行两两对比删除重复),写了以下代码。 #-*- coding: utf-8 -*- import pandas as pd inputfile = 'e:/data/H_KJ300F-JAC2101W.txt' #评论文件 outputfile = 'e:/data/H_KJ300F-JAC2101W_process_1.txt' #评论处理后保存路径 data = pd.read_csv(inputfile, encoding = 'utf-8', header = None) l1 = len(data) data = pd.DataFrame(data[0].unique()) l2 = len(data) data.to_csv(outputfile, index = False, header = False, encoding = 'utf-8') print(u'删除了%s条评论。' %(l1 - l2)) 报错: Traceback (most recent call last): File "<stdin>", line 1, in <module> return _read(filepath_or_buffer, kwds) File "D:\Anaconda3\lib\site-packages\pandas\io

【BigData】Java基础_FileInputStream的基本使用

廉价感情. 提交于 2019-12-28 00:25:01
概念描述 知识点1: FileInputStream是按照一个一个字节去文件中读取数据的 知识点2:当文件中的数据被读取完毕之后,再次读取,则返回的是-1 知识点3:读取出来的字节可以通过char进行ascII码转换 代码部分 test.txt的文件内容如下: 在以下代码中,为手动去读取一次字节,每read一次,读取一个字节 package cn.test.logan.day09; import java.io.FileInputStream; public class FileInputStreamDemo { public static void main(String[] args) throws Exception { // 首先构造一个FileInputStream对象 FileInputStream fis = new FileInputStream("e:/test.txt"); // FileInputStream是一种字节流,是按照一个一个字节去文件中读取数据的 int read = fis.read(); System.out.println(read); } } 输出结果为:97 在上面的代码中我们发现read一次才读取一个字节,并且如果我们一直手工read下去,不难发现,当文件内容被读取完毕之后,则返回-1,所以,我们可以使用-1作为结束标志进行循环读取