- 博客(109)
- 资源 (3)
- 收藏
- 关注
原创 08.函数调用栈管理
使用 GDB 调试程序时,当程序发生中断,我们首先应该知道程序在哪里产生中断以及产生中断的原因是什么?函数发生调用时,相关的调试信息就已经产生,并且被存储在一块被称为栈帧的数据里。栈帧是在调用栈的内存区域里分配的,是调用栈划分的连续的区块,简称为栈。每个帧是一个函数调用另一个函数的相关数据,包含了传递给本地用函数的参数,这个函数的本地变量和这个函数的执行地址。......
2022-06-19 19:58:02
110
原创 02.2双向链表
typedef struct Node { int val; struct Node* next; struct Node* prev;}Node;typedef struct List { Node head; int len;}List;
2022-06-14 17:14:32
93
原创 07.gdb源代码查看与管理
GDB之所以能够知道对应的源代码,是因为调试版的可执行程序中记录了源代码的位置;因为源代码的位置在编译之后可能会移动到其它地方,所以GDB还会在当前目录中查找源代码,另外GDB也允许明确指定源代码的搜索位置。.........
2022-06-04 22:04:37
2877
原创 05.用gdb查看和修改内存
GDB 中为我们提供了查看内存的命令 x,它是 examine 命令的简写,使用 x 命令查看内存数据的格式有很多种,这里的内存数据可以是任意类型。命令的详细介绍如下。参数 f 的可选值:x 按十六进制格式显示变量。d 按十进制格式显示变量。u 按十六进制格式显示无符号整型。o 按八进制格式显示变量。t 按二进制格式显示变量。a 按十六进制格式显示变量。c 按字符格式显示变量。f 按浮点数格式显示变量。参数 u 的可选值:b 表示单字节h 表示双字节w 表示四字节g 表示八
2022-06-01 14:41:57
3671
原创 6.用c++实现stl中的vector
#include <iostream>#include <ctime>using namespace std;template<typename T>class vector{public: vector(int size=10) { _first = new T[size]; _last = _first; _end = _first + size; } ~vector() { delete[]_first; _first
2022-05-29 17:17:30
158
原创 5.类模板
#include <iostream>using namespace std;template<typename T=int>class SeqStack //模板名称+类型参数列表=类名称{public: //构造和析构函数不用加<T>,其他出现模板的地方都应加上类型参数列表 SeqStack(int size = 10) :_pstack(new T[size]) ,_top(0) ,_size(size) {} ~SeqStack
2022-05-29 16:35:44
72
原创 4.函数模板
#include <iostream>#include <string>using namespace std;/*模板的意义:对类型也可以进行参数化了函数模板:是不进行编译的,类型不知道模板的实例化:函数调用点进行实例化模板函数:被编译器编译模板的实参推演:可以根据用户传入的实参的类型,来推导模板参数的具体类型模板的特例化(专用化) 特殊(不是编译器提供的,是用户自己提供的)实例化*///函数模板template<typename T
2022-05-29 11:29:27
73
原创 04.gdb调试之查看/修改变量
查看变量info args查看函数参数print 变量名p 变量名查看变量的值set print null-stop设置字符串的显示规则set print pretty显示结构体set print array on显示数组使用gdb内嵌函数例如: sizeof,strlen代码https://github.com/CoderDuanGe/gdbdebug/tree/master/section4启动gdb调试section4查看main函数的参数
2022-05-29 09:45:00
7578
原创 04.muduo服务器
基于muduo网络库开发服务器程序流程组合TcpServer对象创建EventLoop事件循环对象明确TcPServer构造函数的参数,输出CharServer的参数在当前服务器类的构造函数中,注册处理连接的回调函数设置合适的服务器的线程数量,muduo库会自己分配I/O线程和worker线程代码vim muduo_server.cpp#include <muduo/net/TcpServer.h>#include <muduo/net/EventLoop.h&
2022-05-29 00:06:56
182
原创 3.C++ boost库和muduo库的编译安装
muduo库是基于boost开发的,需要先在Linux平台上安装boost库linux上boost源码的安装boost的源码下载地址:https://boostorg.jfrog.io/artifactory/main/release/下载.tar.gztar -xvf boost*./bootstrap.sh./b2./b2 installwindow上boost的编译安装打开vs2019的命令行窗口,切换到下载好的boost源码的位置./bootstrap.bat./b2./b
2022-05-28 22:34:10
563
原创 11.sunday和shift_and算法(字符串匹配算法)
代码1#include <iostream>using namespace std;void GetNext(const char* pattern, int* next){ next[0] = -1; for (int i = 1, j = -1; pattern[i]; ++i) { while (j != -1 && pattern[j + 1] - pattern[i]) j = next[j]; if (pattern[j + 1] == pat
2022-05-28 15:18:25
88
原创 03.nginx
安装nginx,搭建web服务器环境epoll,linux 内核版本为2.6或者以上;gcc编译器,g++编译器pcre库:函数库;支持解析正则表达式;zlib库:压缩解压缩功能openssl库:ssl功能相关库,用于网站加密通讯nginx的几种版本mainline版本:版本号中间数字一般为奇数。更新快,一个月内就会发布一个新版本,最新功能,bug修复等,稳定性差一点;stable版本:稳定版,版本号中间数字一般为偶数。经过了长时间的测试,比较稳定,商业化环境中用这种版本;这种版本发布周
2022-05-25 19:38:43
85
原创 03.gdb调试断点管理
设置断点break/b 文件名:行号解释:在源代码某一行设置断点b 函数名解释:给函数设置断点,如果有多个同名函数,则给所有的同名函数设置断点rb 正则表达式解释:为满足正则表达式的函数设置断点b 断点 条件解释:设置条件断点tb 断点解释:设置临时断点代码:https://github.com/CoderDuanGe/gdbdebug/tree/master/section31.break/b 文件名:行号2.b 函数名查看断点:3.rb 正则表达式举例:给所
2022-05-25 17:31:50
345
原创 02.gdb启动调试
gdb指定参数的三种方法调试用到的代码:https://github.com/CoderDuanGe/gdbdebug/tree/master/section1https://github.com/CoderDuanGe/gdbdebug/tree/master/section21.第一种方式启动gdb启动时传入三个参数有空格需要用引号2.第二种方式在gdb没执行run之前传入三个参数3.第三种方式gdb运行的时候,传入参数根据pid附加到进程dgb attch
2022-05-24 23:00:59
1203
原创 01.linux
man手册作用: Linux 为所有命令和系统调用编写了帮助手册。使用man 命令可以方便地获取某个命令的帮助信息。用法: man [手册编号] 命令名man 命令在显示手册页时实际调用less 完成显示,J K可以上下翻动,空格用于向下翻页。Q键退出。手册总共分为9 节,各部分内容如下:gcc编译选项Ubuntu安装Samba 服务器 确认安装: dpkg -l | grep samba 安装: sudo apt-get install samba s
2022-05-24 21:45:28
80
原创 02.json的反序列化
JSON 反序列化: 将 JSON 字符串转换为 JSON 对象的过程#include "json.hpp"using json=nlohmann::json;#include <iostream>#include <vector>#include <map>using namespace std;//json 序列化1string func1(){ json js; js["msg_type"]=2; js["fro
2022-05-16 15:36:03
260
原创 01.json序列化
JSON for Modern C++ 是一个由德国大牛 nlohmann 编写的在 C++ 下使用的 JSON 库。下载地址传送门:json下载实例代码#include "json.hpp"using json=nlohmann::json;#include <iostream>#include <vector>#include <map>using namespace std;//json 序列化1void func1(){ js
2022-05-16 15:16:57
362
原创 03.mysql的CRUD2
带in子查询select * from user where id in(10, 20, 30)select * from user where id not in(10, 20, 30)select * from user where id in(select id from grade where average>=60.0)分页查询select *from user limit M,N;select *from user limit N offset M;select id,ni
2022-05-16 14:09:23
170
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人