自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go中map

哈希表是一种基于哈希函数的数据结构,它提供了快速的数据插入和检索功能。哈希表通过使用哈希函数将键(key)映射到表中的位置来访问数据,这通常使得大多数情况下的查找、插入和删除操作的时间复杂度为O(1)。这种数据结构在多种编程语言中都有广泛的应用。sync.Map是 Go 语言提供的一个并发安全的 Map 类型,它在 Go 1.9 版本中引入。与内建的 Map 类型相比,sync.Map通过内部同步机制,允许多个 goroutine 安全地并发读写,而不需要外部加锁。

2024-07-21 21:57:54 500

原创 go的Mutex实现原理及演进

深入理解Mutex:通过学习 Mutex 的实现,我更深入地理解了并发编程中的同步机制和挑战。性能与公平性的权衡:理解了在设计并发系统时,性能和公平性之间的权衡是不可避免的。代码实践的重要性:理论知识需要通过实践来巩固,实际编写和测试并发代码是提高理解的关键。通过这些笔记,我希望能够更好地理解和应用 Go 语言中的并发原语,编写出更高效、更可靠的并发程序。同时,这些知识也为我提供了一个思考并发编程问题的框架,帮助我在面对并发挑战时做出更明智的设计决策。

2024-07-19 18:25:15 1014 2

原创 go的内存分配机制

在引言部分,我们概述了内存管理的重要性,特别是对于 Go 语言。我们强调了自动垃圾回收和并发安全在 Go 内存管理中的核心地位,并预告了后续内容将详细解析这些机制。这为读者提供了一个宏观的视角,为深入理解 Go 的内存管理打下基础。在这一节中,我们回顾了操作系统的内存模型,包括多级存储模型、虚拟内存与物理内存的关系,以及分页管理的基本原理。这些概念为理解 Go 语言的内存管理机制提供了基础。通过分页管理,操作系统能够有效地管理内存资源,而 Go 语言则在此基础上进一步优化了内存的分配和回收策略。

2024-07-18 19:27:24 735

原创 用go实现限流算法

固定窗口限流算法是一种基础的限流策略,适用于需要简单限流控制的场景。然而,它可能不适合那些需要更平滑流量控制或需要根据实际流量动态调整限流策略的系统。在实际应用中,可能需要结合其他限流算法(如滑动窗口或令牌桶算法)来满足更复杂的业务需求。import ("sync""time"// FixedWindowLimiter 结构代表一个固定窗口限流器。// 它使用固定大小的时间窗口来限制请求的数量。limit int // 请求上限,窗口内允许的最大请求数。

2024-07-16 21:13:37 894

原创 redis中使用stream实现mq(代码)

redis中使用stream实现mq(代码)首先从整体的代码文件上面来分析到底使用到了什么,这些是怎么串联起来的。loglog.go 主要的是整个消息队列启动之后,需要记录日志函数的封装redis 对与redis命令的封装config.go 在使用redis之后。需要对于redis有一些信息的配置redis.go 主要使用的redis命令封装testconfig.go 对于所编写的生产者,消费者队列的配置consumer.go 消费者。

2024-07-15 15:31:36 838

原创 redis中的streams实现mq

具体的redis指令就不做过多的分析,接下来就要是通过小徐先生的几张图,来了解里面的具体流程,让大家先清楚一个大概过程,然后再进行深究具体问题。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传下面这个是别人公众号上面的图,利用这个图,可以很清楚的看到客生产者使用redis的命令将数据放到redis的streams里面之中,然后消费者通过获取信息进行消费,如果消费成功的话,就是要给redis回应一个ack,这样就完美的保证了数据被消费。

2024-07-15 14:32:21 649

原创 etcd基础知识总结

由于云原生的出现,有了很多的分布式微服务的概念,所以也需要很多的技术去支持,这里的etcd是k8s内部的一大关键组件,etcd可以进行可靠的分布式数据存储。etcd:是一个用于配置共享和服务发现的键值存储系统。归根结底是一个存储组件,并且可以实现配置共享和服务发现。,是一款实现了元数据信息可靠存储的组件。可以几种管理配置信息。需要注意的是,etcd是由go语言实现的。

2024-05-19 15:22:26 779

原创 docker基础

就来说说我对于docker的理解,它就像是一个容器,把所以咱们需要使用的一些应用程序放在里面,在使用的时候进行管理操作,可以对于每个软件进行隔离,保护。主要是对于环境没有要求,在部署的时候,也非常方便,就算出现问题,也是很容易去解决的。

2024-05-18 16:15:27 607

原创 vue3知识总结-5

在之前的内容中有很多的,是关于Vue2的配置,组合式和选择式api需要都会,下面主要的就是一些新特性的总结,总体看完之后,就是基本上,可以理解清楚,是怎么样的,然后后面底层的肯定是需要深度剖析的。基本的基础知识就到这里。

2024-05-18 15:32:52 726

原创 Vue3知识总结-4

当使用在多个组件切换时候,被切换掉的组件会被卸载,可以用过组件强制被切换掉的组件任然保持“存活状态”在某些场景中,可能想要为子组件传递一些模版片段,让子组件在他们的组件中渲染这些片段。插槽内容可以访问到父组件的数据作用域,因为插槽内容本心是在父组件模版中定义的。Provide 和inject只能由上往下传递。需要同时使用父组件和子组件域内的数据。如果没有传数据,可以有一个默认的值。同步:多个功能,一个一个执行。异步:多个动能,同时运行。创建到销毁的生命周期。

2024-05-15 16:02:08 271

原创 20 分页:较小的表

之前提到的一个问题:就是页表太大,假设一个 32 位地址空间(232 字节),4KB(212 字节)的页和一个 4 字节的页表项。一个地址空间中大约有一百万个虚拟页面(232/212)。乘以页表项的大小,你会发现页表大小为 4MB。然后如果开的进程比较多的话,那整个内存中,需要很多的空间来存放页表了。这里上面的空间数据的计算,可以去了解。

2024-05-13 12:57:50 869

原创 Vue3知识总结-3

需要直接访问底层的dom元素,要使用ref这个attribute,挂载结束后引用都会暴露在this.$refs上面。

2024-05-12 21:34:10 368

原创 Vue3知识总结-2

这里是第二次发的关于学习Vue的一些知识点,都是一些比较实用点。

2024-05-11 23:22:45 401 2

原创 19 分页:快速地址转换(TLB)

通过了解TLB的知识,做出了可以让地址转换的更快。但是有些时候会超会TLB的范围,这样就需要一个更大的页,去解决这个问题了。然后就是TLB很容易成为CPU流水线的瓶颈,然后人民用虚拟地址直接访问缓存,避免昂贵的地址转换的步骤。

2024-05-11 10:11:05 693

原创 Vue3知识总结-1

提供了一套声明式,组件化的编程模型。

2024-05-10 22:20:06 1101

原创 18 分页:介绍

在解决大多数空间管理问题上面,操作系统有两种方法:第一种就是将空间分割成不同长度的分片,类似于虚拟内存管理中的分段,但是这个方法存在一个问题,就是当长时间之后,因为碎片化的空间,导致后面的分配会存在问题。第二种方法:将空间分割成固定大小的分片,这被称为分页。因为是固定大小,所以也就解决了上面存在的问题,每个分片被称为一页,同样,在物理内存中,奖定长槽块的阵列,叫做页帧。

2024-05-10 14:53:51 889

原创 浅浅总结SQL中的事务.

在现实生活中有很多的线上支付的场景,当支付的时候,一方资金减少,另一方资金增加,在执行前后,两者的总体数额需要相同,为了保证这个操作的完整,所以提出了事务,那我们先来去写一个示例,做一个简单的引子吧。在这里,有一个简单的用户表。里面有用户的资金和用户的简单信息。如果没有事务的话,我们会用下面的语句,来去改变这个数据库,但是如果是大型业务的话,可能会有高并发的情况出现,这样的话,因为写数据库的操作是比较慢的,所以可能会导致支付这个场景出现问题。那么怎么解决呢?

2024-05-10 11:29:06 818

原创 17 空闲空间管理

分页是将内存成大小相等的内存块,这样的机制下面,很容易去管理这些内存,但是又出现了一点问题,就是无法保证一直分配的时候是大小相等的,比如malloc函数,或者操作系统分段,这些都会将内存分为大小不一的,所以也就是出现了内存碎片,导致后续的请求可能失败。那么就是要学会空闲空间的管理才是最好的。

2024-05-09 16:11:14 1075 1

原创 16章 分段

在分段技术之前,了解了基址和界限寄存器,但是这个东西,将不同的进行重定位到不同的物理内存区域。对于这些区域的堆,栈中间,会发现有一大块没有用到的空间,但却占用了物理内容,所以这个技术有下面两个问题:大大浪费了内存空间导致物理内存无法连续起来,无法为后面的程序提供完整的地址空间。

2024-05-09 11:11:17 599

原创 go-zero框架上传图片至七牛云

在使用go-zero框架的时候,因为goctl命令行工具的出现,使得我们在开发的时候减少大量的代码,但是随之而来的又有很多的问题,在api文件中,我们无法定义一个文件类型的数据,但是在使用的时候,免不了需要传视频照片等文件类型,所以这个时候,我们需要有一些方法,来解决这些问题,下面就分享一种方法。

2024-04-02 17:30:58 413

原创 数据结构-迷宫问题

/ 定义迷宫的大小,这里我们用全局变量,可以随时进行更改,然后改变我们的迷宫地图,//来实现地图的很多变化,使我们的例子多样化,保证可以多种形式int maxrow;int maxcol;// 迷宫地图,0 表示墙,1 表示通路,这里就是根据书上的问题进行判断// 定义坐标的结构体,因为是地图,所以需要使用二位坐标点,来定位一个位置的具体地方,//这样对于我们的后面操作会简单int x, y;// 定义链表节点的结构体,它的数据域是上面定义的坐标类型,它的指针域就是它的下一个。

2023-09-26 19:04:03 287 1

原创 操作系统学习系列——IO设备的基础知识

3.DMA方式今天就是大概的了解一下IO的基础知识,后面将会对IO进行深层的了解,知道其一些底层原理。

2023-06-04 13:23:04 246

原创 Go中的通道

以上就是包含了channel中大部分的重要知识,这些知识是底层中需要具备的能力,所以需要我们进行磨练,对于所有的知识进行回顾,这样对于我们在后面的学习中可能会有更好的帮助,所以要注意其中的重要问题。

2023-06-01 17:36:12 386 1

原创 操作系统学习系列——文件系统的结构层次和虚拟文件

以上就是新增加的内容,我们可以图文结合,进行分析其中的原理。

2023-05-31 21:32:35 244

原创 操作系统学习系列——4.1文件管理中的基础知识

2.c创建顺序文件以上就是这节的学习内容。

2023-05-28 14:43:45 100

原创 Go语言中的文件操作以及IO操作

一周挤出来点时间,对一部分内容进行系统的总结,对学习有着很大的提升。

2023-05-26 20:30:19 1386

原创 操作系统学习系列——第三章3.2虚拟内存,分页管理

以上就是今天的学习内容。

2023-05-26 19:44:33 165

原创 Go中的包

以上就是总结的go中包的相关知识,时间有关的函数,这些函数可以让我们在操作的过程中有很多的用途,所以还是有必要进行总结,这样下来,会让我们在很多时候有帮助。

2023-05-21 18:46:26 438

原创 操作系统学习习系列——第三章3.1内存相关知识

以上就是第三章第一部分的内容,很长很难,····

2023-05-19 13:17:41 85

原创 Go中的面向对象

面向对象是重要的一部分,在日后的学习之中,肯定是有重要帮助的,所以我们需要进行学习,并且是重点学习,这可以让我们的基础更加牢靠,所以,当一段时间之后,就要复习,与便于让啊我们对这个理解加深,使得我们学习有更好的成效。

2023-05-15 19:30:00 303

原创 Go中的链表

一般来说,为了比较好的对单链表进行增删改查的操作,我们会定义一个头节点,头节点的作用主要是来标识链表头,本身这个节点不存放数据示意图no int//判断是不是添加第一只猫head.next = head //构成一个环形return//定义一个临时变量,帮忙,找到最后的结点for {break//加入到链表中// 显示这个环形的链表fmt.Println("环形链表情况如下")fmt.Println("空空如也")returnfor {break// 删除一只猫。

2023-05-12 22:47:08 625 1

原创 操作系统学习系列——2.3进程互斥及重要问题

3.思考:能否改变相邻P,V操作的顺序以上就是这次的分享,希望有帮助。

2023-05-10 15:26:28 86

原创 操作系统学习系列——2.2调度相关概念

我们可以通过时间片为5来进行分析,我们会发现操作系统学的内容枯燥乏味,一定要坚持下来,加油!

2023-05-04 18:55:11 135

原创 Go中的排序

这次我们使用go来编写一下三种排序算法,排序算法再我们的日常中很是频繁的使用,所以我们可以把它们封装成方法,以便后续的使用。​​// 编写Select Sort完成排序//标准访问方式//假设arr[0]最大值//遍历后面进行比较for j := 0;j++ {i++ {if max > arr[i] { //找到真正的最大值//交换= j {fmt.Println("第一次", arr)​​//完成第一次,给第二个元素找到最合适的地方for i := 1;i++ {

2023-05-03 19:07:34 82

原创 操作系统学习系列——2.1进程管理

在这里我们需要学习了线程,进程的相关知识 ,都是一些比较抽象的东西,我们如果不理解还是要看看书或者相关知识。

2023-05-02 22:00:16 75

原创 操作系统学习系列——1.学习指南

1.GUI:图形用用户接口2.联机命令接口3.脱机命令接口4.程序接口总结特权指令的级别这就是第一章讲到的所有的学习内容,希望可以帮助到大家。

2023-05-02 13:20:10 129

原创 Go中append和链表的关系

在go语言中,append()函数用于为切片动态添加元素,可以将元素添加到切片末尾并返回结果;调用append函数必须用原来的切片变量接收返回值,追加一个元素可使用“slice = append(slice,elem1,elem2)”语句,追加一个切片可使用“slice = append(slice,anotherSlice...)”语句。append()用来将元素添加到切片末尾并返回结果。调用append函数必须用原来的切片变量接收返回值append追加元素,如果slice还有容量。

2023-04-26 22:53:45 142

原创 使用Go编写客服管理系统

我们利用三个包,进行相互之间的调用,使得我们的客户管理系统更加简便,这后续也可以添加很多的系统问题,这使得我们的很多操作也都很简单的,所以我们要对面向对象进行更层次的理解,这样就让我们的代码能力可以增强许多。

2023-04-26 16:48:10 232

原创 利用Go面向对象过程编写家庭收支记账软件

既然我们要实现面向对象,那么就需要结构体来进行方法的调用,那么我们就是需要结构体来绑定各种方法。//申明字段//用key来表示进入的功能key string//用loop来判断是否退出loop bool//定义账户余额//定义收支的资金数//定义变量,记录是否有收支的行为flag bool//定义资金的说明我们上面利用面向对象的方法,对这个软件进行模块化,使很多的东西更加细节,这样使得我们的代码有更好的可读性,这样逐渐下来,使得我们在后续的很多增加功能的作用中,让我们可以很好的操作。

2023-04-23 22:31:57 140

原创 Go里面的切片

Go 语言切片是对数组的抽象。Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。所以我们就明白了为什么要是使用切片,因为数组的局限性。slice有三种属性:指针,长度,容量。array unsafe.Pointer//指针len int//长度cap int//容量slice的三种申明方式//1、make​。

2023-04-21 21:52:19 99

空空如也

空空如也

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

TA关注的人

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