自定义博客皮肤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)
  • 问答 (1)
  • 收藏
  • 关注

原创 TCP/IP协议之四TCP协议(上)—理论+实践给你讲清楚

特性TCP又名传输控制协议,属于TCP/IP协议中的传输层,与其下层网络层的最重要区别在于它提供了一种面向连接的和可靠的字节流服务。面向连接怎么理解面向连接呢,其实就类似于打电话,拨号然后响铃,直到接通后,双方就建立起了一个连接。如何支撑起TCP的可靠性首先应用数据被分割成TCP认为最适合发送的数据块,再传输给网络层,数据块被称为报文段或段。当TCP发出一个段以后,它会启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到确认,那么将重发这个报文段。这基于它的超时重传策略。当TCP

2022-04-22 08:01:34 2009

原创 TCP/IP系列之三网络层——终于有人把它们中的关系理清楚了

大家好,我是小杰。老规矩,先上镇宝图——TCP/IP模型本文并没有涉及IP地址分类和子网掩码内容。IP协议格式IP是TCP/IP协议中的核心协议。它包含两大特性:不可靠、无连接。不可靠指的是它本身不会保证数据一定完整送达,需要依靠上层协议解决。无连接指的是每个IP数据报之间没有关系,相互独立。至于为什么会这样涉及,我的理解是分层的思想就是为了让每层各司其职,自己负责自己的事情,否则会把某一层弄得很臃肿失去了分层的意义,我们在涉及功能的时候也应该具有这种思想。需要注意的是,这

2022-04-11 11:25:59 2828

原创 TCP/IP协议家中的老二——数据链路层

大家好,我是小杰。在这个系列里,我们将详细学习计算机网络相关的知识。 这次要讲的是数据链路层老规矩,先上这个系列的镇宝图——TCP/IP协议五层模型为什么要有数据链路层所谓存在即合理,经过了这么多年实践的考验,那这一层也定有它不可或缺的原因:为IP模块发送和 接收IP数据报为ARP模块发送ARP请求和接收ARP应答为RARP发送RARP请求和接收RARP应答ARP和RARP分别为地址解析协议和逆地址解析协议什么是RFCRequest For Comments(RFC)是一系

2022-04-06 13:12:45 3283 2

原创 C++11系列三—std::function和std::bind

旧标准的缺陷学习新标准的语法之前,先来聊聊旧标准存在的缺陷,这样就可以理解为什么要在C++11中存在std::funtion和std::bind了,这就是所谓——知其然,并知其所以然繁杂的调用对象C++中可以调用的对象有很多,包括但不限于以下:函数指针仿函数(重载了"( )" 运算符)可被转换为函数指针的类对象类成员函数问题浮出水面这些调用对象在使用的时候具有比较统一的时候,但是定义的方式却是五花八门。因此,C++11中为了改善这个问题,提供了std::function和std::bi

2022-04-02 16:19:59 1654

原创 C++11系列文章之二 | 列表初始化技巧

大家好,我是小杰,欢迎点赞和关注我~列表初始化由于旧标准初始化方式太过繁杂,限制偏多,因此在新标准中统一了初始化方式,为了让初始化具有确定的效果,于是提出了列表初始化概念。旧标准初始化方式普通数组初始化:int i_arr[3] = {1, 2, 3}POD类型初始化(即plain old data类型,可以直接使用memcpy复制的对象): struct A { int x; struct B { int i; int j

2022-03-30 16:22:33 1093 3

原创 红警代码开源了 来瞅瞅源码 文内送Win10可联机的红警2标准版游戏

大家好,我是小杰。最近我偶然看到了个新闻,红警的开源代码,于是我喜出望外的去github上下载和编译。接下来我来谈一谈这个过程。公众号原文链接 可以从此处进入公众号领取游戏红警这款游戏相信大多数人都玩过,这里面有70、80、90后珍贵的回忆,不过就算拿到现在来玩也不腻。比如我就搞到了可以联机对战的红警标准版,可以在windows 10上完美运行,局域网联机都没问题。我已经联机玩了好几天了,想要的小伙伴可以在后台回复【红警标准版】获取,当然如果运行和联机有任何问题可以在 公众号下方的联系作者 找到我的微

2022-03-18 12:58:26 9257 3

原创 史诗级后端开发路线——愿我踩过的坑,你可以绕着走

这篇是我准备了很久,字字珠玑,以过来人的身份写下的,我用心写,你用心做,真心希望我走过的坑你可以绕过去,我走过的路你可以拥有捷径。能够真正地帮助到那些不知道如何开始学的小伙伴。

2022-03-18 12:53:14 1203

原创 2021精品原创汇总,看看作者到底有多肝

大家好,我是小杰。转眼2021年就要过去了,在这里先给大家拜个年,祝大家虎虎生威????虎年大吉????虎灵虎气????聪明如虎????,新年的一年里暴富!!!画外音:预告下这几天将会在公众号免费送限量的金钱豹(就是最近特别火的那个,懂得都懂)微信钱包皮肤!超级好看,祝大家虎年金钱爆(富)!我是从2021年11月份开始发文,将近三个月了,你们每次的关注、点赞、在看、设置星标就是对我最大的支持和鼓励!!!我开了很多系列文章,我都会慢慢把这几个系列更完,不留遗憾。我也会再开新的系列,希望我们一起学

2022-01-24 10:25:44 868

原创 C++11系列文章之一 | 类型推导神功修炼

大家好,我是小杰。如果读完这篇感觉到有用的知识增加了,不妨点个赞、在看和关注,鼓励一下!很抱歉最近两周我没怎么发原创,并不是我忘记了,而是遇到了考试周,五门考试真的是太忙了(毕竟没有听课),所以我断更了,接下来我会接着更下去。这段时间我虽然没有更文,但是我也在思考着文章的方向,我打算出几个系列,每个系列出完之后会出一篇汇总文章方便读者收藏和学习,当然我也会放到公众号下面的按钮中方便找到,目前想到的有网络框架的源码解析系列、XX天从零开发网络框架系列、C++11、14、17等系列及其应用、STL源码

2022-01-21 14:41:03 552

原创 不使用delete [] 释放内存可不可以

大家好,我是小杰。我们在手捧那两本经典的《C++ primer plus》和《C++ primer》书籍的时候,书上清楚地写着我们在堆中申请和释放内存的时候需要使用new和delete,new [] 和 delete [] 并且必须要配对使用。但是我们只是知道要记住,但是大多都是只知其然,而不知其所以然,那么今天就来深入的聊聊,为什么要配对使用,我要是不配对是使用的话会怎么样。new和delete到底做了什么我们先来看一个经典的图:从图中我们可以清楚的看到:一个C++应用程序在堆中分配内存的

2021-12-22 11:11:15 1204

原创 竟翻出高三用C语言写的贪吃蛇,分析一波

大家好,我是小杰。背景今天想起来QQ好久没有登录了,我默默的点开了我的QQ,熟练的输入账号,若有所思后输入了我的密码。密码错误?? 不慌,再试亿遍,终于登录成功了,泪目。点击了上面的微云,我看到了我的回忆与青春,看到了个压缩包,snake.zip。突然想起了我高考结束的假期自学了C语言,然后自己写了个贪吃蛇游戏 ··· ···运行效果可以先来看看它的运行效果,接着来以现在的眼光和水平来审视一下这个程序。运行视频程序分析先来画个流程图,梳理一下它的流程是什么样的这个是我根据源码画出来的流

2021-12-18 15:41:41 3001

原创 舍友一个月做出的游戏,一天被我破解了(硬核知识)

大家好,我是小杰。又是一个不寻常的周末,昨天我舍友终于做出了他的个人游戏,经过一个月的思考、画图和设计,完成了他的第一个作品。大概的功能都已经出来了,剩下的就是一些优化,新人物新特效之类的了,总的玩法应该不会有什么其他变化啦。——紧接着,今天的重头戏要登场了,他的游戏的结束正是我工作的开始!我做出了我第一个真正意义上的游戏外挂,我周六的时候耗时一天,从利用CE找偏移地址、到找基地址,踩过了好多坑,最后使用C++调用操作系统API进行游戏的注入和内存修改。晚上的时候终于打包完成了预计的功能,Perfect!

2021-12-12 10:50:33 383

转载 [西川善司]3D图形技术概念和渲染管线的处理

翻译 Trace校对&注解 千里马肝: http://www.opengpu.org/forum.php?mod=viewthread&tid=7376&extra=page%3D1   3D图形技术概念和渲染管线的处理 一:3D图形的概念 图1是3D图形的流程模型。这个虽然是对应DirectX 10/SM4的GPU流程模型,不过部分流程会根据GPU的不同,有时会...

2021-12-07 14:26:39 593

原创 掰开揉碎了教你设计线程池,还不来学?

线程池设计思路线程池是什么我们先来打个比方,线程池就好像一个工具箱,我们每次需要拧螺丝的时候都要从工具箱里面取出一个螺丝刀来,有时候需要取出一个来拧,有时候螺丝多的时候需要多个人取出多个来拧,拧完自己的螺丝那么就会把螺丝刀再放回去,然后别人下次用的时候再取出来用。也许我的例子不是太完美,但是我想我已经基本阐述清楚了线程池。说白了线程池就是相当于提前申请了一些资源也就是线程,需要的时候就从线程池中取出线程来处理一些事情,处理完毕之后再把线程放回去。为什么需要线程池我们来思考一个问题,为什么需要线程池

2021-12-03 09:18:05 424

原创 GO语言入门系列一

公众号:畅游码海 里面有更多精品原创文章~为什么要学Go语言?开发效率和运行效率二者的完美融合,天生的并发编程支持。完善的标准库包括互联网应用、系统编程和网络编程。部署起来非常的方便拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具编译程序方式一:直接运行go run xxxx.go方式二:build方式go build xxx.go变量声明Go 语言的变量的声明都是类型信息放在变量之后/// 如下:var v1 int var v2 string.

2021-11-25 20:52:12 158

原创 Linux高性能服务器编程

公众号:畅游码海 更多高质量原创文章都在里面~主机字节序和网络字节序:在32位机器上,累加器一次能装载4个字节,这四个字节在内存中排列顺序将影响它被累加器装载成的整数的值大端字节序(网络字节序):一个整数的高位字节存储在内存的低地址处小端字节序(现代PC大多数采用):整数的高位字节存储在内存的高地址处即使是同一台机器上不同语言编写的程序通信,也要考虑字节序的问题Linux下字节序转换函数: #include<netinet/in.h> unsigned long int h.

2021-11-24 23:46:27 2373

原创 日志模块设计思路

日志模块设计思路日志系统是一个项目不可或缺的东西,其存在的意义就是可以为我们输出一些关键信息,因为我们作为一个开发工程师,在项目还没有上线的时候我们可以使用本地调试工具来调试程序,也可以在调试工具或者控制台上输出一些关键信息来定位BUG,但是一旦我们开发的程序投入使用,那么我定位BUG和快速分析和修复线上系统出现的问题,唯一能靠的就是日志了。设计思路一个日志类所必备的东西:1. 存放日志输出的路径(或指向这个打开文件的文件指针)2. 一个判断路径所包含的文件是否打开成功3. 日志文件的文件名

2021-11-22 19:27:27 1386

原创 深度探索C++对象模型笔记

一、关于对象C 语言是程序性的,语言本身并没有支持数据和函数之间的关联性C++ 中可能采取抽象数据类型,或者是多层次的类结构完成C++ 的封装并没有增加多少成本,每一个成员函数虽然在class中声明,但是却不出现在每个对象中每一个非内联的成员函数只会诞生一个函数实例每个内联函数会在其每一个使用者身上产生一个函数实例C++ 在布局以及存储时间上主要的额外负担是由virtual引起的虚函数机制用以支持一个有效率的“执行期绑定”虚基类用来实现“多次出现在继承关系中的基类,有一

2021-11-21 08:18:20 794

原创 一文带你吃透汉诺塔和其变形题

普通汉诺塔感兴趣的童鞋可以与我联系和交流~公众号: 畅游码海 更多高质量原创文章都在里面!汉诺塔(港台:河内塔)(Tower of Hanoi)是根据一个传说形成的数学问题:有三根杆子A,B,C。A杆上有 N 个 (N>1) 穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至 C 杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。可以将圆盘临时置于 B 杆,也可将从 A 杆移出的圆盘重新移回 A 杆,但都必须遵循上述两条规则。对于这个问题我们可以从简单的看

2021-11-19 08:22:07 654

原创 Effective C++学习笔记

一、让自己习惯C++条款01:视C++为一个语言联邦C++并不是一个带有一组守则的一体语言:他是从四个次语言**( C、Object-Oriented C++、Template、STL )** 组成的联邦政府,每个次语言都有自己的规约。记住这四个次于语言你就会发现C++容易了解得多。条款02:尽量以const,enum,inline替换 #define#define ASPECT_RATIO 1.653以上句为例,是通过预处理器处理而不是编译器处理,有可能 ASPECT_RATIO 没进入记号

2021-11-18 10:15:08 436

原创 C++的后端框架从头开发

基于C++的后端框架Ratel 简介:从开发到现在已经半个月了,我会进行长期地开发、维护和优化,直到它变得完善。各种建议和错误读者都可以和我联系,从公众号中就可以找到我的联系方式~Ratel后端框架目前采用C++作为开发语言,理想的效果是实现一个通用的、灵活的、高效的后端开发框架,可以自由选择不同的I/O复用机制,可以自由选择采用多线程、多进程或协程方式实现,并且可以跨平台Linux和Window平台编译和运行。目前已有功能:Linux和Windows跨平台运行

2021-11-17 08:29:14 4835 1

贪吃蛇纯C语言代码实现

完全采用C语言实现,代码适合新手和学习使用,思路很好理解,我也写了实现的思路!

2022-04-11

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

TA关注的人

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