前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 中文周刊 第90期

C++ 中文周刊 第90期

作者头像
王很水
发布2022-12-01 18:32:24
6070
发布2022-12-01 18:32:24
举报
文章被收录于专栏:C++ 动态新闻推送

C++ 中文周刊 第90期

周刊项目地址

弄了个qq频道,手机qq点击进入

欢迎投稿,推荐或自荐文章/软件/资源等

可以贴在下一期草稿里 草稿链接


资讯

编译器信息最新动态推荐关注hellogcc公众号 本周更新 2022-11-23 第177期

文章

看个乐

了解一波

代码语言:javascript
复制
class Derived : Base
{
    void DoSomething()
    {
        auto p1 = std::make_unique<BaseAcceptor>(static_cast<Base*>(this));
        auto p2 = std::make_shared<BaseAcceptor>(static_cast<Base*>(this));

        std::vector<BaseAcceptor> v;
        v.emplace_back(static_cast<Base*>(this));
    }
};

忘记打public 继承,多了一堆static_cast

qt一些使用QNetworkAccessManager的细节

记得删除reply

代码语言:javascript
复制
QNetworkReply *reply = ...
connect(reply, &QNetworkReply::finished, this, [reply]()) {
    reply->deleteLater();
    //...
});

使用https,不多说

QNetworkAccessManager不要一个请求创建一个

重定向

qt5是关的,需要设置一下,qt6是默认设置好了的

代码语言:javascript
复制
auto nam = new QNetworkAccessManager(this);
nam->setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);

HSTS

这个我不懂

代码语言:javascript
复制
auto nam = new QNetworkAccessManager(this);
nam->setStrictTransportSecurityEnabled(true);
nam->enableStrictTransportSecurityStore(true, QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1String("/hsts/"));

SSL错误处理

代码语言:javascript
复制
QNetworkReply *reply = ...
connect(reply, &QNetworkReply::sslErrors, this, [reply](const QList<QSslError> &errors) {
    KSslErrorUiData errorData(reply, errors);
    if (KIO::SslUi::askIgnoreSslErrors(errorData)) {
        reply->ignoreSslErrors();
    }
});

Disk cache

代码语言:javascript
复制
auto nam = new QNetworkAccessManager(this);
auto diskCache = new QNetworkDiskCache(nam);
diskCache->setCacheDirectory(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1String("/http/"));
nam->setCache(diskCache);

省流:别用

省流:犄角旮旯语法教学,别看

c++20 SSO优化的短字符串string是能查到长度的,gcc/msvc是15个,clang是23个,当然如果string_view任何长度都可以查长度

书评。这本书讲的不错,列一段代码

代码语言:javascript
复制
Logger& getLogger() {
  // Even if two threads call getLogger() simultaneously,
  // local will be constructed only once.
  static Logger local("log.txt");
  return local;
}

struct FileManager {
  FileManager()
  {
    getLogger() << "Starting up file manager…";
    // …
  }

  ~FileManager()
  {
    getLogger() << "Shutting down file manager…";
    // …
  }
};

FileManager& getFileManager() {
  // Global fileManager, initialized on the first call
  // to getFileManager().
  static FileManager fileManager;
  return fileManager;
}

这两个是很常规的代码,但组合到一起,就有了问题,析构!如果Logger先于FileManager析构,FileManager的析构用到了已经析构的Logger,崩溃

这种通常是在程序退出的时候莫名其妙多个core。如何合理的解决这个问题?加锁?

代码语言:javascript
复制
auto counter = [j=0]() mutable -> decltype(j) {
    return j++;
};

auto lm = [][[nodiscard]]()->int { return 42; };

比较c++ 和rust的move,c++的move确实有点高深,不清晰

iOS 16 / macOS 13 支持的新特性,走读一波c api。感兴趣的可以看看

视频

一个无锁hashtable

代码

https://github.com/tempesta-tech/blog/tree/master/htrie

https://github.com/tempesta-tech/tempesta/blob/master/db

卖APU的

容器的各种性能指标。不用看

没啥意思,可以不看

感觉演讲者都绷不住了

开源项目需要人手

  • asteria 一个脚本语言,可嵌入,长期找人,希望胖友们帮帮忙,也可以加群384042845和作者对线
  • pika 一个nosql 存储, redis over rocksdb,非常需要人贡献代码胖友们, 感兴趣的欢迎加群294254078前来对线

新项目介绍/版本更新

  • libjsonschema 把json描述的schema转成c代码 (为啥不用protocol buffer,只要一复杂,最后都会变成protocol buffer)
  • c99-to-c89 Tool to convert C99 code to MSVC-compatible C89 你没有看错
  • sold 之前的mold链接器 换个license,开卖 工作招聘

T_T

看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!也可以帮忙点赞收藏转发!多谢支持!

本文永久链接

代码语言:txt
复制
     This site is open source. [Improve this page](https://github.com/wanghenshui/cppweeklynews/edit/dev/posts/090.md).
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++ 中文周刊 第90期
    • 资讯
      • 文章
        • 视频
          • 开源项目需要人手
            • 新项目介绍/版本更新
              • T_T
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档