×
提示:
×
提示:
请:
谢谢!
Toggle navigation
技术头条
最新
读点非技术
我也分享
赞过
我的
IT技术博客大学习
微博登录
1
为 log 实现的无锁 Ringbuffer
(blog.codingnow.com)
【简介】
这两天在改 log 模块。我们需要一个并发写 log 的模块,它有多个 log 生产者一个消费者,这个唯一的消费者在 log 线程中把 log 数据持久化。
大多数 log 生产者是在第三方库的 callback 函数中调用的,比如 bgfx ,如果写 log 不够快的话,就会阻塞渲染。这个 callback 需要自己保证线程安全。因为 bgfx 支持多线程渲染,所以写 log 的 callback 可能在不同的线程触发。
过去在实现 bgfx 的 luabinding 时,我实现了一个简单的 mpsc 队列,get_log 这个函数就是那个单一消费者,它取出队列中所有的 log 信息,返回到 lua 虚拟机中。
它是用 spin_lock 实现的。这两天,我想应该可以实现一个更通用的无锁版本。
在我的需求中,log 信息是允许丢掉的。所以我开了一个固定大小的 ri
点击查看原文 >>
由
@技术头条
2024-03-12 22:45 / 原作者微博:
@简悦云风
/ 0个评论
赞过的人:
@IT技术博客大学习
要不要再学学下面的文章?
1
Android|使用阿里云推流 SDK 实现双路推流不同画面
(mazhuang.org)
想知道如何在 Android 中通过阿里云 SDK 实现双路推流不同画面?本文介绍了一个巧妙的解决方案,虽然阿里云 SDK 不支持原生多路推流,但通过跨进程调用,实现了同时推送不同区域的画面,适用于直播和录播场景的分离展示。开发者不容错过的实战分享,赶快阅读!
by
@技术头条
2024-09-08 23:26
查看详情
1
让AI 实现一个红黑树
(colobu.com)
文章探讨了使用AI帮助实现红黑树数据结构的过程。作者尝试使用多种AI工具模拟专家(如Rob Pike)实现红黑树,并进行了代码优化、单元测试和Fuzz测试。过程中发现AI生成的代码存在问题,但通过不断调整和AI协作,最终实现了功能完善的红黑树实现。文章强调AI在代码生成、测试和优化方面的潜力与不足。
by
@技术头条
2024-08-06 07:52
查看详情
1
如何用简单的Web方法实现图片的马赛克效果
(www.zhangxinxu.com)
文章介绍了如何通过简单的Web技术实现图片的马赛克效果。作者主要讨论了使用SVG滤镜来实现此效果,尤其是通过使用像<feFlood>、<feComposite>和<feMorphology>等SVG元素。此外,文章还探讨了通过CSS属性image-rendering: pixelated来模拟马赛克效果的方法,即通过放大小图片来达到效果。文中提供了详细的示例和代码片段来帮助实现这些效果。
by
@技术头条
2024-08-06 07:48
查看详情
1
Agent是如何工作的:概念及LangChain实现
(it.deepinmind.com)
LLM(大型语言模型)在自主Agent领域的应用受到了广泛关注。你可能已经在诸如Auto-GPT、BabyAGI等流行应用中了解过它们的用法,这些应用几乎每天都层出不穷。
理解这些应用的基本原理并不复杂,因为大多数工具的工作流程大致相同。
by
@技术头条
2024-03-31 21:13
查看详情
0
解析Java动态代理机制的实现
(l1n.wang)
代理模式主要是Proxy对原始方法做了一层包装,用以增加一些新的统一处理逻辑,来增强目标对象的功能。静态代理是传统设计模式中一种传统的实现方案,动态代理能将代理对象的创建延迟到程序运行阶段。
by
@技术头条
2024-01-17 23:16
查看详情
0
golang uretprobe的崩溃与模拟实现
(www.cnxct.com)
Go程序崩溃的核心原因为Go的栈在runtime管理时,被插入了异常的内存地址。Go中常见的堆栈变化为协程goroutine的创建与销毁。栈内 被插入异常内存地址是因为eBPF的实现机制是向函数的返回地址前,插入了断点指令(i386和x86_64是INT3)。 两个条件的叠加,就出现了这个错误。
by
@技术头条
2024-01-17 23:12
查看详情
0
如何实现 GC 的高吞吐量?
(www.diguage.com)
在本篇文章中,我们将探讨垃圾回收过程中的一个关键性能指标:"GC 吞吐量"。我们将了解它的含义、在 Java 应用程序中的重要性以及它对整体性能的影响。此外,我们还将深入探讨提高 GC 吞吐量的可行策略,为现代软件开发释放其优势。
by
@技术头条
2024-01-13 23:50
查看详情
0
利用gorm自身提供的方法实现存在更新不存在则创建的能力
(wiki.eryajf.net)
MySQL 有一个语句是 UPSERT 的操作,它结合了 update 和 insert 两种操作的功能。当执行 upsert 操作时,如果指定的记录已经存在,则执行更新操作;如果指定的记录不存在,则执行插入操作。这种操作可以用来确保数据的一致性,并且可以减少对数据库的访问次数。
by
@技术头条
2024-01-13 23:49
查看详情
0
用 rspamd 来实现反垃圾邮件
(blog.delphij.net)
在过去二十年中的大部分时间,我采用的是 amavisd-new,与直接使用 SpamAssassin 相比,它还增加了病毒扫描等一系列功能和 milter接口,这让它与 MTA 更容易集成。
最近我发现 FreeBSD.org 把反垃圾系统替换成了 rspamd,所以在11月初把我的邮件系统也换成了 rspamd,经过两个月的使用,总体的感觉是「我tm早干嘛去了」。
by
@技术头条
2024-01-13 23:34
查看详情
1
从零实现 AES 加密算法
(sxyz.blog)
这篇文章介绍从零实现一个简单的 AES-128-ECB,其中 128 指采用 128 位密钥块,ECB 指采用 Electronic codebook 分组模式,并为长度不足 128 位的数据块填充 0x00。
本文代码部分选择使用 Python,因为其语法简单而强大,我想把更多时间、精力花在加解密流程上,而非语法细节上。本文所有代码仅供学习研究之用,不要用在生产环境!生产环境请使用流行、成熟的专用密码库,否则可能导致潜在的 Side-channel attack 和其它安全问题。
by
@技术头条
2023-12-11 23:21
查看详情
使用微博登录,分享你的文章到本站
评论:
提交评论
近一周被赞排行
分享文章被赞得多,您就会出现在上面。还能给您微博带来新粉丝哦!