read

Java 之 InputStreamReader 类

对着背影说爱祢 提交于 2020-02-22 03:50:13
InputStreamReader 类   1、概述      转换流 java.io.InputStreamReader ,是 Reader 的子类,是从字节流到字符流的桥梁。      该类 读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。   2、继承自父类的共性成员方法     该类继承于 Reader 类,继承了父类的共性成员方法: int read() 读取单个字符并返回。 int read(char[] cbuf)一次读取多个字符,将字符读入数组。 void close() 关闭该流并释放与之关联的所有资源。   3、构造方法 InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。 InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。      参数:      InputStream in:字节输入流,用来读取文件中保存的字节      String charsetName:指定的编码表名称,不区分大小写,可以是utf-8/UTF-8,gbk/GBK,...不指定默认使用UTF-8   4、使用步骤       ①

CH#46A 磁力块

僤鯓⒐⒋嵵緔 提交于 2020-02-20 17:01:00
题意 磁力块 CH Round #46 - 「Adera 8」杯NOI模拟赛 描述 在一片广袤无垠的原野上,散落着N块磁石。每个磁石的性质可以用一个五元组(x,y,m,p,r)描述,其中x,y表示其坐标,m是磁石的质量,p是磁力,r是吸引半径。若磁石A与磁石B的距离不大于磁石A的吸引半径,并且磁石B的质量不大于磁石A的磁力,那么A可以吸引B。 小取酒带着一块自己的磁石L来到了这篇原野的(x0,y0)处,我们可以视为磁石L的坐标为(x0,y0)。小取酒手持磁石L并 保持原地不动 ,所有可以被L吸引的磁石将会被吸引过来。在每个时刻,他可以选择更换任意一块自己已经获得的磁石(当然也可以是自己最初携带的L磁石) 在(x0,y0)处 吸引更多的磁石。小取酒想知道,他最多能获得多少块磁石呢? 输入格式 第一行五个整数x0,y0,pL,rL,N,表示小取酒所在的位置,磁石L磁力、吸引半径和原野上散落磁石的个数。 接下来N行每行五个整数x,y,m,p,r,描述一块磁石的性质。 输出格式 输出一个整数,表示最多可以获得的散落磁石个数(不包含最初携带的磁石L)。 样例输入 0 0 5 10 5 5 4 7 11 5 -7 1 4 7 8 0 2 13 5 6 2 -3 9 3 4 13 5 1 9 9 样例输出 3 数据范围与约定 对于30%的数据,1<=N<=1000。 对于100%的数据,1<=N

shell脚本-case语句 和 read参数

纵饮孤独 提交于 2020-02-20 13:52:08
case语法 case $变量名 in     "值 1"   如果变量值等于值1,则执行程序1     ;;     "值 2"   如果变量值等于2,则执行程序2     ;;   .......省略其他分支     *)   如果变量都不等于以上值,则执行此程序 esac    1 #!/bin/bash 2 read -p "小明现在要买机票" i 3 case $i in 4 "guangzhou") 5 echo "飞机票卖完了" 6 ;; 7 "shanghai") 8 echo "飞机票还剩一张" 9 ;; 10 "beijing") 11 echo "五十块一张" 12 ;; 13 *) 14 echo "拜拜" 15 esac read参数说明: -a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。 -d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。 -p 后面跟提示信息,即在输入前打印提示信息。 -e 在输入的时候可以使用命令补全功能。 -n 后跟一个数字,定义输入文本的长度,很实用。 -r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。 -s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。 -t 后面跟秒数,定义输入字符的等待时间。 -u 后面跟fd

08_流

浪尽此生 提交于 2020-02-19 12:12:39
1.在java,对于数据的输入/输出操作以流方式进行。JDK中提供了各种各样的流类,用于获取不同种类的数据,程序中通过标准的方法输入/输出数据 2.从不同角度对流分类: 数据流的方向:输入流和输出流(站在程序的角度看) 处理数据单位:字节流和字符流 功能:节点流和处理流 3.JDK提供的所有流类型位于java.io包内,分别继承自以下四种抽象流类型 4.InputStream的基本方法 int read() throws IOException 读一个字节,如果所有都已读完,返回-1 int read(byte[] buffer) throws IOException 读到buffer字节数组中,返回实际读取的字节数,读完返回-1 int read(byte[] buffer, int offset, int length) throws IOException void close() throws IOException 5.OutputStream的基本方法 void write(int b) throws IOException 向输入流中写一个字节,该字节数据为参数b的低8位 void write(byte[] buffer) throws IOException void write(byte[] buffer, int offset, int length)

cmcc_simplerop

爷,独闯天下 提交于 2020-02-19 10:50:44
  这是一道系统调用+rop的题。   先来就检查一下保护。   32位程序,只开启了堆栈不可执行。ida看一下伪代码。   代码也很简洁,就是直接让你溢出。这里ida反汇编显示的v4具体ebp的距离是0x14,再加上0x8也就是0x1c就到返回地址了,但是在实际上,偏移不是这么多。这里我们用pwndbg测试。首先cyclic生成一些数字。      用pwndbg调试。   这里测出偏移是32,也就是距离返回地址是0x20。   接下来就是看看有些什么我们可以利用的函数吧!😊   首先就是可以看见有int 0x80,我们可以系统调用,关于系统调用的指令,我们可以参考这个博客,总结的很全。 https://blog.csdn.net/xiaominthere/article/details/17287965   接下来就是我们需要找一些通用的可以给寄存器赋值的命令。       在这里们我选择这两条,因为系统调用,需要我们执行这样的命令。   int80(11,"/bin/sh",null,null)   后面的四个参数分别是eax、ebx、ecx、edx。   所以上面的两条命令刚刚好。   接下来就是想办法找binsh的字符串,这道题是找不到的,需要我们自己输入。输入就需要调用函数,一般我们是选择调用read函数,将binsh字符串写入bss段,直接调用

read/write函数

旧街凉风 提交于 2020-02-18 03:33:47
调用read函数从打开文件读数据。 #include<unistd.h> ssize_t read( int filedes, void *buf, size_t nbytes); 从 filedes 中读取数据到 buf 中,nbytes 是要求读到的字节数。 返回值:若成功则返回实际读到的字节数,若已到文件尾则返回0,若出错则返回-1。 当从终端设备读时,通常一次最多读一行。 ssize_t 提供带符号的返回值,size_t不带符号。 调用write函数向打开的文件写数据。 #include<unistd.h> ssize_t write (int filedes, const void *buf, size_t nbytes); 从 buf 中写数据到 filedes 中,nbytes 是相求写入的字节数。 返回值:返回值通常与参数 nbytes相同,否则表示出错。 文件描述符 filedes是一个 int型数,通常用文件描述符0与进程的标准输入相关联,文件描述符1与进程的标准输出相关联,文件描述符2与进程的标准出错输出相关联。在依从POSIX的应用程序中, 幻数0,1,2应当替换成符号常量 STDIN_FILENO,STDOUT_FILENO 和 STDERR_FILENO 。这些常量都定义在头文件<unistd.h>中。 标准输入/输出常量 stdin 和 stdout

该内存不能为“read”或“written”

落花浮王杯 提交于 2020-02-15 10:38:00
最近电脑老出现这样的提示,于是在网上找了很多解决办法,找了找觉得这篇文章最全面 于是分享一下~~~~ 使用Windows操作系统的人有时会遇到这样的错误信息: 「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。 如果去请教一些「高手」,得到的回答往往是「Windows就是这样不稳定」之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的一般原因。 一、应用程序没有检查内存分配失败 程序需要一块内存用以储存数据时,就需要使用操作系统提供的「功能函数」来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是「动态内存分配」,内存地址也就是编程中的「光标」。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值「0」已不表示新启用的游标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的「健壮性」。若应用程序没有检查这个错误,它就会按照「思维惯性」认为这个值是给它分配的可用游标,继续在之后的执行中使用这块内存

read,readline,readlines的区别

非 Y 不嫁゛ 提交于 2020-02-14 14:49:27
python中有神奇的三种读操作:read、readline和readlines read() : 一次性读取整个文件内容。推荐使用read(size)方法,size越大运行时间越长 readline() :每次读取一行内容。内存不够时使用,一般不太用 readlines() :一次性读取整个文件内容,并按行返回到list,方便我们遍历 一般小文件我们都采用read(),不确定大小你就定个size,大文件就用readlines() 来源: https://www.cnblogs.com/liujie12/p/12307276.html