自定义博客皮肤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.

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

原创 代码江湖:快问快答 -【MySQL】

MySQL是一个开源的关系型数据库管理系统,使用作为查询语言。它广泛应用于各种Web应用程序和数据存储场景,如电子商务网站、内容管理系统等。主要特点开源MySQL是免费的开源软件,可以根据需求自由使用和修改。跨平台:支持多种操作系统,如WindowsLinux和macOS。高性能:支持多种存储引擎(如InnoDB和MyISAM),能够高效处理大量并发请求。安全性MySQL支持用户权限和加密,提供安全的数据存储和访问控制。MySQL常用于动态网站、在线应用、内容管理系统(如)和各种基于数据库的应用。主键。

2024-11-15 11:18:11 1022

原创 代码江湖:快问快答 -【微服务】

微服务架构* 是一种将应用程序拆分为多个独立服务的架构模式,每个服务实现单一功能,可以独立部署和扩展。这些服务通过网络通信协同工作,通常使用轻量级的通信协议(如与单体架构独立部署:每个服务可以独立开发、测试和部署,减少了大规模的部署风险。技术多样性:每个服务可以选择不同的技术栈,适合其具体需求。可扩展性:服务可以独立扩展,按需为某个服务增加实例。容错性强:某个服务故障不会导致整个系统宕机。API 网关是微服务架构中的入口点,负责接收客户端请求并路由到具体的微服务。请求路由:将请求分发到正确的微服务。

2024-10-18 16:36:00 1205

原创 代码江湖:快问快答 -【Java】

构造方法是在创建对象时调用的特殊方法,常用于初始化对象。它与类同名,没有返回类型。// 定义类和构造方法int age;// 构造方法// 创建对象并调用构造方法继承是OOP的重要特性,允许子类继承父类的属性和方法。使用extends关键字定义继承关系。// 父类// 子类继承父类// 创建子类对象// 调用父类方法// 调用子类方法多态是同一个行为具有不同表现形式的能力。Java通过方法重写和父类引用指向子类对象来实现多态。// 父类// 子类重写父类方法。

2024-10-18 16:27:05 844

原创 代码江湖:快问快答 -【Golang】

Go允许定义具有多个参数和返回值的函数。参数可以是任意类型,返回值也可以是多个。// 示例:函数定义数组是固定大小的集合,切片是动态大小的集合。切片比数组更灵活,因为它可以根据需要动态调整大小。// 示例:数组与切片// 数组// 切片slice = append(slice, 5) // 动态添加元素结构体是用户自定义的复合数据类型,允许将多个字段组合在一起。// 示例:结构体定义Age int// 创建结构体实例Goroutine是Go中用于并发执行任务的轻量级线程。Goroutine。

2024-10-14 17:26:32 850

原创 代码江湖:快问快答 -【Linux】

Linux是一种开源的、类Unix的操作系统,具有多用户、多任务、稳定性强的特点。它最初由开发,当前已成为服务器、开发环境和嵌入式系统中的主流操作系统之一。与其他操作系统的区别开源Linux是免费且开源的,用户可以自由修改和发布自己的版本,而Windows和macOS是闭源的。命令行驱动:与Windows和macOS以图形界面为主不同,Linux强调命令行操作,适合高效的服务器管理和自动化任务。系统灵活性Linux支持多种发行版(如UbuntuCentOSDebian),用户可以根据需求进行高度自定义。

2024-10-14 17:23:27 795

原创 代码江湖:快问快答 -【计算机网络】

计算机网络是由多台计算机和网络设备通过通信链路相互连接,来共享资源和信息的系统。网络的主要目的是让不同的计算机能够通过共享资源进行通信和协作。主要分类局域网(LAN):覆盖范围较小,如办公室或家庭网络。广域网(WAN):覆盖范围较大,通常跨越多个城市或国家,如互联网。城域网(MAN):介于局域网和广域网之间,覆盖一个城市范围。个人区域网(PAN):覆盖范围更小,通常用于个人设备之间的通信,如蓝牙网络。IP 地址是网络中每台设备的唯一标识,用于在网络上定位和通信。它就像你家中的地址,帮助信息找到目的地。

2024-10-12 16:17:50 827

原创 代码江湖:快问快答 -【数据结构】

数据结构是一种组织和存储数据的方式,让我们可以更高效的对数据进行访问和修改。算法则是在数据结构的基础上操作数据的步骤及方法。我们可以把数据结构理解为存放数据的容器(如列表、栈、队列等),而算法就是在这些容器里进行操作的工具(如排序、搜索等)。数据结构是存储数据的基础,而算法则是处理数据的规则。选择合适的数据结构可以让算法更高效。栈是一种遵循后进先出(LIFO)原则的数据结构,想象一个叠盘子的场景,最后放上去的盘子最先取下来。基本操作压栈(Push):把元素放到栈顶。出栈(Pop):从栈顶移除元素。

2024-10-12 16:14:33 727

原创 代码江湖:快问快答 -【计算机基础】

操作系统就是用于用户与计算机硬件交互的软件。简单来说就是我们在硬件上安装了系统,之后我们就是在使用这个操作系统软件。操作系统会提供进程管理、内存管理、文件系统管理、设备管理、安全与权限控制等功能。虚拟内存简单理解就是将一部分磁盘空间转化为内存使用,比如当内存极度紧张时,操作系统会拿出一部分磁盘空间来作为内存使用。准确的来说就是:当物理内存不足时,操作系统会将一些不常用的数据移动到磁盘的交换空间,也就是相当于使用虚拟内存作为一个暂存。缓存是一种快速的存储区域,用于存放频繁访问的一些数据。缓存可以减少。

2024-10-12 16:07:42 1194

原创 代码江湖:快问快答 -【序言】

代码江湖:快问快答》专注于各个技术模块的问题解答,本书通过问答的形式帮助您进行学习。本书针对大部分问题不会进行深入的探讨,但是会为您提供一个引子,通过这个引子您可以进一步的去深入了解。由于笔者经常会使用到其中的一些知识点以及概念,所以针对这些知识点进行了一个总结。本书可能还有一些遗漏的,这只是笔者根据自身经验及实际项目进行总结的。本书针对每个模块分为了筑基期、结丹期、元婴期,通过三个层次逐步递进,您可以逐步的对该模块有一个更深的了解。

2024-10-12 15:57:30 248

原创 Go版数据结构 -【8.7 二分查找】

二分查找是一种高效的查找算法,它通过将有序数组逐步对半分割的方式快速定位目标元素。二分查找的效率远高于线性查找,适用于大规模数据集,但前提是数组必须是有序的。简单来说就是将数组分成两半,之后将中间元素与查找目标值进行比较,这样就可以决定下一步从前半部分还是后半部分查找。通过二分就可以将线性的查找步骤减少了一半,同时如果对二分后再二分,那么效率就会更进一步提高。

2024-10-10 17:04:28 472

原创 Go版数据结构 -【8.6 线性查找】

线性查找是最基础的一种查找算法。其思想非常简单,就是从头到尾依次遍历整个数组或列表,逐个元素进行比较,直到找到目标元素为止。由于其实现和理解非常直观,线性查找通常是学习查找算法的第一步。

2024-10-10 17:03:16 429

原创 Go版数据结构 -【8.5 归并排序】

归并排序也是一种分而治之的排序算法。它将数组分成两个子数组,分别对其进行排序,然后将两个已排序的子数组合并为一个有序的数组。初步听起来好像与快速排序是一样的,但是其实还是有一些区别的。快速排序随机选择一个元素作为基准,将数组分为两部分;归并排序是从中间平分。快速排序不需要进行合并操作,快速排序在划分时已经完成了左右的排序,分割之后不再需要额外的合并操作;归并排序需要需要额外的合并步骤。

2024-10-10 17:02:19 445

原创 Go版数据结构 -【8.4 快速排序】

快速排序是一种分而治之的排序算法。它通过随机选择一个基准元素,将数组分为两部分。一部分比基准元素小,另一部分比基准元素大,之后对两部分排序。快速排序以其平均情况下的 O(n log n) 时间复杂度和良好的性能而广泛应用。

2024-10-10 17:01:18 402

原创 Go版数据结构 -【8.3 插入排序】

插入排序是一种简单且直观的排序算法,它的基本思想是将数组分为已排序和未排序两个部分。通过逐步将未排序部分的元素插入到已排序部分的正确位置,逐步构建整个有序序列。看起来与选择排序是差不多的,但是还是有一些差别的。选择排序是一直从未排序序列中选择最小/最大的元素插入到已排序队列中。而插入排序则是:每次从未排序的序列中拿到第一个元素,与已排序序列的元素比较,之后找到它自己合适的位置插入进去。

2024-10-10 17:00:10 402

原创 Go版数据结构 -【8.2 选择排序】

选择排序是一种简单直观的排序算法。其基本思想是在未排序序列中找到最小(或最大)的元素,并将其与未排序序列的第一个元素交换,随后再继续从剩下的未排序序列中找最小(或最大)的元素,重复此操作直到序列有序。

2024-10-10 16:59:04 356

原创 Go版数据结构 -【8.1 冒泡排序】

冒泡排序是一种简单且直观的排序算法。它的基本思想是通过多次遍历待排序的序列。每次比较相邻的两个元素,如果它们的顺序不正确(例如,第一个比第二个大),就交换它们的位置。经过多次这样的操作,较大的元素会逐渐冒泡到序列的末端。

2024-10-10 16:57:23 431

原创 Go版数据结构 -【7.2 冲突处理方法:链地址法与开放寻址法】

哈希表是一种高效的数据结构,用于快速查找、插入和删除数据。然而,哈希表的一个重要问题是哈希冲突,即多个键映射到同一个索引位置。当出现冲突时,我们需要采取适当的方法来处理冲突。本节将介绍两种常见的哈希冲突处理方法:链地址法和开放寻址法,并展示如何在Go语言中实现这两种方法。

2024-10-10 16:55:43 1257

原创 Go版数据结构 -【7.1 哈希函数与哈希表】

哈希函数和哈希表是数据结构中的重要概念,广泛应用于查找、存储和管理数据,尤其是在实现高效的数据访问时。本节我们将介绍哈希函数和哈希表的基本概念、应用场景,并展示如何在Go语言中实现一个简单的哈希表。

2024-10-10 16:54:45 659

原创 Go版数据结构 -【6.3 最短路径算法】

在图结构中,最短路径算法 是一类非常重要的算法,它用于找到从一个顶点到另一个顶点的最短路径。最短路径问题广泛应用于导航、通信网络、路径规划等领域。最短路径问题 是在图中找到从起点到目标顶点的最短路径,路径长度是由边的权重决定的。对于不同类型的图,最短路径问题可以有多种解法。

2024-10-10 16:53:32 622

原创 Go版数据结构 -【6.2 深度优先搜索与广度优先搜索】

图是一个重要的数据结构,而遍历图的方式主要有两种:深度优先搜索 和 广度优先搜索。这两种算法分别适合不同的场景。本节我们将介绍 深度优先 和 广度优先 搜索的基本概念、算法原理,并使用 Go 语言实现它们。

2024-10-10 16:52:07 1027

原创 Go版数据结构 -【6.1 图的基本概念与表示】

图相较于二叉树又是另一种结构,从名称就可以看出,图是另一种复杂的数据结构。图在我们的实际应用中还是比较广泛的,本节我们将针对图的基本概念、Go语言的实现进行讲解。

2024-10-10 16:51:04 1053

原创 Go版数据结构 -【5.2 优先队列】

优先队列 是一种特殊的队列,它与普通队列的区别在于:每个元素都有一个优先级,出队时,总是优先出队优先级最高的元素,而不是按照入队的顺序。优先队列广泛应用于各种场景,如任务调度、路径规划等。它通常使用堆来实现,因为堆能保证高效的优先级出队和插入操作。

2024-10-10 16:49:19 641

原创 Go版数据结构 -【5.1 堆】

堆是一种常见的数据结构,广泛应用于优先队列、排序算法(如堆排序)、内存管理等场景。堆可以分为 最大堆 和 最小堆,堆的核心特性是 堆序性质。即在最大堆中,任意节点的值都不小于其子节点的值,而在最小堆中,任意节点的值都不大于其子节点的值。

2024-10-10 16:47:38 713

原创 Go版数据结构 -【4.4 红黑树】

红黑树是一种自平衡的二叉搜索树,它通过特定的颜色属性和旋转操作来确保树的平衡性,从而保证查找、插入和删除操作的效率达到 O(log n)。红黑树与AVL 树一样,都是为了保持二叉搜索树的平衡,但红黑树允许一定程度的不平衡,通过特定的颜色规则来维持整体的近似平衡,而不是像AVL 树那样严格要求左右子树的高度差不超过1。

2024-10-10 16:45:40 789

原创 Go版数据结构 -【4.3 AVL树】

AVL 树 是 二叉搜索树 的一个自平衡扩展,它通过旋转操作来保持树的平衡。与普通的二叉搜索树不同,AVL 树在每次插入或删除节点时,都会检查树的平衡因子,并进行必要的调整以确保树的高度尽可能保持平衡。本节我们将介绍AVL 树的基本概念、平衡因子、旋转操作,以及AVL 树的Go语言实现。

2024-09-27 10:49:51 900

原创 Go版数据结构 -【4.2 二叉搜索树】

二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树结构,它在上一节的基础上做了新的规则限制。它的特性使得在进行查找、插入、删除等操作时效率非常高。二叉搜索树广泛应用于搜索、排序和数据存储等场景。本节我们将介绍二叉搜索树的基本概念、其特有的规则以及在 Go 语言中的实现。

2024-09-27 10:48:01 1444

原创 Go版数据结构 -【4.1 二叉树】

二叉树在实际应用中是离不开的,在很多底层实现上都会使用到二叉树,通过二叉树而扩展出来的结构也比较多。本节我们将介绍二叉树的基本概念以及Go语言的基本实现,后续章节我们将继续讲解衍生出的二叉搜索树、平衡树。

2024-09-26 17:36:49 1130

原创 Go版数据结构 -【3.2 队列】

队列与栈有相同的地方,但是也略有不同。本节我们将讲解队列的基本概念及Go语言实现。

2024-09-26 17:32:36 760

原创 Go版数据结构 -【3.1 栈】

栈是一种线性数据结构,本节我们将针对栈的基础概念、实现原理以及Go语言的栈实现进行讲解。

2024-09-25 10:51:04 584

原创 Go版数据结构 -【2.2 链表】

链表是一种常见的线性数据结构,与数组不同的是,链表中的元素并不存储在连续的内存空间中,而是通过指针连接在一起。链表非常适合需要频繁插入、删除操作的场景,因为它不需要像数组那样频繁移动数据。

2024-09-25 10:35:33 1285

原创 Go版数据结构 -【2.1 数组】

数组是我们常用的一种数据结构,在大部分编程语言中都原生支持,数组在我们的日常开发工作中也是一种必不可少的数据结构。

2024-09-24 10:44:41 894

原创 Go版数据结构 -【1.2 数据结构的时间与空间复杂度】

在算法和数据结构的分析中,时间复杂度和空间复杂度是两个非常重要的指标,它们分别衡量了算法运行时间和所需存储空间的增长速度。理解这些概念有助于我们评估和比较不同数据结构在不同场景下的性能表现。本节我们将对这两者的基本概念进行讲解,同时针对他们的计算方法进行解释与分析。

2024-09-24 10:39:15 1160

原创 Go版数据结构 -【1.1 数据结构的分类与基本概念】

按照标准说法,数据结构指的是在计算机中存储和组织数据的一种方式,以便能够有效地访问和修改数据。将这些书籍分类,之后放入不同的书架这个分类的放入书架的方法,就叫做数据结构,我们的结构是:书架的每一层放不同分类的书籍。同样的,我们在编程时也会遇到类似这样的情况,需要采用一种特定的结构方式来管理数据,比如说使用数组结构存储数据,这就是数据结构。

2024-09-24 10:35:15 386

原创 Go版数据结构 -【序言】

本书与《Go,你也可以的!》、《Go进阶概览》为同一个系列。在前两本书中,分别讲解了Go语言的基础知识、进阶内容。笔者查看了市面上Go语言方面的数据结构书籍或文章,发现这一块的内容比较少,也没有找到简单成体系的指南。基于这种情况,笔者决定编写本书,本书将致力于帮助读者掌握基本的数据结构及算法知识。本书会对常用的、基础的数据结构进行概念性的讲解,同时会使用Go语言实现对应的数据结构算法。通过本书的学习,您可以掌握基本的算法概念知识,可以知道如何使用Go。

2024-09-24 10:30:59 373

原创 Go进阶概览 -【7.3 Go语言中的安全与错误处理】

Go语言的错误处理机制以简洁和健壮著称,为我们提供了一套简单但灵活的工具来应对不同场景下的错误处理。本章将深入探讨Go的错误处理模式,包括panic/recover机制以及如何编写健壮、容错的代码。

2024-09-23 17:48:42 1354

原创 Go进阶概览 -【7.2 泛型的使用与实现分析】

泛型是Go 1.18引入的概念,在引入这个概念前经过了好几年的考量最终才将这这个特性加进去。泛型在多种语言中都是存在的,比如C++、Java等语言中都有泛型的概念。本节我们将针对泛型的使用、实现原理进行整体的讲解。

2024-09-20 09:55:01 1664

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

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

2024-09-18 16:01:59 926

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

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

2024-09-17 14:12:29 1305 1

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

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

2024-09-16 17:31:35 604

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

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

2024-09-14 09:51:32 908

空空如也

空空如也

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

TA关注的人

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