Gorm学习(一)入门:Gorm入门指南
前言 感谢开源项目gin-vue-admin,以及1010工作室的视频教程 一、GORM介绍1、GORM概述GORM一个目前比较热门的,使用简单,对开发人员友好的 Golang ORM 库。GORM框架是go的一个数据库连接及交互框架,主要是把struct类型和数据库记录进行映射,数据库语句复杂的情况下可以直接手写语句,一般用于连接关系型数据库,这里我主要使用MySQL数据库。 对象关系映射(英语:Object Relational Mapping,简称ORM): 通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射,可以使用面向对象的范例从数据库中查询和操作数据。简而言之:代码结构即是数据库结构,代码行为就是数据库行为。 2、为什么选择GORM?特性: 数据库连接(以MySQL为例)和自动建表方便。 文档内容详细全面,适合快速入门上手。 支持关联 (一对一,一对多,多对多的关系)。 带有Create,Save,Update,Delete,Find 中钩子方法。 支持 Preload、Joins 的预加载,对于关联查询很重要,主要用于显示关联子结构...
Redis(四)实战:redigo的安装和连接使用
前言 学习本文需要一些redis知识,请学习前面文章 一、Redigo1、Redigo概述Redigo是Redis数据库的Go客户端。用于实现Redis数据库的基本操作,支持Redis的所有命令。Redigo 官方地址:点击跳转 2、安装直接在在terminal里输入指令 1go get github.com/gomodule/redigo/redis 二、Redigo使用1、普通连接Conn接口是使用Redis数据库的主要接口。通过调用redis.Dial()来创建连接。创建连接完成操作后,必须调用连接关闭方法Conn.Close()。 123456789func main() { //创建Redis连接 c, err := redis.Dial("tcp", "127.0.0.1:6379") if err != nil { log.Fatal(err) } //使用延迟函数,在函数结束前调用连接关闭 defer c.Close()} 若是Redis设置了密码: 1234567891011...
Redis(三)基础:Redis五大基础数据类型
前言 Redis官网:https://redis.io/docs/Redis中文文档:http://www.redis.cn/topics/data-types-intro.html#strings结合官网的学习一定是正确合理的,如果有命令或者理论我讲的不对,可以评论指出谢谢! 一、Redis数据类型介绍Redis不仅只有key-value存储,实际上是一个数据结构服务器,支持不同的数据类型,可以解决从缓存到队列再到事件处理的各种问题。 Strings:二进制安全的字符串 Lists:按插入顺序排序的字符串元素的集合。Redis 列表是字符串值的链表。(用于实现栈和队列) Sets:不重复且无序的字符串元素的集合 Sorted sets:类似Sets,不同的地方在于每个字符串元素都关联一个叫score的浮动数值(floating number value)。里面的元素是按score进行排序。它可以检索一系列的元素。(可以直接看前10个元素或后10个元素) Hashes:由field和关联的value组成的map。field和value都是字符串。实现类似于哈希表的概念。 Bi...
Redis(二)入门:概述与安装
一、Redis概述1、什么是Redis?Redis(Remote Dictionary Server),即远程字典服务。是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis通常将全部数据存储在内存中,会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,但只是用于重启后将数据加载回内存,相当于一个数据备份作用。 为什么Redis会将数据存储在内存中? 因为内存的读写速度比硬盘快一个数量级!这样数据库的性能就会大大提高。也是这个优点,Redis是当下最热门的 NoSQL 技术之一!也被人们称之为结构化数据库! 2、NoSQL1)什么是NoSQL?NoSQL 数据库(意即”不仅仅是SQL”)并非表格格式,其存储数据的方式与关系表不同。NoSQL 数据库的类型因数据模型而异。主要类型包括文档、键值、列式和图形。它们提供了灵活的模式,可以随大量数据和高用户负载而轻松扩展。 参考文章:《NoSQL OR SQL,看完这篇你就懂了》 3、Redis的定义 Redis是一个key-value...
Redis(一)入门:NoSQL OR SQL,看完这篇你就懂了
前言 关系型数据库(MySql、Oracle)无法满足我们对存储的所有要求,因此对底层存储的选型,对每种存储引擎的理解非常重要。MySQL不香吗,为什么还要有NoSQL?请听我慢慢细说! 一、结构化数据、非结构化数据与半结构化数据文章的开始,了解一下结构化数据、非结构化数据与半结构化数据,因为数据特点的不同,将在技术上直接影响存储引擎的选型。 1、结构化数据结构化数据,根据定义是指由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称为行数据。 特点:数据以行为单位,二维表结构下一行数据就表示一个实体的信息,每一列数据的属性都是相同的。 因此关系型数据库刚好契合了结构化数据的特点,关系型数据库也是关系型数据最主要的存储与管理引擎。 2、非结构化数据非结构数据,根据定义是指数据结构不规则或不完整,没有任何预定义的数据模型,不方便用二维逻辑表来表现数据,例如网页日志、文本文档、图像、视频和音频文件等。 特点:没有固定组织原则的未经过滤的信息,通常被称为原始数据。通过对非结构化数据进行搜索和分析,可以提取有用的信息。 3、半结构化数据半结构化数据,根据定义是指...
Dockerfile概述与用法
前言 学习本文需要一些了解Docker的概念以及一些名词。 一、Docker概述1、Docker简介Docker 镜像是通过读取Dockerfile来构建镜像文件的。Dockerfile是一个文本文档,它包含用户可以在命令行上调用的所有命令来组装镜像,每条指令都是独立运行的,并会创建一个新的镜像层 。使用docker build 命令用户用户可以创建一个自动构建,该构建可以连续执行几个命令行指令。 2、为什么要用Dockerfile?为什么要用Dockerfile?这个问题的本身其实是说为什么我们要自定义镜像,明明Docker Hub上有这么多镜像可以用,我们还要自己费心思做镜像。 主要原因:Docker Hub上许多官方镜像只是基础包,很多功能都没有,需要我们自己对官方镜像做扩展,以打包成我们生产应用的镜像。参考我的第一篇文章Docker入门篇:《Docker的入门与安装》 二、docker build工作原理1、镜像构建过程docker build命令从 Dockerfile 和 context 构建一个镜像。构建的 context 是位于指定位置PATH或URL的...
Docker卷(volumes)
前言 学习本文需要一些了解Docker的概念以及一些名词。 一、在Docker中管理数据1、为什么要挂载?默认情况下,在容器内创建的所有文件都存储在可写容器层上。这意味着: 当该容器被删除时,数据也会被同样删除,如果有另一个进程需要数据,就很难从容器中取出数据。 容器的可写层与运行容器的宿主机紧密耦合,你无法将数据移动到其他地方。 写入容器的可写层需要存储驱动程序来管理文件系统。存储驱动程序提供了一个联合文件系统,使用 Linux 内核。与使用直接写入主机文件系统的数据卷相比,这种额外的抽象会降低性能 。 Docker有两种方法:volumes 卷 和 bind mounts 绑定挂载 可以让容器在主机上存储文件,以便即使容器停止或删除后文件也能持久化保存。Docker 还支持将文件存储在主机内存中的容器。此类文件不会持久保存。如果您在 Linux 上运行 Docker,则使用tmpfs 挂载将文件存储在主机的系统内存中。如果您在 Windows 上运行 Docker,命名管道用于将文件存储在主机的系统内存中。 2、选择正确的挂载方式无论你选择那种挂载的方式,容器内的数...
Docker镜像概述和分层原理
前言 学习本文需要一些了解Docker的概念以及一些名词。 一、Docker镜像概述1、镜像是什么?镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时的库、环境变量和配置文件。 镜像是一个只读模板,带有创建Docker容器的说明。通常,一个镜像基于另一个镜像,并带有一些额外的定制。例如,您可以构建一个基于ubuntu镜像的镜像,但是要安装Apache web服务器和您的应用程序,以及运行应用程序所需的配置细节。 Docker 镜像(Image),就相当于是一个 模板,其中包含创建 Docker 容器的说明,可以通过模板来创建容器服务,通过这个镜像我们可以创建多个容器,最终服务运行或项目运行都是在容器中的。 2、如何获取镜像?你可以创建自己的镜像,也可以只使用其他人创建并在Docker Hub中发布的镜像。要构建自己的镜像,需要创建一个Dockerfile,使用简单的语法定义创建和运行镜像所需的步骤。Dockerfile中的每一条指令都会在图像中创建一个层。当你更改Dockerfile并重新构...
Docker底层原理和常用命令
前言 :) 友情提示本文学习需要了解一些Linux简单命令 一、Docker底层原理1、Docker是怎么工作的?Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker的守护进程运行在宿主机上,通过Socket从客户端访问!DockerServer 接收到 Docker-Client 的指令,就会执行这个命令。 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。 容器的实质是进程,与宿主机上的其他进程是共用一个内核,但与直接在宿主机执行的进程不同,容器进程运行在属于自己的独立的命名空间。命名空间隔离了进程间的资源,使得 a,b 进程可以看到 S 资源,而 c 进程看不到。 2、Docker为什么比VM快? Docker有着比虚拟机更少的抽象层。 1)虚拟机是硬件层抽象,虚拟硬件和操作系统。 2)Docker是应用层抽象,只虚拟化操作系统 。 Dock...
Docker部署Golang项目和Mysql镜像
前言 友情提示 本文学习需要了解一些Linux简单命令和Docker的一些命令 使用的项目我已经上传到github:https://github.com/Gopherlinzy/gin-gorm-example 一、获取一个可执行的项目我自己写了一个简单的gin-gorm项目,github下载地址:https://github.com/Gopherlinzy/gin-gorm-example 1、拉取项目打开Windows终端,输入命令: 1go get github.com/Gopherlinzy/gin-gorm-example 2、配置只需要拉取下来,修改 conf/app.ini 配置文件 123456789[database]Type = mysqlUser = 数据库名称Password = 数据库密码//数据库的IP地址Host = 127.0.0.1:3306//数据库名称 Name = blogTablePrefix = blog_ 二、编写Dockerfile文件Dockerfile文件就是单纯的文件并没有文件后缀,我们来了解一下,Dockerf...



