自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 问答 (1)
  • 收藏
  • 关注

原创 当你在浏览器中键入“https://www.google.com”并按 Enter 键时会发生什么?

互联网是我们每天使用的奇迹,在其表面之下隐藏着一层层的复杂性。有没有想过当你输入一个URL时,幕后会发生什么?今天,让我们满足我们的好奇心,揭开由一个简单的命令启动的错综复杂的进程网络:键入“https://www.google.com”并按 Enter。

2023-12-16 11:30:52 3047

原创 23种经典设计模式:单例模式篇(C++)

单例模式是设计模式的一种(属于创建型模式 (Creational Patterns) ),它确保某个类只有一个实例,并为该实例提供一个全局访问点。它常用于那些在整个系统中只需要一个实例的类,例如配置管理、日志记录、线程池、缓存等。

2023-11-27 22:15:00 1627 1

原创 字符编码的了解

在编写文件读取功能的过程中,我遭遇了一个棘手的乱码难题。经过细致的排查,发现这一问题的根源在于文件的字符编码。为了帮助大家有效地克服编码差异所带来的开发挑战,因此,我收集了字符集编码的相关知识,并撰写了这篇博客,旨在帮助大家加深对字符编码的了解。

2023-10-03 13:20:18 435

原创 最好用的Boost.Asio:现代C++网络编程

本节我们探讨了Boost.Asio的一些高级主题,学习了如何在Boost.Asio中利用多线程来优化性能,如何使用定时器来执行定时任务,如何通过SSL来加密通信内容,以及Boost.Asio的扩展性如何帮助我们更加灵活地解决问题。Boost.Asio起源于Boost库,是一款专为网络I/O、定时器、串行端口通信设计的库,提供了同步和异步的编程模型,用以简化网络和低级I/O的操作。:Boost.Asio的官方文档是学习该库的最主要和最权威的资源,提供了详细的API文档和教程。

2023-09-27 18:31:19 6884

原创 【socket编程】TCP服务器、UDP服务器、本地套接字【C语言代码实现】

大小端概念、网络字节序和主机字节序、网络套接字函数(socket connect bind accept listen等)、TCP服务器(进程版和线程版)、UDP服务器、本地套接字。这些都是 C语言实现的代码,建议理解并自行敲出来。

2023-07-13 12:44:20 1966 1

原创 【协议】常见的应用层协议及其用途

在计算机网络中,应用层协议是用于不同计算机之间通信的一组规则和约定。这些协议定义了数据交换的格式、语义和顺序,以实现特定的应用需求。本文将介绍一些常见的应用层协议以及它们的用途,帮助读者更好地了解和应用这些协议。

2023-07-12 13:46:45 1599

原创 沉浸式翻译(immersive-translate):解决谷歌翻译无法使用的问题

该款插件更有助于英文水平的提高(中英文对照),而且功能更丰富(PDF、电子书阅读等),一款有利的工具往往事半功倍。

2023-07-12 09:03:43 3552 1

原创 【Vim神器】配置适合自己的编辑方式,配置参考(~/.vimrc)

在编写代码时,为了提高代码的可读性和维护性,我们经常在文件的头部添加一些信息提示,如作者、日期、版本号等。本文介绍了如何在 Vim 编辑器中实现自动添加信息提示的功能。 结尾提供~/.vimr参考配置,可提高代码编写速度(例如:自动缩进、自动补全等)

2023-07-04 19:42:11 5842 2

原创 【系统调用】常用系统调用函数:详细介绍

提供了一些常见的系统调用函数的具体介绍和代码示例,包括open、perror、close、write、read、stat、dup、fcntl等函数,涵盖了文件操作、错误处理、文件状态获取、文件描述符操作等功能。此外,我们还介绍了其他一些与I/O和目录相关的系统调用函数,包括access、chmod、chown、truncate、link、symlink、readlink、unlink、rename、getcwd、chdir、opendir、closedir、readdir等函数,并提供了相应的代码示例。

2023-07-04 12:25:22 3167

原创 【线程】线程概念及相关函数实现

在本篇博客中,我们详细介绍了线程编程中的相关函数。通过了解和掌握这些函数,我们能够更灵活地创建、管理和同步线程,实现并发编程和多任务处理。这些函数包括线程的创建、启动、等待和终止等,是编写多线程应用程序的关键工具。掌握线程函数的使用方法可以帮助我们构建高效、可靠的多线程应用程序,并充分利用计算资源来提升性能。这些函数的灵活应用使我们能够实现线程间的协调和通信,避免竞态条件和死锁等并发编程中常见的问题。

2023-07-03 21:27:06 699

原创 【进程】理解进程、相关代码演示

本章介绍了进程的概念、创建和使用。通过了解进程管理的核心原理,我们可以更好地利用和控制系统资源,实现并发操作,并构建高效的应用程序。深入了解进程的概念和技术,将使我们能够设计出更稳定、可扩展的系统架构,并解决多进程之间的通信和同步问题。希望这篇博客能帮助您在应用程序开发过程中更好地理解和应用进程管理的重要性。谢谢阅读!

2023-07-03 16:55:25 600

原创 【互斥锁与信号量】线程通信:互斥锁(mutex)与信号量(semaphore)

总的来说,互斥锁和信号量都是线程和进程同步的重要工具。互斥锁主要用于保护资源,保证同一时间只有一个线程或进程访问某一资源,从而避免并发问题。而信号量更多的是用于线程和进程之间的通信和同步,控制在一定范围内的并发访问,为程序提供更细粒度的并发控制。掌握互斥锁和信号量的使用和区别,能极大地提高多线程和多进程编程的效率和稳定性。

2023-06-29 17:18:23 2795 1

原创 【共享内存】共享内存(Shared Memory)与进程通信

共享内存作为一种高效的进程间通信机制,以其独特的优势在多进程环境中发挥着重要的角色。它允许多个进程直接访问同一块内存区域,从而实现了数据的快速共享和交换,显著提高了系统性能。然而,这也带来了数据同步和并发控制的挑战。我们需要结合锁、信号量等同步技术来解决这些问题。总的来说,共享内存是一种强大而灵活的工具,但需要谨慎、有效地使用,以确保程序的正确性和稳定性。

2023-06-29 12:18:53 6976

原创 【消息队列】消息队列(Message Queues)与进程通信

消息队列作为一种IPC机制,它提供了进程间发送和接收消息的强大功能。通过使用消息队列,可以构建复杂的多进程应用程序,实现数据的安全传输和有序交流,从而极大地提高了系统的并发处理能力。但,也要意识到消息队列的限制,比如队列的大小、存储消息的总数量等,它们都可能会对应用程序的性能产生影响。因此,在使用消息队列时,我们需要权衡其优点和潜在的挑战,确保在满足业务需求的同时,能保持高效的性能和稳定的运行。

2023-06-29 00:20:08 1359

原创 【命名管道】命名管道(FIFO)与进程通信

命名管道(FIFO)为我们提供了一个在不同进程间进行数据传递的简单而有效的途径。了解如何正确使用FIFO,避免常见的问题,比如权限设定和缓冲区管理。虽然有其复杂性,但是只要掌握了这些要点,我们就能够用好FIFO,为进程间的通信带来便利。

2023-06-28 20:29:55 645

原创 【无名管道】无名管道(Pipe)与进程通信:快速上手

无名管道是一种强大且基础的进程间通信机制,它使得具有亲缘关系的进程之间能够方便地共享数据。无名管道的使用,无论是在简单的Shell命令,还是在复杂的多进程应用中,都有着广泛的应用。注意:无名管道只能在具有公共祖先的进程之间使用,且只能实现单向通信。

2023-06-28 12:27:20 1102

原创 【信号】信号处理与进程通信:快速上手

信号机制是操作系统中用于处理异步事件的一种强大工具,它提供了一种处理程序中非预期事件(如硬件错误、特定的用户交互等)的方法。理解和有效使用信号机制,可以帮助我们编写更健壮、更稳定的程序。总的来说,信号是进程通信的重要方式之一,它的理解和掌握对于系统编程人员至关重要。

2023-06-27 22:22:39 1540

原创 【GDB】快速上手,调试神器GDB

GDB是一个强大的调试工具,熟练掌握它可以极大提高我们解决问题的效率。此外GDB不仅是一个调试工具,更是一个强大的程序分析工具。通过掌握这些技巧,你可以更深入地理解你的程序,并更有效地解决问题。

2023-06-26 23:19:33 414

原创 静态库libxxx.a和动态库libxxx.so的制作

静态链接将所有依赖的库函数直接编译进最终的可执行文件,提供高独立性和执行效率,但可能导致大的磁盘和内存占用,且更新库函数需要重新编译。而动态链接则在程序运行时动态加载库函数,有效节省存储空间,便于库函数的更新和共享,但运行时需要保证正确版本的库在合适的位置,且可能影响执行效率。

2023-06-26 23:05:22 912

原创 Makefile中级篇:驾驭自动编译的力量

本篇博客适合帮助Makefile初学者过渡到中高级水平,但深入的技能仍需在实践中不断积累。学习Makefile的关键是实践。开始编写简单的Makefile,然后逐步增加复杂性。尝试为你的项目或其他开源项目编写或优化Makefile。当你遇到问题或不理解的地方,查阅文档、搜索相关问题或询问社区。逐步深入,不断实践,最终你会达到高级水平。

2023-06-26 22:46:38 357

原创 【C++】整理了一些常见的排序算法

1. 冒泡排序2. 选择排序 3. 插入排序4. 希尔排序5. 快速排序6. 归并排序7. 堆排序 8. 计数排序9. 桶排序10. 基数排序

2023-06-13 19:06:26 1360

原创 C++11新特性:为什么nullptr会比NULL更好用?

C++11中的nullptr通过提供明确的类型和语义,解决了使用NULL可能出现的类型不安全和语义不清的问题。它在函数重载、模板编程以及代码的可读性和可维护性方面,相较于NULL都表现出了显著的优势。为了开发出更加稳健、可维护的C++程序,开发者应该在代码中广泛使用nullptr来代替NULL。

2023-06-12 22:35:13 247 1

原创 C++异常类:编写自己的异常类

本章主要涵盖常见的C++异常类以及相应介绍,章末编写自己的异常类。

2023-06-12 16:44:19 865

原创 【算法】深入了解数据压缩算法(无损压缩和有损压缩)

数据压缩是计算机领域中一项重要的技术,它可以将数据在占用更小的存储空间或通过更低的传输带宽进行表示和传输,压缩算法基于对数据的统计特性和重复模式的利用,可以分为两大类:无损压缩算法和有损压缩算法。

2023-06-11 10:13:43 17449 1

原创 【工具】Xshell-7和Xftp-7下载安装使用教程

Xshell和Xftp下载、安装和使用教程,跟着步骤做就能安装使用,哪里有不清楚的评论区留言。

2023-06-10 17:34:10 20331 4

原创 【工具】putty下载、安装、使用和常用设置教程

本章:putty下载、安装、使用和常用设置教程(跟着步骤一步步来即可)

2023-06-09 22:26:26 118292 18

原创 【C/C++】深入理解C与C++中的const关键字

本文介绍了在C和C++中const关键字的使用方法和注意事项。const关键字可以用于变量、函数、指针和类成员,具有保护数据不被修改、提高代码可读性和安全性的作用。尽管C和C++共享相同的关键字,但在实现时存在一些不同。在实际编程中,需要根据需要选择合适的const用法,并注意区别C和C++中的实现差异。

2023-06-07 23:32:31 829

原创 【C++】C++中的 `this` 指针:深度探索和应用

本文的目的是深入探讨 this 指针的使用,包括其基本理解、实际应用、使用限制以及在不同编程场景中的作用。我们将从基础概念开始,逐步深入,包括 this 指针在成员函数中的使用、解决变量命名冲突、实现链式调用、在继承和多态中的作用、const 成员函数中的特殊行为、多线程编程中的应用等。通过本文,读者将对 this 指针有更全面的理解,并能够正确而有效地使用它来改进自己的 C++ 代码。

2023-06-06 12:37:31 8292 3

原创 【C++】深拷贝&浅拷贝

在 C++ 中,当一个对象通过赋值或拷贝即将成为另一个对象的副本时,会发生“浅拷贝”或“深拷贝”。当对象中只包含了基本数据类型成员时,可以使用浅拷贝;当对象中包含了指针类型成员时,需要使用深拷贝。

2023-06-04 22:23:59 2498

原创 【C语言】printf的输出格式控制符、格式修饰符、转义字符

格式控制符:%d:用于输出十进制有符号整数。%u:用于输出十进制无符号整数。%f:用于输出十进制浮点数字。%e或%E:用于输出指数形式的浮点数。%g或%G:用于输出浮点数,根据数值大小自动选择使用%f或%e。%x或%X:用于输出十六进制。%c:用于输出单个字符。%s:用于输出字符串。%p:用于输出指针地址。%lu:用于输出无符号长整型。%lld或%I64d:用于输出有符号长长整型。%llu或%I64u:用于输出无符号长长整型。%Lf:用于输出长双精度浮点数

2023-06-04 18:09:43 9382

原创 【C/C++】三目运算符的详细分析

C/C++ 三目运算符是一种极为简洁的条件运算符,它可以用于简化代码和提高代码的可读性。但在使用时,也需要注意适当地选择应用场景,避免过度使用导致代码可读性降低、复杂度增加和性能下降。在编写代码时,我们应该结合具体情况来选择适当的语句和运算符,以实现高质量的代码。

2023-06-03 23:19:57 27686

原创 【C++】【命名规范】你的代码风格是哪种?(驼峰命名法、下划线命名法、帕斯卡命名法、常量命名法等)

本文分享了常见的命名风格习惯(例如驼峰命名法、下划线命名法、帕斯卡命名法、常量命名法等),向读者推荐了C/C++中类名、接口名、函数名、变量名和常量的常见命名风格,以及扩展了一些常见的代码书写风格(例如{}),最后延申了两个对代码执行有影响的编程习惯。 希望本文能给各位读者带来些许帮助,同时也欢迎热心的码友提供自己的见解分享在评论区!

2023-06-03 14:37:43 9101

原创 【C++】类中静态(static)成员变量、静态(static)成员函数和静态常量(static const)的应用

本文介绍了C++中静态成员变量、静态常量和静态成员函数的特性、应用、常见的软件设计模式以及单例模式、工厂模式的实现。静态成员变量、静态常量和静态成员函数可以帮助我们更好地组织数据和操作,并提高代码的效率和可读性。

2023-06-02 11:04:41 11477 5

原创 【C++】【类型转换】都在这了(肝货一万字!!!)

本篇文章详细讲解了C++中各种类型转换的使用方法和注意事项。隐式类型转换由编译器自动执行,通常发生在算术计算或需要分配空间的情况下;显式类型转化由开发者手动执行,包括四种强制类型转换方式:static_cast、dynamic_cast、const_cast和reinterpret_cast。除了四种强制类型转换方式外,C++标准库中还提供了多种类型操作类模板,这些模板可以用于实现类型转换和其他一些类型操作的功能。在进行类型转换时,可能会出现一些潜在的问题,包括数据精

2023-06-01 23:45:00 575

原创 【C++】你是怎么用内联函数(inline)的?

本篇文章将从什么是内联函数、内联函数和普通函数的区别、预处理宏的缺陷、内联函数的优缺点以及使用内联函数的一些技巧等方面进行介绍。希望读者读完该篇博客,能对内联函数(inline)有更深刻的理解。

2023-06-01 13:39:05 1971

原创 【C++】 全局变量(Global Variable)存在的一些潜在问题

C++中的全局变量可能会带来一些潜在的问题。为了解决这些问题,我们可以使用一些增强检测方法,例如将全局变量定义在命名空间中,使用常量代替不变的全局变量,使用局部变量代替全局变量,使用封装机制和使用单例模式。

2023-06-01 10:13:16 6044

原创 【C++】 作用域(::)和命名空间(namespace)使用的注意事项

通过合理使用作用域和命名空间,可以提高程序的可读性、可维护性和性能。在编写程序时,我们应该根据程序的规模、复杂度、可读性和可维护性等方面综合考虑,合理使用作用域和命名空间,并尽量做出相应的优化策略,以提高程序的性能。

2023-05-31 16:11:55 2063

原创 【C++】 友元(Friend)机制的利弊关系【友元函数、友元类】

在实际应用中,友元机制应该被谨慎地使用,只用于必要的情况,并尽可能地将私有成员封装成公有接口。友元是指在一个类中,另外一个类或函数可以直接访问其中被声明为友元的类的私有成员的机制。友元机制包含两种类型:友元函数和友元类。友元函数是一个非成员函数,可以直接访问一个类的私有成员。友元类是一个类,可以访问被它声明为友元的类的私有成员。

2023-05-30 14:46:49 2243

原创 【C++ 】关于引用(reference)的代码案例

引用的本质是一个指针常量。它在编译时被解析为一个指针,但在程序运行时它的行为类似于对被引用变量的直接访问。引用所占的内存空间和被引用的变量相同,但是引用不是一个独立的变量,它只是被引用变量的一个别名,因此没有自己的地址。在编译器生成的汇编代码中,引用的使用被转换为取地址、间接引用等指针操作。在C++中,引用是一种非常方便的机制,可以使代码更加简洁易读,同时也能够避免指针所带来的一些问题,如越界、空指针等。

2023-05-29 17:01:22 1323

原创 【C/C++】编程技巧总结(提高代码质量)

C/C++是一种广泛使用的编程语言,在计算机科学和工程领域具有广泛的应用。C/C++具有高效性、灵活性、可移植性等优点,但其编程难度较大,需要程序员掌握一些优化技巧,以提高程序的性能和稳定性。本篇介绍了一些常用的C/C++编程技巧,包括数据类型、数组和指针、函数、内存管理以及代码调试和测试等方面。

2023-05-29 11:23:44 951

空空如也

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

TA关注的人

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