自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 ubuntu通过crontab创建定时任务,并执行sh

crontab执行默认会发送邮件,如果不进行相关配置,可能会导致定时任务不执行。我们不需要邮件,修改命令,令其输出日志文件即可。这样定时任务就执行完毕了,如果产生了异常,通过日志reloadNginx.log排查即可。选择第一项 /bin/nano即可,确认后输入定时任务的执行命令。执行命令 crontab -e。

2024-04-23 19:00:00 858

原创 云原生(八)、Kubernetes基础(一)

K8S基础

2024-04-12 17:51:44 1616 1

原创 云原生(七)、Kubernetes介绍 + 裸机搭建k8s集群

Kubernetes(通常简称为K8s)是一个开源的容器编排平台,最初由Google设计和开发,现在由Cloud Native Computing Foundation(CNCF)维护。它旨在简化容器化应用程序的部署、扩展和管理。

2024-03-29 17:22:50 1381

原创 云原生(六)、CICD - Jenkins快速入门

Jenkins是一个开源的持续集成(CI)和持续部署(CD)工具,用于自动化软件开发过程中的构建、测试和部署。它允许开发团队在一个可视化的界面中设置和管理工作流程,以确保代码的频繁集成和部署。

2024-03-27 18:26:20 1590

原创 使用Docker创建Let‘s Encrypt SSL证书

如果你的网站还在非https下裸奔,那你肯定out了,过去SSL证书价格昂贵,但今天我们很幸运Let‘s Encrypt为我们提供了免费的证书服务,本文主要介绍如何利用docker-compose运行certbot免污染主机环境的申请SSL证书、Nginx下证书的安装以及证书更新。

2024-03-21 20:00:00 2967

原创 NodeJs接入腾讯云存储COS

腾讯云的 COS(Cloud Object Storage)是一种对象存储服务,类似于亚马逊的 S3(Simple Storage Service)。COS 提供了存储和管理大规模数据的能力,用户可以通过 COS 存储和检索各种类型的数据,包括图片、音频、视频、文档等。它具有高可靠性、高可用性、低成本等特点,广泛应用于网站托管、大数据分析、备份与归档等场景。数据存储和备份:COS 提供了高可靠性和持久性的数据存储,可以用于存储备份数据、应用程序数据、多媒体文件等。

2024-03-20 22:33:35 1443

原创 云原生(五)、Docker-Swarm集群

在 Docker 中,Swarm 是一种容器编排工具,它允许用户在一个集群中管理多个 Docker 容器。Docker Swarm 允许您将多个 Docker 守护进程组织成一个虚拟的 Docker 引擎,这个引擎可以用来部署您的容器化应用程序。通过 Docker Swarm,您可以轻松地管理、扩展和调度容器,以便适应不同规模的工作负载。

2024-03-20 13:12:31 1466

原创 云原生(四)、Docker-Compose

Compose项目是由python编写的,实际上就是调用了Docker服务提供的API来对容器进行管理,因此,只要所在的操作系统的平台支持DockerAPI,就可以在其上利用Compose来进行容器编排管理。官网链接:https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples。模板文件是Compose的核心,涉及的指令关键字比较多但是大部分的指令与docker run相关的参数的含义是类似的。

2024-03-18 20:13:53 1519 2

原创 云原生(三)、Docker网络

在 Docker 中,不同容器之间的网络访问原理取决于容器所使用的网络模式。下面是 Docker 中常见的两种网络模式下容器间网络访问的原理

2024-03-18 20:11:32 1063

原创 云原生(二)、Docker基础

Docker 是一种开源的容器化平台,用于开发、部署和运行应用程序。它允许开发者将应用程序及其所有依赖项打包到一个可移植的容器中,这个容器可以在任何支持 Docker 的环境中运行,无论是开发人员的个人笔记本电脑、测试环境、生产服务器还是云环境。

2024-03-15 18:04:10 1289 1

原创 云原生(一)、linux快速上手

Linux是一种开源的Unix-like操作系统内核。它是由Linus Torvalds于1991年首次发布,其后经过全球的自由软件社区的持续开发和改进。Linux内核是操作系统的核心部分,但通常与GNU项目合作,以形成完整的操作系统,被称为Linux发行版(Linux distributions)。Linux发行版通常包含了Linux内核、GNU工具和库以及许多其他的开源软件,使得用户能够运行各种应用程序和服务。Linux具有许多优点,包括免费、开源、高度可定制性、稳定性和安全性。

2024-03-06 16:53:04 1109

原创 GO框架基础 (三)、xorm库

xorm是一个 Go 语言的 ORM(对象关系映射)库,它提供了一种简单、高效的方式来将 Go 语言中的结构体与数据库表进行映射,并提供了丰富的功能来进行数据库操作。以下是xorm支持多种数据库xorm支持多种数据库,包括 MySQL、PostgreSQL、SQLite、Microsoft SQL Server、Oracle 等。灵活的映射规则: 通过标签(tag)或者方法可以自定义结构体字段和数据库表字段之间的映射关系。自动建表xorm。

2024-02-20 20:12:18 1375

原创 GO框架基础 (二)、sqlx库

在 Go 语言中,sqlx包是一个用于数据库操作的库,它建立在标准库的包之上,并提供了一些额外的功能,以简化和增强与数据库的交互。sqlx的目标是通过提供更方便的 API 和一些附加功能来改善在 Go 中进行 SQL 数据库查询的体验。以下是sqlxsqlx允许将数据库查询的结果映射到 Go 结构体中,简化了数据的处理和访问。支持使用命名参数执行查询,使得 SQL 语句更易读且更易维护。对于可能为 NULL 的字段,sqlx提供了null类型,以方便地处理这些情况。sqlx提供了一些额外的查询方法,如。

2024-02-19 20:33:45 935

原创 GO框架基础 (一)、MySQL数据库

数据库是一个组织化的数据集合,它被设计为方便存储、管理和检索数据。数据库通常以表格的形式组织数据,其中每一行代表一个数据记录,每一列代表一个数据字段。数据库系统提供了一种结构化的方法来存储和管理数据,以便用户可以有效地访问和操作数据。

2024-02-19 20:33:32 883

原创 GO基础进阶篇 (十四)、Http编程

请求包括一个HTTP方法(GET、POST等)、URL、HTTP版本、请求头部和请求体。客户端是用户使用的Web浏览器或其他Web客户端,而服务器是存储和处理数据的远程计算机。HTTP是无状态的,即每个请求都是独立的,服务器不会保留前一次请求的任何信息。HTTPS(HTTP Secure)是HTTP的安全版本,通过使用TLS/SSL协议对通信进行加密,以提供更安全的数据传输。URL是用于标识和定位资源的地址。了解了web基础,我们尝试使用go语言的‘http’包,来模拟实现一个客户端-服务端的web应用。

2024-01-18 20:57:16 1139 1

原创 GO基础进阶篇 (十三)、泛型

先看一下这段代码。上面的代码中,我们想要打印参数arr的信息。运行报错想要解决的话,按照之前我们的学习,可以将函数改编如下(使用断言)但这样会有一个坏处,当我们想要打印另一个非string的数组时,就不得不在写一个方法这样处理,就会导致有无限多相似的代码产生,这样的代码时不合格的。此时,泛型就出现了。它的意义时不在方法定义时决定变量的类型,而让使用者使用时决定。T代表了用户传入的类型,并对T进行了约束。上面的代码中,我们再定一个float的数组,是无法通过程序校验的,因为我们约束了T的可用类型为s

2024-01-17 21:40:46 895 1

原创 docker环境下mongo副本集的部署及异常修复

最近更换了办公地点。部署在本地docker环境里的mongo数据库不能使用了。原因是本地的ip地址变更,以前的mongo副本集的配置需要更新。处理完后,索性重新记录一下mongo副本集在docker中的部署流程。

2024-01-17 15:39:50 1331

原创 GO基础进阶篇 (十二)、反射

Go语言中的反射是指在程序运行时检查程序的结构,比如变量的类型、方法的签名等。Go语言的反射包是reflect。通过反射,你可以动态地检查类型信息、获取字段和方法、调用方法等。反射可以在运行时动态获取变量的各种信息,比如变量的类型、值等如果是结构体,还可以获取到结构体本身的各种信息,比如结构体的字段、方法通过反射,还可以修改变量的值、调用方法。

2024-01-12 17:18:30 556 1

原创 GO基础进阶篇 (十一)、select及定时器timer

通道类型在go中其他方法里的应用。

2023-12-29 14:15:31 504

原创 GO基础进阶篇 (十)、channel

缓冲通道可以用于实现异步通信,允许发送和接收操作在不同的时间进行。发送操作将数据放入缓冲通道,而接收操作可以随后在程序的执行中处理这些数据。在无缓冲通道中,发送和接收操作必须同时准备好,否则它们会发生阻塞。使用缓冲通道可以避免这种情况,因为即使没有接收方,发送方仍然可以将数据放入缓冲通道而不被阻塞。缓冲通道可用于进行流量控制,限制数据在通道中的流动。通过在通道中缓冲一定数量的任务或消息,可以实现工作者池、并发任务分发等场景。缓冲通道允许发送和接收操作在不同的goroutine中进行,从而提高程序的并发性。

2023-12-29 13:50:07 409

原创 GO基础进阶篇 (九)、临界资源安全问题(锁、channel)

在GO语言中,并不鼓励用锁的机制来保护共享状态,在不同的Goroutine中分享信息(以共享内存来通信)。类似地,如果Goroutine正在等待从通道接收数据,那么另一些Goroutine将会在该通道上写入数据,否则程序将会死锁。但是实际上,在GO语言的并发编程中,有一句经单的话:不要以共享内存的方式去通信,而要以通信的方式去共享内存。最后:通道是goroutine之间的连接,所以通道的发送和接收必须处在不同的goroutine中。如果创建了chan,没有Goroutine来使用了,则会出现死锁。

2023-12-26 21:45:38 780

原创 GO基础进阶篇 (八)、runtime包

在Go语言中,runtime包提供了与程序的运行时环境相关的功能。这个包包含了一些控制Go语言程序运行时行为的函数和变量。以下是一些runtimegoGOMAXPROCSGCNumCPUGoexitCPUProfileMemProfile。

2023-12-26 21:00:00 273

原创 GO基础进阶篇 (七)、并发与并行

主Goroutine所做的工作并非执行main函数那么简单。它首先要做的是:设定每一个Goroutine所能申请到的栈空间的最大尺寸。在32位的计算机中,最大尺寸为250M。如果某个Goroutine使用的栈空间超出最大尺寸。在 Go 语言中,有三个主要的并发模型:进程、线程和协程。Go 语言通过 goroutine 和 channel 提供了方便且高效的并发编程工具。封装main函数的Goroutine称为主Goroutine。上面的例子中,两处fmt将以并发的形式交替执行。

2023-12-25 22:20:54 333

原创 GO基础进阶篇 (六)、I/O流

os 包是 Go 语言的一个内置包,用于提供与操作系统进行交互的功能。实例中读取数据,并且可以使用缓冲来减少对底层数据源的直接读取次数,提高性能。实例,并且可以使用缓冲来减少对底层数据源的直接写入次数,提高性能。: 读取一行数据,返回行数据和一个标志,指示是否读取的是行的前缀。包提供了带缓冲的 I/O 操作,可以用于提高读取和写入的性能。: 将字符串写入到缓冲,然后再将缓冲中的数据写入底层数据源。: 将数据写入到缓冲,然后再将缓冲中的数据写入底层数据源。: 将缓冲中的数据写入底层数据源。

2023-12-25 21:34:23 160 1

原创 GO基础进阶篇 (五)、内置包time、math及定时器

包是 Go 语言的一个内置包,提供了基本的数学函数。

2023-12-19 18:30:00 67

原创 GO基础进阶篇 (四)、内置包strings与strconv

Go语言内置了许多常用的包,它们是标准库的一部分,不需要额外安装即可在任何Go语言环境中使用。提供格式化输入输出的功能,类似于C语言的printf和scanf。提供了对字符串的操作,如连接、分割、替换等。提供字符串与基本数据类型之间的转换函数,如Atoi(字符串转整数)和Itoa(整数转字符串)。提供与操作系统交互的功能,如文件和目录的操作、环境变量的读取等。用于命令行参数的解析。提供日志记录功能,类似于其他编程语言中的日志库。处理时间和日期的功能,包括计时器、时区等。

2023-12-17 19:59:27 117

原创 GO基础进阶篇 (三)、包与init函数

在Go语言中,包的导入和导出关系到包中标识符(变量、函数、结构体等)的可见性。在Go语言中,导入包的方式有几种不同的形式,取决于导入的包的数量和结构。如果标识符(变量、函数、结构体等)的首字母大写,那么它是可导出的,可以在包外部访问。Go语言的特殊函数init,它会先于main函数执行,实现一些包的初始化操作。可以为导入的包设置别名,避免与当前代码中的标识符冲突,或者简化包名。如果标识符的首字母是小写,那么它是不可导出的,只能在包内部访问。这样,虽然导入了包,但我们在代码中不使用它的标识符。

2023-12-17 19:46:01 86

原创 GO基础进阶篇 (二) 、错误与恐慌(Error & Panic)

errors包import ("errors""fmt"// 自己定义一个错误// 都会返回 error 对象, 本身也是一个类型if age_err!= nil {// 方式二errInfo1 := fmt.Errorf("我是一个错误信息:%d\n", 500)//errInfo2 := fmt.Errorf("我是一个错误信息:%d\n", 404)= nil {// 处理这个错误// 设置年龄的函数,一定需要处理一些非正常用户的请求// 返回值为 error 类型。

2023-12-15 18:08:40 151

原创 GO基础进阶篇 (一) 、面向对象编程(继承、多态、接口)

抽象是指忽略对象的具体细节,只关注对象的特征和行为。通过抽象,可以定义通用的类和方法,使得代码更易理解和维护。

2023-12-15 17:50:27 318

原创 GO基础篇 (六) 、结构体

在Go语言中,结构体(Struct)是一种用户自定义的数据类型,用于组织和存储不同类型的数据。结构体可以包含不同数据类型的字段,并且这些字段可以被命名,使得代码更加清晰和易于理解。在Go语言中,结构体的字段(成员变量)可以是导出的(Exported)或未导出的。类型的结构体实例,并初始化了它的字段值。最后,我们访问和修改了结构体实例的字段。大写字母,可以导出使用,小写字母,不能导出使用。是导出字段,因为它们的首字母是大写的,可以在包外访问。是未导出的,因为它的首字母是小写的,只能在包内访问。

2023-12-14 16:08:09 73

原创 GO基础篇 (五) 、指针

在Go语言中,指针是一种变量,用于存储另一个变量的地址。通过指针,可以间接访问变量的值或者修改变量的值。使用符号来声明指针变量,例如表示ptr是一个指向整数的指针变量。使用运算符获取变量的地址,例如ptr = &x表示将变量x的地址赋值给指针变量ptr。var x intptr = &x指针的零值是nil,表示指针不指向任何有效的内存地址。var ptr *int // 零值为 nil使用运算符间接引用指针,获取指针所指向的变量的值。

2023-12-13 18:11:40 45

原创 GO基础篇 (四) 、数组,切片和map

在Go语言中,数组是一种固定大小的数据结构,用于存储相同类型的元素。数组的大小在声明时就确定,并且不能更改。var 数组名 [大小]元素类型在这个例子中,myArray是一个包含5个整数的数组,每个元素的类型都是int。数组的索引从0开始,所以可以通过myArray[0]myArray[1]myArray[2]等方式访问数组的元素。需要注意的是,由于数组是固定大小的,一旦声明后,其大小不能更改。如果你需要一个可以动态调整大小的集合,可以使用切片(slice)代替数组。

2023-12-13 17:35:46 132

原创 GO基础篇 (三) 、流程控制及函数

在Go语言中,函数(Function)是一段封装了一系列语句的代码块,具有特定功能的独立单元。函数是结构化编程的基本组成部分,它允许你将代码划分为小块,以便更好地组织和重用。使用func关键字进行声明。// 函数体:函数名parameters:参数列表returnType:返回值类型函数可以接受零个或多个参数,这些参数是函数执行时传递给函数的值。函数可以返回一个或多个值。Go语言支持多返回值。可以创建匿名函数,也称为闭包。函数可以作为另一个函数的参数。函数可以作为另一个函数的返回值。

2023-12-12 15:57:17 36

原创 GO基础篇 (二) 、数据类型及变量

这意味着在一个代码块中声明的变量将在其被声明的代码块以及其内嵌的代码块中可见,而不会影响外部的同名变量。在Go语言中,变量的作用域(scope)指的是变量在程序中可被访问的区域。这是一些基本的关于Go语言变量的介绍,变量在程序中用于存储和管理数据,是编程语言中基础而重要的概念。在计算机内存中,每个变量都被存储在一个特定的内存地址上,这个地址唯一标识了这个变量在内存中的位置。在Go语言中,声明的变量会被初始化为零值,例如,数值类型的零值是0,字符串的零值是空字符串。在Go语言中,变量的声明和使用相对简单。

2023-12-12 15:36:28 50

原创 GO基础篇 (一) 、环境安装及Hello World

云原生时代,Go语言或将成为新的主力开发语言,所以我们有必要学习并掌握它。第一件事情,就是把环境搭建起来,大家可以跟着步骤一起将Go语言开发环境搭建起来哦。和装IDEA是一样的,好啦,环境搭建完毕,就可以开始Go语言的开发啦。我的环境是Mac,找到对应包,下载好后无脑安装即可。当前目录下执行:go run hello.go。下载完成后,直接傻瓜式一路向下安装即可。2、网上找激活码、一键激活 一个月。3、官方认证账号购买,很贵,但是正版!1、淘宝购买账号,9.9 一年。创建文件:hello.go。

2023-12-11 17:21:39 63 1

原创 Go:编程新征程 ---- GO语言介绍

在这个博客中,我将记录下我在学习过程中的所有高兴、困扰和突破,希望通过这些分享能够激发更多人对Go语言的兴趣。从基础概念到实际应用,我计划涵盖Go语言的方方面面。如果你也在学习Go语言,或者对它感兴趣,欢迎留言交流,我们一起共同成长,共同解决学习中的难题。大家好,作为一个对编程充满热情的自学者,最近我迎来了一项全新的挑战——学习Go语言!通过这个博客,我将与大家分享我的学习心路历程、探索的旅程,以及在Go语言世界中的发现。让我们一同迎接这个全新的编程征程,探索Go语言的奥秘,创造属于我们自己的代码故事!

2023-12-11 16:21:40 1066 1

原创 新版本钉钉自定义消息机器人的使用

存在一个业务场景,当某个特殊的订单被处理完毕时,通过叮叮机器人将完成的消息发送到叮叮群中,告知所有人。

2023-10-08 17:05:48 543 1

原创 移动端H5网页的rem适配方案

以常见的移动端网页设计规范为例,设计稿尺寸一般为750*1334。为了使网页在各类型的手机设备中正常显示,常使用rem来进行布局,使其能自适应各类显示屏。当页面加载完毕,可是窗口大小变化时,都会触发html的字体大小重算。保证页面始终与设计稿一致。例如设计稿顶部为一个700px居中的banner图,则css代码如下。因此可以通过js获取不同设备的宽高,动态设置html的文字大小。

2023-09-25 11:22:09 455 1

原创 使用Nginx的upstream实现负载均衡,并配置https,避免Post请求类型转发后变为Get

当使用不同域名不同云厂商进行负载均衡策略时,Post等类型请求被转发为了Get,导致服务异常。原因是域名使用了https策略,并自动从写了http。Nginx支持负载均衡,可以很方便的帮助我们进行水平扩容,upstream就是nginx中的负载均衡模块。解决方案:在写配置时添加Https及端口。,可以得到简单的配置方案如下。

2023-08-29 18:25:25 2147 1

原创 node实现华为云OBS的文件上传

对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。OBS系统和单个桶都没有总数据容量和对象/文件数量的限制,为用户提供了超大存储容量的能力,适合存放任意类型的文件,适合普通用户、网站、企业和开发者使用。OBS是一项面向Internet访问的服务,提供了基于HTTP/HTTPS协议的Web服务接口,用户可以随时随地连接到Internet,通过OBS管理控制台或各种OBS工具访问和管理存储在OBS中的数据。

2023-08-01 16:57:30 724 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除