发表于: 2016-10-26 22:31:51
0 2479
今天完成的事情:实现最简单的android端上传图片到后端
遇到的问题1.
android端如何上传图片给服务器,服务器如何接收并存储
今天在询问公司里的android端大神学习到的一种解决办法
android端将图片通过BASE64转码生成string字符串,后端使用BASE64将这个string解码为byte[],
最后将这个byte[]数组转换为file类之后写入指定目录完成上传
收获1。
关于BASE64:Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一
遇到的问题2.
什么是阻塞
阻塞:
https://www.zhihu.com/question/19732473
知乎这个问题的答案很有意思
阻塞就是我们主动执行一件事情的时候一直等待事情的返回结果,相当于这段时间内一直只做了这一件事情,不返回结果就一直等着。
相当于线程一直被占用?
那么read和write方法在执行的时候都将阻塞的意思是指执行read或者write的线程除非获取到了函数的返回结果,否则一直都在等待,
如果available()方法返回值大于0,意味着可以读取到内容,线程没有被占用,所以read()方法就不会阻塞,
int available ()
返回在不阻塞的情况下可获取的字节数(回忆一下,阻塞意味着当前线程将失去它对资源的占用)
这里需要再了解下多线程和cpu怎么处理任务
以下来自百度百科
阻塞调看返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,CPU不会给线程分配时间片,即线程暂停运行)。
函数只有在得到结果之后才会返回。
收获2
在java API中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称作输出流。
抽象类InputStream和OutputStream构成了输入/输出(i/o)层次结构的基础
1.1流
1.1.1读写字节
InputStream
abstract int read()
这个方法将读入一个字节,并返回读入的字节,或者在遇到输入源结尾时返回-1。
OutputStream
abstract void write(int b)
这个方法将可以向某个输出位置写入一个字节
read和write方法在执行时都将阻塞
评论