封面图

Phoenix框架 从0到1设计业务并发框架 并发线程池的核心设计

4 月 7 日
阅读 4 分钟
182
前两篇文章已经讲述了我设计框架的背景以及抽象设计的细节,今天讲一下并发框架最为关键的并发线程池的核心设计,主要讲一下在设计线程池划分遇到的问题以及最终我采用了哪种方式实现的。
封面图

Phoenix框架 从0到1设计业务并发框架 怎么组织设计一个框架

3 月 18 日
阅读 3 分钟
538
产品站业务静态接口与动态接口都需要调用大量的后台服务进行获取数据进行业务编排,而各个并发调用之间又相互存在依赖,采用并发组设计拆解依赖,同时并发控制调用,BO to DTO 采用统一的 Transfer 层进行设计,开发人员只需要关系定义每次调用事件的 Task 和 Transfer 代码逻辑的书写,直接返回业务数据。

封面图

Phoenix框架 从0到1设计业务并发框架 小米商城产品站革新之路

3 月 7 日
阅读 2 分钟
310
小米商城产品站之前由于历史原因,存在着诸多问题与不便,随着技术的快速变革,技术部中台化的建设,越来越不适用于现在快速迭代的业务需求,接下来我将以技术的视角讲解我们遇到的痛点,以及解决这些痛点的思路,也就是 Phoenix 框架诞生的故事。
封面图

2023 年为何我还在使用 RSS

2023-12-04
阅读 5 分钟
604
RSS(英文全称:RDF Site Summary 或 Really Simple Syndication),中文译作简易信息聚合,也称聚合内容,是一种消息来源格式规范,用以聚合多个网站更新的内容并自动通知网站订阅者。使用 RSS 后,网站订阅者便无需再手动查看网站是否有新的内容,同时 RSS 可将多个网站更新的内容进行整合,以摘要的形式呈现,有助于...
封面图

谈谈 ChatGPT

2023-11-12
阅读 2 分钟
475
说起我真正使用落地的产品是从 22 年 11 月份开始,那时候 ChatGPT 刚发布灰度出来,面对这个对话框一样的界面,我发现这个简简单单甚至有些简陋的页面,竟然是技术变革的入口,看过大模型相关理论以及原理的同学,大家会发现,这个 AI 已经学习了我们近十年的信息,也就是说,他的知识储备已经高于我们在这个世界上的任...
封面图

我们是如何用 Prometheus 对网关进行监控的

2023-07-23
阅读 5 分钟
680
近期,我们对 APP 网关 Gateway 做了升级,由于项目创建时间过早(6年前的项目),那时候还没有好的包管理工具,使用的是最原始的 Go Path 来进行项目的依赖管理,历史包袱比较重,项目中很多的第三方引用都是直接将代码拷贝到项目目录下,升级与维护起来特别麻烦,升级之后就是现在官方主推的是 Go module 包管理方式。
封面图

Git 命令 reset 和 revert 的区别

2023-07-22
阅读 4 分钟
411
在团队开发中,使用 Git 作为版本开发工具,可以便捷地协同多人管理并行开发,但是由于自己或者其他人代码提交污染了远程分支,就需要对远程代码进行恢复操作,Git 提供了 reset 和 revert 两种命令来进行恢复操作,这两种操作效果是截然不同的,不太清楚这个原理的同学需要了解一下,以免在实际的开发过程中翻车,导致...
封面图

Git常用命令汇总

2023-07-22
阅读 2 分钟
554
常规操作git push origin test 推送本地分支到远程仓库git rm -r --cached 文件/文件夹名字 取消文件被版本控制git reflog 获取执行过的命令git log --graph 查看分支合并图git merge --no-ff -m '合并描述' 分支名 不使用Fast forward方式合并,采用这种方式合并可以看到合并记录git check-ignore -v 文件名 查看忽略规...
封面图

FAAS 调研笔记

2023-07-18
阅读 4 分钟
518
功能即服务 (FAAS) 是一类云计算服务,它提供了一个平台,允许客户开发、运行和管理应用程序功能,而 无需构建和维护通常与开发和启动应用程序相关的基础设施的复杂性。 构建遵循此模型的应用程序是实现“无服务器”体系结构的一种方式,通常在构建微服务应用程序时使用。
封面图

如何接手并维护一个项目

2023-07-11
阅读 4 分钟
4k
在工作中,接手负责管理别人开发或者前人开发的项目是每个开发人员的工作任务之一,那么,如何快速并且高效的消化接手过来的项目呢,本文主要讲解一些方法与实践技巧,希望可以帮助你快速了解你接手的项目。
封面图

[译] 方法是否应该在 T 或 *T 上声明

2021-07-04
阅读 2 分钟
1.6k
友情提示:此篇文章大约需要阅读 3分钟49秒,不足之处请多指教,感谢您的阅读。 订阅本站译文原地址:Should methods be declared on T or *T – David在 Go 中,对于任何的类型 T,都存在一个类型 *T,他是一个表达式的结果,该表达式接收的是类型 T ,例如: {代码...} 这两种类型,T 和 *T 是不同的,但 *T 不能代替 T...
封面图

Go 语言开发设计指北

2021-03-10
阅读 7 分钟
2.8k
Go 语言是一种强类型、编译型的语言,在开发过程中,代码规范是尤为重要的,一个小小的失误可能会带来严重的事故,拥有一个良好的 Go 语言开发习惯是尤为重要的,遵守开发规范便于维护、便于阅读理解和增加系统的健壮性。
封面图

Go 并发编程之 Mutex

2020-11-15
阅读 7 分钟
3.7k
我们比较常见的大型项目的设计中都会出现并发访问问题,并发就是为了解决数据的准确性,保证同一个临界区的数据只能被一个线程进行操作,日常中使用到的并发场景也是很多的:
封面图

优雅的使用 Brew 切换 Go 版本

2020-11-01
阅读 2 分钟
7.4k
Brew 是 Mac 上包管理工具,和 Linux 上的 apt 、yum、rpm 一样,可以提供非图形化软件的安装,昨天在打造宇宙最强 IDE 的时候,使用brew工具更新了一下软件包,是我的 Go 版本升级到了最新版本,同时之前配置的多版本 Go 抹掉了,现在写一下记录,你如果需要的话可以使用一下。
封面图

Go IP 段范围校验

2020-09-20
阅读 2 分钟
5.2k
简单来讲,就是将 IPv4 原有的四段,分别对比 IP 地址,查看每一段是否在 IP 段范围内,可以用于段控制在每一个特定段 0 ~ 255 内筛选,例如:
封面图

Golang 标准库 限流器 time/rate 设计与实现

2020-08-30
阅读 5 分钟
2.1k
限流器是后台服务中十分重要的组件,在实际的业务场景中使用居多,其设计在微服务、网关、和一些后台服务中会经常遇到。限流器的作用是用来限制其请求的速率,保护后台响应服务,以免服务过载导致服务不可用现象出现。
封面图

Go 语言实现 RPC 调用

2020-08-13
阅读 3 分钟
5.9k
在分布式计算,远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)。RPC 是一种服务器-客户端( Client/Ser...
封面图

使用 GVM 工具管理 Go 版本

2020-07-12
阅读 2 分钟
3.7k
在 Go 项目开发中,团队要保持开发版本一致,怎么能够快速的安装及部署并且切换 Go 环境,在这里推荐一款工具 GVM ( Go Version Manager ),它可以便捷切换与自定义 Go Path 、Go Root 等参数,是一款实打实的多版本安装及管理利器。
封面图

Go 语言操作 MySQL 之 SQLX 包

2020-07-07
阅读 6 分钟
11.3k
友情提示:此篇文章大约需要阅读 14分钟5秒,不足之处请多指教,感谢你的阅读。 订阅本站SQLX 库sqlx是 Go 的软件包,它在出色的内置database/sql软件包的基础上提供了一组扩展。该库兼容sql原生包,同时又提供了更为强大的、优雅的查询、插入函数。该库提供四个处理类型,分别是:sqlx.DB – 类似原生的 sql.DB;sqlx.Tx...
封面图

Restful API 设计指北

2020-07-05
阅读 3 分钟
1.8k
近期学习了Go语言,跟着七米在学习,学习过程中了解到了 API 的一个设计规范,也就是本文要讲的 Restful API 设计模式,现在互联网处在前后端分离的阶段,API 的书写及规范化是非常重要的,针对于 API 中 Restful API 中设计比较规范的是 Github API,可以直接访问他们的 [链接] 直接查看 Github 针对与公共接口的链接及...
封面图

Go 语言操作 MySQL 之 事务操作

2020-07-03
阅读 2 分钟
10.7k
数据库事务( transaction )是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。 事务由事务开始与事务结束之间执行的全部数据库操作组成。
封面图

Go 语言操作 MySQL 之 预处理

2020-07-02
阅读 3 分钟
9.6k
预处理是 MySQL 为了防止客户端频繁请求的一种技术,是对相同处理语句进行预先加载在 MySQL 中,将操作变量数据用占位符来代替,减少对 MySQL 的频繁请求,使得服务器高效运行。
封面图

Go 语言操作 MySQL 之 CURD 操作

2020-07-01
阅读 4 分钟
15.8k
MySQL 是目前开发中最常见的关系型数据库,使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql-driver/mysql来实现,
封面图

Go 语言基础 数组、切片、映射

2020-06-17
阅读 2 分钟
2k
友情提示:此篇文章大约需要阅读 5分钟14秒,不足之处请多指教,感谢你的阅读。订阅本站在 Go 语言中,为便于存储及管理用户数据,其数据结构设计分为数组 Array、切片 Slice、映射 Map 三种结构。近期又看了 Go 语言基础的内容,看了一下这三种结构实现的原理:数组 Array数组是切片和映射的基础数据结构;数组是长度固...
封面图

如何将豆瓣观影记录实时同步至博客中

2020-05-31
阅读 11 分钟
2k
事情的起因是这样的,前几日在看idealclover大佬的博客,不经意间看到了他的豆瓣观影记录,他博客中关于豆瓣观影记录是实时同步的,很好奇是如何实现的,经过查看,他是爬取的豆瓣观影界面来实现的,其实关于豆瓣观影记录,网上也有很多的教程,恰巧自己所学的 Go语言也可以做简单的爬虫实现其效果,于是开始上手造轮子...
封面图

Go 语言使用 net 包实现 Socket 网络编程

2020-05-25
阅读 5 分钟
19.8k
TCP/IP 传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP 传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP 传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP 传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络...
封面图

Go 语言进阶学习路线图

2020-05-24
阅读 1 分钟
4k
从去年开始接触学习 Go 语言,一直没有一个明确的学习方向,只是一贯的跟着视频学习,虽自己做了衍生开发的项目,但是使用的技术也是 Go 语言中的冰山一角,近期在 Github 中找到了一个 Star 比较高的 Go语言学习成长路线图,才发现自己所学的仅仅是入门而已,若想得到一个体系化的进步,在最学习的过程中要追求的是高效...
封面图

怎么优雅的选择 MySQL 存储引擎

2020-05-24
阅读 3 分钟
3.2k
对于数据库这一块询问比较多的就是在 MySQL 中怎么去选择一种何时当前业务需求的存储引擎,而 MySQL 中支持的存储引擎又有很多种,那么 MySQL 中分别又有那些,怎么优雅的使用呢?