暂时未有相关云产品技术能力~
暂无个人介绍
Go 语言由于没有 try...catch 结构屡屡被诟病,Go 中的每一个错误都需要处理,而且错误经常是蹭蹭嵌套的。
输入一个递增排序的数组和一个数字 s,在数组中查找两个数,使得它们的和正好是 s。如果有多对数字的和等于 s,则输出任意一对即可。
2022 年,Go 团队发布 Go 1.18 ,作为一个大的版本变动,Go 1.18 理所当然涵盖了许多的新功能、Go 团队也提到是 Go 语言发布以来做的最大的一次变动,并且性能改进很大。
空白标识符是未使用的值的占位符。它由下划线(_)表示。由于空白标识符没有名称,因此它们也被称为匿名占位符。 在 Go 语言中, 不允许声明未使用的变量或导入语句。也就是说,我们无法声明变量并将其留下未使用。同样,如果您导入一个包,那么也必须使用它。 这个时候就需要一个空白标识符。
最近一直想利用写个 Go Web 项目,但苦于自己一直没有前端知识,所以想也从小白的角度(其实也不算)来学习前端的那些知识,今天就来介绍一下 HTML 和 CSS 。 今天就来动手写一个登录界面,后期希望能配合 Echo 框架实现前后端打通。
在前面多篇 Go 系列文章中,我们了解到,Go 语言脱胎于 C 语言,这就意味着在某些更底层的细节中,我们可以使用 C 语言实现,然后通过 Go 来调用相关的 C 代码。其实这一特点,在 Java 的 JVM、Python 的解释器也是通过底层是直接调用 C 实现的。 而本篇文章就来学习一下,如何在 Go 语言中运行 C 程序。
这一篇文章我们来介绍 Go 语言帮我们实现的标准库的 sync.RWMutex{} 读写锁。
这一篇文章我们来介绍 Go 语言帮我们实现的标准库的 sync.RWMutex{} 读写锁。
goroutine 是 Go 中最基本的组织单位之一,是 Go 支持原生并发最重要的一个功能。 事实上,每个 Go 程序至少拥有一个:main gotoutine ,当程序开始时会自动创建并启动。 简单来说,gotoutine 是一个并发的函数(记住:不一定是并行)和其他代码一起运行。
我们一直学习的是 Go 不支持面向对象,取而代之的是组合的方式。Go 利用接口可以实现类似面对对象的功能,比如多态。虽然 Go 语言并非面向对象的语言,但它还是包含了一些特征可模拟面向对象的编程语言。
Go 语言也提供了 Java 类似的功能:反射。在编译不知道类型的情况下做到动态地操纵对象的值: 更新变量; 运行时查看值; 调用方法。
Echo 是众多 Go Web 框架的一个,根据官网介绍,它有着高性能、可扩展性、极简的特点。
Go 提供了两个非常棒的模板库—— text/template 和 html/template。这两个模板的使用方式相同,但是在区别在于:html/template 包会做一些编码来帮助防止代码注入。这种编码方式最酷的部分是它是上下文相关的,这意味着它可以发生在 HTML、CSS、JavaScript 甚至 URL 中,模板库将确定如何正确编码文本。
或许我们学 Python,只听过列表(list)、元组(tuple)、集合(set)、字典(dict) 那个流行在 Java、C++和 C 中常见的那个“狠人”——数组去哪了呢?
内存和存储器这两个术语均指计算机的内部存储空间。存储器包括:内部存储器(内存)、外部存储器(外存)、寄存器。
平常使用的 APP 应用会在屏幕上显示一个用户界面,该界面用来显示所有可被用户查看和交互的内容。而应用中所有的用户界面元素都是由 Component 和 ComponentContainer 对象构成。 Component 是绘制在屏幕上的一个对象,用户能与之交互。 ComponentContainer 是一个用于容纳其他 Component 和 ComponentContainer 对象的容器。
整个计算机网络都是由协议组成。 其实可以把协议类比成我们人类用的语言,我们和老外交流,双方得说一样的语言,就好像遵从同样的“协议”。网络上的两台机器之间要交流,也是如此。
最近冰墩墩也太火了,各路大神纷纷表示用代码画冰墩墩,而我也刚好看到一个前端大神 Austin 用 JavaScript 前端写了一个冰墩墩,大家可以下载代码,本地打开就可以看到这个可爱的冰墩墩了。代码在后文参考资料中,大家可以自己下载。
Go 测试包包含一个基准测试工具,用于检查我们的 Go 代码的性能。 在本文中,我们将使用基准工具来逐步提高一段代码的性能。 然后,我们将讨论先进的基准测试技术,以确保我们测量的是正确的东西。
我们的 Web 服务器由两部分构成: 为在用户浏览器中运行的 HTML 和 JavaScript 前端代码提供服务; 接受 Web socket 连接以允许客户端进行通信。
我们介绍单链表这种数据结构,链表结构为基于数组的序列提供了另一种选择(例如 Python 列表)。
Go 也像 C 语言家族语言一样,使用双引号来声明字符串。 Go 字符串可以使用 双引号(" ")或者 反引号(` `)来创建。双引号用来创建可解析的字符串,但不能用来引用多行,这也是大多数字符串的定义方式。 反引号用来创建原生的字符串,这些字符串可以由多行组成。多用于多行消息,HTML 以及正则表达式。
我们都知道,Python 的内置函数 repr() 能够把对象用字符串的形式表达出来,方便我们辨认。这就是“字符串表示形式”。repr() 就是通过 __repr__ 这个特殊方法来得到一个对象的字符串表示形式的。
良好的应用结构可以改善开发者的体验。它可以帮助你隔离他们正在工作的内容,而不需要把整个代码库记在脑子里。一个结构良好的应用程序可以通过解耦组件并使其更容易编写有用的测试来帮助防止错误。
本节将随着时间的推移而增长,但主要目标是分享一些有经验的开发人员在一段时间内发现的技巧。希望这些技巧能让新用户更快地提高工作效率。
本文将简单介绍一个 Python 模块 Collections 。这个模块实现了一些很好用的数据结构,可以帮助我们解决不同的实际问题。
本篇文章将从 What(是什么)、Why(为什么)、How(怎么做)?三个部分简单入门网络通信。
Java 最初版本只提供了最初的几个 Java 集合框架个类: • Vector • Stack • Hashable • BitSet • Enumeration 其中 Enumeration 接口提供了一种用于访问任意容器中各个元素的抽象机制。Java 集合类库将接口( interface )与实现(implementation)分离。
截止到目前为止,几乎我们的 Go 入门文章都是在终端运行的。 在终端运行的代码或者运用运用程序只适合自己在环境搭好的环境下使用。也就是说,如果用户没有安装 Go 语言环境,是根本没法运行我们所写的 Go 代码,普通用户可以说已经被互联网和万维网宠坏了,他们不想为了使用你的应用而学习使用终端。
函数是一段代码的片段,包含连续的执行语句,它可以将零个或多个输入参数映射到零个或多个参数输出。函数像一个黑盒,对它的使用者隐藏实现细节。还可以在代码中通过函数调用来执行它们。
CPython 中的 C 是指 C 语言,意味着这个 Python 默认发行版是用 C 语言编写的。其实,CPython 的编译器是用纯 C 语言编写的,或者是 C 和 Python 的组合。
再我们看文章之前,先思考一下:如果是你设计,会怎么进行内存管理?我们一起了解看看 Python 是怎么设计的。
再我们看文章之前,先思考一下:如果是你设计,会怎么进行内存管理?我们一起了解看看 Python 是怎么设计的。
一直很好奇 Go 语言的 map 底层是如何实现的。 Go map 的形式就是键值对,给定一个键,能尽快的找到对应的值。
工作中时不时需要读取文本,文本文件是最常见的文件类型。 本文将从逐行、逐个单词和逐个字符三个方法读取文件: byLine.go byWord.go byCharacter.go
这篇文章的动机是不久前关于 Gophers Slack 的一个问题。一位开发人员想知道在哪里可以找到有关 len 的更多信息。
编程不易,好的程序员也不敢保证程序无 Bug。因此,软件开发过程的一个重要部分是测试。为我们的代码编写测试是确保质量和提高可靠性的好方法。
有时,你需要一组不同类型的数据,例如人的信息,包括姓名(字符串)、年龄(整型)、身高和体重(浮点型);又如学生记录,混合保存学生名字和成绩(浮点数)。 此时,无法用切片或者映射来保存。但是你可以使用结构体类型 struct 的类型来保存。 让我们一起来学习结构体的相关知识吧!
有时,你需要一组不同类型的数据,例如人的信息,包括姓名(字符串)、年龄(整型)、身高和体重(浮点型);又如学生记录,混合保存学生名字和成绩(浮点数)。 此时,无法用切片或者映射来保存。但是你可以使用结构体类型 struct 的类型来保存。 本文让我们一起来学习结构体的相关知识吧!
大型程序通常由许多较小的子程序组成。 例如,Web 服务器处理来自 Web 浏览器的请求并提供 HTML 网页作为响应。 每个请求都像一个小程序一样被处理。对于像这样的程序,最理想的是能够在同一时间运行它们的小型组件(在 网络服务器的情况下,处理多个请求)。同时在一个以上的任务上取得进展被称为并发性。
我们都知道,Java、C#、Python 都 因为指针的复杂而避开了指针的用法,改成了引用。 Go 语言作为 21 世纪的 C 语言,自然保留了 C 语言的许多特性,指针就是其一。但相比于 C 的指针,Go 对指针做了很多限制。 这一篇,就来学习 Go 指针的各种相关知识。
互斥是并发编程中最关键的概念之一。当我们使用 goruntine 和 channels 进行并发编程时,如果两个 goruntine 尝试同时访问同一个内存位置的同一数据会发生竞争,有时候会产生意想不到的结果,通常很难调试,不符合日常要求,出现错误甚至很难修复。
在日常工作中,除了需要从 JSON 转化为 Go 的数据结构。但往往相反的情况是:我们需要将数据以 JSON 字符串的形式发送到 Web 服务器。今天我们将学会如何从一个结构化数据编码为 JSON 。
本文将说明如何利用 Go 语言将 JSON 解析为结构体和数组,如果解析 JSON 的嵌入对象,如何将 JSON 的自定义属性名称映射到结构体,如何解析非结构化的 JSON 字符串。
本文将说明如何利用 Go 语言将 JSON 解析为结构体和数组,如果解析 JSON 的嵌入对象,如何将 JSON 的自定义属性名称映射到结构体,如何解析非结构化的 JSON 字符串。
我们来聊聊探讨 Python 的各种“序列”类,内置的三大常用数据结构——列表类(list)、元组类(tuple)和字符串类(str)的本质。
话说,网上已经有很多关于 Python 浅拷贝和深拷贝的文章了,不过好多文章看起来还是决定似懂非懂,所以决定用自己的理解来写出这样一篇文章。
内存是计算机中重要的部件之一,它是外存与 CPU 进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
我们知道 Go 的数组和切片非常方便对数据进行访问,但是假如我们有一个长度为 5 的数组 [1, 2, 3, 4, 5],想要往其中 3 和 4 之间插入一个元素 6,就往往不是非常容易了。为啥呢? 一般解决的方法是首先创建一个长度大于 5 的新数组,因为这个数组的长度首先要能存储旧数组的数组,同时能有多余的位置存储新增加的元素 6。 这其中有个操作会很费时,就是复制操作:需要把原来数组中的数据复制到新的内存空间。 因此,我们有一个更合适的数据结构叫做链表。
我们知道 Go 的数组和切片非常方便对数据进行访问,但是假如我们有一个长度为 5 的数组 [1, 2, 3, 4, 5],想要往其中 3 和 4 之间插入一个元素 6,就往往不是非常容易了。为啥呢? 一般解决的方法是首先创建一个长度大于 5 的新数组,因为这个数组的长度首先要能存储旧数组的数组,同时能有多余的位置存储新增加的元素 6。 这其中有个操作会很费时,就是复制操作:需要把原来数组中的数据复制到新的内存空间。 因此,我们有一个更合适的数据结构叫做链表。