zookeeper使用过程中出现的问题 Ubuntu 缺少相应的包 libzookeeper-mt-dev,安装完成即可。sudo apt-get install libzookeeper-mt-dev
muduo安装和使用中遇到的问题及解决 2、“muduo/net/TcpServer.h: 没有那个文件或目录”而这个目录的位置在 path/to/build/release-install-cpp11/include/mudo 下 ; 所以将muduo目录链接到 /usr/include 下;另外还需要将静态库文件 path/to/build/release-install-cpp11/lib/.a* 链接到 /usr/lib/ 。参考链接...
VMware的磁盘格式化 在OS的文件系统中,需要预先将磁盘格式化为FAT32,从而进行相应的底层操作。然而对于VMware玩家而言,无法像操作物理硬盘一样直接进行格式化分区,因此需要间接进行相关的方法。一、准备工作一个虚拟机中的操作系统,本文选用了ubuntu。虚拟机中磁盘格式化工具,本文选用了gparted。实现OS和磁盘操作OS的磁盘共享操作,参考链接。由于实现OS的硬盘操作命令是基于IDE接口,因此磁盘类型和VMware配置文件也要相应的改成IDE,注意两个虚拟机的节点要设置为一致,配置文件修改的部分也需要一致。
Legacy改UFEI的内核修改 一、内核头程序head.S田宇老师的《一个UEFI引导程序的实现》一文提出:“由于数据段描述符在GDT表中的位置无法确定,从而就无法直接通过段选择子对段寄存器进行赋值。不过,好在栈段寄存器SS指向的段是可读写的,那么将此段作为数据段是可行的。”基于此关键修改部分如下:#include "linkage.h".section .textENTRY(_start) mov %ss, %ax mov %ax, %ds mov %ax, %
U盘UEFI引导OS内核的小白教程 本文参考田宇老师的《一个UEFI引导程序的实现》一文,使用U盘进行UEFI的内核引导,在VMware虚拟机上运行内核。一、工具DiskGenius磁盘格式化工具。TianoCore EDK2开发环境(编译UEFI程序),本文直接使用了编译后的BootLoader.efi文件。资料链接,主要使用了引导文件Bootloader.efi和kernel文件夹编译后的内核文件kernel.bin。二、准备工作首先使用磁盘管理软件DiskGenius清空U盘扇区里的所有数据,然后选择磁盘->转换
STM32F7 can只能发送不能接收 昨天将师弟的电机底层can驱动代码移植到项目中,发现原本已经调好的can底层代码出现了bug:can只能发不能收了orz。。。此处省略一万字。。。通过二分查找法,最终定位到出现bug的神秘代码如下:#define ENABLE 0x11 #define DISABLE 0x12 直接find in files,好家伙,直接与f7的hal库函数一枚举变量重名typedef enum { DISABLE = 0, ENABLE = !DISABLE} Function
OS 13号#GP异常 运行任务切换的时候,发现如下错误,发现出现了#GP13号异常,段选择子是0,对应了将NULL(0)段选择子载入CS/SS导致#GP异常的原因:根据RIP的值以及反汇编文件发现出现异常的调用函数为__switch_to的最后一句。(省去一些中间程序。。)查看gdt表(物理地址0x10a240处),发现第39位置1,这一位应该是段基地址(16-39位为段基地址),此处发生了异常:默认的gdt表初始化如下:可以看到kernel code和data两者的第39位是都有区别的。..
编译内核时出现对undefined reference to‘XXXX’ 在Makefile出错文件的gcc那一行加上-fno-stack-protector选项,如:gcc -mcmodel=large -fno-builtin -fno-stack-protector -m64 -c printk.c
计算机的几种地址 一、物理地址真实存在硬件上的,通过处理器的引脚直接或间接的和外部设备相连。分为IO地址和内存地址二、虚拟地址相对于物理地址的抽象地址。1、逻辑地址段和偏移的组合。格式为Segment:Offset。偏移为称为有效地址,程序中的变量地址即为有效地址。2、线性地址由逻辑地址组合而成:Segment<<4+Offset。...
socket api阻塞情况分析 connect:激发三次握手,仅在连接成功或出错时才返回。有四种结果。没收到响应会触发超时错误;收到RST触发硬错误;路由不可达错误;成功。listen:把一个未连接的套接字转换成一个被动套接字,指示内核应接受指向该套接字的连接请求。不存在阻塞。accept:由tcp服务器调用,用于从已完成连接队列头返回下一个已完成队列。如果已完成队列为空,进程被投入睡眠。(默认阻塞,可以强行设置为阻塞)close:把改套接字标记成已关闭,然后立即返回到调用进程,立即返回表明是非阻塞的。这里只是把相应描述符的引用计.
一些代码模板 快排很简单,partion把小于数组第一个元素放在左边,大于的放在右边。再通过递归对左右两边的元素做调整,即nlog(n).#include <iostream>#include <map>#include <vector>using namespace std;int Partition(vector<int> &nums, int begin, int end) { if (begin >= end ||
OJ中不给定输入数量的处理方式 1、计算一系列数的和输入数据有多组, 每行表示一组输入数据。每行不定有n个整数,空格隔开。(1 <= n <= 100)。示例:1 2 34 50 0 0 0 0代码:int main(){ string line; while (getline(cin, line)) { stringstream ss(line); int sum = 0, num = 0; while (ss >> num)