内存重叠问题
今天开发中偶遇一个问题,程序乱崩溃,偶尔崩在new对象里,偶尔崩在对象释放里,甚至访问局部int变量也崩过,gdb显示不出更多有用信息,最后才定位到内存重叠问题 原始代码比较复杂,简化后就是下面的模型 12char arr[9];memcpy(&arr[0], &arr[3], sizeof(char)*6); 本意是节省点内存,直接用arr指向的内存,显然这里拷贝时存在重叠部分。阅读文档才知道原来memcpy不支持内存重叠的拷贝,之前还不知道。(搜索关键词 memcpy overlap) memcpy 内存重叠会引发未定义问题,这也就是程序乱崩的原因 解决方案是换成memmove即可,或者新申请块内存,拷贝至新内存再拷回去
bitbucket多账户git解决方案
生成多个公私密钥对12ssh-keygen -t rsa -f id_rsa_localssh-keygen -t rsa -f id_rsa_company 公钥填入对应账户https://bitbucket.org/account/settings/ssh-keys/ add key 修改hostC:\Windows\System32\drivers\etc\hosts追加 1company bitbucket.org 域名和私钥映射C:\Users\<你的用户名>\.ssh追加 123456789Host bitbucket.org HostName bitbucket.org PreferredAuthentications publickey IdentityFile C:\Users\<你的用户名>\.ssh\id_rsa_local Host company HostName bitbucket.org PreferredAuthentications publickey IdentityFile...
prometheus + Grafana监控ShellCrash流量
记录使用项目 clash-exporter 搭建ShellCrash流量监控平台的流程,部署时博主的shellcrash使用的clash meta核v1.18.5 安装clash-exporter项目release中下载对应平台版本的可执行文件,解压至/opt/clash_exporter 123cd /opt/clash_exporterchmod 777 clash-exporter./clash-exporter #试运行 报错failed to dial: failed to WebSocket dial: expected handshake response status code 101 but got 404 原因是监听默认127.0.0.1:9090地址,但是ShellCrash运行端口为9999 1234vim /etc/profileexport CLASH_HOST="127.0.0.1:9999" # /etc/profile结尾追加source...
windows下编译libopus
前言libopus是xiph开发的opus音频编解码库,记录一下在windows平台使用MinGW编译libopus以及官方编解码demo的过程(为什么不用MSVC,因为MSVC就是屎,装个VS占掉十几G磁盘,各个版本VS兼容性也做得一坨,不得不装好几个版本的VS🤬,最逆天的是VS历史版本你在官网还下载不到) 配置w64devkit环境经测试opus1.5.2版本只有w64devkit里编译通过了,在git bash、MSYS2中均编译不过,报错如下 1234567891011F:\learn\opus\silk\x86\NSQ_del_dec_avx2.c:959:43: error: incompatible type for argument 1 of '_mm256_cvtepi16_epi64' __m256i x = _mm256_cvtepi16_epi64(_mm_loadu_si64(&x16[i])); ...
无线网卡搭建AP
无线网卡分配IP1ip addr add 10.5.5.1/24 dev wlan0 (不一定wlan0,看你的无线网卡名称) 开启NAT和路由转发wlan0是无线网卡,eth0是连接外网的有线网卡 12345sysctl -w net.ipv4.ip_forward=1iptables -A FORWARD -i wlan0 -o eth0 -s 10.5.5.0/24 -m state --state NEW -j ACCEPTiptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE hostapd建立热点1apt install hostapd 1vim /etc/hostapd/hostapd.conf 12345678driver=nl80211ssid=37lab...
CMake学习笔记
设置cmake最低版本1cmake_minimum_required(VERSION 3.0) 设置项目名称1project(rtpsender) 设置源码路径12file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) # 搜索文件,绝对路径include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) # 头目录 设置库目录1link_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib) # 库目录 设置输出目录12set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) # 库输出路径set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) #...
VSCode配置ssh免密登录
1apt install openssh-server 1cat id_rsa.pub >> ./.ssh/authorized_keys 1service sshd restart 1234Host WSL-Debian HostName 172.30.16.2 User root IdentityFile E:\project\study\vscodelinux\.ssh\id_rsa
rtp协议头解析
RTP是一种端对端的应用层传输协议,通常基于UDP,常被用来传输流媒体。不保证传输或防止乱序传输,不假定下层网络是否可靠,是否按顺序传送数据包。 RTP Header1234567891011120 1 2 30 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P|X| CC |M| PT | sequence number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| timestamp ...
OS,启动!
计算机加电自检当你按下计算机的开机键时,cpu的RESET针脚将会接收到一个高电平的复位信号,cpu开始工作… 众所周知,cpu的主要功能就是取指执行,但是此时内存空间内并没有操作系统的数据,这时就该BIOS出面了。BIOS存储介质为ROM,只读存储器,掉电并不会丢失数据,BIOS入口地址为0xFFFF0~0xFFFFF仅16字节,而复位信号恰好会将cs:ip重置为0xFFFF:0x0,待执行的命令为jmp f000:e05b,即跳转到BIOS检测各个硬件是否正常工作指令地址。 加载硬盘引导BIOS检测硬件都通过之后,将会尝试读取硬盘的0道0扇区(bootloader),将该扇区共计512字节复制到内存0x7c00起始位置(为什么是0x7c00,这个地址最初是IBM的工程师定下的,恐怕也只有IBM知道原因),并检测最后两个字节是否为0x55AA,如果是,则认为是有效的主引导扇区。如果主引导扇区有效,则执行转移指令jmp...
hexo butterfly主题优化
生成站点地图123npm install hexo-generator-sitemap --savenpm install hexo-generator-baidu-sitemap --save 统计字数1npm install hexo-wordcount --save 加密文章1234npm install hexo-blog-encryptnpm uninstall hexo-generator-indexnpm install hexo-generator-indexed 修改_config.yml配置文件 wordcount enable字段为true 1234567# wordcount (字數統計)# see https://butterfly.js.org/posts/ceeb73f/#字數統計wordcount: enable: true post_wordcount: true min2read: true total_wordcount:...