草庐IT

智能指针思想实践(std::unique_ptr, std::shared_ptr)

1smartpointer思想​ 个人认为smartpointer实际上就是一个对原始指针类型的一个封装类,并对外提供了->和*两种操作,使得其能够表现出原始指针的操作行为。​ 要理解smartpointer思想首先要了解一个概念RAII(ResourceAcquisitionIsInitialization),直译为资源获取即初始化,核心理念为在对象创建时分配资源,而在对象销毁时释放资源.​ 根据RAII理念,如果对象创建在栈(stack)上,由于栈上的对象在销毁是会自动调用析构函数,因此仅仅需要在构造函数内完成资源分配,而在析构函数内完成资源释放,此时程序员就不需要自己关心资源的释放

C++11 智能指针 shared_ptr

C++11智能指针shared_ptrWrittenon2023-01-16个人学习智能指针记录合集:C++11智能指针C++11智能指针shared_ptrC++11智能指针unique_ptrC++11智能指针weak_ptrstd::shared_ptr共享智能指针,也被称为计数智能指针。共享智能指针会记录有多少个共享智能指针指向同一个对象,当这个数为0的时候,程序自动的默认释放(析构)这个对象,记录有多少个的这个方法叫做引用计数。共享智能指针可以有多个共享智能指针同时管理同一个对象。举个栗子普通指针管理#include#includeusingnamespacestd;classPer

C++11 智能指针 shared_ptr

C++11智能指针shared_ptrWrittenon2023-01-16个人学习智能指针记录合集:C++11智能指针C++11智能指针shared_ptrC++11智能指针unique_ptrC++11智能指针weak_ptrstd::shared_ptr共享智能指针,也被称为计数智能指针。共享智能指针会记录有多少个共享智能指针指向同一个对象,当这个数为0的时候,程序自动的默认释放(析构)这个对象,记录有多少个的这个方法叫做引用计数。共享智能指针可以有多个共享智能指针同时管理同一个对象。举个栗子普通指针管理#include#includeusingnamespacestd;classPer

proto IDL管理工具buf使用实践

proto是在当今使用最广泛的IDL之一,起因是dubbo3的Triple协议需要用到proto文件来生成统一规范的跨语言代码,Grpc也有类似的问题,想想一个团队有很多的业务模块,涉及到一些相互调用依赖的问题,如A模块需要用到B模块的接口,就需要找到B模块开发者,请告知一下B模块相关的proto文件是哪些,我需要copy到A模块来生成客户端调用代码,虽说这个场景单看起来条理是清晰的,后续如果越来越多的模块需要相互引用依赖,版本变更,昨天提供给你的proto文件今天已经被提供者加了字段或者删减了字段,需要一一通知到位,并需要重新copy最新的proto文件给使用者,如果B模块又依赖了C模块,这

proto IDL管理工具buf使用实践

proto是在当今使用最广泛的IDL之一,起因是dubbo3的Triple协议需要用到proto文件来生成统一规范的跨语言代码,Grpc也有类似的问题,想想一个团队有很多的业务模块,涉及到一些相互调用依赖的问题,如A模块需要用到B模块的接口,就需要找到B模块开发者,请告知一下B模块相关的proto文件是哪些,我需要copy到A模块来生成客户端调用代码,虽说这个场景单看起来条理是清晰的,后续如果越来越多的模块需要相互引用依赖,版本变更,昨天提供给你的proto文件今天已经被提供者加了字段或者删减了字段,需要一一通知到位,并需要重新copy最新的proto文件给使用者,如果B模块又依赖了C模块,这

Golang error : "scannable dest type ptr with >1 columns (3) in result"

项目中的dao层,我们用来查询数据库,获取想要数据。有时我们会需要查询数据给结构体赋值,并返回一个结构体指针,如下//结构体字段已与数据库对应funcGetCommunity(idint)(community*model.CommunityDetail,errerror){ sql:=`selectcommunity_id,community_name,introductionfromcommunitywherecommunity_id=?` err=db.Get(&community,sql,id) iferr!=nil{ return } return}这样的代码看似没有问题,但其实并不

Golang error : "scannable dest type ptr with >1 columns (3) in result"

项目中的dao层,我们用来查询数据库,获取想要数据。有时我们会需要查询数据给结构体赋值,并返回一个结构体指针,如下//结构体字段已与数据库对应funcGetCommunity(idint)(community*model.CommunityDetail,errerror){ sql:=`selectcommunity_id,community_name,introductionfromcommunitywherecommunity_id=?` err=db.Get(&community,sql,id) iferr!=nil{ return } return}这样的代码看似没有问题,但其实并不

IP rDNS(PTR)信息从理解到情报挖掘

什么是IP的rdns信息?  过去很多人,将IP的rDNS信息理解为解析到IP的反查域名信息。IP的rDNS信息和IP反查域名信息完全是两个不同的信息。IP的rdns信息被称之为反向DNS解析(rDNS),即通过DNS解析系统来将IP地址解析为域名。根据RFC1912标准“每一个互联网可以访问的主机都应该有一个名字”,所以rDNS信息更多是对应到一个IP地址的名字。IP的反查域名是指根据域名解析到IP的记录来反查出哪些域名解析到这个IP地址上。下面以8.8.8.8来说明IP的反查信息和rDNS信息的区别。  通过命令nslookup可以直接获取到8.8.8.8的rDNS信息”dns.googl

IP rDNS(PTR)信息从理解到情报挖掘

什么是IP的rdns信息?  过去很多人,将IP的rDNS信息理解为解析到IP的反查域名信息。IP的rDNS信息和IP反查域名信息完全是两个不同的信息。IP的rdns信息被称之为反向DNS解析(rDNS),即通过DNS解析系统来将IP地址解析为域名。根据RFC1912标准“每一个互联网可以访问的主机都应该有一个名字”,所以rDNS信息更多是对应到一个IP地址的名字。IP的反查域名是指根据域名解析到IP的记录来反查出哪些域名解析到这个IP地址上。下面以8.8.8.8来说明IP的反查信息和rDNS信息的区别。  通过命令nslookup可以直接获取到8.8.8.8的rDNS信息”dns.googl

关于 c :将现有的 shared_ptr 附加到 shared_ptr 的向量中

Appendinganexistingshared_ptrtoavectorofshared_ptr我有一个shared_ptr的现有向量。我想搜索该向量,如果满足条件,请将相应的shared_ptr复制到新向量。...//vector>main_vec;//whichalreadyhassomedatavectorshared_ptrFoo>>output_vec{};for(autoiter=main_vec.begin();iter!=main_vec.end();++iter){ if((*iter)->bar()==true)  output_vec.push_back(*iter)