java的stream让我灵光一现

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

说实话,我是一个到了退役也没有搞明白C++istreamostream的。

刚开始的时候我把直接拆解成iostream

vYLOld.md.png

真,果粉暴露

退役之后划水,倒是从java当中发现了Stream的奥秘。

说点题外话,很多人喜欢评价一个语言难不难。

其实这种说法本身就非常的外行。

语言似乎没有什么难不难之分,一个平常的io或者是其他的基本运算真的也就算是学会这个语言了。

但是真正考验人的是那些库的使用,或者在python里面叫做模块,java当中的api

但是又话说回来,如果真的要说一下哪个语言很难的话,我认为这个位置应该让给java

vYLz0P.png

作为一位鲁莽的C++人,开始撸Java的代码的时候上来就是

public class xin

然后文件名是个j.java,当场暴毙。

或者是终端指令上面写

java Main.class

JVM:你礼貌吗?

但是一个令oi人发指的一个问题出现了。

这玩意TM怎么输入???这玩意TM怎么输入???\huge{\text{这玩意TM怎么输入???}}

这时候,一个很迷很迷的操作就出现了

Scanner scan = new Scanner(System.in)

一个标准输入的Scanner就写好了。。。

为啥要这样,我也不知道

当我开始沾沾自喜的时候,java又给我当头一棒

这玩意文件TM怎么输入???这玩意文件TM怎么输入???\huge{\text{这玩意文件TM怎么输入???}}

我靠,怎么办。

此时,我有一个大胆的想法。

vYOPfg.png

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就行了。

所以你秃顶了没?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值