- 博客(318)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 一文搞懂Clickhouse的MySQL引擎
ClickHouse是一个开源的分布式列式数据库管理系统,专为在线分析处理(OLAP)设计。它具备高性能、可扩展性强、支持SQL查询等特点,能够实时生成分析数据报告。ClickHouse使用列式存储和向量化执行等技术,提高了查询性能和数据压缩率,非常适合大数据分析和实时数据查询场景。这篇文章我就来分享一下Clickhouse中的MySQL引擎。
2025-01-05 22:00:24
1053
原创 Go小技巧&易错点100例(二十)
如果当前容量大于等于1024,扩容后的容量会按照增长因子(默认为1.25)来计算,即新的容量为原容量的1.25倍。Go语言的slice扩容策略在不同的版本和slice容量大小下有所不同,但总体思路是相似的,即创建一个更大的底层数组,并将原始数据复制到新数组中。:用于向切片末尾追加一个或多个元素,并返回一个新的切片(可能是原切片的扩展,也可能是新分配的切片)。会分配一个更大的切片,并将原切片的内容复制到新切片中,然后追加新的元素。类型转换是昂贵的操作,应该避免在性能敏感的代码中进行不必要的类型转换。
2025-01-01 10:40:24
509
原创 Go小技巧&易错点100例(十九)
正文:在Go语言中,goto语句和标签(label)提供了一种跳转到程序中的另一个位置的方式。虽然这种特性在解决某些类型的复杂逻辑时可能很有用,但过度使用goto可能会导致代码难以理解和维护。因此,建议谨慎使用,并优先考虑使用循环、条件语句等更结构化的控制流机制。
2024-12-31 23:08:14
770
原创 文件传输工具FTransferor<优化篇>
通过本次优化,我们为 FTransferor 增加了对 HTTP 协议的支持,显著提升了其在不同网络环境下的适用性。未来,我们计划进一步优化工具的交互体验,例如通过 Web 界面实现更加友好的操作方式。
2024-12-31 23:05:04
956
原创 手撸了一个文件传输工具
通过手撸这个文件传输工具,我对TCP编程有了更深刻的理解,其实有些功能并不需要利用HTTP、RPC等上层协议进行实现,更别说各种各样的框架了,最简单的功能往往TCP协议就足够了。
2024-12-01 22:02:23
4210
原创 27加餐篇:gRPC框架的优势与不足之处
gRPC作为一个现代的、开源的远程过程调用(RPC)框架,在多个方面都展现了其优雅之处,同时也存在一些不足之处。这篇文章我们就相对全面的分析一下gRPC框架那些优雅的地方和不足的地方。
2024-11-27 23:56:09
141
原创 浅谈Go语言Optional模式和Builder模式
Optional模式和Builder模式都是Go语言中用于对象构建和配置的重要设计模式。Optional模式通过函数选项提供灵活的配置选项,适用于参数较少且相对简单的情况。而Builder模式则通过逐步构建对象并提供多种配置选项,适用于构建复杂对象的情况。在选择使用哪种模式时,应根据具体需求和对象复杂程度进行权衡。
2024-11-20 23:29:56
993
原创 带你用Go实现二维码小游戏(下)
到这里我们就完成了《Go语言实现二维码小游戏》从设计、接口开发再到监控运维的全部过程,希望你能从中学到东西,当然有些地方做的还不是很完善,因此在后续可能会更新一篇文章主要针对已有项目的优化,也希望屏幕前正在阅读的你能够留言给出优化建议。
2024-11-07 21:41:26
1056
原创 带你用Go实现二维码小游戏(中)
DPI intX, Y intX, Y int为什么设置三个结构体呢?主要是因为在画证书的时候需要把证书的模板里填上内容,而内容又分为图片内容和文字内容,如图:因为图片内容和文字内容的属性大部分都不一样,所以独立出来了两个结构体。然后同样是Optional的模式= "" {opt(r)return r。
2024-10-30 23:00:09
508
原创 带你用Go实现二维码小游戏(上)
先看整个业务的流程图,游戏的核心就是拼图+二维码生成体验地址(目前仅支持PC端):游戏流程1)开始输入你的用户名,并选择你要拼图的图片,然后点击开始:2)选择图片完成后会出现游戏页面,进行拼图游戏:3)拼图完成后会进行提示,点击确定页面跳转到二维码:4)扫码,获取证书Go实现HTTP服务相对简单,只需要启动一个tcp的Listener,绑定端口,与HTTP Server关联,然后启动HTTP服务,如下代码,是我们提供的两个HTTP接口和静态资源地址的指定。if err!= nil {
2024-10-27 22:31:41
812
原创 我的写作成长之路
我发表了自己的第一篇技术博客,那一年我在上大二。到今天为止,我已经的时间,包括多个技术社区和写作平台,在这期间创作了包括博文和技术专栏、公号文章共。回想我这几年的写作经历,贯穿了校园和工作时期,颇有些值得回味。刚好又到了一年的1024,于是就想向大家真诚的分享一下我的。
2024-10-23 21:27:11
950
原创 Go小技巧&易错点100例(十八)
正文:有时候我们代码里会定义很长的数字,虽然计算机程序能支持很大的数据的计算,但是对我们来说,可读性是一个需要考虑的点,特别是1后面全是0的时候。但是这个问题在Go语言中是可以通过一个小技巧来解决的,如下代码:被赋值为10,000,000,而也使用了相同的值,但是使用了下划线作为千位分隔符。从Go 1.13开始,数字字面量中可以使用下划线******来增强可读性,但它不会改变数字的值。**所以,和是等价的。直接看代码:是一个占位符,它告诉函数在这个位置插入一个字符串类型的变量。方括号中的数字表示后面参数
2024-10-22 22:10:30
530
原创 原来go build命令有这么多学问
go build 是 Go 语言中一个非常强大且灵活的命令,它使得从源代码到可执行文件的转换变得简单而直接。通过利用它的各种选项和跨平台编译功能,你可以轻松地编译和分发你的 Go 程序。无论是在开发过程中还是在准备部署时,go build 都是 Go 程序员工具箱中不可或缺的一部分。与此同时,编译原理确实是一门非常值得深入学习的课程,它不仅在理论层面上构筑了计算机科学的重要基石,更在实践应用中展现了其无可替代的价值。
2024-10-05 11:01:52
2330
原创 如何编写一个优雅的commit message
一个优雅的在软件开发中具有多方面的作用,团队成员可以通过提交信息了解彼此的工作进度和更改内容,减少误解和冲突,也有助于代码审查者更快地理解提交的内容,从而提供更有效的反馈。同时,提交信息也可以作为讨论和改进代码的起点。除此之外,随着时间的推移,项目的开发历史会变得复杂和庞大。优雅的提交信息可以作为一个详细的、可搜索的历史记录,帮助开发者回顾过去的决策、修复回归问题以及理解系统的演进过程。那么就从现在开始,尝试着将自己的commit message编写的更加优雅。
2024-10-05 11:00:59
892
原创 AI编程辅助工具先锋:豆包MarsCode
AI在编程辅助领域的广泛应用,不仅改变了开发者的工作方式,更激发了新的技术创新点。通过深度学习和强化学习等技术,AI能够不断学习新的编程范式、算法和框架,并将这些知识应用于辅助开发过程中。这有助于开发者更快地掌握新技术、新工具,推动软件开发的持续创新。同时,AI辅助的编程工具还促进了跨学科、跨领域的合作与交流。开发者可以借助AI工具快速实现跨语言、跨平台的代码转换和集成,打破技术壁垒,推动不同领域之间的知识共享与融合。这种开放、协作的创新模式将为软件开发带来更加广阔的发展空间。
2024-09-07 14:47:25
1750
1
原创 抛开事实不谈,URL和URI是不是一个东西?
从范围来讲,URI是一个更广泛的概念,它可以唯一标识任何类型的资源,而URL则特指那些可以通过网络协议(如HTTP)定位的资源。虽然URI和URL在组成上有很多相似之处(如都包含方案、路径等),但URL更侧重于资源的定位,因此通常包含主机名和可能的端口号。在用途方面,URI用于唯一标识资源,而URL则用于定位并访问这些资源。因此,当你看到“URI”时,它可能指的是任何类型的资源标识符,而当你看到“URL”时,你通常可以认为它是一个具体的、可访问的网络资源地址。
2024-08-25 21:03:16
1023
原创 Go小技巧&易错点100例(十七)
总的来说,Go语言中的定时任务具有广泛的应用场景和灵活的使用方法,可以帮助开发人员更好地管理和优化应用程序。在Go语言中,定时任务(也称为定时器或cron作业)具有多种作用,这些作用在应用程序的开发和运维中非常有用。,Go 程序可以调用 C 函数,使用 C 语言定义的数据类型,甚至可以使用 C 语言的头文件和源文件。这个类型的定时任务使用cron表达式进行任务的处理,比如下面代码的cron表达式。这个类型的定时任务是直接使用Go语言的内置类型进行计算,比较简单。(2)创建cron类型的定时任务。
2024-08-21 22:32:35
877
原创 Go小技巧&易错点100例(十六)
本期看点:正文开始:在Go语言中,切片(slice)是一个引用类型,它是对底层数组的抽象表示,提供了动态长度的、灵活的序列类型。切片包含三个重要的属性:指向底层数组的指针、切片的长度以及切片的容量。切片的长度和容量之间有一个重要的关系:切片的长度不会超过其容量。 这意味着,当你尝试向切片添加更多元素时,如果添加后的元素个数超过了切片的容量,Go语言会创建一个新的、更大的底层数组,并将原有元素和新元素复制到新数组中,然后让切片指向这个新的底层数组。这个过程称为切片的扩容。需要注意的是,切片的长度和容量是可以变
2024-08-21 22:31:50
979
原创 听说它可以让代码更优雅
总的来说,静态代码检查工具是一个能够提升我们代码质量的工具,可以发现编译器发现不了的问题。这些工具的使用可以显著提高软件质量,所以大家赶快掌握起来,写出更优雅的代码!
2024-07-30 22:40:25
331
原创 莫非这就是Go最优雅的协程池?
经常写Go的小伙伴都知道,Go语言的goruntine是这门编程语言的一大利器,相比线程,基于协程的goruntine更加轻量和高效,并且在语法上十分的简单。协程(Coroutine)和线程(Thread)是两种不同的并发执行控制结构,它们在多个方面存在显著的差异。首先在定义上,,是轻量级的。,是重量级的。,可以根据需要增长和缩小,内存使用效率高。,堆栈大小限制了线程的数量,并可能导致堆栈溢出错误。
2024-07-25 20:28:42
1122
原创 预测一波,这份Go语言资料即将爆火
顾名思义,是一个旨在分享Go语言学习过程中的100个小技巧与易错点的仓库。这些技巧不仅覆盖了Go语言的基础语法、高级特性,还深入探讨了性能优化、并发编程等进阶话题。作者以文章的形式,将每一个问题、每一个技巧都阐述得清晰明了,既适合初学者巩固基础,也适合有一定经验的开发者查漏补缺、提升技能。
2024-07-12 22:19:13
481
原创 信不信让你1天学会一门编程语言
到这里本篇文章就要接近尾声了,不知道大家看完之后有没有对Lua有一些掌握,当然在实际案例中我只展示了如何让Redis执行Lua脚本,那么为什么Redis可以直接执行Lua而MySQL却不行,主要是因为两者在设计和功能上的差异。Redis通过引入对Lua脚本的支持,使得其在处理需要原子性保证的复杂逻辑时具有优势;而MySQL则主要依赖于SQL语言进行数据操作,并通过存储过程、触发器等方式来丰富数据的操作方式。除此之外,Lua在其他方面有哪些使用方式,有知道的小伙伴可以留言~
2024-07-06 16:24:48
1093
原创 工作两年后,我如何看待设计模式
虽然设计模式提供了一套通用的解决方案,但在实际应用中,往往需要根据项目的具体需求和约束进行适当的调整和创新。这就要求开发者不仅要熟悉设计模式的基本原理,还要具备足够的创新意识和实践能力,以便将设计模式与项目的实际情况相结合,创造出既符合设计要求又具有创新性的解决方案。因此,开发者在应用设计模式时,需要时刻考虑如何在满足当前需求的同时,为未来的变化留下足够的空间。,用于解决在软件设计中经常遇到的一类问题。总的来说,设计模式是编程中一种宝贵的工具,它们能够帮助我们解决复杂的问题,提高代码的质量和维护性。
2024-07-06 16:23:58
718
原创 为什么说组合优于继承?
继承和组合之间的选择取决于软件设计的要求和目标。一般来说,建议尽可能使用组合,以避免强耦合。当需要建立明确的“是”关系和类层次结构时,继承很有用,但应谨慎使用,以避免长期设计问题。在许多情况下,继承和组合的平衡组合可能是最佳解决方案。参考:
2024-06-08 09:36:23
881
原创 Go程序出问题了?有pprof!
通过上面对pprof工具的使用,发现其在Go程序分析中具有重要作用。具体来说,pprof通过收集程序运行时的信息,生成可视化的报告,帮助开发者理解程序的行为,并找出代码中的性能问题。其他相关博客推荐。
2024-05-27 23:01:04
1242
原创 报告!Golang冲上来啦!
Go语言还善待那些运行Go程序的人,Go程序易于安装和更新,需要最少的配置和依赖关系,并捕获最常见的使用错误和运行时错误,并为用户提供有关问题和如何修复的有用、准确和友好的信息。今天又来讲Go语言,根据全球知名的编程语言排行榜TIOBE在4月份公布的最新的编程语言排名,令人瞩目的是,Go语言已经跃升至历史最高位,位列排行榜第七名,并且。除此之外Go基础库提供描述性名称,比如包名,简单容易记录,易于导入,内部设计深度抽象,让用户利用小而简单的 API 来访问强大、有用的行为。最好的优化是不需要优化。
2024-05-12 22:52:25
914
1
原创 Go小技巧&易错点100例(十五)
本期看点:正文开始:在Go程序中我们经常会对接口执行的耗时做一个记录,特别是针对核心或复杂业务的时候,我们需要关注该业务的执行耗时,可以具体到某个方法,有一个简单有效的技巧,你可以使用关键字,只需一行代码即可使用。例如:Go链式编程链式编程(Chain Programming)也称为流式编程(Fluent Interface),是一种编程风格,其中方法的调用能够返回对象本身,从而允许调用者继续调用该对象的其他方法。这种风格的主要目的是通过减少代码的冗余和提高可读性来简化代码。链式编程通常具有以下特点:方
2024-04-20 09:39:20
488
原创 一文带你搞懂Go语言中深拷贝与浅拷贝
浅拷贝和深拷贝是Go语言中处理对象复制时的两种重要方式。它们的主要区别在于处理引用类型字段时的行为不同。理解数据结构的复制方式:在对数据进行拷贝操作时,要明确是进行浅拷贝还是深拷贝,以避免意外的数据共享或修改。避免数据共享带来的问题:当多个变量共享同一份数据时,一个变量的修改可能会影响其他变量。在需要独立操作数据时,应该使用深拷贝来复制数据。性能考虑:深拷贝通常比浅拷贝更耗时,因为需要复制整个数据结构。在处理大型数据集时,需要权衡性能和数据独立性。使用copy()函数进行切片拷贝。
2024-03-11 23:11:34
1293
原创 Go语言开发小技巧&易错点100例(十三)
函数则用于执行一个外部命令,尝试在Windows系统的命令提示符(cmd)中打开指定的URL。此外,还定义了一个名为。这段代码是一个简单的Go语言HTTP服务器,主要实现了文件上传和文件下载的功能。的函数,它用于执行任意命令,并读取命令的标准输出。函数,并传入了一个URL字符串作为参数。函数是程序的入口点,它调用了。
2024-02-25 11:32:01
689
1
原创 浅谈Elastic Search V8版本的一些重大改进
综上就是Elastic Search v8相对低版本做出的相对较大的改动,当然最详细的内容还是要仔细的阅读官方文档,上面这些也是本人在使用过程中遇到问题的时候做出的排查进而总结出来的点,希望能给到大家帮助。
2024-01-31 22:41:50
1033
原创 Go语言开发小技巧&易错点100例(十一)
函数式编程是一种编程范式。为了解决这个问题,Go语言规定map的键必须是不可变(immutable)的类型,例如基本类型(如整数、字符串等),或者具有只读属性的复合类型(如数组、结构体等)。此外,在函数式编程中,函数是一等公民,这意味着它们可以绑定到名称(包括本地标识符),作为参数传递,并从其他函数返回,就像任何其他数据类型一样。总结起来,Go语言中指针类型不能作为map的键是因为指针的值是动态的,可能会发生变化,而map的键需要是不可变的类型。的map,该map的键是字符串类型,而值是空结构体类型(
2024-01-14 17:03:56
971
原创 走过的2023:在挑战中领悟,在仿徨中成长
转眼间就到了2023年的最后一个月,回顾这短暂而又有意义的一年,可以用12个字总结:在挑战中领悟,在仿徨中成长。这篇文章我会从技术成长、职场生活、读书感悟和个人生活等几个方面,总结一下过去的这一年,梳理并分享自己的收获,领悟并直面自身的不足,以此让自己做时间的朋友,在岁月的流逝中,不断成为自己想成为的人。
2023-12-21 21:58:35
967
原创 Go语言开发小技巧&易错点100例(十)
字符串的内容被存储在字符数组中,以字符的序列形式表示。该指针指向字符串的第一个字符,然后通过连续访问指针所指向的内存位置,可以遍历整个字符串。需要注意的是,切片截取操作返回的是一个新的切片,原始切片不会被修改。在高级编程语言中,string类型的底层定义都大致相同,通常情况下,string类型是由字符数组或字符指针来定义的。此外,需要注意的是,在进行切片截取操作时,要确保切片的索引在有效范围内,否则会导致运行时错误。,可以对字符串中的每个字符进行处理,而无需关心具体的字节表示。通过遍历字符串的每个。
2023-11-25 09:00:00
1280
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
1276
6
原创 1024,向着“顶尖程序员“迈进
作为程序员职业生涯的第一份真正意义上的工作,真可谓成长飞快,从功能设计到代码管理,从研发流程到团队协作,可以说让自己得到了多方面的成长,除此之外,正式的开始进入社会,踏入职场的这段时间,带给我更多的是阅历与见识,独立与勇气,在这里遇见的每一位朋友和同事,每一位前辈和老师都能给我不同的成长与感悟。回顾我的程序员之路,那是一个不断学习、不断成长的过程。
2023-10-24 22:42:42
199
原创 Go错误处理方式真的不好吗?
平时经常上一些网络平台阅读一些技术讨论的话题,对Go语言方面也有些浅浅的关注,正如标题所问,Go语言错误处理可以说算是网络上开发中对Go语言吐槽最多的点之一,那么,Go错误处理真的很不堪吗?。相反,我觉得Go的错误处理对程序设计来讲十分优雅。
2023-10-15 20:58:07
414
3
CSDN有哪些让人耳目一新的好文章?
2022-07-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人