C# 使用 LibUsbDotNet 实现 USB 设备检测 (blog.yuanpei.me)

【简介】

基于某些不可抗因素上的考虑,博主需要在程序中集成某厂商的硬件。我猜测,人们觉得这件事情“简单”,或许是看到这个设备有一条 USB 连接线,因为在人们的固有印象中,只要把它接到电脑上就可以正常工作了。事实的确如此,因为你只要考虑串口(SerialPort)、USB 以及这两者间的相互转换即可。当然,这世上的事情圆满者少,遗憾者多,博主在使用过程中发现,厂商的提供的 SDK 存在 Bug,当设备从电脑上拔出后,其 SDK 的初始化函数依然正常返回了,这意味着我们无法在使用设备前“正确”地检测出硬件状态。考虑厂商愿不愿意修复这个 Bug 还是个未知数,博主不得不尝试另辟蹊径。

点击查看原文 >>

@技术头条 2023-10-24 23:39 / 原作者微博:@云来雁去 / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
Agent是如何工作的:概念及LangChain实现 (it.deepinmind.com)
LLM(大型语言模型)在自主Agent领域的应用受到了广泛关注。你可能已经在诸如Auto-GPT、BabyAGI等流行应用中了解过它们的用法,这些应用几乎每天都层出不穷。

理解这些应用的基本原理并不复杂,因为大多数工具的工作流程大致相同。
by @技术头条 2024-03-31 21:13 查看详情
异常检测是什么? (ixyzero.com)
简单整理一下在和AI对话时产生的一些对「异常检测」的理解,方便后面有需要的时候参考。

异常检测是识别与预期行为不同的事件或模式的过程(因此想要识别“异常”,就需要先明确“正常”是什么样的。一种逻辑是完全按照规范来,非白即黑,但在实际情况下这种的告警量太多导致基本不可用;另一种逻辑是按照统计指标进行从大到小排序,每次只处理当前的top5,要么正常要么异常,正常的话就去优化统计策略——加白,异常的话就加大统计指标权重,进一步发现更多异常。总之就是需要在准确率和召回率之间找到平衡)。

异常检测的准确性高度依赖于数据的质量,包括数据的完整性、一致性和准确性。

对于某些领域,需要深入了解数据的业务背景和特点,以便更好地识别异常。
by @技术头条 2024-03-31 21:10 查看详情
使用零一万物 200K 模型和 Dify 快速搭建模型应用 (soulteary.com)
本篇文章,我们聊聊如何使用 LLM IDE (Dify) 快速搭建一个模型应用,以及使用超长上下文的 200K 模型,完成懒人式的电子书翻译。
by @技术头条 2024-03-21 22:55 查看详情
重复视频检测的价值和常见方法 (ixyzero.com)
全网范围内的主要精品视频主要来自MCN机构,一些公司为了更快更好地去覆盖全网内容,会选择和内容代理合作,而代理手上会有很多重复版权的内容,导致重复内容出现。另外,搬运视频也会导致重复内容出现,这些重复内容会造成极差的用户体验。

再者,大量内容相似的视频对于短视频平台存储、网络带宽等资源也是一个极大的挑战,为了不必要的资源浪费,对视频内容进行去重是非常有必要的。
by @技术头条 2024-03-13 13:24 查看详情
为 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
by @技术头条 2024-03-12 22:45 查看详情
使用 llama.cpp 在本地部署 AI 大模型的一次尝试 (blog.yuanpei.me)
本文旨在尝试使用 llama.cpp 在本地部署 AI 大模型,随着人工智能的快速发展,我们逐渐认识到私有化部署的重要性和潜力。在此背景下,llama.cpp 作为一个纯 C/C++ 实现的 LLaMA 模型推理工具,提供了在本地环境下高性能的 AI 推理能力。在这篇文章中,我们可以了解到 llama.cpp 具有在 GPU 和 CPU 环境下运行的灵活性,满足私有化部署的需求。文章详细介绍了 llama.cpp 编译和部署的过程,为读者提供了一份在本地部署 AI 大模型的教程。私有化部署的 AI 大模型,相比于 ChatGPT 这类通用大模型,更注重数据隐私和安全性,对云服务的依赖更少,可以做到更好的本地化控制。虽然编译 llama.cpp 有一定的复杂性,AI 大模型的下载、转化、量化需要一定的耐心,可当本地的 AI 应用运行起来的那一刻,博主觉得这一切完全值得。
by @技术头条 2024-03-12 22:29 查看详情
解析Java动态代理机制的实现 (l1n.wang)
代理模式主要是Proxy对原始方法做了一层包装,用以增加一些新的统一处理逻辑,来增强目标对象的功能。静态代理是传统设计模式中一种传统的实现方案,动态代理能将代理对象的创建延迟到程序运行阶段。
by @技术头条 2024-01-17 23:16 查看详情
golang uretprobe的崩溃与模拟实现 (www.cnxct.com)
Go程序崩溃的核心原因为Go的栈在runtime管理时,被插入了异常的内存地址。Go中常见的堆栈变化为协程goroutine的创建与销毁。栈内 被插入异常内存地址是因为eBPF的实现机制是向函数的返回地址前,插入了断点指令(i386和x86_64是INT3)。 两个条件的叠加,就出现了这个错误。
by @技术头条 2024-01-17 23:12 查看详情
如何实现 GC 的高吞吐量? (www.diguage.com)
在本篇文章中,我们将探讨垃圾回收过程中的一个关键性能指标:"GC 吞吐量"。我们将了解它的含义、在 Java 应用程序中的重要性以及它对整体性能的影响。此外,我们还将深入探讨提高 GC 吞吐量的可行策略,为现代软件开发释放其优势。
by @技术头条 2024-01-13 23:50 查看详情
利用gorm自身提供的方法实现存在更新不存在则创建的能力 (wiki.eryajf.net)
MySQL 有一个语句是 UPSERT 的操作,它结合了 update 和 insert 两种操作的功能。当执行 upsert 操作时,如果指定的记录已经存在,则执行更新操作;如果指定的记录不存在,则执行插入操作。这种操作可以用来确保数据的一致性,并且可以减少对数据库的访问次数。
by @技术头条 2024-01-13 23:49 查看详情