Dockerfile 简介 Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。通过定义一系列命令和参数,指导 Docker 构建一个自定义的镜像 文件编写 FROM 目标镜像是基于哪个镜像的,如 ubuntu:20.04 ENV 设置环境变量,如 ENV DEBIAN_FRONTEND=noninteractive,设置非交互式的Debian前端,这样在安装软件包时不会提示用户输入 RUN 你想让运行什么命令(在命令前面加上RUN即可),如 apt-get update 将会更新镜像的软件包列表 ...
终端美化-zsh sudo apt-get install zsh 使用 chsh -s /bin/zsh 命令将 zsh 设置为系统默认 shell。 安装 oh-my-zsh 使用 curl 下载脚本并安装: sh -c "$(curl -fsSL https://gitee.com/shmhlsy/oh-my-zsh-install.sh/raw/master/install.sh)" 然后按照提示配置 配置主题 安装主题和插件 git clone --depth=1 https://githu...
理论题 1. 紧耦合方案和松耦合方案的区别 紧耦合方案(Tightly Coupled) 紧耦合方案是指将多个传感器的数据在同一个融合框架中进行联合处理和状态估计。所有传感器的数据共同参与到一个状态估计过程中,有以下特点: 联合处理:所有传感器的数据被同时考虑,进行联合估计。 高精度:能够充分利用各个传感器的数据,提高系统的精度和鲁棒性。 复杂性:计算复杂度较高,需要较强的计算资源和实时性保障。 示例:VINS-Mono、OKVIS等视觉惯性导航系统。 优点**: 精度高:通过联...
总的来说,卡尔曼滤波器是一个状态估计器,它利用 传感器融合 、 信息融合 来提高系统的精度。通常,我们要观测一个系统的状态,有两种手段。一种是通过系统的 状态转移方程, 并结合上一时刻的状态推得下一时刻的状态。一种是借助 辅助系统(量测系统) 的测量得到系统状态。这两种方式都有各自的不确定性,卡尔曼滤波可以将这两者做到最优结合(加权平均),使得我们估计的状态的不确定性小于其中任何一种。所以权重的选择至关重要,它意味着我们更信任哪一种方式得出的状态(当然是更加信任 不确定性较小 的状态)。 建模 比如,我们观测一辆小车的 速度 和 **位...
1. 什么是 Docker Docker 是一个开源的应用容器引擎,而一个容器其实是一个虚拟化的独立的环境,让开发者可以打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器不是模拟一个完整的操作系统,而是对进程进行隔离。 对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。 容器在进程级别上运行,本质上是一个进程,由Docker-server管理 1.1 基本组成 镜像 (Image):Docker 镜像可以看作是创建容器的模板。例如,可以通过 Tomc...
写在前面 最近把自己的 Hexo+Next 博客迁移到了 Mx-Space,在这里记录一下迁移的完整过程,以下是开始前的必要准备。 一台服务器,这里我使用的是Azure的虚拟机,配置为1核1G。 一个域名,使用的是腾讯云的域名活动价2.9年/元。 我的部署方式为后端docker + 前端vercel,使用Cloudflare进行域名解析。 [!NOTE] 如果VPS内存不足2G,建议设置不少于4G的swap分区。 否则服务器可能会卡死,这里我参考的是[这篇文章](https://blog....
1. hook概述 1.1 什么是hook hook实际上就是对系统调用API进行一次封装,将其封装成一个与原始的系统调用API同名的接口,应用在调用这个接口时,会先执行封装中的操作,再执行原始的系统调用API。hook技术可以使应用程序在执行系统调用之前进行一些隐藏的操作,比如可以对系统提供malloc()和free()进行hook,在真正进行内存分配和释放之前,统计内存的引用计数,以排查内存泄露问题。 还可以用C++的子类重载来理解hook。在C++中,子类在重载父类的同名方法时,一种常见的实现方式是子类先完成自己的操作,...
1 定时器概述 本项⽬的定时器是为了实现协程调度器对定时任务的调度,服务器上经常要处理定时事件,⽐如3秒后关闭⼀个连 接,或是定期检测⼀个客户端的连接状态,定时器也是后⾯hook模块的基础。 定时事件依赖于Linux提供的定时机制,它是驱动定时事件的原动⼒,⽬前Linux提供了以下几种可供程序利⽤的定时机制: alarm()或setitimer(),这俩的本质都是先设置⼀个超时时间,然后等SIGALARM信号触发,通过捕获信号来判断超时 套接字超时选项,对应SO_RECVTIMEO和SO_SNDTIMEO,通过errno来判断超时 3....
1 I/O协程调度概述 I/O事件调度功能对服务器开发⾄关重要,因为服务器通常需要处理⼤量来⾃客户端的socket fd,使⽤I/O事件调度可以将开发者从判断socket fd是否可读或可写的⼯作中解放出来,使得程序员只需要关⼼socket fd的I/O操作,实现I/O协程调度意义重⼤。 I/O协程调度可以看成是增强版的协程调度。在前⾯的协程调度模块中,调度器对协程的调度是⽆条件执⾏的,在调度器已经启动调度的情况下,任务⼀旦添加成功,就会排队等待调度器执⾏。调度器不⽀持删除调度任务,并且调度器在正常退出之前⼀定会执⾏完全部的调度任务,所以在某种程度上...
协程调度是协程库的核心功能之一,用于协程的调度和切换。实现了一个N-M的协程调度器,N个线程运行M个协程,协程可以在线程之间进行切换,也可以绑定到指定线程运行。实现协程调度之后,可以解决前一章协程模块中子协程不能运行另一个子协程的缺陷,子协程可以通过向调度器添加调度任务的方式来运行另一个子协程。 协程调度最难理解的地方是当caller线程也参与调度时调度协程和主线程切换的情况。 1 协程调度概述 什么是协程调度?一言以蔽之,当有很多协程时,如何把这些协程都消耗掉,就是协程调度。在前面的协程模块中,对于每个协程,都需要手动调用协程的resume方法将协程运行起来,然后...