一、ASCII码计算机如何表达字符众所周知,计算机只能处理二进制整数,字符要怎么办呢?
于是就有了 ASCII 码表,它规定,每个英文字符(包括大小写字母、数字、特殊符号)都对应着一个整数。在计算机里只要存储这个的整数,就能代表这个字符了。
例如 32 代表空格,48 代表 ‘0’,65 代表 ‘A’,97 代表 ‘a’……
32~126 这些整数就用于是表示这些**可显示字符(printable character)**的。
除了可显示字符(printable character)外,ASCII 还规定了一类特殊的控制字符(control character):
0 表示空字符(‘\0’)
9 表示 Tab 制表符(‘\t’)
10 表示换行(‘\n’)
13 表示回车(‘\r’)
27 表示 ESC 键(‘\x1b’)
127 表示 DEL 键(‘\x7f’)等
0~31 和 127 这些整数,就构成了 ASCII 码中控制字符的部分。
关于控制字符的冷知识在 Linux 命令行中启动 cat。
试试按 Ctrl+R,Ctrl+E,Ctrl+C 等一系列组合键, ...
现代CMake指的是 CMake 3.x
古代CMake指的是 CMake 2.x
现代CMake比古代CMake使用更加方便,功能更加强大
命令行小技巧传统构建方式对比:1234567891011# 古代 CMakemkdir -p build # 创建build目录cd build # 切换到build目录cmake .. # 在build目录运行cmake <源码目录>生成Makefilemake -j4 # 执行本地的构建系统 make 真正开始构建(4进程并行)make install # 让本地构建系统执行安装步骤# 现代 CMakecmake -B build # 在源码目录直接使用-B选项创建build目录并生成build/Makefilecmake --build build --parallel 4 或 cmake --build build -j4 # 自动调用本地构建系统在build里构建,即:make -C build -j4cmake --build build --target install # 调用本地构建系统执行install目 ...
01–库感智能初创公司,BOSS上直接和感知算法总监打招呼,约了第二天下午面试。
原本准备了几个问题,但是都没用到,一开始问的就比较深,说是想拷打我一下。
面试官直接要求讲自己的项目,第一个讲完开始拷打:
重新讨论了一下单目摄像头定位、测距是怎样实现的,比赛项目比较脱离实际,重新描述了一次。已知了障碍物大小,标定了相机内参
问了一些计算机视觉方面的问题,都回答的不好。
相机内参矩阵每个参数代表什么
相机外参,回答描述的是相机的位姿信息,引出了后面的坐标系转换
真实世界的一个点,怎样变换到图像画面中的(当时没有理解在问什么,回忆应该是想问这个问题。。)
坐标系转换,一个点,左乘变换矩阵和右乘有什么区别。又是盲区,没回答上来。面试官解释:左乘变换矩阵表示对固定坐标系的变换,右乘变换矩阵表示对变化坐标的操作,不是很理解。
关于docker,detached和tached启动的区别,没有回答上来,解释说detached模式下启动的容器重启后会保持运行状态
问怎样实现导航的,又重新解释了一遍:已知背景地图,先确定了障碍物位置,实时定位又靠障碍物和里程计的参考。
接着讲第二个机器狗项目,还 ...
前言shell(壳)、Terminal(终端),许多刚开始接触计算机的朋友可能跟以前的我一样并不清楚这两个概念,因为它们总是同时出现。配置开发环境或者学习Linux的过程中我们难免接触,所以我觉得有必要跟大家讨论一下它们的关系。
shell是什么shell翻译过来是“壳”,十分形象,shell就是包裹在操作系统内核上的一层外壳。shell接收用户输入的命令,并将其转换为操作系统可以理解的指令,然后执行这些指令。这里我们借助shell提供的cat指令来理解一下shell的作用。
熟悉Linux的朋友会知道,cat命令可以输出一个文件的内容到终端。这里我提前准备了一个hello.cpp文件,打开一个终端,执行下面的命令:
1cat hello.cpp
shell会解析我们命令行里的内容并执行,可以看到,文件里的内容成功输出到了我们的终端里。接下来我们思考一下,假如没有这个命令,我们想要达到同样的目的需要怎样的步骤,由于本人对windows内核并不熟悉,这里我会在Linux环境下进行演示,原理是相通的,不会影响我们理解。
123456789101112131415161718192021 ...
代理上网原理工作原理:首先,简单科普一下上网的原理。一般情况下,我们访问网页时,只需要在浏览器中输入网址,就可以直接访问到目标内容。
某些资源可能因为地域限制、网络防火墙等原因无法直接访问。这时,我们就需要借助代理服务器。代理服务器充当了中间人的角色,帮助我们访问被限制的资源。整个过程变成如下图所示:
我们俗称的代理上网实际上指的就是第二种过程。
代理软件:为了实现代理上网,通常需要使用代理软件,它们能够帮助我们设置代理服务器并进行连接。常见的代理软件包括:
v2rayN :基于 V2Ray 协议的 Windows 客户端。
Clash-verge-rev :基于 Clash 的客户端,支持windows、Linux,并且默认有中文,比较推荐。
Clash_for_Windows :Clash 的 Windows 客户端,同时也支持Linux、Android
这些软件通过经典的“枪弹分离”工作方式,即软件本身不直接提供代理服务,而是通过特定的配置文件与代理节点配合使用。配置文件中的重要部分就是机场信息。
机场:机场是指一些提供翻墙服务的代理节点或代理服务商,通常这些服务商会提供 ...
前言:写这篇文章的想法源于某次课堂,老师多次将VC++6.0、CodeBlocks这些上古神器称为编译器,虽然知道它们区别的同学知道这只是老师的个人习惯,但我觉得课堂上还是应该严谨,特别是对刚接触计算机学科的同学们来说。
直接说结论:
编辑器:用来编辑文本文件的工具。比如windows下的记事本、Notepad++,Linux下的Vi、Vim、gedit,当然还有Vscode这种跨平台的软件。
编译器:按一定的规则将文本格式的源代码翻译成可执行程序的工具。例如编译c\c++的GCC、G++、MSVC、Clang等
IDE(集成开发环境):将上面的编译器、编辑器集成到一个软件中,再拓展更多便于开发人员使用的工具。
编译过程注意这里我们只讨论c\c++这类编译型语言。
我们都知道一段程序从源码到可执行程序需要经过预处理、编译、汇编、链接这几步操作,下面是我在windows环境下使用MinGW-w64编译器(不懂的朋友先不用管它是什么,马上会解释)分步执行了这个过程:
编辑(Editing): 你首先使用文本编辑器(如Notepad++、Visual Studio Code、或者专门的 ...
前言 我们在配置各种开发环境的时候,常常会包含一个步骤:配置环境变量。
那么什么是环境变量,这个步骤是为了做什么,接下来我会抛掉官方解释,逐步带大家测试。(windows环境下)
终端中执行的命令是什么 我们经常会在电脑终端(cmd或者powershell)中输入==ipconfig==命令来查看电脑的网络配置,如图:
为什么输入ipconfig命令就会输出这些信息,这里先跟大家介绍一个新命令==get-Command==,这个命令的作用是获取其他命令的信息,这里我们目的是为了获取它的路径。(熟悉linux的朋友会不会想到where、which命令)
我们在终端输入:
1get-Command ipconfig
哦豁,看见Source条目没,首先它就是一个exe可执行程序!!其实想来也是,大一的计算机概论课就告诉我们计算机上执行的就是一堆二进制文件。
有兴趣的朋友可以进到这个目录双击执行下这个文件,运气好就能看到输出信息。(但是八成会一闪而过,需要修改终端的终止行为才能卡住看到信息 ...