字节跳动青训营
文章平均质量分 83
无
NormalConfidence_Man
这个作者很懒,什么都没留下…
展开
-
【青训营】Redis数据结构和企业应用
一个HashTable就和我们平时认识的Hash表一样,下属多个节点,在Redis中称为槽位,一个槽位对应一个Hash值,每个槽位对应一个单向链表的拉链,经过Hash运算后会将数据节点分配到对应的槽位中。但是如果数据量较大,一个槽位中会有过多的数据,从而导致访问速度变慢,这时候就需要引入多个HashTable了,比如说在dicit中引入另一个HashTable,ht[1]。为什么要这样设计呢?于是我们将数据分为冷数据和热数据,对于某些需要高频使用的数据,将数据存在内存中,将其视作为热数据。原创 2023-02-15 20:57:38 · 258 阅读 · 0 评论 -
【青训营】分布式定时任务简述
定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。分布式定时任务是把分散的、可靠性差的定时任务纳入统一平台,并且实现集群管理调度和分布式部署的一种定时任务管理方式定时任务:特定时间触发,比如今天15:06执行延时任务:延时触发,比如10s后执行周期任务:固定周期时间,或者固定频率周期调度触发,比如每天12点或者每隔5s执行按照执行方式分类单机任务:随机触发一台机器执行任务,适合计算量小、并发度低的任务广播任务:将一个命令广播到所有机器上执行,比如一起清理日志。原创 2023-02-13 11:02:58 · 508 阅读 · 0 评论 -
【青训营】RPC框架分层设计简述
远程函数调用,Remote Procedute Calls,简称RPC。RPC需要解决的问题有:完成远程函数的映射,并且将数据转化为字节流,使用网络进行传输。原创 2023-02-12 17:09:10 · 407 阅读 · 0 评论 -
【青训营】Kafka快速入门
消息队列MQ是保存消息的一个容器,本质是一个队列,这个队列需要支持高吞吐、高并发和高可用消息队列诞生于1985,服务于金融机构和新闻机构,简称为TIB。后来IBM和微软逐渐开始加入研发属于自己的消息队列。后来AMQP将消息队列技术推广了开来。常用消息队列:Kafka:分布式、分区的、多副本的日志提交服务,在高吞吐场景下发挥出色RocketMQ:出自阿里之手,低延迟、强一致、高性能,在实时场景中运用较广Pulsar:开源的下一代云原生分布式消息流平台,采用存算分离架构设计,腾讯出资并在使用,原创 2023-02-08 19:32:47 · 333 阅读 · 0 评论 -
【青训营】Git简述和配置
业界绝大多数公司都基于Git进行代码管理,因此Git是一个程序员必备的技能。并且目前绝大多数的开源项目都是基于Git维护的,参与这些项目的开发都需要使用Git。原创 2023-02-07 18:11:27 · 703 阅读 · 0 评论 -
【青训营】软件开发流程
传统瀑布模型将流程视作为一条线:完成需求分析后开发,开发完成后测试,测试完成后发布,发布完成后进行运维。这是最直观的一个模型,其流程是非常的严格的区分的。适用于银行、支付等对软件质量要求很高的领域,是以流程为本,理想化的模型。这种流程的缺点是十分低效的敏捷开发个体和互动高于流程和工具工作的软件高于详尽的文档客户合作高于合同谈判响应变化高于遵循计划。原创 2023-02-06 22:28:51 · 365 阅读 · 0 评论 -
【青训营】微服务架构概览
架构概览中间是核心组件,中间通过一个网关处理外部流量,外围有服务配置和治理模块以及链路追踪和监控。微服务架构的核心要素。原创 2023-02-04 14:37:33 · 566 阅读 · 0 评论 -
【青训营】架构初探
但是垂直应用架构中单个进程的职责还是很重,一旦某个进程的某一步出现故障,那么该进程就会瘫痪,而且有一些各个进程都需要进行的重复性工作被分散到了各个进程中,降低了效率。单体架构和单机架构最大的不同是单体架构可以有多个进程一同处理需求,其中用户会被分流到不同的分布式应用上,从而实现水平扩容,就像蛋糕店雇多了几个师傅一同做蛋糕一样。可以进行一部分的改进,变成垂直应用架构,比如说一个进程对应一个特定的功能,就如同一个师傅只负责一种蛋糕一样。架构的演进就如同做蛋糕,需求量越来越大,总归要增加人手;原创 2023-02-04 11:04:41 · 467 阅读 · 0 评论 -
【青训营】分布式理论初探
分布式系统是计算机程序的集合,这些程序利用横跨多个独立计算节点的计算资源实现共同目标,可分为分布式计算、分布式存储、分布式数据库。其优势是:去中心化、低成本、弹性、资源共享、可靠性高普遍的结点故障不可靠的网络异构的机器与硬件环境安全常见分布式系统。原创 2023-02-03 18:49:55 · 600 阅读 · 0 评论 -
【青训营】规则引擎概述和入门
根据子表达式的类型构造出父表达式的类型,例如,表达式a+b的类型是根据a和b的类型定义的。其中add : add ‘+’ mul | mul中,第一个add表示这是加法的BNF,第二个add表示为加数,第一个mul表示+运算符可以使用加数+乘数的形式(这个解释并不是太好)。我们可以将语句中的某些关键字提炼出来,将其以树状的结构组织起来,从而实现对它们的语法的分析。其中BNF的表达式示例如下。发现既不是逻辑表达式,也不是比较表达式,也不是加法,也不是乘法,也不是基础表达式,那么则是一个普通的标识符。原创 2023-01-31 21:30:34 · 616 阅读 · 0 评论 -
【青训营】Go的Gorm简单实例和基本操作
Gorm是一个全功能的ORM,负责的是承接Go语言对数据库的查询。原创 2023-01-30 12:04:07 · 680 阅读 · 0 评论 -
【青训营】Go的一些性能优化技巧
如果没有指定容量,那么可能会使得slice进行扩容操作,扩容操作会耗费额外时间。因此最好在初始化时指定好容量。原创 2023-01-28 20:10:31 · 937 阅读 · 0 评论 -
【青训营】Go的BenchMark的使用
其中go test用于启动测试,使用-bench指明启动的是基准测试,并且-bench=也用于指明测试的是什么函数,-bench=.的意思是测试所有Bench函数。-benchmem用于指明基准测试的内存相关设置,现在暂时不使用。其中func BenchmarkFib()为测试函数,传入的参数为b *testing.B,当运行Benchmark基准测试的时候,BenchMark会抓取参数为 *testing.B的函数进行测试。Go自带了一些性能测试工具,其中BenchMark是较为重要的一个。原创 2023-01-28 11:09:12 · 891 阅读 · 0 评论 -
【青训营】Go语言的基本语法
Mac配置:http://t.zoukankan.com/zsy-p-6685889.htmlwkts。原创 2023-01-23 11:56:48 · 1499 阅读 · 0 评论 -
【青训营】性能优化和自动内存管理
提高软件系统处理能力,减少不必要消耗,充分利用计算机算力业务层优化针对特定场景和具体问题容易获得较大收益语言运行时优化面向全公司的优化,非特定场景解决更通用的性能问题考虑更多场景在优化时需要根据数据驱动,比如使用自动化性能分析工具–pprof。依靠数据优化而非主观猜测,并且首先优化最大的瓶颈软件质量至关重要保证接口稳定的情况下改进具体实现测试驱动:测试用例覆盖尽可能多的场景,方便回归文档:做了什么,没错什么,能达到什么效果隔离:通过选型控制是否开启优化。原创 2023-01-19 14:37:41 · 718 阅读 · 0 评论 -
【青训营】Go的高质量编程
什么是高质量?原创 2023-01-18 20:56:51 · 1500 阅读 · 0 评论 -
【青训营】Go的测试
测试主要包括:回归测试、集成测试、单元测试。原创 2023-01-17 21:11:40 · 562 阅读 · 0 评论 -
【青训营】Go的依赖管理
实际开发的工程需要使用许多第三方库,这能够使得我们站在巨人的肩膀上,使用第三方库中封装好的函数,可以大大方便我们的程序开发,第三方库中广泛的功能,是标准库所不具备的,这些我们使用的库,又称为依赖。对于庞大的项目来说,是需要使用到许多库的,为了更好的管理库,我们需要使用依赖管理工具Go的依赖库主要经过了三次迭代主要目的:1.根据不同环境不同项目使用不同依赖2.控制依赖库的版本。原创 2023-01-17 05:33:52 · 726 阅读 · 0 评论 -
【青训营】Go的并发编程
本文章整理自——字节跳动青年训练营(第五届)后端组。原创 2023-01-16 22:41:02 · 812 阅读 · 0 评论