自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

北 海的博客

方向是 C/C++,同时在学 Linux,待学习数据库、网络 及 各种算法,主攻后端开发方向

  • 博客(118)
  • 收藏
  • 关注

原创 网络编程『简易TCP网络程序』

随着数字时代的来临,TCP网络程序已成为程序员不可或缺的技术领域。本博客将带领读者深入研究,从最基础的字符串回响开始,逐步探索至多进程、多线程服务器的高级实践。我们将详细探讨每个环节的核心功能和实现细节,致力于帮助读者深刻理解网络编程的本质。通过系统学习本博客内容,读者将获得构建稳健网络应用的重要技能,更加自信地应对日益复杂的软件开发挑战。这里将为你的编程旅程提供扎实的基础和深远的启示。

2023-12-28 16:28:38 7637 177

原创 网络编程『socket套接字 ‖ 简易UDP网络程序』

在当今数字化时代,网络通信作为连接世界的桥梁,成为计算机科学领域中至关重要的一部分。理解网络编程是每一位程序员必备的技能之一,而掌握套接字编程则是深入了解网络通信的关键。本博客将深入讨论套接字编程中的基本概念、常见API以及实际应用,通过一步步的学习,帮助读者逐渐掌握网络编程的精髓。

2023-12-18 22:34:19 6922 203

原创 C++『异常』

异常处理在软件开发中扮演着关键的角色,它为程序员提供了一种有力的手段来处理和响应程序执行过程中可能出现的错误。本文将深入探讨异常的基本概念、异常处理方式、异常的使用技巧和异常体系的设计,以帮助开发者更好地理解和应用异常处理机制

2023-12-10 16:25:14 1533 210

原创 MySQL基础『数据类型』

MySQL中常用的数据类型介绍

2023-12-04 16:28:00 2165 149

原创 网络基础『发展 ‖ 协议 ‖ 传输 ‖ 地址』

探索网络基础的『发展 ‖ 协议 ‖ 传输 ‖ 地址』,深入解析网络发展历史、OSI七层模型、TCP/IP五层模型,生动演示数据传输过程。透过实例剖析,读者轻松领悟网络通信的奥秘,同时涉及协议报头与网络地址,使抽象概念形象易懂。为初学者提供扎实基础,为网络理解铺平路径。

2023-11-30 22:43:49 1539 172

原创 MySQL表的操作『增删改查』

操作,毕竟数据丢了不容易找回,比如这里的删除字段,如果表中有数据,那么表中数据关于该字段的信息会被全部删除,所以删除字段要。会记录下用户的所有操作痕迹,这也是备份后,恢复数据库的关键,把所有指令再执行一遍,就能得到一模一样的数据库了。信息,比如有哪些字段,才能知道如何使用这张表,查看表的详细信息语法为。如果想查看关于表更详细的信息,可以通过指令查看建表时的语句内容,语法为。,只要我们在创建表时不指定属性,表就会继承数据库的默认属性。可以看到,之前的注释没了,并且字段的类型也修改了。

2023-11-24 19:59:42 1620 157

原创 C++11『lambda表达式 ‖ 线程库 ‖ 包装器』

自从C++98以来,C++11无疑是一个相当成功的版本更新。它引入了许多重要的语言特性和标准库增强,为C++编程带来了重大的改进和便利。C++11的发布标志着C++语言的现代化和进步,为程序员提供了更多工具和选项来编写高效、可维护和现代的代码在这C++11系列的收尾文章中,我们深入研究了lambda表达式,为函数对象提供了快速构建的方法。接着,我们学习了标准线程库,包括线程、互斥锁、条件变量等,为跨平台的多线程编程提供了强大工具。

2023-11-23 20:28:21 1175 117

原创 C++11『右值引用 ‖ 完美转发 ‖ 新增类功能 ‖ 可变参数模板』

自从C++98以来,C++11无疑是一个相当成功的版本更新。它引入了许多重要的语言特性和标准库增强,为C++编程带来了重大的改进和便利。C++11的发布标志着C++语言的现代化和进步,为程序员提供了更多工具和选项来编写高效、可维护和现代的代码

2023-11-16 07:00:00 1014 158

原创 MySQL库的操作『增删改查 ‖ 编码问题 ‖ 备份与恢复』

不行,会直接报错的,既然校验规则不适用,创建了也没意义,这就好比你往语文卷子上写英语,语文老师大概率是看不懂的,并且不会批改你的卷子。中,会出现各种奇怪的问题,毕竟老版本没有新特性,还有就是这种做法太暴力了。,如果用户不指定,就使用默认的,如果用户指定了,就优先使用用户指定的。是用来存放内容的,内容又是以不同编码格式存储的,所以需要先确定。,原因是恢复时可能会出现问题,假设恢复至版本更低的。,也就意味着可以使用不同的校验规则,接下来演示。目录中,在进入具体的数据库目录,查看后缀为。

2023-11-14 20:10:07 2604 85

原创 C++11『基础新特性』

自从C++98以来,C++11无疑是一个相当成功的版本更新。它引入了许多重要的语言特性和标准库增强,为C++编程带来了重大的改进和便利。C++11的发布标志着C++语言的现代化和进步,为程序员提供了更多工具和选项来编写高效、可维护和现代的代码

2023-11-13 12:42:48 1259 114

原创 Linux多线程【线程池】

线程池是一种管理线程的机制,它可以在需要时自动创建和销毁线程,以及分配和回收线程资源。线程池的主要优点是减少了频繁创建和销毁线程所带来的开销,提高了系统的稳定性和可扩展性。此外,线程池还可以有效地控制线程的数量,避免过多线程导致的资源竞争和系统过载

2023-11-08 10:54:07 1588 133

原创 MySQL基础『数据库基础』

数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合我们可以直接把数据存放到文件中,这样也能保证数据长期存储,那为什么还要搞一个数据库呢?因为一般的文件并没有提供很好的数据管理能力(站在我们用户角度),比如对于一个大小为几个GB的文档文件,如果我们想要快速的查找某个字段,就需要先读取文件信息,再进行遍历查找,效率是非常低的安全性问题:数据容易被修改,可能造成误操作不利于数据查询与管理:数据直接存储,没有被高效组织。

2023-11-05 19:29:52 1130 120

原创 MySQL安装『适用于 CentOS 7』

此时可以选择卸载原有服务,重新安装,也可以选择直接使用(如果可用的情况下);刚开始会设置一个临时密码,可以通过指令获取,如果获取失败,可以跳转至本文最后一部分。等简单密码失败,说明是密码规则没有修改成功,过于简单的密码不允许设置,可以重新登录。设置默认编码格式,后续在创建数据库时,如未指定编码,则使用配置文件中的默认编码。为了方便后续使用,这里直接把密码等级设为最低,如果输入指令报错,可以跳转至。时,随便输入密码或者直接回车,都能正常登录,这是因为。密码,如果想重新启用登录时密码验证,直接去除。

2023-10-29 17:17:49 3052 99

原创 Linux多线程【生产者消费者模型】

生产者消费者模型(CP模型)是一种非常经典的设计,常常出现在各种 「操作系统」 书籍中,深受教师们的喜爱;这种模型在实际开发中还被广泛使用,因为它在多线程场景中是十分高效的!「生产者消费者模型」是通过一个容器来解决生产者与消费者的强耦合关系,生产者与消费者之间不直接进行通讯,而是利用 「容器」来进行通讯

2023-10-26 18:34:41 1328 74

原创 Linux多线程【线程互斥与同步】

初学者在使用 多线程 并发执行任务时一定会遇到 并发访问的问题,最直观的感受就是每次运行得出的结果值大概率不一致,这种执行结果不一致的现象是非常致命,因为它具有随机性,即结果可能是对的,也可能是错的,无法可靠的完成任务,类似物理学神兽 薛定谔的猫

2023-09-29 17:58:19 2056 133

原创 Linux多线程【线程控制】

线程是进程内部的一个执行流,作为CPU运行的基本单位,对于线程的合理控制与任务的执行效率息息相关,因此掌握线程基本操作(线程控制)是很有必要的

2023-09-17 21:42:25 1494 172

原创 Linux多线程【初识线程】

将一份代码成功编译后,可以得到一个可执行程序,程序运行后,相关代码和数据被load到内存中,并且操作系统会生成对应数据结构(比如PCB)对其进行管理及分配资源,准备工作做完之后,我们就可以得到一个运行中的程序,简称为进程,对于操作系统来说,光有进程的概念是无法满足高效运行的需求的,因此需要一种执行粒度更细、调度成本更低的执行流,而这就是线程Windows中的线程

2023-08-17 21:23:54 1622 191

原创 C++ 哈希的应用【布隆过滤器】

注册账号是进行网络冲浪的第一步操作,而拥有一个具有个性且独一无二的用户昵称是非常重要的,很多人在填写昵称时,常常会看到此昵称已存在的提示,系统是如何快速知道当前昵称是否存在呢?总不能挨个去遍历对比吧,这时候就需要我们本文中的主角:布隆过滤器。

2023-07-30 21:39:02 5277 107

原创 C++ 哈希的应用【位图】

位图(bitset)是一种特殊的数据结构,仅仅依靠01表示当前位置是否有数据存在,常用于对查找速度和存储空间有着高要求的场景中,除此之外,位图还可以配合宏定义,实现同时传递多个参数,比如系统调用open,其中的参数2(打开方式)就是一个简单的位图结构

2023-07-25 22:57:28 5151 183

原创 创作一周年纪念日【道阻且长,行则将至】

关于我的 编程学习 之路还要从 2022年5月 中旬说起,在抖音刷到的一个短视频《真实招聘会现场实拍》,就是一个关于 应届生 面试时的视频录像,看着视频中面对 专业知识 回答的支支吾吾的 应届生,突然想到自己几年后会不会也是如此,所谓 毕业就失业,于是我开始反思,最终得出了一个结论

2023-07-15 17:52:26 7871 197

原创 C++【哈希表的完善及封装】

关于哈希表的两种实现方法:闭散列、开散列 已经在上一篇文章中学习过了,闭散列 存在踩踏问题,十分影响效率,因此在实践中往往会选择更加优秀的 开散列,哈希表(开散列)又叫做 哈希桶,作为被选中的结构,我们需要对其进行改造,完善哈希桶,使其最终能封装出 unordered_set 和 unordered_map

2023-07-12 18:39:11 6890 169

原创 C++【哈希表的模拟实现】

哈希表的核心思想是映射,对数据的键值进行处理后,映射至表中对应的位置,实现存储,利用空间换时间,哈希表的查找效率非常高,可以达到O(1),哈希表的实现主要分为两种:闭散列 与 开散列,本文中将利用这两种方案实现哈希表

2023-07-09 22:54:58 4319 94

原创 C++【初识哈希】

哈希(Hash)是一个广泛的概念,其中包括哈希表、哈希冲突、哈希函数等诸多概念,核心为元素(键值)与存储位置(哈希值)之间的映射关系,哈希值可以通过各种哈希函数进行计算,需要尽量确保 “唯一性”,避免冲突,除此之外,哈希函数还可用于区块链中,计算 区块头(Head)中的信息,本文将带你认识哈希,学习其中的各种知识

2023-07-03 09:03:09 7384 196

原创 Linux进程信号【信号处理】

从信号产生到信号保存,中间经历了很多,当操作系统准备对信号进行处理时,还需要判断时机是否 “合适”,在绝大多数情况下,只有在 “合适” 的时机才能处理信号,即调用信号的执行动作。关于信号何时处理、该如何处理,本文中将会一一揭晓

2023-06-30 22:03:19 9356 176

原创 Linux进程信号【信号保存】

信号从产生到执行,并不会被立即处理,这就意味着需要一种 “方式” 记录信号是否产生,对于31个普通信号来说,一个int整型就足以表示所有普通信号的产生信息了;信号还有可能被 “阻塞”,对于这种多状态、多结果的事物,操作系统会将其进行描述、组织、管理,这一过程称为信号保存阶段

2023-06-29 21:57:57 6731 90

原创 Linux进程信号【信号产生】

在Linux中,进程具有独立性,进程在运行后可能 “放飞自我”,这是不利于管理的,于是需要一种约定俗成的方式来控制进程的运行,这就是进程信号,本文将会从什么是进程信号开篇,讲述各种进程信号的产生方式及作用不同的信号,

2023-06-25 22:37:12 13066 169

原创 C++【一棵红黑树封装 set 和 map】

红黑树的基本情况我们已经在上一篇文章中学习过了,本文主要研究的是红黑树的实际应用:封装实现set和map,看看如何通过一棵红黑树满足两个不同的数据结构;在正式封装之前,先要对之前的红黑树进行完善,增加必要功能

2023-06-24 10:27:22 13716 128

原创 C++【红黑树】

红黑树是平衡二叉搜索树中的一种,红黑树性能优异,广泛用于实践中,比如Linux内核中的CFS调度器就用到了红黑树,由此可见红黑树的重要性

2023-06-22 01:07:47 17479 153

原创 C++【AVL树】

普通的二叉搜索树可能会退化为单支树(歪脖子树),导致搜索性能严重下降,为了解决这个问题,诞生了平衡二叉搜索树,主要是通过某些规则判断后,降低二叉树的高度,从而避免退化,本文介绍的AVL树就属于其中一种比较经典的平衡二叉搜索树,它是通过 平衡因子 的方式来降低二叉树高度的,具体怎么操作,可以接着往下看

2023-06-19 00:14:33 9660 146

原创 C++【set 和 map 学习及使用】

set和map是STL中的容器之一,不同于普通容器,它俩的查找速度极快,常用来存储各种经常被检索的数据,因为这俩容器的底层是平衡二叉搜索树中的红黑树。除此之外,还可以借助其特殊的性质,解决部分难题

2023-06-16 17:18:23 10937 111

原创 C++【二叉树进阶试题】

二叉树相关题解,具有一定难度

2023-06-14 17:10:34 9837 27

原创 C++【二叉搜索树】

时隔多日,又回到了二叉树的学习中,在C++进阶中,我们首先要学习 二叉搜索树,重新捡起二叉树的相关知识,然后会学习AVL树 及 红黑树,最后会用红黑树封装实现库中的set和map,作为C++进阶中的难度最高峰,整个学习过程非常艰辛,但关关难过关关过,让我们先从比较简单的 二叉搜索树 开始学习。

2023-06-13 20:37:23 10278 118

原创 Linux进程间通信【消息队列、信号量】

在System V消息队列信号量;随着时代的发展,这些陈旧的标准都已经较少使用了,但作为IPC中的经典知识,我们可以对其做一个简单了解,扩展IPC的知识栈,尤其是信号量,可以通过它,为以后多线程学习中POSIX信号量的学习做铺垫

2023-06-10 22:00:56 9103 62

原创 Linux进程间通信【共享内存】

共享内存出自System V标准,是众多IPC解决方案中最快的一种,使用共享内存进行通信时,不需要借助函数进入内核传递数据,而是直接对同一块空间进行数据访问,至于共享内存是如何使用的、通信原理是怎么实现的、以及共享内存+命名管道的组合通信程序该如何实现,都将在本文中解答

2023-06-09 18:37:12 9192 107

原创 Linux进程间通信【命名管道】

命名管道通信属于IPC的其中一种方式,作为管道家族,命名管道的特点就是自带同步与互斥机制、数据单向流通,与匿名管道不同的是:命名管道有自己的名字,因此可以被没有血缘关系的进程看到,意味着命名管道可以实现毫不相干的两个独立进程间通信

2023-06-07 22:13:06 10106 107

原创 Linux进程间通信【匿名管道】

进程间通信简称为IPC(Interprocess communication),是两个不同进程间进行任务协同的必要基础。进行通信时,首先需要确保不同进程之间构建联系,其次再根据不同的使用场景选择不同的通信解决方案,本文主要介绍的通信解决方案为匿名管道

2023-06-05 21:34:14 9417 113

原创 Day6 不要二、把字符串转换成整数

在刷题过程中遇到的选择题错题 + 编程题,将原题目与解题思路分享出来,供大家学习参考

2023-06-01 19:26:00 7345 64

原创 Day5 统计回文、连续最大和

在刷题过程中遇到的选择题错题 + 编程题,将原题目与解题思路分享出来,供大家学习参考

2023-05-30 17:23:07 6851 27

原创 Day4 计算糖果、进制转换

在刷题过程中遇到的选择题错题 + 编程题,将原题目与解题思路分享出来,供大家学习参考

2023-05-28 20:33:07 7287 34

原创 C++【多态】

多态是面向对象三大基本特征中的最后一个,多态可以实现 “一个接口,多种方法”,比如父子类中的同名方法,在增加了多态后,调用同名函数时,可以根据不同的对象(父类对象或子类对象)调用属于自己的函数,实现不同的方法,因此多态的实现依赖于继承

2023-05-27 15:53:15 8630 145

C语言实现课设 “通讯录” 这个是文件版,可以直接作为课设作业交了

C语言实现课设 “通讯录” 这个是文件版,可以直接作为课设作业交了

2022-12-14

C语言实现小游戏 “扫雷” 这个也比较推荐新手学习

C语言实现小游戏 “扫雷” 这个也比较推荐新手学习

2022-12-14

C语言实现小游戏 “三子棋” 适合初学者学习

C语言实现小游戏 “三子棋” 适合初学者学习

2022-12-14

空空如也

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

TA关注的人

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