本次夏令营知了堂项目经理以B站为原型,带着大家熟悉了软件的开发流程及还原了部分功能模块。现在就将B站功能架构图及前后端技术栈给大家。同时从以B站技术为例给大家分析作为应届毕业生,面对秋季校招时必须要掌握的核心技术知识模块。

图一 B站功能架构图

前端篇

前端在前几年的发展过程基本上是一个工程化的过程,框架和工程化工具层出不穷。很多人都在追逐框架的道路上越来越累。这两年,基本趋于平静,框架方面也形成了三足鼎立的局面,各个框架也在相互借鉴取长补短。那就回归本质,想要从事前端这个职业(或是长远发展),还是要注重知识的系统性和基础的扎实性。

通过企业的用人需求可以看出,这两年对于前端人才的技术的要求变化还是挺大,就拿应届生(成都地区)来说相较于2017年之前,对于技术的要求都在不断升级,在要求技术栈全面性的同时更加看重基础的扎实程度。

下图是某公司的前端应届生的招聘要求,可以看出任职资格上基本涵盖了前端所需技术栈。

那么反推作为应届生的我们在简历上的准备,我们要基本符合企业用人需求,大概可以以下从2个方面去准备。

一:技术栈

1. HTML+CSS+JS+bootstrap 网页的制作(熟练)

2. ECMA5、ES6、JQ 、面向对象OOP、闭包等ES高级特性

3. Nodejs+数据库(mongoDB/mysql)服务端编程

4. Vue/react/angular至少熟悉一种、小程序

5. Webpack工程化项目搭建

6. Git、svn等协同开发

二:项目方面

作为应届生至少有2个项目能写在简历里面。并且写清楚项目功能、项目职责、所用技术栈。所以我们最好能动手分析并且用当下流行技术栈实现一个项目。

在这以还原B站(哔哩哔哩)为例,去分析一下它的功能和技术,B站作为一个大型弹幕视频网站,从功能而言,主要就是视频和弹幕,其中还有广告,会员,创作等功能,具体的功能组成可以参考(图一 B站功能架构图)。

在这我们从以下几个方面来分析,并结合目前互联网公司的项目所采用的技术架构来做一些讨论。

因为要完成一个项目,首先要了解及熟悉它的需求。

1、产品性质 B站是一个平台类产品(b2b2c),b端对应up主,主要功能就是上传。c端对应观众,就是观看视频。

2、核心功能 视频,包含直播+社交,在这我们要了解的技术就是视频的上传, 需要涉及到:

(1) 前端文件上传,断点续传,

(2) 流媒体播放,本地缓存,

(3) 视频播放器的编写,

(4) 核心功能——弹幕等功能

3、性能/安全相对于B站这种大型视频网站,肯定需要考虑性能方面的优化,从以下几个点我们可以思考对于技术的选择。

(1) 项目框架本身:数据量特别大 而页面本身加载不卡顿,且首页打开时间应该在3秒之内,所以选择了目前流行的vue作为前端项目架构,它就是利用MVVM模式结合虚拟DOM等技术来解决数据渲染的性能相关问题。

(2) 多人同时弹幕操作,而视频或DOM不卡顿。这里会涉及到算法相关技术

(3) 同时在线人数高 同时播放引起的高并发的问题

当然这里面要完整实现B站相关前端功能,需要从最基础的网页布局到页面懒加载、模块化编程,前端数据分片加载(chunk)等技术的运用,在学习过程中我们应该明白我们的目的是什么,然后结合项目去实战,还有就是要学会分析项目的业务及功能,从而结合技术去综合锻炼。

后端篇

B站作为一个大型弹幕视频网站,从功能而言,主要就是视频和弹幕,其中还有广告,会员,创作等功能,本次我们主要从视频和弹幕的技术为例,来对目前互联网中项目架构的公用技术来做一些剖析。

视频模块B站视频技术体系图

视频上传其实是一个很复杂的技术,但是归根到底其实就是对于数据流的处理,从最基本的技术开始,其实就是IO技术和多线程技术的使用,服务器接收到数据流进行处理,在这个过程中通过多线程等技术来提升文件上传速度;

用户观看视频也是如此,是一个基于数据流下载的问题;但是在整个这个过程中,涉及到真正后台实现要考虑的问题就很多了,比如:

l 内容如何快速上传

l 如何存储海量内容

l 如何对海量内容进行处理

l 如何应对大量并发内容访问

l ......

以上其实也就是我们后台技术的深入以及一些架构演变,这些对应的内容也是很多互联网技术架构中要考虑的技术;

内容如何上传:会考虑到就近上传,中间会涉及到DNS等技术,上传的是需要进行格式转码,加密转码等,包括断点续传,会涉及到算法等相关技术;

海量内容的存储:在整个后台架构中就会涉及到数据库系统和文件系统的处理,包括使用我们分布式存储技术,从mongoDB到fastDFS,再到结合hadoop系统的使用;

海量内容的处理:包括CDN内容的分发,多服务器负载均衡再到搜索引擎elasticsearch的使用等,而大量并发内容的访问,从服务分离到缓存等的使用,以上这些技术都是我们在学习Java后台技术中会涉及的内容。

当然,有些技术是掌握,比如向mongoDB,fastDFS,elasticsearch等 ,是各大系统中都会使用的,应用起来也相对简单;有些技术是了解,因为需要真实生产环境大量数据的实践下掌握真正的调优配置以及原理,比如真正的hadoop大数据生态的使用,需要在工作中积累和更加的深入。

弹幕系统模块

B站的弹幕文化是B站区别于其他视频网站的重要特征,可以想象,对于热点视频,对于并发产生的弹幕的技术支撑也是一个很复杂的系统,B站自己有一套自己优化的弹幕系统,我们从后台技术的角度来理解,其实弹幕就是一个高并发实时消息系统,涉及到大量并发消息的有序接收后的实时推送,这块其实我们在进行Java后台学习过程中,会有类似的技术体系涉及:kafka消息队列,RabbitMQ消息中间件,都是实现高并发实时消息系统的一些重要技术。

所以我们以视频和弹幕为例,其实可以看到,Java后台作为一个稳定的生态,对于各种互联网中的应用场景都有一套通用的技术解决方案,这也是我们在学习过程中能够学习的;通过这些通用技术的学习,我们可以了解任何一家公司底层架构的一些原理,在以后实际工作中进一步提升和完善自己的技术体系。

作为应届毕业生,想要从事Java相关的工作,以下能力要求是大家必须达成的:

本次夏令营活动已结束,但是我们对大家的就业服务将一直持续……

如果你正面临着以下难题,可参与知了堂“天府人才内推”活动我们将竭力帮助你摆脱

1、技能达不到企业的需求——缺乏项目经验

2、简历撰写没有围绕求职岗位进行,项目经验无法支持求职岗位要求

3、缺乏面试技巧,无法和HR项目经理进行交流(答非所问)

4、缺乏简历投递的途径和渠道资源

5、每次都“挂”在面试题(没有人帮你梳理解题思路)

b站 前端构架_技术干货:哔哩哔哩(B站)功能框架图 ——以B站为例分析面对秋招必须要掌握的前后端...相关推荐

  1. HDG 成都站报名开启 | 聆听技术干货,感受实际 Demo 演示

    文/华为eSDK 告别8月盛夏,迎接9月秋爽,HDG 华为开发者汇-成都站即将启程! 9月24日,来"HDG 华为开发者汇-成都站",聆听技术干货,感受实际demo演示,共同探讨技 ...

  2. python 自动化运维 读取交换机数据_技术干货|数据中心自动化运维技术探索之交换机零配置上线...

    近几年来,互联网行业处于一个快速发展的快车道,一个又一个风口不断地涌向周边行业.共享单车的出现解决了人们出行***一公里的问题:新零售概念的提出,无人货柜的出现,更是将线上和线下的数据打通,优化了人们 ...

  3. b站前端大佬_在B站如何不动一根手指,就可以养成6级大佬?大四学生发明养号神器,看完你也会...

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 如何像拥有一个小助手一样,每天帮你签到打卡? 或许,现在利用GitHub Action定时任务就可以做到. 而这个小助手,混迹b站,可以每天 ...

  4. b站前端大佬_在B站如何养成6级大佬?大四学生发明养号神器,看完你也会

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 如何像拥有一个小助手一样,每天帮你签到打卡? 或许,现在利用GitHub Action定时任务就可以做到. 而这个小助手,混迹b站,可以每天 ...

  5. 金仓数据库字段_技术干货 | 超实用!详解人大金仓MPP数据库并行查询技术

    什么是MPP数据库? 人大金仓MPP数据库的 并行查询技术原理是什么? 如何实现并行查询?性能如何? 且听以下详细分解~ 01 什么是人大金仓MPP数据库? KingbaseAnalyticsDB(简 ...

  6. b站前端大佬_知乎大佬强烈热推的5个自学网站,看了几个月,月薪三千涨三万...

    原标题:知乎大佬强烈热推的5个自学网站,看了几个月,月薪三千涨三万 现在很多踏入了社会的小伙伴们经常会觉得为什么工作能力提升不上去,主要是因为很少利用业余的时间来学习一些跟自己工作有关的专业知识来充实 ...

  7. activiti 工作流_技术干货 | 金仓通用数据库中,如何使用Activiti快速开发工作流应用?...

    Activiti 是一个针对企业用户.开发人员 .系统管理员的轻量级工作流业务管理平台,可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言进行定义,业务系统将按照预先定义的流程进行执行,实现业 ...

  8. b站前端大佬_最强UP主:罗翔老师,你凭什么打败B站千万粉大佬老番茄?

    最 强 UP 主:罗翔老师,你凭什么打败B站千万粉大佬老番茄? 关注:萌面笨博士,关注新媒体营销,关注商业模式创新! 老番茄,学名老西红柿,小号老圣女果.行走游戏江湖(Bilibili游戏区)多年,于 ...

  9. erlang 怎么获得socket中的属性_技术干货,python中的异步网络框架socketserver

    简介 SocketServer是python基础库中提供的高级应用库, 主要用来编写异步服务程序. 最近工作原因需要写虚拟的外围服务程序, 正好了解到了这个, 所以写篇文章记录一下使用心得 在pyth ...

最新文章

  1. Batch Normalization学习笔记
  2. 个推透传消息设置通知栏展示 ios_手机通知栏消息太多,这招教你关闭弹出消息,立刻清爽...
  3. WINDOWS下对音频的处理过程(转)
  4. JVM调优之jstack找出最耗cpu的线程并定位代码
  5. [转]让你赚大钱成富翁的4个投资习惯
  6. ASP.NET Core分布式项目实战(oauth2 + oidc 实现 server部分)--学习笔记
  7. 手机 modem开发(22)---modem 通信 -- 几模 几频
  8. 【已解决】onenote无法正常打印怎么办?
  9. Function eregi() is deprecated
  10. Eclipse批量替换
  11. php ajax 域名查询,PHP+AJAX 域名查询 PHP 源代码
  12. 文件路径的正斜杠(/)与反斜杠(\)
  13. 计算机网络连接图标 红叉,Win10网络图标显示红叉叉 检测不到网卡驱动解决方案...
  14. 有哪些原版英文书籍值得推荐?
  15. 据说99%的程序猿都不懂得这样表白
  16. 跨境电商人要知道的知识产权侵权防范小知识
  17. android开发者mac(含M1芯片)电脑全新配置2022
  18. TexStudio论文写作小白入门
  19. java import class_有关import的问题__import_Java_class_java_Graphics__169IT.COM
  20. 微信抽奖活动小程序制作步骤有这篇就够了

热门文章

  1. Openwrt常用软件模块之SSH(Dropbear)
  2. [洛谷 OJ]P1101 单词方阵
  3. 降噪蓝牙耳机哪个好?2023年四款好用的降噪蓝牙耳机推荐
  4. 解决百度地图API无法正常显示地图
  5. ios高版本app成功砸壳之kali使用frida-ios-dump砸壳
  6. c语言字符串corrupt,primary label corrupt; using backup故障修复
  7. Corrupt JPEG data: premature end of data segment
  8. vue实现下拉二级联动_vue 实现二级联动
  9. C中snprintf与vsnprintf函数
  10. Docsify Markdown表格列宽自定义