跳到主要内容

7 篇博文 含有标签「后端」

后端开发和服务端技术

查看所有标签

Go 语言项目源码解析:定时任务库 cron

· 阅读需 6 分钟
Marvin Zhang
软件工程师 & 开源爱好者

引子

GitHub 上有很多优秀的开源项目,代码都是透明可见的,每个人只要有账号就可以下载来查看。而我们作为软件开发者来说也可以从中学习到很多知识,以及体会如何正确的工程化、单元测试、统一代码风格等,甚至从源码中找到问题,并提出 Pull Request 来贡献开源社区。今天这篇文章将解析 Go 语言开源项目 robfig/cron源码,这个项目不大,知名度较高,注释也比较清楚,很适合新手学习如何阅读和解析源码。

环境准备

首先我们将源码克隆(Fork)为自己的个人仓库,只需要在 GitHub 项目主页点击 Fork 按钮,然后输入项目名称点击确认即可。克隆完毕后,可以下载到本地,或者直接在科隆后的 GitHub 仓库主页上点击 Create codespace on master 来创建 Codespace。Codespace 是 GitHub 推出的基于 Azure 云服务的远程编程功能,现在对个人账号开放了,可以试一下。

Create Codespace

点击后,浏览器中会打开一个新页面,并会出现在线 VS Code 的界面,然后显示该项目的目录、代码以及终端,如下图。

实战 Go:如何实现一个简单分布式系统

· 阅读需 9 分钟
Marvin Zhang
软件工程师 & 开源爱好者

引子

如今很多云原生系统、分布式系统,例如 Kubernetes,都是用 Go 语言写的,这是因为 Go 语言天然支持异步编程,而且静态语言能保证应用系统的稳定性。笔者的开源项目 Crawlab 作为爬虫管理平台,也应用到了分布式系统。本篇文章将介绍如何用 Go 语言编写一个简单的分布式系统。

思路

在开始写代码之前,我们先思考一下需要实现些什么。

  • 主节点(Master Node):中控系统,相当于军队中的指挥官,派发任务命令
  • 工作节点(Worker Node):执行者,相当于军队中的士兵,执行任务

除了上面的概念以外,我们需要实现一些简单功能。

实战 Go:怎样快速实现一个极简任务调度系统

· 阅读需 5 分钟
Marvin Zhang
软件工程师 & 开源爱好者

引子

任务调度(Task Scheduling)是很多软件系统中的重要组成部分,字面上的意思是按照一定要求分配运行一些通常时间较长的脚本或程序。在爬虫管理平台 Crawlab 中,任务调度是其中的核心模块,相信不少朋友会好奇如何编写一个任务调度系统。本篇文章会教读者用 Go 语言编写一个非常简单的任务调度系统。

思路

我们首先理清一下思路,开发最小化任务调度器需要什么。

  • 交互界面(API)
  • 定时任务(Cron)
  • 任务执行(Execute Tasks)

整个流程如下:

image-20221003094216157

我们通过 API 创建定时任务,执行器根据定时任务标准定期执行脚本。

为什么推荐你用 C# 构建大型后端应用?- Part 1

· 阅读需 10 分钟
Marvin Zhang
软件工程师 & 开源爱好者

前言

今天下英雄,惟使君与操耳。--曹操《三国演义》

对于在 IT 圈摸爬滚打多年的程序员来说,如果要问国内最主流的后端编程语言,我相信大部分会说 Java。这并不意外,因为 Java 存在了 30 多年,有着庞大的用户规模和生态体系,在软件工程领域似乎有着绝对霸主地位。但是,古人云:“得民心者得天下。” 用户最多的编程语言不一定是最受开发者们喜欢的。根据 StackOverflow 2021 年在 82,914 名开发者中做的关于编程语言满意度调查,喜欢 Java 的占比只有 47%,已经排到 20 名开外了,仅高于 PHP、C、COBOL。另一方面,我们从调查结果可以看到,有着 “山寨版 Java” 之称的 C#,反而在开发者心目中满意度达到了 62%,比 Java 高 15%。虽然 C# 的满意度跟 Rust、TypeScript 差距还比较大,但可以看出 C# 作为 Java 的替代编程语言,在开发效率、部署便捷性、文档完善度等方面已经逐渐占据优势。笔者因为工作的原因,在平时开发中使用 C# 和 Java 开发了不少项目,因此对它们之间的相同点、不同点以及优势、劣势有一定了解。笔者认为,C# 相对于 Java 来说更受开发者欢迎是有一定道理的,因为它的开发体验很好。

20211119-language-satisfaction

限于篇幅原因,整个 C# 的原理及实战介绍(即为何推荐用 C# 构建大型后端应用),将被拆分为一系列文章,该系列将从语法特性、开发模式、生态体系、部署构建等维度深度分析 C# 这门 “年轻” 的编程语言,并以跨平台框架 .NET Core 为例介绍如何用 C# 构建大型后端应用。

本篇文章是 C# 系列文章的第一篇,主要在语法特性方面介绍 C# 的一些现代语法特性,以及它们是如何提高开发效率的。

大红大紫的 Golang 真的是后端开发中的万能药吗?

· 阅读需 21 分钟
Marvin Zhang
软件工程师 & 开源爱好者

前言

城外的人想进去,城里的人想出来。-- 钱钟书《围城》

随着容器编排(Container Orchestration)、微服务(Micro Services)、云技术(Cloud Technology)等在 IT 行业不断盛行,2009 年诞生于 Google 的 Golang(Go 语言,简称 Go)越来越受到软件工程师的欢迎和追捧,成为如今炙手可热的后端编程语言。在用 Golang 开发的软件项目列表中,有 Docker(容器技术)、Kubernetes(容器编排)这样的颠覆整个 IT 行业的明星级产品,也有像 Prometheus(监控系统)、Etcd(分布式存储)、InfluxDB(时序数据库)这样的强大实用的知名项目。当然,Go 语言的应用领域也绝不局限于容器和分布式系统。如今很多大型互联网企业在大量使用 Golang 构建后端 Web 应用,例如今日头条、京东、七牛云等;长期被 Python 统治的框架爬虫领域也因为简单而易用的爬虫框架 Colly 的崛起而不断受到 Golang 的挑战。Golang 已经成为了如今大多数软件工程师最想学习的编程语言。下图是 HackerRank 在 2020 年调查程序员技能的相关结果。

hackerrank-survey-2020

那么,**Go 语言真的是后端开发人员的救命良药呢?它是否能够有效提高程序员们的技术实力和开发效率,从而帮助他们在职场上更进一步呢?Go 语言真的值得我们花大量时间深入学习么?**本文将详细介绍 Golang 的语言特点以及它的优缺点和适用场景,带着上述几个疑问,为读者分析 Go 语言的各个方面,以帮助初入 IT 行业的程序员以及对 Go 感兴趣的开发者进一步了解这个热门语言。

公元2021年,关于前端工程化你应该知道些什么

· 阅读需 27 分钟
Marvin Zhang
软件工程师 & 开源爱好者

前言

The only constant in the world is change.

世界上唯一不变的是变化。--《谁动了我的奶酪》作者 斯宾塞·约翰逊

IT 行业变化太快了,尤其是前端开发(Frontend Development)。如果能穿越回 10 年前,碰上一位 Web 开发软件工程师,他一定会告诉你玩转前端就是精通 jQuery 和搞定 IE 浏览器兼容性。不过随着前端的不断发展,jQuery 遭遇 “官方逼死同人” 逐渐退出历史舞台(元素选择和操作被标准的 DOM API 所统一);而饱为诟病的 IE 浏览器兼容性问题,因为 IE 市场的逐渐萎缩以及一些兼容性工具(Polyfill)的出现,让其从之前的核心优化问题降级为如今的瘙痒问题,不再成为前端工程师的标配。

如今的前端开发,有着玲琅满目的专业术语和纷繁复杂的技术生态,可能会让初入前端开发的工程师感到惴惴不安:要学的东西实在是太多了。现在的前端工程师如果不了解 Webpack、Babel、Node.js、NPM/Yarn、ES6/7、React/Vue、Sass/Less、TypeScript、ESLint、Canvas/SVG 等现代化前端知识,就难以让人信服自己的专业背景。2021 年的前端工程师可能是真正意义上的工程师(Engineer),他们通常需要运用大量的专业知识来解决工程化问题,包括如何将项目进行模块化,如何设计组件间的交互,如何提高可复用性,如何提升打包效率,优化浏览器渲染性能,等等。他们不再像以前,只需要 HTML/CSS/JS 一个套路来开发静态页面。

本文将着重就现代前端开发的主题,来详细介绍前端工程化的各个重要技术,帮助读者了解现代前端页面的复杂和多样性是如何构造的。本文是一篇关于前端工程的科普文,即使你不了解前端技术,也可以从本文受益。

TS 加持的 Vue 3,如何帮你轻松构建企业级前端应用

· 阅读需 22 分钟
Marvin Zhang
软件工程师 & 开源爱好者

前言

工欲善其事,必先利其器 --《论语》

在如今被三大框架支配的前端领域,已经很少有人不知道 Vue 了。2014 年,前 Google 工程师尤雨溪发布了所谓的渐进式(Progressive)前端应用框架 Vue,其简化的模版绑定和组件化思想给当时还是 jQuery 时代的前端领域产生了积极而深远的影响。Vue 的诞生,造福了那些不习惯 TS 或 JSX 语法的前端开发者。而且,Vue 较低的学习门槛,也让初学者非常容易上手。这也是为什么 Vue 能在短时间内迅速推广的重要原因。从 State of JS 的调查中可以看到,Vue 的知名度接近 100%,而且整体用户满意度也比较高。

stateofjs-vue

Vue 既强大又易学,这是不是意味着 Vue 是一个完美框架呢?很遗憾,答案是否定的。虽然 Vue 的上手门槛不高,灵活易用,但是这种优势同时也成为了一把双刃剑,为构建大型项目带来了一定的局限性。很多用 Vue 2 开发过大型项目的前端工程师对 Vue 是又爱又恨。不过,随着 Vue 3 的发布,这些开发大型项目时凸显出来的劣势得到了有效解决,这让 Vue 框架变得非常全能,真正具备了跟 "前端框架一哥" React 一争高下的潜力。Vue 3 究竟带来了什么重要的新特性呢?本篇文章将对此进行详细介绍。