精华内容
下载资源
问答
  • bilibili mac客户端(哔哩哔哩mac客户端)中文版 b站mac客户端特征介绍 - 迷你窗 - 置顶功能 - 无边框播放器 - 分P支持 - Mac / Win客户端 - 快捷键 ... 哔哩哔哩mac版发行说明 Bilibili迷你客户端 for Mac...

    ​​小编亲测!bilibili mac客户端支持在macos 11 big sur和M1芯片电脑使用!很好的解决了Bilibili娱乐社区在Mac平台至今没有出品问题!需要的朋友欢迎来安体验。

    bilibili mac客户端(哔哩哔哩mac客户端)中文版

    b站mac客户端特征介绍

    - 迷你窗
    - 置顶功能
    -  无边框播放器
    -  分P支持
    -  Mac / Win客户端
    -  快捷键
    ...

    哔哩哔哩mac版发行说明

    Bilibili迷你客户端 for Mac(哔哩哔哩mac客户端)v1.0.4中文版

    变更日志
    💡 添加设置:窗口大小/播放器大小/不透明度
    🔧 在播放器模式下调整导航栏
    🔧 修复一些错误并调整样式

    小编的话

    Bilibili迷你客户端 Mac版为广大的Mac用户提供了一个去往B站的便捷通道。如果你喜欢二次元,那么你应该选择Bilibili迷你客户端;如果你觉得鬼畜好玩,那么你应该选择Bilibili迷你客户端;如果你够年轻够新潮,那么你应该选择Bilibili迷你客户端!​​​​

    展开全文
  • ## Flutter高级进阶实战 仿哔哩哔哩APP 网盘链接分享 近年来各大公司对Flutter技能的要求越来越高,甚至设立了专门岗位,但掌握Flutter高阶技能的人才寥寥无几,市面上干货Flutter高阶课程少之又少,导致Flutter...
    ## Flutter高级进阶实战 仿哔哩哔哩APP
    近年来各大公司对Flutter技能的要求越来越高,甚至设立了专门岗位,但掌握Flutter高阶技能的人才寥寥无几,市面上干货Flutter高阶课程少之又少,导致Flutter高阶人才缺口大。为此我们专门为大家设计了这门课程,助力你早日成为企业抢手的新一代工程师。


     

    技术要求
    具备Dart、Flutter基础,
    对跨平台技术有追求的开发者

    环境参数
    Flutter 2.x
    章节目录:
    第1章 课程介绍与学习指南 试看
    工欲善其事必先利其器,本章主要介绍课程实战项目、技术栈、课程安排、以及开发工具的使用小技巧,希望通过这门课能够帮助大家学有所成,学有所归。

    共 7 节 (28分钟) 收起列表

    1-1 课前必读
    1-2 课程导学 (10:32) 试看
    1-3 本章目标
    1-4 Android Studio开发Flutter实用技巧 (09:43) 试看
    1-5 VS Code开发Flutter实用技巧 (07:26)
    1-6 本章总结
    1-7 思考题
    第2章 Flutter网络和数据存储框架搭建 试看
    本章将手把手搭建一套Flutter网络框架,带你掌握网络操作、本地存储核心技术的基础上,传授你开发提效的思路、方案和经验。

    共 13 节 (110分钟) 收起列表

    2-1 本章目标 (02:27)
    2-2 Flutter网络层框架疑难点分析
    2-3 Flutter网络框架架构设计 (07:17)
    2-4 基于配置的请求封装与hi_net架构搭建-1 (13:06) 试看
    2-5 基于配置的请求封装与hi_net架构搭建-2 (12:18)
    2-6 hi_net统一异常和返回处理与Adapter模式设计 (19:38)
    2-7 扩展hi_net添加对dio的支持 (11:20)
    2-8 Dart JSON编码器和解码器剖析 (07:43)
    2-9 思考题
    2-10 三种JSON解析技巧带你解放生产力 (18:46)
    2-11 统一缓存管理框架hi_cache设计 (13:57)
    2-12 本章总结 (02:39)
    2-13 本章作业
    第3章 登录注册模块设计开发
    本章将带你掌握登录注册模块设计、Flutter中接口鉴权的方案,并着重培养大家封装widget的能力,通过封装实现代码的复用,避免嵌套地狱,提高代码的可读性、维护性和扩展性,提高开发效率。

    共 10 节 (115分钟) 收起列表

    3-1 本章目标 (03:09)
    3-2 登录与注册流程分析
    3-3 Flutter登录与注册SDK设计实现 (20:52)
    3-4 登录态保持与接口鉴权处理 (12:44)
    3-5 输入框实用技巧与实战应用 (23:00)
    3-6 自定义AppBar与登录动效设计与实现 (19:30)
    3-7 注册模块设计与实现 (16:39)
    3-8 登录模块设计与实现 (16:58)
    3-9 本章总结 (01:59)
    3-10 本章作业
    第4章 基于Flutter路由原理搭建APP导航架构
    本章将基于Flutter路由原理,手把手带你搭建高易用的APP框架和导航组件,同时分享你如何提高研发效率、解决常见的疑难问题。

    共 12 节 (137分钟) 收起列表

    4-1 本章目标
    4-2 Flutter的新导航器和路由系统
    4-3 Flutter路由管理剖析与实战 (24:21)
    4-4 基于全新Navigator封装易用的导航框架 (25:00)
    4-5 Android物理返回兼容处理跳转回调实现 (12:18)
    4-6 封装统一导航功能提高开发效率 (16:10)
    4-7 页面导航监听与onPause和onResume功能探索与实现 (14:54)
    4-8 基于BottomNavigation+PageView实现底部导航功能 (16:09)
    4-9 扩展hi_navigator支持底部tab导航通知 (15:04)
    4-10 基于TabBar+TabBarView实现顶部导航功能 (12:14)
    4-11 本章总结
    4-12 本章作业
    第5章 大首页模块开发
    本章将手把手带你搭建首页模块,掌握主流APP首页的疑难点问题的解决方案,解锁Flutter图片加载与缓存原理、列加载优化等高阶技能。

    共 13 节 (126分钟) 收起列表

    5-1 本章目标
    5-2 首页接口系分与Dao层实现 (16:20)
    5-3 封装HiState处理页面状态异常 (06:11)
    5-4 轮播图Banner组件封装 (18:41)
    5-5 封装可自定义样式的沉浸式导航栏NavigationBar (17:40)
    5-6 基于StaggeredGridView封装首页双Feed列表 (12:27)
    5-7 卡片组件封装与优化 (22:37)
    5-8 Flutter图片加载与缓存原理剖析
    5-9 列表图片缓存与加载优化实战 (11:21)
    5-10 上拉加载更多与分页功能实现 (11:42)
    5-11 基于Lottie实现全局加载组件封装 (08:04)
    5-12 本章总结
    5-13 本章作业
    第6章 Flutter视频播放器组件封装
    本章核心带你掌握播放器架构与功能优化,基于播放器源码原理完成播放器的封装,并实现全屏与沉浸式播放和体验优化,掌握播放器开发中的疑难问题和解决方案。

    共 10 节 (81分钟) 收起列表

    6-1 本章目标
    6-2 Flutter主流视频播放器
    6-3 Flutter主流视频播放器分析 (04:33)
    6-4 Flutter视频播放器组件封装 (11:32)
    6-5 播放器源码分析与自定义播放器UI (17:50)
    6-6 全屏播放与沉浸式播放功能实现 (23:28)
    6-7 利用应用生命周期变化进行体验优化 (08:47)
    6-8 封装HiTab组件实现Tab切换功能复用 (14:08)
    6-9 本章总结
    6-10 本章作业
    第7章 视频详情模块开发
    本章核心完成视频详情模块开发,带你掌握复杂功能页面的设计与架构,解锁动效实现、布局技巧、扁平化布局减少嵌套、页面秒开等实用技能。

    共 11 节 (98分钟) 收起列表

    7-1 本章目标
    7-2 视频详情头部模块组件封装与布局技巧 (09:59)
    7-3 Flutter动画开发实用知识
    7-4 基于Animation实现带动画的展开列表组件 (26:39)
    7-5 详情页接口系分与视频模型复用 (13:29)
    7-6 视频点赞分享收藏工具栏实现 (20:17)
    7-7 视频收藏接口系分与功能实现 (10:58)
    7-8 关联视频列表卡片设计与功能实现 (16:16)
    7-9 本章总结
    7-10 思考题
    7-11 本章作业
    第8章 排行榜模块开发
    本章将带你封装通用底层带分页和刷新的页面框架HiBaseTabState,并重点分享你如何快速搭建页面来提升自己的研发效率。

    共 7 节 (39分钟) 收起列表

    8-1 本章目标  
    8-2 排行榜页面框架搭建 (07:15)
    8-3 通用底层带分页和刷新的页面框架HiBaseTabState封装 (14:48)
    8-4 排行榜模块接口系分与Dao层封装 (06:41)
    8-5 基于HiBaseTabState实现页面快速搭建 (09:22)
    8-6 本章总结  
    8-7 本章作业  
    第9章 个人中心模块开发
    本章将手把手带你完成个人中心模块开发,核心实现复杂场景下的嵌套滚动、高斯模糊、视差滚动等效果,还会对Flutter渲染原理进行剖析,实现高效的交互组件。

    共 11 节 (67分钟) 收起列表

    9-1 本章目标
    9-2 个人中心模块接口系分与数据加载 (08:37)
    9-3 基于NestedScrollView与SliverAppBar实现复杂场景下的嵌套滚动 (08:51)
    9-4 高斯模糊与视差滚动效果实现 (05:28)
    9-5 Flutter渲染原理剖析(持续更新)
    9-6 高效的组件HiFlexibleHeader封装 (13:01)
    9-7 个人中心用户资产模块实现 (10:12)
    9-8 自定义动态布局实现职场进阶模块 (12:10)
    9-9 增值服务模块实现 (07:42)
    9-10 本章总结
    9-11 作业节
    第10章 视频弹幕架构开发
    本章将手把手带你完成个人中心模块开发,核心实现复杂场景下的嵌套滚动、高斯模糊、视差滚动等效果,还会对Flutter渲染原理进行剖析,实现高效的交互组件。

    共 12 节 (87分钟) 收起列表

    10-1 本章目标
    10-2 Flutter弹幕实现原理剖析(持续更新)
    10-3 WebSocket原理剖析
    10-4 基于web_socket_channel实现弹幕通信 (21:06)
    10-5 弹幕组件hi_barrage封装-1 (11:54)
    10-6 弹幕组件hi_barrage封装-2 (12:07)
    10-7 自定义弹幕展示效果 (08:31)
    10-8 基于Animation实现视频弹幕动效 (11:01)
    10-9 基于HiOverlay实现弹幕输入界面 (16:10)
    10-10 发送弹幕功能实现 (05:41)
    10-11 本章总结
    10-12 作业节
    第11章 实现Dark Mode主题模式【基于主流状态管理框架】
    本章将对比分析provider、bloc、redux,带你玩转Flutter主流状态管理框架,轻松上手provider,实现Dark Mode主题模式监听适配。

    共 10 节 (75分钟) 收起列表

    11-1 本章目标
    11-2 Flutter主流状态管理框架provider、bloc、redux对比(持续更新)
    11-3 轻松上手provider(持续更新)
    11-4 基于ThemeData实现自定义主题 (20:21)
    11-5 基于provider实现主题状态管理 (10:04)
    11-6 代码优化实现Dark Mode适配 (16:20)
    11-7 系统Dark Mode变化监听与适配 (10:49)
    11-8 Flutter的夜间模式实现 (16:32)
    11-9 本章总结
    11-10 作业节
    第12章 Flutter组件化改造与提效
    本章将带你深入剖析组件化方案原理,完成hi-net、hi-barrage、hi_base三个模块解耦重构及组件化改造。

    共 8 节 (42分钟) 收起列表

    12-1 本章目标
    12-2 组件化原理和方案剖析(持续更新)
    12-3 hi-net模块解耦与重构 (09:32)
    12-4 hi-net组件化改造 (12:43)
    12-5 hi-barrage弹幕模块组件化改造 (08:22)
    12-6 hi_base基础模块组件化 (11:01)
    12-7 本章总结
    12-8 作业节
    第13章 Flutter稳定性与性能优化
    本章将以提升Flutter应用的稳定性和性能为核心,带你掌握Flutter异常捕获与上报、测试之道、性能分析和优化、包大小优化的经验和技巧。

    共 12 节 (96分钟) 收起列表

    13-1 本章目标
    13-2 【图解】Flutter异常与Crash(持续更新)
    13-3 Flutter异常捕获与Crash日志收集 (23:32)
    13-4 【图解】Flutter测试的那些事(持续更新)
    13-5 稳定性保障之Flutter测试之道 (14:42)
    13-6 Flutter集成测试-1 (15:22)
    13-7 Flutter集成测试-2 (09:49)
    13-8 【图解】Flutter性能优化(持续更新)
    13-9 Flutter性能优化实战 (23:27)
    13-10 【图解】Flutter包大小优化的那些事(持续更新)
    13-11 Flutter包大小优化 (09:01)
    13-12 本章总结
    第14章 Flutter项目集成打包
    本章将带你完成Flutter进阶之路的最后一站,学习Flutter项目的构建打包的主流方案和技巧。

    共 6 节 (25分钟) 收起列表

    14-1 本章目标
    14-2 【图解】Flutter集成与打包Android应用【持续更新】
    14-3 集成与打包Android应用 (16:31)
    14-4 【图解】Flutter集成与打包iOS应用【持续更新】
    14-5 集成与打包iOS应用 (08:26)
    14-6 本章小结
    第15章 课程总结
    本章作为课程的最后一章,将带你整体梳理课程所学的内容,提供一些后续的学习建议,在课程问答区老师等着与你进一步交流。

    共 1 节 (0分钟) 收起列表

    15-1 课程总结
    展开全文
  • 哔哩哔哩(以下简称B站)的日志采集肩负了B站的所有业务的日志收集并传输,提供离线数据和实时数据以满足离线或实时计算以及业务方订阅的需求。B站日志收集系统是基于Flume设计和搭建而成的。 数据采集是大数据...

                            哔哩哔哩大数据采集服务—Lancer系统设计与实践

    哔哩哔哩(以下简称B站)的日志采集肩负了B站的所有业务的日志收集并传输,提供离线数据和实时数据以满足离线或实时计算以及业务方订阅的需求。B站日志收集系统是基于Flume设计和搭建而成的。


    数据采集是大数据的基石,近几年随着业务的高速增长,产生的数据量越来越大,并且会持续快速增长。因而对采集系统的实时性,稳定性以及可靠性也提出了更高的要求。


    本文主要介绍了日志采集系统Lancer的整体架构包括各组件设计及优化。


    B站原有的大数据采集服务存在的问题包括:


    1) 系统支撑能力不足

    • 原生Flume坑多,性能较差

    • 异构系统较多,支持比较困难,缺乏统一的协议层标准

    • 早期资源不足的情况下,应用的部署也不是很合理,没有做到应用的物理隔离


    2) 埋点接入混乱

    • 埋点错埋、漏埋、随意埋

    • 数据无保障,易丢失、出现问题难以排查和恢复

    • 缺乏自动化接入流程,业务方接入过程耗时耗力

    • 缺乏一套完整的数据监控体系对数据流链路进行监控


    3) 数据覆盖不完全

    • 终端覆盖率不足

    • 业务场景覆盖不够全面


    架构


    基于这些问题的存在,我们确立了新数据采集系统的整体设计目标,首先,性能上要做到高吞吐和低延时;其次,质量上要保证数据的安全性和时效性;最后,要做到系统高可用,提供数据灾备,保证数据零丢失。在这样的系统设计目标之下,我们按照如下结构设计了系统:



    图一 Lancer系统整体架构


    从系统架构中可以看出,该系统主要有两种数据流向,分别是实时流和离线流,前者对应流式埋点数据的上报,数据产生并实时上报至网关层;后者对应批量数据的同步,例如从数据库批量的对数据进行同步操作。


    以实时流数据为例,数据源包括服务端以及客户端,服务端日志可以通过统一上报模块SDK以Tcp/Udp/LogStream(基于Tcp实现的私有协议,可以获得更高的传输效率)进行数据的收集并上报,而客户端通过客户端数据采集SDK以Http(s)根据不同的网络环境按一定策略将压缩后的数据进行上报。之后由统一的网关层Lancer-Gateway接收上报的数据,并写入到数据缓冲层(Kafka),最后由数据分发层将数据从数据缓冲层中拉取,将数据写入到数据存储层(包括HDFS、HIVE、ES、HBASE等),提供给后续的数据仓库、实时计算或者其他业务部门自订阅和消费。


    离线流基于Sqoop,实现了数据库数据的批量同步功能,并支持分发到不同终端的功能,关于离线流的讨论本文不做展开。


    基于Flume的数据网关层和分发层的实现方案


    Flume是由Cloudera软件公司产出的可分布式日志收集系统,后于2009年被捐赠了apache软件基金会,现已成为apache top项目之一。它是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase,kafka等)的能力 。


    Flume以agent为最小的独立运行单位,单agent由Source,Channel和Sink三大组件组成,而Event作为数据在Flume中传递的单位。



    图二 原生Flume数据流


    Flume的数据流由事件(Event)贯穿始终。Event是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有header头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。


    1) 网关层 — Lancer-Gateway 系统架构 



    图三 网关层Lancer-Gateway系统设计


    网关层Lancer-Gateway提供了LogStreamSource、SysLogUdpSource、SysLogTcpSource、NetSource等,可以接收不同协议层的数据上报。


    Socket模型利用了Reactor主从NIO线程模型:


    1. 从主线程池中随机选择一个Reactor线程作为Acceptor线程,用于绑定监听端口,接收客户端连接;

    2. Acceptor线程接收客户端连接请求之后创建新的SocketChannel,将其注册到主线程池的其它Reactor线程上,由其负责接入认证,握手等操作;

    3. 步骤2完成之后,业务层的链路正式建立,将SocketChannel从主线程池的Reactor线程的多路复用器上摘除,重新注册到Sub线程池的线程上,用于处理I/O的读写操作;

    4. 在每个Sub线程上配置私有线程池,并发地执行数据的编解码操作并写入到Channel中,由后续的KafkaSink将数据写入到数据缓冲层(Kafka)中。


    针对实践过程中实现的优化点:


    1.  将flume1.7中使用的netty3升级为netty4, netty4相较于netty3优化了线程模型,提出了串行化设计理念,而线程模型在很大程度上决定了框架的性能, netty4新特性可以参看http://netty.io/wiki/new-and-noteworthy-in-4.0.html#wiki-h2-34


    2. 提供了对私用协议LogStream的支持,协议的选择不同,性能模型也不同。相比于公有协议,内部私有协议的性能通常可以被设计的更优。 LogStream基于Tcp实现,减少了不必要的数据传输,定义的格式更利于内部处理。


    PS:该系统中使用kafka作为数据缓冲层,而没有直接对采集的数据进行处理和写入数据持久层的原因在于考虑到数据分发端可能存在写入瓶颈问题及消费端消费能力不足而导致数据将Channel阻塞,最终影响整条数据链路的数据传输。将数据线缓存在中间Kafka中,数据会被持久化,保证了异常情况下数据的不丢失,同时kafka中的消息采用pull机制而不是push机制,使系统分发端可以根据消费能力去拉取数据进行处理,不至于拉取过多数据无法处理,造成Channel阻塞,并发生处理异常。


    2) 分发层 — Lancer-Collector 系统架构

     


    图四 分发层Lacner-Collector系统设计


    同样是基于Flume的一个Agent设计,包含了KafkaSource,用于从数据缓冲层拉取数据,根据分发端的不同写入到不同的Channel中,每个Channel挂靠一个Sink,用于执行不同数据分发端的数据写入


    针对实践过程中实现的优化点:


    1. 不同业务的数据对于分发端来说属于不同的事件,需要执行不同的处理逻辑,以及根据分发端的不同写入不同的分发端中,考虑到不同的数据持久层(包括HDFS、KAFKA、MYSQL等)写入性能并不一致,使用相同的流式处理会产生木桶效应,系统整体取决于数据写入最慢的分发端链路,所以需要根据分发端的不同实现物理上的隔离。

        

    解决方法:在网关层Lancer-Gateway判断该事件的分发端类型,使用单独的kafka topic写入到kafka缓冲层,在不同的物理器上部署分发层Lancer-Collector,订阅单独的kafka topic进行消费,分发至对应的数据持久层。


    2. 不同埋点数据其数据量不同,有时会相差很大,由于我们采用的是多Channel的数据分发策略,如果塞入到某个Channel的数据量比较大,会导致对应的Sink率先达到Hdfs的Flush阈值,而会造成整体的数据Flush操作,过多的Flush操作会导致性能的下降。


    解决方法:针对Channel做负载均衡操作,将事件尽量均匀的投放到每个Channel中,同时检测Channel中的水位,实时调整将数据写入到相对空闲的Channel中;调大MemoryChannel的capacity,尽量利用MemoryChannel快速的处理能力;调大HdfsSink的batchSize,增加吞吐量,减少hdfs的flush次数。


    数据可靠性保证


    1)利用了GoAgent等SDK进行数据上报,数据会被先持久化在本地,如果上报网络异常,数据不会丢失

    2)数据缓冲层使用Kafka保证了分发端异常情况下数据不丢失

    3)利用Flume对数据可靠性的支持,保证了数据在Agent传输中的数据不丢失

    1. 首先由一个Channel Queue用于存储整个Channel的Event数据;


    2. 每个事务都有一个Take Queue和Put Queue分别用于存储事务相关的取数据和放数据,等事务提交时才完全同步到Channel Queue,或者失败把取数据回滚到Channel Queue。MemoryChannel设计时考虑了两个容量:Channel Queue容量和事务容量,而这两个容量涉及到了数量容量和字节数容量。另外因为多个事务要操作Channel Queue,还要考虑Channel Queue的动态扩容问题,因此MemoryChannel使用了锁来实现,而容量问题则使用了信号量来实现。



    图五 Flume Channel的事务性保证



    图六 Agent中的数据交换


    数据质量性保证


    1)没有监控,一切优化都是空谈。实现了单独监控系统,提供了细粒度的监控指标,对数据传输的各个环节进行监控,例如对丢失率、延时率、数据采集量及字节数、模块处理耗时等进行可视化监控


    2)全方位的告警机制,数据链路异常会及时通过告警通知相应负责开发同学,快速响应


    3)每日统计各类业务数据的日量级和条数,以及产出同比环比报告,方便观察每日线上业务埋点数据情况


    4)数据上报样例查看,方便接入的业务方查看自己数据上报格式和数据是否正确

     


    图八 数据上报实时监控



    图九 数据同环比监控


    监控模块整体架构如下: 



    图十 Lancer监控模块整体架构


    关于具体监控模块的具体设计,不在本文的讨论之中,之后会专门介绍。


    未来发展


    截止目前,Lancer系统提供了一个高可用,高可靠,可扩展的分布式服务,接入了超过200类数据采集任务,每天处理各类数据超过400亿条,数据量级在20T以上,每秒300W条的处理速度,有效地支持了B站的日志数据收集和分发工作。


    后续,我们将在如下方面继续研究:


    • 系统的优化:随着业务的不断增长,对系统的要求会越来越高,有更多优化的空间需要去完善;

    • 日志管理系统:对日志收集系统Lancer提供图形化的展示和控制,方便管理和配置;

    • 拥抱开源:专注数据集成问题方案的思考和解决。


    出处:https://mp.weixin.qq.com/s/QXf3iol1WNsXhhi7j-VDtQ


    版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。


    -END-


    展开全文
  • 2020哔哩哔哩大数据面试题整理

    千次阅读 2020-08-21 08:32:39
    集成价值(简单化) 数据仓库是所有数据的集合,包括日志信息,数据库数据、文本数据、外部数据等都集成在数据仓库中,对于应用来说,实现各种不同数据的关联将使多为分析更加方便,为从多角度多层次地分析和决策制定...

    网上能搜到的B站的大数据面试题太少了,博主有点找不到了,而且最近B站的校招的效率似乎不是很高,简历投进去一个多星期了,一点反应都没有,别问,问就是在池子里.jpg

    1.数仓与关系数据库区别
        1.数据库有相对复杂的表格结构,存储结构相对紧致,少冗余数据,而数据仓库则是相对简单的表格结构,存储结构相对松散,多冗余数据。
        2.数据库在读和写两方面都有优化,数据仓库一般只是读优化
        3.数据库单次操作作用于少量的数据,数据仓库单次操作会作用于大量的数据
        4.数据库支持单条数据的修改,数据仓库不支持
        5.数据库可以和用户进行交互,数据仓库不行

    2.数据仓库为什么需要分层?优缺点?
        分层原因:
            1.用空间换时间。通过建设多层次的数据模型供用户使用,避免用户直接使用操作型数据,可以更高效的访问数据
            2.把复杂问题简单化。将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复
            3.便于处理业务的变化。随着业务的变化,只需要调整底层的数据。
        优点:
            高效的数据组织形式(易维护)
            面向主题的特性决定了数据仓库拥有业务数据库所无法拥有的高效的数据组织形式,更加完整的数据体系,清洗的数据分类和分层机制。因为所有数据在进入数据仓库之前都经过清洗和过滤,使原始数据不再杂乱无章,基于优化查询的组织形式,有效提高数据获取、统计和分区的效率
            时间价值(高性能)
            数据仓库的构建将大大的缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库之间获取,数据仓库的最大优势在于一旦底层从各类数据源到数据仓库的ETL流程构建成型,那么每天就会有来自各方面的信息通过自动任务调度的形式流入数据仓库,从而使一切基于这些底层信息的数据获取的效率达到迅速提升。
            集成价值(简单化)
            数据仓库是所有数据的集合,包括日志信息,数据库数据、文本数据、外部数据等都集成在数据仓库中,对于应用来说,实现各种不同数据的关联将使多为分析更加方便,为从多角度多层次地分析和决策制定提供可能。
            历史数据(历史性)
            记录历史是数据仓库的特性之一,数据仓库能够还原历史时间点上的产品状态、用户状态、用户行为等,以便于能更好的回溯历史,分析历史,跟踪用户的历史行为,更好的比较历史和总结历史了,同时根据历史预测未来。
        缺点:
            数据的大量冗余会占据大量的存储空间,增加hdfs的存储负担

    3.Hive表数据底层存储在哪
        hdfs的datanode上

    4.元数据存储在哪?
        mysql里的hive库中

    5.hive与hdfs的关系
        hive是逻辑上的数据仓库,hive本身并不存储数据,数据都是存放到hdfs上面的。hive之所以能以表的形式操作操作hdfs上面的数据,是因为hive的元数据库存储着hdfs数据与hive表之间的映射

    6.hive与Hbase的区别与联系
        Hive:
            Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能
            Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。Hive需要用到hdfs存储文件,需要用到MapReduce计算框架
            Hive可以认为是MapReduce的一个包装,Hive的意义就是把好写的Hql语句转换为复杂的MapReduce程序
        HBase:
            Hbase是hadoop的数据库,一个分布式、可扩展、大数据的存储
            Hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作
            hbase可以认为是hdfs的一个包装,他的本质是数据存储是个NoSql数据库;hbase不属于hdfs之上,并且克服了hdfs在随机读写方面的缺点

        两者联系:
            Hbase和hive在大数据架构中虽然处在不同位置,Hbase主要解决实时数据查询问题,HIve主要解决数据处理和计算问题,一般配合使用。
        协作流程:
            1.通过ETL工具将数据源抽取到HDFS存储
            2.通过hive清洗、处理和计算原始数据
            3.hive清洗处理后的结果,如果是面向海量数据随机查询场景的可存入Hbase
            4.数据应用从Hbase查询数据

    7.HashCode和equals 的关系
        两个对象的hashcode相同,但equals返回不一定是true
        但是equals返回true,则hashcode一定相同

    8.HashMap中插入元素时如果元素的hashCode相同,那该怎么办
        HashMap采用的是数组+链表的存储模式,先根据hashCode在数组中进行存储,如果有多个元素的HashCode相同,则会在该位置生成链表,新的元素排在后面

     

    展开全文
  • 哔哩哔哩算不上面试的凉经 之前说好面一个小时,但是我想多了,我没答上来,直接开始聊天,电话一共打了十几分钟吧。 问了实习在干嘛 问一个简单的…hashmap是线程不安全的,那怎么做到线程安全(不会,但是说了...
  • 哔哩哔哩(B站)的前端之路

    千次阅读 2018-03-05 10:13:51
    我们花了一点时间,首先,core核心库抽离出来,并且和日志中心的连接方法、配置中心的连接方法等一些公用方法一起,做成一个npm包发布到公司内部的npm 源上面,然后将client 从库里面独立出来,变成前端库,加上一个...
  • 作者 沈佳伟 哔哩哔哩会员购架构师背景「哔哩哔哩会员购」是B站的电商业务。随着业务规模不断扩大,系统设计也越来越复杂。当在具有一定应用规模和业务复杂度的系统上进行业务快速迭代时对系统的鲁...
  • -loglevel 使用的日志记录级别 quiet 跟在loglevel后面,表示不输出日志 感兴趣的小伙伴可以点击ffmepeg中文文档,深入了解。 这里还用到了subprocess模块,用来生成子进程,并可以通过管道连接他们的输入/输出/...
  • 2020我的秋招总结帖 [数据分析岗] —— 哔哩哔哩2020届秋招数据分析师面试第一轮。
  • 哔哩哔哩(以下简称B站)的日志采集肩负了B站的所有业务的日志收集并传输,提供离线数据和实时数据以满足离线或实时计算以及业务方订阅的需求。B站日志收集系统是基于Flume设计和搭建而成的。 数据采集是...
  • 我刚开始整合ssm时,按照其他人博客上面走,也没整合成功,环境不一样,很多东西不明白,最终还是跟着哔哩哔哩视频走整合成功了。pom.xml中的坐标可以参考这里。 视频链接:...
  • 哔哩哔哩弹幕视频网 - ( ゜- ゜)つロ 乾杯~ - bilibili http://www.bilibili.com/  bilibili是中国大陆一个动画、游戏相关的弹幕视频分享网站,也被称为哔哩哔哩、B站,其前身为视频分享网站Mikufans。该网站由...
  • 哔哩哔哩一面(2021年3月22日晚上七点) 体验 面试官很注重项目经验和项目中遇到的问题,充分说明一直在考察你是否真正实战过 面试时长:19分钟 面试方式:视频 面试部门:B站直播业务部 自我介绍 项目介绍 做项目...
  • 日志清理 日志删除 日志压缩 5.磁盘存储 页缓存 磁盘I/O流程 零拷贝 六、深入服务端 1.协议设计 2.时间轮 3.延时操作 4.控制器 5.参数解密 七、深入客户端 1.分区分配策略 2.消费者协调器和组协调器 3._consumer_...
  • 补上「窗口函数」的知识空缺,整理「哔哩哔哩一面」的SQL操作。
  • 使用 Axios 和GitHub Actions实现哔哩哔哩每日自动签到、投币、领取奖励 SCHEDULE-BILIBILI 是一个B站自动执行任务的工具,使用 JS + AXIOS 编写,通过它可以实现B站帐号的每日自动观看、分享、投币视频,获取经验,...
  • 【第1158期】哔哩哔哩的前端之路

    千次阅读 2018-01-04 00:00:00
    我们花了一点时间,首先,core核心库抽离出来,并且和日志中心的连接方法、配置中心的连接方法等一些公用方法一起,做成一个npm包发布到公司内部的npm 源上面,然后将client 从库里面独立出来,变成前端库,加上一个...
  • 数据库崩溃时事务的恢复机制(REDO日志和UNDO日志)? 20个高频MySQL面试知识点: (3)MySQL学习思维脑图(xmind) 第三个 缓存-Redis相关 3.1 美团面试问题 redis了解吗?你说说怎么用redis实现分布式锁? Redis...
  • 不知道 Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么,不清楚。 Redis的list是怎么实现的,我说用ziplist+quicklist实现的,ziplist压缩空间,quicklist实现链表。 ...
  • 本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除...还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、...
  • 开发者:Jelly Black哔哩哔哩(゜-゜)つロ干杯〜哔哩哔哩同名, ChatStat 1.3.0更新日志 【重要更新】直播弹幕抓取支持多线程。 为适应多线程爬虫的需要,重复弹幕验证范围由原来的10个上升到2048个,并且爬虫线程...
  • 哔哩哔哩粉丝数监测&邮件通知 其实就是一个十分简单的python程序,一百行多一点的代码,发布里里已经已经编译和打包过的文件(网页版地址 ) 觉得下载慢的可以前往码云()或某不知名的良心云盘()下载 用法 电脑...
  • 12、Rolling执行日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志; 13、GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持...
  • 程序员5个刷题网站 BiliBiliTool [目录] BiliBiliTool 是一个 B 站自动执行任务的工具,当我们忘记做 B 站的某项任务时,它会...理论上支持所有远端的日志推送(默认支持推送到Telegram、企业微信、钉钉、PushPlus、Se
  • 目录0. 视频源0. 学习网址1. Docker概述1.1 Docker为什么出现?1.2 Docker历史1.3 Docker能干什么2. Docker安装2.1 Docker的基本组成2.2 安装Docker卸载docker(了解)2.3 阿里云镜像加速(让你的Docker更快)2.4 回顾...
  • 记得做这个框架是在2018年刚接触.net core的时候,那个时候为了能够专心的研究...好,那么我们来说说这个日志框架。 开发缘由 那个时候我们常用的日志是log4net,log4net是.Net下一个非常优秀的开源日志记录组件。...
  • 韩语读音学习日志

    2020-10-24 23:19:31
    目录背景知乎哔哩哔哩 背景 看了“打架吧鬼神”之后迷上了韩语,打算学一点读音。 我估计我这回也只会学读音,因为之前学日语和俄语都是认真学了读音之后就不管了。 知乎 先去知乎搜了一下 1. 如何学习韩语? - 战导...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 989
精华内容 395
关键字:

哔哩哔哩日志