自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在windows上通过gdb-multiarch和gef插件调试安卓程序

编辑后重新打开msys2或source ~/.bashrc,输入 gcc --version 能看到版本号就说明没问题了。并在msys2\home\用户\ 中创建.gdbinit文件,内容为。4、把 mingw64 路径加入 msys2 运行环境。2、使用msys2安装gdb-multiarch。6、使用msys2打开gdb-multiarch。找到msys2\home\用户.bashrc。运行msys2目录下的msys2.exe。下载解压到msys2\home\用户。1、下载msys2并安装。

2024-11-16 13:31:00 341

原创 C++类模板

如果想通过堆栈去存放整数和浮点数,那么就需要实现两个堆栈类,有了类模板的概念后,就只需要实现一个堆栈类。使用类模板可以提高开发效率和代码量,但是类模板的具体实现需要在头文件中且代码可读性不强,调试比较困难。

2023-01-04 21:25:04 129

原创 【OnlineJudge/WebServer】Poller/EventLoop/Channel

Reactor是一种常用的高性能网络模式,本项目通过Poller/EventLoop/Channel来实现Reactor高性能网络模式WebServer以Reactor为高性能网络模式,其主要以Poller/EventLoop/Channel三个类实现,Poller充当IO多路复用,Channel充当事件分发器,EventLoop充当事件循环作为Poller和Channel之间的中间桥梁,更详细的代码请在GitHub中查看。

2022-12-29 19:08:22 298

原创 C++函数模板

函数模板在C++中是一种静态的多态函数模板是一种静态的多态,调用顺序:普通函数>函数模板特例化>函数模板。

2022-12-20 21:06:38 274

原创 类的各种成员函数及区别

C++中,成员函数可以分为普通成员函数、静态成员函数和const成员函数静态成员函数里只能使用静态成员变量const成员函数不能修改成员变量,普通对象和const对象都能调用const函数。

2022-11-30 13:08:06 639

原创 高性能网络模式Reactor

在网络编程中,服务端想与多个客户端通信,需要为每个连接分配一个线程/进程,线程比进程轻量,一般多使用线程。当一个连接建立后,为其创建线程/。当一个连接关闭后,对应的线程也需要销毁。不断的创建线程和销毁线程会占用大量资源,所以会使用线程池去复用线程资源,先创建出一定数量的线程,等到一个连接建立后,为其分配线程,连接关闭后,再将线程归还给线程池。我们通常使用read函数去接收连接中的数据,直到数据读完线程阻塞(block IO)在read函数中,这样会导致线程不能处理其他事情,占用资源。

2022-11-28 20:59:04 600

原创 【OnlineJudge/WebServer】HttpRequest

HTTP报文解析可以说是Web服务器的核心,本文主要讲解HTTP请求报文格式和主从状态机关于HttpRequest的实现,难点在于处理TCP粘包和分包的问题,这里用了主从状态机能够处理部分问题,还有待完善的空间,代码的具体实现也在我的GitHub项目下的HttpRequest类中。

2022-11-28 11:32:05 498

原创 const限定符

在C/C++中,当一个变量被const修饰,可以称其为常量1、const,在C语言中更像常变量,在C++中要分编译时期和运行时期看待,编译时期为常量,运行时期更像常变量。2、const和一级指针结合应用,const修饰离其最近的类型,const后面没有*可以直接忽略const。

2022-11-27 16:08:15 420

原创 【OnlineJudge/WebServer】Buffer

WebServer接收Client发送过来的数据,存放在哪里?WebServer向Client发送数据,又存放在哪里?项目中的Buffer类就是用来解决收发数据存放位置的问题。在TCP和non-blocking IO中,我们通常需要一个应用层缓冲区来收发数据,本文中的Buffer充当应用层缓冲区,他的实现与队列类似。有关Buffer更加详细的解释,可以看下陈硕的这篇文章Muduo 设计与实现之一:Buffer 类的设计。

2022-11-27 00:12:14 898

原创 初始化列表

创建对象时,初始化成员变量操作一般是在构造函数的函数体中进行的。C++比较特殊,专门为初始化成员变量提供了另外一种操作:初始化列表。如果当前类通过组合的方式使用其他类,并且需要初始化其他类中的成员变量,可以在初始化列表里调用其他类的构造函数(这里如果是通过继承的方式使用基类,也可以在派生类中的初始化列表中调用基类的构造函数)public :int day_;};};在C++中,如果需要在构造函数中初始化成员变量,可以在初始化列表中进行初始化。

2022-11-25 17:13:01 1171

原创 malloc/free和new/delete

在C语言中,通过malloc申请堆内存,free释放堆内存。在C++中,也可以通过C语言的方式申请堆内存并释放堆内存,还可以通过new申请堆内存delete释放堆内存。new/delete是运算符,在C++中,运算符是可以重载的。如果你需要用自己的一套策略去管理堆内存,可以考虑重载new/delete的运算符,实现对象池。malloc申请堆内存失败返回空指针,new申请堆内存失败抛出bad_alloc异常,在实际开发中需要注意下。

2022-11-16 09:33:46 663

原创 【项目】Online Judge(在线评判系统)

由于本人将后端开发作为学习方向,在学习了网络编程和数据库后,决定开发Online Judge(在线评判系统)作为项目将所学的知识串联起来。通过Online Judge项目能学习到什么?1、C++2、网络编程3、数据库4、Linux系统编程。

2022-11-15 21:49:17 3753 2

原创 函数重载和extern“C“

c++允许函数名相同的函数存在,并且可以引用c语言中的函数函数名相同、形参列表不同的一组函数称为函数重载C语言和C++产生符号的规则不同,C语言按照函数名产生函数符号,C++按照函数名和形参列表产生函数符号。

2022-11-10 16:04:38 487

原创 内联函数(inline)

C++中用于减少函数调用开销的函数-------------内联函数如果一个函数简单,可以考虑将其内联,减少函数调用开销,提高运行效率。

2022-11-09 20:03:47 760

原创 进程空间内存分布及编译过程

学习c++前需要先了解一些底层知识,本文主要介绍进程空间内存分布和编译过程(x86 32 Linux平台下)本文仅仅简单介绍了进程空间内存分布及编译过程,想要深入了解可以阅读《程序员的自我修养》和《深入理解计算机系统》

2022-11-04 12:01:34 1527 1

空空如也

空空如也

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

TA关注的人

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