java的stream让我灵光一现
说实话,我是一个到了退役也没有搞明白C++
的istream
和ostream
的。
刚开始的时候我把<iostream>
直接拆解成ios
和tream
真,果粉暴露
退役之后划水,倒是从java
当中发现了Stream
的奥秘。
说点题外话,很多人喜欢评价一个语言难不难。
其实这种说法本身就非常的外行。
语言似乎没有什么难不难之分,一个平常的io
或者是其他的基本运算真的也就算是学会这个语言了。
但是真正考验人的是那些库的使用,或者在python
里面叫做模块
,java
当中的api
但是又话说回来,如果真的要说一下哪个语言很难的话,我认为这个位置应该让给java
作为一位鲁莽的C++
人,开始撸Java
的代码的时候上来就是
public class xin
然后文件名是个j.java
,当场暴毙。
或者是终端指令上面写
java Main.class
JVM:你礼貌吗?
但是一个令oi
人发指的一个问题出现了。
\(\huge{\text{这玩意TM怎么输入???}}\)
这时候,一个很迷很迷的操作就出现了
Scanner scan = new Scanner(System.in)
一个标准输入的Scanner
就写好了。。。
为啥要这样,我也不知道
当我开始沾沾自喜的时候,java
又给我当头一棒
\(\huge{\text{这玩意文件TM怎么输入???}}\)
我靠,怎么办。
此时,我有一个大胆的想法。
把System.in
改成File.in
APJfengc:你礼貌吗???
然后就发现了今天要说的正题。
FileInputStream
这个东西是由InputStream
这个类继承(就忽略Object
类了)过来的,改写了read()
这时候我就整个懵逼了,InputStream
到底是个什么玩意。
这让我想到了我之前写快读模板的时候的xin_stream
,这显然是个盗版玩意儿。。。
又让我想到了某个人的书上的高精度模板。
里面的一句话
istream operator
oh,豁然开朗。
然而怎么用,在我家的32bit
远古电脑的加持下,intellij
根本下载不了,所以piao了个gitpod
先用着。
自动补全~~~
在我的理解里面,InputStream
实际上就是JVM
和文件或者标准输入建立了一个桥梁,之后我们再去想要输入的的话就直接请求Stream
。
所以原来这个就是\(\huge{\text{流}}\)
所以延伸一下,FileOutputStream
就是输出流了呗。
好了,你学会了1+1=2
了,我们来实战一下。
所以我们写个爬虫
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
public class xin
{
public static void main(String[] args) throws IOException,Exception
{
URL url = new URL("");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
final int sec = 1000;
con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36");
con.setReadTimeout(sec * 10);
con.connect();
InputStream is = con.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int maxn = 1024 * 10,len = 0;
byte[] buf = new byte[maxn];
while((len = is.read(buf)) != -1)
{
System.out.print(String.format("Get the mem of [ %3d MB ] [ %5d KB ]\n",len / 1024,len));
baos.write(buf, 0, len);
}
File filename = new File("pic.jpg");
FileOutputStream os = new FileOutputStream(filename);
os.write(baos.toByteArray());
os.close();
}
}
后来渐渐明白了之后,我发现,java
的库也就是api
是真的丰富。
加起来比小日子总人数还多。
里面还有很多很多开发者的api
。
如果想要使用再学习个maven
就行了。
所以你秃顶了没?
java的stream让我灵光一现的更多相关文章
- Java 8 Stream API详解--转
原文地址:http://blog.csdn.net/chszs/article/details/47038607 Java 8 Stream API详解 一.Stream API介绍 Java8引入了 ...
- java之stream(jdk8)
一.stream介绍 参考: Java 8 中的 Streams API 详解 Package java.util.stream Java8初体验(二)Stream语法详解 二.例子 im ...
- Java 8 Stream API Example Tutorial
Stream API Overview Before we look into Java 8 Stream API Examples, let’s see why it was required. S ...
- Java笔记:Java 流(Stream)、文件(File)和IO
更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...
- Java 8 Stream
1.关于Java8部分新特性介绍 Java8的新特性很多,在此就不一一介绍了,这里只说一下我自己在工作用用得比较多的几点: 1.1.Lambda表达式 Lambda允许把函数作为一个方法的参数(函数作 ...
- [零]java8 函数式编程入门官方文档中文版 java.util.stream 中文版 流处理的相关概念
前言 本文为java.util.stream 包文档的译文 极其个别部分可能为了更好理解,陈述略有改动,与原文几乎一致 原文可参考在线API文档 https://docs.oracle.com/jav ...
- java 11 Stream 加强
Stream 是 Java 8 中的新特性,Java 9 开始对 Stream 增加了以下 4 个新方法. 1) 增加单个参数构造方法,可为null Stream.ofNullable(null).c ...
- Java 8 新特性-菜鸟教程 (5) -Java 8 Stream
Java 8 Stream Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种 ...
- 关于java中Stream理解
关于java中Stream理解 Stream是什么 Stream:Java 8新增的接口,Stream可以认为是一个高级版本的Iterator.它代表着数据流,流中的数据元素的数量可以是有限的, 也可 ...
随机推荐
- CoaXPress 线缆和接插件的设计要求
本文的原理部分内容不仅适用于CoaXPress 协议,也同样适用于其它高速信号传输情形.在高速.低干扰信号传输时,线缆和接插件的选取是非常讲究的,我们在实际应用中经常会遇到线缆原因.阻抗匹配原因导致的 ...
- 花两万培训Java的三个同学,最后都怎么样了
仙路尽头谁为峰,学完Java学Python. 前言 对于IT行业的培训,例如Java.大数据.H5等等,我一直保持着肯定的态度. 因为当年大学时期的我,也差点去参加Java培训.一是因为那时钱包空空, ...
- 解决跨海高并发崩溃难题?so easy
近年来随着互联网强势的发展浪潮,越来越多的企业选择跨境出海,扩展海外市场.而想要在一个陌生市场最快速地吸引到用户,一定不能缺少的就是丰富多样的各类活动.然而活动在带来大流量的同时,也带来了一些问题,比 ...
- 2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景
作者:小林coding 计算机八股文网(操作系统.计算机网络.计算机组成.MySQL.Redis):https://xiaolincoding.com 大家好,我是小林. 我们都知道 Redis 提供 ...
- ExtJS 同行表单域对齐有误处理办法
更新记录 2022年5月29日 第一次编辑.使用的ExtJS版本:ExtJS 7.4 问题 原本都是显示正常的表单域,比如这些文本框.选择框都是正常. 在用户进行操作,然后显示验证提示后,明显出现了问 ...
- JS:||运算符
||逻辑运算符 ||这个符号在开发中 往往是优化的代码最常用的js符号: 当用||连接语句时,回将前后语句变为Boolean类型,再进行运算: 1.当||前面条件为false,不管后面是true/fa ...
- BUUCTF-被劫持的礼物
被劫持的礼物 看提示用wireshark打开,找登陆流量包,过滤http .login目录的 账号密码加一起MD5小写即可. 1d240aafe21a86afc11f38a45b541a49
- RPA应用场景-账套建立
所涉人工数量5操作频率 不定时 场景流程 1.客户按照项目开设专项财务管理,每个项目需要在初期建立自己的账套: 2.运营专员通过邮件发送账套建立申请: 3.根据申请进入金蝶运维后台,依据规则完成账套建 ...
- 用Python制作爆款视频,没想到吧?
前几天小编在抖音上刷到一个慢慢变老的视频,播放量居然有 30W+,当时就在想这视频 Python 可不可以做?经过一番搜索,小编找到了腾讯云的人脸年龄变化 API,上面介绍说只要用户上传一张人脸图片, ...
- Tapdata Cloud 2.1.4 来啦:数据连接又上新,PolarDB MySQL、轻流开始接入,可自动标记不支持的字段类型
需求持续更新,优化一刻不停--Tapdata Cloud 2.1.4 来啦! 最新发布的版本中,在新增数据连接之余,默认标记不支持同步的字段类型,避免因此影响任务的正常运行. 更新速览 ① 数 ...