发布了文章2022-08-15
在进行软件开发的过程中,我们时常会面临一个问题:我们只有一套系统环境的开发机,但是我们开发的软件却需要在不同的系统环境中运行和测试。这就导致我们需要不同的机器来进行测试,以确保软件在各个环境中运行正常。
发布了文章2022-06-12
M1芯片是2020年之后推出的全新适配于Macbook的Arm64芯片。因为底层的指令集与x86_64不同,因此面临着很多兼容性的问题。截止开始写博文的时候,M1芯片已经经历了接近2年的磨合期,日趋完善。
发布了文章2022-03-25
在 C++ 11 标准之前(C++ 98/03 标准中),如果想用其它对象初始化一个同类的新对象,只能借助类中的复制(拷贝)构造函数。在C++11中,引入了右值引用,提供了左值转右值的方法,避免了对象潜在的拷贝。而移动构造函数和移动赋值运算符也是通过右值的属性来实现的。...
发布了文章2022-02-28
zookeeper为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。它可以保证一致性和分区容错性,在kafka中zookeeper为broker,producer和consumer提供一致的配置信息。在下面的讲解中我们将会具体展示。
发布了文章2022-02-09
在 Golang 中的 map 结构,在删除键值对的时候,并不会真正的删除,只是标记当前的key状态为empty。我们下面的程序作为例子,看看当我们在删除map中键值对时的内存变化,并了解如才能真正实现对键值对的垃圾回收。
赞了文章2022-01-25
本人参照《Linux多线程服务端编程》,以及模仿该书使用的muduo,写了一个轻量的 Web 服务器。 源码 Github。代码中有比较详细的注释,可作为看《Linux多线程服务端编程》的辅助材料。 已完成 完成基本的Tcp(被动连接)库; 简易的HTTP服务器,可访问主页HTML和网站f...
发布了文章2022-01-24
vector扩容时,内存位置发生改变导致Segmentation fault错误。因为vector在扩容时会将内容全部拷贝到新的内存区域中,原有的内存区域被释放,此时如果有线程依然在向旧的内存区域读或写就会出问题。
赞了文章2022-01-24
Redis是高性能的KV内存数据库,除了做缓存中间件的基本作用外还有很多用途,比如胖哥以前分享的Redis GEO地理位置信息计算。Redis提供了丰富的命令来供我们使用以实现一些计算。Redis的单个命令都是原子性的,有时候我们希望能够组合多个Redis命令,并让这个组合也能...
发布了文章2022-01-16
内存泄露 当程序员使用new(或malloc)关键字分配内存而忘记使用 delete (或free)函数或 delete[] 运算符释放内存时,C++ 中就会发生内存泄漏。在 C++ 中使用错误的删除运算符会发生内存泄漏最多的情况之一。delete 运算符应用于释放单个分配的内存空间,而 delete...
发布了文章2022-01-14
CMake 是一个开源、跨平台的工具系列,旨在构建、测试和打包软件。CMake 用于使用简单的平台和编译器独立配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机 makefile和工作区。
发布了文章2022-01-04
上图展示了一个源代码文件通过编译器生成一个可执行文件的大致过程。基本包含源文件的预处理,编译,汇编和最终链接目标文件生成可执行文件。本篇文章就是逐步介绍从源代码生成最终可执行文件的过程。在知道每一步的原理之后,介绍在编写大型项目时,如果通过cmake工...