Telegram需要旧手机验证/收不到验证码100%可用解决方法
参考文章 新版本 telegram 登录会有收不到短信验证码以及需要缴费的情况 之前可以使用 telegramX 进行登录,但是最新版本也不行 所以解决方法就是下载旧的 telegramX,登录后通过 QR code 登录 PC 的 telegram 就行了 这里主要记录可用的 telegramX 版本(v0.27.10.1752) 如果需要汉化,直接在你的设备上点开这串网址即可:https://t.me/setlanguage/zhcncc
嵌入式调测工具
Perf123456789101112131415161718192021tp_upgrade tftp 192.168.1.200 xdr3010mv6_cn_1_0_18_flash(231102)_perf.bintp_upgrade tftp 192.168.1.200 xdr3010mv6_cn_1_0_18_flash(231103)_origin_perf.bintp_upgrade firmware;cd /tmptftp -gr usr_ax3000.tar.gz 192.168.1.200tar -zxvf usr_ax3000.tar.gzvim /etc/profile# 添加下面两行export LD_LIBRARY_PATH=/tmp/usr/lib:$LD_LIBRARY_PATH export PATH=/tmp/usr/bin:$PATHperf record -C 1 -g -F 99 sleep 10perf record -a -g -F 99 sleep 10# 在tmp目录下得到 perf.data,用script工具进行解析perf ...
VirtualBox磁盘扩容
虚拟机磁盘空间不足,需要对磁盘进行扩容,这种时候有两种选择,第一种是挂载一个新的磁盘(win中在C盘基础上添加一个D盘),第二种是直接对原文件系统进行扩容(win中直接对C盘进行扩容) 挂载新磁盘VirtualBox 关闭虚拟机,在virtualbox管理器界面中右键虚拟机选择 设置——存储——SATA——添加虚拟硬盘——选择VDI——选择固定大小——选择文件位置和磁盘大小——选择新加的磁盘空间 Ubuntu 打开虚拟机,检查硬盘 1sudo fdisk -l 可以看到新的/dev/sdb,需要对这个磁盘进行分区 磁盘分区 1fdisk /dev/sdb 输入m进入帮助 输入n添加分区 输入p添加主分区 后续可以直接回车,使用默认值来创建分区数量等 输入w保存退出 检查分区是否创建成功 1sudo fdisk -l 格式化磁盘 1sudo mkfs.ext4 /dev/sdb1 会有 done 或者 完成 的输出提示 创建挂载点 1sudo mkdir <path> 挂载硬盘(/dev/sdb1 需要替换为自己的硬盘路径) 1sudo mount /d...
计算机网络基础
网络基础知识网络主要设备及作用 设备 作用 网卡 使计算机连网的设备 中继器(Repeater) 从物理层上延长网络的设备 网桥(Bridge)/2层交换机 从数据链路层上延长网络的设备 路由器(Router)/3层交换机 通过网络层转发分组数据的设备 4~7层交换机 处理传输层以上各层网络传输的设备 网关(gateway) 转换协议的设备 传输速率与吞吐量 两个设备之间数据流动的物理速度称为传输速率(每秒比特数 bps),传输速率高不是指单位数据流动的速度有多快,而是指单位时间内传输的数据量有多少(各传输媒介中信号的流动速度时恒定的)。 主机之间实际的传输速率被称为吞吐量(每秒比特数 bps),吞吐量不仅衡量带宽,同时也衡量主机的CPU处理能力、网络的拥堵程度、报文中数据字段的占有份额(不含报文首部,只计算数据字段本身)等信息。 中继器 中继器是对减弱的信号进行放大和发送的设备,由电缆传过来的电信号或光信号经由中继器的波形调整和放大再传给另一个电缆; 中继器通过物理层的连接延长网络; 即使在数据链路层出现某些错误,中继器仍然转发数据; 中继...
802.11无线网络
802.11 PHY协议基础通信系统模型 信源:产生需要传递给信宿的比特信息。 调制器:将比特信息通过一系列调制方法“放置在”电磁波上,生成调制信号。 信道:调制信号从发送端传递给接收端经过的传输媒介。 解调器:从调制信号中 “提取出”比特信息,是调制器的逆过程。 信宿:接收比特信息。 通信质量指标 有效性:传输效率,可用通信速率来评估。 可靠性:传输质量,可用误符号率来评估。 安全性:通信安全,涉及加密解密技术。 注:有效性和可靠性不可兼得,需要两者权衡 涉及参数 频率:通信载波频率。目前WiFi使用的频率段包括2.4G、5G和6G。 带宽:信号占用频带宽度。带宽越大,速率越高。 功率:发射信号强度。提高功率可提高传输质量,但会加强对其他通信链路的干扰。 速率:每秒传输的比特数量。一般以Mbps/Gbps为单位。 天线数量:可使用多跟天线进行信号发射和接收,一般接收天线数量要大于有效发射天线数量。 802.11协议协议发展 频段信道2.4G:2.4GHz-2.483GHz共83MHz的频段划分成13个信道,每个信道带宽22MHz。 5G:国内使用三个频段,...
GDB简介
简介GDB,又称 GNU 调试器,是用来帮助调试我们程序的工具。 GDB有如下两种使用方式 调试会崩溃、有逻辑错误的程序; 调试程序崩溃时自动生成的 core dump; GDB 可以干以下几件事: 给程序设置(特定条件下的)断点,包括某块内存的内容改变时触发断点,如果某个变量不知被哪段代码意外篡改了,可以使用 GDB 打数据断点抓到肇事者。 当程序停在断点处时,我们查看所有变量、寄存器的值 当程序停在断点处时,我们除了能查看所有变量的值以外,还能在不改变源代码的情况下改变这些值 安装1sudo apt-get install gdb 编译被测程序被测程序需修改 Makefile,将 CFLAGS 添加 -O0 -g 重新编译并且保证不去符号。如果不加 -g ,gdb 加载后将提示 No symbol table is loaded。缺少调试信息,调试起来会比较麻烦。 如果不使用 -O0 而是-O1、 -O2、-O3,代码优化后,给调试带来难度。 make 编译时,后面需要加 STRIP=/bin/true,当然如果 Makefile 里没有调用 strip 去符号...
makefile基础介绍
简介Makefile 是一个文本文件,描述了一个或者多个目标-依赖关系以及目标对应的生成/更新(后续统一称为更新)规则。 Makefile 由 make 命令一键解析并处理。 通过 Makefile+make 的支持,我们可以以层级的方式组织项目的成百上千个代码文件,并达到增量编译的目的、以减少编译时间。 本文的阅读方式本文只列出了我们工作中常用的 Makefile 语法,还有一些高级语法及特性没有没有讲解。 本文出现的示例代码中: $为命令行提示符,意为等待用户输入 #开头的为注释,也是 Makefile中 的注释符号 部分示例可以直接保存到文件中运行,行首的的空格需要改为 Tab,否则编译会提示 missing separator. Stop. Makefile 基本组成Makefile 由以下的基本结构外加其他一些特性(如变量定义、文件包含等)组成: 12target(s) : prerequisite(s) command(s) 我们通过以下一个简单的Makefile来讲解这个基本的结构: Makefile 1234567891011121314main: m...
GCC
简介Linux 下最常用的 C 编译器是 GCC,大多数发行版本都默认安装了 GCC。我们可以用以下 GCC 命令,把 test.c 编译成可执行文件 test:gcc -g test.c -o test。 如果大家习惯了 Visual Studio 等集成开发环境的话,会觉得上述的命令很费解。但掌握 GCC 等工具的用法,是一个程序员所必备的技能。 回到上面的 GCC 命令,它的作用是编译源文件 test.c 并生成可执行文件。其中 -o 表示生成的可执行文件名为 test,-g 表明要在可执行文件中添加调试信息。如果要使用 GDB 单步调试程序,必须使用 -g 参数。 可以看到,GCC 的行为是通过命令行参数进行指定的。所以,要掌握 GCC,重点在于熟悉 GCC 的各种参数上。但 GCC 的参数实在太多了,所以更普遍的做法是掌握其常用参数,并在遇到不认识的参数时多查资料进行学习。 GCC 的常用参数-c 作用:只对源文件进行编译操作。 例子: gcc -c test.c 说明:这将生成目标文件(object file)test.o。 -E 作用:只对源文件进行预处理操作。 例...
GDB调试原理
前言这篇文章来聊聊大名鼎鼎的 GDB,它的豪门背景咱就不提了,和它的兄弟 GCC 一样是含着金钥匙出生的,在 GNU 的家族中的地位不可撼动。 我们都知道,在使用 GCC 编译时,可以使用 -g 选项在可执行文件中嵌入更多的调试信息,那么具体嵌入了哪些调试信息?这些调试信息是如何与二进制的指令之间进行相互交互?在调试的时候,调试信息中是如何获取函数调用栈中的上下文信息? GDB调试模型GDB 调试包括 2 个程序:gdb 程序和被调试程序。根据这 2 个程序是否运行在同一台电脑中,可以把 GDB 的调试模型分为 2 种: 本地调试 远程调试 本地调试:调试程序和被调试程序运行在同一台电脑中。 远程调试:调试程序运行在一台电脑中,被调试程序运行在另一台电脑中。 关于可视化调试程序并不是重点,它只是一个用来封装 GDB 的外壳而已。我们既可以用黑乎乎的终端窗口来手动输入调试命令;也可以选择集成开发环境(IDE),这个 IDE 中已经嵌入了器调试,这样就可以使用各种 button 来代替手动输入调试命令了。 与本地调试相比,远程调试中多了一个 GdbServer 程序,它和目...
编译链接原理
1. 前言学过 C 语言同学,第一个接触的例子应该就是著名的 “hello world” 程序,即便时隔多年,也能行云流水般敲出以下代码: 1234567#include <stdio.h>int main (void){ printf ("hello world!\n"); return 0;} 然后使用 GCC 一气呵成地编译链接出可执行文件,并运行: 123$ gcc main.c -o test$ ./test hello world! 看着屏幕输出我们想要的显示,开始难免会有一丝兴奋,原来这么简单就可以控制屏幕输出。但事实上真的有这么简单吗?#include 是做什么用的,gcc 在背后帮我们做了什么事情,./test 开始运行时背后又有什么故事。这就是本文的重点:编译、链接、装载。 实际上,一个 c 文件到最后运行,一般会经历以下过程,背后的故事,很长: 2. 预处理预处理是将头文件进行展开,并进行相关的宏替换和处理,删除注释等,最后生成 .i 文件,使用命令 gcc -E hello.c -o ...

