自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何使用navicat远程登录mysql

然后使用命令查看3306端口开放情况,如果看到了0.0.0.0:3306的话说明开放成功。然后进入mysql,创建出远程登录账户,创建出数据库,并且授予权限,最后再刷新即可。接下来在navicat中寻找连接选项,并且输入主机端口,刚才创建的用户名和密码即可。首先打开mysql的配置文件。保存后,重启mysql服务。

2024-03-13 19:27:38 859

原创 【源码讲解】sylar服务器框架----hook模块

本模块实现的hook功能以线程为单位,可以自由的设置当前的线程是否使用hook,默认调度器所在的线程会开启,其他线程不会开启。extern "C":指定编译器将代码段中的代码以C语言的形式进行编译。本模块实现hook可大致分为三类:①socket IO系列的接口②sleep延时系列接口③closs/fcntl等接口。

2023-11-05 16:20:09 597 2

原创 【源码讲解】sylar服务器框架----IO协程调度模块

epoll是用来实现IO多路复用的函数,epoll只要把用户关心的文件描述符上的事件放到内核里的一个事件表中即可,不用像select或者poll传入传出一个存有文件描述符的数组。epoll底层使用一个红黑树和一个双向链表实现。向红黑树中加入或删除需要监听的节点,当存在可读或可写的事件的时候,向链表添加就绪的socket。

2023-11-04 02:14:03 414 1

原创 【源码讲解】sylar服务器框架----定时器模块

本模块实现了一个定时器,基于epoll实现。当epoll_wait函数退出时候,会检测是检测到了可读或可写的事件还是超时退出,若超时退出,则会执行注册的回调函数。本模块的定时器依赖于set。set内部实现了一个红黑树,当插入后会根据仿函数进行自排序。每次取出距离当前时间最近的一个超时节点。根据这个最近的时间来设置epoll_wait的超时时间。精度只能支持毫秒级,因为epoll_wait超时时间最小是毫秒。本模块一共实现了两个类,一个是定时器模块,一个是定时器管理器模块。

2023-10-24 00:53:36 323 1

原创 【源码讲解】sylar服务器框架----协程调度模块

重要的成员变量有,存线程池的vector,这个是一个vector容器,里面的成员是之前封装的Thread类。还有一个任务队列,是一个list容器,容器里面的成员是ScheduleTask,还有一个vector容器存全部可以调度协程的线程的线程id的数组(若调度器线程也参与调度,则里面也有调度器线程的id)。还有线程池线程总数,活跃线程数和idle线程数,调度器所在线程的调度协程的指针(初始化后,里面跑的入口函数是run函数)。/// 协程调度器名称/// 互斥锁/// 线程池/// 任务队列。

2023-10-22 22:33:15 507 1

原创 【源码讲解】sylar服务器框架----协程模块

ucontext_t是一个结构体变量,其功能就是通过定义一个ucontext_t来保存当前上下文信息的。// 上下文结构体定义// 这个结构体是平台相关的,因为不同平台的寄存器不一样// 下面列出的是所有平台都至少会包含的4个成员// 当前上下文结束后,下一个激活的上下文对象的指针,只在当前上下文是由makecontext创建时有效// 当前上下文的信号屏蔽掩码// 当前上下文使用的栈内存空间,只在当前上下文是由makecontext创建时有效。

2023-09-19 02:15:16 615

原创 【源码讲解】sylar服务器框架----线程模块

功能:创建一个线程,当线程创建成功后,可以立即被操作系统调用。参数一:指向线程标识符的指针,创建成功后会获取到线程id参数二:用于设置各种不同的线程属性,比如线程栈的位置,线程的继承性,线程的作用域等。不需要设置传入nullptr即可。参数三:线程运行函数的起始地址。参数四:第三个参数传入的函数的参数。若成功则返回0,否则会返回错误号。功能:实现线程分离,不再受主线程管理,由系统接任。线程结束后,其退出状态不由其他线程获取,而直接自己自动释放。

2023-09-17 04:54:26 256 1

原创 【源码讲解】sylar服务器框架----线程同步模块

什么是RAII机制?RAII全程为Resource Acquisition Is Initialization(资源获取即初始化),RAII是C++语法体系中的一种常用的合理管理资源避免出现内存泄漏的常用方法。以对象管理资源,利用的就是C++构造的对象最终会被对象的析构函数销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。简单来说采用RAII的机制就是锁的自动释放,避免因为程序写错导致的死锁。

2023-09-14 01:11:16 421 1

原创 【源码讲解】sylar服务器框架----配置模块

在C++编程语言中,仿函数(Functor)是一种行为类似于函数的对象,可以像函数一样被调用。仿函数是一个类或结构体,它重载了圆括号操作符 "()",因此可以像函数一样被调用。仿函数可以在算法中使用,例如std::transform(),可以将一个序列中的每个元素映射到另一个序列中。仿函数的好处是可以通过重载操作符来实现更加灵活的行为,例如可以在一个仿函数中保存一些状态信息,或者将它作为一个回调函数来传递给其他函数使用。public:/*** @brief 类型转换。

2023-09-13 00:39:44 590 1

原创 【源码讲解】sylar服务器框架----环境变量模块

argc是main接收参数的数目,argv是一个指向字符串数组的指针。函数内首先获取从指定进程号目录下获取一个符号链接文件(比如假如服务器进程是114514,符号链接文件的路径则是/proc/114514/exe),然后调用readlink函数,从这个符号链接文件中获取当前运行的程序的文件绝对路径,并存取m_exe中,然后取出当前路径存入m_cwd,从argv[0]中取出m_program并存入。这个服务器框架的单例模式是通过函数内的静态变量在函数执行结束的时候不会释放内存实现的,框架缺陷,所以没法写。

2023-09-11 02:11:45 212

原创 【源码讲解】sylar服务器框架----日志模块

为什么用流式方式:方便以SYLAR_LOG_FATAL(logger)为例子,宏展开后是。

2023-09-10 22:27:53 636 2

空空如也

空空如也

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

TA关注的人

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