Ivan

个人博客

[Chip] Novosense NSL21924 与 TI TPS929240-Q1 Pin2Pin 替代分析报告

Novosense NSL21924 与 TI TPS929240-Q1 Pin2Pin 替代分析报告 1. 产品定义和目标应用对比 特性 Novosense NSL21924 TI TPS929240-Q1 产品类型 24通道汽车高边LED驱动器 24通道汽车高边LED驱动器 核心功能 独立通道控制、诊断、热管理 独立通道控制、诊断、FlexWire接口 目标应用 汽车外部照明(尾灯、前照灯) 汽车外部照明+车内环境照明 通信接口 UART + 可选CAN物理层 FlexWire(UART变种) + 可选CAN物理层 温度等级 AEC-Q100 Grade 1 (-40°C至125°C) AEC-Q100 Grade 1 (-40°C至125°C) 关键差异化 外部热分流电阻设计 更高的PWM频率(20kHz vs 16kHz) 共同点:均为24通道汽车级LED驱动器,支持独立PWM调光......

[Java] CountDownLatch、CyclicBarrier、Semaphore

CountDownLatch 作用: 用于让一个或多个线程等待其他线程完成操作后再继续执行。 通过一个计数器(count)来实现,计数器的初始值由构造方法指定。 每当一个线程完成任务后调用 countDown(),计数器减 1,当计数器减为 0 时,所有等待的线程会被唤醒。 常见场景: 主线程等待多个子线程完成任务。 模拟并发测试,确保多个线程同时开始执行 import java.util.concurrent.CountDownLatch; public class CountDownLatchExample { public static void main(String[] args) throws InterruptedException { int threadCount = 3; CountDownLatch latch = new Co......

[MySQL] MySQL undolog、redolog、binglog

在 MySQL 中,undolog、redolog 和 binlog 是三种重要的日志类型,它们在数据一致性、事务管理和数据恢复中扮演着重要角色。以下是它们的作用以及写入和刷盘的时机: 1. Undo Log 作用: 回滚事务:当事务失败或显式回滚时,Undo Log 用于撤销已执行的更改,恢复到事务开始前的状态。 MVCC(多版本并发控制):在 InnoDB 中,Undo Log 还用于支持 MVCC,提供一致性读(快照读)。 写入时机: 在事务执行过程中,修改数据之前会生成对应的 Undo Log,并将其记录到内存中。 刷盘时机: Undo Log 通常存储在表空间中,随着事务提交或数据页刷盘时,Undo Log 也会被刷到磁盘。 2. Redo Log 作用: 崩溃恢复:Redo Log 用于记录数据的物理更改(如页的修改),即使数据库崩溃,也可以通过 Redo Log 恢复到最近一......

[Zookeeper] Zookeeper是怎么保证CP的

Zookeeper 是一个分布式协调服务,主要用于分布式系统中的数据管理和协调。它的设计目标是保证 CP(Consistency 和 Partition Tolerance),即在分布式系统中,Zookeeper 优先保证数据的一致性和分区容错性。以下是 Zookeeper 如何实现 CP 的关键机制: 一致性(Consistency) Zookeeper 保证了强一致性(Strong Consistency),即所有客户端在读取数据时,都会看到最新的写入结果。它通过以下机制实现一致性: 1.1 ZAB 协议 Zookeeper 使用了 ZAB(Zookeeper Atomic Broadcast)协议来实现分布式一致性。ZAB 是一种类似于 Paxos 的分布式共识协议,主要包括以下两个阶段: 领导选举(Leader Election): 在 Zookeeper 集群中,所有写操作都必须......

[Java] 单例模式实现

Java

在 Java 中,单例模式(Singleton Pattern)是一种常用的设计模式,用于确保一个类在整个应用程序中只有一个实例,并提供全局访问点。以下是几种常见的单例模式实现方式: 1. 饿汉式(线程安全,类加载时初始化) 饿汉式在类加载时就创建实例,线程安全,但可能会造成资源浪费(如果实例未被使用)。 public class Singleton { // 静态变量,类加载时初始化 private static final Singleton INSTANCE = new Singleton(); // 私有构造方法,防止外部实例化 private Singleton() {} // 提供全局访问点 public static Singleton getInstance() { return INSTANCE; }......

[Java] Java多线程打印ABC

并发

Java多线程打印ABC 使用synchronized public class AlternatePrintABC { private static final Object lock = new Object(); private static int state = 0; // 0: 打印A, 1: 打印B, 2: 打印C public static void main(String[] args) { Thread threadA = new Thread(() -> { for (int i = 0; i < 10; i++) { // 每个线程打印10次 synchronized (lock) { while (state != 0) { //......

[数据库] 缓存一致性方案总结

写在最前面 因为数据库与缓存是不同的组件,操作必须有先后顺序,无法像数据库的事务一样满足ACID的特性,所以就会出现数据在缓存中与在数据库中不一致的问题。 本文所探讨的场景均基于“先读取缓存,缓存读不到再读数据库,并更新缓存值”的Cache Aside Pattern 模式,该模式只适用于读多写少的场景 若对数据库和缓存的一致性要求极高,则不建议使用缓存! 此外,没有最完美的方案,只有最适合的方案! 并发问题,网络、机器抖动等因素不可控! 一、新增场景 不存在一致性问题。往数据库里插入一条新数据,这时候请求a过来,缓存里面没有任何数据副本,去数据库里读 二、删除场景 1.先删缓存再删数据库(不可行) 缺点: 1.并发问题。请求a先删了缓存,然后读请求b过来发现缓存中没有数据,去数据库中取数据,然后更新了缓存值,接着请求a删除了数据库,造成数据不一致 2.先删数据库再删缓存 缺点: 1.并发......

[深度学习] Voiceprint Recognition Project

声纹识别项目

完整项目地址:https://github.com/ivanwhaf/voiceprint Voiceprint recognition project Architecture .wav/.npy->cut->fbank->resnet->embeddings training:amsoft test/eval:cosine socre EER Usage 1.Train clean baseline python train.py 2.Inference score python inference.py 3.Retrain python train_sort.py Experiment Record resnet18 lr:0.005 bs:24 optim:sgd data:100utt/person aug:specaugment data:wav loss:am-softmax......