自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 mysql学习

读写分离,原理是将主库的操作日志同步到从库上,用于读多写少的场景,但是对于分配资源类的功能不适用,可能会导致重复分配强制路由 读写分离场景,强制去主库读

2021-03-07 08:08:56 63

原创 尽可能的使用constexpr

constexpr是在编译期确定的const变量,const不保证int sz; // non-constexpr 变量constexpr auto arraySize1 = sz; // error! sz的值编译期间未知const auto arraySize = sz; // fine, arraySize is const copy of szconstexpr函数,如果入参都是编...

2020-05-08 17:10:07 155

原创 将不会抛出异常的函数声明 为 noexcept

noexcept是会传递的,由底层函数向调用者传递,声明为noexcept题目这么做可能有一定的风险,如果后面想改成非noexcept的,但是可能调用者已经以来了noexcept,会导致调用者架构被破坏noexcept是函数接口的一部分,也就意味着,调用者对它有依赖 noexcept函数比non-except函数更可以优化 noexcept对move操作、swap、内存释放函数、析构函...

2020-04-27 08:58:50 686

原创 优先 使用 const_iterators 而非 iterators

下面代码中的cbegin,cend就是const iteratorauto it = // use cbeginstd::find(values.cbegin(),values.cend(), 1983); // and cendvalues.insert(it, 1998);优先使用const_iterator而不是iterator。 在最大泛型代码中,相对于它们的成员函数部分,优先...

2020-04-26 09:00:23 404

原创 使用 override 关键字声明 覆盖的函数

public:void doWork() &; // 只有this是左值(lvalue)时才能调用void doWork() &&; //只有this是右值(rvalue)时才能调用}; 用关键字override声明覆盖函数。 成员函数引用后置修饰符可以区别对待左值和右值对象。class Widget {public:using DataType = s...

2020-04-23 09:21:10 290

原创 优先 使用 delete 关键字删除函数,而非 private 却 又 不 实现的 方式

float总是优先转换为double,而不是int优先使用删除函数,而不是私有且未定义的函数。任何函数都可以标记为删除,包括非成员函数和模板实例化。

2020-04-23 09:07:30 346

原创 scoped enum和unscoped enum

scoped enum是在enum关键字后面加上一个class,内容的默认类型是int,enum class Color { black, white, red };如果不想使用int,也可以像这样显示指定,enum class Status: std::uint32_t; C++98风格的枚举,现在称作为unscoped enum。 scoped enum的枚举元素只在enum内可见...

2020-04-22 08:58:15 671

原创 优先 使用 别名声明 而非 typedefs

typedef不支持模板化,别名声明支持。 别名模板省去了“::type”后缀,而且,在模板里,typedef一般要加“typename”前缀 C++14提供了C++所有类型特征转换的别名模板...

2020-04-20 20:30:52 91

原创 优先使用nullptr,而不是0或者NULL

在 C++98 中,这意味着,重载指针和整数类型的函数,得到的结果会令人吃惊。传递0或者NULL给重载函数,永远不会调用指针重载的那个函数:void f(int); // three overloads of fvoid f(bool);void f(void*);f(0); // 调用f(int), 而不是f(void*)f(NULL); // 有可能编译不过, 但调用f(int). ...

2020-04-20 09:27:44 162

原创 创建对象时区分()和{}

C++11增加了{}的统一初始化基本语法是int z{ 0 };有一些场景会与预想的不一样,在重载了多个实现的情况下,即使存在类型完全一致的函数,仍会优先匹配std::initializer_list为参数的函数,并发生类型转换class Widget {public:https://blog.csdn.net/gw85047034Widget(int i, bool b); // a...

2020-04-20 09:16:28 162

原创 decltype类型

decltype和参数的类型是一模一样的可以用来函数返回类型在形参之后声明,可以利用入参的类型决定返回值的类型,例如template<typename Container, typename Index> // 正确但需要优化auto authAndAccess(Container& c, Index i)-> decltype(c[i]){authentic...

2020-03-24 15:25:29 216

原创 auto类型推导

情形 1 类型指示符是 一个 指针或引用,但不是一个通用引用。情形 2 类型指示符是一个通用引用,auto&&,会保持右值的const属性。auto&& uref1 = x; // x is int and lvalue,// so uref1’s type is int&auto&& uref2 = cx; // cx is con...

2020-03-24 14:50:56 240

原创 C++模板函数类型推导

template<typename T>void f(T aaa)在f(bbb)调用时,会把bbb赋值一份传给aaa,会丧失bbb本身的属性,包括const和引用const char * const bbb = “bbb”;在f(bbb)传递时,bbb会丧失第二个const属性,就是说进入f之后,aaa是bbb的一个副本,aaa不是const,但是aaa的类型还是const c...

2020-03-12 20:24:35 281

原创 华为学习

初始化获取APPID,APPKEY,USERID,TOKEN等信息,加载证书,初始化RTCENGINE,申请权限创建房间先设置分辨率,再CREATECHANNELROOM回创建房间200,给DEMO发通知加入房间JOINCHANNEL,再STARTLOCALVIDEO,打开本地视频时需要传递一个本端的surface,对应本端一个视图,所以打开本地视频必须是由UI层触发的等待其他用户加...

2019-10-14 23:46:36 112

原创 声网学习

声网学习欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全...

2019-10-13 06:12:18 142

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除