Ivan

个人博客

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

写在最前面 因为数据库与缓存是不同的组件,操作必须有先后顺序,无法像数据库的事务一样满足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

[Docker]CentOS7安装Docker及使用

安装 安装yum-utils yum install -y yum-utils device-mapper-persistent-data lvm2 配置源 $ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装docker $ yum install docker-ce docker-ce-cli containerd.io 查看版本 $ docker version 使用 启动 $ systemctl start docker 停止 $ systemctl stop docker 重启 $ systemctl restart docker 查看状态 $ systemctl status docker 查看镜像 $ docker images 搜索

[Github]Github ssh配置

流程 本地生成rsa key: ssh-keygen -t rsa -C "xxx@xxx.com" -t 密钥类型 默认rsa-C 注释文字-f 文件存储名 Github Settings添加ssh key,复制本地~/.ssh/id_ras.pub 测试:ssh -T git@github.com 绑定远程库并上传:git remote add origin git@github.com:xxx/xxx.git...git push -u origin master

[机器学习]信息量、熵、交叉熵、KL散度,互信息

信息量I(x)=−logp(x) I(x) = - \log p(x)I(x)=−logp(x) 事件发生概率越低,信息量越大 熵H(X)=−∑p(x)logp(x) H(X)=-\sum p(x) \log p(x)H(X)=−∑p(x)logp(x) 熵是在结果出来之前对可能产生的信息量求期望-考虑该随机变量的所有可能取值描述随机变量不确定程度,熵越大,信息量越大 交叉熵H(p∣q)=−∑p(x)logq(x) H(p|q)=-\sum p(x) \log q(x)H(p∣q)=−∑p(x)logq(x) p为gt,q为预测分布 KL散度(相对熵)DKL(p∣∣q)=∑p(x)logp(x)q(x) D_{KL}(p||q)= \sum p(x) \log \frac {p(x)}{q(x)} D​KL​​(p∣∣q)=∑p(x)log​q(x)​​p(x)​​ Kl散

[MySQL]MySQL备份与还原

备份单数据库mysqldump -u root -p dbname table1 table2 > backup.sql tabel1 table2 缺省则为备份整个数据库 多数据库mysqldump -u root -p --databases dbname1 dbname2 > backup.sql全部数据库mysqldump -u root -p -all-databases > backup.sql还原mysql -u root -p dbname < backup.sql 当出现ERROR at line : Unknown command ‘\’’错误,是由字符集编码导致的,加上–default-character-set=utf8参数: mysql -u root -p --default-character-set=utf8 dbname < backup.sql

[JavaScript]Editor.md 图片复制粘贴拖拽js插件

IntroductionEditor.md富文本编辑器没有自带复制粘贴图片的功能,自己手写了个,支持复制粘贴、拖拽的方式插入编辑器中;并自动上传图片至博客后台的图床,省去了手动上传的麻烦。代码如下: function initPasteDragImg(Editor){ var doc = document.getElementById(Editor.id) doc.addEventListener('paste', function (event) { var items = (event.clipboardData || window.clipboardData).items; var file = null; if (items && items.length) { // 搜索剪切板items

[C++]OpenGL Demo

opengl, glut

opengl-icgThis repo is an opengl demo of Intelligent Computer Graphics course.This scene contains five objects and corresponding operations, including scaling, rotating, and moving.项目地址:https://github.com/ivanwhaf/opengl-icg Usage run OpenGLDemo.exe directlysee readme.txt for more operation details
C++

[机器学习]自动驾驶AI小车

基于遗传算法优化神经网络

genetic-carSelf-learning car using genetic algorithm项目完整地址:genetic-car UsagePlease run manual version, do not run auto version, it has not been implemented! 1. Run program$ python genetic_car_manual.py 2. Select elites manuallyAfter each round, just click the blue cars who have Best performance, and their colors wouldturn to red, then press Space key to enter next loop 3. Repeat until cars can fin

[深度学习]Yolov1-pytorch

yolov1-pytorchThis repo is a pytorch implementation of yolov1.项目完整链接:yolov1-pytorch Deep Learning based yolov1 object detector, using Pytorch deep learning frameworkThis project can be also transplanted to other edge platforms like Raspberry PiPaper: https://arxiv.org/pdf/1506.02640.pdf DemoRun in command linedetect.py runs inference on a variety of sources, cd your project path and type: $ pytho