12 2021 档案

摘要:在循环遍历容器的时候,假如容器里面存的是动态对象的指针,我们就不能简单地移除掉此容器元素,还需要把此指针指向的对象 delete 掉。 但随着业务的增长,循环中我们需要对次对象执行大量的操作,这种情形下,我们往往会延迟delete掉此对象。那么有什么方案可以实现呢? 此处介绍的方案是: 将对象指针托 阅读全文
posted @ 2021-12-17 22:23 Demon90s 阅读(249) 评论(0) 推荐(1) 编辑
摘要:我比较熟悉bash脚本,而在windows下,默认是不能执行它的。 可以有如下的方法: 使用gitbash工具,自带了一套简单的bash工具环境。 通过win-bash工具集,可以解决这个问题。它还提供了一些其他实用工具,比如sed 这里可以下载 https://sourceforge.net/pr 阅读全文
posted @ 2021-12-17 10:20 Demon90s 阅读(437) 评论(0) 推荐(0) 编辑
摘要:随着业务的增长,循环体可能会逐渐复杂起来。 我们通常遍历一个容器,对其中的每一个元素执行方法,从而更新它们的状态。随着代码逐渐复杂,我们在写新的方法时,可能并没有意识到this正处于循环遍历当中。此时若对容器进行大小的修改,即增加元素或删除元素,是一个危险的行为。 对于 std::vector ,如 阅读全文
posted @ 2021-12-14 19:48 Demon90s 阅读(1217) 评论(0) 推荐(0) 编辑
摘要:今天写一个小程序,得到两个值的差距比。比如100和120之间差了0.2,120和100同样差了0.2。 这是一个简单的数学问题,通过数学公示能够得到: min + min * diff_per = max; 从而 diff_per = (max - min) / min 由于C++中数值类型有很多, 阅读全文
posted @ 2021-12-11 20:41 Demon90s 阅读(240) 评论(0) 推荐(0) 编辑
摘要:C++的函数也有类型。比如: void func(int a); 上面的函数的类型是: void(int) 它可以作为模板类型参数,如同普通的类型一样: template<typename T> Foo; Foo<void(int)> foo; std::function模板就有类似的用法。 我做了 阅读全文
posted @ 2021-12-10 14:48 Demon90s 阅读(276) 评论(0) 推荐(0) 编辑
摘要:在之前的一篇博客中,讨论了如何合并两个排行榜。 https://www.cnblogs.com/demon90s/p/15659594.html 但代码上有一些瑕疵,就是排序的规则写得异常的简陋: std::sort(tmp_list.begin(), tmp_list.end(), [](cons 阅读全文
posted @ 2021-12-10 00:31 Demon90s 阅读(91) 评论(0) 推荐(0) 编辑
摘要:之前的一篇博客讨论了使用lower_bound来查询配置区间。 https://www.cnblogs.com/demon90s/p/15658800.html 由于配置设计的原因,从字段上面是无法看的出键所在的段的。比如: std::map<int, std::vector<std::string 阅读全文
posted @ 2021-12-09 22:35 Demon90s 阅读(143) 评论(0) 推荐(0) 编辑
摘要:最近的业务中,出现了合并排行榜的需求。两个排行榜具体如何合并,还是要看业务的需求。 通常,一个排行榜使用一个key表示一个rank_item,对应一个分值用于排序。可能还带有一些额外的信息,主要用于读取。 比如,我们可以有一个战斗力的排名项: struct CapabilityRankItem { 阅读全文
posted @ 2021-12-08 00:57 Demon90s 阅读(118) 评论(0) 推荐(0) 编辑
摘要:当前在业务中,经常要将配置根据天数进行分段。例如 1-10 天一个配置段,11-20一个配置段。 由于进行了分段,所以查询配置就多了一层查询,即需要先锁定配置所在哪一段。比较习惯的做法是使用遍历,一个一个段去查询。虽然可行,但看着不优雅。 我们可以把段的数值作为map的key,然后使用lower_b 阅读全文
posted @ 2021-12-07 20:53 Demon90s 阅读(116) 评论(0) 推荐(0) 编辑
摘要:在使用Navicat导入一份比较大的sql文件时,出现了错误提示: [Err] 2006 - MySQL server has gone away 并不清楚具体原因(可能是数据包太大导致socket断开)。 解决办法是设置 max_allowed_packet 参数的大小,执行sql: set gl 阅读全文
posted @ 2021-12-07 16:58 Demon90s 阅读(362) 评论(0) 推荐(0) 编辑
摘要:int和bool默认就可以相互转换,但是在某些编译器的某些设置下,执行隐式转换会报warning(VS2015)。 当然,可以使用 static_cast 来显式转换,但我很少这样用。 这里演示一个更加看上去奇怪的惯用法(我自认为是的,不一定真的惯用)。 // int -> bool int is_ 阅读全文
posted @ 2021-12-06 20:41 Demon90s 阅读(1639) 评论(0) 推荐(0) 编辑
摘要:windows下默认没有zip命令行程序,所以我在网上找了一个免费的。 ftp://lovemiemie.xyz/pub/install_package/windows/zipunzip.rar 使用方法也很简单: 压缩文件到 file.zip: zip file.zip f1 f2 f3 压缩目录 阅读全文
posted @ 2021-12-04 18:10 Demon90s 阅读(403) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示