Docker的入门与安装
一、Docker概述1、Docker为什么出现(热门)?一款产品需要开发和上线两套环境。1)应用环境2)应用配置 开发 — 运维之间的存在问题:开发的电脑可以运行,到运维的电脑却不行了,开发的版本更新了,到运维的电脑导致服务不可用了,运维这边就需要重新同步版本环境与配置,难度就很大了。 但是环境配置是十分麻烦的,每一台机器都要重新部署环境(集群Redis,Node.js,Mysql…),部署错误还会重新来过,又费时又费力。 我们发布一个项目,可能需要Redis、Mysql、Node.js的环境,电脑上运行只需要一分钟,而环境配置可能一天都不一定,充电两小时用时五分钟的概念。 如果我们可以把项目和环境一起安装打包,而不是单纯的一个项目包。 Docker就是来完成这个事情的技术 传统:开发人员就开发项目,运维来做部署这些事情 现在:开发打包部署上线,一套流程做完 概念理解:exe安装包 – >发布(应用商店) – > 用户下载安装 – > 安装即可用Golang项目(环境) – > 项目和环境一起打包(Docker镜像) – > Docker仓库 ...
Docker学习目录
Docker学习过程目录Docker入门 Docker概述 Docker的思想 Docker的历史 Docker的优势 Docker与虚拟机的区别 Docker安装 Docker基本架构 Docker命令 Docker底层原理和Docker常用命令 Docker底层原理 Docker是怎么工作的? Docker为什么比VM快? Docker 所使用的底层技术 Docker常用命令 镜像命令 容器命令 操作命令 常用其他命令 Docker部署Golang项目和Mysql镜像Docker镜像概述和分层原理(*重点)Docker卷(volumes)(*重点)Dockerfile概述与用法Docker网络原理我会以实战的方法来学习Docker,本文只是个索引目录
Vue学习-组件和生命周期
一、组件基础通常一个应用会以一棵嵌套的组件树的形式来组织:例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。 1、为什么我们要用组件了解传统方式到组件化方式的更新。 传统方式编写网页,会导致依赖关系混乱,代码复用率低,所以我们需要用到组件,不同组件的用来实现局部功能的代码和资源。 2、基本使用为了能在模板中使用,这些组件必须先注册以便 Vue 能够识别。这里有两种组件的注册类型:全局注册和局部注册。至此,我们的组件都只是通过 component 方法全局注册的: 1)全局注册组件是用来实现局部功能的代码和资源的集合,是带有名称的可复用实例 12345const app = Vue.createApp({})app.component('my-component-name', { // ... 选项 ...}) 全局注册的组件可以在应用中的任何组件的模板中使用。 2)局部注册父组件 App.vue子组件 header.vue、message.vue、bottom.vu...
Vue学习-基础入门篇
一、Vue介绍1、Vue是什么Vue是一套用于构建用户界面的 ==渐进式框架== 。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。 2、Vue的特点(1) Vue 的核心库只关注视图层。(2) 不仅易于上手,还便于与第三方库或既有项目整合。(3) 遵循 ==MVVM模式== ,能够实现视图与模型的 ==双向绑定==。 MVVM模式:就是数据变化的时候, 页面会自动刷新, 页面变化的时候,数据也会自动变化. (4) 编码简洁,体积小,运行效率高,适合移动/PC端开发。 二、Vue.js的安装 中文文档手册安装方法 参考大佬详细完整的安装方法 1、使用Vite创建Vite 是一个 web 开发构建工具,由于其原生 ES 模块导入方式,可以实现闪电般的 ==冷服务器启动==。 它做到了 本地快速开发启动, 在生产环境下基于 Rollup 打包。 快速的冷启动,不需要等待打包操作; 即时的热模块...
Gin框架入门-Gin框架和Gorm框架搭建一个简单的API微服务
前言本章会用到的技术,不太熟悉的可以去看看我以前的文章 快速安装gin框架:https://linzyblog.netlify.app/2022/07/18/gin/ HTTP请求:https://linzyblog.netlify.app/2022/07/18/gin-http/ Gorm入门指南:https://linzyblog.netlify.app/2022/07/19/gin-gorm1/ GORM框架进阶之CRUD接口(数据库增删改查操作):https://linzyblog.netlify.app/2022/07/19/gin-gorm2/ 一、设计思路这章动手把前面学过的Gin框架内容和Gorm框架结合做一个简单的API 微服务 我们需要通过前端来完成对数据库数据的增删改查即可,需要如下这样的 API : POST todos/ 添加数据 GET todos/ 获取数据库所有数据 GET todos/{id} 获取指定 id 的数据 PUT todos/{id} 修改指定 id 的数据 DEL...
Gin框架入门-Casbin进阶之策略管理API使用方法
一、Casbin 安装1、安装1go get github.com/casbin/casbin/v2 2、在线编辑您还可以使用在线编辑器 ( https://casbin.org/editor/ ) 在 Web 浏览器中编写您的 Casbin 模型和策略。 二、创建Casbin enforcerCasbin使用配置文件来设置访问控制模式。 它有两个配置文件,model.conf和policy.csv。 其中,model.conf存储了访问模型,policy.csv存储了特定的用户权限配置。 Casbin的使用非常精炼。 基本上,我们只需要一个主要结构:enforcer。 当构建这个结构时,model.conf和policy.csv将被加载。 换句话说,要新建一个Casbin enforcer,你必须提供一个Model和一个Adapter。 1、Model.confModel规定了权限由 sub、obj、act三要素组成,只有在策略Policy列表中存在于请求Request完全相同的策略时,该请求才能通过。匹配器的结构通过 p.eft 获取, some(where (p.eft ...
Gin框架入门-Casbin入门指南(ACL、RBAC、域内RBAC模型)
一、Casbin概述Casbin 是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。Casbin参考文档链接:https://casbin.org/github项目链接:https://github.com/casbin/casbin Casbin 可以: 支持自定义请求的格式,默认的请求格式为 **{subject, object, action}**。 具有访问控制模型model和策略policy两个核心概念。 支持RBAC中的多层角色继承,不止主体可以有角色,资源也可以具有角色。 支持内置的超级用户 例如:root 或 administrator。超级用户可以执行任何操作而无需显式的权限声明。 支持多种内置的操作符,如 keyMatch,方便对路径式的资源进行管理,如 /foo/bar 可以映射到 /foo* Casbin 不能: 身份认证 authentication(即验证用户的用户名和密码),Casbin 只负责访问控制。应该有其他专门的组件负责身份认证,然后由 Casbin 进行访问控制,二者是相互配合的关...
Gin框架入门-JWT认证
一、JWT1、JSON Web TokenJSON Web Token 参考文档:https://jwt.io/introductionJSON Web Token (JWT) 是一个开放标准 ( RFC 7519 ),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为 JSON 对象。此信息可以验证和信任,因为它是数字签名的。JWT 可以使用密钥(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。 简而言之,它是一个签名的 JSON 对象,可以做一些有用的事情(例如,身份验证)。它通常用于BearerOauth 2 中的令牌。令牌由三部分组成,由 ( .) 分隔。前两部分是 JSON 对象,已经过base64url编码。最后一部分是签名,以同样的方式编码。 第一部分称为标题。它包含验证最后一部分签名的必要信息。例如,使用哪种加密方法进行签名以及使用了什么密钥。 中间的部分是有趣的部分。它称为声明,包含您关心的实际内容。有关保留密钥和添加自己的正确方法的信息 二、什么时候应该使用 JSON Web Tokens以下是 JSON Web T...
Gin框架入门-路由分组和中间件
一、路由分组在我们实际的开发应用中我们希望能个各个功能模块的路由进行分组,同一个模块的不同路由带有同样的前缀。 作用:首先是路由更加的清晰 并且我们在针对某一组路由进行中间件权限校验的时候也比较的方便。 代码示例: 12345678910111213r := gin.Default()v1 := r.Group("v1")v1.GET("/test1", func(c *gin.Context) { c.JSON(200, gin.H{ "msg": "这里是test1", })})v1.GET("/test2", func(c *gin.Context) { c.JSON(200, gin.H{ "msg": "这里是test2", })})r.Run(":8080") 打开postman选择GET请求,访问http://localh...
Gin框架入门-模型绑定和验证
一、模式绑定若要将请求主体绑定到结构体中,请使用模型绑定,目前支持JSON、XML、YAML和标准表单值(foo=bar&boo=baz)的绑定。 需要在绑定的字段上设置tag,比如,绑定格式为json,需要这样设置 json:”fieldname” 。 Gin还提供了两套绑定方法: 1、Must bind Methods - Bind, BindJSON, BindXML, BindQuery, BindYAML Behavior - 这些方法底层使用 MustBindWith,如果存在绑定错误,请求将被以下指令中止 c.AbortWithError(400, err).SetType(ErrorTypeBind),响应状态代码会被设置为400,请求头Content-Type被设置为text/plain; charset=utf-8。注意,如果你试图在此之后设置响应代码,将会发出一个警告 [GIN-debug] [WARNING] Headers were already written. Wanted to override...



