电脑知识
小学生讲编程b站(适合小学生的编程课程)
2023-04-12 09:41

零基础初学java现在(强烈推荐b站韩顺平)跟着韩老师确实学到很多有用的东西,比如说代码规范,对于编程语言的理解,对于一个问题,怎样用Java来解决,培养了思维。老师讲的非常仔细,每个细节很细致,对于细节也会举例子、写代码,不遗漏任何知识点,可以培养我们对于Java语言的整体认知,真正掌握Java语言。我们都知道编程语言有相通之处。我在看课程的时候,会不断的将Java的知识点对比我之前学过的C、C++,进行对比,又会引发我对其他两门语言的思考,进而达到我对计算机编程语言的理解,更加热爱编程!

【编程语言界后浪们的现状】

前一段时间B站的《后浪》视频,可以说是火篇大江南北,华夏大地。同样在编程语言的圈子里面,也有很多后浪。

师哥就替大家来理一下,几门前后浪语言的现状。

TIOBE公布的最新编程语言排行榜来看,前几位分别是C,Java,Python,C++,C#。这种几种语言都是比较早期的经典编程语言。老古董们还不让位,后浪怎么办?

Go语言,堪称后浪中的明星。超轻量级线程,基于消息的架构,以及内置的多中常用库。Go语言,在很多方面或许已经超越C/C++。并且在云原生相关领域占有了一席之地,但是仍然难以撼动 C/C++ 语言在大量工业基础设施终端的地位。

Swift 是为数不多的成功把“前浪”拍在沙滩上的“后浪”。Swift拥有像 Objective-C、Rust、Haskell、Ruby、Python、C#等多种语言的优点。目前,Swift 几乎已经完全取代 Objective-C。

Rust是另外一种,想取代C/C++的语言。但是由于Rust语法比较奇特,学习上手难度比较大,目前来看Rust在程序员中的可接受程度还是比较低的。

总结起来看,很多老语言,多年的沉淀使它们函数库,IDE,编译器,社区等都非常成熟。新出语言,想要在短时间内,取代经典,成熟的老语言,还是比较困难。

来留言告诉我,你认为谁才是最好的语言?

#科技萌新成长营#

给定a,b两个文件,各存放50亿个URL,每个URL长度为1-255字节,内存限制是4G,请你找出a,b文件共同的URL,你的思路是怎样的?

=============================================

解析:

1.问题分析:

本题主要想针对面试者对海量文件处理的思路进行考核。对一些业务场景提出疑问,考验面试者处理问题的能力。

面试者应考虑到“分而治之”思想来处理文件。这个是大数据的核心思路。如果能想到这一点基本答对了40%了。

2.核心思路:

可以估计每个文件的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理,应考虑采取“分而治之”的方法。

遍历文件a,对每个URL求取hash(url)%1000,然后,根据所取得的值,将URL分别存储到1000个小文件(记为a0,a1,...,a999)中,这样每个小文件大约为300M。

遍历文件b,采取和a相同的方式,将URL分别存储到1000个小文件(记为b0,b1,...,b999)。这样处理后,所有可能相同的URL都在对应的小文件(a0vsb0,a1vsb1,...,a999vsb999)中,不对应的小文件不可能有相同的URL。然后,我们只要得出1000对小文件中相同的URL即可。

求每对小文件中相同的URL时,可以把其中一个小文件的URL存储到hash_set中。然后遍历另一个小文件的每个URL,看其是否在刚才构建的hash_set中,如果是,那么就是共同的URL,存到文件里面就可以了。

3.问题扩展

如果允许有一定的错误率,可以使用Bloom filter,4G内存大概可以表示340亿Bit。

将其中一个文件中的URL使用Bloom filter映射为这340亿Bit,然后,挨个读取另外一个文件的URL,检查是否与Bloom filter。

如果是,那么该URL应该是共同的URL(注意会有一定的错误率)。

4.结合项目中使用

这个算法可以在大数据离线统计的项目中,在读取HDFS上文件进行字数统计衍生的应用时(例如PV的统计)可以使用。

比如热门搜索,比如经常TopN分析,几乎能搞定大数据里70%的业务。

这种问题在大数据的面试中,无论是面试还是笔试,都会经常遇到,所以里面提到的思路,每个大数据的同学都应该掌握。

发表评论
0评