首页
首页
BOT
沸点
课程
直播
活动
AI刷题
NEW
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Go学堂
掘友等级
公众号 「Go学堂」
一枚10年+的老程序员,从PHPer转到Gopher。拥有多年的程序化广告业务系统研发经验。目前专注于go语言的实践学习和分享。关注 “Go学堂”公众号获取更多错误集锦系列文章.https://goxuetang.github.io
获得徽章 7
动态
文章
专栏
沸点
收藏集
关注
作品
赞
41
文章 39
沸点 2
赞
41
返回
|
搜索文章
Go学堂
公众号 「Go学堂」
·
1月前
关注
10天,做了一款生成卡通头像的AI应用,大家看看效果图怎么样
最近闲来无事,做了一款用AI生成的卡通头像,AI接口用的是阿里的,前端是用kotlin开发的,给app起了个名字叫“秒变漫画照”。 下面是一组萌娃的效果图,大家看看怎么样?...
1
评论
分享
Go学堂
公众号 「Go学堂」
·
3月前
关注
jpeg转换webp,就用这个工具。无需更换原图片地址,快速,高效
今天给大家介绍的是一款能够将jpeg图片压缩转换成webp格式的工具。通常的转换工具都是预先将图片转化好,而这个工具是在保持图片原有url的场景下,就能无缝进行转换,超级优...
1
评论
分享
Go学堂
公众号 「Go学堂」
·
4月前
关注
图解:布尔表达式索引
本教程将从零开始,详细介绍如何设置广告定向条件,并一步步教你构建基于这些定向条件的布尔表达式索引,以及如何利用该索引快速检索目标广告。 教程共分为三个主要部分: 布尔表达式...
3
评论
分享
Go学堂
公众号 「Go学堂」
·
4月前
关注
《GitHubWeekly》第 1 期
GitHubWeekly 分享 GitHub 上好玩、有趣的开源项目。通过开源,让你感受到编程的魅力,让你懂得编程不再仅仅是CURD。...
14
评论
分享
Go学堂
公众号 「Go学堂」
·
5月前
关注
给非技术出身老大解释代码质量
我的老板,也就是直接上级,非技术出身。 有一次问我: 经常听到技术同学说,这个小朋友的代码写的很漂亮,作为技术leader,你怎么评判代码好坏? 当时我的第一反应就是代码是...
赞
评论
分享
Go学堂
公众号 「Go学堂」
·
5月前
关注
学会技术≠可以赚钱
只有穷人才会痴迷技术。在这个竞争激励的社会,是钟情于技术,还是勤于思考,跳出这个思维模式,利用技术去创造更广的天地呢?...
1
评论
分享
Go学堂
公众号 「Go学堂」
·
10月前
关注
《操作系统导论》之虚拟化CPU学习笔记:进程
进程是操作系统对运行时的应用程序的名称。进程是操作系统实现进程调度以及资源分配的最基本单位。本文带你了解进程的基础知识...
2
1
分享
Go学堂
公众号 「Go学堂」
·
11月前
关注
一图读懂字节序中的大端序和小端序
大端序与小端序 微处理器架构通常使用两种不同的方法在内存中存储单个字节。这种差异被称为“字节顺序”或“字节序”。 小端序 Intel x86处理器使用的就是小端序来存储一个...
赞
评论
分享
Go学堂
公众号 「Go学堂」
·
11月前
关注
《操作系统导论》学习笔记一:操作系统简介
作为一个程序员,我认为计算机组成原理、数据结构、算法和操作系统的理论知识是基础中的基础。正所谓,万变不离其宗,只有基础打好了,在新的编程技术层出不穷的时代,才会利于不变之地...
2
评论
分享
Go学堂
公众号 「Go学堂」
·
11月前
关注
学习gorm系列十之:使用gorm.Scopes函数复用你的查询逻辑
今天要学习的是gorm.Scopes函数的使用。 该函数的作用就是复用查询条件。 gorm Scopes是什么 在项目中,你一定会遇到过很多需要复用的查询条件。比如常用的场...
赞
1
分享
Go学堂
公众号 「Go学堂」
·
12月前
举报
#每天一个知识点#
下图展示了架构中高可用、高性能和高扩展常用的解决方案。
1. 高可用性
这意味着我们需要确保系统高水平的正常运行时间。我们经常将设计目标描述为“3个9”或“4个9”。“4个9”,即99.99%的正常运行时间,意味着服务每天只能停机8.64秒。
为了实现高可用性,我们需要在系统中增加冗余节点。有以下几种方法可以做到这一点:
● hot-hot结构:两个实例接收相同的输入并将输出发送到下游服务。如果其中一个实例停机,另一个实例可以立即接管。由于双方都向下游发送输出,下游系统需要进行重复数据删除。
● hot-warm结构:两个实例接收相同的输入,只有hot实例将输出发送到下游服务。如果hot实例发生故障,warm实例将接管并开始向下游服务发送输出。
● single-leader Cluster:一个leader实例从上游系统接收数据并复制到其他副本。
● Leaderless cluster:在这种类型的集群中没有领导者。任何写入操作都会被复制到其他实例。只要写入实例的数量加上读取实例的数量大于实例的总数,我们就会得到有效数据。
2. 高性能
这意味着服务需要在一段时间内处理大量请求。常用的指标是QPS(每秒查询数)或TPS(每秒事务数)。
为了实现高性能,我们经常在架构中添加缓存,这样请求就可以在不命中数据库或磁盘等较慢的I/O设备的情况下返回。我们还可以增加计算密集型任务的线程数量。然而,添加太多线程可能会降低性能。最后,我们需要识别系统中的瓶颈并提高其性能。使用异步处理通常可以有效地隔离繁重的组件。
3. 高可扩展性
这意味着系统可以快速轻松地扩展以容纳更多容量(横向可扩展性)或更多功能(纵向可扩展性)。通常,我们会观察响应时间以决定是否需要扩展系统。
为了实现高可扩展性,重要的是将服务的职责分离。为此,微服务被广泛采用。我们还利用服务注册表和负载均衡器将请求路由到适当的实例。
goxuetang.github.io
展开
收起
查看大图
向左旋转
向右旋转
服务端与架构
赞过
分享
评论
3
Go学堂
公众号 「Go学堂」
·
1年前
关注
在Go中,是否该使用切片的指针?
https://www.willem.dev/articles/should-you-use-pointers-to-slices/ 如果你对Go语言的切片还不是很熟悉,那...
1
评论
分享
Go学堂
公众号 「Go学堂」
·
1年前
关注
Go中的匿名结构体:什么是匿名结构体,如何用,何时用?
在项目中,你是否有遇到过一个复杂的结构定义,其中一个结构体包含在另一个结构体中?本文就带你一起了解下匿名结构体的应用场景...
1
评论
分享
Go学堂
公众号 「Go学堂」
·
1年前
关注
学习gorm系列九:gorm中如何使用枚举值
GORM中的枚举介绍 GORM是一个流行的Go ORM,它允许我们定义结构体来表示数据库表,并提供一个接口来执行CRUD操作。枚举在编程中是一个有用的特性,它允许我们定义一...
赞
1
分享
Go学堂
公众号 「Go学堂」
·
1年前
关注
一图理解数据库分片的关键概念
数据库分片是指将数据拆分到多个数据库服务器上,通常用于扩展。然而,分片会对主要的操作和基础设施带来复杂性,所以,在非必要的情况应该避免对数据库进行分片。 延缓分片的几种方法...
赞
评论
分享
Go学堂
公众号 「Go学堂」
·
1年前
举报
今天踩到一个gorm的坑,gorm.Save函数在保存的时候,如果待保存的数据中只包含了表的部分字段,那么未包含的表字段将会自动的更新成对应类型的默认值。
例如有一个表包含了id,name,address,若更新的数据中只有id和name字段,那么使用save函数更新时,会把address字段更新成空值。
#每天一个知识点#
展开
技术交流圈
赞过
分享
2
1
Go学堂
公众号 「Go学堂」
·
1年前
关注
深入学习gorm系列八:深入理解gorm.Save函数
在gorm中可通过Save函数进行更新和插入操作。今天我们就来详细介绍下在哪些场景下会进行更新操作,哪些场景下会进行插入操作。在表中没有主键ID字段,Save函数又是如何执...
2
评论
分享
Go学堂
公众号 「Go学堂」
·
1年前
举报
#每天一个知识点#
开发者都应该懂的缓存系统
从前端到后端的各个环节都有数据缓存!上图说明了在典型架构中我们缓存数据的位置。
沿着架构流程有多个缓存层级。
🔹 1. 客户端:HTTP响应的内容可在浏览器中进行缓存。我们首次通过HTTP请求数据,并在HTTP头部返回一个过期策略;我们再次请求数据,客户端会首先从浏览器缓存中获取数据。
🔹 2. CDN:CDN缓存静态Web资源,客户端可以从附近的CDN节点获取数据。
🔹 3. 负载均衡器:负载均衡器也可以缓存资源。
🔹 4. 消息中间件:消息中间件首先将消息存储在磁盘上,然后消费者根据自己的策略从消息中间件中获取数据。根据保留策略,数据在Kafka集群中缓存一段时间。
🔹 5. 服务层:服务层中有多个缓存层。如果数据不在CPU中缓存,服务将尝试从内存中获取数据。有时,服务具有二级缓存来存储磁盘上的数据。
🔹 6. 分布式缓存:像Redis这样的分布式缓存可以将数据存储在内存中。它提供了比数据库更好的读写性能。
🔹 7. 全文搜索:我们有时需要使用全文搜索,如Elastic Search,进行文档搜索或日志搜索。同时,在搜索引擎中建立数据的副本索引。
🔹 8. 数据库:即使在数据库中,我们也有不同级别的缓存:
- WAL(预写日志):在构建B树索引之前,数据首先写入WAL
- Bufferpool:分配给查询结果缓存的内存区域
- 物化视图:预先计算查询结果并将其存储在数据库表中以获得更好的查询性能
- 事务日志:记录所有事务和数据库更新
- Replication log:用于记录数据库集群中的复制状态
展开
收起
查看大图
向左旋转
向右旋转
服务端与架构
赞过
分享
评论
1
Go学堂
公众号 「Go学堂」
·
1年前
关注
[译] 开发者都应该懂的缓存系统
从前端到后端的各个环节都有数据缓存! 上图说明了在典型架构中我们缓存数据的位置。 沿着架构流程有多个缓存层级。 🔹 1. 客户端:HTTP响应的内容可在浏览器中进行缓存。...
赞
评论
分享
Go学堂
公众号 「Go学堂」
·
1年前
关注
深入学习gorm系列七:深入解析gorm如何高效管理数据库连接
大家好,gorm是每次执行sql语句时都和数据库建立连接吗?gorm是如何应对高并发时的连接的?本期学习gorm是如何高效管理数据库连接的...
1
评论
分享
下一页
个人成就
优秀创作者
文章被点赞
588
文章被阅读
151,861
掘力值
6,134
关注了
9
关注者
292
收藏集
0
关注标签
13
加入于
2019-09-06