能力说明:
掌握计算机基础知识,初步了解Linux系统特性、安装步骤以及基本命令和操作;具备计算机基础网络知识与数据通信基础知识。
暂时未有相关云产品技术能力~
一位音视频技术爱好者
把使用 golang 开发的服务程序部署在以 alpine 为基础镜像的容器中,设置了 /etc/hosts,却没有生效,但是在终端中使用 ping 和 curl 域名都可以正常访问。出现上述问题的根本原因是 DNS 解析顺序不一致导致的,在 alpine 中,linux 系统默认跳过 hosts 配置,直接使用机器的 DNS 服务。因此,有如下三种解决方法。修改 NDS 解析顺序,先设置读 files,再设置读 dns,具体方法如下:但是方法一会存在一个问题,就是容器重启后,配置文件就消失了。因此可以使用
突然来一个任务,让压测对象存储服务的上传和下载接口,之前也没有干过呀,也不属于自己的工作范畴。但是,事情着急,自己也就硬着头皮搞了。说到压测接口,自己首先想到了 Postman 和 Apipost,但是简单看过之后,发现对于自己的压测需求满足起来可能有些费劲。于是,自己又找到了 JMeter,嗯,果然,实现并发测试 so easy!
1989年,CERN(欧洲粒子物理研究所)中TimBerners-Lee领导的技术小组提交了一个针对互联网的新协议和一个使用该协议的文档系统,该小组将该系统命名为WorldWideWeb,简称WWW(万维网),也就是我们现在熟知的“互联网”,它的目的在于使全球的科学家能够利用互联网来交流自己的工作文档。它采用的技术主要是HTML、URI、URL、HTTP等,可以通过静态的方式展示网页内容。通常来说,Web1.0指的是20世纪90年代和21世纪初的互联网。什么是Web3.0?
现在智能家居的使用已经在大众的生活中非常普遍,自己最满意的产品应该算是天猫精灵系列了。最早使用方糖,后来参加活动赢了天猫精灵X5,今天突然听说天猫精灵官方团队开放了私有API,可以让大家DIY一下天猫精灵。之前都是使用别人设计好的交互流程,终于有机会可以“为所欲为”一把了,哈哈。
经常和服务器打交道的同学,特别是服务器运维和开发的同学,会经常使用到一些工具和命令。然而,有时候一些新机器或者“有待考究的机器”可能啥都没有,就需要我们手动去安装相应的工具。你还别说,平时用的非常熟悉的工具,说到安装它们?一开始还真把我愁坏了,后来习惯了就好啦,哈哈。因此,整理了一些内容记录下来,方便日后查阅。
云原生日益普及的现在,docker容器化成为现有很多服务的改进方向,docker凭借更高效的利用系统资源、更快速的启动时间、一致的运行环境、持续支付和部署、更轻松的迁移、更轻松的维护和拓展等优势,迅速走红。但是,很多容器部署后在回收时,都会遇到各种各样的问题,比如今天讨论的删除镜像的问题,有时候删除操作会莫名其妙的报错。
上传和下载功能是存储服务非常基础的功能,也是存储服务日常使用过程中最常用的功能,比如阿里云的OSS、腾讯云的COS、百度云的BOS等。当然,我们也可以自己研发私有化的对象存储服务,那么就会涉及到除了自己处理客户端逻辑外,还需要自己处理服务器的上传和下载逻辑。今天的问题就是讨论如何实现自定义的上传功能,涉及前端代码和后端代码。
上传和下载功能是存储服务非常基础的功能,也是存储服务日常使用过程中最常用的功能,比如阿里云的OSS、腾讯云的COS、百度云的BOS等。当然,我们也可以自己研发私有化的对象存储服务,那么就会涉及到除了自己处理客户端逻辑外,还需要自己处理服务器的上传和下载逻辑。
MinIO 是一款非常热门的开源对象存储服务器,能够完美兼容亚马逊的 S3 协议, 对 K8s 也能够进行非常友好的支持,专为 AI 等云原生工作负载而设计。包括构建高性能的云原生数据机器学习、大数据分析、海量存储的基础架构等方面,MinIO 都可以提供数据工作负载。有数据统计,在中国大陆,很多企业,比如阿里巴巴、腾讯、百度、中国联通、华为、中国移动等9000多家企业也都在使用 MinIO 产品。
任何编程语言都有自己的系统库,Golang 也不例外。今天我们讨论一下 Golang 的 os 包的两个删除方法:Remove 和 RemoveAll。它们二者都可以删除文件,但是又存在一定的差异,搞清楚这些差异,在日常编码才不会出现“双兔傍地走,安能辨我是雄雌”的窘境。
前一篇文章介绍了开源存储系统 MinIO 的基本内容,今天我们就来看一下,如何使用 Golang 语言将本地的文件上传到 MinIO 对象存储服务上。
上一篇文章介绍了使用 Golang 语言上传本地文件到 MinIO 存储服务的实现方式。今天我们就来介绍一下如何部署 MinIO 存储服务,毕竟,我们上传文件的前提,是已经存在了对应的存储服务才行。
前面的文章介绍了 MinIO 部署的四种方式,今天就来聊一聊服务部署好后,我们应该如何使用的 MinIO 存储服务,快速的掌握一些使用技巧,以便于提升开发效率。
排查网络问题时,我们往往需要用到一些好用的网络工具。我们一般最常用的网络用具命令就是 ping 啦,哈哈。那么除了 ping 命令外,还有哪些实用的工具命令呢?那就是 traceroute 命令。我们可以使用 traceroute 命令知道网络数据从主机A到主机B走的是什么路径。
通过前面文章的介绍,我相信小伙伴们已经对 MinIO 存储服务有了一定的认识。知道 MinIO 是一款非常热门的开源对象存储服务器,能够完美兼容亚马逊的 S3 协议, 对 K8s 也能够进行非常友好的支持,专为 AI 等云原生工作负载而设计。今天我们就来聊一聊在集成 MinIO 过程中遇到的一些上传相关的问题。
MongoDB 数据库确实好用,但是也要依托一定的生态环境,其中就包括我们在开发过程中经常会用到的工具集。在连接 MongoDB 时,我们不可能自己单独去开发基础的功能接口,比如添加记录、删除记录、更新记录等。我们可以使用非常好用的第三方中间件来完成这样的工作,避免重复造轮子,毕竟自己造的轮子还不一定好使。今天我们就来介绍一个非常优秀的 MongoDB 数据库中间件 —— mgm 。
众所周知,MongoDB 是一个通用、基于文档的分布式数据库,非常适合云原生服务的应用场景。上一篇文章已经简单介绍了 MongoDB 数据库的中间件工具 mgm,今天就来聊一聊 mgm 的接口使用方法。
众所周知,MongoDB 是一个通用、基于文档的分布式数据库,非常适合云原生服务的应用场景。上一篇文章已经简单介绍了 MongoDB 数据库的中间件工具 mgm 的一般使用方法,今天就来聊一聊 mgm 的高级使用方法。
随着互联网技术的快速更新,应用程序的功能也越来越丰富,迭代速度也越来越快,为了实现这些目标,应用的开发逐渐趋向服务化甚至微服务化。然而,每个服务的部署都严重依赖所在机器的操作系统或者其他程序,环境问题不仅仅是开发过程中比较挠头的东西,服务部署也会面临各种各样的环境问题。为了解决环境问题所带来的困扰,Docker技术出现了。
说到 Docker 容器,就不得不提一个非常重要的文件 Dockerfile,它是用于定义镜像构建过程的配置文件。在 Dockerfile 文件中,包含了镜像构建过程中需要执行的命令已经相关的操作。Dockerfile 文件在不同的环境下执行就会生成对应环境的镜像服务,从而能够快速的实现容器迁移和集群部署。也正因为如此,Docker 容器能够跨平台部署和运行。
说到代码的健壮性,单元测试是少不了的,基本上所有语言都有自己的单元测试方案。工作这么多年,单元测试也没少写,像 Java、C++、Golang 都有过恶补单元测试的经历,为的就是应付各种 KPI,但是也不能说单元测试没有用,只是原始动力不是为了单元测试而单元测试,而是为了应付检查而单元测试。今天呢,就来说一说 Golang 语言的单元测试(这次真的是我自己主动要加的^_^)。
任何技术都有自己的专业术语,Docker 也不例外。那么,Docker 都包括哪些内容呢?Docker 包括四个组成元素,分别是镜像 ( Image )、容器 ( Container )、网络 ( Network )、数据卷 ( Volume )。接下来,我们分别介绍。
目前我们的云存储方案除了自己的对象存储外,还集成了腾讯云的COS存储。现在有一个新需求,要支持云存储数据向其他云存储迁移的能力,比如支持把腾讯云COS存储的数据迁移到华为云的OBS存储。这就是本文今天要讨论的主题,关于这个需求,调研得到的一些技术方案分享给大家,希望能帮到有需要的小伙伴。
熟悉对象存储的小伙伴一定都知道存储桶的概念,各大云厂商基本上都有自己的对象存储服务,常见的有阿里云、华为云、腾讯云等。存储桶有创建和删除两个基础方法,我们也经常使用它们。那么,小伙伴们有没有考虑过一个问题,就是如果让你实现删除存储桶的方法,应该如何编码呢。
了解编程语言的小伙伴一定知道,我们在为某个项目选择开发语言时,总是需要在开发速度和程序性能之间做出选择。C 和 C++ 这类语言提供了很快的执行速度,而 Python 、Node.js 和 Ruby 这类语言则能提供快速的开发速度。Go 语言则博采众长,不仅提供了高性能的执行速度,同时还提供了可观的开发速度。当然,Golang 语言还有很多特性方面的优势。
实际开发过程中,我们有时候会遇到一个本地仓库关联着多个远端仓库的情况。那么,我们应该如何游刃有余的在两个仓库之间切换和同步代码呢?不熟悉的小伙伴,面对这个问题,一定满脸都是问号?今天,这篇文章就来给大家科普一波儿。
Gin 是使用纯 Golang 语言实现的 HTTP Web 框架。它接口简洁,性能极高,现在被广泛使用。Gin的接口设计和Martini类似,但是性能却远超Martini ,官方号称二者性能相差四十倍。
今天调用Minio的分片合并接口时,遇到了一个错误,困扰了我一整天。因为我始终在自己身上找原因,一度怀疑是自己的逻辑处理有问题,而且自己认为最可能的原因就是自己参数传错了。但是,万万没有想到,原来问题出在Minio服务自己身上。
上一篇文章《使用Golang语言实现对指定存储桶的删除方法(上)》中介绍了删除存储桶前的校验逻辑,今天就来看一看,具体删除存储桶时的逻辑处理。通过上下两篇文章的介绍基本上就把删除存储桶的底层源码实现讲清楚了。正文我们直接进入正题,当删除存储桶时,大概需要三个层逻辑。具体情况,我们接下来单独介绍。
关于这次中秋征文的内容,自己确实想了好久,因为作为一名后端研发工程师,不太想去搞一个酷炫的界面,感觉那是前端同学的蛋糕。想利用自己的技能优势,搞一波儿事情。同时又想有所创新,搞点别人没有搞过的,终于昨天确定了文章的内容——开发一款中秋节日历提醒服务,今天开始正式干活儿。
对于多媒体存储服务,点播视频文件生成封面应该是非常基础的功能之一,目前自己正在开发的多媒体存储服务就面临这样的需求。因为这个多媒体存储服务是从零开始的,缺少部分基础功能的情况,各位大佬别见笑。 但是,正是因为从零开始开发,因此很多之前被忽略的问题也渐渐浮出水面,映入了我们的眼帘。这个经历过程是非常可贵的,自己从中也学到了很多东西。
了解音视频分析工具的小伙伴,一定都知道 MediaInfo,它是一款非常实用的视频参数检测工具,除了可以对视频进行编码分析查询外,还可以对音频文件的编码及信息进行检测,最重要的是这款工具软件是免费的,在 mac OS 系统上此类工具是不常见的,另外,它也有 windows 版本。
问题 后台开发服务接口时,经常会用到很多测试工具,比如 Postman、Apipost、Jmeter 等。这些都是带有图形用户界面的工具,有没有一些显得高大上的方法呢?嗯,是有的。 比如今天开发某个账户登陆服务接口时,就想到了先用命令行来测试一下服务接口是否好用。
问题 今天浏览 chrome 源码时,发现了一个非常有意思的宏定义,它就是 WARN_UNUSED_RESULT ,用法如下图所示:
问题 今天调用上传接口上传文件时,遇到了一个 x509 类型报错,具体报错信息如下: 2021-10-15 17:46:13.145 ERROR oss/upload.go:210 upload process Failed {"error": "Post "https://192.168.215.139:9443/store/file/upload\": x509: cannot validate certificate for 192.168.215.139 because it doesn't contain any IP SANs"} panic: send on closed cha
今天在 arm 架构的服务器上创建工程时,遇到了一个报错,执行的命令如下: git clone git.liuzhen007.com/boffmpeg.gi… 报错信息如下: fatal: unable to access 'git.liuzhen007.com/boffmpeg.gi…': The requested URL returned error: 403
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于客户端与服务器之间发布/订阅(publish/subscribe)模式的"轻量级"通讯协议。为了保证通讯的安全性和可靠性,该协议基于TCP/IP协议构建。由IBM在1999年发布,最初被用于石油管道传感器与卫星的通讯连接,2014年,它正式成为一个OASIS开放标准并得到了大量开源语言的支持。
今天创建了一个新的 git 仓库,想把本地的工程目录传上去,把本地仓库目录和远端仓库地址关联后,使用 git push 命令推本地文件到仓库时,发生了如下报错:
基于 Node.js 开发后台服务的时候,已经会遇到各种莫名其妙的问题,排查之后会发现很多的时候都和 node 版本有关系。因此,我们很多时候会需要切换 node 版本。那么,有什么好方法可以在 mac 系统上非常方便的切换 node 版本呢,今天我们就来介绍一波儿。
基于 Node.js 开发后台服务的时候,已经会遇到各种莫名其妙的问题,排查之后会发现很多的时候都和 node 版本有关系。因此,我们很多时候就需要切换 node 的版本。那么,有什么好方法可以在 windows 系统上非常方便的切换 node 版本呢,今天我们就来介绍一款神器 —— n,是的,你没有看错,我也没有写错,就是一个字母 n。
启动一个 websocket 服务,有很多方式,我们可以使用 PHP,可以使用 Node.js,也可以使用 Golang 等语言。今天我们主要介绍如何利用 Node.js 启动一个最简单的 websocket 服务,总共分为三个步骤。
为了让容器服务启动更加方面,于是自己手写了一个 docker-compose.yml 配置脚本。脚本内容如下:
日常生活中,很多事物都可以用树来描述,例如书的目录、工作单位的组织架构等等。树是计算机中非常重要的一种数据结构,树存储方式可以提高数据的存储、读取效率。 正文 比如二叉树中用来记录某个公司员工薪资和员工姓名数据,或者某班级学生们的排名和姓名数据。如何快速找出排名最高和最低的同学数据?
一般来说,数据库被分为关系型数据库(RDS)和非关系型数据库(NoSQL),其中,关系型数据库采用关系模型来组织数据,主要的代表有 MySQL、SQL Server、Oracle、PostgreSQL等。非关系型数据库的数据模型是非关系型的、分布式的,且一般不保证 ACID 的事务性,主要代表有 MongoDB、Redis、Memcached等。今天,我们就来简单介绍一下关系型数据库代表 MySQL 数据库。
后端开发的小伙伴经常会用到 nginx 工具,那么我们不禁要问:它具体的作用是什么呢?今天我们就来通过一个实例来搞清楚!
Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章我们介绍了 Gin 框架日志管理模块的相关内容,今天我们就来详细看一看 Gin 在模型绑定方面的内容。
Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 中间件的相关内容,今天我们详细看一看 Gin 在日志管理模块方面的内容。
Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 的基本使用方式,今天我们详细看一看 Gin 在中间件方面的内容。
Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 的基本使用方式,今天我们详细看一看 Gin 在分组路由方面的内容。 正文 分组路由 说到分组路由,你一定会问为什么要搞分组路由?分组路由有什么优势?下面就详细介绍一下。
前言 利用 Gin 框架,我们可以非常简单的实现上传服务接口的开发,今天我们就来看看 Gin 在这方面都支持哪些能力,能够为我们减少多少任务量。 正文 当设计开发一个存储服务的时候,首先就要想到如何实现上传存储功能,Gin 框架能够非常简单的支持单文件上传和多文件同时上传,接下来通过实例分别介绍这两方面的内容。