- 博客(199)
- 收藏
- 关注
原创 重写、重载、重定义
子类重新定义父类中有相同名称的**非虚函数 **( 参数列表和返回值都可以不同 ) ,指派生类的函数屏蔽了与其同名的基类函数。可以理解成发生在继承中的重载。
2025-02-25 09:59:08
186
原创 malloc如何分配内存
malloc() 在分配内存的时候,会预分配更大的空间作为内存池。malloc 申请内存的时候,会有两种方式向操作系统申请堆内存。
2025-02-22 18:36:35
179
原创 什么是虚拟内存?它的作用是什么?
是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间)。但是实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
2025-02-22 18:02:15
432
原创 手写连接池--包含Window下使用VS进行开发对MySQL的相关配置
为了提高MySQL数据库(基于C/S设计)的访问瓶颈,增加连接池,提高MySQLServer的访问效率,减少这一部分的性能损耗。window本地开发,以及linux开发,并且包含相关配置
2024-08-19 10:41:37
1094
原创 什么是CDN,CDN的作用是什么?
CDN英文全称Content Delivery Network,即为内容分发网络。它是建立并覆盖在承载网之上,将内容存储在分布式的服务器上,使⽤户可以从距离较近的服务器获取所需的内容,从⽽减少数据传输的时间和距离,提⾼内容的传输速度、减少延迟和提升⽤户体验。
2024-08-19 10:38:53
1093
原创 子网掩码是什么以及子网掩码相关计算
又称网络掩码 (Netmask),告知主机或路由设备,地址的哪一部分是网络号,包括子网的网络号部分,哪一部分是主机号部分。子网掩码使用与IP地址相同的编址格式,即32 bit—4个8位组的32位长格式。在子网掩码中,网络部分和子网络部分对应的位全为“1”,主机部分对应的位全为“0”网络掩码一般与IP地址结合使用,其中值为1的比特对应IP地址中的网络位;值为0的比特对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络位与主机位。
2024-08-14 10:06:53
11397
2
原创 IP基础知识以及IP地址分类(A类 B类 C类 D类 E类)
IP 地址是互联网协议特有的一种地址,它是 IP 协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
2024-08-14 10:06:25
1283
原创 红黑树(一)----基本知识
红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1978年发明,在当时被称为平衡二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。
2024-08-09 16:59:03
669
原创 C++ ----remove与erase区别
vector中, remove函数和 erase函数都可以实现元素的删除,但它们的用法稍微有些区别:* erase是删除指定位置的元素或者指定区域内的所有元素* remove是删除和指定元素值相同的所有元素(remove需要和erase搭配使用才能实现完整的删除功能)
2024-08-08 14:39:21
911
原创 C/C++:CV(const 与 volatile)属性的理解
C/C++提供多种声明变量和函数存储持续性、作用域和链接性的关键字,有些被称为存储说明符(store class specifier)或 cv 限定符(cv-qualifier), cv 限定符可出现于任何类型说明符(包括声明文法的 声明说明符序列)中,以指定被声明对象或被命名类型的常量性(constness)或易变性(volatility)。
2024-08-08 14:36:15
1597
原创 内存重叠以及memcpy和memmove函数详解
内存拷贝(memcpy函数)时或者在自己实现内存拷贝函数strcpy时,如果存在目标地址在原地址的范围内就造成了内存重叠。
2024-08-07 15:59:13
682
原创 initializer_list简介以及使用initializer_list实现print
利用initializer_list实现print。该类模板中主要有三个方法:begin()、end()迭代器以及获取区间中元素个数的方法size()。
2024-08-07 15:58:33
336
原创 使用Variadic Templates(可变参数模板)、decltype实现tuple
最近学习了C++2.0版本的一些新的特性,利用Variadic Templates(可变参数模板)实现tuple函数。
2024-08-06 14:01:59
481
原创 使用Variadic Templates(可变参数模板)实现max以及min
最近学习了C++2.0版本的一些新的特性,利用Variadic Templates(可变参数模板)实现支持多个参数的max函数。
2024-08-06 14:01:18
418
原创 使用Variadic Templates(可变参数模板)实现printf
最近学习了C++2.0版本的一些新的特性,利用Variadic Templates(可变参数模板)实现printf函数。
2024-08-05 16:24:14
437
原创 Go语言-- 版本管理go module以及go.sum详解
为了确保一致性构建,Go语言中引入了go.mod文件来标记每个依赖包的版本,在构建过程中go命令会下载go.mod中的依赖包,下载的依赖包会缓存在本地,以便下次构建。
2024-08-05 16:22:49
1326
1
原创 Go语言---linux下安装golang protoc详细教程以及完整安装protoc-gen-go工具
Protobuf 在 .proto 定义需要处理的结构化数据,可以通过 protoc 工具,将 .proto 文件转换为 C、C++、Golang、Java、Python 等多种语言的代码,兼容性好,易于使用。
2024-08-02 11:47:55
2012
1
原创 Go语言---sync.WaitGroup
在Go语言中,给我们提供了用于线程同步的sync.WaitGroup,简单来讲,WaitGroup就是指等待一组,等待一个系列执行完成后才会继续向下执行。
2024-08-02 11:44:31
416
原创 Go语言----flag包(导入、配置、以及常用方法Parse()、Parsed()、NArg())
在 Go语言中有很多种方法来处理命令行参数。如果我们只是想简单的获取命令行的参数,可以像中介绍的不使用任何库,直接使用 os.Args;d但是 Golang 的标准库提供了 flag 包来处理命令行参数。
2024-07-30 21:25:36
960
原创 Go语言---sort 包中sort.Ints()、sort.Strings()、sort.Slice()、sort.SliceStable()、sort.Search()方法详解
在每一种编程语言中,都会涉及到排序操作。而在Go语言中,其中内置的 sort 包中提供了根据一些排序函数来对任何序列进行排序的功能。通过这个包中的一些方法,我们可以对一些基本的可以比较大小的类型的切片进行排序,也可以通过实现排序接口的几个特定方法实现自定义排序。
2024-07-30 21:23:52
1011
原创 Go语言----http.ResponseWriter接口
指示响应内容的格式,如果这个类型浏览器能够支持阅览并且没有设置content-disposition情况浏览器就会直接展示该资源,比如png、jpeg、video等格式,如果浏览器不支持就会,默认触发下载。在某些下载文件的场景中,服务端可能会返回文件流,并在返回头中带上Content-Type: application/octet-stream,告知浏览器这是一个字节流,浏览器处理字节流的默认方式就是下载。包含响应数据的描述信息,以及下载或者在线查看的处理方式。
2024-07-29 20:40:06
626
原创 Go语言---http.request中req.URL.Path以及req.URL.Path[:]
利用go语言进行HTTP编程的过程中,我们会使用net/http包,提供了强大的HTTP客户端和服务器功能,使得编写高性能的网络应用程序变得轻而易举。
2024-07-29 20:39:40
392
原创 Go语言---- strings.HasPrefix、strings.Split、strings.SplitN() 函数
使用Go语言实现HTTP服务端时,我们通常会使用一些前缀来用于节点之间的相互访问,这时就会涉及到strings.HasPrefix函数,用来检测字符串是否以指定的前缀开头。
2024-07-28 20:53:07
408
原创 Go语言----reflect.DeepEqual函数
在使用go语言进行编程的时候,我们通常会对模块进行测试,在测试的过程中,经常会使用,这个函数是在reflect包中,其提供了运行时反射机制的标准库。其中的reflect.DeepEqual()函数是用来比较两个值是否相等的方法。在go语言中,存在值类型和引用类型。值类型是指int、float、bool和string等类型,它们在赋值和函数传递时会被拷贝一份作为新的变量,而不是直接引用原来的变量。
2024-07-28 20:52:04
462
原创 Go语言----sync.Mutex互斥锁
在Go语言的并发编程中,多个协程(goroutine)同时读写同一个变量,在并发度较高的情况下,可能会发生冲突。这时候就需要我们确保一次只有一个协程(goroutine)可以访问这个变量,从而避免冲突,这也称之为。在Go语言中,希望使用channel信道的方式来处理并发情况。但在某些特殊情况下,依然需要使用到锁,为此Go语言给我们提供了互斥锁(sync.Mutex)与读写锁(sync.RWMutex),这是实现线程安全、保护共享资源免受竞态条件影响的核心工具。
2024-07-27 14:23:16
924
原创 Go语言---list的声明、常用方法以及遍历
root为哨兵链表元素,只能使用 &root, root.prev 和 root.nextlen为当前列表长度,不包括哨兵元素其中,next和previous指针 是双链表的两个指针,为了简化实现,在内部将链表 l 实现为一个环,这样&l.root既是最后一个列表元素(l.Back())的下一个元素,又是第一个列表元素(l.Front())的上一个元素。list为该元素所属的链表Value存储在该元素中的值Go语言中的list的实现原理是双向链表。
2024-07-25 18:17:42
833
原创 Go语言---并发版网页段子筛选爬虫
经过查看页面的源码:我们可以总结出来以下的信息:网页规律:<h3 class="blogtitle"><a href=" 开头" 结尾<h3 class="blogtitle"><a href=" 一个段子的ur1连接" 结尾一个系列段子的规律:<h1 class="con_tilte">幽默笑话(100个幽默笑话简短)</h1> //标题<div class="con_text"> 段子开头<p class="share"> 段子结尾。
2024-07-25 18:17:22
611
原创 Go语言---HTTP编程基础(简单版百度贴吧爬虫)
网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则我们称之为网络爬虫算法。使用Python可以很方便地编写出爬虫程序,进行互联网信息的自动化检索。
2024-07-17 07:51:18
385
原创 Go语言---HTTP编程基础(HTTP服务端以及客户端实现)
Go 语言标准库内建提供了 net/http 包,涵盖了 HTTP 客户端和服务端的具体实现。使用net/http 包,我们可以很方便地编写 HTTP 客户端或服务端的程序。
2024-07-16 07:56:27
559
原创 Go语言---HTTP编程基础(Web 工作方式、HTTP 协议、请求/响应报文)
对于普通的上网过程,浏览器本身是一个客户端,当我们输入URL的时候,首先浏览器会去请求 DNS 服务器,通过DNS获取相应的域名对应的IP,然后通过IP 地址找到IP 对应的服务器后,要求建立 TCP 连接,等浏览器发送完 HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTPResponse(响应)包:客户端收到来自服务器的响应后开始渲染这个Response 包里的主体(body),等收到全部的内容随后断开与该服务器之间的TCP连接。
2024-07-16 07:56:04
1594
1
原创 Go语言--广播式并发聊天服务器
1. 每个客户端上线,服务端可以向其他客户端广播上线信息;2. 发送的消息可以广播给其他在线的客户3. 支持改名4. 支持客户端主动退出5. 支持通过who查找当前在线的用户6. 超时退出
2024-07-15 07:55:56
550
原创 Go语言---简单版并发服务器
使用GO语言实现简单版并发服务器 能够接受多个客户端的连接,并且将客户端发来的小写字符转化为大写字符发送回去,并在客户端发送exit时,断开连接。
2024-07-14 07:50:49
702
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人