自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 ret2syscall

博客网址:点击这里微信:18223081347欢迎加群聊天 :452380935这一次我们来深入分析下更难的栈溢出题目ret2syscall首先还是先检查下的保护[*] '/home/pwn/桌面/题目/ROP/ret2syscall' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No .

2022-05-26 14:48:17 536 2

原创 操作系统实现-外中断

博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935这一次我们来对中断中的外中断进行讲解,先给下中断的分类和中断号分配把。中断号分类0x0-0x20异常和非屏蔽中断0x20-0x30I/O设备引发的可屏蔽中断,比如键盘、时钟等外中断0x30-0xff软中断,比如常说的int 80系统调用前面对异常进行了讲解,这次对外中断进行说明。我们下面以时钟中断举例,首先我们要知道的是,时钟中断是操作系统自己发.

2022-05-24 15:11:14 456

原创 函数调用栈

博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935这个分栏我们开始学习PWN,当然PWN也是自己的兴趣爱好,所以可能博客更新较慢,不好意思啦前置知识每个函数都有自己的栈帧,栈底用ebp,栈顶用esp,还有一个eip,表示即将执行的指令的地址,下面是栈的图示,是从高地址向低地址增长函数的栈帧包括函数的返回地址和参数本地变量调用前后上下文因此比如一个main函数执行时候,ebp指向其栈帧底部,然后在函数运行时候随时push和p.

2022-05-15 09:47:10 235

原创 操作系统实现-中断及任务调度

博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935这一次我们来对内核进行完善,主要包括全局描述符的加载、任务调度、中断等全局描述符的加载我们回顾下,是不是在loader中有关于全局描述符的一些代码prepare_protected_mode: cli; 关闭中断 ; 打开A20线 in al, 0x92 or al, 0b10 ; 第1位置1 out 0x92, al ; 加载GDT .

2022-05-14 19:51:50 523

原创 操作系统实现-printk

博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935这一次我们来实现最基础,也是最常见的函数print,大家都知道这个是可变参数函数,那具体怎么实现呢,我们慢慢来说吧大家都知道我们常见的格式化输出函数printf里面有很多参数,比如%[flags][width][.prec][h|l|L][type]%:格式引入字符flags:可选的标志字符序列width:可选的宽度指示符.prec:可选的精度指示符h|l|L:可选的长度修饰符.

2022-05-13 09:34:45 217

原创 操作系统实现-进入内核

博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935这一次我们正式进入内核,编写相关的内核代码,也就是kernel代码数据类型定义因为我们在内核中会使用一些数据,因此先提前定义一些数据类型#define EOF -1 #define NULL ((void *)0) // 空指针#define EOS '\0' // 字符串结尾#define bool _Bool#define true 1#define false 0.

2022-05-12 09:40:09 391

原创 操作系统实现-loader

博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935大家好呀,终于我们到了操作系统的loader部分了,loader也是操作系统中最重要的一个部分,承接上面的boot,启下下面的kernel,那我们就开始吧!!!内存检测在loader中,最重要的一点就是检测内存,检测一些系统参数,到时候给kernel使用,那么下面我们就介绍下loader中如何检测内存。还是一样,我们先看下检测内存的代码detect_memory: ; 置为0 .

2022-05-11 09:59:31 228

原创 操作系统实现-boot.asm实现

博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935这一次我们进入操作系统实现的真实编码, 这一次主要是完善对boot.asm文件的全部实现,开始吧。。。首先我们先来理一下boot.asm需要干什么打印出Booting System...实现磁盘读写将后续的loader.asm所在的区域读入到0x1000处,然后跳转进入loader.asm程序开始执行loader.asm程序(这一节我们下次实现)实模式下的print在我们平时.

2022-05-07 10:18:31 756

原创 操作系统实现-简单热身

博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935这次对上次的boot.asm进行代码讲解,也可以对汇编的相关理论进行补充boot.asm主引导扇区位于硬盘的0柱面0磁头1扇区处,首先BIOS加电后,就会将主引导程序加载进来,然后执行我们先看下boot.asm中有啥把[org 0x7c00]; 设置屏幕模式为文本模式,清除屏幕mov ax, 3int 0x10; 初始化段寄存器mov ax, 0mov ds, axm.

2022-05-06 19:08:16 69

原创 操作系统实现-开发环境配置

这一次我们开始自己实现一个简单的操作系统,当然自己也是在看别人的视频进行学习,希望自己能从这个实验中学习到操作系统相关的知识环境配置环境配置VMwareArchLinuxVSCodenasmbochsqemugdbVSCode远程连接这个步骤就大家自行百度下把boot.asm[org 0x7c00]; 设置屏幕模式为文本模式,清除屏幕mov ax, 3int 0x10; 初始化段寄存器mov ax, 0mov ds, axmov es, axmov ss

2022-04-26 10:17:16 341

原创 muduo源码分析之回调模块

这次我们主要来说说muduo库中大量使用的回调机制。muduo主要使用的是利用Callback的方式来实现回调,首先我们在自己的EchoServer构造函数中有这样几行代码 EchoServer(EventLoop *loop, const InetAddress &addr, const std::string &name) : server_(loop, addr, name) , loop_(lo

2022-04-24 20:53:52 291

原创 muduo源码分析之TcpServer模块

这次我们开始muduo源代码的实际编写,首先我们知道muduo是LT模式,Reactor模式,下图为Reactor模式的流程图[来源1]然后我们来看下muduo的整体架构[来源1]首先muduo有一个主反应堆mainReactor以及几个子反应堆subReactor,其中子反应堆的个数由用户使用setThreadNum函数设置,mainReactor中主要有一个Acceptor,当用户建立新的连接的时候,Acceptor会将connfd和对应的事件打包为一个channel然后采用轮询的算法,指定将该

2022-04-24 20:52:50 275

原创 muduo源码分析之muduo简单运用

今天不先实现muduo项目,我们先来看下muduo库的基本使用,只有了解了如何用,才能在写代码的时候知道自己写的找个函数是干嘛的,实际上是怎么使用的这个函数。首先说简单点,就是定义一个Server,设置两个回调函数// 回调连接相关的事件void onConnection(const TcpConnectionPtr &conn);// 回调读写事件void onMessage(const TcpConnectionPtr &conn, Buffer *buffer, Timesta

2022-04-22 14:59:56 983

原创 muduo源码分析之Buffer

这一次我们来分析下muduo中Buffer的作用,我们知道,当我们客户端向服务器发送数据时候,服务器就会读取我们发送的数据,然后进行一系列处理,然后再发送到其他地方,在这里我们想象一下最简单的EchoServer服务器,客户端建立一个连接,以后服务器和客户端之间的通信都是通过这个connfd发送和接受数据,于是每一个connfd都应该有一个自己buffer,当我们发送数据太快,服务器发送的太慢,则服务器会将待发送的数据这个buffer中,所以这就是这个类的作用。我们先看下buffer的结构是什么:我们这

2022-04-20 10:54:24 210

原创 muduo项目介绍

在上一个集群聊天服务器项目中,我使用了muduo作为网络库,然后主要实现了业务逻辑等,所以为了深入网络库的代码和实现,我跟着一位老师的代码去实现了muduo库的基本原理和作用,当然只是实现了主体的代码,有些细节便没有深究,以下是自己的目标:从开源C++ muduo网络库,学习优秀的代码设计掌握基于事件驱动和事件回调的epoll+线程池面向对象编程实现TcpServer、TcpConnection、Poller、Chanel等重要部分重写muduo核心组件,去依赖boost,用C++11重构测试代

2022-04-20 10:53:40 810

原创 redis服务器

这一次主要讲下redis中服务器这个结构体相关代码,主要从是代码层面进行讲解redis服务器redis服务器结构体主要代码在redis.h/redisServer,下面给出该结构体源码,可以看到源码中对该结构体定义很长,这一节我们一点点分析,当然有些地方可能我也理解不到位hhh// redis服务器实例struct redisServer { char *configfile; /* 配置文件的绝对路径 */ int hz; /* serverCron() 每秒调用

2022-04-19 10:51:59 1211

原创 redis数据库

这一次主要是接着redis服务器接着进行代码讲解,因为redis服务器中包含大量的数据库,因为redis也对每个数据库设计了结构体redis数据库在上面redisServer中,有一个数组redisDb *db,这个数组中就是存放的是该服务器所有的数据库,redisDb就是数据库字段,redisServer中的dbnum就是该数组的大小 // redis服务器中每一个数据库都是这样一个实例typedef struct redisDb { // 数据库键空间,保存着数据库中的所有键值对

2022-04-19 10:51:19 78

原创 redis数据结构附录

引言本次对上一次的数据结构知识进行补充,主要有redis数据结构的相关应用场景和内存相关知识引用计数-内存redis中的对象回收机制是采用引用计数的方式,首先我们可以通过redis对象结构体代码可知/* * Redis 对象 */typedef struct redisObject { ... // 引用计数 int refcount; ...} robj;上面表格是和引用计数字段相关的api引用计数-共享我们知道引用计数可以实现对象内存什么时候销

2022-04-19 10:50:22 845

原创 redis持久化

本次主要是对redis中著名的持久化策略进行代码层面描述,主要包括RDB持久化和AOF持久化因为AOF文件的更新频率比RDB高,所以如果服务器开启AOF持久化,redis优先使用AOF文件还原,只有当AOF持久化关闭,才使用RDB文件进行还原RDB持久化RDB持久化主要有两个命令实现:SAVE和BGSAVESAVE、BGSAVESAVE会阻塞redis服务器,知道RDB文件创建完毕void saveCommand(redisClient *c) { // BGSAVE 已经在执行

2022-04-19 10:49:49 496

原创 redis数据结构

引言从本次开始,对Redis设计与实现进行阅读及相关读书笔记的记录。Redis版本为3.0数据结构简单动态字符串SDSsds数据结构位于sds.h/sdshdr/* * 保存字符串对象的结构 */struct sdshdr { // buf 中已占用空间的长度 int len; // buf 中剩余可用空间的长度 int free; // 数据空间 char buf[];};相对于C语言的字符串,SDS的优点在于常数复杂度获取字符串

2022-04-19 10:45:21 72

原创 关于本人

这里先自我介绍下:本人是一名在读的机械研三学生,转行到计算机,准备2022年7月入职字节,有想转行的同学可以加我QQ(153604363),大家可以一起学习啦为什么做这个博客这个博客主要记录自己的后端学习记录和一些刷题记录,同时可能会写一些自己的心得感悟,也为自己后面学习有一个知识点仓库,因此可能博客的内容不那么专业,更多的是以我这个水平的同学之间参考如果大家觉得博客内容还可以的,也希望可以帮忙转发给朋友啦。自己的网址:www.shicoder.top欢迎加群聊天 452380935本文

2022-04-19 10:33:00 112

空空如也

空空如也

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

TA关注的人

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