前言当我们在处理一些数据来自系统外部的时候,可能来自 API、终端用户输入或者其他途径,Web 开发中有句话叫做:永远不要相信用户的输入。所以,我们可能需要检查、校验这些数据,将这些数据格式化、标准化,以至于这些数据满足我们真实程序的数据输入,保证项目的正确执行。Pydantic 介绍Pydantic 是一个 Python 库,它提供了一种简单方便的方法来验证和操作数据。它的创建是为了帮助简化数据
theme: juejin highlight: a11y-dark上一篇文章中,我介绍了 FastAPI 框架的安装和 HelloWorld 项目搭建方式。本文将介绍如何使用 Router 路由处理 FastAPI 中的请求。什么是路由路由 Router 就像是一个流水线上的线长,协调生产,下达命令给不同的组长进行分工,然后执行基本的任务。路由器的工作目的是,在团队中工作时,您可能必须在团队成员
1 前言在上一篇文章——《Go 微服务实战之如何使用 go-micro 写微服务应用》中,我们介绍了微服务的相关概念和 go-micro 框架的特点。接下来,我们将以循序渐进的方式建立一个简易的提供加解密服务的 Go 微服务项目。首先为了创建微服务,需要前期设计几个实体:定义服务的 RPC 方法的 protocol buffer 文件具体方法实现的 handler 文件一个公开 RPC 方
什么是微服务?什么是微服务(microservice)?这是企业界正在向计算界提出的问题。一个产品的可持续性取决于它的可修改程度。大型产品如果不能正常维护,就需要在某个时间点停机维护。而微服务架构用细化的服务取代了传统的单体服务,这些服务定义了明确的 RPC 或消息驱动的 API 边界。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,
1 队列的概念队列是有序集合,遵循 FIFO (First in first out,即先进先出)排队方法的容器。添加操作发生在队列的尾部,移除操作则发生在头部。新元素从尾部进入队列,然后一直向前移动到头部,直到下一个被移除的元素。在日常生活中,我们经常需要排队,这就是队列数据结构的生活例子。排队的概念可以通过在快递驿站取快递的队伍来解释:当我们进入排队时,我们站在队伍的末端,排在队伍最前面的人就
就像制作汽车一样,建造者模式的核心在于如何一步一步地构建一个包含多个组成部件的完整对象,使用相同的构建过程构建不同的产品。 在软件开发过程中,如果需要创建复杂对象,并希望系统具备很好的灵活性和可扩展性,可以考虑使用建造者模式。
从本文开始,我们来看一下如何从零搭建一个 Go 项目。回顾一下基础的 Go 项目运行过程首先,新建一个 sports 的文件,然后键入此文件目录下,选择在终端中打开,使用如下命令初始化项目:go mod init sports然后,我们创建一个 main.go 的文件,写入如下代码:package mainimport "fmt"func writeMessage() { fmt
1 介绍当我们为自己编写程序时,通常会将一些重要的配置项直接写在源代码里,比如:服务器监听的端口、数据库使用的名称和端口号、HTTP请求超时的持续时间...但是,如果我们尝试将这个项目开源分享给他人使用,用户使用的数据库的用户名和名称可能与你不相同,甚至你还要为他们的服务器使用另一个端口。如果你还设置了数据库的密码的话,为了安全,更不可能在代码中信息泄露出来。因此,本节,将介绍如何增加我们的
生活中的递归与分治“你站在桥上看风景,看风景的人在楼上看你,明月装饰了你的窗子,你装饰了别人的梦。”——卞之琳《断章》上面这首诗包含了一个递归的概念。生活中无处不是递归~递归又常常与算法里面且难以避免的另一个重要概念“分治”(分而治之)紧密联系。事实上,递归在很多时候就是因为分治策略的使用才出现的,可以说没有递归,就没有分治。分治法可能是最著名的通用算法设计技术了。虽然它的名气可能和它那好记的名字
前言Golang 作为一门还在快速成长的编程语言,想要与时俱进,还得多看看这几个开源项目。听说你想学习 Go 语言,那我就来总结一下:那些目前我所了解的优质 Golang 开源项目。Go 自己学习 Go 语言,可别忘记了 Go 本身是一门可以轻松构建简单,可靠和高效软件的开源编程语言。官网:https://go.dev/GitHub 地址:https://github.com/gola
0 前言为了弥补内置测试库的缺陷,诞生了优秀的第三方库 goconvey,目前 gtihub stars 数量达到了 7.4k,官网链接:http://goconvey.co/。口号:Write behavioral tests in your editor. Get live results in your browser.GoConvey 完美兼容 Go 内置的
1 前言对于计算机相关专业的学生来说,学校教会我们编程语言,学习诸如 Java,Python 或 C ++ 之类的编程语言很容易,但是学习编写好代码不是。编程并不等于写代码,编程是一个更广泛的过程,它还涉及提出开发程序的想法以及对其进行测试等等的方法,所以提升编程思想和能力也是一个合格程序员不可或缺的能力。对于从事技术岗位工作的我们来说,必须得自学编程技术,提高编程的能力。编写良好的代码比只完成简
Go pongo2 教程展示了如何使用 pongo2 模板引擎在 Golang 中使用模板。模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。模板由静态数据和动态区域组成。动态区域稍后被数据替换。渲染函数稍后将模板与数据结合起来。模板引擎用于将模板与数据模型相结合以生成文档。pongo2 库是一个受 Django 模
引言MySQL是一个基于结构化查询语言(SQL)的开源关系数据库管理系统。它是一种关系数据库,可将数据组织到一个或多个表中,其中数据相互关联。MySQL 是行业领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。数据库驱动程序:数据库驱动程序实现了用于数据库连接的协议。驱动程序就像一个适配器,连接到特定数据库的通用接口。Go 有 sql 包,它提供了一个围绕 SQL(或类似
引言设计模式是可重复使用的编程方案,已被用于各种现实世界的环境中,并被证明能产生预期的结果。在本文中,我们将学习最常见的设计模式之一:工厂模式。正如我们稍后将看到的,这种模式使我们更容易跟踪程序中创建的对象,从而将创建对象的代码与使用对象的代码分开。我们将研究工厂设计模式的两种形式:工厂方法和抽象方法。设计模式在程序员之间共享,并随着时间的推移不断被改进。 这个话题的流行要归功于 Erich Ga
树可以有许多不同的形状,并且它们可以在每个节点允许的子节点数量或它们在节点内组织数据值的方式上有所不同。 而在其中最常用的树之一是二叉树。 二叉树是一棵树,其中每个节点最多可以有两个孩子。 一个孩子被识别为左孩子,另一个孩子被识别为右孩子。 二叉树是一种数据结构,在每个节点下面最多存在两个其他节点。即一个节点要么连接至一个、两个节点或不连接其他节点。树形结构的深度(也被称作高度)则被定义为根节点为
引言一般来说,很多时候我们面临这样一种情况,即我们需要运行时间记录器,它不断向我们显示当前时间或在给定的时间间隔内保持执行一定的代码和平,在这种情况下,我们应该使用 Ticker,使用这个我们需要使用 go 语言的 time 包,我们有一个名为 NewTicker() 的方法,它允许我们停止和启动时间代码,我们需要通过传递 chan 和 bool
引言在 Golang 中,将 URL 打包用于从服务器获取数据非常重要。只需了解您是否正在处理任何应用程序并且您想从任何外部位置或服务器获取此应用程序的数据,都需要我们可以使用 URL。URL 格式URL 包含各种参数:例如 端口、URL 中的搜索字符串等。 URL 可以包含各种方法,允许它处理 URL 属性和进行修改,例如,如果我们有一个类似的 URL www.exmple.com:3000 ,
之前的文章学过把模板和视图分离,建立一个 Web 服务器来展现 HTML 模板。我们将学习如何使用 Go 的模板包创建动态 HTML 和文本文件。建立 Web 服务器到目前为止,我们一直在向终端输出模板,但是当我们开始深入研究更多 HTML 时,这开始变得不那么有意义了。相反,我们希望可视化在 Web 浏览器中生成的 HTML。为此,我们首先需要设置一个 Web 服务器来呈现我们的 HTML 模板
引言Sanic 支持路由装饰器将处理函数映射到 HTTP 请求。我们可以在“路由”装饰器中使用名为 methods 的可选参数来处理列表中的任何 HTTP 方法。蓝图是一个概念,用于将子路由从大型应用程序的子模块插入 Sanic 应用程序。蓝图必须注册到 Sanic 应用程序对象中。使用蓝图还可以避免在整个应用程序中传递 Sanic 应用程序对象。创建蓝图在下面的程序中,我们能够将这些路由组合到一
引言排序算法一直是很经常使用的功能。Go 语言标准库为我们提供了方便快捷的 sort 包 ,这个包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。Go 的 sort 包实现了内置和用户定义类型的排序。我们将首先查看内置函数的排序。常见数据类型排序为了方便对常用数据类型的操作,sort 包提供了对 []int 切片、[]float64 切片和 []strin
引言我们学习其他语言编程时,会学到一个 io 包,这个包可以以流的方式高效处理数据,而不用考虑数据是什么,数据来自哪里,以及数据要发送到哪里的问题。io 是一个 Golang 标准库包,它为围绕输入和输出的许多操作和用例定义了灵活的接口。io 包参见:http://golang.org/pkg/io/与 stdout 和 stdin 对应,Go 语言实现了 io.Writer 和 io.Reade
让我们有一个类名示例,它由一个函数 __add__ 组成,该函数接受一个参数并将该参数与类中可用的数据连接起来。首先,Python 查看 x 和 y 的类型来决定是调用 x.__add__ 还是 y.__radd__。由于它们都是相同类型的 Commuter1,它首先尝试 x.__add__。现在调用 __add__ 函数,使用 + 运算符将直接访问这个
什么是异步编程?异步编程是指并发编程的范式,其中除了单个主应用程序线程之外,工作可以委托给一个或多个并行工作线程。这被称为非阻塞系统,其中整体系统速度不受订单执行的影响,并且多个进程可以同时发生。函数从 API 获取数据需要时间。设计异步编程是为了适应调用函数到返回该函数的值之间的延迟。让我们通过一个例子来理解这一点 -如果您要创建一个天气应用程序,您可能希望从一个外部 API 获取城市的温度,并
Web Server 和框架Sanic 称自己既是一个网络框架,也是一个网络服务器。这是什么意思?更重要的是,为什么这很重要?那么什么是 Web Server?Web ServerWeb服务器是一种软件,旨在通过 HTTP 协议传递文档和数据。它的功能是接受传入的 HTTP 请求,对消息进行解码以了解请求试图完成的任务,并提供适当的响应。Web 服务器的语言是 HTTP 协议。我们可以设置一个简单
asyncio 模块作为一款异步 Python 3.7+ web 框架,Sanic 最基本的构建块是 Python 标准库中的 asyncio 模块。2014 年初发布的 Python 3.4 是在新添加的 asyncio 模块中将协程概念引入标准库的第一步。 使用标准的 Python 生成器,可以在发生其他事情时暂停函数的执行,然后可以将数据注入该函数以使其恢复执行。 如果那时有一个对象
本文介绍将简要介绍一种基本的回收算法:引用计数算法[Collins,1960],英文名 reference counting。引用计数方法非常简单。对象的存活性可以通过引用关系的创建和删除直接判定,从而无需向追踪式回收器那样先通过遍历堆找出所有的存活对象,然后再反向确定出未遍历到的垃圾对象。引用计数算法基于计算对每个分配对象的指针引用数的想法。这是一种直接的方法,也恰好是自然增量的,因为它在整个程
Collections 模块本文将简单介绍一个 Python 模块 Collections 。这个模块实现了一些很好用的数据结构,可以帮助我们解决不同的实际问题。import collections可以通过import collections导入该模块的方法,现在我们进入 ipython3 然后使用dir(collections)查看collections下都有哪些可以用的类。I
Go 语言由于没有 try...catch 结构屡屡被诟病,Go 中的每一个错误都需要处理,而且错误经常是蹭蹭嵌套的。如下面的结构:a, err := fn()if err != nil { return err}func fn() error { b, err := fn1() if err != nil { … return err } if _, err =
MySQL事务什么叫数据库事务:事务时逻辑上的一组操作,要么都执行,要么都不执行。1. 事务的四大特性记忆:ACID原子性(Atomicity):事务是最小的执行单位,不允许分割。原子性就是为了保证动作要么全部完成,要么完全不起作用;一致性(Consistency):执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;隔离性(Isolation):并发访问数据库时,一个用户的事
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号