自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go小技巧&易错点100例(十五)

本期看点:正文开始:在Go程序中我们经常会对接口执行的耗时做一个记录,特别是针对核心或复杂业务的时候,我们需要关注该业务的执行耗时,可以具体到某个方法,有一个简单有效的技巧,你可以使用关键字,只需一行代码即可使用。例如:Go链式编程链式编程(Chain Programming)也称为流式编程(Fluent Interface),是一种编程风格,其中方法的调用能够返回对象本身,从而允许调用者继续调用该对象的其他方法。这种风格的主要目的是通过减少代码的冗余和提高可读性来简化代码。链式编程通常具有以下特点:方

2024-04-20 09:39:20 378

原创 Go语言开发小技巧&易错点100例(十四)

init函数的执行机制【易】sync.Once同步【技】Go进行小数的运算【技】

2024-04-10 22:43:21 1169

原创 一文带你搞懂Go语言中深拷贝与浅拷贝

浅拷贝和深拷贝是Go语言中处理对象复制时的两种重要方式。它们的主要区别在于处理引用类型字段时的行为不同。理解数据结构的复制方式:在对数据进行拷贝操作时,要明确是进行浅拷贝还是深拷贝,以避免意外的数据共享或修改。避免数据共享带来的问题:当多个变量共享同一份数据时,一个变量的修改可能会影响其他变量。在需要独立操作数据时,应该使用深拷贝来复制数据。性能考虑:深拷贝通常比浅拷贝更耗时,因为需要复制整个数据结构。在处理大型数据集时,需要权衡性能和数据独立性。使用copy()函数进行切片拷贝。

2024-03-11 23:11:34 526

原创 Go语言开发小技巧&易错点100例(十三)

函数则用于执行一个外部命令,尝试在Windows系统的命令提示符(cmd)中打开指定的URL。此外,还定义了一个名为。这段代码是一个简单的Go语言HTTP服务器,主要实现了文件上传和文件下载的功能。的函数,它用于执行任意命令,并读取命令的标准输出。函数,并传入了一个URL字符串作为参数。函数是程序的入口点,它调用了。

2024-02-25 11:32:01 610 1

原创 Go语言开发小技巧&易错点100例(十二)

反射是一种在运行时检查、修改和调用对象类型和值的能力。在Go语言中,

2024-02-14 21:18:57 1424

原创 浅谈Elastic Search V8版本的一些重大改进

综上就是Elastic Search v8相对低版本做出的相对较大的改动,当然最详细的内容还是要仔细的阅读官方文档,上面这些也是本人在使用过程中遇到问题的时候做出的排查进而总结出来的点,希望能给到大家帮助。

2024-01-31 22:41:50 833

原创 Go语言开发小技巧&易错点100例(十一)

函数式编程是一种编程范式。为了解决这个问题,Go语言规定map的键必须是不可变(immutable)的类型,例如基本类型(如整数、字符串等),或者具有只读属性的复合类型(如数组、结构体等)。此外,在函数式编程中,函数是一等公民,这意味着它们可以绑定到名称(包括本地标识符),作为参数传递,并从其他函数返回,就像任何其他数据类型一样。总结起来,Go语言中指针类型不能作为map的键是因为指针的值是动态的,可能会发生变化,而map的键需要是不可变的类型。的map,该map的键是字符串类型,而值是空结构体类型(

2024-01-14 17:03:56 884

原创 走过的2023:在挑战中领悟,在仿徨中成长

转眼间就到了2023年的最后一个月,回顾这短暂而又有意义的一年,可以用12个字总结:在挑战中领悟,在仿徨中成长。这篇文章我会从技术成长、职场生活、读书感悟和个人生活等几个方面,总结一下过去的这一年,梳理并分享自己的收获,领悟并直面自身的不足,以此让自己做时间的朋友,在岁月的流逝中,不断成为自己想成为的人。

2023-12-21 21:58:35 917

原创 Go语言开发小技巧&易错点100例(十)

字符串的内容被存储在字符数组中,以字符的序列形式表示。该指针指向字符串的第一个字符,然后通过连续访问指针所指向的内存位置,可以遍历整个字符串。需要注意的是,切片截取操作返回的是一个新的切片,原始切片不会被修改。在高级编程语言中,string类型的底层定义都大致相同,通常情况下,string类型是由字符数组或字符指针来定义的。此外,需要注意的是,在进行切片截取操作时,要确保切片的索引在有效范围内,否则会导致运行时错误。,可以对字符串中的每个字符进行处理,而无需关心具体的字节表示。通过遍历字符串的每个。

2023-11-25 09:00:00 1197 1

原创 如何优雅的设计一个SDK

到这里大家可能会产生疑问,为什么NewSDK的时候除了host还要带上username和passwd这两个参数。其实主要是因为系统一般会有Auth认证的流程,主要是用于认证调用者是否为该系统的合法用户,API中的header(name=barry yan)也正是为了验证用户,当然实际一定是要比这个复杂的多,SDK也会有对Auth认证方式的封装。aws-sdk-go本文的全部代码也已经打包上传到Github,欢迎大家提出issue。获取代码方式:关注公众号【扯编程的淡】回复【sdk。

2023-11-12 19:26:35 635 6

原创 1024,向着“顶尖程序员“迈进

作为程序员职业生涯的第一份真正意义上的工作,真可谓成长飞快,从功能设计到代码管理,从研发流程到团队协作,可以说让自己得到了多方面的成长,除此之外,正式的开始进入社会,踏入职场的这段时间,带给我更多的是阅历与见识,独立与勇气,在这里遇见的每一位朋友和同事,每一位前辈和老师都能给我不同的成长与感悟。回顾我的程序员之路,那是一个不断学习、不断成长的过程。

2023-10-24 22:42:42 158

原创 Go错误处理方式真的不好吗?

平时经常上一些网络平台阅读一些技术讨论的话题,对Go语言方面也有些浅浅的关注,正如标题所问,Go语言错误处理可以说算是网络上开发中对Go语言吐槽最多的点之一,那么,Go错误处理真的很不堪吗?。相反,我觉得Go的错误处理对程序设计来讲十分优雅。

2023-10-15 20:58:07 316 3

原创 浅谈Rob Pike的五条编程规范

Rob Pike是Unix的先驱,UTF-8的设计人,Go语言核心设计者之一。

2023-10-06 22:07:55 187

原创 有必要发这篇文章了!

1️⃣基本信息:Barry Yan 中文名:海风极客 🆔 | 99年男生👀 | 天蝎座♏ | 来自中国 👍2️⃣工作经历:Gopher 🌔3️⃣爱好:听音乐、敲代码、羽毛球、跑步⭐4️⃣擅长领域:Go、Java 🌟5️⃣座右铭:做兴趣使然的Hero🚀6️⃣个人说明:请不要叫我程序员,叫我工程师或Programmer💪。

2023-09-30 14:44:31 215 7

原创 Go语言开发小技巧&易错点100例(九)

在Go语言中,检查nil是非常必要和重要的。这是因为Go语言中的指针和引用类型在默认情况下是nil,而在尝试访问nil指针或引用类型的成员时,会导致运行时错误。在Go语言中,参数传递是通过值传递实现的,无论是基本类型还是复合类型。然而,当涉及到指针和引用类型时,传递方式会有所不同。比如下面这段代码,猜猜输出的是什么?

2023-09-29 21:08:02 384

原创 程序员的快乐如此简单

最近在GitHub上发起了一个关于Beego框架的小插件的开源仓库,这一举动虽然看似微小,但其中的快乐和意义却是无法用言语表达的。Beego是一个开源的Go语言Web框架,它采用了MVC架构模式,并集成了很多常用的功能和中间件。小插件是指与Beego框架配套使用的、可扩展的、独立的软件模块或组件。通过开发小插件,可以扩展Beego框架的功能,提高开发效率和代码可维护性。

2023-09-23 20:51:08 3424 3

原创 这些Coding套路你不会还不知道吧?

本文主要介绍了Go开发中常用的设计模式,包括全局单一实例:单例模式、工厂模式、模板方法模式、策略模式和Functional Options模式。这些设计模式可以帮助我们更好地组织代码,提高代码的可读性和可重用性。总之,掌握这些设计模式对于提高Go程序员的编码能力非常有帮助,可以让我们在编写代码时更加得心应手,同时也能提高代码的质量和可维护性。

2023-09-17 21:15:43 127 12

原创 基于Gin框架的HTTP接口限速实践

nil {return//自定义拦截处理器接口限速是保护系统稳定性和API的重要手段。在实际应用中,我们需要根据实际情况选择合适的限速方法,实现对接口的全面限速。通过接口限速,我们可以提高系统的稳定性、保护API、提高用户体验等。

2023-09-02 16:52:50 1826 7

原创 浅谈分布式共识算法概念与演进

分布式共识中达成共识的手段几乎都是投票机制,使用投票机制的主要原因是为了在多个节点之间达成一致的决定,可以有效帮助算法在分布式环境中解决冲突和分歧,确保所有节点都能够达成共识。

2023-08-26 22:49:31 371 6

原创 盘点Go语言中那些酷酷的语法

匿名函数、闭包和lambda三者是完全不同的三个概念,但是又有着相互的关联。首先是匿名函数,它是指在代码中定义的没有名字的函数。匿名函数可以被赋值给变量,也可以作为参数传递给其他函数。闭包是指一个函数内部引用了外部函数的变量,并且可以在函数外部被调用或访问时,依然能够保持对这些变量的访问能力。换句话说,闭包是一个函数以及其引用的外部变量的组合体。在Go语言中,闭包的实现非常简洁。当一个函数内部定义了一个匿名函数,并且这个匿名函数引用了外部函数的变量时,Go语言会自动将这些变量捕获到闭包中。

2023-08-20 21:49:46 144 4

原创 17游刃有余:动手实现自己的RPC框架(三)

如果想要自己实现一个优秀的RPC框架,可能需要投入大量的时间和经历,并且要不断打磨和优化,但是只要将原理和流程熟记于心中,就是打开大门最好的钥匙。

2023-08-05 18:34:22 366 8

原创 16游刃有余:动手实现自己的RPC框架(二)

这篇文章我们动手使用Go语言来实现一个RPC框架,我们就叫它BarryRPC。

2023-07-29 18:23:24 183 2

原创 Go语言开发小技巧&易错点100例(八)

因此我们得出结论,在直接序列化Message时最好使用Proto Marshal的方式进行序列化,防止特殊的属性不能够识别,而且该序列化的方式更加节省空间,缺点则是序列化的结果可读性不高。方法二:Proto Marshal的方式序列化结构体。方法一:JSON Marshl的方式序列化结构体。接下来我们编译成pb.go文件。

2023-07-22 21:47:49 314 10

原创 一文搞懂常见的加密算法

加密算法在互联网技术领域中几乎是无处不在,而密码学也是网络安全的重要基础,这篇文章我们就一起来学习下常见的加密算法。

2023-07-09 10:07:02 294

原创 26特别说明:专栏代码案例获取和使用方式

亲爱的读者们,很高兴能与你们一起在这个充满挑战和机遇的gRPC框架世界里探索、学习和成长。经过一段时间的旅程,我们共同见证了gRPC的众多优点,包括高性能、可扩展性、跨语言支持以及易于使用等特点。在这篇文章中,我们将对所学内容进行总结,同时展望未来的发展,并在此过程中给出一些有价值的建议。首先,我们来回顾一下这篇专栏的核心观点。我们了解到,gRPC是一个由Google开发的开源高性能、跨语言、可扩展的远程过程调用(RPC)框架。

2023-07-03 22:59:17 183 6

原创 24结束语:每一位技术人都应该有自己的核心技能

以上的全部内容就是我个人在闲暇时的所思所想,没有要教大家的意思,更没有告诫人们的意思,因为我目前不能算是一个成功者,虽然在朋友和同学的小圈子里经常自诩为工程师,但是内心确是把自己定位为IT界的小混混,但是我正在努力的向上攀爬,希望在不断的打拼中能作出更有价值的事情,影响更多的人。

2023-06-24 20:25:23 209

原创 如何高效阅读源码

阅读源码是一项非常重要的技能,可以帮助我们更好地理解代码的工作原理和实现细节,在遇到问题时,阅读源码也是一个非常有效的解决方式。

2023-06-18 09:19:20 852 15

原创 23他山之石:谈一谈Protocol Buffer

Protocol Buffers,简称Protobuf,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。

2023-06-18 08:50:07 662

原创 12性能提升:如何提升gRPC系统性能

gRPC本身作为一款优秀的RPC框架,在框架层面提升性能可能比较难以入手,因此我们一般通过架构设计、编码等层面进行入口,进而提升整个系统的性能,以上我们从不同方面分析讨论了gRPC系统可以提升性能的方式,但还是需要在具体的业务上具体的分析才能达到更好的效果。

2023-06-10 09:29:09 891 10

原创 21经验分享:我在使用gRPC时都遇到过哪些问题

众所周知,计算机是一门实践性的学科,在这样的学科中往往是实践出真知,所以想要针对一门技术能达到比较高的水平,就需要付出大量的时间进行实践,在实践中不断的遇到问题和解决问题,才能有更好的长进

2023-06-03 11:01:39 704 5

原创 六一回忆:现在写代码如同儿时搭积木

同时,编程还可以让我们更好地了解计算机和科技,更好地与他人合作和协作。编程之所以能够如此流行,不仅仅因为它可以帮助人们实现自己的想法,更因为它给人们带来了一种前所未有的乐趣,那就是写代码如同搭积木,太酷了!同时,编程还能够让我们感受到一种成就感,当我们完成了一个程序,看到它可以正常运行,我们会觉得非常的自豪和满足。这种合作和协作的过程,不仅可以让我们学会如何与他人合作,还可以让我们学会如何尊重和欣赏他人的想法和贡献。而且,编程还可以让我们将自己的想法和创意变成现实,让我们的想象力得到最大化的发挥。

2023-06-01 22:42:59 160 7

原创 14巧探细节:gRPC的UnknownService接口

是 gRPC 提供的一个接口,用于处理未知的服务请求。当客户端发起一个未定义的 RPC 调用时,服务端就会调用接口来处理该请求。一般情况下,服务端需要对客户端的请求进行拦截并进行特定的处理,比如进行日志记录、错误处理等。服务端需要对客户端发送的请求进行过滤或者鉴权,只有符合条件的请求才能被处理。服务端需要对客户端发送的请求进行路由,将请求转发到特定的处理逻辑中。

2023-05-28 22:21:34 918 1

原创 20学习提升:gRPC源码中的那些优秀设计(下)

抛开具体的gRPC框架,从更高处向下看,软件层面的框架在我看来就是思想+设计模式的整合,想要实现一个框架就需要有理论思想作为铺垫,比如Java框架中的Spring主要依赖的是IoC和AOP思想,Dubbo基于SPI思想,gRPC基于RPC设计理念等等,当然如果要想设计优秀的框架,就需要将各种好的设计模式进行整合,以及利用网络协议进行配合。

2023-05-20 09:21:06 562

原创 15游刃有余:动手实现自己的RPC框架(一)

在系统开发中,一般需要对外提供接口时,因为普适性,HTTP是首选,而在同一个组织或公司内部进行不同系统间服务的提供时,面向服务封装的RPC更具有竞争力,可以针对服务进行可用性和效率的优化,因此HTTP和RPC不同的网络通信协议各自具有更擅长的领域。接下来的三篇文章,我们将通过所学的知识,从0开始自己动手实现一个RPC框架,当然最终的框架相比当下知名的RPC框架可能比较的简陋,但是过程和其中的思想一定会让我们有所成长,下面我们就从Socket开始,Coding我们的RPC框架!

2023-05-13 11:46:37 563 6

原创 09身份认证:gRPC如何解决安全问题?

gRPC是一个高效的跨语言远程过程调用框架,但在使用时需要考虑安全问题。TLS加密:gRPC支持基于TLS的加密通信,可以使用自签名证书或由受信任的证书颁发机构颁发的证书,可以保证通信的机密性和数据完整性。认证和授权:gRPC支持基于Token的认证和基于角色的访问控制。可以使用JWT Token或OAuth2.0 Token来进行认证,可以使用基于角色的访问控制来限制对服务的访问。总之,gRPC提供了丰富的安全机制,可以满足不同应用场景的安全需求。

2023-05-07 10:44:11 524 2

原创 Go语言开发小技巧&易错点100例(七)

Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。传递数据使用指针,而无须拷贝数据。因此大家就可以将程序退出前想要执行的函数放在defer函数中或者放在

2023-05-02 21:46:32 887

原创 【五一创作】再来一篇,Go+Vue前后端分离设计实践

《手把手教你搭建Spring Boot+Vue前后端分离》姊妹篇~

2023-04-30 20:21:58 1445 11

原创 25特别放送:我的Gopher成长之路

很早就开始准备这篇文章了,但总是想了又想不知怎样才能更好的写下自己最真实的想法,后来在经过了好几个晚上睡前的思考后才得以完成。

2023-04-29 19:49:38 1237 4

原创 08异步请求:何种场景下应该使用异步请求?

异步操作和同步操作是并发编程中的两种基本方式,它们都可以实现并发执行,但是它们在实现方式和优缺点上有所不同。异步操作是指在程序执行过程中,多个线程并行执行,程序不需要阻塞当前线程等待操作完成,而是直接继续执行后续操作,直到所有的操作完成后再返回结果给用户。异步操作的主要优点是可以并行处理多个任务,提高程序的并发性能,缺点是需要额外的线程负担和复杂的编程实现。同步操作是指在程序执行过程中,多个线程按照顺序依次执行,程序需要等待所有线程执行完成后才能返回结果给用户。

2023-04-22 15:57:41 849 13

原创 22勤于思考:gRPC都有哪些优势和不足?

专栏至此已经接近尾声,相信通过对专栏所有文章的学习过后,大家能够对gRPC有一个全新的认识,当然最重要的还是要多动手实践,在实践中不断的思考。

2023-04-15 17:28:27 591 2

sp_vue.zip前端项目

sp_vue.zip前端项目

2021-08-27

sp_mybatis.zip

sp_mybatis.zip

2021-08-27

springboot-dubbo-master.zip

springboot-dubbo-master.zip

2021-08-27

MavenSSM.zip

IDEA使用Maven整合SSM框架,spring5和mysq5.5l数据库,其中包括配置文件和web.xml的编写

2020-07-16

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

TA关注的人

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