- 博客(137)
- 收藏
- 关注
原创 【计算机网络】详解CA认证,预防中间者攻击!
CA代表"证书权威(Certificate Authority)",它是一种专门负责发放、管理和撤销数字证书的专业机构,是一个可信赖的第三方。在互联网通信中,数字证书用于验证网络用户的身份,如HTTPS网站上显示的小锁图标就表明该网站通过了CA颁发的安全认证。当您浏览加密网站时,浏览器会向CA请求验证服务器身份,如果验证成功,就会得到一个证书,证明服务器是其所声称的那样。数字证书是一种包含证书持有者(也就是向CA机构申请的服务端)的信息、公钥以及由CA签名的数字签名的电子文档。
2024-08-09 11:02:45
1642
原创 【计算机网络】什么是socket编程?以及相关接口详解
我们使用一张图片很形象的可以看出socket所处的位置。从上图看出,Socket处于应用层与传输层的中间软件抽象层,它是一组接口。并且前面我们也学过,运输层和网络层其实属于操作系统内层面,我们只给用户提供使用的接口即可,不可能让用户能直接访问到内核部分。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。linux下一切皆文件!!!所以本质来说Socket即是一种。
2024-08-06 18:03:18
2510
原创 【C++】拷贝构造函数和赋值构造函数有什么区别?及深浅拷贝再深入
最近看见这样一个问题,突然发现自己也回答的不是很清楚,写篇博客复习一下。这个问题中的赋值构造的说法有误:C++中没有“赋值构造函数”,对应的是“赋值操作符重载函数”(operator=函数)拷贝构造函数是一种特殊构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用public:MyClass();// 默认构造函数// 拷贝构造函数注意一定是引用。否则会导致无限递归的调用拷贝构造函数。原因:当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用拷贝构造函数。
2024-08-06 12:06:18
1192
原创 【C++11新特性】lambda表达式
本质就是一个局部的匿名函数对象通常用于编写简单的、一次性的函数对象。这种特性使得它们非常适合作为参数传递给高阶函数(接受函数作为参数或返回函数的函数)。
2024-07-29 10:31:43
373
原创 【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
上一篇博客讲解了System V共享内存,在最后说它的缺点时提到,他没有提供进程同步机制,那么为了弥补这个缺点,所以引入了信号量sem机制。临界资源:多个进程共同使用的一份资源,例如共享内存就是一个临界资源临界区:不同进程内部,访问临界资源的那段代码信号量的本质是:是一个描述临界资源的计数器System V信号量是一种在操作系统中提供的进程间通信(IPC)机制,用于实现进程之间的同步和互斥。它通过对计数器进行操作来控制资源的访问。
2024-07-09 19:19:17
1186
原创 【Linux】SystemV共享内存--shmget()、ftok()、shmat()、shmdt()、shmctl()函数
什么是共享内存,以及shmget()、ftok()、shmat()、shmdt()、shmctl()函数详解
2024-07-09 11:56:39
864
原创 【Linux】进程间的通信----管道
管道(Pipe)是一种进程间通信机制,用于在相关进程之间传输数据。它是一种特殊的文件描述符,它可以连接一个进程的输出(写入端)到另一个进程的输入(读取端),从而使得这两个进程可以通过管道进行数据传输。也就是说管道是单向传输的!现实生活中,我们所看听到的天然气管道、石油管道基本上都是单向传输的.历史上出现了许多通信机制,但是目前主流的进程通信只剩下了一小部分,管道之所以保留至今,是应为它没有多余的代码,而是巧妙的利用父子进程之间的特性,共用同一个文件进行信息的传输。
2024-07-07 18:17:21
954
原创 【Linux】什么是进程间通信?方式有哪些?本质理解?
进程间通信(Inter-Process Communication,IPC)是指操作系统或计算机系统中,不同进程之间进行数据交换和通信的机制或技术。由于进程是操作系统中独立运行的程序实例,而进程间通信允许这些独立的进程之间相互协作、共享资源和进行数据交换。
2024-07-06 19:18:13
1163
原创 【Linux】动态库的制作与使用
续上一篇博客讲解了静态库的制作过程,本篇博客将开始动态库制作的讲解。一定要看了静态库的制作后,才能更好的理解动态库的制作过程。
2024-07-05 17:27:12
789
原创 【Linux】动静态库的基础知识
动态链接:简单理解就是,在我们写好我们C语言程序之后,有一些库函数比如printf,scanf,strlen等等,这些在被编译之时,编译器会将其替换成库中的这个函数的地址。这样在执行到这个函数的时候,编译器便可以根据这个地址找到这个库乃至找到这个函数.静态链接这个与动态链接不同的是:这些程序在编译时,编译器会直接将库中方法的实现,整体拷贝一份到我们的可执行程序中!而不是那个函数的地址了.但是缺点也很明显:会占用资源,想想好几份相同的代码拷贝到这里,再次运行一定占用大量的资源.当然优点是不会再依赖库。
2024-07-04 18:00:00
778
原创 【C++11】initializer_list详解!
nitializer_list 是一种C++11新的类型特性,它允许我们以统一的方式初始化对象。它是一个代表数组的轻量级包装器,通常用于构造函数和函数参数中,以允许传递一个初始化元素列表。initializer_list也是一种模板类型。;begin()end()迭代器以及获取区间中元素个数的方法size()保存的只是指向一个常量,无法对其修改C++11允许构造函数和其他函数把初始化列表当做参数。
2024-06-18 10:32:30
748
原创 【Linux】进程终止
我们前面学过,一个程序运行起来变成一个进程,进程本质就是它的代码和数据 + 内核数据结构。那这些数据是需要占用内存空间的,那肯定要去进行释放所以,进程终止就是要释放进程申请的内核数据结构和对应的数据和代码。本质是释放系统资源。
2024-05-25 20:03:17
1325
1
原创 【Linux】环境变量知识汇总超详解!看这篇就够了
环境变量(environment variables):一般是指在操作系统在开机的时候帮我们维护系统运行时的一些动态参数。如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找在Windows中,打开高级选项–环境变量便可以看到如下但是有没有注意过,你每次配置环境变量,你是往系统变量的Path中加呢?还是用户变量。环境变量的用户变量与系统变量的区别。
2024-05-14 18:45:00
1132
原创 【Linux】环境变量是什么?如何配置?详解
环境变量(environment variables):一般是指在操作系统在开机的时候帮我们维护系统运行时的一些动态参数在Windows中,打开高级选项–环境变量便可以看到如下但是有没有注意过,你每次配置环境变量,你是往系统变量的Path中加呢?还是用户变量。环境变量的用户变量与系统变量的区别我也是刚注意到这个问题哈哈,下面就是环境变量的用户变量与系统变量的区别1、环境变量没有区分大小写,例如path跟PATH是一样的2、系统变量对所有用户有效3、用户变量只对当前用户有效。
2024-05-11 18:04:44
1599
原创 【Linux】为什么有僵尸状态,什么是僵尸进程,造成危害以及如何避免“内存泄漏”问题详解
学校星期五最后一节课大扫除,我们每次打扫完成后,不会立即就回家🏡,而是必须等待老师👱来验收完成后我才能回家。进程完成后,不能立即退出(回家🏡),必须等待父进程(老师👱)来获取子进程的信息后才能彻底释放掉。那这个等待的过程与僵尸状态十分相似。
2024-05-10 19:54:35
1041
原创 【Linux】进程的七大状态详解!
就绪状态(Ready):进程已经准备好执行但是还没有被处理器调度执行的状态。运行状态(Running):进程正在被处理器执行的状态。阻塞状态(Blocked):进程因为等待某些事件(如I/O操作完成)而被阻塞的状态。等待状态(Waiting):进程因为等待某些事件(如I/O操作完成、信号等)而被阻塞的状态。暂停状态(Paused):进程被暂停执行,可以自行恢复执行。挂起状态(Suspended):进程被操作系统挂起执行,资源被释放,进程状态被保存到磁盘上。
2024-05-10 16:18:52
3422
原创 【Linux】深浅睡眠状态超详解!!!
可中断睡眠状态进程因等待某个条件(如 I/O 完成、互斥锁释放或某个事件发生)而无法继续执行。在这种情况下,进程会进入阻塞状态,在阻塞状态下,进程不能继续执行,并且等待某个事件或资源的完成后或者接收到信号,操作系统会自动将其状态转换为运行状态,继续执行接下来的任务。* 我们的bash,也可以算是一种【阻塞状态】,一直等待着我们去输入命令行,一旦有了的话它就进行读取将该进程运行起来我们可以看到其是出于S+的状态,因为【shell】此时正在等待用户的输入,遇到I/O操作。激活自动运行状态。
2024-05-09 22:37:03
601
原创 【C++】map和set的基础详解
本篇博客是对C++中的map和set做一个小小的总结,主要是学习之后的知识点,并会不会细节展开太多。后续会慢慢发布更多底层实现模拟等等更深入了解。setset 变量名;其中,类型名可以是 int、double、char、struct,也可以是 STL 容器:vector、set、queue。1.set中只放value,而map必须存放完整的,但set在底层实际存放的还是由构成的键值对。只不过两者相同。2.set中的元素不可以重复(因此可以使用set进行去重)。
2024-05-08 18:59:07
951
原创 【Linux】中的进程(PCB)详解及查看方法
可执行程序被加载到内存,加载的是程序的代码和数据,可是操作系统并不认识哪些代码和数据对应哪些进程。所以,操作系统在加载可执行程序形成进程的同时,会创建一个描述该进程的结构体,称为PCB(process control block,进程控制块),linux操作系统下称之为task_struct。操作系统通过PCB中的各种属性信息(状态,优先级,内存指针字段,标识符…),就能够了解到这个进程的属性信息,进而控制进程的运行。此后,操作系统对于进程的管理,就转换成了对于PCB链表的增删查改。
2024-04-27 19:30:00
2532
原创 【Linux】权限(rwx)及chmod、chown、chgrp修改权限等指令详解!
linux权限(rwx)及chmod、chown、chgrp修改权限等指令详解!
2024-04-26 18:30:00
2918
原创 chown命令错误:lhr is not in the sudoers file. This incident will be reported.怎么解决
xxx ALL=(ALL) ALL (这里的xxx是你的用户名)找到这行 root ALL=(ALL) ALL,在他下面添加。1.切换到root用户下,su -3.编辑sudoers文件。
2024-04-26 13:05:50
294
原创 【Liunx】程序的执行过程及gcc/g++的理解
链接(linking)是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储器并执行。
2024-04-25 19:30:00
678
原创 使用gdb调试遇到No symbol table is loaded. Use the “file“ command.怎么办?
在makefile文件如下进行修改即可。如果是在命令行中执行gcc,就直接跟上【-g】.出现下面问题,通常是没有处于调式模式环境下,所以我们需要在gcc指令后加 【-g】。因为,我么的gcc编辑器默认是动态链接,而且是realese发布版本。主要思路就是在gcc -g。
2024-04-25 16:30:39
1546
原创 Debug和Release的区别
在使用VS的时候我们可以直接使用鼠标来进行操作,当前程序以DeBug或者是Release的形式进行运行,那么运行出来的可执行程序版本也是不同的,我们程序员在编写代码后运行一般是使用【DeBug】环境进行运行。因为在企业里写软件项目,将代码写完后程序员自己要做简单的测试,保证代码没有问题当程序员自己测试完没有问题之后,就会将这个可执行程序给到测试人员进行测试,而且会给出自己的单元测试报告。对于测试人员来说所处的模式是【Release】,也就是将来客户要使用的这款软件的发布版本。
2024-04-25 15:09:24
515
原创 【Linux】谈谈shell外壳是什么?
外壳又叫shell,都是一个意思。命令行解释器我们经常使用的Xshell就是一种强大的安全终端模拟软件,用于远程连接Linux服务器,方便用户对Linux服务器上的资源文件进行远程操控;我们购买的Liunx云服务器,就需要使用Xshell这种终端模拟器,通过在命令行输入指令,进行使用。shell有很多种,最常见的是bash它逐渐成为 Linux 系统的标准 Shell), 另外还有sh, csh, tcsh, ksh。它们出现的年代不同,所支持的功能也有差异。
2024-04-24 21:01:59
575
原创 【Linux】什么是yum?--linux中的软件包管理器详解
1.查看系统是否符合程序需求2.查看是否有已安装的版本3.创建/更新程序文件/文件夹4.添加配置数据,如配置文件、windows registry entries(windows注册表条目)、环境变量5.让用户可用,如添加链接、快捷方式、书签6.配置自动运行的组件,如daemons或windows服务7.启动程序8.更新程序。
2024-04-24 20:15:19
1110
2
原创 【STL】迭代器iterator详解
迭代器(iterator)是一种可以遍历容器元素的数据类型。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。C++迭代器是一种用于遍历容器中元的对象。它提供了一种统一的访问容器元素的方式,无论容器的类型如何,都可以使用相同的语法进行操作。
2024-04-15 20:25:17
1946
原创 vim中如何进行批量注释?取消批量注释?
3.选择完成后,直接按下【shift+i】进入插入模式。1.首先进入vim的命令模式。然后按【ctrl+V】4.最后按【ESC】即可进行批量注释。2.按下【J】,可以向下继续选中。按下【L】可以向右选中一个位置。取消注释又是如何操作的呢?选中后,继续【J】向下选中。直接按【d】,就好了。
2024-04-14 20:55:05
1077
原创 【Liunx】一键式配置vim,这一篇就够了配图超丰富!
一、配置个性化vim首先,进入自己的用户中,配置自己的vim时,是不会影响其他用户的。因为有关vim的配置取决于每个用户家目录下的一个配置文件.vimrc接下来就去我的家目录下看看这个隐藏文件【.vimrc】打开它,你会发现空空如也,因为你还什么都没配置呢。二、直接一键配置上面的个性化配置固然很不错!但是这样一个个加真的好麻烦,有没有什么写好的包可以直接下载下来使用呢?答案:有。在gitee上搜索vimforcpp。直接使用大佬写好的配置文件。vimforcpp。
2024-04-14 18:32:49
380
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人