-
vector的性能利器:reserve
vector是C++编程时的常用容器,其帮助用户自动管理存储空间,简单易用,且能避免资源泄露的问题。需要动态分配存储空间的场景,完全可替代原生数组。 vector被人诟病的地方在于性能。C++ 11引入array容器,有原生数组的性能,编译期能确定大小的情况可取代vector。但对于运行期才能确定大小的情况,array不适用,还是得上vector。 实践中提高vector性能的要点是尽量使用reserve(仅次于换编译器和STL实现)。运行期依然不能确定数组的个数,明智的选择是什么也不做,push_back/...
-
CentOS 7上安装CMake 3
CentOS 7上官方的CMake版本是2.8.12,比较旧。许多新的C/C++项目要求的最低版本至少是3,需要升级旧版本或者直接安装新版。 有两种方法可以安装/升级CMake 3: 从源码编译;CMake是开源软件,可从官方下载源代码,只要系统上安装了gcc/g++,编译安装即可。不方便之处是要下载、解压、编译和安装,一系列操作对新手可能有难度;另外升级也要进行同样的操作,略显繁琐; 从yum源安装。配置好yum源,yum install/update两条命令就可以方便的安装和升级。 本人采...
-
CentOS 7上升级/安装gcc
CentOS 7官方源的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必须要升级现有版本或者安装高版本的gcc。 解决办法有两种:手动编译(也可以从其他机器拷贝或者网上下载),或从源安装。 大多数情况下本人都不推荐从源码编译,不仅因为编译过程中常会出现各种依赖问题需要手动解决,更因为件升级还要再来一次,相当的折腾(单核编译gcc至少一小时,费时费精力)。 本文介绍从源安装高版本gcc的办法。 红帽其实已经编译好了高版本的gcc,但未更新到base和e...
-
C++在指定内存构造对象
问题 为了提高程序的性能,一个做法是一次性分配足够多的内存,从而避免多次申请以及数据拷贝。对于c++,有一个问题:如何在已分配好的内存上构造对象? 前文“vector的性能利器:reserve”提到使用reserve预先分配内存,再push_back或emplace_back,存储过万个大对象时可极大提升效率。探究其实现原理,会发现分配内存简单,调用标准库或者nedmalloc、tcmalloc等库中的函数即可;有了内存,问题同样变成如何在已分配的内存上构造对象? 方案 有两种解决方案解决这个问题。...
-
Let’s Encrypt renew出现“Challenge failed for domain xxxx”
某个私用的子域名上了Let’s Encrypt签发的证书,上周用renew命令延长证书有效期时出现下面的错误: Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/xxx.conf - - - - - - - - - -...
-
Contextual Related Posts插件不起作用
Related Posts出现了严重的安全漏洞且未修复,官方插件市场已经将其下架。Contextual Related Posts在功能和表现上与Related Posts相差不大,设置上也大体通用,这让Contextual Related Posts成为新的热门选择。 但是Contextual Related Posts存在诡异的不起作用问题,尤其是初次安装时:设置各种参数没效果,卸载重新安装可能就生效了。根据作者在官方论坛上的回复,如果有插件不起作用,建议操作是:1. 设置中勾选“Related posts...
最新留言
说:asdasd
2023-05-26 10:48:03说:I
2023-04-07 09:22:25说:2366
2023-03-30 09:40:21说:1
2023-03-30 09:40:16说:6
2023-03-03 17:48:00说:发的太多人
2023-02-27 15:34:13说:1
2023-02-02 19:12:01说:我靠
2023-01-26 10:55:41