自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小六

just do do IT

  • 博客(59)
  • 收藏
  • 关注

原创 0. Go语言学习/Go语言教程

《Go语言学习》目录。一、开发环境准备1 安装Go及搭建Go开发环境2 Go跨平台编译3 Go依赖管理及go module使用4 使用Go module导入本地包二、Go语言基础5 Go语言基础之变量和常量6 Go语言基础之基本数据类型7 Go语言基础之运算符8 Go语言基础之流程控制9 Go语言基础之数组10 Go语言基础之切片11 Go语言切片排序算法(选择排序、冒泡排序、sort包排序)12 Go语言基础之map13 Go语言基础之函数14 Go语言基础之指针15 G

2020-12-09 08:58:25 274

转载 MySQL函数大全,MySQL常用函数汇总

MySQL函数大全,MySQL常用函数汇总MySql函数:http://c.biancheng.net/mysql/function/

2021-11-25 09:58:02 180

原创 docker安装卸载升级及基本操作

1、在Linux虚拟机上安装docker1.1、检查内核版本,必须是3.10及以上uname -r 1.2、安装dockeryum install docker -y 1.3、启动dockersystemctl start docker 查看版本docker -v 设置开机自动启动systemctl enable docker 1.4、停止dockersystemctl stop docker1.5、卸载docker(1)、查看docker安装过的包yum li

2021-08-27 13:16:59 514

原创 gin中使用jwt

1. 前言JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。2. gin集成Jwtgin 可以自定义中间件,所以集成jwt可以以中间件的方式引入,jwt在golang上已有好几个现成的开源库,我用的是jwt-go,具体使用可以查看GitHub、或 https://pkg.go.dev/github.com/dgrijalva/jwt-go/v4中查看相关使用

2021-08-12 11:51:49 3210

原创 34 Go语言中使用JWT

package mainimport ( "errors" "fmt" "github.com/dgrijalva/jwt-go/v4" "time")/* JWT使用*/// MyClaims 自定义声明结构体并内嵌jwt.StandardClaims// jwt包自带的jwt.StandardClaims只包含了官方字段// 我们这里需要额外记录一个username字段,所以要自定义结构体// 如果想要保存更多信息,都可以添加到这个结构体中type MyClaims s

2021-08-09 16:39:21 637

原创 建造者模式使用(链式调用)

1.创建链式调用类/** * @Author LL * @Date 2021-07-16 */public class Phone { private final String cpu; private final String screen; private final String memory; private final String mainboard; private Phone(String cpu, String screen, Stri

2021-07-16 13:04:11 192

原创 3、单例设计模式

3.1 简介所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(静态方法)。3.2 单例设计模式八种方式1)饿汉式(静态常量)2) 饿汉式(静态代码块)3) 懒汉式(线程不安全)4) 懒汉式(线程安全,同步方法)5) 懒汉式(线程安全,同步代码块)6) 双重检查7) 静态内部类8) 枚举3.3 饿汉式(静态常量)饿汉式(静态常量)应用实例步骤如下:构造器私有化 (防止 new )类的内部创建对象

2021-05-04 13:17:23 70

原创 2、设计模式简介

2.1 设计模式简介设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂度。<<设计模式>> 是经典的书,作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vliss

2021-05-04 11:21:17 68

原创 1、设计模式七大原则

1.1 设计模式的目的编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好代码重用性 (即:相同功能的代码,不用多次编写)可读性 (即:编程规范性, 便于其他程序员的阅读和理解)可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)使程序呈现高内聚,低耦合的特性分享金句:设计模式包含了面向对象的精髓,“懂了设计模式

2021-05-04 11:14:13 88

原创 springcloud与springboot版本匹配

1、版本详情版本对应详情JSON2、json格式化在线格式化3、官网进入4、组件进入

2021-03-25 16:19:25 140

原创 golang中byte和runne 类型

简介golang中字符属于int类型,当我们直接输出 byte(字符)的时候输出的是这个字符对应的ASCII码值使用1. 直接输出值可以看见输出的是码值,类型int32package mainimport "fmt"func main() { var a = 'a' fmt.Printf("值:%v, 类型:%T\n", a, a)//值:97, 类型:int32 fmt.Printf("值:%c, 类型:%T\n", a, a)//值:a, 类型:int32}2. 输

2021-01-13 14:53:23 419

转载 关于数据库mysql死锁

关于数据库mysql死锁问题:解决方案

2021-01-04 09:12:50 55

转载 docker中安装consul简单使用

1. 拉取Consul镜像docker pull consul # 默认拉取latestdocker pull consul:1.6.1 # 拉取指定版本2. 安装并运行docker run -d -p 8500:8500 --restart=always --name=consul consul:latest agent -server -bootstrap -ui -node=1 -client='0.0.0.0'相关参数说明:agent: 表示启动 Agent 进程。server:

2021-01-03 10:30:33 647 1

原创 Golang网络爬虫框架gocolly/colly

Golang网络爬虫框架gocolly/colly,具体内容连接:链接:Golang 网络爬虫框架gocolly/colly 1链接:Golang 网络爬虫框架gocolly/colly 2链接:Golang 网络爬虫框架gocolly/colly 3链接:Golang 网络爬虫框架gocolly/colly 4链接:Golang 网络爬虫框架gocolly/colly 5...

2021-01-01 23:05:51 390

原创 Go语言配置管理—Viper

前言Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。它支持以下特性:设置默认值从JSON、TOML、YAML、YML、HCL、envfile和 properties格式的配置文件读取配置信息实时监控和重新读取配置文件(可选)从环境变量中读取从远程配置系统(etcd或Consul)读取并监控配置变化从命令行参数读取配置从buffer读取配置显式配置值1. Viper使用1.1 特点Viper能够为你执行下列

2020-12-28 23:02:31 952

原创 Go 结构体、数组、字典和 json 字符串的相互转换方法

Go 语言中 encoding/json包可以很方便的将结构体、数组、字典转换为 json 字符串。1. 相关语法1.1 引入import "encoding/json"1.2 解析语法// v 传入结构体、数组等实例变量// []byte 字节数组// error 可能会有的错误func Marshal(v interface{}) ([]byte, error)1.3 反解析// []byte 字节数组// v 传入结构体、数组等实例变量的指针地址// error 可能会.

2020-12-28 19:42:19 985

原创 easyExcel官方文档

官方文档:https://alibaba-easyexcel.github.io/index.html最新文档:https://yuque.com/easyexcel

2020-12-21 16:51:14 22232

原创 8. TypeScript 的Web 开发

8.1 概述Web 开发涵盖以下内容:HTML、CSS、JavaScript (HTML、CSS不是本课程的重点,仅简单讲解)。三者之间的关系:(结构)HTML 负责创建页面结构。(样式)CSS 负责美化页面结构(相当于化妆)。(行为)JavaScript 负责让页面“动”起来,解锁更多动效。8.1.1 Web 开发基础(1)HTMLHTML(Hyper Text Markup Language,即:超文本标记语言)负责创建页面结构。创建第一个 HTML 步骤:创建 a.html

2020-12-14 10:56:24 457 1

原创 7. TypeScript 对象及接口

7.1 对象概述生活中,对象是一个具体的事物,比如:你的电脑、你的手机、古力娜扎、周杰伦(周董)等都是对象。程序员都知道:万物皆对象。这些具体的事物,都有自己的特征和行为:特征:你的电脑:尺寸、重量、价格等你的手机:品牌、屏幕大小、颜色等古力娜扎:年龄、身高、三围等行为:你的电脑:浏览网页、写代码等你的手机:播放视频、吃鸡等古力娜扎:演电影、配音等TypeScript 中的对象,是对生活中具体事物的抽象,使得我们可以通过代码来描述具体的事物。TS 中的对象,也是由特征

2020-12-14 10:11:18 189

原创 6. TypeScript 函数基础

6.1 概述所谓函数,就是声明一次但却可以调用任意多次的一段代码。意义:实现代码复用,提升开发效率。封装:将一段代码包装起来,隐藏细节。例如:function getSum(nums: number[]) { let sum: number = 0 for (let i: number = 0; i < nums.length; i++) { sum += nums[i] } console.log(sum)}getSum(nums1) // 计算nums1中所有元素的和

2020-12-14 09:41:10 88

原创 5. TypeScript 数组

5.1 概述存储多个数据时,声明多个变量就太繁琐了。数组,是用于存放多个数据的集合。有数组:只需要使用一个数组([]),就可以存储任意多个数据。如下:let name1: string = 'AA'let name2: string = 'BB'let name3: string = 'CC'//使用数组let names: string[] = ['AA', 'BB', 'CC']注意:数组中,通常是相同类型的数据。5.2 创建数组创建数组有两种语法形式。语法一(推荐):

2020-12-14 09:17:25 2913

原创 4. TypeScript 语句

4.1 条件语句条件语句:根据判断条件的结果(真或假),来执行不同的代码,从而实现不同功能。条件执行时,首先判断条件是否满足。如果 条件满足,就做某件事情(情况1)如果 条件不满足,就做另外一件事情(情况2)条件语句,也叫分支语句,不同的情况就是不同的分支。4.1.1 if 语句在 TypeScript 中 if 语句就是实现条件判断的。if 语句的语法:if (判断条件) { 条件满足时,要做的事情}解释:判断条件:布尔类型(true 或 false)。如果

2020-12-14 08:31:51 245

原创 1. gin安装与使用

前言Gin 是一个 go 写的 web 框架,具有高性能的优点。官方地址:https://github.com/gin-gonic/gin1. 安装首先需要安装Go(需要1.12+版本),然后可以使用下面的Go命令来安装Gin。go get -u github.com/gin-gonic/gin2. 使用在需要用到gin的go文件中导入:import "github.com/gin-gonic/gin"2.1 快速开始创建项目 gin_project,项目中使用包管理工具mod

2020-12-13 14:23:01 537

原创 3. TypeScript 运算符

3.1 运算符概述运算符也称为操作符,用来实现赋值(=)、算术运算、比较等功能的符号。常用的运算符:算术运算符赋值运算符递增/递减运算符比较运算符逻辑运算符3.1.1 概述算术运算符包含:加(+)、减(-)、乘(*)、除(/)。算术运算符:进行算术运算时使用的符号,用于两个数值之间的计算。// 加console.log(1 + 2) // 3// 减console.log(2 - 1) // 1// 乘console.log(2 * 3) // 6// 除cons

2020-12-10 15:30:47 573

原创 2. TypeScript 变量和数据类型

2.1 什么是变量通俗的讲:变量,是用来存储数据的容器,并且是可以变化的。保温杯里泡枸杞枸杞难挡岁月催,杯里再换点当归:枸杞 -> 当归。2.2 变量的使用2.2.1 基本使用变量的使用分为两步:1 声明变量并指定类型 2 给变量赋值。第一步:声明变量并指定类型let age: number;解释:let 是 TS 的关键字,用来声明变量。age 是程序员自己定义的变量名称。: number 用来指定变量 age 为数值类型。注意:分号是可选的,可省略第二步:

2020-12-10 15:07:49 181

原创 1. TypeScript 简介

1.1 TypeScript 是什么TypeScript(简称:TS)是 JavaScript 的超集(JS 有的 TS 都有)。TypeScript = Type + JavaScript(为 JS 添加了类型系统)。TypeScript 是微软开发的开源编程语言,设计目标是开发大型应用。可以在任何浏览器、任何计机、任何操作系统上运行。1.2 TypeScript 相比 JS 的优势JS 的类型系统存在“先天缺陷” ,绝大部分错误都是类型错误( Uncaught TypeError )。优

2020-12-10 14:39:09 153

原创 33. Go语言数据库操作之MongoDB

前言mongoDB是目前比较流行的一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库(NoSQL)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。33.1 mongoDB介绍mongoDB是目前比较流行的一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库(NoSQL)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。mongoDB中将一条数据存储为一个文档(document),数据结构由键值(key-value)对组成。 其中文档类似于我们平

2020-12-09 08:33:20 638 1

原创 32. Go语言数据库操作之Redis

前言在项目开发中redis的使用也比较频繁,本文介绍Go语言中go-redis库的基本使用。32.1 Redis简介Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。32.1.1 Redis支持的数据结构Redis支持诸如字符串(strings)、哈希(hashes)、列表(list

2020-12-09 08:12:28 638 2

原创 31. Go语言数据库操作之sqlx库使用

前言在项目中我们通常可能会使用database/sql连接MySQL数据库。本文借助使用sqlx实现批量插入数据的例子,介绍sqlx中可能被你忽视了的sqlx.In和DB.NamedExec方法。31.1 sqlx介绍在项目中我们通常可能会使用database/sql连接MySQL数据库。sqlx可以认为是Go语言内置database/sql的超集,它在优秀的内置database/sql基础上提供了一组扩展。这些扩展中除了大家常用来查询的Get(dest interface{}, ...) error

2020-12-09 08:12:02 881

原创 30. Go语言数据库操作之MySQL

前言MySQL是业界常用的关系型数据库,本文主要介绍Go语言如何操作MySQL数据库。30.1 连接Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。常用的数据库基本上都有完整的第三方实现。例如:MySQL驱动30.1.1 下载依赖go get -u github.com/go-sql-driver/mysql30.1.2 使用MySQL驱动func Open(driv

2020-12-09 08:11:47 326

原创 29. Go语言标准库之Context

前言在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。 当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。29.1 为什么需要Context2

2020-12-08 15:24:39 100

原创 28. Go语言标准库之net/http

前言Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现。28.1 net/http介绍Go语言内置的net/http包提供了HTTP客户端和服务端的实现。28.1.1 HTTP协议超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。28.2 HTTP客户端28.2.1 基本的HTTP/HTT

2020-12-08 14:57:49 154

原创 27. Go语言标准库之strconv

前言Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换。strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi()、Itia()、parse系列、format系列、append系列。更多函数请查看官方文档。27.1 string与int类型转换这一组函数是平时编程中用的最多的。(1) Atoi()Atoi()函数用于将字符串类型的整数转换为int类型,函数签名如下:func Atoi(s string) (i int, err error)

2020-12-08 14:39:58 142

原创 26. Go语言标准库之文件操作

前言主要介绍Go语言中文件读写的相关操作。计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。26.1 打开和关闭文件os.Open()函数能够打开一个文件,返回一个*File和一个err。对得到的文件实例调用close()方法能够关闭文件。package mainimport ( "fmt" "os")func main() { // 只读方式打开当前目录下的main.go文件 file, err := os.Open("./main.go"

2020-12-08 14:22:32 202

原创 25. Go语言标准库之log包

前言无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序中记录日志的好习惯。Go语言内置的log包实现了简单的日志服务。主要介绍标准库log的基本使用。25.1 使用Loggerlog包定义了Logger类型,该类型提供了一些格式化输出的方法。本包也提供了一个预定义的“标准”logger,可以通过调用函数Print系列(Print|Printf|Println)、Fatal系列(Fatal|Fatalf|Fatalln)、和Panic系列(Pa

2020-12-08 14:03:23 222

原创 24. Go语言标准库之flag包

前言Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。24.1 os.Args如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。package mainimport ( "fmt" "os")//os.Args demofunc main() { //os.Args是一个[]string if len(os.Args) > 0 { for index, arg := range os.Ar

2020-12-08 13:44:27 155

原创 23. Go语言标准库之time包

前言时间和日期是我们编程中经常会用到的,本文主要介绍了Go语言内置的time包的基本用法。23.1 time包time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。23.1.1 时间类型time.Time类型表示时间。我们可以通过time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息。示例代码如下:func timeDemo() { now := time.Now() //获取当前时间 fmt.Printf("current time:%v\n", no

2020-12-08 13:32:59 190

原创 22. Go语言标准库之fmt与格式化占位符

前言fmt标准库是我们在学习Go语言过程中接触最早最频繁的一个了,本文介绍了fmtb包的一些常用函数。22.1 fmtfmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。22.1.1 向外输出标准库fmt提供了以下几种输出相关函数。(1)PrintPrint系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容,Printf函数支持格式化输出字符串,Println函数会在输出内容的结尾添加一个换行符。func Prin

2020-12-08 13:15:34 846

原创 21. Go语言基础之单元测试

前言不写测试的开发不是好程序员。我个人喜欢TDD(Test Driven Development)的,然而大部分的程序员都不太关注测试这一部分。 本文主要介绍下在Go语言中如何做单元测试和基准测试。21.1 go test工具Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被g

2020-12-08 11:28:11 219

原创 20. Go语言基础之网络编程

前言关于网络编程其实是一个很庞大的领域,本文只是简单的演示了如何使用net包进行TCP和UDP通信。20.1 互联网协议介绍互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。我们理解了这些协议,就理解了互联网的原理。由于这些协议太过庞大和复杂,没有办法在这里一概而全,只能介绍一下我们日常开发中接触较多的几个协议。20.1.1 互联网分层模型互联网的逻辑实现被分为好几层。每一层都有自己的功能,就像建筑物一样,每一

2020-12-08 10:14:18 203

空空如也

空空如也

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

TA关注的人

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