字节数组

Java 字节流操作1

断了今生、忘了曾经 提交于 2019-12-02 05:26:53
 转自: https://www.cnblogs.com/yangming1996/p/6549800.html   在java中我们使用输入流来向一个字节序列对象中写入,使用输出流来向输出其内容。C语言中只使用一个File包处理一切文件操作,而在java中却有着60多种流类型,构成了整个流家族。看似庞大的体系结构,其实只要使用适合的方法将其分门别类,就显得清晰明了了。而我准备将其按照处理文件类型的不同,分为字节流类型和字符流类型。共两篇文章,本篇从字节流开始。主要包含以下内容: InputStream/OutPutStream - - -字节流基类 FileInputStream/FileOutputStream - - - - -处理文件类型 ByteArrayInputStream/ByteArrayOutputStream - - - -字节数组类型 DataInputStream/DataOutputStream - - - -装饰类 BufferedInputStream/BufferedOutputStream - - - -缓冲流 一、基类流 其实始终有人搞不清楚到底InputStream是读还是OutputStream是读。其实很简单就可以记住,你把你自己想象为是一个程序,InputStream对你来说是输入,也就是你要从某个地方读到自己这来

Java基础学习总结

半腔热情 提交于 2019-12-01 13:17:20
Java基础知识总结,在学习这一门语言新知识点新技术的过程中很枯燥很不容易很有压力,但它必须要经历这些过程,它就是要从认识、模仿、练习、总结、理解与掌握并实际运用的历程;废话少说,请看以下详细文档: 一、基本概念: 1、java语言特点:简单、面向对象、分布式、解析型、稳定、安全、结构中立、易移值、高性能、多线程、动态语言.... 2、java环境的搭建 cmd运行java文件 jdk与myeclipse的和Notepad++(超文本编辑器)安装 java编码规范介绍 myeclipse快捷键的使用 java数据类型 数据类型的转换 算数运算符 循环以及分支结构 3、JAVASE的架构:JVM(虚拟机)+JRE(java核心类库)+java编程工具=JDK 4、JDK、SDK、JRE、JVM概念详解: JDK:(Java 开发包) SDK(软件开发工具) JRE(其实就是java基础类+JVM) JVM(java虚拟机) 5、java语言平台版本: (1)、javaSE(标准版) 是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是 其他两者的基础,可以完成一些桌面应用程序的开发 (2)、javaME小型版(是为开发电子消费产品和嵌入式设备提供的解决方案) (3)、javaEE(是为开发企业环境下的应用程序提供的一套解决方案,该技术体系中包含的技 术如 Servlet

Java基础学习(九) - File类和IO流

自闭症网瘾萝莉.ら 提交于 2019-12-01 08:21:58
1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作 。 构造方法: public File(String pathname) :通过将给定的 路径名字符串 转换为抽象路径名来创建新的 File 实例。 public File(String parent, String child) :从 父路径名字符串和子路径名字符串 创建新的 File 实例。 public File(File parent, String child) :从 父抽象路径名和子路径名字符串 创建新的 File 实例。 常用方法: public String getAbsolutePath() :返回此 File 的绝对路径名字符串。 public String getPath() :将此 File 转换为路径名字符串。 public String getName() :返回由此 File 表示的文件或目录的名称。 public long length() :返回由此 File 表示的文件的长度。 public boolean exists() :此 File 表示的文件或目录是否实际存在。 public boolean isDirectory() :此 File 表示的是否为目录。 public boolean isFile() :此 File

程序的机器级表示

有些话、适合烂在心里 提交于 2019-12-01 07:28:24
机器级代码 在计算机中最终执行的都是机器代码,汇编代码、C 语言代码和高级语言的代码都需要转换成机器代码来执行。文章涉及的机器语言主要指 Intel IA32。 如下一段 C 语言代码: 1 int accum = 0; 2 3 int sum(int x, int y) 4 { 5 int t = x +y; 6 accum += t; 7 return ; 8 } 通过 gcc -m32 -O1 -o code.o -c code.c 生成二进制格式的目标代码文件 code.o,通过 hexdump 查看文件内容,在计算机中最终执行的字节指令是: 通过 objdump -d code.o 反汇编查看这段二进制对应的汇编内容: 这里的指令 55 对应了汇编代码 push %ebp,汇编代码非常接近于机器代码,它用可读性更好的文本表示处理器执行的指令。 除了像上面那样通过反汇编目标文件查看对应的汇编代码,还可以通过 gcc 查看 C 编译器产生的汇编代码,如下命令会产生一个汇编文件 code.s 。 # -m32 表示用 32 位模式编译 gcc -O1 -m32 -S code.c 数据格式 虽然 C 语言可以在存储器中声明和分配各种数据类型的对象,但是机器代码只是简单地将存储器看成是一个很大的、按字节寻址的数组。C 语言中的聚合数据类型,例如数组和结构

JAVA httpURLConnection curl

拟墨画扇 提交于 2019-12-01 07:11:23
// 文件路径 D:\ApacheServer\web_java\HelloWorld\src\com\test\TestHttpCurl.java package com.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.Map; import java.util.List; // PHP 作为接受请求端服务器 public class

IO流——各种流整理

跟風遠走 提交于 2019-11-30 23:45:22
最简单的,不加任何修饰的字节输入流 1 /* 2 * 最简单的,不加任何修饰的字节输入流 3 */ 4 import java.io.FileInputStream; 5 6 public class Demo_01 { 7 public static void main(String[] args) throws Exception { 8 FileInputStream file=new FileInputStream("D:\\myjavacode\\IO\\src\\abc.txt"); 9 int temp =-1; 10 while((temp=file.read())!=-1) { 11 System.out.println((char)temp); 12 } 13 file.close(); 14 } 15 } 用数组做缓冲容器 1 import java.io.FileInputStream; 2 3 /* 4 * 用数组做缓冲容器 5 */ 6 public class Demo_02 { 7 public static void main(String[] args) throws Exception { 8 FileInputStream file=new FileInputStream("D:\\myjavacode\\IO\\src\\abc.txt")

Java网络传输数据加密算法

爱⌒轻易说出口 提交于 2019-11-30 12:28:05
算法可逆,具有跨平台特性 import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * 功能描述 加密常用类 特性跨平台 */ public class EncryptUtil { // 密钥是16位长度的byte[]进行Base64转换后得到的字符串 // public static String key = "LmMGStGtOpF4xNyvYt54EQ=="; public static String key = "cc839cf9feba4ed7ba68064177a0b505"; /** * <li>方法名称:encrypt</li> * <li>加密方法 * * @param xmlStr * 需要加密的消息字符串 * @return 加密后的字符串 */

Netty源码分析 (九)----- 拆包器的奥秘

感情迁移 提交于 2019-11-30 02:47:03
Netty 的解码器有很多种,比如基于长度的,基于分割符的,私有协议的。但是,总体的思路都是一致的。 拆包思路:当数据满足了 解码条件时,将其拆开。放到数组。然后发送到业务 handler 处理。 半包思路: 当读取的数据不够时,先存起来,直到满足解码条件后,放进数组。送到业务 handler 处理。 拆包的原理 在没有netty的情况下,用户如果自己需要拆包,基本原理就是不断从TCP缓冲区中读取数据,每次读取完都需要判断是否是一个完整的数据包 1.如果当前读取的数据不足以拼接成一个完整的业务数据包,那就保留该数据,继续从tcp缓冲区中读取,直到得到一个完整的数据包 2.如果当前读到的数据加上已经读取的数据足够拼接成一个数据包,那就将已经读取的数据拼接上本次读取的数据,够成一个完整的业务数据包传递到业务逻辑,多余的数据仍然保留,以便和下次读到的数据尝试拼接 netty中拆包的基类 netty 中的拆包也是如上这个原理,在每个SocketChannel中会一个 pipeline ,pipeline 内部会加入解码器,解码器都继承基类 ByteToMessageDecoder,其 内部会有一个累加器,每次从当前SocketChannel读取到数据都会不断累加,然后尝试对累加到的数据进行拆包,拆成一个完整的业务数据包,下面我们先详细分析下这个类 看名字的意思是:将字节转换成消息的解码器

Go字节数组与字符串相互转换

大憨熊 提交于 2019-11-30 01:16:12
原文链接: https://juejin.im/post/5c8a4205e51d457fd67484b3 文章目录   Go字节数组与字符串相互转换     1.string 转为[]byte     2.byte转为string Go字节数组与字符串相互转换 string 不能直接和byte数组转换 string可以和byte的切片转换 1. string 转为[]byte var str string = "test" var data [] byte = [] byte(str) 复制代码 2. byte转为string var data [ 10] byte byte[ 0] = 'T' byte[ 1] = 'E' var str string = string(data[:]) 复制代码 转载于:https://juejin.im/post/5c8a4205e51d457fd67484b3 来源: https://www.cnblogs.com/tomhuang/p/11543368.html

字节跳动笔试题

核能气质少年 提交于 2019-11-29 17:13:19
今天做了字节跳动的笔试题,总得来讲题并不难,但是需要看懂题的意思,列出自己的思路再进行编程这样效率才高,之前面试腾讯暑期实习生就是太紧张了,大脑一片空白,也不知道先写写自己的思路,然后再进行编程,结果给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、获得用户输入的数组元素