这是一篇CodeSheep的文章,可以说是满满的回忆 :

10年前的B站页面长啥样?

估计很多小伙伴都已经忘记了叭。

作为一个当时刚上大学不久就曾混迹于B站的老二刺猿,那时候还只能刷网页版的B站,当时的页面可能差不多还长这样:

还记得那时候B站首页可没有现在这么多分区,现在怎么也得有个十几二十个分区,而当时主要也就是「动画」「音乐」「游戏」「娱乐」「新番」啥的,而且页面也非常简陋。

而如今这么多年过去了,一路走来,看着这个社区逐渐发展成今天这般繁荣,不禁心生感叹。

众所周知,哔哩哔哩是一个非常强大的学习平台和社区。每天都有非常多孜孜不倦、爱好学习的小可爱会在上面学习各种有关跳舞、穿搭、二次元、动漫、健身、以及编程等各方面的知识。

但是大家可能不知道,B站其实在技术开源这方面做得也是非常优秀的。

所以今天这篇文章就来做一个大盘点,看看B站开源了哪些非常哇塞的炫酷项目。

ijkplayer
ijkplayer应该是哔哩哔哩在GitHub上开源的明星项目了,目前为止收获了29k+的Star标星以及7k+的Fork。

ijkplayer是b站开源的一款超级好用的跨平台视频播放器。

你想想看,B站是做什么的?做视频平台和社区的呀,所以对于视频播放器这一块的解决方案肯定是非常重视的。

ijkplayer是一款底层基于FFmpeg的Android/iOS视频播放器,支持MediaCodec、VideoToolbox,具有跨平台、易集成、可按需裁剪、支持硬件加速解码等一系列特性。

目前使用ijkplayer的项目和产品还是非常多的,网上相关的资料也非常多,有相关需求的可以研究一下这个开源项目。

主要开发语言:C语言

项目地址:https://github.com/bilibili/ijkplayer

flv.js
flv.js是一款基于纯JavaScript编写的HTML5 Flash Video (FLV) 视频播放器,目前在GitHub上同样也收获了20k+的Star标星。

没错,这是B站开源的又一个和视频播放需求密切相关的开源项目。

flv.js去掉了对Flash的依赖,同时支持录播和直播,在开销不大的情况下还能通过浏览器进行硬件加速并且兼容多款浏览器。如果有网页播放或者网页直播相关需求,可以使用和研究一下该开源项目。

主要开发语言:JavaScript

项目地址:https://github.com/bilibili/flv.js

DanmakuFlameMaster
Android开源弹幕引擎·烈焰弹幕使 ~

看名字就知道这是一款和弹幕相关的开源项目。

没错,DanmakuFlameMaster是一款Android上的开源弹幕解析绘制引擎项目,目前在GitHub上收获了9000 Star的标星。但是从GitHub的项目提交记录来看,目前好像已经很久没有更新了。

DanmakuFlameMaster这个弹幕引擎架构清晰,灵活易用,支持多种方式实现的高效绘制、多种显示效果选项实时切换、以及多种和自定义功能。

如果你也想实现一个炫酷的弹幕效果,那弹幕引擎就可以由开源的 DanmakuFlameMaster 来帮助完成。

主要开发语言:Java

项目地址:https://github.com/bilibili/DanmakuFlameMaster

Discovery
看了前三个非常火的开源项目都是关于客户端的,接下来终于来了一个与后端服务开发相关的开源项目。

按照官方项目文档的介绍,Discovery是一款主要用来实现中间层服务的故障切换、容错以及负载均衡的基础组件,同样也是基于Go语言实现。

这样说可能不太好理解,有点抽象,我们来做个横向技术类比就知道了。

Eureka这个组件不知道大家用过没,网上有人将Discovery理解为使用Go语言复刻的Eureka,也是一个提供服务注册和服务发现的中间件,相信这样理解起来就能明白它的作用了。

对Java微服务项目比较熟悉的同学,看完Discovery的工作原理架构图,大致应该就明白它能做的事情了。

的确,Discovery在设计时就以Netflix Eureka为对标,但是又针对性地做了很多改进,有兴趣的可以参考项目主页的文档。

主要开发语言:Go语言

项目地址:https://github.com/bilibili/discovery

Kratos
Kratos是一套轻量级的Go语言微服务框架,包含大量微服务相关功能及工具。

大家都知道Java领域成熟的微服务框架其实很多,典型的比如像Spring Cloud,而Kratos则是Go语言领域一个比较难得的微服务框架,它整合了很多微服务相关的组件、框架以及工具,致力于为Go语言开发者提供相对完整的微服务开发体验。

Kratos的核心架构如下:

从图中也能看出来,其对应支持的主要组件和特性也不少,而且在官方的项目实例中,几乎每个特性(组件)都配有对应的example代码示例,这一点对于学习者是非常友好的。

如果想学习并实践Go语言描述的微服务架构,该项目则是一个不错的切入点和实践工程。

主要开发语言:Go语言

项目地址:https://github.com/go-kratos/kratos

Overlord
Overlord是哔哩哔哩开发的一款memcache和redis&cluster的代理及集群管理功能的项目,同样主要还是基于Go语言开发,致力于提供自动化高可用的缓存服务解决方案,目前在GitHub上也收获了近2k的Star标星。

该项目实现了proxy模块、platform模块、Web GUI管理模块,并且提供了对应的数据同步工具和集群管理工具,官方项目里也给出了对应的部署指南和使用指南,还是非常详细的。

据项目主页所述,Overlord已被哔哩哔哩用于生产环境。

主要开发语言:Go语言

项目地址:https://github.com/bilibili/overlord

后 记
好啦,今天的分享就先到这里了。

我也要去B站上学习各种跳舞、穿搭、二次元、动漫、健身、编程等各方面的知识了。

程序员B站项目分享:啪一下子回到了10年前的B站,要泪目了相关推荐

  1. 啪一下子回到了10年前的B站,我泪目了

    10年前的B站页面长啥样? 估计很多小伙伴都已经忘记了叭. 作为一个当时刚上大学不久就曾混迹于B站的老二刺猿,那时候还只能刷网页版的B站,当时的页面可能差不多还长这样: 还记得那时候B站首页可没有现在 ...

  2. 全球最厉害最有钱的24位顶尖程序员及其代表项目(公号回复“顶尖程序员”下载PDF资料)

    全球最厉害最有钱的24位顶尖程序员及其代表项目(公号回复"顶尖程序员"下载PDF资料) 原创: 秦陇纪 数据简化DataSimp 今天 数据简化DataSimp导读:全球最厉害最有 ...

  3. app嵌入jsp页面的项目工作量_好程序员Java学习路线分享jsp为什么用的不多了

    好程序员Java学习路线分享jsp为什么用的不多了,曾经JavaEE开发前端多数用的是JSP技术,因为在JSP出现之前,程序员基本都是在Servlet端直接通过out.print的方式拼接出一个页面返 ...

  4. 好程序员Web前端教程分享Vue学习心得

    为什么80%的码农都做不了架构师?>>>    好程序员Web前端教程分享Vue学习心得,Vue是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向 ...

  5. js怎么定义combobox_好程序员web前端教程分享新手应该怎么学习webpack

    好程序员web前端教程分享新手应该怎么学习webpack,什么是webpack?一句话概括:webpack是一个模块打包工具(module bundler).重点在于两个关键词"模块&quo ...

  6. 引入js_好程序员web前端教程分享js中的模块化一

    好程序员web前端教程分享js中的模块化一:我们知道最常见的模块化方案有CommonJS.AMD.CMD.ES6,AMD规范一般用于浏览器,异步的,因为模块加载是异步的,js解释是同步的,所以有时候导 ...

  7. 好程序员web前端培训分享做H5页面需要学什么

    好程序员web前端培训分享做H5页面需要学什么,很多人问过我这个问题,而问这个问题的人基本上都是刚听说过h5,处在懵懂的阶段,他们往往会被一些网上炫酷页面所吸引,开始的目的也很简单,能通过自己的努力做 ...

  8. 好程序员web前端教程分享网页设计需要学那些东西?

    好程序员web前端教程分享网页设计需要学那些东西:初次接触或者想要进入网页设计行业的朋友会经常分不清楚web前端与网页设计之间的区别,不知道网页设计要学什么,web前端要学什么,因此感到很迷茫,下面老 ...

  9. 好程序员大数据培训分享怎样进行大数据入门学习

    好程序员大数据培训分享怎样进行大数据入门学习,对于大数据的入门学习,基础不一样,起点就会不一样. 今天先来说说,对于零基础的同学想要学习大数据的方式方法吧!很多人可能感到不可思议,零基础怎么可能学习大 ...

最新文章

  1. 数据中心、智慧机房全套解决方案
  2. Spring核心部分之AOP,aspectJ框架实现AOP,切入点表达式
  3. CETK测试原理/测试方法/测试结果分析以及常见WinCE Test Kit运行问题的排查
  4. 【渝粤教育】电大中专学前儿童科学教育 (14)作业 题库
  5. mac svn 使用
  6. java如何排除多余的依赖_Maven依赖排除 禁止依赖传递 取消依赖的方法 去除jar包中的不想要的依赖关系...
  7. vs code linux 权限,在linux系统中安装VSCode(Visual Studio Code)
  8. (六)Oracle学习笔记—— 约束
  9. 使用Monit监控进程与系统状态
  10. python调用matlab函数_python调用matlab的m自定义函数方法
  11. IOS开发笔记 IOS如何访问通讯录
  12. 图解wordpress模板架构
  13. [Odoo] Report PDF 分页
  14. docker常用命令network篇
  15. wchar_t和char,WCHAR和CHAR的区别和互相转化
  16. 基本内置类型 声明与定义 static与entern const auto register volatile
  17. 【JZOJ A组】黑暗之魂(darksoul)
  18. 实例——Python爬虫requests网络图片的爬取和存储
  19. 利用TI的官网Sysconfig配置beagleboard-x15 linux系统中的串口
  20. VIPL Lab 9篇ACM MM 2019和IEEE TIP 论文精解

热门文章

  1. java字符串分割方法.split()的详细用法
  2. 如何用计算机图标设置打印机,电脑怎么设置为默认打印机打印
  3. 源码教学,如何提取知乎问答中的回复
  4. 苏州汽车南站到上海汽车|价格|时刻表
  5. android启动流程之preloader--->lk
  6. 在Windows操作系统中怎样使用nc命令
  7. php一级标题红色字体,什么是一级标题
  8. 《御龙弑天》隐私声明
  9. QQ餐厅要怎么经营?
  10. 如何修復“Windows無法完成格式化”