自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Swxctx

铭心刻骨,就要一意孤行;越是憧憬,越要风雨兼程;要走多远,才算走进森林_xc.

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

原创 Go进阶概览 -【7.1 反射机制与动态编程】

反射是Go语言的一项强大特性,使得程序可以在运行时检查和修改自身的结构和行为。反射机制的使用在一些动态编程场景中非常重要,但同时也带来了一定的性能开销。本节我们将深入解析Go的反射机制,探讨其在动态编程中的应用,以及反射对性能的影响。

2024-09-18 16:01:59 456

原创 Go进阶概览 -【第6章 Go程序的性能优化与调优】

在之前的学习中,其实我们已经基本将性能相关的内容讲的差不多了。所以在本章中,我们更多的是做一个总结,我们将探讨如何通过各种手段优化Go程序的性能。我们将介绍性能分析工具,讨论内存管理与CPU性能优化的方法,最后探索并发环境下的性能优化技巧。

2024-09-17 14:12:29 960

原创 Go进阶概览 -【5.5 并发编程中的常见模式与最佳实践】

在现代编程中,并发编程是提高程序性能和响应速度的关键技术之一。Go语言以其轻量级的协程和强大的并发支持,成为了处理并发任务的理想选择。本节将介绍Go语言中常见的并发编程模式,并探讨如何编写高效可靠的并发代码。

2024-09-16 17:31:35 457

原创 Go进阶概览 -【5.3 select的底层实现及工作原理】

select语句是Go语言中用于处理多个通道操作的一个强大工具,它能够在多个通道上同时进行非阻塞的选择操作。这对于实现并发程序的灵活性和复杂性处理非常有帮助。本节我们将详细探讨select的内部实现及工作原理。

2024-09-14 09:51:32 725

原创 Go进阶概览 -【5.2 channel的底层实现】

通道在并发编程中是比较常用的一个内容,在我们进行实际业务开发时会大量使用到。本节我们将针对通道的底层实现原理进行探讨学习,包括底层的结构、处理机制等内容

2024-09-14 09:49:15 883

原创 Go进阶概览 -【5.1 协程与调度器】

Go语言的协程是它的一大特性,通过协程可以快速实现并发,提高了开发者的工作效率。本节我们将深入探讨协程的底层实现原理以及调度实现,我们将了解到并发到底是怎么实现的、多个协程是怎么配合的。本节我们将以:服务员点餐的例子进行并行、并发、协程及调度器的讲解。

2024-09-13 11:14:34 1153 1

原创 Go进阶概览 -【4.3 编译器的优化与调试】

编译器优化在之前的章节我们有提到过,当时我们讲解了局部优化。本节我们将进行更多的讲解,了解编译器的优化也可以帮助我们提高开发效率,在开发中即解决一些使用问题。

2024-09-13 10:56:16 581

原创 Go进阶概览 -【4.2 Go语言的链接与加载】

Go语言中,链接与加载是将编译后的多个目标文件组合成一个可执行文件,并最终在运行时加载该文件到内存中执行的过程。在上节我们提到了汇编与链接,本节我们将详细探讨Go的链接与加载机制。

2024-09-12 10:50:56 656

原创 Go进阶概览 -【4.1 从代码到二进制:Go程序的编译过程】

本节我们将一起探索,Go程序在编译的时候都发生了什么、都做了哪些工作?通过本节的学习将对我们的日常编程规范、习惯起到一个正向的作用。关于编译过程,我们将会从词法分析、语法分析、语义分析以及中间代码生成等多个方面进行讲解。

2024-09-12 10:33:13 750

原创 Go进阶概览 -【3.4 内存模型与并发安全】

在很多文章中对于内存模型的描述都很抽象,看起来不知道说的是什么,大多都是直译过来的。一组规则或规范。这些规则的作用是:定义了在并发环境中,不同线程或协程对共享内存的操作顺序、可见性和一致性。它们确保了在多线程或多协程程序中,内存操作的行为是可预测和可靠的。所以如果内存模型这几个字不好理解的话,我们记为并发规则或者并发架构也不是不可以。

2024-09-11 14:08:11 1506 1

原创 Go进阶概览 -【3.3 Go语言的垃圾回收机制】

垃圾回收(Garbage Collection,简称GC)是自动管理内存的一种机制,目的是回收不再使用的内存,以避免内存泄漏。在Go语言中,GC主要用于管理堆内存,堆内存主要用于动态分配的数据,比如通过newmake等操作分配的内存。在C/C++等语言中,内存的分配和释放是由开发者手动管理的。而在Go语言中,GC机制会自动回收不再使用的内存,从而减少了手动管理的复杂性和错误的可能性。

2024-09-11 13:53:49 775

原创 Go进阶概览 -【3.2 内存逃逸与堆栈管理】

内存逃逸是我们比较容易遇到的一个问题,与程序的性能也息息相关,决定了程序的内存分配效率、内存占用情况。在之前的章节中我们讲解过了堆栈相关的知识,了解到了内存分配的机制。本节我们将针对内存逃逸、分析、优化等内容进行详细的讲解。

2024-09-10 14:23:10 1239

原创 Go进阶概览 -【3.1 内存分配与栈帧管理】

本节是本章后续学习的基础,在本节我们将会针对内存分配、栈与堆、栈桢等内容进行讲解。后续的内存逃逸分析、垃圾回收、并发安全等都会与本节密切关联,所以这一节需要我们进行一个详细的了解。

2024-09-10 14:14:40 1001

原创 Go进阶概览 - 【2.6 类型系统的安全与限制】

在之前的章节中,我们讲到了基础数据类型的内存布局、动态类型的底层结构及内存分配、切片及`map`的底层结构及原理。本节我们将针对类型系统的安全及限制进行探讨,主要针对设计原则、安全性、灵活性以及局限性进行探讨。

2024-09-09 11:34:42 673 1

原创 Go进阶概览 -【2.5 Map的工作原理】

map基本在每一种编程语言中都存在,并且他们的实现方式也是大同小异,底层原理也是有一些共通之处。本节将针对map的底层实现、性能优化等方面进行一个详细的讲解。在学习本节前,如果对哈希表还不了解,建议先去看一下哈希表的知识。

2024-09-09 11:33:29 835

原创 Go进阶概览 -【2.4 切片的结构与内存管理】

切片是我们日常使用比较多的一个结构,深入的了解它的结构对于我们提高程序性能也有比较大的帮助。本节我们将针对切片底层结构、扩容机制、底层数组进行讲解。

2024-09-08 21:55:39 1262

原创 Go进阶概览 -【2.3 接口与动态类型】

接口多用于框架开发、第三方对接等场景,使用接口我们可以灵活的实现一些动态的功能场景。本节我们将主要针对动态类型、接口内部实现机制、接口表与动态调用等内容进行讲解。本节代码存放目录为。

2024-09-06 09:59:42 1036

原创 Go进阶概览 -【2.2 结构体与方法集的实现】

结构体是我们在实际运用中使用比较多的一个概念,Go语言封装的比较简单,我们在使用的时候不需要关注太多的东西。但是如果对于性能有要求、需要开发框架时,我们还是需要对结构体进行一个深入的了解。本节我们将针对结构体的内存布局、接口实现及面向对象编程等进行讲解。

2024-09-06 09:58:38 1398

原创 Go进阶概览 -【2.1 基础类型与内置类型详解】

本节我们将对数据类型做一个整理,同时我们会针对基础数据类型的内存分配进行讲解。本节代码存放目录为 lesson1基础数据类型也就是在 语言中是由编译器直接支持的,具有确定的内存表示方式及操作符。基础类型的值通常是不可分割的(即原子的),并且它们直接与计算机硬件的基本操作相关。下表所示为 语言中的基础数据类型统计:内置类型指的是 语言标准库中直接提供的类型,包括所有基础类型以及一些更复杂的类型和数据结构。这些类型在语言中是 的,意味着它们无需用户自己定义,编译器和运行时环境直接支持它们。

2024-09-05 15:44:43 515

原创 Go进阶概览 -【1.2 Go语言的特性与简洁性】

在本节中,我们将从语言简洁性、并发支持以及内存管理三个方面来进行讲解。这三个东西基本上算是Go语言最为显著的特性,也是与其他语言最大的区别。

2024-09-05 15:43:27 549

原创 Go进阶概览 -【1.1 Go语言的设计初衷与发展历程】

Go语言是怎么产生的?Go语言的发展怎么样?两个方面进行探讨。通过本节的学习帮助我们了解Go语言的前世今生,也便于我们之后对于Go语言的理解。

2024-09-05 15:42:29 412

原创 Go进阶概览 -【序言】

一年前我基于初学者的角度,以自己的使用经验总结并编写了《Go,你也可以的!这本书主要是一本入门类的书籍,讲解了Go语言的一些基本知识及使用方法。继这本入门指南之后,我结合读者的反馈以及考虑到实际情况,我决定推出下一本书籍《Go进阶概览》。本书主要集中讲解了Go语言的各种底层原理以及实现方式,比较适合那些已具备Go语言基础并希望提高其在系统架构和性能优化方面能力的开发者。本书是您学习的一个引子,您将了解到关于Go语言的一些核心理念以及一些高效的设计模式。本书致力于帮助读者更加深入的了解Go。

2024-09-05 15:40:17 322

原创 【通用】- 工厂模式与策略模式的区别

目的不同:工厂模式主要是为了创建对象,让对象的创建与使用分离,支持灵活的扩展和替换对象;策略模式主要是为了隔离算法,提供相同行为的不同实现策略,并使得算法可以独立于客户端独立变化。应用场景不同:工厂模式常用于对象创建过程中业务逻辑较复杂的情况;策略模式常用于多种类似行为需要动态选择的情况。实现方式不同:工厂模式通过继承或接口实现,隐藏创建细节;策略模式通过定义接口或抽象类,封装一系列算法或行为。

2024-08-31 23:40:47 464

原创 【Android】- 秒开WebView:安卓性能优化攻略

在移动开发中,WebView是一个非常实用的组件,允许开发者在Android应用中嵌入网页。WebView的加载速度常常成为用户体验的瓶颈。本文将探讨如何优化WebView的启动速度,实现秒开的效果。

2024-08-31 23:32:35 389

原创 【Linux】- Linux性能调优技巧

在Linux系统管理中,性能调优是一项关键任务,旨在最大化资源利用效率,确保应用和服务运行顺畅。以下是一些基本的Linux性能调优技巧,可以帮助我们优化服务器性能。

2024-08-30 10:06:50 178

原创 Go,你也可以的!-【第9章 附录】

附录主要记录一些工具及开源库,这些库都是笔者开发/维护的。所以你可以使用这些库进行学习,当有问题时笔者也可以更快的进行解答。

2024-08-30 09:34:03 255

原创 Go,你也可以的!-【8.3 简单的命令行操作】

在大部分语言中,都会有命令行交互的场景。比如我实现了一个在Linux终端运行的小程序,那么我执行程序后需要我输入一些内容,之后进行一些计算及业务逻辑。

2024-08-29 10:51:16 358

原创 Go,你也可以的!-【8.2 简单的TCP示例】

`TCP`在我们的实际开发中也是必不可少的东西,我们的大部分业务都需要使用`TCP`实现。比如聊天软件、聊天室等,在`Go`语言中使用TCP也比较简单,我们接下来直接以代码示例进行说明。

2024-08-29 10:50:15 380

原创 Go,你也可以的!-【8.1 登录注册接口】

登录注册在我们的实际业务中是特别常见的东西,本节我们将从需求分析、需求实现等方面与您一起实现一个登录注册的业务流程。在这之前,如果您还没有接触过前后端的接口开发,那么我们建议您先去了解一下前后端分离的处理流程、请求流程。

2024-08-28 09:55:44 458

原创 Go,你也可以的!-【7.4 recover】

在前面的章节我们讲过了`panic`、`defer`,在其他语言中还会有一个概念,那就是防崩溃的东西。在`Go`语言中同样具有这样的概念,那就是`recover`。`recover`主要用于在程序`panic`时进行恢复,保证程序不会崩溃掉。

2024-08-28 09:54:20 730

原创 Go,你也可以的!-【7.3 defer】

有这样一种场景,就是我们需要在函数执行结束之后进行一些操作。比如我们通过代码打开了文件,那么我们需要保证在读取完文件以后,将文件进行关闭,这时候我们就会使用到`defer`。那么可能我们会有疑问,直接在读取完成以后直接关闭就可以了,为什么还要使用`defer`呢?我们思考一种情况:当读取函数执行到一半的时候,发生`panic`导致了程序崩溃,这时候函数最后的关闭代码就肯定不会被执行了。这种情况下,就可能会出现一些未知的问题。所以出现了`defer`,使用`defer`就可以保证文件关闭代码一

2024-08-27 09:50:41 354

原创 Go,你也可以的!-【7.2 panic】

`panic`就是`Go`语言中的崩溃,崩溃也就是程序不可用,这在实际的业务中基本是最严重的`BUG`。在大部分语言中,产生崩溃的原因基本是差不多的,大多都是访问了空指针、数组越界、内存溢出等。基本可以总结为,发生崩溃都是与系统进行了非法的内存或资源操作。

2024-08-27 09:49:36 700

原创 Go,你也可以的!-【7.1 错误处理】

很多时候我们都会遇到错误的情况,比如类型转换、请求第三方、连接数据库等出现错误。这时候就需要我们对异常进行进一步的处理,避免影响正常的业务逻辑。比如在类型转换时,从`string`转换为`int`,转换出错了。那么这时候我们就不能继续进行下一步的业务逻辑处理,因为这可能会导致我们的业务错误。

2024-08-26 09:31:23 603

原创 Go,你也可以的!-【6.3 select】

`select`一般是与`goroutine`、`channel`一起使用的。它的主要作用是用来从多个`channel`中读取数据。相当于使用一个`goroutine`通过`select`来读取多个`channel`的数据。如果所有`channel`都没有数据,那么就会阻塞,直到其中一个`channel`有数据为止。如果多个`channel`都有数据,那么就会随机从其中一个先读取数据。

2024-08-26 09:30:43 786

原创 Go,你也可以的!-【6.2 channel】

在并发编程中,共享变量一直都是一个大问题,也是经常容易出问题的地方。那么在`Go`语言中就提出了`channel`,也就是通道的概念,用以解决协程间的通信问题。

2024-08-24 16:14:30 357

原创 Go,你也可以的!-【6.1 goroutine】

`Go`语言中,使用的是`协程`的概念,也就是`goroutine`,可以理解为就是一个轻量级的线程。协程的开销极低,所以我们可以开启大量的协程支持我们的业务实现,这对于并发要求较高的系统是非常友好的。

2024-08-24 16:13:20 380

原创 Go,你也可以的!-【5.3 循环语句】

循环语句一般用于遍历数组、切片、`MAP`等,同时也用于一些循环逻辑执行。`Go`语言的循环与其他语言差不多,只不过都是通过`for`关键字来实现。在前面关于数组、切片的学习中我们已经讲解过了`for`循环的使用,本节我们将进行进一步的讲解。

2024-08-23 11:15:32 259

原创 Go,你也可以的!-【5.2 条件语句】

在实际的项目开发中,我们是一定会用到判断的。比如判断`a`、`b`两个数字的大小,如果`a`大于`b`执行逻辑`1`;如果`a`小于`b`那么执行逻辑`2`。类似上面的这种操作在我们实际使用时是很常见的。与大多数语言一样,`Go`语言也是使用`if`、`else`、`else if`来进行判断。

2024-08-23 11:14:35 448

原创 Go,你也可以的!-【5.1 函数】

函数可以说是各个编程语言都具备的东西,而在使用方面也是大同小异。函数在我们的实际应用中是必须的一个东西,可以说是我们程序的重要组成部分。

2024-08-22 09:08:08 540

原创 Go,你也可以的!-【4.7 类型转换】

我们已经在之前的章节中学习过了`Go`语言的基本数据类型。在实际的应用场景中,我们很多时候都会需要进行类型转换。这一节我们将针对类型转换进行详细的介绍。

2024-08-22 09:06:45 686

空空如也

空空如也

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

TA关注的人

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