- 博客(1419)
- 资源 (282)
- 收藏
- 关注
转载 Go语言Channel实现消息的批量处理
言归正传,关于代码中为什么使用time.Timer而不是time.After,是因为time.After在for select中使用时,会发生内存泄露。当消息量特别大时,使用kafka之类的message queue自然是首选,但更多的时候,我们想用更加轻量的方案来解决这个问题。实现到这里,当个原型是绰绰有余了,但是要作为一个通用的库,还有很多功能要做,比如说:自定义配置。所以说呀,代码写的越多,越容易出bug,但是功能不完善,代码还是要写的。基于这样的需求,我快速的实现了第一步,消息聚合后处理。
2024-11-24 16:18:20
114
1
转载 Golang中如何正确的使用sarama包操作Kafka?
在一些业务系统中,模块之间通过引入Kafka解藕,拿IM举例():用户A给B发送消息,msg_gateway收到消息后,投递消息到Kafka后就给A返回发送成功。这个时候,其实还没有持久化到mysql中,虽然最终会保持一致性。所以,试想如果Kafka丢消息了,是不是就出大问题了?A认为给B发送消息成功了,但是在服务器内部消息丢失了B并没有收到。所以,在使用Kafka的时候,有一些业务对消息丢失问题非常的关注。下面我们来一起看一下如何使用sarama包来解决这些问题。
2024-11-23 21:38:26
379
转载 【golang】泛型学习
这里的SayName作为方法是不能像函数一样在后面再次指定泛型的,我想这是因为方法的泛型应该由interface的泛型和机构体的泛型相影响,个人认为这是一个比较合理的解释。对于下面那个带类型又带接口的泛型,是不能实例化的,至少是现在没有找到实例化的方法(腾讯云那篇文章里是这样的说的,我也没找到对应的方法)此处讨论的一般接口指的是没有方法的接口,我们从上面的实践也可以看出了,它是一个取并集的操作,如下。1.这些类型是可以比较的:布尔,整数,浮点,complex,字符串,指针,channel,
2024-09-27 18:28:20
518
转载 samber/lo
samber/lo是一个非常实用的 Go 语言工具库,它提供了类似 Lodash 的丰富功能,并利用泛型实现了类型安全和高性能。它可以帮助 Go 语言开发者更方便地操作各种数据类型,提高开发效率并使代码更加简洁易读。
2024-09-27 16:42:38
202
转载 windows10 上安装 docker
而虚拟机则提供了一个完全的操作系统环境,可以支持所有的系统调用。WSL 是 windows subsystem for linux 的简写,指的是 windows10 的一个子系统,这个子系统的作用是在 windows下运行 linux 操作系统。参考资料:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package。
2024-09-18 06:46:21
5159
转载 Go每日一库之8:cast(类型转换)
cast库能在几乎所有常见类型之间转换,使用非常方便。代码量也很小,有时间建议读读源码。完整示例代码在GitHub上。ps: 本以为春节就这么几天,偷个懒,没想到。。。
2024-08-10 21:39:40
260
转载 Go每日一库之7:fsnotify(跨平台文件监听)
fsnotify的接口非常简单直接,所有系统相关的复杂性都被封装起来了。这也是我们平时设计模块和接口时可以参考的案例。
2024-08-10 21:21:15
237
转载 Go每日一库之187:singleflight(合并重复调用)
包中定义了一个名为Group的结构体类型,它表示一类工作,并形成一个命名空间,在这个命名空间中,可以使用重复抑制来执行工作单元。mu sync.Mutex // 保护 mm map[string]*call // 延迟初始化Group类型有以下三个方法。Do执行并返回给定函数的结果,确保一次只有一个给定key在执行。如果进入重复调用,重复调用方将等待原始调用方完成并会收到相同的结果。返回值shared表示是否给多个调用方赋值 v。需要注意的是,使用Do。
2024-08-10 21:16:26
135
转载 Golang channel底层是如何实现的?(深度好文)
Hi 你好,我是k哥。大厂搬砖6年的后端程序员。我们知道,Go语言为了方便使用者,提供了简单、安全的协程数据同步和通信机制,channel。那我们知道channel底层是如何实现的吗?今天k哥就来聊聊channel的底层实现原理。同时,为了验证我们是否掌握了channel的实现原理,本文也收集了channel的高频面试题,理解了原理,面试题自然不在话下。
2024-07-05 22:45:38
170
转载 Python优雅遍历字典删除元素的方法
总的来说,字典推导式是删除字典中元素的最常见且最优雅的方法,因为它清晰、简洁且易于理解。其他方法可能在某些特定情况下有用,但通常不如字典推导式通用或高效。
2024-06-23 19:56:57
470
转载 golang如何使用指针灵活操作内存?unsafe包原理解析
Hi 你好,我是k哥。一个大厂工作6年,还在继续搬砖的后端程序员。我们都知道,C/C++提供了强大的万能指针void*,任何类型的指针都可以和万能指针相互转换。并且指针还可以进行加减等算数操作。那么在Golang中,是否有类似的功能呢?答案是有的,这就是我们今天要探讨的unsafe包。本文将深入探讨unsafe包的功能和原理。同时,我们学习某种东西,一方面是为了实践运用,另一方面则是出于功利性面试的目的。所以,本文还会为大家介绍unsafe 包的典型应用以及高频面试题。
2024-06-22 21:15:04
187
转载 如何使用JavaScript实现在线Excel附件的上传与下载?
在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求,例如在Excel中附带一些Word,CAD图等等。同样的,类比到Web端,现在很多人用的在线Excel是否也可以像本地一样实现附件文件的操作呢?答案是肯定的,不过和本地不同的是,Web端不会直接打开附件,而是使用超链接单元格的形式来显示,今天小编将为大家介绍使用前端HTML+JS+CSS技术通过超链接单元格的形式实现在线Excel附件上传、下载和修改的操作。
2024-06-18 19:52:49
291
转载 【踩坑】.NET 8.0 自定义IExceptionHandler不生效
看这个https://github.com/dotnet/aspnetcore/issues/51888, 去年下半年就有人发现了,微软尝试修复https://github.com/dotnet/aspnetcore/pull/51898, 但是改动有breaking change给拒绝了,加上有上面提到的workaround,就一直搁置了。然而,如果你按照文档实现完之后,你所期待的自定义异常处理并不会生效,你必须添加一个空的lambda给。是启用内置的异常处理中间件的方法,而。也可以实现同样的功能,看。
2024-06-18 19:39:14
464
原创 C#的奇技淫巧:利用WinRM来远程操控其他服务器上的进程
远程启动进程,通过WinRM启动的进程通常运行在一个服务会话中,而不是在启动它的用户的会话中。前言:有时候远程服务器的进程你想偷偷去围观一下有哪些,或者对一些比较调皮的进程进行封杀,或者对一些自己研发的服务进行远程手动启动或者重启等,又不想打开远程桌面,只想悄咪咪地执行,那也许下面的文章会对你有启发。在远程服务器上,确保WinRM配置允许你选择的身份验证类型。本地客户端,在管理员权限下,执行以下命令,使得客户端信任远程主机的连接。打开远程桌面,并启动程序,设置断点,可以看到获取到的进程列表。
2024-05-26 11:51:58
1255
转载 Asp-Net-Core开发笔记:给SwaggerUI加上登录保护功能
在 SwaggerUI 中加入登录验证,是我很早前就做过的,不过之前的做法总感觉有点硬编码,最近 .Net8 增加了一个新特性:调用来保护 Swagger UI ,但官方的这个功能又像半成品一样,只能使用 postman curl 之类的工具带上header 来请求,在浏览器里打开就直接401了 ……刚好有个项目需要用到这个功能,于是我把之前做过的 SwaggerUI 登录认证中间件拿出来重构了一下。这次我依然使用 Basic Auth 的方式来登录,写了一个自定义的,通过提供的扩展方法来实现登录。
2024-05-21 22:02:53
309
转载 golang泛型使用
声明一个方法Foreach这个方法类型约束又臭又长,换一个清爽写法有些难区分MyNumber是接口还是自定义约束类型,再换种更清晰写法再换一种也可以单独和某种具体类型使用以上的表示或,是合集意思,那么并集呢,例如myType_1(int32,string),myType_2(int64,string) 取二者的交集string作为类型约束,也很简单//每一个自定义约束类型单独一行myIntmyInt2当交集约束为空时,调用函数就会报错。
2024-03-24 20:28:35
445
转载 gorm 高级查询
/ SELECT `users`.`name`, `users`.`age`, ... FROM `users` // 带上这个选项。// 找到了 `name` = `jinzhu` 的 user,依然会根据 Assign 更新记录。// 找到 `name` = `jinzhu` 的记录,依然会更新 Assign 相关的属性。// 找到了 `name` = `jinzhu` 的 user,则忽略 Attrs。// 找到了 `name` = `jinzhu` 的 user,则忽略 Attrs。
2023-12-13 16:11:19
1242
转载 VSCode安装,配置,编译运行C++(详细整理)
听闻visual studio code很方便,今天早上为了在上面打段代码,便跟着几个帖子开始配环境:本文综合下述帖子得来:CSDN:先建cpp再跟着配置文件博客园:先新建配置文件再建cpp调试上述二者都比较简洁,其中关于文件夹和环境配置的我又从下面2帖得到:百度:Win7 64位下安装配置mingw-w64 C++开发CSDN:这位大神就写的比较详细了,如果觉得我的不够详细,强烈推荐看这位大神的。
2023-11-18 19:44:00
957
1
转载 golang 详解协程——errgroup
sync.ErrGroup再sync.WaitGroup功能的基础上,增加了错误传递,以及在发生不可恢复的错误时取消整个goroutine集合,或者等待超时。go支持并发,一般采用的是 channel 、 sync.WaitGroup 、context,来实现各个协程之间的流程控制和消息传递。上面这个例子是简单的利用 errgroup 进行的 waitGroup和error的处理,下面我们对关键的代码做一个分析,并结合源码来看。声明一个 group的实例,我们看下 group 包含哪些东西。
2023-11-04 19:07:24
792
原创 Golang源码分析之golang/sync之singleflight
golang/sync库拓展了官方自带的sync库,提供了errgroup、semaphore、singleflight及syncmap四个包,本次分析singlefliht的源代码。singlefliht用于解决单机协程并发调用下的重复调用问题,常与缓存一起使用,避免缓存击穿。singleflight经常和缓存获取配合使用,可以缓解缓存击穿问题,避免同一时刻单机大量的并发调用获取数据库构建缓存。
2023-11-04 18:46:49
968
转载 golang sync包使用和应用场景
sync.Mutext解决了并发问题,但是在实际使用场景中,有很多时候读的次数是远大于写的次数的,读取数据并不会对数据造成影响,只需要限制其他协程不能对数据同时进行修改即可,不需要限制其他的协程对该数据的读取操作。上面的代码中,我们定义了一个全局变量once,用来控制initConfig()函数只被执行一次。归根到底,-=1这个操作并不是原子性的,为了解决这个问题,go引入了sync.Mutex{},这是一个互斥锁,它可以保证在任意时刻,只有一个goroutine可以访问某个共享变量或临界区。
2023-11-04 18:16:37
335
转载 由浅入深聊聊Golang的sync.Pool
在下一个周期到来前,victim 中的缓存对象可能会被偷取,在 Put 操作后又重新回到 local 中,这个过程发生在从其他 P 的 shared 队列中偷取不到、以及 New 一个新对象之前,进而是在牺牲了 New 新对象的速度的情况下换取的;这样,当其他线程想要读取 1 号索引时,发生 cache miss,还得重新再加载,对性能有损。而 sync.Pool 可以将暂时不用的对象缓存起来,待下次需要的时候直接使用,不用再次经过内存分配,复用对象的内存,减轻 GC 的压力,提升系统的性能。
2023-10-24 22:17:55
644
1
转载 深入理解Go语言中的sync.Cond
对于Read方法,因为其不运行并发访问,当其将退出时,说明此时已经没有协程在读取数据了,满足abortPendingRead继续执行下去的条件了,此时可以调用Boardcast来唤醒等待条件满足的协程。这个其实就是sync.Cond设计的用途,当不满足运行条件时,先进入阻塞状态,等待条件满足时,再由其他协程来唤醒,然后再继续运行下去,能够提高程序的执行效率。在接下来的部分中,我们介绍了 sync.Cond 的实现原理,主要是对等待队列的使用,从而sync.Cond有更好的理解,能够更好得使用它。
2023-10-24 21:51:00
732
转载 go语言中如何实现同步操作呢
sync.Cond和通道。通过比较它们的适用场景,读者可以更好地了解何时选择使用不同的同步方式。本文旨在帮助读者理解同步操作的重要性以及选择合适的同步机制来确保多个协程之间的正确协调和数据共享的一致性。同步操作在并发编程中起着关键的作用,用于确保协程之间的正确协调和共享数据的一致性。在选择同步操作的实现方式时,我们有两个常见选项:使用sync.Cond和通道。使用sync.Cond和通道的方式提供了更高级、更灵活的同步机制。sync.Cond允许协程等待特定条件的出现,通过WaitSignal和。
2023-05-28 08:30:51
817
转载 Excel文件 利用MySQL/Python 实现自动处理数据的功能
在没有服务器,以excel存储数据的情况下,同样可以利用SQL和python来做数据处理和分析,在遇到excel处理数据特别麻烦的时候可以选择上面的方案做处理,即可以锻炼自己的SQL和python编程的能力,又可以高效地解决问题。
2023-02-21 20:15:45
1006
1
转载 MongoDB - 模式设计
同一个应用程序连接的数据库可以根据业务进行划分,也许可以将高价值的业务数据存储在 SSD 上,或者是使用 RAID10 进行存储,而低价值的数据可以存储在 RAID0 上。但是在更改时仅需修改一处地方,不需要担心破坏数据的完整性。同样的一致性问题在 MongoDB 拥有副本集时也会出现,副本节点的数据与主节点的数据总是会有时间差,高并发的请求同样存在读取到旧数据的风险。设计模式时最需要关注的就是数据库的读操作,在数据库运行过程中,应尽量减少查询的数量,这就需要在设计时确保一起查询的数据存储在同一个文档中。
2022-12-26 14:43:52
996
1
转载 玩转 Go 生态|Hertz WebSocket 扩展简析
WebSocket 是一种可以在单个 TCP 连接上进行全双工通信,位于 OSI 模型的应用层。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。提供了的支持,参考库使用hijack的方式在 Hertz 进行了适配,用法和参数基本保持一致。
2022-12-15 15:17:38
1743
1
转载 [Go疑难杂症]为什么nil不等于nil
接口类型变量跟普通变量是有差异的,非空接口类型变量对应的底层结构是iface,空接口类型类型变量对应的底层结构是eface。iface中有两个跟类型相关的字段,一个表示的是接口的类型inter,一个表示的是变量实际类型_type。只有当接口变量的itab._type与 data 都为nil时,也就是实际类型和值都未被赋值前,才真正等于nil。
2022-10-27 15:25:11
1177
1
转载 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段
适用范围:对表结构进行操作,比如create、drop、alter、rename、truncate等。
2022-10-11 10:03:15
1016
1
原创 go gorm select * 优化
很多时候sql查询都不允许select * 出现要求指定列名,如果你是用gormv2 ,恭喜你可以使用QueryFields属性,如果是gormv1版本怎么样,难道要升级gormV2吗,这里提供种反射的实现,可能不是最优解,但只是一个方案。首先mysq建一个表。
2022-09-17 14:00:34
2293
1
转载 .Net Core&RabbitMQ死信队列
第一个消息的过期时间很长,而后续的消息的过期时间很短,后续的消息过期后不会立马删除,而是要等到第一个消息过期删除后才会被删除,那么对应延迟队列来说会有点问题,时间超出了设定的延迟时间。,提供延迟队列类型交换机,其不会根据第一个消息是否过期来判断,解决了如上提到的第一个没有过期,后续消息过期的场景,不会受消息先后顺序的影响,而是关注过期时间,先过期的先发送。为每个消息设置过期时间可能不符合一些特定的场景,当需要设定特定队列中的消息都是指定的过期时间时,可以为队列中的消息统一设置过期时间。...
2022-08-30 12:29:55
1162
1
转载 c# 异步进阶————channel
该系列为异步编程的进阶篇,其实也不能这么讲。世界上本没有进阶篇,只能说是高级篇(高级篇不能说多高级,是对底层的封装的意思),只要是加深理解都是进阶。本章先介绍一下channel。
2022-08-30 11:13:42
2207
转载 go 操作 Excel
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要
2022-07-18 11:35:07
1922
1
转载 Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理
我们知道「主从复制是高可用的基石」,从库宕机依然可以将请求发送给主库或者其他从库,但是 Master 宕机,只能响应读操作,写请求无法再执行。所以主从复制架构面临一个严峻问题,主库挂了,无法执行「写操作」,无法自动选择一个 Slave 切换为 Master,也就是无法故障自动切换。深夜与女朋友么么哒……(此处省略 10000 字),突然宕机,总不能提起裤子从床上爬起来手工进行主从切换,再通知其他程序员把地址重新改成新主库上线。如此一折腾自己已被女友切换成前男友了,万万使不得。所以我们必须有一个高可用的方案,
2022-07-13 16:41:52
1220
转载 Redis 高可用篇:你管这叫主从架构数据同步原理?
高可用有两个含义:一是数据尽量不丢失,二是服务尽可能提供服务。 AOF 和 RDB 保证了数据持久化尽量不丢失,而主从复制就是增加副本,一份数据保存到多个实例上。即使有一个实例宕机,其他实例依然可以提供服务。本篇主要带大家全方位吃透 Redis 高可用技术解决方案之一主从复制架构。本篇硬核,建议收藏慢慢品味,我相信读者朋友会有一个质的提升。如有错误还望纠正,谢谢。关注「码哥字节」设置「星标」第一时间接收优质文章,谢谢读者的支持。核心知识点既然一台宕机了无法提供服务,那多台呢?是不是就可以解决了。Redis
2022-07-13 16:16:17
1394
转载 Redis 日志篇:无畏宕机快速恢复的杀手锏
在《Redis 核心篇:唯快不破的秘密》中,「码哥」揭秘了 Redis 五大数据类型底层的数据结构、IO 模型、线程模型、渐进式 rehash 掌握了 Redis 快的本质原因。接着,在《Redis 日志篇:无畏宕机与快速恢复的杀手锏》中揭晓了当 Redis 发生宕机可以通过重新读取 RDB 快照和执行 AOF 日志实现快速恢复的高可用手段。高可用有两个含义:一是数据尽量不丢失,二是服务尽可能提供服务。 AOF 和 RDB 保证了数据持久化尽量不丢失,而主从复制就是增加副本,一份数据保存到多个实例上。即使有
2022-07-13 16:07:20
1468
转载 Redis 核心篇:唯快不破的秘密
学习一个技术,通常只接触了零散的技术点,没有在脑海里建立一个完整的知识框架和架构体系,没有系统观。这样会很吃力,而且会出现一看好像自己会,过后就忘记,一脸懵逼。跟着「码哥字节」一起吃透 Redis,深层次的掌握 Redis 核心原理以及实战技巧。一起搭建一套完整的知识框架,学会全局观去整理整个知识体系。系统观其实是至关重要的,从某种程度上说,在解决问题时,拥有了系统观,就意味着你能有依据、有章法地定位和解决问题。全景图可以围绕两个维度展开,分别是:应用维度:缓存使用、集群运用、数据结构的巧妙使用系统维度:可
2022-07-13 16:04:05
1133
转载 Redis 内存优化神技,小内存保存大数据
我们应该从 Redis 是如何保存数据的原理展开,分析键值对的存储结构和原理。从而继续延展出每种数据类型底层的数据结构,针对不同场景使用更恰当的数据结构和编码实现更少的内存占用。为了保存数据, Redis 需要先申请内存,数据过期或者内存淘汰需要回收内存,从而拓展出内存碎片优化。最后,说下 key、value 使用规范和技巧、 Bitmap 等高阶数据类型,运用这些技巧巧妙解决有限内存去存储更多数据难题……这一套组合拳下来直接封神。具体详情,且看「码哥」一一道来。主要优化神技如下:在优化之前,我们先掌握 R
2022-07-13 12:13:54
1251
转载 Redis 实战篇:巧用数据类型实现亿级数据统计
在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时还要对集合中的数据进行统计排序。常见的场景如下:给一个 userId ,判断用户登陆状态;两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数;统计每天的新增与第二天的留存用户数;统计网站的对访客(Unique Visitor,UV)量最新评论列表根据播放量音乐榜单通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。所以,我们必须要选择能够非常高
2022-07-13 12:07:36
1921
GO GPRC Redis ANS DES AES
2020-12-30
thinkphp.zip
2020-10-10
ServiceA.zip
2019-08-28
MongoDB权威指南xxxx.zip
2019-07-06
jira_7.3.6破解
2019-04-22
jdk-6u43-windows-i586
2019-04-22
asp.net core signalr DEMO
2019-04-12
TeamViewer13.2.14327 -无限制更换ID版
2019-04-05
SQL Prompt v9.0.10.4053
2019-03-18
redis-desktop-manager-0.8.8.384
2019-03-13
json class generator
2018-12-12
beego demo
2018-11-28
pima-indians-diabetes.data
2018-11-04
iris data csv 222
2018-10-27
iris data csv
2018-10-27
Scrapy爬网存mysql
2018-10-22
react redux
2018-10-05
react redux 开发实例
2018-09-26
React_Redux_Flux_webpack_Babel
2018-09-25
MySQL技术内幕:InnoDB存储引擎(第2版)
2018-03-26
TCP+IP详解卷1 :协议(原书第2版)
2018-03-04
HTTP权威指南
2018-01-11
《亿级流量网站架构核心技术》PDF下载 高清完整版
2018-01-08
大规模分布式存储系统
2018-01-04
atlassian extras 3.2
2017-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人