自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 c++11无法在Ubuntu上构建protobuf 2.4.1

protobuf编译

2022-10-23 11:49:02 424

原创 评估方法及性能

34评估方法留出法交叉验证法自助法性能度量错误率及精度查准率(precision)、查全率(recall)与F1ROC

2022-03-13 10:32:34 393

原创 zookeeper使用过程中出现的问题

Ubuntu 缺少相应的包 libzookeeper-mt-dev,安装完成即可。sudo apt-get install libzookeeper-mt-dev

2021-03-06 14:11:46 1062

原创 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/ 。参考链接...

2021-03-06 11:00:00 803

原创 VMware的磁盘格式化

在OS的文件系统中,需要预先将磁盘格式化为FAT32,从而进行相应的底层操作。然而对于VMware玩家而言,无法像操作物理硬盘一样直接进行格式化分区,因此需要间接进行相关的方法。一、准备工作一个虚拟机中的操作系统,本文选用了ubuntu。虚拟机中磁盘格式化工具,本文选用了gparted。实现OS和磁盘操作OS的磁盘共享操作,参考链接。由于实现OS的硬盘操作命令是基于IDE接口,因此磁盘类型和VMware配置文件也要相应的改成IDE,注意两个虚拟机的节点要设置为一致,配置文件修改的部分也需要一致。

2021-02-09 11:27:16 6819

原创 Legacy改UFEI的内核修改

一、内核头程序head.S田宇老师的《一个UEFI引导程序的实现》一文提出:“由于数据段描述符在GDT表中的位置无法确定,从而就无法直接通过段选择子对段寄存器进行赋值。不过,好在栈段寄存器SS指向的段是可读写的,那么将此段作为数据段是可行的。”基于此关键修改部分如下:#include "linkage.h".section .textENTRY(_start) mov %ss, %ax mov %ax, %ds mov %ax, %

2021-02-02 16:20:25 286 1

原创 U盘UEFI引导OS内核的小白教程

本文参考田宇老师的《一个UEFI引导程序的实现》一文,使用U盘进行UEFI的内核引导,在VMware虚拟机上运行内核。一、工具DiskGenius磁盘格式化工具。TianoCore EDK2开发环境(编译UEFI程序),本文直接使用了编译后的BootLoader.efi文件。资料链接,主要使用了引导文件Bootloader.efi和kernel文件夹编译后的内核文件kernel.bin。二、准备工作首先使用磁盘管理软件DiskGenius清空U盘扇区里的所有数据,然后选择磁盘->转换

2021-01-31 10:59:59 3071 3

原创 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

2020-12-26 09:28:51 1561 2

原创 OS 13号#GP异常

运行任务切换的时候,发现如下错误,发现出现了#GP13号异常,段选择子是0,对应了将NULL(0)段选择子载入CS/SS导致#GP异常的原因:根据RIP的值以及反汇编文件发现出现异常的调用函数为__switch_to的最后一句。(省去一些中间程序。。)查看gdt表(物理地址0x10a240处),发现第39位置1,这一位应该是段基地址(16-39位为段基地址),此处发生了异常:默认的gdt表初始化如下:可以看到kernel code和data两者的第39位是都有区别的。..

2020-12-15 21:53:55 1172 1

原创 SYSFUNC_DEF

占个坑

2020-12-12 11:06:07 221

原创 编译内核时出现对undefined reference to‘XXXX’

在Makefile出错文件的gcc那一行加上-fno-stack-protector选项,如:gcc -mcmodel=large -fno-builtin -fno-stack-protector -m64 -c printk.c

2020-12-11 22:25:01 1055

原创 IA-32e的地址转换过程

和保护模式相比最大的区别是段基地址强行置零,段地址成为了平坦地址空间。

2020-12-11 11:04:43 184

原创 保护模式的地址转换过程

2020-12-11 09:42:55 131

原创 计算机的几种地址

一、物理地址真实存在硬件上的,通过处理器的引脚直接或间接的和外部设备相连。分为IO地址和内存地址二、虚拟地址相对于物理地址的抽象地址。1、逻辑地址段和偏移的组合。格式为Segment:Offset。偏移为称为有效地址,程序中的变量地址即为有效地址。2、线性地址由逻辑地址组合而成:Segment<<4+Offset。...

2020-12-10 21:22:32 3401

原创 底层知识点

汇编语言格式分为intel和AT&T两种,格式略有不同。objump -b可以将目标程序反汇编成汇编语言。指令后加l表示32位,加q表示64位。c使用关键字asm声明代码是内嵌汇编语句。

2020-12-09 14:54:08 94

原创 socket api阻塞情况分析

connect:激发三次握手,仅在连接成功或出错时才返回。有四种结果。没收到响应会触发超时错误;收到RST触发硬错误;路由不可达错误;成功。listen:把一个未连接的套接字转换成一个被动套接字,指示内核应接受指向该套接字的连接请求。不存在阻塞。accept:由tcp服务器调用,用于从已完成连接队列头返回下一个已完成队列。如果已完成队列为空,进程被投入睡眠。(默认阻塞,可以强行设置为阻塞)close:把改套接字标记成已关闭,然后立即返回到调用进程,立即返回表明是非阻塞的。这里只是把相应描述符的引用计.

2020-09-08 09:39:17 225

原创 Linux 0.11

switch_to

2020-08-31 10:49:49 110

原创 一些代码模板

快排很简单,partion把小于数组第一个元素放在左边,大于的放在右边。再通过递归对左右两边的元素做调整,即nlog(n).#include <iostream>#include <map>#include <vector>using namespace std;int Partition(vector<int> &nums, int begin, int end) { if (begin >= end ||

2020-08-03 16:37:39 204

原创 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)

2020-08-02 16:07:39 839

原创 背包九讲代码

1、01背包。2、完全背包3、多重背包

2020-08-02 10:54:08 143

原创 nginx知识点

nginx是多进程任务,分为master进程和worker进程。worker进程主要对网络事件进行处理,master进程不处理网络事件,只会管理worker子进程实现重启服务、平滑升级、更换日志等。master通过信号进行管理worker进程,worker进程设置信号处理函数设置标志位,实现优雅或强制关闭进程。nginx实现了自己的内存池、连接池。时间是缓存在内存中的。定时器的时间保存在红黑树,一定的时间周期内看是否会超时。惊群效应的解决:规定同一时刻只能由唯一一个worker子进程监听web端.

2020-08-01 11:05:19 117

原创 CSAPP学习

对象本质是位+上下文。处理器正常的加载和存储都要经过寄存器。显示器也是内存经寄存器才能显示。针对主存和处理器的运算差异,采用cache进行高速缓存。CPU包括高速缓存、寄存器文件以及、ALU。文件是对IO设备的抽象,虚拟内存是对主存和磁盘的抽象,进程是处理器、主存和IO设备的抽象。补码的必要性:原码和反码对0有不同解释。...

2020-05-23 20:14:33 311

原创 Effective C++笔记

万一编译器不允许static整数型class常量完成in class初值设定,可改用所谓的the enum hack补偿做法。取一个enum的地址是不合法的。关键字const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量。c++以by value返回对象其实是一个副本而不是其自身。mutable关键字:表明成员变量可能总是会更改,即使在const成员函数内。当const和non-const成员函数有着实质等价的是现实,令non-const调用const版本可避免代码重复.

2020-05-10 11:26:19 155

原创 深度探索C++对象模型

第一章

2020-05-09 10:58:32 110

原创 LUA学习

一、lua语言介绍lua主要负责逻辑,c代码实现功能。lua源代码make后生成lua和luac,lua可以运行lua文件,而luac可以生成out文件直接运行。二、lua基本语法环境ldt eclipse无变量的定义,默认是全局的,局部变量前加local两个‘-’是注释:“- -”例子function max(a, b) if a > b then ...

2020-04-26 16:47:52 199

原创 Redis设计与实现笔记

一、数据结构与对象1、SDS结构包含len、free、buf。len表示当前大小、free表示剩余大小,buff为内容。c字符串再增长和缩短操作都会内存重分配,需要系统调用,耗时。分配原则:修改后长度小于1M,多分配和len同样大小的未使用空间;大于时多分配1M空间。使得连续增长n次字符串所需的内存重分配次数从必定n次到至多n次。惰性空间释放:缩短时不会重分配内存。提供api手动释放。...

2020-03-27 18:27:18 135

原创 分布式知识点

1、CAP 定理一致性(Consistence) :所有节点访问同一份最新的数据副本可用性(Availability):每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据分区容错性(Partition tolerance) : 分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。2、BASE 理论BASE理论是对CAP中一致性和可用性...

2020-03-13 16:44:48 287

原创 Muduo学习

一、线程安全的对象生命期管理对象构造要做到线程安全,唯一的要求是在构造期间不要暴露this指针。如果this指针被泄漏给其他对象,那么别的线程有可能访问这个半成品对象,这会造成难以预料的后果。成员函数用来保护临界区的互斥器本身就是必须有效的,但析构函数会把互斥器销毁掉。share_ptr的使用:传递参数的时候以const reference方式传递,值传递的时候会增减计数,开销大。可以通过...

2020-03-10 15:56:52 221

原创 Linux常用命令、API

1、查找当前目录下名为abc文件find . -name abc2、查找当前目录下名字包括abc的文件grep “abc” -R .(当前目录,也可以加绝对路径)。3、创建新文件touch abc.c...

2020-02-23 20:35:54 482

原创 HTTP学习

一、简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。二、特点无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。媒体独立:这意味着,只要客户端和服务器知道如何处...

2020-02-22 12:27:26 274

原创 数据库知识点

一、左连接、右连接、内连接区别:左连接:左表不受限制和右表中连接字段相等的字段右连接:右边不受限制和左表连接字段相等的字段inner join(内连接或等值连接):只返回两个表相等的字段full join(全外连接):返回左右表的全部字段和两个表相等的字段二、聚簇索引和非聚簇索引:聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据 。非聚簇索引:将数据与索引分开存储...

2020-02-21 17:20:36 283

原创 操作系统知识点

一、进程调度几种方式1、先来先服务2、基于优先级调度:抢占/非抢占3、基于时间片调度,多级反馈队列调度算法4、短作业(进程)优先调度算法参考...

2020-02-21 11:41:28 805

原创 计算机网络知识点

一、select poll epoll区别select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1、 单个进程可监视的fd数量被限制,即能监听端口的大小有限。2、 对socket进行扫描时是线性扫描,即采用轮询的方法,效率较低当套接字比较多的时候,每次select()都要通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是...

2020-02-20 12:49:39 2838

原创 面经中的算法题总结

1、题目:有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。例如: var a = [100,99,98,1,2, 3],b = [1, 2, 3, 4,5,40];思路:当前数组a和数组b的和之差为: A = sum(a) - sum(b),a的第i个元素和b的第j个元素交换后,a和b的和之差为...

2020-02-19 19:39:50 853

原创 Shell 查看一个文件,大于10M删除,否则打印内容

在shell里“ ` ”是什么意思?命令替换,两个`中包含要替换的命令。#!/bin/shfilename = media.logfilesize = `ls -l $filename | awk '{ print $5 }'`maxsize = $((1024*10))if [ $filesize -gt $maxsize ]//大于10Mthen echo "$files...

2020-02-19 18:37:20 760 1

原创 mySQL常用语句

1、查询所有科目分数大于80的姓名SELECT name FROM grade GROUP BY name HAVING MIN(score) > 80;SELECT DISTINCT name FROM grade WHERE name NOT IN(SELECT DISTINCT name FROM grade WHERE score <=80);...

2020-02-18 12:47:57 54

原创 STL源码剖析学习

一、STL概论1、临时对象的使用刻意制造临时对象的方法,在型别名称之后直接加一堆小括号,并指定初值。如int(8)、vector<int>等。2、迭代器的前闭后开区间表示法3、仿函数的使用仿函数可以起到取代函数指针的作用。函数指针的缺点是无法持有自己的状态,也无法达到组件技术中的可适配性,也就是无法再将某些修饰条件加诸于其上而改变其状态。所谓的仿函数就是使用起来想函数一样...

2020-02-05 14:41:38 224

原创 c++和数据结构

1、左连接、右连接、内连接区别:左连接:左表不受限制和右表中连接字段相等的字段右连接:右边不受限制和左表连接字段相等的字段inner join(内连接或等值连接):只返回两个表相等的字段full join(全外连接):返回左右表的全部字段和两个表相等的字段2、聚簇索引和非聚簇索引:聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据 。非聚簇索引:将数据与索引分开存储...

2020-01-07 14:29:41 1485

原创 UNP学习

1、TCP、UDP、SCTP使用16位的端口号来区分进程。

2020-01-06 20:33:20 273

原创 设计模式学习

基本原理设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。分类主要分为三类:创建型模式这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创...

2019-12-27 09:10:52 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除