字节数组

第十周作业课程总结

耗尽温柔 提交于 2019-12-03 05:18:54
一、Java字符流的使用: 字符输入/输出流、字符文件和字符缓冲区的输入/输出流 java 中字节流的功能十分强大,几乎可以直接或间接地处理任何类型的输入/输出操作。 1、字符输入流: Reader 类是所有字符流输入类的父类,该类定义了许多方法,这些方法对所有子类都是有效的。 Reader 类的常用子类如下: CharArrayReader 类:将字符数组转换为字符输入流,从中读取字符。 StringReader 类:将字符串转换为字符输入流,从中读取字符。 BufferedReader 类:为其他字符输入流提供读缓冲区。 PipedReader 类:连接到一个 PipedWriter。 InputStreamReader 类:将字节输入流转换为字符输入流,可以指定字符编码。 与 InputStream 类相同,在 Reader 类中也包含 close() 、 mark() 、 skip() 和 reset() 等方法. Reader类中的 read() 方法 方法名及返回值类型 说明 int read() 从输入流中读取一个字符,并把它转换为 0~65535 的整数。如果返回 -1, 则表示已经到了输入流的末尾。为了提高 I/O 操作的效率,建议尽量使 用下面两种 read()方法 int read(char[] cbuf) 从输入流中读取若干个字符,并把它们保存到参数

第十周编程总结

怎甘沉沦 提交于 2019-12-03 04:06:07
题目:将奇数位的小写字母传化为大写字母 实验代码: package Bian; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.Scanner; public class A { public static void main(String[] args) throws Exception { File f = new File("f:" + File.separator + "test.txt");//定位文件位置 OutputStream out = null; out = new FileOutputStream(f); Scanner in = new Scanner(System.in);//输入 System.out.println("请输入:"); String str = in.nextLine(); byte b[] = str.getBytes();//转为数组 for (int i = 0; i < b.length; i++) { if (i % 2 == 0 && b[i] >= 'a' && b[i] <= 'z') {//判定条件 b[i] = (byte) (b[i] - 32); } out

QByteArray类

匿名 (未验证) 提交于 2019-12-03 00:32:02
QByteArray类 提供一个字节数组,QByteArray可用于存储原始字节(包括“\ 0” )和传统的8位 “\ 0” 端接字符串 . 使用QByteArray比使用const char *更方便. QByteArray适合的两个主要情况是当您需要存储原始二进制数据,并且当内存保护至关重要时(例如,使用嵌入式Linux的Qt) 其中包含数据“Hello”: QByteArray ba( "Hello" ) ; 1 以便如果使用一个函数来请求指向底层数据的指针(例如调用data()),那么指出的数据保证被’\ 0’终止。 另一种方法是使用resize()设置数组的大小,并初始化每个字节的数据字节. 返回一个可以在赋值左侧使用的字节的引用。例如: QByteArray ba; ba.resize( 5 ); ba[ 0 ] = 0x3c ; ba[ 1 ] = 0xb8 ; ba[ 2 ] = 0x64 ; ba[ 3 ] = 0x18 ; ba[ 4 ] = 0xca ; //对于只读访问,替代语法是使用at(): for ( int i = 0 ; i < ba. size (); ++i) { if (ba.at(i) >= 'a' && ba.at(i) <= 'f' ) cout << "Found character in range [a-f]" << endl;

byte[]字节数组与二进制字符串\十六进制字符串的相互转换

匿名 (未验证) 提交于 2019-12-03 00:22:01
Source: 点击打开链接 点击打开链接 /** * 将byte数组转换为表示16进制值的字符串, 如:byte[]{8,18}转换为:0813, 和public static byte[] * hexStrToByteArr(String strIn) 互为可逆的转换过程 * * @param arrB 需要转换的byte数组 * @return 转换后的字符串 * @throws Exception 本方法不处理任何异常,所有异常全部抛出 */ private static String byteArrToHexStr( byte [] arrB) throws Exception { int iLen = arrB. length ; // 每个byte用两个字符才能表示,所以字符串的长度是数组长度的两倍 StringBuffer sb = new StringBuffer(iLen * 2 ); for ( int i = 0 ; i < iLen; i++) { int intTmp = arrB[i]; // 把负数转换为正数 while (intTmp < 0 ) { intTmp = intTmp + 256 ; } // 小于0F的数需要在前面补0 if (intTmp < 16 ) { sb.append( "0" ); } sb.append(Integer

字节跳动笔试题

匿名 (未验证) 提交于 2019-12-03 00:06:01
今天做了字节跳动的笔试题,总得来讲题并不难,但是需要看懂题的意思,列出自己的思路再进行编程这样效率才高,之前面试腾讯暑期实习生就是太紧张了,大脑一片空白,也不知道先写写自己的思路,然后再进行编程,结果给pass掉了,想来还是很可惜的。下面是字节跳动的笔试题: 要求:输入数组长度,然后输入数组中的各个元素,最后输入整数K,要求找出数组中三个元素小于K的三个元素,例如:           输入数组长度:6          输入数组元素:-2、0、1、2、3、6          输出三元组:共4个下面给出思路和代码: """ 思路: 1、获得用户输入的数组长度n,若n不为整数,则提示错误。 2、创建数组。 3、获得用户输入的数组元素,如果元素个数超过数组长度n,则提示错误。 4、获取用户输入的整数k,如果非整数,则提示错误。 5、可以使用for循环来依次遍历,找到满足条件的三元组并记录下来。 6、输出满足条件的三元组的个数。 """ i = 0 j = 0 while True: # 1、获得用户输入的数组长度n, 若n不为整数,则提示错误。 try: n = int(input("请输入所需要创建的数组长度:")) except: print("请输入整数!!!") continue # 2、创建数组。 arrs = [] # 3、获得用户输入的数组元素

HDFS中的数据块(Block)

匿名 (未验证) 提交于 2019-12-02 23:59:01
我们在分布式存储原理总结中了解了分布式存储的三大特点: 数据分块,分布式的存储在多台机器上 数据块冗余存储在多台机器以提高数据块的高可用性 遵从主/从(master/slave)结构的分布式存储集群 HDFS作为分布式存储的实现,肯定也具有上面3个特点。 我们在微职位视频课时HDFS中的数据块中了解了HDFS中的数据块的基本特性,现在我们来复习下,然后再进行深入的了解下数据块的实现 在HDFS中,数据块默认的大小是 128M ,当我们往HDFS上上传一个300多M的文件的时候,那么这个文件会被分成3个数据块: 所有的数据块是分布式的存储在所有的DataNode上: 为了提高每一个数据块的高可用性,在HDFS中每一个数据块默认备份存储3份,在这里我们看到的只有1份,是因为我们在 hdfs-site.xml 中配置了如下的配置: <property> <name> dfs.replication </name> <value> 1 </value> <description> 表示数据块的备份数量,不能大于DataNode的数量,默认值是3 </description> </property>   我们也可以通过如下的命令,将文件 /user/hadoop-twq/cmd/big_file.txt 的所有的数据块都备份存储3份: hadoop fs - setrep 3 / user

使用memset初始化int数组

匿名 (未验证) 提交于 2019-12-02 23:57:01
memset()是一个来自于string库的函数,正规用法是初始化char类型的数组。因为char类型只占1个字节,memset按字节赋值后,会将char类型数组的所有元素变为你指定的值。但是 来源:博客园 作者: MiserWeyte 链接:https://www.cnblogs.com/miserweyte/p/11461574.html

字节跳动前端面试题两道

匿名 (未验证) 提交于 2019-12-02 23:55:01
1,多维数组扁平化。原数组[[0],[2,3,4],1,[1,[2,3]]],输出[0,2,3,4,1,1,2,3] {     //判断当前数组是否有子数组 function hasChildArray ( arr ) { return arr . some ( element => { if ( Array . isArray ( element )) { has = true ; return true ; } }); } let sourceArr = [[ 0 ], [ 2 , 3 , 4 ], 1 , [ 1 , [ 2 , 3 ]]]; let result = [];      //递归 ( function doFunc ( arr ) { if ( hasChildArray ( arr )) { for ( let i = 0 , l = arr . length ; i < l ; i ++) { if ( typeof arr [ i ] == "number" ) { result . push ( arr [ i ]); } else if ( Array . isArray ( arr [ i ])) { doFunc ( arr [ i ]); } } } else { result = result . concat ( arr ); } })(

Java 基础语法学习整理笔记

☆樱花仙子☆ 提交于 2019-12-02 22:56:31
Java 基础语法学习整理笔记 文章目录 标识符 常量 基本数据类型 引用数据类型 变量 数据类型转换 算数运算符 赋值运算法 比较运算符 逻辑运算符 三元运算符 方法简单介绍 选择结构 循环结构 方法的重载(Overload) 数组 数组初始化 访问数组元素 Java 内存划分 数组异常种类 数组的常见操作 标识符 标识符 :是在程序当中,我们自定义的内容。比如类的名字、方法的名字和变量的名字等等 命名规则 : 标识符可以包含: 英文字母(区分大小写) 、 数字 、 字符 & 和 _ 标识符不能以数字开头 标识符不能是关键字 命名规范 : 类名规范 :首字母大写,后面的每个单词首字母大写(大驼峰) 变量名规范 :首字母小写,后面每个单词首字母大写(小驼峰) 方法名规范 :通变量名 常量 常量的分类 字符串常量 整数常量 浮点数常量 字符常量 布尔常量 空常量 基本数据类型 整数型 字节型(byte)1 个字节, ( − 2 7 , 2 7 − 1 ) (-2^{7}, 2^{7}-1) ( − 2 7 , 2 7 − 1 ) 短整型(short)2 个字节, ( − 2 15 , 2 15 − 1 ) (-2^{15}, 2^{15}-1) ( − 2 1 5 , 2 1 5 − 1 ) 整形(int)4 个字节, ( − 2 31 , 2 31 − 1 ) (-2^{31},

.NET Core/.NET之Stream简介

匿名 (未验证) 提交于 2019-12-02 22:10:10
之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core/.NET的Streams 首先需要知道, System.IO命名空间是低级I/O功能的大本营. Stream的结构 装饰器 , 适配器. backing stores是让输入和输出发挥作用的端点, 例如文件或者网络连接. 就是下面任意一点或两点: 一个源, 从它这里字节可以被顺序的读取 一个目的地, 字节可以被连续的写入. 程序员可以通过Stream类来发挥backing store的作用. Stream类有一套方法, 可以进行读取, 写入, 定位等操作. 个数组不同的是, 数组是把所有的数据都一同放在了内存里, 而stream则是顺序的/连续的处理数据, 要么是一次处理一个字节, 要么是一次处理特定大小(不能太大, 可管理的范围内)的数据. 于是, stream可以用比较小的固定大小的内存来处理无论多大的backing store. 中间的那部分就是装饰器Stream. 它符合装饰模式. 从图中可以看到, Stream又分为两部分: Backing Store Streams: 硬连接到特定类型的backing store, 例如FileStream和NetworkStream Decorator Streams 装饰器Stream