plainify

你真的需要Apple TV吗?不如自制一个Android TV!

没有一个树莓派能逃离吃灰的命运。 去年我写了一篇《树莓派家用指北》,介绍了树莓派是如何作为家庭服务器改善我的生活的,指路链接 👇 https://mp.weixin.qq.com/s/JZR2gFnIFoYDG7Z9HwsS3A 今天我们的主角依旧是我的那个树莓派,只是以另一种形式在我的家里发光发热——电视盒子。 看到这可能有人会好奇,这个树莓派用作电视盒子后,原先的家庭服务器怎么办?事实上我之所以把这个树莓派做成电视盒子,第一个原因是我搬家了,需要重新升级规划下家里的软件系统,第二是我用 NAS 替代了原先的树莓派用作家庭服务器(有机会的话以后讲一下)。 所以为了不让这个“理财产品”就这么吃灰下去,我一直积极探索可能的用处,终于,我发现了一个最适合他的场景——Android TV。 为什么会想到 Android TV? 搬家之后,新屋子里有一个电视 + 办宽带送的中国移动的电视盒子,第一次打开它的时候,卡顿的系统、上古的 UI、繁杂的广告让我不禁感叹,这真的是 2022 年的东西吗? 心想那要不买一个 Apple TV 吧?可再看看价格,不免囊中羞涩,算了算了,还是留点老婆本吧。况且 Apple TV 这么好的盒子用在一个只有 1080P 的电视里属实是有些浪费了。 既然用不了苹果的电视服务,用安卓的总可以吧。 于是我又去搜索了一些国内的电视盒子,什么小米的、当贝的、荣耀的,横向比较了一下,不是性能孱弱(通常都是 2GB+32GB)就是广告遍地,而且还不能看海外电视。当然了,最关键的是还要多花一笔钱,想了想还是放弃了。 既然国内的安卓盒子不行,为什么不试试原生的 Android TV 呢?2022 年了,原生的 Android TV 应该有不少的发展了吧。 抱着试一试的心态,我打开了 Android 开发者的官网,发现 2022 年的 Android TV 无论是 UI 还是体验,都比以前有了长足进步,现在就差一个载体,而我刚好有这个最好的载体——树莓派。 行动起来 本文不是一个教学贴,因此不会手把手的记录整个流程,简单介绍一些我在自制这一过程中的关键点以及可能出现的问题。参考的帖子:https://konstakang.com/devices/rpi4/LineageOS18-ATV/ 准备工作 你需要准备的东西有: 一个树莓派 3B/4B,至少有 2GB RAM,建议 32GB+ 的 SD 卡(我的是 8GB RAM + 256GB ROM) 一根 mini HDMI 转 HDMI/DP/VGA 数据线(根据你家的电视接口定) 树莓派风扇(如果有最好,毕竟是 24 小时不关机的,散热还是有必要的) 我选择的是 konstakang 提供的 LineageOS 18....

写在掘金的第100篇文章

2018 年 6 月 21 日,我在掘金发布了我的第一篇博客 👇 到今天这第 100 篇的时候,已经过去 2 年多了。这 2 年发生了好多好多事,毕业、保研、暴瘦、恋爱、分手、实习。如果说有什么事是没变的,那应该就是我一直在做技术分享。我知道我的阅历尚浅,所写文章的深度有限,我的文笔也不是很好,也写不出富有文藻的文章。所以我非常感谢这些关注我的,读我文章,给我点赞的好人们。如今我也算是半只脚迈入社会的人了,感触良多。正好借着这次掘金年中总结的征文好好总结下这半年来的所学所思所想(估计活动都要结束了吧)。 上图是我这两年在掘金的成绩,2 年时间才这么点东西我心里也是很惭愧的,今年上半年总共发过 20 篇文章(部分没有在掘金更新),平均一个月 3 篇左右。其中很大一部分还是收集的身边好友的实习经历,外加一些翻译的文章,这么一看真实产出就更少了。其实我的计划列表里堆积了很多要写的文章,但每每准备写点什么的时候又停下了手里的键盘,原因我自己心里也很清楚,这半年我的状态很差(好像从去年开始我的状态就不怎么好),经常性的失眠,新年伊始和女朋友分手,随即迎来新冠疫情,学校不开学了,还要忙着找实习。因为疫情的原因,各行各业都有所缩水,互联网行业也不例外,所幸我的运气还算可以,拿到了淘宝和字节的实习 offer。我找实习的经历之前有写过 👉搏一搏,单车变摩托,记录一下我的淘宝实习面试 之所以最后选择了来淘宝实习,一方面是因为阿里巴巴是我一直很想去的公司,另外一方面就是字节跳动的加班太严重了(虽然在国内 996 已成常态了)。 其实在找实习前,我是很迷茫的,我也不清楚自己应该要找什么样的岗位,当时的我做过深度学习的项目,会写一些网页,也会用 Python 的 Flask 和 Java 的 SpringBoot 做些后端项目,顺便也会写写 App 什么的。总的来说,我的技术栈是很混乱的,不过也可以理解,毕竟是学生,乱七八糟的什么都学了一些。所以这两家公司里,字节投的是客户端,淘宝投的是服务端。当时的想法也很简单,谁要我我就去哪搬砖。对于我们计算机专业的同学找实习,我之前写过一篇指北文章,有兴趣的朋友可以阅读参考下 👉计算机相关专业实习指北 选择合适的路 之前有人问过我,都读研了为什么还要做开发,这样一来,和本科生有什么区别? 真的是,我要是能从那些大佬手里抢过算法岗的 offer,我也去抢啊。 年年都说算法岗爆炸,今年更甚,有些大厂的算法岗投录比甚至已经 40:1 了,和你竞争的不光是优秀的硕士,更会有一些博士对你降维打击,人家拿出一两篇 A 类论文,怎么打? 再加上,我对自己的能力也很清楚,天赋不够,也不想用努力去凑,读博什么的对我来说可能更多是赌博,与其这样,不如早点找个开发的工作,拿个像样的薪资苟一波。 算法岗,相对普通开发来说,薪资高,加班少,给人的感觉就是每天看看论文,跑跑数据,掉的头发也不比普通程序员多,再加上某些“鄙视链”的存在,自然会更吸引人。可好的并不一定是适合你的,就像你喜欢的菇凉,不管再怎么优秀,三观不合,也是不合适的。所以选择一条适合自己职业发展的方向才是最重要的。 谈谈实习感受 2020 的开局非常魔幻,庆幸我的上半年还算平稳。前半部分在找实习、后半部分在实习。怎么找实习之前谈过了,这里就简单聊聊自己实习期间的感受。 对自己的代码负责 来阿里也已经 2 个多月了,需求没做几个,倒是体重增了几斤。实习前,听的最多的一句话就是“面试造航母,工作拧螺丝”,这话并不假,大多数人进来后都不可能让你从 0 开始做一个项目,更多的还是在已有项目的基础上加些功能,但并不能因为是拧螺丝的工作就可以掉以轻心。因为一颗马蹄钉输掉一场战争的例子比比皆是,入职培训的第一天就看到的非常非常多资损的例子,其实都是因为一些小失误导致的。更何况,拧螺丝也是一个积累的过程,如果连一颗小小的螺丝都拧不好,等真的有造航母的机会你也参与不了。 不想造航母的工程师不是好码农,不管是在哪工作,不求把代码写的像诗一样,但求不要把代码写的像 💩 一样。心中要牢记,对自己的代码负责。 持续学习的观念 活到老,学到老。考上了一个好大学,找到了一份好的工作,并不是结束,而是开始。 大家都知道,好的公司都更愿意收一些名校的学生,不单单是因为名校的学生能力更强一些,更多的是因为公司对于展示出高水平**“学习力”的员工有着巨大的需求,“学习力"是指快速成长和调整自身技能的渴望和能力,以保持在工作生涯中的称职状态。这是一种抽象的能力,所以如果想要快速的筛选出拥有这种抽象能力的人,最方便的就是看出身。这话说的很残忍,但也很现实。 那怎么样才能保持持续学习的状态呢?我的建议是持续接触新的事物**,只有当你不断接触新鲜事物,真正觉得自己无知的时候,才会永远保持一颗学习的心。这也是我为什么一直坚持做分享的原因。 工作与生活的协调 上面提到的持续学习的观点并不只是适用于工作中,生活中同样如此。除去技术,这个世界上有趣的东西还有很多。我们同样需要去学习、去探索。 只是,我们处在这个行业,有太多太多不得已,996 的口号喊了没多久,007 就已经开始流行。一天就 24 小时,工作的时间是有限的,压榨你的欲望是无限的。之前我写过一篇吐槽,算是小小的抗争吧 👉我不想加班,您看我还有机会吗? 阿里的加班是出了名的,哪怕实习生也不例外,所以为了避免在通勤上花费我太多时间,我租的房子离公司只有 10 分钟路程。幸运的是,公司给实习生提供了租房补贴。但即使是这样,等回到家收拾好也已经差不多快 11 点了。如果中途想跑跑步、看看书可能就更晚了。 其实我自己也没办法完全做好工作与生活的协调,毕竟下班都已经很晚了。周五不加班,周末双休已经是我最后的倔强。空闲时间我会出去吃点好吃的,健健身,发工资的那个周末还会出去旅旅游、拍拍照片。我觉得工作不只是为了工作,而是为了更好的生活,如果本末倒置是得不偿失的。当然,可能很多人会觉得我的这番言论还太过幼稚,我也知道很多人到中年会有不得已的“中年危机”,可对于我来说,这些到底还是太过遥远。我还不想未雨绸缪到让自己在本该快乐的年纪疲惫不堪。...

准备开一个新系列

该图片由Free-Photos在Pixabay上发布 我从今年年初正式运营我的公众号到现在也有小半年了,说来也惭愧,一个运营了将近半年的公众号到现在连1000人也没有,虽然我在去年年底给自己定的目标就是今年公众号人数达到1000人,但是这个数字和其他的公众号对比多少还是显得寒碜,期间我也考虑过怎么吸引读者,但是实在也没想出什么有效的方法。近期也发了一些不温不火的文章,但总是没办法保持持续更新,现在更是能做到一周一更就很不错了。一方面是因为自己最近这段时间毕业季确实太忙了,另一方面也是因为自己技术确实不强,很多时候也不知道可以写什么。我之前想过写系列文章,也做了尝试👉《AI 绘画系列》,虽然阅读量没有多少,但毕竟是自己写的,觉得只要自己努力去做了,收获多少会有一些的。 于是我又心血来潮,想开(挖)一个新的系列(坑)了。我决定在公众号上发布Leetcode的题解(虽然我知道有很多人的博客里面都有)。我在今年年初立了一个flag,就是在Leetcode上刷满400题,前段时间因为要做毕业设计和写毕业论文耽搁了一阵,前天重新登录网站发现自己才做了200多道。 做题期间我也整理了一些题解,想着这些题解既然搁着也是搁着,倒不如拿出来放进公众号里,当然我更希望大家也可以把你们题解分享出来,说不定哪天有兴趣了,或者业务代码写的太累了,花个十来分钟做做算法题也未尝不可。 不知道是不是因为我的公众号没有文章留言功能,总觉得和读者之间的互动性几乎为0,越来越觉得自己的公众号变成了"自嗨号"。我起初做这个公众号的目的就是希望和大家一起交流进步,然而现在却事与愿违,所以在这篇文章末尾我会发起一个关于是否建读者群的投票,希望大家可以多多支持🙏

分享一些实用的免费在线网站

该图片由Coffee Bean在Pixabay上发布 受到公众号「曾少贤」的启发,自己也整理了一些我在生活中经常使用到的在线网站,涉及的领域有图片、设计、文档、编程、学习等方面,这里分享出来,希望可以对大家所有帮助。话不多说,我们开始吧 😄 免费图片库 Pixabay 地址: https://pixabay.com/zh/ 首当其冲的自然是 Pixabay 了,我几乎每篇文章的题图都是在这个网站发现的。这是一个免费的图片网站,图片质量高,数量多,种类繁杂,最最关键的是它免费。 在线抠图/换背景 地址: https://www.gaoding.com/koutu 有时候我们需要将图片的设置成透明的,虽然使用 PS 等工具可以实现,但是操作起来总是有些难度,无意中发现这个网站,只需画几笔,3 秒就能稿定透明背景。 在线图片压缩网站 地址: https://zhitu.isux.us/ 很多人都会推荐 TinyPNG,但是 TinyPNG 的限制太多了,使用起来很 XX,直到我发现了「智图」,可以选择图片格式和压缩品质。 在线文件转换网站 地址: https://www.aconvert.com/cn/ 我们经常会碰到转换文件的需求,很多人会在电脑上下载一个格式工厂之类的软件,然而一个网站就可以了。Aconvert.com 可以在线转换各类PDF,文档,电子书,图像,图标,视频,音频和压缩文件,非常方便。 微信公众号格式化工具 地址: http://blog.didispace.com/tools/online-markdown/ 公众号排版是一个很头疼的事情,尤其对我这样一个直男来说,排一次版的时间可能跟写一篇文章的时间差不多,好在我发现了这个工具,可以轻松的将 Markdown 文件转换成微信公众号可用的 HTML 格式。对于比较懒的公众号主来说是不可或缺的神器。 绿豆堂中文字体免费下载 地址: http://www.lvdoutang.com/zh/0/0/1/1.html 在开发过程中,我们可能会使用到多种字体,仅靠系统自带的一些字体无法满足我们的需求,这时候就需要寻找一些字体了,这个网站有很多好看的免费字体,足够日常使用了。 草料二维码 地址: https://cli.im/url 这个就不多说了,生成二维码用的。 二维码梦工厂 地址: http://qrdream.com/ 单说二维码肯定是不够的,现在的年轻人都追求二维码的美观,仅靠草料二维码内置的美化器是不够的,这里推荐一个「二维码梦工厂」,里面有很多非常好看的二维码模版可供选择。 在线 Logo 制作器 地址: https://www.designevo.com/ 对于没有学过设计的程序员来说,如何给自己的个人网站(博客)上添加一个好看的 Logo 是一件很困难的事情,然而有了这个网站后我们就可以自己作出一个好看的 Logo 了。我相信很多人都用过那些所谓的”免费“Logo 生成器,在花了很长时间制作好 Logo 准备下载的时候网站却提示你要付费,让你顿时有一种受到欺骗的感觉。好在这个网站在做好 Logo 后会给你几个选择,如果你想要高质量的 Logo,需要付费购买。如果你对 Logo 的质量要求不高,这个网站还是个很不错的选择。...

刚上大学?过来人给你提些建议

本文是我大四保研之后学校老师让我去给当时的新生做的分享的内容,偏口语化,现在过去也有将近一年时间了,有些学弟学妹给我发消息说很感谢当时的分享,如今正好又到了新生入学的时候,我也开启了新的征程,就当是过来人给的建议了。以下是当时的分享内容。 很高兴收到王老师的邀请来到这和学弟学妹做一个有关自己这几年大学经历的分享。首先我先自我介绍下,我叫XXX,来自15级软件工程。 不知不觉你们都已经在大学度过3个多月了,不知道你们现在对大学都有一个什么样的认识,我当时来的时候特别的迷茫,因为刚从高三那个紧绷的环境过来,宛如一匹脱缰的野马,自由但是没有方向,说实话我很羡慕你们在这个阶段可以有学长和学姐引导,我刚来的时候只有一个告诉我上大学只要不挂科就ok的学长,而且当时我还奉为人生信条。 今天我来不是跟你们说要你们好好学习之类的,因为那没什么用,自助者天助,我今天来是想把我从入学到现在所遇到的一些困扰来和你们分享,相信对你们应该会有所帮助。 第一,大学的目的是什么? 我问问你们,你们觉得大学的目的是什么?我以一个同龄人且是过来人的身份告诉你们,在我眼里,大学4年,如果你能明白自己就行想要怎么活,你的人生想怎么过,你最想要得到的是什么,就足够了。 有的人大学不学习只玩游戏,有的人大学不玩游戏只学习,有的人大学什么不做只恋爱,有的人大学就要找个白金男。 很正常,你可以说玩游戏是浪费生命怎么的,也可以觉得天天逃课的都是傻逼,也可以觉得去学生会做事的就是浪费时间。如果你就是喜欢玩游戏,并且认为自己能够为止奋斗一生那么就去做吧,其他人怎么评论又如何,难道只有拿奖学金是牛逼的? 如果你认为人生就应该平平淡淡娶妻生子 ,乖乖念书然后去找工作一步一步过有什么不好?比起那些会为玩游戏而抛弃一切的我更鄙视那些什么都想做什么都要做,结果机会给他了又开始说这个不会那个不会的人。找到那个最美的自己,然后为之不断奋斗,这是我在大学的最大体会。 第二,你对学校失望吗? 扪心自问下,你们来到这也有3个月了,你们对这个学校失望吗?我刚来的时候对这个学校真的是非常非常失望,论面积不如我的高中;论地理位置,夹在南京和扬州中间,尴尬;那图书馆,随便找个别人家的大学都比我们气派,就更别说学校的食堂、宿舍了。你问我失不失望,失望呀,可是我不能对我自己失望啊。一只站在树上的鸟儿,从来不会害怕树枝断裂,因为它相信的不是树枝,而是它自己的翅膀。与其每天担心未来,不如努力现在。自己努力做到最好,那么人与环境均为一流。 第三,我需要合群吗? 我需要合群吗?这个问题我在大一的时候反复的问我自己,我需要合群吗?那个时候的我为了合群,我积极参加了社团活动,去不断的认识新的人,这种状态我一直持续到了大二下,当然我并不是说参加活动,广泛交友是坏事,只是后来我在想,这是我想要的吗?人们往往把合群看作一种能力,却忽略了独处也是一种能力,并且在一定意义上是比合群更为重要的一种能力。低质量的社交不如高质量的独处。为何会有芸芸众生这个词,说到底就是因为群体的智商往往都是低下的。现在回头看看我独来独往的大三一年,真的觉得没必要为了随大流在不重要的人身上浪费时间。君子之交淡如水,用陪伴、时间和玩乐次数磨出来的朋友大多是酒肉朋友,配得上知音二字的朋友不会拖着你浪费时间。如果不是本身性格孤僻封闭,而是对生活有明确目标、计划和安排的话,不要因为旁人或集体打乱自己的节奏,想想是理想重要还是所谓的“合群”重要。朝夕相处共同生活不等于真正的朋友,真正的朋友就算远在天边,很久没有联系,他们也永远在那里。想要学会与别人相处,就要先学会和自己相处。 第四,为了不让我的大学荒废,我应该做什么? 其实这个问题你们去知乎上搜索是会有很多回答的,你们可以自己结束之后去搜搜,我来这并不是来教育你们的,更不是来教你如何成为一个优秀的大学生,因为我自认我并不优秀,我只想以一个同龄人以及过来人的经验告诉你们,大学期间,需要做些什么。 明确自己想要的是什么? 刚进大学,你们很多人都才从紧张繁重的高中学习跳出来,带着一些稚嫩的孩子气,那种初生牛犊的韧劲儿,无论对什么都充满着无限的好奇和憧憬,你们这个时候就像一张白纸一样,可以任意的去涂鸦出属于你自己的那抹斑斓,我认为大一就应该是一个不断尝试的时候,这个时期我建议你们尽可能多的尝试,不要有任何的顾忌与犹豫,敢于犯错,因为什么都才刚刚拉开序幕。我为什么说让你们多去试试呢,因为你们在尝试的时候是对自己的一个重新探索的过程,以前的你们,只有一个目标,那就是高考。但是现在正值青春年少,为何不多去尝试一些之前没有接触的新鲜事物,只有你积极的探索了之后你才知道你自己想要的是什么,而且越早行动,就越早知道自己的目标,就可以更好的去为了那个目标去奋斗了。 为了自己的追求,全力以赴 当然每个人想要的可能都不太一样,比如说我想在大学谈个恋爱,我想认识一帮好基友,我想成为一个更好的人,等等等等。想要的东西不分大小,不分主次,更重要的是你愿不愿意为了你想要的去全力以赴,这就是我想说的第二点。假如说,你喜欢一个女孩子,但是自己不敢去追求,那你只能眼看着她被别的男生追走,又或者你想认识一帮好基友,但是自己整天在宿舍打游戏,如果是这样的话,想要的再多又有什么用呢?重要的是,你愿不愿意为了你想要的全力以赴。也许你付出了不一定会有结果,但是你不付出,就一定没结果。 永远不要在学习上懈怠 我相信在座的很多人都听别人说过到了大学就轻松了,只要考试不挂科就可以了,但是真的是这样的吗?拿我自己举例吧,我大一大二两年就是以60分万岁为信条的,这样的后果就是我大一大二的成绩一般,大三一年为了保研花在争取加分项上的精力要比其他保研的人多很多。你们可以想象下我大三一年,我要忙学生会的工作,社联和本创都是我负责,还要学技术,做项目,参加比赛,写论文,复习考试,后期还要准备简历,准备复试,联系学校和导师。大三那一年我几乎没有早于凌晨一点半睡觉的。现在看来,我的努力都有了回报,但是回头看看,如果我大一和大二的时候不那么放纵自己,多花点时间在学习上,我的大三就可以稍微轻松点不是吗?所以如果在座的各位和我当时一样有60分万岁的想法,我劝你们趁早结束这种想法,因为出来混迟早是要还的,你今天欠下的东西,未来必然会以某种你不喜欢的形式出现。 结识一些志同道合的朋友 刚才我在合群的问题上提到了享受一个人的乐趣,但并不代表优秀的社交圈就没有用处。见贤思齐焉,见不贤而内自省也。一个好的交际圈真的很重要,我很庆幸我在大学期间认识了很多优秀的人。举个例子,我有一个学长叫XXX,保研浙大的,楼下的海报上还有他的名字,我大一的时候经常跟在他后面写代码的,关系还算不错。大二快结束的时候,他拜托我帮他打印一份文件给老师签字,因为那个时候他已经在东区了,我收到文件打开之后发现是他申请浙江大学夏令营的导师推荐信和他的个人简历,真的,我当时很震惊,我们学校的学生竟然可以申请浙江大学的研究生,而且他和我说他已经和浙大那边的教授联系好了对面也愿意接收了。我相信在座的各位每个人都跟我一样,心中都有一个名校梦,这件事情对我触动最大的地方就是他让我的名校梦死灰复燃了,那一瞬间我觉得我这辈子还是有机会去我想去的大学,也是从那时候开始,我才意识到接下来的一年我该做什么了。现在看来如果不是他让我帮的那个忙,我可能后来也不会有去南大的想法了。当然还有和我一起开发果核的那两个人,我很庆幸可以和他们一起把我们的想法付诸实践。 不要害怕展示自己 如果你对自己的实力表示自信,那就不要错过展示自己的机会。举个例子,今年7、8月是保研的夏令营期间,那段时间全国各个想保研的学生都会给名校投递简历,我也不例外。但是南大、复旦这样的名校的计算机类的专业基本上是不会在夏令营期间收我们这样学校的学生的,所以在我被刷了之后心里很不平衡,因为我自认我的能力并不比那些211/985的人差,于是我就在7月底,南大的夏令营已经结束之后,自己联系了导师并且私下去和导师面谈,也正是那次的面谈,导师决定给我一个机会参加南大9月的复试,后来复试通过我也就被录取了。试想一下,如果7月底我没有主动和老师联系然后去面谈,那我仍然会因为本科学校的原因被拒绝,然后再一次让我的名校梦化为泡影。 谈一场单纯并且完整的恋爱 大学里的爱情,相比高中更加成熟,相比工作以后更加单纯。你们的爱情可以不用担心每个月的房租、不用去管未来会是什么样子。通过大学这个平台,相识、相知、相爱,从第一次见面,第一次约会吃饭、第一次一起上自习、第一次一起翘课去看电影、为了爱情而疯狂,尽管很多人批判现在大学的恋情已经变了味,但我仍然相信,大部分情况下,大学生的爱情是澄澈而纯洁的。 在恋爱中,两个人相互交换彼此的思想,学会为对方考虑,学会担当和责任感,两个人之间的交流、争吵、矛盾、谅解,也是一个重新认识自己并让自己获得成长的过程。更何况,大家以后基本都是做IT的,工作之后就很难有机会接触异性了不是吗? 世界那么大,多出去看看 上大学的时候,你有大把大把的课外时间,还有着学生证这样一件神器,在很多旅游景点,可以享受半价的优惠。这样一件利器不用简直太可惜了,况且工作以后你需要考虑生活、家庭、工作,很难像大学那样有一次纯粹的旅游。 多出去看看世界,去自己喜欢的的地方,感受每个地方不同的历史和文化,不仅把它当作是旅游,同时也是提升自己见识的好机会。俗话说得好,“读万卷书,不如行万里路”,这个道理是没毛病的。 最后 最后,希望各位学弟学妹们在不影响自身学业的情况下,可以为了自己想做的事全力以赴,让自己的大学不留下遗憾。

plainify

刚完一波蚂蚁金服的面试后,他说他累了

这是「跟我来面试」系列的第二篇,被面试人是我隔壁宿舍的好友,近期刚刚结束了蚂蚁金服的三轮技术面试,面完之后他跟我说很累,直言不想再体验了。 因为学院的安排,我们被要求暑期实习,近期也有各种内推信息发在群里,和大多数人边面试边复习不同,我的这位好友在我们疯狂投简历的时候就一直踏踏实实准备,因为我们会在自己的小群里分享自己的面试经过,他就一直潜水,直到有一天突然告诉我们蚂蚁金服的 hr 说他通过了我们才知道他已经成功上岸了。这种人,我们一般只能用五个字来形容:闷声发大财。 他的面试经历我仔细看了看,一面重点在基础知识的考查,二面重点在项目以及对框架的使用与理解上,三面压力面,是很熟悉的套路,考察的知识点也是经常问到的,具有一定的参考价值,接下来我们就来看看他的这几轮面试经历吧。 一面 笔试题很简单,多线程循环打印 1-100 奇偶数 你觉得项目中用了 MQ 给你带了什么好处,设计初衷是什么?会带来什么缺点嘛?(项目针对性比较强,不细说) 在网页键入 taobao.com,到返回一个页面,这期间都发生了什么? 你说到了 session 和 cookie,这两者有什么区别,应用场景是啥? 返回界面的文字,图片,链接,你觉得是从哪里来的,或者说储存在哪里? 描述一下 TCP 三次握手,这期间可以携带数据吗?携带了数据会造成什么后果? 描述一下四次分手,第二次和第三次中间处于何种状态? 说一下 object 类的所有方法以及他们的功能(真的是所有:clone,notify/all,finalize,wait,hashcode,equals,tostring,getclass) 抽象类和接口有什么区别?说一下你的个人理解。 详细说一下 final 关键字,修饰变量,方法,类都有什么不同?能想到什么具体应用场景吗? 说一下 equals 方法,hashmap 的底层,跟 hashtable,concurrentHashMap 都什么区别 静态分派和动态分派的区别?具体应用场景? 1.8concurrentHashMap 有什么变化,优化的意义在哪? hashmap 除了结点数大于 8,还有什么情况会树化(这个我没想出来,也可能是我没听清楚) hashcode 方法有什么特点?hashset 的底层是如何实现的?为什么用 hashmap? 说说 JVM 内存结构(这里要问清楚是 JMM 还是运行时常量池) 你刚说 1.8 后方法区移动到内存中变成元空间,为什么要移过去呢? 那为什么常量池没有移动到内存,而是转移到堆了呢? 最后一个问题,说一下线程池的饱和策略 因为项目中使用到了 MQ,所以就顺便问了下,好在并没有提问太过深入的东西,随后问题几乎每个都是高频考点,2、4、5 主要考察计算机网络中的通信过程,例如三次握手/四次挥手,7-14 考察 Java 基础,随后就是和 JVM 以及多线程有关的问题了。有需要的小伙伴可以参考这个进行针对性的复习。 二面 从项目启动到现在,介绍一下你的工作以及遇到的难点,怎么解决的? 讲一下微服务架构都有哪些模块?他们是怎么一起工作的? 让你实现一个 eureka,你会怎么实现? 用户认证,为什么要用 JWT,而没用 session-cookie,应用场景?优劣?加密用的是什么算法? 为什么使用 rabbitMQ,没用别的 mq? 说一说你项目应用了什么设计模式?适配器模式什么应用场景? 让你实现 AOP,你怎么实现? spring 事务有了解吗?是如何传播的?在你项目里的实际业务中是如何传播的? 例如有 ABC 三个事务,分别原子性,整体也原子性,A 事务出错回滚,整体事务也会回滚,你会怎么设计呢? ZooKeeper 有了解吗?redis 和 Mencache 的选型问题?...

plainify

利用 Docker 安装 Hadoop 集群并通过 Java API 访问 HDFS

前言 最近刚好在学习 Hadoop,在安装过程中遇到了一些小麻烦,正好将此次过程记录并分享出来,希望能对准备学习本块内容的读者们有所帮助。本次操作在 Ubuntu 中完成,如何安装 Ubuntu 本文不再赘述。 本文所涉及到的代码及配置文件可在微信公众号「01 二进制」后台回复「hadoop」获取。 在 Ubuntu 中安装配置 Docker 使用官方安装脚本自动安装 安装命令如下: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 也可以使用国内 daocloud 一键安装命令: curl -sSL https://get.daocloud.io/docker | sh Docker 镜像加速 之后我们会利用 docker 拉取一些镜像,国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。这里以 ubuntu 系统为例,我们可以通过修改 daemon 配置文件/etc/docker/daemon.json来使用加速器 { "registry-mirrors": ["https://hub-mirror.c.163.com"] } 然后执行以下命令重启 docker 服务即可 sudo systemctl daemon-reload sudo systemctl restart docker Hadoop 集群安装 1. 拉取 docker 镜像 sudo docker pull kiwenlau/hadoop:1.0 2....

利用 Python 破解 ZIP 或 RAR 文件密码

我们经常会从网络上下载一些带密码的压缩包,想要获取里面的内容,往往就要给提供商支付一些费用。想要白嫖其中的内容,常见的做法是百度搜索一些压缩包密码破解软件,但后果相信体验过的人都知道。本文将会利用 Python 破解压缩包的密码,这里以 ZIP/RAR 为例。 本文源码可在微信公众号「01 二进制」后台留言「破解压缩包」获得 破解原理 其实原理很简单,一句话概括就是「大力出奇迹」,Python 有两个压缩文件库:zipfile 和 rarfile,这两个库提供的解压缩方法 extractall() 可以指定密码,这样的话首先生成一个密码字典(手动或用程序),然后依次尝试其中的密码,如果能够正常解压缩则表示密码正确。 实验环境 本文采取的虚拟环境为 Pipenv,有关 Pipenv 的详细介绍可以参考我的这篇文章 👉《Python 管理哪家强?》 库 zipfile:Python 标准库,使用时直接导入即可 rarfile:Python 第三方库,使用时需要安装,API 文档(https://rarfile.readthedocs.io/en/latest/api.html) 利用 Pipenv 安装 rarfile pipenv install rarfile 最后,再将一个带有密码的压缩包放入实验环境中即可。 编码 知道原理后,编码就会非常简单了 准备密码本 「密码本」其实就是一个包含了所有可能密码的文件,用户可以手动录入,也可以用程序录入。文末还会有一个介绍。 读取压缩文件 # 根据文件扩展名,使用不同的库 if filename.endswith('.zip'): fp = zipfile.ZipFile(filename) elif filename.endswith('.rar'): fp = rarfile.RarFile(filename) 尝试解压 先尝试不用密码解压缩,如果成功则表示压缩文件没有密码 fp.extractall(desPath) fp.close() print('No password') return 暴力破解 try: # 读取密码本文件 fpPwd = open('pwd....

利用Hexo搭建一个个人博客网站

什么是Hexo Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。看到这里请不要被「标记」、「语言」所迷惑,Markdown 的语法十分简单。常用的标记符号也不超过十个,这种相对于更为复杂的 HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。 推荐阅读Markdown——入门指南 如何安装Hexo 安装 Hexo 只需几分钟时间,若您在安装过程中遇到问题或无法找到解决方式,请在微信内回复,我们会尽力解决您的问题。 安装前提(windows环境下) 安装 Hexo 相当简单。然而在安装前,您必须检查电脑中是否已安装下列应用程序: node.js git 如果您的电脑中已经安装上述必备程序,那么恭喜您!接下来只需要使用 npm 即可完成 Hexo 的安装。 npm install -g hexo-cli 如果您的电脑中尚未安装所需要的程序,请参考以下安装链接指示完成安装。 Node.js安装及环境配置之Windows篇 - 简书 Git教程 - 廖雪峰的官方网站 安装Hexo 所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。 npm 通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。 npm官网 安装命令 npm install -g hexo-cli 如何利用Hexo建站 安装 Hexo 完成后,请执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件。 hexo init <folder> cd <folder> npm install 就是你建博客的根目录...

372 words 2 min

利用Python让你的命令行像坤坤一样会打篮球

该图片由F. Muhammad在Pixabay上发布 完整代码可在公众号:「01二进制」后台回复:「蔡xx篮球」获取 前言 承接上文,作为一个经常逛b站的肥宅,近期b站上除了流行"品如”素材的视频,更多的莫过于蔡xx打球视频的了,有模仿的,有对比的,有手绘的,更过分的是竟然有人在命令行输出了他的打球视频,地址在:https://www.bilibili.com/video/av47306085?from=search&seid=11282891256876390136,不过视频中的动画好像是用某个软件生成的txt文件,看到这我就在想既然都可以用txt输出了,为啥不能用python在命令行中输出呢?说到这我便开始搜索资料,然后制作了下面一段视频: 代码是我在网上查询资料后自己修改的,本着学习和分享的精神,今天我来分享下上面这段视频的制作过程。 原理 既然要开始做东西,首要的问题就是想好要怎么做,大家都知道视频是由一系列图片一帧一帧组成的,因此视频转字符动画最基本的便是图片转字符画。 在这里简单的说一下图片转字符画的原理:首先将图片转为灰度图,每个像素都只有亮度信息(用 0~255 表示)。然后我们构建一个有限字符集合,其中的每一个字符都与一段亮度范围对应,我们便可以根据此对应关系以及像素的亮度信息把每一个像素用对应的字符表示,这样字符画就形成了。 Tips:如果对"灰度图像"这个概念不太理解的可以查阅百度百科 计算一张图片的灰度图像的方法如下(来自百度百科): 所以我们要做的就只是让字符画在命令行里面动起来就可以了。 Tips:图片转字符画可以参考:https://www.shiyanlou.com/courses/370 准备 环境和工具: vscode Mac OS python 3.7 这次实验使用到的核心的库是opencv-python,关于opencv上篇文章已经简单介绍过了,这里不多阐述了,只要知道这是一个和计算机视觉有关的库就可以了。 Tips:这里分享一个我觉得还不错的opencv-python的中文文档:https://www.kancloud.cn/aollo/aolloopencv/269602 实验 实验开始前我们需要安装opencv-python的包: pip install opencv-python 读取视频 def genCharVideo(self, filepath): self.charVideo = [] # 用opencv读取视频 cap = cv2.VideoCapture(filepath) self.timeInterval = round(1 / cap.get(5), 3) nf = int(cap.get(7)) print('Generate char video, please wait...') for i in pyprind....