自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 问答 (1)
  • 收藏
  • 关注

原创 已解决Application run failed org.springframework.beans.factory.BeanNot

问题原因:SpringBoot的版本与mybiats-puls版本不对应且,spring自带的mybiats与mybiats-puls版本不对应。这里我用的是3.2.2版本的SpringBoot,之前mybiats-puls版本是3.5.3.1有所不同。解决办法:完整粘贴就好。

2024-02-20 22:55:00 370

原创 分布式锁实现(mysql,以及redis)以及分布式的概念(续)redsync包使用

这章主要是讲如何通过redis实现分布式锁的。

2024-01-21 17:53:53 1299 1

原创 分布式锁实现(mysql,以及redis)以及分布式的概念

我旁边的一位老哥跟我说,你知道分布式是是用来干什么的嘛?一句话给我干懵了,我能隐含知道,大概是用来做分压处理的,并增加系统稳定性的。但是具体如何,我却道不出个1,2,3。现在就将这些做一个详细的总结。至少以后碰到面试官可以说上个123。

2024-01-21 01:19:25 1274

原创 redis总结--常见问题与解决办法,推荐等级

为了更加友好的阅读,并帮助朋友们找到解决办法:可以看我的飞书。

2024-01-17 15:59:24 582

原创 GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思想)(一)

这几天没有更新,其主要的的原因是,在学习对Elasticsearch的使用。Elasticsearch是一个非常强大的数据库索引工具。是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。

2023-12-28 18:16:12 1435 1

原创 GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思想)(二)

这里强调说明一下。这里为什么要用两个客户端?因为对于真正的实际运用中会有各种各样的问题出现,不仅会有一个一个查询,一个一个插入的情况,更会有一批一批的查询,插入的。所以这里的客户端对应的都会各有不同。:功能强大,但是不支持批量处理Client:调用复杂,但是支持批量处理// CreateIndex 创建所用的索引结构if err!= nil {log.Printf("索引已经存在")return errif err!= nil {

2023-12-28 18:14:11 1926 1

原创 GoLong的学习之路,进阶,微服务之序列化协议,Protocol Buffers V3

这章是接上一章,使用RPC包,序列化中没有详细去讲,因为这一块需要看的和学习的地方很多。并且这一块是RPC中可以说是最重要的一块,也是性能的重要影响因子。今天这篇主要会讲其使用方式。当对象需要跨进程、跨语言、跨节点传输、持久化、状态读写、复制时,都需要进行序列化,其性能和易用性影响运行效率和开发效率。但是对于序列化框架而言,业内将其分为两类:静态序列化框架,动态序列化框架。

2023-12-11 16:16:04 1148 1

原创 GoLong的学习之路,进阶,微服务之使用,RPC包(包括源码分析)

对象重用。Request和Response都是可重用的,通过Lock处理竞争。这在大并发的情况下很有效。使用了大量的goroutine。如果使用一定数量的goroutine作为worker池去处理这个case,可能还会有些性能的提升,但是更复杂了。使用goroutine可以获得了非常好的性能。业务处理是异步的,服务的执行不会阻塞其它消息的读取。一个codec实例必然和一个相关,因为它需要从connection中读取request和发送response。go的rpc官方库的消息(request和。

2023-12-10 00:15:59 1186 2

原创 GoLong的学习之路,进阶,Viper(yaml等配置文件的管理)

本来有今天是继续接着上一章写微服务的。但是这几天有朋友说,再写Web框架的时候,遇到一个问题,就是很多的中间件(redis,微信,mysql,mq)的配置信息写的太杂了,很不好管理。希望我能写一篇有管理配置文件的。所以这篇就放到今天写吧。微服务就放到下一篇来说吧。今天介绍的主角:Viper。

2023-12-08 14:03:48 1040

原创 GoLong的学习之路,进阶,微服务之原理,RPC

其实我早就很想写这篇文章了,RPC是一切现代计算机应用中非常重要的思想。也是微服务和分布式的总体设计思想。只能说是非常中要,远的不说,就说进的这个是面试必问的。不管用的上不,但是就是非常重要。

2023-12-01 17:18:18 1156

原创 GoLong的学习之路,进阶,Redis

这个redis和上篇rabbitMQ一样,在之前我用Java从原理上进行了剖析,这里呢,我做项目的时候,也需要用到redis,所以这里也将去从怎么用的角度去写这篇文章。

2023-11-29 11:19:29 1196 2

原创 GoLong的学习之路,进阶,RabbitMQ (消息队列)

快有一周没有写博客了。前面几天正在做项目。正好,项目中需要MQ(消息队列),这里我就补充一下我对mq的理解。其实在学习java中的时候,自己也仿照RabbitMQ自己实现了一个单机的mq,但是mq其中一个特点也就是,分布式我在项目中没有涉及。这里我用go语言将RabbitMQ的操作进行一次整理。

2023-11-28 14:28:24 1994 1

原创 GoLong的学习之路,进阶,标准库之并发(context)补充并发三部曲,你真的明白context吗?

Go内置两个函数:Background()和TODO(),这两个函数分别返回一个实现了Context接口的background和todo。我们代码中最开始都是以这两个内置的上下文对象作为最顶层的partent context,衍生出更多的子上下文对象。主要用于main函数、初始化以及测试代码中,作为Context这个树结构的最顶层的Context,也就是根Context。TODO(),它目前还不知道具体的使用场景,如果我们不知道该使用什么Context的时候,可以使用这个。background和。

2023-11-16 10:28:44 297

原创 GoLong的学习之路,进阶,语法之并发(并发错误处理)补充并发三部曲

这篇文章主要讲的是如何去处理并发的错误。在Go语言中十分便捷地开启goroutine去并发地执行任务,但是如何有效的处理并发过程中的错误则是一个很棘手的问题。

2023-11-13 11:09:53 334

原创 GoLong的学习之路(二十三)进阶,语法之并发(go最重要的特点)(锁,sync包,原子操作)

这章是我并发系列中最后的一章。这章主要讲的是锁。但是也会讲上一章channl遗留下的一些没有讲到的内容。select关键字的用法,以及错误的一些channl用法。废话不多说。。。

2023-11-10 15:52:56 539

原创 GoLong的学习之路(二十二)进阶,语法之并发(go最重要的特点)(channel的主要用法,select的使用)

这一章是接上一章内容继续,上一章说到协程也就是goroutine,如何使用它,这一张是讲一种数据结构。当然这个章节的数据结构非常重要。可以说这个数据结构就是为了方便协程,才制作出来的。单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。虽然可以使用共享内存进行数据交换,但是共享内存在不同的 goroutine 中容易发生竞态问题。为了保证数据交换的正确性,很多并发模型中必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。

2023-11-08 10:13:21 197 2

原创 GoLong的学习之路(二十一)进阶,语法之并发(go最重要的特点)(协程的主要用法)

并发编程在当前软件领域是一个非常重要的概念,随着CPU等硬件的发展,我们无一例外的想让我们的程序运行的快一点、再快一点。Go语言在语言层面天生支持并发,充分利用现代CPU的多核优势,这也是Go语言能够大范围流行的一个很重要的原因。并且在云的大放光彩的今天。想要支持分布式的,并且并发。那么go就是不二人选。当然对于并发来说,一章是难说完的。

2023-11-07 15:42:45 240

原创 GoLong的学习之路(二十)进阶,语法之反射(reflect包)

变量机制类型信息:预先定义好的元信息。值信息:程序运行过程中可动态变化的。程序运行反射是指在程序运行期间对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。解决这个问题支持反射的语言可以在程序编译期间将变量的反射信息,如字段名称类型信息结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期间获取类型的反射信息,并且有能力修改它们。Go程序在运行期间使用reflect包。

2023-11-07 10:55:00 214

原创 GoLong的学习之路(番外)如何使用依赖注入工具:wire

我为什么要直接写番外呢?其原因很简单。项目中会使用,其实在这里大家就可以写一些项目来了。依赖注入的工具本质思想其实都大差不差。无非控制反转和依赖注入。

2023-11-06 15:28:06 251 1

原创 GoLong的学习之路(十九)基础工具之GORM(操作数据库)(关联)GORM中最重要的特点!(简化代码)

可以通过传入来定制预加载SQLJoinTable可以是一个全功能的模型,如有软删除,钩子支持和更多的字段,你可以设置它与自定义连接表要求外键是复合主键或复合唯一索引ID int"`ID uint// ...修改Person的Addresses字段的连接表为。必须定义好所需的外键,否则会报错。

2023-11-03 15:56:04 212

原创 GoLong的学习之路(十八)基础工具之GORM(操作数据库)(删除delete)

上回书说到,更新也叫修改,update,此章说明删除操作。

2023-11-03 09:41:30 946 1

原创 GoLong的学习之路(十七)基础工具之GORM(操作数据库)(更新Update)

书接上回,上回写道,GORM的查询和创建(插入数据),这回继续些增删改查的改和删的操作。

2023-11-02 17:39:07 874

原创 GoLong的学习之路(十六)基础工具之GORM(操作数据库Mysql)(创建数据库,插入数据Insert和查询数据select))

GORM就类似于Java中的Mybatis,对于开发者来说简直是福音,并且支持主流数据库。

2023-10-31 17:24:46 171

原创 GoLong的学习之路(十七)基础工具之Gin框架使用JWT(前后端分离)

JWT token的payload部分是一个json串,是要传递数据的一组声明,这些声明被JWT标准称为claims。:JWT的签发主体;:JWT的所有者;:JWT的接收对象;:JWT的过期时间;:JWT的生效开始时间;:JWT的签发时间;:是JWT的唯一标识除了以上标准声明以外。还有因为自己的需求不同来决定:JWT中来保存那些数据。例子:我们规定在JWT中要存储username信息,那么我们就定义一个MyClaims结构体。

2023-10-30 15:48:50 307 1

原创 GoLong的学习之路(十六)基础工具之Gin框架

Gin框架介绍及使用,这张不用看内容就知道非常重要,重要到什么地步呢?重要到开发java不会Spring全家桶这种概念。上几篇文章写的是如何构建骨架,经脉。这一章是将血肉注入。

2023-10-30 11:51:32 262 1

原创 GoLong的学习之路(十五)语法之接口(重要)

type 接口类型名 interface{方法名1( 参数列表1 ) 返回值列表1方法名2( 参数列表2 ) 返回值列表2接口类型名:Go语言的接口在命名时,一般会在单词后面添加er,如有写操作的接口叫Writer,有关闭操作的接口叫closer等。接口名最好要能突出该接口的类型含义。方法名:当方法名首字母是大写且这个接口类型名首字母也是大写时,这个方法可以被接口所在的包(package)之外的代码访问。参数列表、返回值列表:参数列表和返回值列表中的参数变量名可以省略。(无参)所以对于是。

2023-10-27 15:44:47 105

原创 GoLong的学习之路(十四)语法之标准库 time(时间包)的使用

由于time.loadLocation 依赖系统的时区数据库,在不确定程序的运行环境的情况下建议先定义时区偏移量,然后使用time.FixedZone 的方式指定时区。time.Format函数能够将一个时间对象格式化输出为指定布局的文本表示形式,需要注意的是 Go 语言中时间格式化的布局不是常见的。time.Duration是time包定义的一个类型,它代表两个时间点之间经过的时间,以纳秒为单位。中国差不多跨5个时区(壮哉我中国,地大物博),为了时区的一致,在国内通常使用的是北京的时区。

2023-10-27 10:59:14 269

原创 GoLong的学习之路(十三)语法之标准库 log(日志包)的使用

log标准库中还提供了一个创建新logger对象的构造函数–New,支持我们创建自己的loggerNew创建一个Logger对象。其中,参数out设置日志信息写入的目的地。参数prefix会添加到生成的每一条日志前面。参数flag定义日志的属性(时间、文件等等)。import ("log""os"logger.Println("这是自定义的logger记录的日志。")Go内置的log库功能有限,例如无法满足记录不同级别日志的情况,我们在实际的项目中根据自己的需要选择使用第三方的日志库,如。

2023-10-27 10:21:28 285

原创 GoLong的学习之路(十二)语法之标准库 flag的使用

上回书说到,fmt的标准库的一些常用的使用函数。这次说flag的使用,以下这些库要去做了解。不然GG,Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。

2023-10-27 09:55:29 192

原创 GoLong的学习之路(十一)语法之标准库 fmt.Printf的使用

上回书说到,函数,说了函数是如何实现的,高级函数有哪几种调用方式,本章我将介绍fmt 标准库中我常用的一些函数。

2023-10-27 09:15:55 343

原创 GoLong的学习之路(十)语法之函数

Go语言中定义函数使用func关键字(其实吧,我认为这个里面的所有都是要加func,当然结构体不加)func 函数名(参数)(返回值){函数体注意函数名:由字母、数字、下划线组成。函数名的第一个字母不能是数字在同一个包内,函数名也称不能重名参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔。返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用,分隔。(这个就有点牛了)函数体:实现指定功能的代码块。

2023-10-25 17:27:08 212 2

原创 GoLong的学习之路(九)语法之结构体(非常重要,不看就等于不会Go语言)

在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。将MyInt定义为int类型: type MyInt int通过type关键字的定义,MyInt就是一种新的类型,它具有int的特性。//类型定义//类型别名a的类型是main.NewInt,表示main包下定义的NewInt类型。b的类型是int。

2023-10-25 13:39:01 400

原创 GoLong的学习之路(八)语法之Map

哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的value。在Go语言中,一个map就是一个哈希表的引用,map类型可以写为map[K]V,其中K和V分别对应key和value。其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。

2023-10-24 17:09:50 565

原创 GoLong的学习之路(七)语法之slice(切片)

切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。name:表示变量名T:表示切片中的元素类型// 声明切片类型var a []string //声明一个字符串切片var b = []int{} //声明一个整型切片并初始化var c = []bool{false, true} //声明一个布尔切片并初始化。

2023-10-24 15:49:15 235 1

原创 GoLong的学习之路(六)语法之指针

书接上回,上回书中写道,数组已经和java中数组的区别。在go中数组的是数值类型,故需要指针指向数组的地址,从而进行修改。这次诉说,指针。

2023-10-24 10:08:37 178 1

原创 GoLong的学习之路(五)语法之数组

书接上回,上回书说到,循环语句,在go中循环语句的少了whlie这个关键词,但是与之for可以改这个改这个特点。并且在终止关键词中,又有标签可以方便,停止。这次说数组。

2023-10-23 17:13:33 424 1

原创 GoLong的学习之路(四)语法之循环语句

书接上回,上回说到运算符,这次我们说一个编程语言中最重要的一点:流程控制,及循环语句。

2023-10-23 16:37:32 287

原创 GoLong的学习之路(三)语法之运算符

书接上回,我们进展到了GoLong的基本数据类型,接下来说运算符(其实和常见的编程语言的逻辑规则一样)

2023-10-23 15:31:02 155

原创 GoLong的学习之路(二)语法之基本数据类型

书接上回:我在GoLong的学习之路(一)中在常量最后说了iota的作用。今天这里我在介绍一下我学习Go语言中基本数据类型。

2023-10-23 15:09:09 370

原创 GoLong的学习之路(一)语法之变量与常量

程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。go语言是从Ken Thomepson发明的B语言和Dennis M.Ritchie发明的c语言逐步演化过来的,是c语言家族的成员(在我看来,其实现在大部分还在用的语言与c语言分不开)Go语言有着和C语言类似的语法外表,和C语言一样是专业程序员的必备工具,可以用最小的代价获得最大的战果。,常量在定义的时候必须赋值。

2023-10-23 13:15:34 239

空空如也

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

TA关注的人

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