自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 服务器禁止设置多个IP来提供代理服务XXX把下面的网卡禁用或断开连接。

湖工大,锐捷禁止多IP提供代理服务,但是如果按照他提醒的一样,把有线网卡给禁用的话,那么就只能是无线上网了,无线上网网速不仅慢,还会搞得电脑和手机不能同时使用校园网。那么这时候我们能够把电脑端的无线网卡给禁用,而不禁用有线网卡。这样子就可以做到手机端和电脑端同时连接校园网,并且还不影响网速。

2023-05-31 16:38:48 805

原创 一致性哈希

一致性哈希

2022-12-13 21:39:29 175

原创 golang面经

4.golang中的map是有序还是无序的?6.golang中的context。1.tcp的三次握手和四次挥手。2.http中get和post。8.mysql的慢查询。3.http的状态码。5.进程间的通信方式。7.数据库中的四范式。

2022-12-09 10:45:19 275

原创 go的反射

为什么我们会需要反射呢?1.我们需要在程序运行中动态的获取对象的类型2.我们要修改任意类型变量的值3.要调用任意的方法(比如你给我传进来一个方法的名称或者你给我传进来一个方法的值,然后我去动态的调用它。)

2022-12-04 16:42:32 142

原创 go中的panic+defer+recover

go中的panic+defer+recover

2022-12-04 16:04:46 185

原创 golang中defer的底层原理

go的defer其实是有两个方案的:1.协程记录defer信息,函数退出时调用2.将defer代码直接编译进函数尾

2022-12-04 15:48:39 74

原创 如何实现GO调用C函数?

GO调用C函数

2022-12-04 13:21:44 71

原创 golang的GC

g哦的GC

2022-12-03 23:56:20 56

原创 golang的堆内存结构

首先,golang的虚拟内存单元叫做heapArena,go每次申请的虚拟内存单元为64MB,最多能有2^20个内存单元 ,所有的heapArena组成了mheap(go的堆内存)。 简单结构如图: go的堆内存用的是分级分配机制,也就是将一个堆内存分成不同的等级,不同等级的堆内存所占空间不同,如下图: 它会分配合适的内存块给对象,如果有一个小的对象,那么就让他放进最小的空间而不能把他放到大的空间里,如果把他放到大的内存里,会影响到大内存块的效率

2022-12-03 17:44:04 278

原创 go的协程栈

因为我们调用了Println函数,我们来看看Println的源代码,他的接收参数是空接口类型,那么就很有可能会逃逸,因为interface{}类型的函数往往会使用反射来看一下我传的值是什么类型的,用到反射就往往会逃逸到堆上了,因为在栈上很难做反射。golang的堆栈跟C++的堆栈是有所不同的,golang的栈是在堆上的,而C++的堆栈是分开的,golang协程栈的作用是记录协程的执行路径,局部变量,函数传参和函数返回值。大变量逃逸:过大的变量会导致栈空间不足,那就会让他逃逸到堆上。这里就涉及到逃逸分析了。

2022-12-02 23:33:01 325

原创 golang中channel的基本结构

g哦中channel的基本结构

2022-12-01 16:33:30 157

原创 golang中的共享内存和管道

那是因为当管道中读取不到数据的时候,协程它会自动进入休眠,当有数据进来他才会被唤醒,不会一直占用内存,不像共用内存那样会一直阻塞导致占用内存。并且他们能做到同样的效果,而效率却不一样。在golang中,我们推荐用管道进行协程间的通信而不是用共享内存,什么叫用共享内存进行协程间的通信呢?上述代码就是通过共享内存进行协程间的通信。而下述代码就是通过管道进行协程间的通信。

2022-12-01 16:15:27 401

原创 golang中如何排除锁异常问题

如以上代码显示,当a复制b的时候,b已经上锁了,所以a复制的是上锁状态下的b,所以这时a也是上锁状态,不能重复上锁,程序会报错,报错信息是死锁。fmt.Println("b已上锁")fmt.Println("a已上锁")

2022-12-01 15:42:03 341

原创 golang中的sync.Once

E:\go的环境变量 #gosetup。

2022-11-30 23:55:49 85

原创 golang中协程过多会出现什么问题?

go中协程过多会出现什么问题?

2022-11-30 00:02:36 1045

原创 浅聊一下golang中的线程

熟悉gmp模型的就知道g0其实是用来操作调度器的,而curg的类型是g指针,它指向了当前正在运行的g(也就是协程),最后来看下mos,他是个结构体,他在每个操作系统都有自己的定义,他记录着操作系统线程信息。golang的线程源代码在runtime2.go中的m结构体。注意此处的线程是golang中的线程,不是操作系统中的线程,操作系统的线程由操作系统来调度。其中我们只需重点关注一下g0,curg, 和mos就行了。

2022-11-29 14:41:10 389

原创 golang协程的本质

golang协程的本质

2022-11-29 14:27:50 115

原创 golang中结构体和指针实现接口

go中结构体和指针实现接口

2022-11-28 23:47:04 293 2

原创 golang中的接口的底层表示

go中的接口的底层表示

2022-11-28 18:40:37 66

原创 golang中map的并发问题(golang中的sync.map)

golang中map的并发问题(golang中的sync.map)

2022-11-28 16:44:26 1691

原创 golang中的map

如图,golang中的map其实是个结构体,其中count是map中的数量,B是用来算有几个桶的,比如 a:=make(map[string]int,3) 中,B的值就是3,这时会map会准备2^3个桶。一:等量扩容:数据不多但是溢出桶多(比如之前的数据很多,但是删了很多的数据,导致溢出桶里的值很稀疏。其实就是溢出桶,因为一个桶只能放8个数据,那么当哈希碰撞严重的时候,就只能挂个溢出桶了。溢出桶会在map建立时自动生成。二:翻倍扩容:数据太多了 (这个也很好理解,就是溢出桶太多了,这时需要将普通桶变多)

2022-11-28 13:47:21 436

原创 golang中的slice

golang中的slice

2022-11-27 15:59:07 400

原创 golang中的string

golang中的string

2022-11-27 13:32:28 536

原创 golang中空结构体的应用

golang中空结构体的应用

2022-11-27 11:58:37 165

原创 golang中关于defer的小知识

golang中关于defer的小知识

2022-10-08 17:12:09 55

原创 golang中函数的一些小知识

golang中函数的一些小知识

2022-10-08 15:51:59 55

原创 golang中关于range的坑

golang中关于range的坑

2022-10-08 14:51:17 154

原创 goland函数匿名返回值与命名返回值的区别

goland函数匿名返回值与命名返回值的区别

2022-10-08 14:22:54 138

原创 goland设计模式之合成复用原则

goland设计模式之合成复用原则

2022-10-02 14:46:38 145

原创 golang exec包在windows下的使用

golang exec包在windows下的使用

2022-09-29 09:03:51 1795 1

空空如也

空空如也

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

TA关注的人

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