自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (6)
  • 收藏
  • 关注

原创 sylar高性能服务器-日志(P74-p79)内容记录

最后一个基础模块的封装,同样继承于`SocketStream`,实现发送请求报文,接收响应报文。此外实现了连接池、使用状态机解析`URI`

2024-03-19 14:33:17 343

原创 sylar高性能服务器-日志(P70-p73)内容记录

第一个参数接收一个Socket,第二个参数表示在析构时是否需要程序自定中断连接。,用于接收请求报文,发送响应报文。

2024-03-14 16:11:41 419

原创 sylar高性能服务器-日志(P69)内容记录

基于之前写的序列化模块封装了读和写,但是`socket`的`API`并不保证一定能够写或读到规定的字节数,所以封装了`readFixSize`、`writeFixSize`保证一定操作规定字节的数据。

2024-03-13 15:13:39 378 1

原创 sylar高性能服务器-日志(P67-P68)内容记录

这一节的内容对于之前学过网络编程的同学看起来比较简单一些,也没啥新的内容,都是使用之前完成的模块搭建了一个简单的`echo`服务器。

2024-03-12 20:18:09 417

原创 sylar高性能服务器-日志(P61-P66)内容记录

本章节内容主要基于网上一个开源的`Http`解析协议,封装了对`Http`请求/响应报文使用状态机解析报文格式,保存到请求和响应报文对象中。​ 由于最主要的`Http`解析用了现成的开源代码,所以这几节的内容还是比较容易,核心还是去理解所使用的`http`解析源码,下面的内容仅视频内容的记录,没有源码解析。

2024-03-10 09:12:07 410

原创 sylar高性能服务器-日志(P57-P60)内容记录

序列化模块通常用于将数据转换为可以在网络上传输的格式,或者将接收到的网络数据反序列化为程序内部可用的格式。这个模块可以帮助简化网络通信的数据处理过程,提高服务器的性能和可维护性。

2024-03-06 20:03:57 1054

原创 sylar高性能服务器-日志(P54-P56)内容记录

后面三节内容和前面`Address`模块一样,主要对`socket`的方法进行封装,提供接口方便的创建`TCP`、`UDP`、`Unix`的`socket`对象。当创建一个`socket`对象时,并没有真正的创建一个`socket`句柄,此时它的句柄为`-1`,只有在`bind`、`connect`的时候才会通过`newSock()`创建一个`socket`句柄与对象关联起来,在`accept`时创建新的`socket`对象,并初始化。新的`socket`句柄都初始化为地址复用模式,如果为`TCP`连接

2024-03-05 15:18:35 392

原创 sylar高性能服务器-日志(P49-P53)内容记录

sylar高性能服务器-日志(P43-P48)内容记录

2024-03-04 09:28:14 826

原创 sylar高性能服务器-日志(P43-P48)内容记录

`sylar`封装`hook`模块的目的就是让一些C标准库提供的同步`API`可以实现异步的性能。`hook`将`API`封装成一个与原始系统调用同名的接口,在调用这个接口时,先实现一些别的操作,然后在调用原始的系统`API`。这样对开发者来说很方便,不用重新学习新的接口,用着同步的接口实现异步的操作。

2024-02-28 16:52:01 592

原创 sylar高性能服务器-日志(P36-P42)内容记录

前面4节主要内容在协程调度的基础上,基于`epoll`设计了IO协程调度,支持为socket句柄加读事件(`EPOLLIN`)和写事件(`EPOLLOUT`),并且支持删除事件、取消事件功能。`IOManager`主要通过`FdContext`结构体存储文件描述符`fd`、注册的事件`event`,执行任务`cb/fiber`,其中`fd`和`event`用于`epoll_wait`,`cb/fiber`用于执行任务。

2024-02-26 13:42:07 883

原创 sylar高性能服务器-日志(P30-P35)内容记录

这里开始协程调度模块,封装了一个M:N协程调度器,创建N个协程在M个线程上运行,调度器的主要思想就是先查看任务队列中有没有任务需要执行,若没有任务就进入空闲状态,反之进行调度。

2024-02-23 15:02:09 1041

原创 sylar高性能服务器-日志(P26-P29)内容记录

断言时,如果一个函数在很多地方调用并且触发了断言,那么我们就不能通过控制台输出的异常信息知道到底是哪次调用的断言出了问题,debug起来就相当麻烦,讲课确实不喜欢解释代码,看完这一节啥都不知道,下列记录了我根据网上他人的一些笔记以及资料对这一节代码的解释,可能理解得不太对,自行参考。下列是协程类目前的代码,因为还没有编译过,所以里面可能存在错误,后面将解释一下这些成员函数和变量的具体含义,以及其它的一些知识点。是无法被执行的,因为我们之前的子协程在运行完后没有做任何的处理,导致无法回归到主协程。

2024-01-24 15:48:36 990

原创 sylar高性能服务器-日志(P21-P25)内容记录

如果你在这几节视频中遇到了代码编译问题,那么下列内容会有帮助。

2024-01-23 15:16:50 860

原创 sylar高性能服务器-日志(P15-P20)内容记录

以下内容是sylar高性能服务器视频的简单记录,如果你在调试代码时遇到了困难那么下面内容会有帮助。

2024-01-15 09:58:04 982

原创 sylar高性能服务器-配置(P12-p14)内容记录

记录sylar高性能服务器P12-P14配置模块的内容,

2023-12-13 20:36:49 189

原创 sylar高性能服务器-配置(P10-p11)代码解析+调试分析

本节内容主要是通过使用yaml-cpp库从yaml文件中读取配置信息,下面内容主要记录配置yaml的步骤以及对sylar使用yaml-cpp里面的方法进行一个简单解释。

2023-12-12 21:21:46 266

原创 sylar高性能服务器-配置(P9)代码解析+调试分析

本节内容主要讲诉了sylar高性能服务器视频P9的内容,并给出了代码逐步调试的步骤和结果。本节内容主要新增了一个配置类,允许重新从用户的给定配置文件中加载用户配置,如果你对于新增代码还有疑惑,看看下面的调试步骤一定会有帮助。

2023-10-18 20:31:17 344

原创 sylar高性能服务器-日志(P7-P8)代码解析

P7P8两节视频新增内容不多,主要看下优化日志输出使用的宏函数。本次记录的内容比较简单,没有一步一步详细写出来,如果对P7之前的代码不存在问题,那么写到这里应该不会存在疑惑。同时建议每一次看代码时都去捋一下日志几大组件之间的关系,看多了真的有点绕。

2023-10-13 10:35:06 205

原创 sylar高性能服务器-日志(P1-P6)代码解析+调试分析

本篇文章主要针对一下sylar高性能服务器项目视频p1-p6的代码分析以及调试,大佬在讲课时基本上都是码代码,很少去详细的讲解代码的细节。像我这种没接触过服务器项目的小白看起来都很有压力,还别说能运行。下面的内容一到六是我自己对当前视频代码的一个简单分析,可能很多地方理解的不对,大家自己取舍。第七部分则是使用gdb进行调试,观察给出的示例是如何运行的,不然照着抄一遍基本看不懂写的什么,如果你写完代码甚至不知道每个模块具体做了什么,推荐可以参考我调试的步骤,没接触过gdb也无妨,只需要知道几个简单命令就行。

2023-10-08 14:43:50 618 3

原创 《c++ primer笔记》第十五章 OOP

面向对象程序设计的核心思想:==数据抽象、继承和动态绑定==。数据抽象可以将类的接口与实现分离;继承可以定义相似的类型并对其相似关系建模;动态绑定可以在一定程度上忽略相似类型的区别,以统一的方式使用它们的对象。

2023-05-30 09:07:20 344

原创 一、计算机系统基础

计算机系统基础

2023-05-17 20:02:45 496

原创 《c++ primer笔记》第十四章 重载运算与类型转换

根据一个类提供的操作去考虑把哪些类操作设计成普通函数或者重载运算符,那些在逻辑上与运算符有关的操作就适合被定义成重载的运算符。

2023-05-11 18:16:17 434

原创 《c++ primer笔记》第十三章 拷贝控制

​ 拷贝初始化发生的场景:- 将一个对象作为实参传递给一个非引用类型的形参- 从一个返回类型为非引用类型的函数返回一个对象- 用花括号列表初始化一个数组中的元素或一个聚合类中的成员

2023-04-24 19:29:23 404

原创 《c++ primer笔记》第十二章 动态内存

目前写的程序都只使用过静态内存和栈内存。==静态内存==用来保存局部`static`对象、类static数据成员以及定义在任何函数之外的变量。==栈内存==用来保存定义在函数内的非`static`对象。==分配在静态或栈内存中的对象由编译器自动创建和销毁,对于栈对象,仅在其定义的程序块运行时才存在:static对象在使用之前分配,在程序结束时销毁

2023-03-30 12:06:47 187

转载 《TCP/IP网络编程》第一章 理解网络编程和套接字

本文转载于github上一位大佬(https://github.com/riba2534/TCP-IP-NetworkNote)的笔记,并且对于笔记中缺失的部分和我自己觉得重要的部分进行了完善,课后练习有时间也会全部补上。阅读本章如果目前仅处于在Windows下练习案例,那么可以直接从1.3开始,前面可以简单过一遍。

2023-03-20 23:04:36 116

原创 《c++ primer笔记》第十一章 关联容器

关联容器支持高效的关键字查找和访问,两个主要的关联容器类型是`map`和`set`。标准库提供8个关联容器,它们的不同有三点:1)`set`或者`map`;2)关键字是否重复;3)元素保存顺序。

2023-03-20 22:59:39 438

原创 《c++ primer笔记》第十章 泛型算法

大多数算法都在头文件`algorithm`中定义,一般来说这些算法并不直接操作容器,而是通过迭代器去锁定访问元素的范围以及通过迭代器的解引用去获取元素值。==迭代器的使用使算法不依赖于容器类型。但是大多数算法都使用了一个元素类型上的操作。算法永远不会改变容器的大小。==

2023-03-15 20:59:57 327

原创 《c++ primer笔记》第九章 顺序容器

将一个新容器创建为另一个容器的拷贝的方法:1)直接拷贝整个容器(两个容器的类型必须相同);2)拷贝一个由迭代器指定的元素范围(`array除外`)(两个迭代器的类型可以不同,只要元素能够转换)

2023-03-09 22:09:09 229

原创 《c++ primer笔记》第八章 IO库

我们常见的流有`istream和ostream`,这两个流都是有关输入和输出的,此外,下标列举了一些其它的`IO类型`。`fstream`定义了读写命名文件的类型,`sstream`定义了读写内存`string`对象的类型。

2023-03-06 21:31:43 375

原创 《c++ primer笔记》第七章 类

类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程技术。封装实现了类的接口和实现的分离。

2023-03-01 20:34:49 295

原创 《c++ primer笔记》第六章 函数

本章的重点:函数的参数传递、函数重载。在参数传递中涉及到了很多第二章关于const的内容,建议可以先复习一下相应内容再看会轻松很多。函数重载主要是要清楚重载函数匹配的过程,编译器匹配的规则的排序是什么。函数指针记录得不多,可以把它看成复杂一点的数组指针。

2023-02-05 19:13:03 397

原创 《c++ primer》第五章 语句

一条表达式语句以`;`结尾,它的作用是执行表达式并丢弃掉求值结果。一行如果只有一个`;`也是一条语句,称为空语句。复合语句时用`{}`括起来的语句或者声明, 也称为块,第二章在作用域有提到一个块就是一个独立的作用域。如果一个`{}`里面什么也没有,称为空块。

2023-01-24 15:11:34 749

原创 《c++ primer》第四章 表达式

在`C++`中,表达式要么是左值,要么是右值。一个左值表达式的求值结果是一个对象或者一个函数;一个对象被用作右值时,实际用的是对象的值,而用作左值时,实际用的是对象在内存中的位置。**左值可以替代右值,反之不行**。在使用关键字`decltype`时,如果**表达式**的求值结果是左值,最后的结果是一个**引用类型**;反之得到的结果是一个**指针**。如下。

2023-01-20 10:35:04 604

原创 《c++ primer》第三章 字符串、vector、数组

本章内容相比第二章要简单不少,里面比较重要的内容主要是vector和迭代器,这里只是很简单的介绍了一下,在后续的章节会有更详细、复杂的说明。以下记录的都是比较重要或者易混淆的知识点,对于像string、vector只列举了部分方法的例子。

2023-01-13 16:59:34 759

原创 《c++ primer笔记》第二章 变量和基本类型

C++包含==算术类型==和==空类型==两种基本数据类型。算术类型包含字符、整型数、布尔值和浮点数;空类型不对应具体的值,常见的比如写一个void的函数。下图是算术类型的表格,不同类型所占比特数不同,它们可以表示的范围也不一样。==long long==是C++11的新特性。对于浮点型,float和double分别有7和16个有效位。

2023-01-11 23:02:34 332

原创 手写一个简单的分页器

封装分页器1. 前言分页器基本上是任何网站必须要有的一个组件,为什么需要分页器,当后台传入了大量的数据,那么在前端拿到数据,如果直接展示很有可能或造成卡顿,同时消耗过多的内存,给用户带来的浏览效果就不好。所以,分页器的使用可以一次性只展示部分数据,用户可以非常方便的跳转不同的页面来访问内容。虽然现在很多的UI库都有这个组件,使用也非常的方便,但是我们也应该要知道,怎么手写一个分页器。2. 准备先搭建一个静态的分页器。效果如下图。<template> <div cl

2022-03-13 13:08:19 3162 1

原创 重写push和replace解决vue-router使用编程式导航重复跳转路由时控制台报错

重写push和replace1. 前言:​ 大家在使用vue-router的过程中,编程式导航一定用得很多,它让路由跳转变得更加灵活,一些复杂的业务处理也可以通过使用它来简化操作。但是,如果直接使用Vue自带的push或repalce方法,当你多次点击同一个路由时,控制台就会报错,虽然不影响代码实现的功能,但作为一个严格要求自己的前端菜鸟,怎么能忍受这样的一片红,因此,为了解决这个报错,我们可以通过重写push和replace来达到目的。2. 问题展示:简单搭建两个路由,分别为路由1、路由2

2022-03-12 22:48:20 2632 1

原创 JS笔记迭代器与生成器

文章目录五、迭代器与生成器5.1 迭代器1 理解迭代2 迭代器模式3 可迭代协议4 迭代器协议5 自定义迭代器6 提前终止迭代器5.2 生成器1 生成器基础2 通过yield中断执行3 生成器作为默认迭代器4 提前终止生成器5.3 总结五、迭代器与生成器5.1 迭代器1 理解迭代循环是迭代机制的基础,因为它可以指定迭代的次数,以及每次迭代要执行什么操作数组可以通过递增索引来遍历,但是由于迭代之前需要实现知道如何使用数据结构(数组中的每一项需要先引用取得数组对象,然后通过【】操作符取得索引位置上

2022-02-07 21:05:38 631

原创 JS面试题---防抖和节流

文章目录一、防抖二、节流一、防抖问题场景:有时会遇到这样一个情况,比如在一个搜索框里面进行搜索,在没有进行函数防抖的情况下,当我们在输入框中修改里面的值,我们想要的是等我们输入完成后再执行对输入关键字的搜索,这里就开始出现问题,如下面的例子。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" con

2022-02-04 17:40:47 947

原创 JS笔记集合引用类型(下)

JS笔记集合引用类型(上)文章目录4.4 Map1 基本API2 顺序与迭代3 Object VS Map4.5 WeakMap1 基本API2 弱键3 不可迭代键4 使用弱映射4.6 Set1 基本API2 顺序与迭代3 定义正式集合操作(==待解决==)4.7 WeakSet1 基本API2 弱值3 不可迭代值4 使用弱集合4.8 迭代与扩展操作4.7 WeakSet1 基本API2 弱值3 不可迭代值4 使用弱集合4.8 迭代与扩展操作4.4 Map1 基本API// 1.构造方式const

2022-01-31 22:21:42 639

鲜速达水果商城程序设计文档

https://gitee.com/he-yun/xiansudaFruit_shop.git 对应的文档

2022-01-16

基于SSM框架的后台管理系统(优就业实训)

今年学校安排的优就业课程实训,做得还不错,增删查改、表单验证等功能都有,内含数据库文件,下载后把数据库信息改为你的本地数据库就能运行,不会的可以私聊我。如果想要上课视频的可以私聊我。

2021-07-05

基于DES消息加密,javaFX界面的聊天通讯工具

编译器:idea2020 语言:java 这是一个局域网聊天通讯工具,一个服务器端可以连接多个客户端,可以实现群发消息,并且发送的消息通过DES算法进行加密,接收的消息也要通过DES解密。 注意:如果下载完后不能在本地运行,可以私聊我。

2021-07-05

基于JavaFx TableView的人员增删查改界面

随机生成人员数据,使用javafx 中的TableView来创建一个表格,在表格中实现数据的增删查改。

2020-12-22

C语言数据结构--哈夫曼编/译码器

编译环境VS2013 自带测试数据 代码能完美运行,文件部分需要根据自身要求修改位置 注释简单清楚

2020-07-01

C语言——教学编制系统

语言:C语言;编译环境:VS 2013 该程序满足两种排课的编译模式——一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。 内部有测试数据和截图。

2020-06-02

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

TA关注的人

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