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

原创 「计算机网络」初识http协议

HTTP协议——互联网发展的基石,从一个最简单的“helloworld”网页,到现在博客平台、视频网站都离不开HTTP协议的存在。随着互联网的发展,Web网页的设计也越发复杂,前后端开发的分工也越发明确,HTTP作为连接前后端的桥梁,只有掌握它才能更好地实现前后端数据交接。

2024-06-15 10:14:56 976

原创 [C++] 从零实现一个ping服务

ping命令,因为其简单、易用等特点,几乎所有的操作系统都内置了一个ping命令。如果你是一名C++初学者,对网络编程、系统编程有所了解,但又没有多少实操经验的话,不妨来尝试动手实现一个属于自己的ping命令。这样一来,也能提高你对系统编程、网络编程的能力。本篇文章实现了一个简易的ping指令,其对系统编程、网络编程都有所涉及,但真实的ping指令可远不止这么简单,感兴趣的读者可以通过访问Linux开源项目来了解真正的实现。

2024-06-13 20:24:14 1097 2

原创 【计算机网络】初识IP协议

IP协议,可谓是程序猿必备的基础功之一,这不仅仅是因为IP协议为面试的常客,更是因为IP协议为整个网络协议中最重要、最常被人接触的一种协议。例如IP地址就几乎为所有人所熟知的一种概念,无论是浏览网页、聊天、打游戏,都离不开IP地址,想必这也说明了其重要性了吧。掌握IP协议不仅能够让你在面试脱颖而出,更能提高你的作为程序员的内功,学习IP协议刻不容缓,从现在开始!!!

2024-06-04 12:48:25 1327

原创 [面经] 西山居非正式面试(C++)

这次面试的经验对我来说非常的宝贵,这不单单是指获得了面试的经验,更是让我对C++知识点有了一次更全面的了解(感觉面试好像更能加深自己对知识的了解…)。

2024-05-28 10:28:11 399

原创 【计算机网络】初识Tcp协议

TCP三次握手、四次挥手,相信许多计算机网络初学者们都对这些问题感到困扰,TCP协议作为考试、面试的大常客,如果不真正了解它们的原理,那么等待你的很可能是挂科、回去等通知吧(大悲)。为了避免悲剧的再度发生,学习TCP协议不容刻缓,从现在开始!!!TCP协议的设计不仅考虑了连接的可靠性,还考虑到了流量控制、拥堵控制、性能优化等各种方法,相信学习了本文了你,被问到TCP协议的特点时,肯定能侃侃而谈,给对方一个好影响吧。参考书籍:《图解TCP/IP》主页C++github。

2024-05-19 15:35:52 1078

原创 【计算机网络】Socket网络编程

现今我们的日常生活当中,网络已经成为了必不可少的存在,大到覆盖全世界的互联网,小到身边的各种电器,可以说网络无处不在。我们作为一名程序员,如果对网络不甚了解,那么注定会度过一个相对失败的一生,需要利用网络进行通信的应用正变得越来越多,企业对程序员网络知识的需求也越发变得重要,因此,学习网络一定会对你有所帮助。socket函数是系统用于创建套接字描述符的接口,该函数会返回一个文件描述符,之后网络的通信便围绕着这个文件描述符进行。//函数原型// 返回值为文件描述符参数选项。

2024-05-13 19:23:18 903

原创 【c++】线程池的原理及实现

不知道各位是否有试过点进限时抽奖网站、抢票网站呢?你是否好奇过一个网站、游戏是如何实现数十万、百万用户一起进行访问呢?其实这类软件的背后的服务器总是离不开一个叫做线程池的设计,而这就是本文将讲解的内容,学习如何设计线程池,是每个后端程序猿的必修课之一。掌握如何编写一个高效、安全的线程池对一个后端程序员来讲就像是西方不能没有耶路撒冷,毕竟如果要开发一个高并发需求的程序,例如抢票网站,服务器速度更不上、或者出现了线程安全,到时候用户就要寄律师函了。主页C++github。

2024-05-09 08:14:34 735 2

原创 「C++」掌握C++异步编程

异步任务是多线程编程的核心,若想学习多线程设计,深入了解这些基本概念是必不可少的。如果你从未了解过这些概念,亦或者对c++异步任务的库函数有所遗忘了,不妨点进本文来学习一下。

2024-04-18 18:48:17 776

原创 【c++】c++线程库的基本使用

在C++线程库推出之前,如果要实现跨平台多线程,那么我们就得需要直到每个平台的线程API的知识,这无疑对每个程序员都是不小的挑战,毕竟大部分人都不愿意去一一学习这些接口,而线程库的推出,封装了线程底层的实现,不仅提高了代码的可移植性,还减少了C++的学习压力。功能类别关键特性描述线程管理抽象系统级线程,简化线程创建和管理。基础同步mutexlock_guard提供基本的线程同步机制,如互斥锁,以及自动锁管理工具。高级同步使线程能在特定条件下挂起和唤醒,优化资源利用和线程协调。C++20新特性。

2024-04-09 14:35:22 766

原创 【Linux】线程同步

多线程编程互斥机制虽然能保护共享资源的安全,但同时也带来了”线程饥饿问题“,而且也无法控制线程的执行顺序,为了解决这种情况,就要用到同步机制。初始化信号量// 头文件: <semaphore.h>// sem_t : 信号量结构参数:执行信号量结构指针如果为非零值,信号量在多个进程间共享;为零则在创建它的进程的各个线程之间共享。信号量的初始值。销毁信号量等待信号量发布信号量函数的使用sem_t sem;// 定义信号量// 线程函数1,将等待信号量// 等待信号量。

2024-03-31 20:24:56 825

原创 【Linux】多线程编程基础

无论你是否为程序员,相信多线程这个词汇应该都有所耳闻,像是在某个优化很差的游戏中听闻这游戏甚至是单线程的,如果你对多线程感兴趣,不妨点进本文来学习多线程编程,即使没有深厚的C/C++编程基础,你也能到本文学习到如何编写多线程程序。创建锁// 初始化锁 pthread_mutex_t 用于声明互斥量(mutex)对象。

2024-03-21 22:18:40 1123

原创 【Linux】IPC-信号

信号,一种无论是生活还是编程都离不开的东西。生活中,我们通过信号来对外部发生的事情进行反应,就好像你的手机来了一条信息,你可以选择点开处理它,也可以忽略掉它,而在Linux中的信号也是如此。本篇文章我们探索从信号的概念到阻塞和处理函数的应用,相信你对linux系统编程又有了一个新的了解吧。主页C++github。

2024-03-15 21:25:30 1022

原创 [Linux] 进程间通信基础

你是否了解进程间是如何通信的呢?你是否知道管道的工作原理呢?管道是Linux中最基本的也是最常用的进程间通信手段,----(Todo)在使用共享内存前,必须先简单介绍一下System V 与 POSIX,它们是UNIX系统的两种不同系统标准,而在Linux上他们两者的接口都有兼容,接下来我们要使用的共享内存属于System V的。要使用共享内存就得先知道如何检查系统中的共享内存,以及如果程序遇到异常时,如何删除共享内存。#显示共享内存ipcs -m。

2024-03-14 18:34:29 867

原创 【c++】特殊类的设计

你可听说过只能在堆上创建的类、无法被拷贝的类、甚至是不能继承的类,如果你从未听闻过这样的奇妙的类设计,不妨点进本篇文章,来进入学习设计模式的第一步。设计模式是前人总结出来的开发模板,每一个程序员都应该对它们有所了解,设计模式大致分为三类:创建型、结构型、行为型,本篇介绍了创建型的单例模式,但细算设计模式,一共有23种之多,这些设计模式让我们日后再谈。单例模式类型饿汉模式懒汉模式在程序启动时就完成了单例的初始化,保证了线程安全。实现简单。单例实例在需要时才被创建,可以节省资源。

2024-03-12 16:47:26 1189

原创 【Linux】动态库与静态库的打包使用

想必各位喜欢打电脑游戏,总是能游戏文件夹看到一种熟悉的文件后缀名——.lib的存在吧,你是否对其存在感到好奇,为何大部分游戏都离开它们呢?本文将带你充分了解它们的存在,这样一来以后如果有伙伴问起你,那么ta也会你知识的渊博感到佩服的吧。特性静态库动态库加载时机编译时将代码链接至可执行文件程序运行时加载文件大小可能较大,因为包含了所有使用到的库代码较小,因为代码在应用之间共享更新与维护需要重新编译程序以更新库可以独立于应用更新运行时依赖性不依赖外部库文件。

2024-03-12 16:25:00 845

原创 【c++】智能指针

在C++编程中,因为各种栈溢出、堆内存泄露、野指针等问题,C++程序员对内存的管理可谓是家常便饭,但即使如此,我们也会犯错,然后被那一大堆难以跟踪的错误打个猝不及防。于是乎,C++11引入了智能指针,其能够自动管理指针的生命周期,不再需要我们手动释放,简化了内存管理的复杂性。智能指针是为了实现RAII。

2024-03-11 11:28:57 989

原创 「Leetcode」滑动窗口—无重复字符的最长子串

主页C++github。

2023-12-13 19:49:38 264 2

原创 「Leetcode」滑动窗口—长度最小的子数组

滑动窗口解法解析

2023-12-13 18:39:35 124

原创 「C++」C++11新特性

C++标准10年磨一剑,于2011年迎来了它真正意义上的第二个标准,C++11能更好地适用与系统开发和库开发,语法与更加的繁华与简单化,本篇文章将重点介绍其中的右值引用lambda表达式包装器。主页C++github。

2023-12-03 23:24:46 235 1

原创 「C++」位图和布隆过滤器

位图可以将数据压缩,但只适用与整形或能转化成整形的数据。布隆过滤器可以找到一定不存在的数据,但对于存在的数据具有误判率,且一般不能删除元素。主页C++github。

2023-12-03 19:03:54 362

原创 「C++」哈希表的实现(unordered系底层)

unorered系列是C++中使用关联系容器优点缺点闭散列实现简单容易导致数据堆积开散列存储开销减少如果数据过于集中,会导致查找性能上的损耗主页C++github。

2023-12-02 16:53:47 373 1

原创 「Linux」使用C语言制作简易Shell

对于很多学习后端的同学来讲,学习了C语言,发现除了能写出那个经典的“hello world”以外,其他什么都做不了,如果你在烦恼着这些事的话,不妨来学习下如何实现Linux中的shell吧,如此不仅能提高你C语言功力,也能增进你对系统的理解。

2023-11-30 20:51:06 629

原创 「Linux」进程等待与替换

在如今的时代,多进程编程已经变成了必不可少的一部分,而进程等待、进程替换这两个概念都是作为多进程编程所必不可少的知识,为了掌握多进程编程,今天就从进程等待与替换开始吧。主页C++github。

2023-11-30 13:09:51 168 2

原创 「C++」红黑树的插入(手撕红黑树系列)

作为一名程序员相信你一定有所听闻红黑树的大名,像是手撕红黑树这样的名梗已经几乎传遍了程序员之间,如果你还不会“手撕”红黑树,那么本文将会教会你如何“手撕”红黑树。在进入插入操作前,得先定义好树的节点。因为树的插入需要用到父节点、甚至祖父节点,所以为了方便插入,二叉树的节点新增了父节点的指针。enum Color //颜色的定义RED, //0BLACK //1struct RBTreeNode //红黑树节点的定义//节点的左孩子//节点的右孩子//节点的双亲Color _col;

2023-11-28 23:19:19 176 4

原创 「Linux」git的安装与使用

git是一款多平台的版本管理器,用于对代码进行版本控制,如果你还不知如何安装git,那么本文将交给你答案。

2023-11-27 10:31:47 342 1

原创 [Linux] 进程入门

作为一名程序员,我们天天都在与代码打交道,但你是否有了解过我们的程序是如何在操作系统中运行与调度的呢?如果你对进程与计算机不甚了解,那么本文将带领你走向操作系统进程的第一步。主页C++github。

2023-11-21 16:19:51 166 3

原创 「C++」AVL树的实现(动图)

AVL树又名高度平衡的二叉搜索树,由G. M. Adelson-Velsky和E. M. Landis发明,顾名思义,其任意节点的左右子树最大高度差都不超过1,以此来阻止二叉搜索树退化成为单叉树这种情况。任意节点的左右子树最大高度差不超过1所有节点的左节点都比父节点小。所有节点的右节点都比父节点大。它的左右子树都是AVL树。中序遍历是有序的因为我们需要频繁去调整树的平衡,使用普通的二链结构会比较难以控制节点,所以我使用了三叉链的结构,多增加了一个指向父节点的指针。, _kv(kv)

2023-11-21 13:57:59 215 2

原创 「C++」map和set的使用介绍

stl容器分为两类,分别是序列容器和关联式容器,学习关联式容器可以帮助我们去解决去重等问题。主页C++github。

2023-11-18 10:49:23 73 2

原创 「C++」虚函数与多态

虚函数是为了实现多态而实现的功能,被virtual所修饰的成员函数就被称为虚函数。class A {// 图片多态又分为动态与静态。在程序编译期间确定了程序的行为,例如函数重载动态多态:在程序运行期间,根据具体拿到的类型确定程序具体的行为,调用具体的函数。多态调用需要使用基类指针或引用去指向派生类的对象,拥有虚函数的对象都会有一个虚表指针来指向其虚函数。主页C++github。

2023-11-16 18:29:33 362 4

原创 「C++」二叉搜索树的实现(动图)

你是否有听说过二叉搜索树呢,如果你没有学习过二叉搜索树,你可以从本篇文章学习到二叉搜索树的知识。

2023-11-16 12:49:20 289 1

原创 【C++】继承与菱形继承

面对对象编程的重要目的之一就是减少代码的重复使用,而继承便为了这个目标而实现的功能。继承通过限定访问符 :来进行定义继承有三种方式去继承,分别是公有继承、保护继承、私有继承。不同继承方式的区别:类成员public继承protected继承private继承基类的public成员派生类的public成员派生类的protected成员派生类的private成员基类的protected派生类的protected成员派生类的private成员派生类的private成员。

2023-11-15 13:12:00 255

原创 「C++」priority_queue的模拟实现

不知你是否有听说过priority_queue,它是C++的内置类,又名优先级队列。学习其能帮助你解决许多按照优先级排序的问题。如果你还没有学习过优先级队列,那么本文将带领你走向其第一步。priority_queue可以使用deque或vector作为其底层实现的适配器。适配器是一种设计模式,用于将一个接口转换成另一个接口,以便不兼容的类可以协同工作。著名的stl标准库中也使用了适配器模式,如queue、stack、priority_queue等模板类就是如此。需要完整代码,可以到我的github去取。

2023-11-15 12:53:09 28

原创 「Linux」vim的介绍与使用

初来乍到linux的你,是否由听说过vim这个软件呢,这是可谓是linux中最著名的软件(编辑器)之一了,今天就由我来带领你迈入vim的第一步吧。简单来说vim是一款支持语法高亮的文本编辑器,默认的vim可谓是看者难受,用者更难受,但只要经过简单的配置,vim就能摇身一变成为你最趁手的编辑器了(或许还需要一点点的时间…)。主页C++github。

2023-11-13 18:05:41 163

原创 「Linux基础开发工具」gcc和gdb

在学习编程的路途中,你是否有了解过自己使用的编译器呢,这里说的编译器指的可不是vscode或vs2022这样的ide,如果你还没有了解过编译器,本文将为你介绍编译器中最著名的gcc(???我在写什么)gcc是linux下的一款开源的编译器软件,全程,可用于编译多种编程语言,包含C++、C、Java等。

2023-11-13 18:05:00 26

原创 「leetcode」动态规划之三步问题

主页C++github。

2023-11-03 20:40:04 30 1

原创 [C++] 深度剖析list

list是C++标准库中STL的一部分,list基于链表结构的类,相信你在阅读了本文后一定能熟练掌握使用list。list是基于双向链表结构的一种容器,能够在任意位置进行插入与删除,以及双向迭代,因为其内存分布不是连续的,所以并不支持像vector的随机访问。支持双向迭代,头插与尾插只需常量级的时间复杂度。内存空间不连续,无法做到随机访问。无需移动空间便能在任意结点插入数据。与forward_list非常相似,但forward_list是单向链表。是类模板,能够存储任意类型数据。

2023-11-03 19:09:20 517 1

原创 「leetcode」向动态规划迈出第一步!第 N 个泰波那契数

解决动态规划需要记住五大步骤,分解题目划分子问题确定状态表示与状态解决公式,得到初始化,确定填表顺序和返回值的格式。

2023-11-02 21:34:30 143 1

原创 「C++」类的六大默认成员函数

如果一个类为空,那么它真的是空类吗,当然不是的,类无论是否为空,编译器都会为其增加六个默认的成员函数,本文将为你介绍这六个函数类的默认成员函数有构造函数、析构函数、拷贝函数、赋值重载、取地址重载、const取地址重载。主页C++github。

2023-11-02 18:24:40 275 3

原创 「C++」vector的使用介绍

vector是STL库中一个容器,用于操作数组,十分的方便,让我们在学会vector的用法的同时不妨学习一下它的实现吧。vector是一个模板类,它的内部空间是动态开辟的,并且支持自动扩展空间,当所需空间大于现有空间,就会动态改变。详细请看官方文档vector与顺序表类型,提供了类型数组的访问方式,可以存储任何类型的数据。我们作为程序员不仅要会用STL,也要明理,会写。如果需要完整代码可以到我的github。

2023-11-01 14:53:14 163 3

原创 「C++」string类模拟实现

string 是C++早期实现的一个内置容器,那时STL还没有出现,所以string有不少地方会让人感到诧异与不成熟,但即使如此,现在的string也已经成了C++不可却少的一部分。string类是用来表示字符串的对象,提供了一系列用于操作字符串的方法,例如查找子串、连接字符串、比较字符串等。github。

2023-11-01 09:12:23 28 1

空空如也

空空如也

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

TA关注的人

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