自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (1)
  • 收藏
  • 关注

原创 golang系列之切片

由于切片的底层是共享的连续内存块,所以在处理大量数据时,使用切片可以提供较高的性能。然而,需要注意的是,如果对切片的元素进行修改操作,会影响到所有引用该切片的其它切片。切片是对数组的抽象,它提供了一种方便且高效的方式来操作数组中的元素。切片是对数组的抽象,它提供了一种灵活且高效的方式来操作数组中的元素。切片的底层是共享的连续内存块,这使得切片操作效率较高。多个切片可以共享同一个底层数组,只要它们是连续的或者它们是同一个切片的子切片。当创建一个切片时,会分配一个底层数组,并将该数组的指针存储在切片结构体的。

2023-08-30 13:09:32 139

原创 golang系列之sync.map

是并发安全的,因此在多个goroutine同时操作时不会产生数据竞争。但是,由于其内部实现使用了分段锁机制,因此在高并发情况下可能会存在锁竞争的问题。如果需要处理大量的并发读写操作,可能需要考虑使用其他数据结构或并发控制策略来优化性能。的实现基于哈希表和无锁技术,通过使用分段锁机制来实现并发访问。它提供了简单的键值对操作接口,包括。包中提供的一个并发安全的字典类型。它主要用于在并发环境下安全地存储和操作键值对数据。方法遍历了所有键值对,并打印出来。等,并支持并发安全地迭代操作。方法获取指定键的值,并使用。

2023-08-30 13:06:00 250

原创 golang系列之WaitGroup

WaitGroup是Go语言中的一个并发原语,用于等待一组goroutine完成执行。它提供了一种方便的方式来同步和管理goroutine的执行。,并指定了要等待的goroutine数量为3。然后启动了3个goroutine,每个goroutine都会延迟一段时间后输出一条消息,并调用。等待所有goroutine完成,并输出"all goroutines done"。在上面的示例中,我们创建了一个WaitGroup对象。

2023-08-30 13:04:28 74

原创 golang系列之ticket

在上面的示例中,我们创建了一个包含5个可用资源的Ticket对象,然后启动了10个goroutine来竞争这个Ticket对象。每个goroutine都尝试从Ticket对象中获取一个可用资源,如果获取成功则输出一条消息,并在访问完成后释放该资源;如果获取失败则输出另一条消息。每个Ticket对象都维护了一个可用的资源池,并提供了获取和释放资源的方法。当一个goroutine需要访问共享资源时,它可以从Ticket对象中获取一个资源,并在访问完成后释放该资源。

2023-08-30 13:02:36 138

原创 golang系列之timer

与AfterFunc不同的是,Sleep方法不会触发事件,只是简单地暂停执行。在上面的示例中,我们创建了一个Timer对象,并指定了5秒后触发事件。Go语言的timer包提供了一种计时器的实现,可以用来在指定的时间后触发一个事件,或者定期触发事件。Timer是一种单一事件的定时器,即经过指定的时间后触发一个事件,然后自动销毁。要使用timer包,需要先导入该包,然后创建一个Timer对象,通过调用其AfterFunc或Sleep方法来等待指定的时间,并在时间到达后执行相应的操作。

2023-08-30 13:00:47 89

原创 golang系列之recover

在Go语言中,recover是一个内建函数,用于从panic中恢复并继续执行程序。在匿名函数中,我们调用recover函数来捕获panic。当panic发生时,recover函数会返回非nil的值,我们将其打印出来。在延迟函数defer中调用recover函数时,它能够捕获到当前goroutine中的panic。如果在延迟函数中没有发生panic,recover函数会返回nil,并且没有其他任何效果。当调用recover函数时,它会返回一个interface{}类型的值,表示触发panic的原因。

2023-08-30 12:58:56 76

原创 golang系列之atomic

除了AddInt32函数,atomic包还提供了其他类型的原子操作函数,如AddInt64、CompareAndSwapInt32、CompareAndSwapInt64等。需要注意的是,atomic包提供的原子操作函数只能对基本数据类型进行操作,不能对引用类型进行原子操作。总之,Go语言的atomic包提供了一组原子操作函数,可以在并发环境下保证数据的一致性和安全性。AddInt32函数内部使用了CPU提供的原子指令,将操作数与内存中的值进行比较,并将结果写回内存。

2023-08-30 12:58:12 249

原创 golang系列之defer

语句的执行是延迟的,所以它不能直接返回一个值。如果你需要在延迟的函数中获取返回值,可以将返回值存储在一个变量中,并在延迟的函数中使用该变量。语句用于延迟执行一个函数调用,通常用于确保在函数执行结束时进行一些清理工作。语句的执行是延迟的,所以它不能直接处理函数中的错误。语句执行时某些变量的值发生了改变,那么这些参数将使用当时的值。是一个函数调用表达式,可以是函数名称、带有参数的函数调用等。语句时被计算,而不是在执行延迟的函数时计算。语句先执行,然后是第二个,最后是第一个。语句会最先执行,而最先执行的。

2023-08-30 12:04:10 28

原创 golang系列之map

当我们向map中插入一个键值对时,首先会计算键的哈希值,然后将该键值对存储在对应的桶中。由于哈希函数的限制,不同的键可能会产生相同的哈希值,这就是所谓的哈希冲突。接着,再在该桶对应的链表中进行线性查找,找到对应的键值对。可以使用内置的make函数来创建一个map,例如:m := make(map[keytype]valuetype),其中keytype表示键的类型,valuetype表示值的类型。在上面的示例代码中,我们创建了一个map,并向其中插入了几个键值对。每个键都是唯一的,而值则可以重复。

2023-08-30 11:59:07 29

原创 golang系列之context

context可以用于在多个goroutine之间传递请求和响应,并且可以用于取消操作和超时控制等。Golang的context是一个用于请求/响应级别的上下文传递机制,它提供了在多个goroutine之间传递请求和响应的能力,并且可以用于超时控制、取消操作和请求范围的数据传递等。总之,Golang的context是一个用于在多个goroutine之间传递请求和响应、超时控制和上下文传递的机制,它提供了一种标准化的方式来管理请求的生命周期。context可以用于在不同的服务之间传递上下文信息。

2023-08-30 11:55:25 34

javascript 实现的编辑器

javascript 实现的编辑器,界面优美,是个方便应用的插件,适合java web开发

2010-12-23

空空如也

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

TA关注的人

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