汇编学习1
环境搭建链接:https://pan.baidu.com/s/1LHbEvY6aZ8pG8IbVDyvAsg?pwd=fduy提取码:fduy 将压缩包中的MASM复制到D盘根目录,然后默认安装dosbox(注意不要修改安装路径) 打开安装好的dosbox 1mount c d:masm 即将d:masm挂载至c盘 1c: 进入c盘 1dir 查看当前路径下文件 1debug 进入debug汇编环境 1r 查看寄存器值 12r ax1234 修改寄存器ax的值 1d 1000:0 查看1000:0内存中的数据 1d 0000:0000 f 查看0000:0000内存中的f个数据 1e 0000:0000 12 15 34 44 修改0000:0000内存中的数据为12 15 34 44 1234a 073f:0100add bx,axmov cx,ax 修改CS:IP指向的指令 1t 执行CS:IP处的一条指令 1u...
ffmpeg SDK学习(3)
ffmpeg编码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146#include <libavcodec/avcodec.h>#include <libavformat/avformat.h>#include <libavutil/opt.h>static int ptsIndex = 0;void encode(AVCodecContext...
逆波兰表达式
逆波兰表达式又称作后缀表达式,是一种便于计算机运算的数学表达式,我们日常使用的中缀表达式需要用括号确定优先级,而后缀表达式是不需要括号的 中缀表达式转后缀表达式手写实现转换比如想把(3+5)*4+6/(8-5)转为后缀表达式 为所有运算符加括号 (3+5)*4+6/(8-5)—–>(((3+5)*4)+(6/(8-5))) 将运算符移至")"之后 (((3+5)*4)+(6/(8-5)))—–>(((35)+4)*(6(85)-)/)+ 去除所有括号 ...
博客部署
初始化博客1hexo init 安装butterfly主题12git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterflynpm install hexo-renderer-pug hexo-renderer-stylus --save 配置_config.yml12345deploy: type: git repo: https://github.com/xxx/xxx.github.io.git branch: main token: ghxxxxxxxxxxxxxxxxxxxxxxxxxii 安装部署工具1npm install hexo-deployer-git --save 本地测试1hexo s 部署至git page1hexo d 升级主题在主题文件夹下执行 1git pull 升级Hexo12345678910111213141516171819# 使用淘宝源的 cnpm 替换 npm(如果直接用 npm...
TCP分包与粘包
现象 分包 发送端发送一条报文“helloworld”,接收端收到两条报文“hello”、“world” 粘包 发送端发送两条报文,分别为“hello”、“world”,接收端收到一条报文“helloworld” 出现原因 发送数据大于TCP发送缓冲区剩余空间大小、发送数据大于MSS(最大报文长度),TCP将在传输前进行分包 发送数据小于TCP发送缓冲区剩余空间大小、接收端没有及时读取数据,将会发生粘包 解决方法 自定义报文格式,给报文加包头数据,存放完整报文长度信息 数据包使用flag标志位设置分隔 基于TCP的数据封装过程 层级 协议 数据 客户端 数据 应用层 HTTP HTTP头 + 数据 传输层 TCP TCP头 + HTTP头 + 数据 网络层 IP IP头 + TCP头 + HTTP头 + 数据 网络接口层 以太网 包含MAC的以太网头 + IP头 + TCP头 + HTTP头 + 数据 + FCS帧校验序列 以太网packet(1522字节) = 以太网头(22字节) + IP头(最少20字节)+...
Linux防火墙
RedHat系 查看防火墙状态 1firewall-cmd --status 查看防火墙已开通端口 1firewall-cmd --list-port 开启防火墙 1systemctl start firewalld.service 关闭防火墙 1systemctl stop firewalld.service 重启防火墙 1systemctl restart firewalld.service 开启某个端口,比如我开启的是8381 1firewall-cmd --zone=public --add-port=8381/tcp --permanent 禁止外部某个端口比如80 1firewall-cmd --zone=public --remove-port=80/tcp --permanent Debian系 查看端口开启状态 1sudo ufw status 开启防火墙 1sudo ufw enable 关闭防火墙 1sudo ufw disable 重启防火墙 1sudo ufw reload 开启某个端口,比如我开启的是8381 ...
Linux 网络编程
socket概念运行在计算机中的两个程序通过socket建立起一个管道,数据在管道中传输,socket把复杂的TCP/IP协议族隐藏了起来,对程序员来说,只要用好socket相关函数,就可以完成网络通信。 socket分类socket提供了流(stream)和数据报(datagram)两种通信机制,即流socket和数据报socket 流socket基于TCP协议,传输数据不会丢失、重复、顺序错乱,可靠且双向 数据报socket基于UDP协议,不需要建立和维持链接,可能会丢失和错乱。效率高 相关的结构 socket函数 1int socket(int domain, int type, int protocol); 参数: domain: 协议族。常用的协议族有AF_INET、AF_INET6、AF_LOCAL、AF_ROUTE。在通信中必须采用对应的协议族,AF_INET决定要用ipv4地址(32bit)与端口号(16bit)的组合。 type:...
Linux环境变量详解
环境变量的含义程序(操作系统命令和应用程序)的执行都需要运行环境,这个环境是由多个环境变量组成的 环境变量分类环境变量的分类 按生效的范围分类 系统环境变量:公共的,对全部用户生效 用户环境变量:用户私有的、自定义的个性化设置,只对该用户生效 按生存周期分类 永久环境变量:在环境变量脚本中配置,用户每次登录时会自动执行这些脚本,相当于永久生效 临时环境变量:使用时在shell中临时定义,退出shell后失效 Linux环境变量Linux环境变量也成为Shell环境变量,习惯上使用大写字母,例如PATH、HOSTNAME、LANG 常用的环境变量查看环境变量1env 使用env命令展示当前用户全部的环境变量 1echo $PATH 使用echo $变量名 展示指定环境变量 常用的环境变量 PATH 可执行程序的搜索目录,可执行程序包括系统命令和用户的应用程序 LD_LIBRARY_PATH C/C++语言动态链接库的搜索目录,需要C/C++程序员手动设置 设置环境变量临时环境变量1export...
解决Dell台式机无法识别CTIA麦克风
工作的机子是Dell OptiPlex5060,前后面板分别有个3.5mm耳机孔,插上线控耳机只能听声音,无法使用麦克风。工作有时还会开在线视频会议,无法发言难受的一批,查了各种资料,网上这种问题提出者很多,但是真正能解决问题的很少,于是整理记录此文,说不定自己还会遇到,就不用再查一遍资料了,如果能给后人提供帮助,也是很荣幸的 首先去设备管理器,音频输入和输出下,插入耳机看到的设备为Realtek(R) Audio 然后去dell官网支持https://www.dell.com/support/home/zh-cn,识别产品或搜索支持,输入自己的型号(如果不行就输入OptiPlex 7090,驱动比较新),选择驱动程序和下载,手动查找适合 OptiPlex 5060 的特定驱动程序,搜索audio 先安装搜索到的Waves MaxxAudio Pro 应用程序,再安装Realtek 高保真声卡驱动程序,然后会被要求重启电脑 重启后设备管理器里Realtek(R) Audio已经变成了Speakers/Headphones (Realtek(R)...
内网穿透方案
前言简单介绍一下NAT技术,NAT全称Network Address Translation,网络地址转换,简单来说就是把内网ip转为公网ip。由于ipv4地址逐渐枯竭,ip变的十分宝贵,出现了NAT这种技术,它可以让多个设备通过NAT路由器使用同一个公网ip访问互联网,而路由器之下的这些设备之间使用内网ip进行区分。这项技术很大程度的延缓了ipv4不够用的窘境,弊端则是很难从公网去访问内网资源。目前家用宽带很少能够分到公网ip了,基本上是多户共用一个公网ip,对于有从公网访问内网的需求(比如访问家里的摄像头,nas,服务器)的人来说,那就只有做一下内网穿透了。 目前有很多成熟的内网穿透方案,比如花生壳,frp等等。花生壳付费,frp虽然免费开源,但还是需要购买一台具有公网ip的服务器作为中转服务器,一年的费用也不低,像我这种白嫖怪花钱是不可能花钱的,于是把目光定在了zerotier和cloudflare提供的tunnel上 zerotier 注册账号 https://www.zerotier.com/ ,注册完成后登录后台点击Create A...