获得徽章 0
#青训营 x 字节后端训练营# 数据库要做哪些事?

校验数据的合法性:比如说主键(唯一性),字段(是否匹配,长度是否符合)
修改内存:用高效的数据结构组织数据,例如B+数,红黑树
写入存储介质:以寿命 & 性能友好的方式写入硬件
展开
评论
#青训营 x 字节后端训练营# 三级Cache分别是L1、L2、L3,它们的速率是三个不同的层级,L1速率最快,与CPU速率最接近,是RAM速率的100倍,L2速率就降到了RAM的25倍,L3的速率更靠近RAM的速率。
评论
#青训营 x 字节后端训练营# 存储系统的定义
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统。

这里强调的是软件,并不仅仅说的是用户和存储设备打交道,需要和一个整体的软件打交道。
展开
评论
#青训营 x 字节后端训练营# 从1980年开始CPU和内存速率差距在不断拉大,为了弥补这2个硬件之间的速率差异,所以在CPU跟内存之间增加了比内存更快的Cache,Cache是内存数据的缓存,可以降低CPU访问内存的时间。
评论
#青训营 x 字节后端训练营# CPU速度很快,但硬盘等持久存储很慢,如果CPU直接访问磁盘,磁盘可以拉低CPU的速度,机器整体性能就会低下,为了弥补这2个硬件之间的速率差异,所以在CPU和磁盘之间增加了比磁盘快很多的内存。
评论
#青训营 x 字节后端训练营# Go这门语言抛弃了C/C++中的开发者管理内存的方式,实现了主动申请与主动释放管理,增加了逃逸分析和GC,将开发者从内存管理中释放出来,让开发者有更多的精力去关注软件设计,而不是底层的内存问题。这是Go语言成为高生产力语言的原因之一。
评论
#青训营 x 字节后端训练营# 物理内存就是磁盘存储缓存层,在没有虚拟内存的时代,物理内存对所有进程是共享的,多进程同时访问同一个物理内存会存在并发问题。而引入虚拟内存后,每个进程都有各自的虚拟内存,内存的并发访问问题的粒度从多进程级别,可以降低到多线程级别。
评论
#青训营 x 字节后端训练营# SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给 SOCKS5 服务器,然后 SOCKS5 服务器将请求转发给真正的服务器。
评论
#青训营 x 字节后端训练营# 从应用层到存储介质
1 buffer,cache(缓存很重要),因为传入时是内存数据,需要从内存写到硬盘中,速度上没有办法去匹配,所以buffer及cache很重要。也就是之前说的以寿命&性能友好的方式写入硬件。
2 拷贝的代价是昂贵的,拷贝会降低性能。
3 软件和硬件之间需要有一个抽象的统一接入层。
展开
评论
#青训营 x 字节后端训练营# 为实现在线词典,我们需首先在对应词典网站上得到请求,再通过 Convert curl to Go (curlconverter.com) 将请求转换为 Go 语言类型的程序。
评论
#青训营 x 字节后端训练营#
猜谜游戏该程序的实现分为四个部分
1.系统自动生成随机数,为了使每次运行程序生成的随机数不同,我们需要使用随机种子。
2.读取用户的输入。
3.对用户的输入进行判断,给出比正确答案大或小的回应。
4.用户输入的数值若正确,则弹出正确信息,并跳出循环。这里使用for循环和break实现。
展开
评论
#青训营 x 字节后端训练营# go里面也支持指针。但相比 C 和 C++ 里面的指针支持的操作很有限。指针的一个主要用途就是对于传入参数进行修改。我们来看这个函数。这个函数试图把一个变量+2。但是单纯像上面这种写法其实是无效的。因为传入函数的参数实际上是一个拷贝,那也说这个+2,是对那个拷贝进行了+2, 并不起作用。如果我们需要起作用的话,那么我们需要把那个类型写成指针类型,那么为了类型匹配,调用的时候会加一个 & 符号。
展开
评论
#青训营 x 字节后端训练营# 我们可以用 make 来创建一个切片,可以像数组一样去取值,使用 append 来追加元素。注意 append 的用法的话,你必须把 append 的结果赋值为原数组。因为 slice 的原理实际上是它有一个它存储了一个长度和一个容量,加一个指向一个数组的指针,在你执行 append 操作的时候,如果容量不够的话,会扩容并且返回新的 slice。slice 此初始化的时候也可以指定长度。slice 拥有像 python 一样的切片操作,比如这个代表取出第二个到第五个位置的元素,不包括第五个元素。不过不同于python,这里不支持负数索引。
展开
评论
#青训营 x 字节后端训练营#
第一行package main代表了这个文件属于main包中的一部分,main包也就是程序的入口包。
第三行导入了标准库的fmt包,这个包在该程序中是用来往屏幕输出字符串,格式化字符串的。随后我们定义了main函数,函数使用fmt包中的Println函数输出hello world。
展开
评论
#青训营 x 字节后端训练营#
go语言 里面的 JSON 操作非常简单,对于一个已有的结构体,我们可以什么都不做,只要保证每个字段的第一个字母是大写,也就是公开字段。那么这个结构体就能用 JSON.marshal 去序列化,变成一个 JSON 的字符串。序列化之后的字符串也能够用 JSON.unmarshal 去反序列化到一个空的变量里面。这样默认序列化出来的字符串的风格是大写字母开头,而不是下划线。我们可以在后面用 json tag 等语法来去修改输出 JSON 结果里面的字段名。
展开
评论
个人成就
文章被阅读 437
掘力值 41
收藏集
0
关注标签
0
加入于