1. C++智能指针如何解决内存泄露问题.
1.shared_ptr共享的智能指针
std::shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。在最后一个shared_ptr析构的时候,内存才会被释放。
可以通过构造函数、std_make_shared辅助函数和reset方法来初始化shared_ptr:
// 构造函数初始化
2025年07月16日
1.shared_ptr共享的智能指针
std::shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。在最后一个shared_ptr析构的时候,内存才会被释放。
可以通过构造函数、std_make_shared辅助函数和reset方法来初始化shared_ptr:
// 构造函数初始化
TCP 作为传输层的协议,是一个软件工程师素养的体现,也是面试中经常被问到的知识点。在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位。
001. 能不能说一说 TCP 和 UDP 的区别?
首先概括一下基本的区别:
TCP是一个面向连接的、可靠的、有序的、基于字节流的传输层协议。
而UDP是一个面向无连接、不可靠、无序的传输层协议。
2025年07月16日
在文中讲解装载因子时,我们提到装载因子是决定哈希表是否进行扩容的关键指标。在go的map扩容中,除了装载因子会决定是否需要扩容,溢出桶的数量也是扩容的另一关键指标。
2025年07月16日
哈希表属于编程中比较常见的数据结构之一,基本上所有的语言都会实现数组和哈希表这两种结构,Hash table 的历史是比较悠远的,我们在编程时也是离不开的,这种数据结构的作用其实很简单,就是我们可以根据一个 key 可以查找到对应的 value,也就是说这种数据结构存储的是键值对的“列表”。
首先哈希表中第一个点就是哈希函数,也就是我们需要一个函数,根据我们的 key 计算出一个值,然后根据这个值可以直接找到对应的 value。因为我们的哈希表的一个作用就是 O(1) 复杂度找到 key 对应的 value。
2025年07月16日
上个月,Google把"相似图片搜索"正式放上了首页。
你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。
一个对话框会出现。
你输入网片的网址,或者直接上传图片,Google就会找出与其相似的图片。下面这张图片是美国女演员Alyson Hannigan。
上传后,Google返回如下结果:
类似的"相似图片搜索引擎"还有不少,TinEye甚至可以找出照片的拍摄背景。
2025年07月16日
2011年,Google把“相似图片搜索”正式放上了首页。你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。
一个对话框会出现。
你输入网片的网址,或者直接上传图片,Google就会找出与其相似的图片。下面这张图片是美国女演员Alyson Hannigan。
上传后,Google返回如下结果
类似的”相似图片搜索引擎”还有不少,TinEye甚至可以找出照片的拍摄背景。
这种技术的原理是什么?计算机怎么知道两张图片相似呢?
2025年07月16日
在上一节中,咱们留了一个代码:
func main() {
buffer := []byte("test")
stringData := reflect.StringHeader{
Data: uintptr(unsafe.Pointer(&buffer[0])),
Len: len(buffer),
}
str := *(*string)(unsafe.Pointer(&stringData))
mmp := make(map[string]int, 32)
mmp[str] = 3
mmp["abcd"] = 4
fmt.Println(mmp[str])
buffer[0] = 'a'
buffer[1] = 'b'
buffer[2] = 'c'
buffer[3] = 'd'
fmt.Println(mmp[str])
fmt.Println(mmp["test"])
fmt.Println(mmp["abcd"])
for k, v := range mmp {
fmt.Println(k, v)
}
}
2025年07月16日
上个月,Google把"相似图片搜索"正式放上了首页。
你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。
一个对话框会出现。
你输入网片的网址,或者直接上传图片,Google就会找出与其相似的图片。下面这张图片是美国女演员Alyson Hannigan。
上传后,Google返回如下结果:
类似的"相似图片搜索引擎"还有不少,TinEye甚至可以找出照片的拍摄背景。