- 博客(26)
- 收藏
- 关注
原创 TCP 和 UDP 可以绑定相同的端口吗?
TCP 和 UDP 在内核中是两个完全独立的模块,送给 TCP/UDP 模块的报文根据「端口号」确定送给哪个应用程序处理,因此 TCP 和 UDP 可以绑定相同的端口。
2025-02-11 16:29:17
1192
原创 服务器绑定 127.0.0.1 和 0.0.0.0 的区别
绑定 127.0.0.1 是绑定到 lookback 这个虚拟的本地回环接口,该接口只处理本机上的数据,如果服务器绑定 127.0.0.1 外部是无法访问的。绑定 0.0.0.0 是绑定到所有可用的网络接口,也就是说,此时可以接受来自任何网络接口的连接请求,外部是可以正常访问的。
2025-02-10 21:33:32
963
原创 govalidator 验证陷阱:字段名与规则名冲突
我有一个 User 结构体,我想验证里面的 email 字段存储的是不是邮箱,于是想用 govalidator 来实现这一功能,可是不管我输入什么,govalidator 都返回 true。
2024-11-13 14:56:13
469
原创 Redis RDB 持久化问题
有 A、B 两台计算机,将 A 中 Redis 的 rdb 文件拷贝到 B,B 重启 Redis 并未加载拷贝来的 rdb 文件。经过重重排查,最终发现问题出在 Redis 关闭的时候。
2024-05-26 21:55:49
973
原创 enable_shared_from_this 实现原理
enable_shared_from_this 可以帮助我们用 this 指针安全地创建 shared_ptr。
2024-05-15 21:10:57
855
原创 shared_ptr 引用计数相关问题
智能指针是 C++11 增加的非常重要的特性,并且也是面试的高频考点,本文主要解释以下几个问题:- 引用计数是怎么共享的、怎么解决并发问题的- 资源释放时,控制块的内存释放吗- weak_ptr 怎么判断对象是否已经释放
2024-05-11 20:29:43
1030
原创 Redis rehash 相关问题
本文主要介绍 Redis Hash 表 rehash 相关的三个问题:- 什么时候触发 rehash- rehash 扩容扩多大- rehash 如何执行
2024-05-03 20:03:51
914
原创 Win 下 ncnn 编译运行
官网上编译的过程比较详细,本文主要记录编译、运行过程中遇到的问题,希望可以帮到大家。我的环境是 Win10 系统,VS 2022。
2024-04-24 16:42:32
1320
原创 TIME_WAIT 状态存在的目的
TIME_WAIT 状态有两个存在的理由:1. 可靠地实现 TCP 全双工连接的终止2. 允许老的重复数据在网络中消逝
2024-03-08 09:30:00
545
原创 shared_ptr 模拟实现
shared_ptr 这种智能指针访问对象采用共享所有权来管理其生存期。没有哪个特定的 shared_ptr 拥有该对象。取而代之的是,所有指涉到它的 shared_ptr 共同协作,确保在不再需要该对象的时刻将其析构。
2023-12-04 08:45:32
581
原创 Open64 编译器安装
网络上关于 Open64 的资料很少,自己安装也花了很长时间,因此将安装过程整理出来。我使用的是 w2ll 分支,对应的 Tags 为「clang-prebuilt」,系统是 ubuntu 20.04,使用以下方法成功安装的时间是:2023 年 08 月 01 日。
2023-08-14 13:23:11
896
5
原创 静态链接库顺序问题
最近遇到了一个非常奇怪的问题,编译时竟因为链接库的顺序不同,就有完全不同的结果。这些东西都是在 muduo_base 中定义的,我明明链接的 muduo_base 库,为什么会有这些报错呢?当我改变链接库的顺序时,神奇的一幕出现了。编译成功了,运行程序也得到了我想要的结果。这究竟是为什么呢?下面就来为你解答这一迷题。
2023-05-30 10:00:00
1113
原创 C 语言隐式类型转换
C 语言隐式执行的类型转换,让我们难以捉摸。有时默默进行的类型转化会导致难忘的经历,我曾经就因 -1 > 1 这个表达式为真,找了一个多小时的 bug。
2023-05-04 10:00:00
640
原创 sort 的 comp 为什么要求严格弱序
在使用 STL 提供的 sort 时,默认提供的排序方式可能不满足我们的需求,sort 也支持用户指定一个彷函数作为排序标准。有时,明明只是多了个等号又为什么错了呢?本文就带你解决这个疑惑。
2023-03-18 10:00:00
969
原创 STL sort 分析
STL 的 sort 算法,数据量大时采用快速排序,分段递归。一旦分段的数据量小于某个门槛,为避免快速排序的递归调用带来过大的额外负荷,就改用插入排序。如果递归层次过深,还会改用堆排序。这个算法接受两个随机迭代器,然后将区间内的所有元素以升序排列。
2023-03-15 10:00:00
1134
原创 继承下的缺省参数值和访问说明符
本文将介绍 C++ 继承体系下,函数缺省参数的绑定和函数访问说明符的绑定。这些奇怪的问题实际上不应在我们的代码中出现,但它们能帮助我们理解 C++ 的动态绑定和静态绑定,也能帮助我们更好的通过面试。
2023-03-06 10:00:00
1258
原创 SGI 空间配置器
空间配置器是 STL 六大组件之一,它总是隐藏在容器的背后,默默工作,默默付出。本文为《STL 源码剖析》读书笔记,主要讨论 SGI 版本空间的配置和释放,对代码进行解读时会改变一些写法,使其更易于阅读。
2023-02-24 10:00:00
1843
原创 返回值的理解
我们写的函数是怎么返回的,该如何返回一个临时变量,临时变量不是出栈就销毁了吗,为什么可以传递给调用方?返回对象的大小对使用的方式有影响吗?本文将带你探究这些问题。
2023-01-26 09:45:00
1300
原创 浮点数舍入规则
想必大家对小数的舍入很熟悉,毕竟四舍五入是我们在小学就听到的概念。但很遗憾,计算机并没有采用这种舍入方式,因此有时我们会对它的一些进位产生疑惑,本文就为大家解开这个疑惑。
2023-01-24 10:00:00
4361
原创 new 和 delete 为什么要匹配使用
关于 new 和 delete 的使用相信大家并不陌生,可是为什么使用 new 的时候要用 delete,使用 new[ ] 的时候又要用 delete[ ]。使用 delete 释放 new[ ] 申请的内存又会发生什么?为什么有时不匹配不会报错,有时又会报错呢?
2022-10-14 07:30:00
1798
原创 typename 的用法
在模板声明的模板参数列表中,typename 可以用来替换 class 声明模板参数类型。在模板的声明或定义中,typename 可以用来声明从属名称是一种类型。
2022-09-25 14:08:30
3016
原创 C++ 生成随机浮点数
在 C++11 之前,我们通常采用 rand() 来生成随机数。但 rand() 对一些情况显得难以处理:1. 不同范围的随机数2. 需要随机浮点数3. 需要非均匀分布的随机数
2022-04-14 11:03:25
12490
2
原创 C 语言 rand 和 srand 使用方法
有时我们想用 rand() 生成一组随机数,尽管我们调用了 srand(),但是生成的值还是一样。为什么会产生这种情况?又该如何解决?下面将用第一视角一起探究这其中的奥秘。
2022-03-12 18:26:24
4340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅