-
RNNOISE模型训练
#RNNOISE模型训练##环境```sudoaptinstallvimparallelsudoaptinstallbuild-essentialsudoaptinstallpython3python3-pipsudoaptinstallffmpeglibtoolautoconfvim~/.pip/pip.conf---[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simple---pip3installtqdmtorchnumpy```##数据```#提取ffmpeg.exe-i.\source.wav-ar48000-ac1-fs16le-c:apcm_s16lenoise.pcmffmpeg.exe-i.\source.ts-vn-ar48000-ac1-fs16le-c:apcm_s16lenoise.pcm#去掉超过0.4秒的静音ffmpeg-ar48000-ac1-fs16le-inoise.1.pcm-afsilenceremove=stop_periods=-1:stop_duration=0.4:stop_threshold=-60d...
rnnoise -
C++字面量前后缀
```#自动推导usingnamespacestd::string_literals;autoa="1234"s;#自动推导usingnamespacestd::string_view_literals;autoa="1234"sv;#多行文本R"(acgistacgist)"#u8、u、U、Lchar8_t、char16_t、char32_t、wchar_t```
C++ -
frp配置
#frps```#本地监听bindAddr="0.0.0.0"bindPort=7000vhostHTTPPort=7080vhostHTTPSPort=7443#TLStransport.tls.certFile="/data/project/frp_0.58.1_linux_amd64/certs/server.crt"transport.tls.keyFile="/data/project/frp_0.58.1_linux_amd64/certs/server.key"transport.tls.trustedCaFile="/data/project/frp_0.58.1_linux_amd64/certs/ca.crt"#监控页面webServer.addr="0.0.0.0"webServer.port=7500webServer.user="admin"webServer.password="admin"webServer.tls.certFile="/data/project/frp_0.58.1_linux_amd64/certs/server.crt"webServer.tls.keyFi...
frp -
openssl命令生成证书
#CA脚本```opensslgenrsa-outca.key2048opensslreq-new-x509-keyca.key-days3650-outca.crt-subj"/C=cn/ST=gd/L=gz/O=acgist/OU=acgist/CN=acgist"```#证书脚本```bashmkdir-p/tmp/servercd/tmp/serverecho"keyUsage=nonRepudiation,digitalSignature,keyEnciphermentextendedKeyUsage=serverAuth,clientAuthsubjectAltName=@SubjectAlternativeName[SubjectAlternativeName]IP.1=127.0.0.1IP.2=192.168.8.188DNS.1=*.acgist.com">server.extopensslgenrsa-outserver.key2048opensslreq-new-keyserver.key-outserver.csr-subj"/C=cn/ST=gd/L=gz/O=acgist/...
openssl -
JNI内存释放
不要手动释放:jint、jlong、jchar需要手动释放:jstring、jobject、jobjectArray、jintArray、jclass、jmethodID```FindClassDeleteLocalRefNewStringDeleteLocalRefNewStringUTFDeleteLocalRefNewObjectDeleteLocalRefNewXXXXArrayDeleteLocalRefGetObjectFieldDeleteLocalRefGetObjectClassDeleteLocalRefGetObjectArrayElementDeleteLocalRefGetStringCharsReleaseStringCharsGetStringUTFCharsReleaseStringUTFCharsGetXXXXArrayElementsReleaseXXXXArrayElements``````#入参jstringjProducerIdconstchar*producerId=env->GetStringUTFChars(jProducerId,nullptr);......
JNI -
GraalVM加速启动
```https://github.com/graalvm/graalvm-ce-builds/releases?page=5./bin/guinstallnative-image./bin/guinstall-Lnative-image-installable-svm-java11-linux-amd64-20.2.0.jar./bin/native-image-Dspring.profiles.active=dev-jar./application-1.0.0.jarmvnspring-boot:build-imagemvnnative:compile```参考文章:*https://docs.oracle.com/zh-cn/learn/graalvm-native-image-quick-start/index.html*https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html
GraalVM native-image -
修复分区
```#格式查看parted-ldf-Th#卸载umount/data#修复分区fsck/dev/mapper/centos-homefsck.ext4/dev/mapper/centos-homexfs_repair-L/dev/mapper/centos-home#重新挂载mount/dev/mapper/centos-home/data``````ls:无法访问/data:输入/输出错误mount:将/dev/mapper/centos-home挂载到/data失败:结构需要清理```
df xfs_repair fsck.ext4 -
git submodule
##添加```gitsubmoduleadd```##同步```gitsubmoduleupdate--init--recursive```##删除```#删除配置.gitmodulesgitconfig-f.gitmodules--remove-sectionsubmodule.#删除配置.git/configgitconfig--remove-sectionsubmodule.#删除目录rm-rf.git/modules/#删除模块gitrm--cached```
git submodule -
使用Tomcat部署多个SpringBoot项目减小内存
将多个`SpringBoot`部署到一个`Tomcat`项目中,单个进程减小内存占用。*将所有依赖直接复制到`Tomcat`的`lib`中配置如下:```devtruedev192.168.8.83:8848nacosnacosjar-Xms1024m-Xmx2048m-XX:SurvivorRatio=2org.apache.maven.pluginsmaven-assembly-plugin${pemc.path}/docs/assembly/package.xmlorg.springframework.bootspring-boot-maven-plugin-Dfile.encoding=UTF-8jarjar192.168.8.83:8848nacosnacosjar-Xms1024m-Xmx2048m-XX:SurvivorRatio=2org.apache.maven.pluginsmaven-assembly-plugin${pemc.path}/docs/assembly/package.xmlorg.springframework.bootspring-boot-maven-plugin-D...
Tomcat SpringBoot -
人工智能
#人工智能整理一些人工智能相关知识##分类*人工智能(AI)*机器学习(ML)*神经网络(NN)*深度学习(DL)##应用*传统任务:回归、分类、聚类*深度学习:机器视觉、自然语言####机器视觉图像分类、物体检测、图像分割等等####自然语言语音识别、机器翻译、自动摘要、观点提取、文本分类、问题回答等等##回归算法####线性回归算法(LinearRegression)####多项式回归算法(PolynomialRegression)##分类算法####邻近算法(KNN)####支持向量机(SVM)####隐马尔可夫模型(HMM)####随机森林算法(RandomForest)####逻辑回归算法(LogisticRegression)####Softmax逻辑回归算法(SoftmaxRegression)##聚类算法####K均值聚类算法(K-Means)####基于密度的聚类算法(DBSCAN)##神经网络算法&深度学习算法&生成网络算法####人工神经网络(ANN)####卷积神经网络(CNN)机器视觉######视觉几何组(VGG)######残差神经网络(ResNet)####循环...
AI ML DL CNN RNN GAN LLM Diffusion Transformer -
C++学习
1.Win32和Linux宏中`##`定义区别```name宏变量#Win32name##Ptr##name##Ptr->##name##Ptr##name##()#Linuxname##Ptrthis->name##Ptrname()```
C++ -
Mediasoup错误
最近使用`mediasoup-client`总是遇到一个奇怪的问题`Failedtoexecute'setRemoteDescription'on'RTCPeerConnection':Failedtosetremoteoffersdp:Failedtoaddremotestreamssrc:176080746to{mid:66,media_type:video}`,这个错误非常随机,研究了很久,最后发现是自己一开始的自以为是导致的。最开始开发的时候,看到官方`demo`里面服务端的消费者需要等待客户端的消费者准备就绪以后再恢复,但是我发现直接恢复也可以,这就是导致这个BUG的原因,必须等待客户端消费者就绪以后才能恢复服务端的消费者,具体原因参考:[https://mediasoup.discourse.group/t/failed-to-add-remote-stream-ssrc-to-mid-media-type-video/5225](https://mediasoup.discourse.group/t/failed-to-add-remote-stream-ssrc-to-mid-media-ty...
mediasoup WebRTC -
WebRTC热点连接协商问题
最近做了一个项目,多个摄像头连接平板共享的热点使用`WebRTC`进行通话,这个在连接外部`WIFI`时没有问题,但是使用平板热点媒体协商只能得到`TCP`的协商,没有`UDP`的协商。后来发现需要在创建`PeerConnectionFactory`时添加如下配置:```finalPeerConnectionFactory.Optionsoptions=newPeerConnectionFactory.Options();options.networkIgnoreMask=16;options.disableEncryption=false;options.disableNetworkMonitor=true;```
WebRTC -
SocketIO多线程卡死问题
最近公司需要用mediasoup实现一套媒体服务,本着快速开发所以服务端我还是使用了NodeJS开发,所以选择SocketIO作为信令通道。但是接入安卓的时候出现一个奇怪的问题就是socket.emit使用ack回调的时候,使用future总是get那里卡死了。后来看了Java实现的SocketIO的EventThread的代码实现发现里面用的是一个单线程的线程池。这样就有个问题,就是如果我的ack回调如果调用一个方法这个方法里面也有一个ack回调,就会导致后面的ack等待前一个ack回调结束,get等到就会直接阻塞整个过程。```publicstaticvoidnextTick(finalRunnabletask){ExecutorServiceexecutor;synchronized(EventThread.class){counter++;if(service==null){service=Executors.newSingleThreadExecutor(THREAD_FACTORY);}executor=service;}executor.execute(newRunnable(){@Overri...
SocketIO -
Linux写入U盘文件丢失问题
用代码向U盘写入文件,明明提示文件写入完成,流也关闭了,但是直接拔出U盘的时候文件还是没有数据。后来发现执行`umount`命令数据时存在的,所以估计是数据还在系统缓存里面没有刷出,所以使用`sync`命令刷出缓存就好了。
Linux U盘 -
Input buffer exhausted before END element found
安卓使用`MediaMuxer`录制的视频网页播放不了,但是播放器可以播放,并且`ffmpeg`提示`InputbufferexhaustedbeforeENDelementfound`。研究了一段时间发现,原来是录制开始写入数据`writeSampleData`后还在调用`addTrack`的原因,需要所有`track`添加完成才能调用`writeSampleData`写数据。
Android MediaMuxer -
Windows Terminal
最近找一个代替`MobaXterm`的工具,所以使用`WindowsTerminal`。```wingetinstalloh-my-poshoh-my-poshfontinstalloh-my-poshinitpwsh--config"$env:POSH_THEMES_PATH\cinnamon.omp.json"|Invoke-Expression```
Windows Terminal -
Windows C++
环境:```vsvscodevcpkgMSVCMinGWMSYS2CMakeCygwin```我的环境:vscode+vcpkg+cmake+msvc##MSYS2使用安装完成执行两次`pacman-Syu`和`pacman-Smingw-w64-x86_64-toolchain````pacman-S#安装软件pacman-U#安装本地包pacman-Syu#同步Msys2源并更新pacman-Sy#仅同步源pacman-Su#更新系统pacman-Sy#同步源后再安装软件pacman-R#该命令将只删除包不包含该包的依赖pacman-Rs#在删除包的同时也将删除其依赖pacman-Rd#在删除包时不检查依赖pacman-Ss#这将搜索含关键字的包pacman-Qi#查看有关包的信息```##vcpkg使用```vcpkgsearch[pat]搜索可安装的包vcpkginstall...安装包vcpkgremove...卸载包vcpkgremove--outdated卸载所有过期包vcpkglist列出已安装的包vcpkgupdate显示用于更新的包列表vcpkgupgrade重新生成所有过期包vcpkgh...
Windows Eclipse C++ vcpkg MinGW MSYS2 CMake Cygwin -
MinGW版本含义
```x86_64-posix-sjljx86_64-posix-sehx86_64-win32-sjljx86_64-win32-sehi686-posix-sjlji686-posix-dwarfi686-win32-sjlji686-win32-dwarf```*SEH:调用系统机制处理异常,支持32、64位系统,GCC不支持(即将支持)*SJLJ:跨平台,支持32、64位系统,运行速度稍慢,GCC不支持。*DWARF:一种带调试信息DWARF-2(DW2)EH的包,所以比一般的包尺寸大,仅支持32位系统。*x86_64:简称X64,64位操作系统。*i686:32位操作系统(i386的子集),差不多奔腾2之后的CPU都是可以用的。*posix:启用了C++11多线程特性*win32:未启用
MinGW -
Nginx文件上传Tomcat需要文件传完才能收到问题
最近在做文件断点上传,发现每次都是文件上传完了之后才能收到文件流,改了很多种方法,最后发现原来是`Nginx`的问题。需要关闭配置:`proxy_request_buffering`,同样还有一个配置`proxy_buffering`功能相反。推荐一篇Nginx文章:[https://blog.csdn.net/u013905744/article/details/110915561](https://blog.csdn.net/u013905744/article/details/110915561)
Nginx Tomcat SpringBoot