- 博客(120)
- 收藏
- 关注
原创 常用英语单词总结(每天翻看下)
dockerdocker history 查看镜像的历史docker export 容器id > 文件名.tar 导出容器(本质:导出镜像文件)docker import redis.tar redis.V1 导入export import (镜像名)save load (容器名)docker build 生成镜像from 指定基础镜像run 一次构建一...
2019-12-05 10:19:11
355
原创 Go语言基础之并发
下面的表格中总结了对不同状态下的通道执行相应操作的结果。**注意:**对已经关闭的通道再执行 close 也会引发 panic。
2026-05-16 09:50:36
385
原创 Error接口和错误处理
当一个函数或方法需要返回错误时,我们通常是把错误作为最后一个返回值。例如下面标准库 os 中打开文件的函数。它接收一个字符串参数返回包含该字符串的错误。我们可以在函数返回时快速创建一个错误。进行比较,以此来判断函数是否返回错误。此外我们还可以自己定义结构体类型,实现``error`接口。我们可以根据需求自定义 error,最简单的方式是使用。,可以实现基于已有的错误再包装得到一个新的错误。当我们需要传入格式化的错误描述信息时,使用。为了不丢失函数调用的错误链,使用。对于这种二次包装的错误,
2026-05-13 22:12:09
59
原创 Go语言基础之接口
type 接口名 interface {方法名1(参数列表1) 返回值列表1方法名2(参数列表2) 返回值列表2...接口类型名:Go语言的接口在命名时,一般会在单词后面添加er,如有写操作的接口叫Writer,有关闭操作的接口叫closer等。接口名最好要能突出该接口的类型含义。方法名:当方法名首字母是大写且这个接口类型名首字母也是大写时,这个方法可以被接口所在的包(package)之外的代码访问。参数列表、返回值列表:参数列表和返回值列表中的参数变量名可以省略。举个例子,定义一个包含。
2026-04-24 20:18:32
194
原创 Go语言基础之包
Go 中的包是用来组织代码的基本单位。一个包中可以包含多个 .go 文件,这些文件共同组成一个逻辑模块。使用包可以实现代码复用、职责划分和命名空间隔离。例如,在之前的章节中我们频繁使用了fmt这个内置包。")我们可以根据自己的需要创建自定义包。一个包可以简单理解为一个存放.go文件的文件夹。该文件夹下面的所有.go文件都要在非注释的第一行添加如下声明,声明该文件归属的包。其中:package:声明包的关键字packagename:包名,可以不与文件夹的名称一致,不能包含。
2026-04-19 20:59:09
403
原创 Go语言基础之结构体
类型别名与类型定义表面上看只有一个等号的差异,我们通过下面的这段代码来理解它们之间的区别。//类型定义//类型别名结果显示a的类型是,表示main包下定义的NewInt类型。b的类型是int。MyInt类型只会在代码中存在,编译完成时并不会有MyInt类型。使用type和structtype 类型名 struct {字段名 字段类型字段名 字段类型类型名:标识自定义结构体的名称,在同一个包内不能重复。字段名:表示结构体字段名。结构体中的字段名必须唯一。字段类型:表示结构体字段的具体类型。
2026-04-19 08:10:26
241
原创 Go语言基础之map
是 Go 语言中声明映射(字典)类型的语法,用于存储键值对集合。KeyType必须为可比较类型(如intstring、固定长度的数组等,不可为切片或函数)。ValueType可以是任意类型,包括嵌套的map或其他复杂结构。map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为:空映射声明需使用makevar m1 map[string]int // 未初始化,值为 nil,操作会 panicm2 := make(map[string]int) // 已初始化,可安全操作。
2026-04-11 11:32:02
274
原创 Go语言基础之切片
name:表示变量名T:表示切片中的元素类型// 声明切片类型var a []string //声明一个字符串切片 告诉 Go 语言:“我以后可能会用到一个字符串切片”。但是你 没有给它分配任何内存var b = []int{} //声明一个整型切片并初始化 仅声明了变量 b ,还加上了 {} ,这表示你 显式地初始化 了它。你告诉 Go 语言:“给我建一个切片,虽然我现在不往里面放数据,但我要它真真切切地存在”。
2026-03-22 20:31:57
459
原创 Go语言基础之数组
var 数组变量名 [元素数量]T数组变量名:自定义的变量名称,遵循 Go 的变量命名规则。元素数量:数组的长度,必须是常量表达式(编译时确定)。T:数组元素的类型,可以是任何有效的 Go 数据类型(如intstringfloat64等)。//定义一个长度为 5 的整型数组定义一个长度为 3 的字符串数组并初始化。
2026-03-21 21:58:59
300
原创 Go语言基础之基本数据类型
整型分为以下两个大类:按长度分为:int8、int16、int32、int64对应的无符号整型:uint8、uint16、uint32、uint64。
2026-03-21 16:39:23
201
原创 Go语言基础之变量和常量
const (6、多常量声明中的iotaconst (第一行iota初始值为0,所以A = iota赋值为0。中,iota仍然是0(因为这是同一行的常量声明),所以。当前iota仍然是0,直到遇到下一个常量声明(即C, D)才会递增。第二行C, D由于C, D是一个新的常量声明,iota会递增为1。C隐式继承了前一个表达式的模式,即iota,所以C = 1。D也继承了前一个表达式的模式,即iota + 1,所以。
2026-03-21 10:50:14
237
原创 pc端手机号验证码登陆页面
useContext 使用 存储全局用户信息。登陆接口,使用阿里云服务发送短信。创建页面路由 制定接口规范。为什么不用redux。
2023-07-11 18:28:19
646
原创 第七章 环境软件的安装
系统偏好设置 - 通用 - 首选以标签页显示文稿-始终。nvm install 18.7.0 安装指定的版本。nvm use 18.6.0 切换到别的版本。按住 CMD + shift + p。安装 mysql Workbench。nvm ls 查看当前安装的版本。配置同一个项目,在不同的选项卡。node -v node版本。安装多个node版本。
2023-07-11 01:48:58
244
原创 第五章 React18的并发渲染原理
遍历完 想恢复中断的 最多只能恢复子节点fiber链表同步:都在渲染 绘制并发:需要调用startTransition才有并发workerLoopConcurrent 只有一次渲染 绘制shouldYield 执行的时间超过5毫秒时间分片就会被中断一下 就会执行插入更高优先级的任务直到没有操作 才会commit render渲染 绘制。
2023-07-11 00:11:41
450
原创 第三章 技术选型
和服务器端运行时,它可以使客户端准确获取到需要的数据,没有任何冗余。必须有人可以兜底,可以解决。修改的版本最好可以上下兼容。核心项目不要用最新的技术。2、使用TypeScript编程。1、最像JAVA的node框架。5、告诉增长的star数。3、丰富的第三方模块。4、强大的脚手架工具。
2023-07-10 22:37:57
333
原创 第二章 标准的项目开发流程
针对产品需求文档 PRD 进行讨论。产品经理,研发部门,前端,后端。5、接口设计评审,提供接口文档。4、技术方案评审 (前后端)9、提测报告(给测试人员)8、冒烟用例(前后端)12、发布上线/验证。
2023-07-10 22:17:24
375
原创 第十二章 elk
ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比 Logstash,最左边的是业务服务器集群,上面安装了filebeat做日志采集,同时把采集的日志分别发送给两个logstash服务。logstash服务把接受到的日志经过格式处理,转存到ES DataNode。ES DataNode 会把收到的数据,写磁盘,建索引库。日志分布在多台不同的服务器上,业务一旦出现故障,需要一台台查看日志。单个日志文件巨大,无法使用常用的文本工具分析,检索困难;
2023-07-08 15:13:40
873
原创 第十二章 kafka
Producer即生产者,消息的产生者,是消息的入口。:Broker是,每个服务器上有一个或多个kafka的实例,我们姑且认为每个broker对应一台服务器。每个kafka集群内的broker都有一个不重复的编号,如图中的broker-0、broker-1等……主要负责处理读和写的请求:消息的主题,可以理解为消息的分类,kafka的。在每个broker上都可以创建多个topic。:Topic的分区,每个topic可以有多个分区,分区的作用是做负载,提高kafka的吞吐量。
2023-07-06 22:16:48
766
原创 第十章 服务降级
降级的最终目的是保证核心服务的高可用。过程就是丢卒保帅,有些服务是无法降级的,比如支付。当我们的服务器压力剧增为了保证核心功能的可用性 ,而选择性的降低一些功能的可用性,或者直接关闭该功能。这就是典型的丢车保帅了。就比如贴吧类型的网站,当服务器吃不消的时候,可以选择把发帖功能关闭,注册功能 关闭,改密码,改头像这些都关了,为了确保登录和浏览帖子这种核心的功能。降级的原理:就是降低次要功能的可用性实用性,增加核心功能的高可用性。降级的实现原理是多样多样的。
2023-07-06 14:50:24
218
原创 第九章 elasticsearch集群与商品搜索
1、支持复杂的查询;2、ES从一出生就是为分布式、集群化而 生的,不仅方便横向扩展、动态增加节点创建索引的时候,定义3个分片,每个分片1个副本集,一个就有6个分片如图,不论我们有多少个es实例,当用户需要对es进行增删改查的时候,连接任何一台节点都行,es内部会进行转发。这也是es集群的个性之一。
2023-07-06 13:35:18
685
原创 第八章 实现商品详情数据异构及静态化
2 、直接模式,对于部分高并发请求, 为了提高吞吐率, 有必要砍掉一些环节和应用来实现快速响应,如上图,这里我们将普通模式中的php-fpm和php框架砍掉了。1、 普通模式,用户获得redis数据需要经过nginx,lua-nginx-module是nginx的lua模块。nginx直接从redis获取数据。对应的ngnix配置。
2023-07-06 12:46:22
825
原创 第七章 商品详情三
3、前端访问商品详情页: 先请求的mongodb中的聚合数据,借此实现页面展示(前端部分略),而对于有部分数据,是需要买家点击后才显示的, 这类数据是在 买家点击后到redis异构数据中去请求数据。2、数据worker(192.168.232.100)作为rabbitmq的消费者,对消息进行消费, 并将库存数据放入mongodb集群和redis,mongodb中的是聚合数据(),而redis当中的 是异构数据。
2023-07-06 11:34:21
259
原创 第六章 rabbitmq高可用集群
在服务之间会采用mq进行消息通信,而rabbitmq本身也如同consul一样,如果只有一个节点那么就可能出现宕机的问题,并且基于mq的特点我们是可以在多个服务之间使用同一个mq来相互通信,因此高可用的架构设计就必不可少。
2023-07-06 10:43:36
1079
原创 第五章 商品服务发现与客户服务通信
正常来说consul是会向服务去做心跳检测的;这个操作很简单只需要基于consul的参数进行配置即可处理好,当然在这之前我们需要了解当前rpc的运行协议是什么。运用tcp来实现rpc通信;consul心跳检测只需要修改配置即可实现。这里我们可以利用一个shell脚本设置.env内容处理。
2023-07-05 22:23:01
1454
原创 第四章 商品详情分析与高可用负载均衡
ii:可以选择将商品详情单独拆分成一个服务,将它放到商品模块,但实际场景中,商品详情可以单独部署成一个服务,这个实现起来也很简单,增加商品详情服务器然后注册到consul即可。我们采用了数据聚合,将其他服务和模块的数据聚合到商品详情下的mongodb,前端请求mongodb获得聚合完成数据。对于商品模块以及首页等查询多,几乎无插入的内容,我们可以考虑不同层面的缓存策略以便可以更好的提高查询的效率;也就是说需要获取以及展示的数据就非常的多,因此在根据不同的唯度拆分的情况下就需要从不同的服务获取相关的数据。
2023-07-05 19:06:28
149
原创 第三章 ngnix动态负载均衡
1. worker进程重启的过程会等待现有的请求处理完毕(需要一定的时间) 2. 重启的过程中无法 处理请求-可能会造成一定的性能消耗(可能会堆积一些用户的请求无法处理)我们正常的情况就是,如果需要额外增加一台服务器,则会出现一个情况,就是它需要我们进行重启才能生效;client【0】 -》 nginx(upstream xx { 【1】 }) -》consul (【2】)《- 服务(【3】)【3】:服务在启动的时候通过put向consul注册自己的信息。【2】:如同一个数据库记录服务器的信息。
2023-07-05 18:56:43
1655
原创 第二章 swoft 快速入门
RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”。目前分布式系统架构 ,微服务中不同的系统之间的远程通信和相互调用的重要的环节。客户端通过发送一个规定的rpc协议,请求服务的注册中心,由服务注册中心检索可用服务并且实现调用转发,服务内容由代码服务器在启动的时候,注册到服 务中心。服务中心暂时利用redis存储内容。
2023-07-05 18:31:56
729
1
原创 redis常见知识点总结
1、redis的使用场景限流降级秒杀排行榜2、限流流量达到一定的阀值时会拒绝一部分流量限流的算法漏桶计数器请求来了+1操作超出时间间隔的充置。如一分钟的访问次数不能超过100个当有突发性并发时如1秒内瞬间发送200个请求。会有临界问题漏桶算法中的临界问题指的是当桶中的数据量接近桶的最大容量时,由于数据处理和发送速度是固定的,这时就有可能发生大量的丢包现象。
2023-06-28 14:37:07
975
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅