获得徽章 1
- #青训营笔记创作活动#
2月19打卡 day13
今日学习:
文件系统层是MySQL数据库的基础,本质上就是基于机器物理磁盘的一个文件系统,其中包含了配置文件、库表结构文件、数据文件、索引文件、日志文件等各类MySQL运行时所需的文件,这一层的功能比较简单,也就是与上层的存储引擎做交互,负责数据的最终存储与持久化工作。
展开评论1 - #青训营笔记创作活动#
2月18日打卡 day36
今日学习:
select常用于goroutine的完美退出。golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作。
展开评论1 - #青训营笔记创作活动#
2月13日打卡 day10
今日学习:
对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。
展开评论1 - #青训营笔记创作活动#
2月14日打卡 day23
今日学习:
大数取模运算是不可逆的,因此他人无法暴力解密。但是结合欧拉定理,我们可以选取出合适的p(公钥), q(私钥), N(用于取模的大数),让原本不可逆的运算在特定情况下,变得有那么点“可逆”的味道。数学原理决定了我们用公钥加密的数据,只有私钥能解密。反过来,用私钥加密的数据,也只有公钥能解密。
展开评论1 - #青训营笔记创作活动#
2月15日打卡 day35
今日学习:
Authenticator:用于设置登录时认证用户信息的函数,demo 当中定义了一个 loginStruct 结构接收用户登陆信息,并进行认证有效性。这个函数的返回值 users[0] 将为后续生成 jwt token 提供 payload 数据源。
PayloadFunc:它的入参就是 Authenticator 的返回值,此时负责解析 users[0],并将用户名注入 token 的 payload 部分。
Key:指定了用于加密 jwt token 的密钥为 "secret key"。
Timeout:指定了 token 有效期为一个小时。
MaxRefresh:用于设置最大 token 刷新时间,允许客户端在 TokenTime + MaxRefresh 内刷新 token 的有效时间,追加一个 Timeout 的时长。
展开评论1 - #青训营笔记创作活动#
2月11日打卡 day8
今日学习:
一个典型的 Kafka 体系架构包括若干 Producer、若干 Broker、若干 Consumer,以及一个 ZooKeeper 集群,如图所示。其中 ZooKeeper 是 Kafka 用来负责集群元数据的管理、控制器 的选举等操作的。Producer 将消息发送到 Broker,Broker 负责将收到的消息存储到磁盘中,而 Consumer 负责从 Broker 订阅并消费消息。
展开评论1 - #青训营笔记创作活动#
2月10日打卡 day6
今日学习:
为什么DHCP第二阶段不是广播,而是单播?目的机器其实并没有IP地址,有些系统在这种情况下能收单播包,有些则认为不能收,这个跟系统的实现有关。因此,对于能收单播包的系统,会在发DHCP Discover阶段设一个 Broadcast flag = 0 (unicast) 的标志位,告诉服务器,支持单播回复,于是服务器就会在DHCP Offer阶段以单播的形式进行回复。
展开评论1 - #青训营笔记创作活动#
2月11日打卡 day7
今日学习:
1.TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
2.在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
3.对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
展开评论1 - #青训营笔记创作活动#
2月9日 打卡day4
今日学习:
1.软件的架构模式总的说经历了三个阶段的演进:从单机、集中式到分布式微服务架构。
2.单机架构,通常采用C/S架构;集中式架构,一般采用经典的三层架构MVC,系统包括业务接入层、业务逻辑层和数据库层;分布式微服务架构,微服务架构可以实现业务和应用之间的解耦。解决单体应用扩展性差、弹性伸缩能力不足的问题,非常适合在云计算环境下的部署和运营。
3.微服务:
单一职责(DDD思想指导我们对业务逻辑进行拆分,明确各自边界,形成不同的领域,不同的领域对应不同的微服务,这就是单一职责。)
技术独立(不同的领域,不同的团队可以使用不同的开发语言,各自独立,只要按规范提供服务即可。)
数据库分离(每个领域(每个服务)都拥有自己的数据源。)
独立部署(每个领域(每个服务)都是独立的组件,可复用,可替换,降低耦合,易维护,易集群Docker部署服务)
展开评论1