获得徽章 0
负载均衡的三种解决方案:集中式LB(Proxy Model)、进程内LB(Balancing-aware Client)和独立LB进程(External Load Balancing Service)。这些方案用于构建高可用、高性能的通信服务,包括服务注册与发现、负载均衡和容错处理机制。
gRPC的准备:介绍了gRPC框架默认使用Google开源的protocol buffers作为结构数据序列化机制,提供了客户端和服务器端的接口,适用于移动端(iOS/Android)到服务器端的通讯解决方案。同时提供了安装golang protobuf的步骤。
简单的protobuf使用:展示了一个简单的protobuf文件示例,并说明如何通过protoc工具生成不同语言的.pb.go文件,以及介绍了四种不同的RPC方式,包括简单RPC、服务器端流式RPC、客户端流式RPC和双向流式RPC。
gRPC的准备:介绍了gRPC框架默认使用Google开源的protocol buffers作为结构数据序列化机制,提供了客户端和服务器端的接口,适用于移动端(iOS/Android)到服务器端的通讯解决方案。同时提供了安装golang protobuf的步骤。
简单的protobuf使用:展示了一个简单的protobuf文件示例,并说明如何通过protoc工具生成不同语言的.pb.go文件,以及介绍了四种不同的RPC方式,包括简单RPC、服务器端流式RPC、客户端流式RPC和双向流式RPC。
展开
评论
点赞
pnpm 内部使用基于内容寻址的文件系统来存储磁盘上所有的文件,这个文件系统出色的地方在于:
不会重复安装同一个包。
即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码。
不会重复安装同一个包。
即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码。
展开
评论
点赞
学习Go后端开发的路线如下:
1. 学习Go编程语言的基础知识,包括语法、数据类型和控制结构。
2. 理解如何在Go中使用包和导入。
3. 探索Go中的并发和goroutine的概念。
4. 研究Go的标准库,其中包括网络、文件处理等功能。
5. 使用Gin或Echo等框架深入学习Go的Web开发。
6. 学习使用GORM或SQLx等库在Go中进行数据库集成。
7. 熟悉Go中的测试和调试技术。
8. 通过构建小项目和练习编码挑战来提升技能。
9. 保持与Go社区资源的联系,如博客、论坛和会议。
记得定期练习并实践真实项目,以巩固对Go后端开发的理解。祝你在学习路上好运!
1. 学习Go编程语言的基础知识,包括语法、数据类型和控制结构。
2. 理解如何在Go中使用包和导入。
3. 探索Go中的并发和goroutine的概念。
4. 研究Go的标准库,其中包括网络、文件处理等功能。
5. 使用Gin或Echo等框架深入学习Go的Web开发。
6. 学习使用GORM或SQLx等库在Go中进行数据库集成。
7. 熟悉Go中的测试和调试技术。
8. 通过构建小项目和练习编码挑战来提升技能。
9. 保持与Go社区资源的联系,如博客、论坛和会议。
记得定期练习并实践真实项目,以巩固对Go后端开发的理解。祝你在学习路上好运!
展开
评论
点赞
作为程序员的我们应该都有一个感受,一旦进入某个项目,从开发,到发布生产,到 hotfix,到后期维护,那基本都有你的份,正在开发某个 feature,老板突然跳出来说让你做生产上的 hotfix 更是家常便饭,面对这种情况,使用 Git 的我们通常有两种解决方案:
评论
点赞
使用 Git 作为代码版本管理,早已是现在开发工程师必备的技能。可大多数工程师还是只会最基本的保存、拉取、推送,遇到一些commit管理的问题就束手无策,或者用一些不优雅的方式解决。
本文分享我在开发工作中实践过的实用命令。这些都能够大大提高工作效率,还能解决不少疑难场景。下面会介绍命令,列出应用场景,手摸手教学使用,让同学们看完即学会。
本文分享我在开发工作中实践过的实用命令。这些都能够大大提高工作效率,还能解决不少疑难场景。下面会介绍命令,列出应用场景,手摸手教学使用,让同学们看完即学会。
展开
1
点赞
Options API的生命周期:
beforeCreate: 在实例初始化之后、数据观测(initState)和 event/watcher 事件配置之前被调用。 对于此时做的事情,如注册组件使用到的store或者service等单例的全局物件。 相比Vue2没有变化。
created: 一个新的 Vue 实例被创建后(包括组件实例),立即调用此函数。 在这里做一下初始的数据处理、异步请求等操作,当组件完成创建时就能展示这些数据。 相比Vue2没有变化。
beforeMount: 在挂载之前调用,相关的render函数首次被调用,在这里可以访问根节点,在执行mounted钩子前,dom渲染成功,相对Vue2改动不明显。
onMounted: 在挂载后调用,也就是所有相关的DOM都已入图,有了相关的DOM环境,可以在这里执行节点的DOM操作。在这之前执行beforeUpdate。
beforeCreate: 在实例初始化之后、数据观测(initState)和 event/watcher 事件配置之前被调用。 对于此时做的事情,如注册组件使用到的store或者service等单例的全局物件。 相比Vue2没有变化。
created: 一个新的 Vue 实例被创建后(包括组件实例),立即调用此函数。 在这里做一下初始的数据处理、异步请求等操作,当组件完成创建时就能展示这些数据。 相比Vue2没有变化。
beforeMount: 在挂载之前调用,相关的render函数首次被调用,在这里可以访问根节点,在执行mounted钩子前,dom渲染成功,相对Vue2改动不明显。
onMounted: 在挂载后调用,也就是所有相关的DOM都已入图,有了相关的DOM环境,可以在这里执行节点的DOM操作。在这之前执行beforeUpdate。
展开
评论
点赞
需求描述: 当前存在一个页面级的复杂表单,当用户在未保存表单数据的情况下,就想去浏览其他页面。为了提高用户体验,需要增加一个二次确认的弹窗,提示用户是否确认在未保存数据的情况下,继续执行跳转的操作。如果确认,继续执行用户想要的操作,取消则停留在当前位置。
方法1: Prompt
目前用得最多、也是最简单的方法就是使用react-router 提供的Prompt组件。 Prompt可用于在用户导航离开当前页面时显示一个提示或确认对话框,可以用来阻止用户无意中离开未保存的表单或数据。
方法1: Prompt
目前用得最多、也是最简单的方法就是使用react-router 提供的Prompt组件。 Prompt可用于在用户导航离开当前页面时显示一个提示或确认对话框,可以用来阻止用户无意中离开未保存的表单或数据。
展开
评论
点赞
pnpm 内部使用基于内容寻址的文件系统来存储磁盘上所有的文件,这个文件系统出色的地方在于:
不会重复安装同一个包。
即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码。举个
不会重复安装同一个包。
即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码。举个
展开
评论
点赞
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
评论
点赞
SpringBoot默认的内嵌容器是Tomcat,也就是我们的程序实际上是运行在Tomcat里的。所以与其说SpringBoot可以处理多少请求,到不如说Tomcat可以处理多少请求。
关于Tomcat的默认配置,都在spring-configuration-metadata.json文件中,对应的配置类则是org.springframework.boot.autoconfigure.web.ServerProperties。
关于Tomcat的默认配置,都在spring-configuration-metadata.json文件中,对应的配置类则是org.springframework.boot.autoconfigure.web.ServerProperties。
展开
评论
点赞
1、ESmodule的语法。承接上次学习打卡时学习到的CommonJS,ES module是由ECMA推出的模块化规范,与CommonJS中的导入导出不同,CommonJS使用module.exports,require进行导入和导出,而ES module使用的是export和import进行导入和导出,同时了解了ES module的解析过程。
2、学习了包管理的工具,npm,yarn,cnpm,学习了工具的使用,以及对部分文件的了解,比如package.json和package_lock.json以及里面字段了解释,也了解了npm install 的原理。
2、学习了包管理的工具,npm,yarn,cnpm,学习了工具的使用,以及对部分文件的了解,比如package.json和package_lock.json以及里面字段了解释,也了解了npm install 的原理。
展开
评论
点赞
Raft协议依赖于leader的存在和稳定性,如果leader频繁变更或出现网络分区,Raft协议的性能和可用性会受到影响。同时,leader也是一个性能瓶颈,因为它要处理所有的客户端请求和日志复制。
Raft协议在日志复制时采用了同步阻塞的方式,即leader要等待大多数follower确认日志条目后才能提交并应用到状态机中。这样会增加系统的延迟和负载,降低吞吐量。
Raft协议在日志复制时采用了同步阻塞的方式,即leader要等待大多数follower确认日志条目后才能提交并应用到状态机中。这样会增加系统的延迟和负载,降低吞吐量。
展开
评论
点赞
分治法
分治法在每一层递归上都有三个步骤:
分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;
解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题;
合并:将各个子问题的解合并为原问题的解。
它的一般的算法设计模式如下:
Divide-and-Conquer(P)
1. if |P|≤n0
2. then return(ADHOC(P))
3. 将P分解为较小的子问题 P1 ,P2 ,...,Pk
4. for i←1 to k
5. do yi ← Divide-and-Conquer(Pi) △ 递归解决Pi
6. T ← MERGE(y1,y2,...,yk) △ 合并子问题
7. return(T)
其中|P|表示问题P的规模;n0为一阈值,表示当问题P的规模不超过n0时,问题已容易直接解出,不必再继续分解。ADHOC(P)是该分治法中的基本子算法,用于直接解小规模的问题P。因此,当P的规模不超过n0时直接用算法ADHOC(P)求解。算法MERGE(y1,y2,...,yk)是该分治法中的合并子算法,用于将P的子问题P1 ,P2 ,...,Pk的相应的解y1,y2,...,yk合并为P的解。
展开
评论
点赞
Raft协议依赖于leader的存在和稳定性,如果leader频繁变更或出现网络分区,Raft协议的性能和可用性会受到影响。同时,leader也是一个性能瓶颈,因为它要处理所有的客户端请求和日志复制。
Raft协议在日志复制时采用了同步阻塞的方式,即leader要等待大多数follower确认日志条目后才能提交并应用到状态机中。这样会增加系统的延迟和负载,降低吞吐量。
Raft协议在日志复制时采用了同步阻塞的方式,即leader要等待大多数follower确认日志条目后才能提交并应用到状态机中。这样会增加系统的延迟和负载,降低吞吐量。
展开
评论
点赞
RabbitMQ 适用场景和需求
中小项目,项目消息量小、吞吐量不高、对延时敏感。
遗留应用,如需要与旧系统或第三方系统进行集成或通信。
复杂路由,如需要根据不同的规则或条件来分发或过滤消息。
任务分发,如需要将任务均匀地分配给多个工作进程或消费者
中小项目,项目消息量小、吞吐量不高、对延时敏感。
遗留应用,如需要与旧系统或第三方系统进行集成或通信。
复杂路由,如需要根据不同的规则或条件来分发或过滤消息。
任务分发,如需要将任务均匀地分配给多个工作进程或消费者
展开
评论
点赞
1. 培养自学能力,注意课外钻研,拓宽思路。
2. 讲究效率,留心最兴奋、状态最好的学习时段,抓紧时间解决难题。
3. 回家后由自己灵活支配,复习当天的功课,阅读拓展知识。
4. 课外书籍内容广泛,通过阅读拓展视野,开阔思路。
5. 思考问题上投入了大量时间,
2. 讲究效率,留心最兴奋、状态最好的学习时段,抓紧时间解决难题。
3. 回家后由自己灵活支配,复习当天的功课,阅读拓展知识。
4. 课外书籍内容广泛,通过阅读拓展视野,开阔思路。
5. 思考问题上投入了大量时间,
评论
3
数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
有关数据链路层的重要知识点:
有关数据链路层的重要知识点:
展开
评论
点赞
定义 连接在Internet中的每一台主机(或 路由器)的全球唯一的标识符
组成 IP地址 = 32位 = 网络号 + 主机号;即IP地址::={<网络号>,<主机号>}
其中:
网络号:标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。
主机号:标志该主机(或路由器)。一个主机号在它面前的网络号所指明的网络范围必须是唯一的。
组成 IP地址 = 32位 = 网络号 + 主机号;即IP地址::={<网络号>,<主机号>}
其中:
网络号:标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。
主机号:标志该主机(或路由器)。一个主机号在它面前的网络号所指明的网络范围必须是唯一的。
展开
评论
点赞
定义 连接在Internet中的每一台主机(或 路由器)的全球唯一的标识符
组成 IP地址 = 32位 = 网络号 + 主机号;即IP地址::={<网络号>,<主机号>}
其中:
网络号:标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。
主机号:标志该主机(或路由器)。一个主机号在它面前的网络号所指明的网络范围必须是唯一的。
组成 IP地址 = 32位 = 网络号 + 主机号;即IP地址::={<网络号>,<主机号>}
其中:
网络号:标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一的。
主机号:标志该主机(或路由器)。一个主机号在它面前的网络号所指明的网络范围必须是唯一的。
展开
评论
点赞