78 Matching Annotations
  1. May 2020
    1. Be aware of this if your return-object has RAII semantics that destroy the coroutine frame

      how?

  2. Mar 2020
    1. A Trivial Iterator may have a singular value,

      指针退化?

  3. Dec 2019
    1. The C++11 initializer list rule

      若增加类内初始值,则初始化列表不能灵活支持。C++14 标准才行

    2. Class hierarchies are used to organize related classes into hierarchical structures.

      是指继承体系吗?

    3. accessed through a pointer member.

      例子?

    4. Singletons are basically complicated global objects in disguise.

      如果不用单例,那么如何使用全局变量呢?

    1. Nottied to threading facilities. It is possible to implement efficient callback-based network programs on platforms that have no thread support.

      举个栗子?

    1. 来看下面这一个例子

      例子中的 futurestd::future 有关吗?或者是协程库中的新类型?——放下这些疑惑,请直接将 future<void> 整体视作普通的类型名即可!

  4. Oct 2019
  5. Jun 2019
  6. May 2019
    1. context switch function

      coroutine<>::pull_type::operator(),

    2. a newly created execution context

      和 “main context” 是不同的两个上下文吗?

    3. This kind of coroutine

      pull_type,相对 push_type 而言

    1. 对于c++,在离开现场时不能提前析构掉那些没有被捕获的变量

      哪里来的“没有被捕获的变量”?

  7. Apr 2019
    1. 我们知道有很多人喜欢直接在栈上申请一个64kb的char数组做缓冲区,

      我怎么不知道?

  8. www.liaoxuefeng.com www.liaoxuefeng.com
    1. 如果改用协程,生产者生产消息后

      这个例子带来新的困惑:生产后消费,消费之后生产,为什么不直接轮循了呢?!

  9. Feb 2019
  10. Dec 2018
    1. Because spdlog is header-only, building shared libraries and using it in a main program will not share the registry between them.

      o(╥﹏╥)o 我竟然理解不了这句话?

    1. reports a compile-time error for the same reason on compilers that support relaxed constexpr

      好神奇,怎么做到的?

    1. std::launch::deferred:延迟加载方式创建线程。调用async时不创建线程,直到调用了future的get或者wait时才创建线程。

      表述错误!::deferred 并不创建新线程,而是在 future::get()/wait() 时在当前线程同步执行

    1. indicates that the actual data exchange is wanted

      参考 Bulk Operations 查询例子

    1. -s

      -T trunk -b branches -t tags 告诉 Git 该 Subversion 仓库遵循了基本的分支和标签命名法则。

      由于该法则的常见性,可以使用 -s 来代替整条命令,它意味着标准布局(s 是 Standard layout 的首字母),也就是前面选项的内容。

    1. It compiles those sources using Visual Studio 2017, or Visual Studio 2015 if 2017 is not installed

      同时安装 MSVC2015 和 MSVC2017 时,优先使用后者。

    1. SQLITE_INCLUDE_DIR string Path to SQLite 3 include directory where CMake should look for sqlite3.h header. SQLITE_LIBRARIES string Full paths to libraries to link SOCI against to enable the backend support.

      这两个宏不能用!从 csdn 上查找其他资源

    1. When the Inherit from parent or project defaults check box is selected and you add a new value, it is appended to any values that are currently being inherited. If you clear the check box, your new value replaces the inherited values.

      追加 or 覆盖?

  11. Nov 2018
    1. streambuf类提供了一个rdbuf成员函数可以用来读取内部用来保存缓冲数据的私有成员。

      改为:IO 流提供了 rdbuf 成员函数可以返回内部用于缓冲数据的 streambuf 类型的私有成员。

    1. static DurationTimevalToDuration(const timeval & value)

      timeval 应该是类似 time_t,表示时刻吧?为什么能够转换成 duration/时间段/间隔呢?

    1. add another phone number to the message which you can then edit (repeated scalar types have an add_ that just lets you pass in the new value).

      如果 message 支持 add(msg) 这种签名,会潜在要求 message 对应的 class 支持拷贝构造、移动构造。

    2. checks if all the required fields have been set.

      proto3 总是返回 true

    3. There are also has_ methods for each singular (required or optional) field

      proto3 没有

    1. The stub forwards all calls to an RpcChannel, which in turn is an abstract interface that you must define yourself in terms of your own RPC system.

      stub 转发所有对 RpcChannel 的调用,而 RpcChannel 又是一个抽象接口,您必须根据自己的 RPC 系统自行定义。

  12. Sep 2018
    1. 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

      肯定用得到!但还是不太理解呀……

    1. 凡是能够取地址的可以称之为左值,反之称之为右值

      以语法形式作为出发点描述左值、右值,落了下乘。描述也不对:&(test()) 是能够取地址的

    1. 说起来非常简单:凡是真正的存在内存当中,而不是寄存器当中的值就是左值,其余的都是右值。其实更通俗一点的说法就是:凡是取地址(&)操作可以成功的都是左值,其余都是右值。

      以语法形式作为出发点描述左值、右值,落了下乘。描述也不对:&(test()) 是能够取地址的

    1. if your code seems unnecessarily convoluted or overly cluttered with try blocks,

      令人费解的、凌乱的

    2. Fortunately there is plenty of wisdom and insight on the proper use of exceptions

      之前的讲述可以理解为在讲 why,为什么使用异常,与返回值相比优缺点。接下来才是讲 how,怎么用好异常!

    3. you need to know when a condition should be reported via return-code and when it should be reported via an exception.

      怎么区分 return-code 和 exceptions 的使用场景呢?

  13. Jul 2018
    1. The encoding of calendar time in std::time_t is unspecified, but most systems conform to POSIX specification and return a value of integral type holding the number of seconds since the Epoch. Implementations in which std::time_t is a 32-bit signed integer (many historical implementations) fail in the year 2038.
      1. 标准未定义“日历时间”,但是 posix 标准使用 UTC
      2. 32位带符号整型,只能到2038年
    1. signal-and-slot

      什么东西?

    2. The purpose it to keep this as general as possible on the caller side.

      不然用户就需要显式将函数、函数指针、lambda 等赋值给 std::function<XXX> 对象之后,再作为入参

  14. Jun 2018
    1. call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x64

      傻逼操作,会把安装多个版本 msvc 的系统变量弄乱,运行找不到 C/CXX 编译器

    1. 在导出函数的声明时需要有_declspec(dllexport)关键字

      只导出类成员函数,而无需导出类!用户使用时不影响……

    1. note that we now need to install the headers as well, because they must be available for your installed target.

      文章开始就提到“developing C++ libraries”

    1. 要把一个DLL文件映射到进程的地址空间,有两种方法:静态链接和动态链接的LoadLibrary或者LoadLibraryEx。

      说错了吧?应该是使用导入库的隐式链接和使用 LoadLibrary 的显式链接

    1. all global objects (including static members of classes) will be constructed

      类的静态成员。不包括类的成员函数中静态变量

  15. May 2018
    1. There are many problems with #pragma setlocale.

      这么坑的指令也放出来让人用?!

    2. change the source character set for a file as it is being parsed.

    3. what is the current code page of the system we are compiling on

      msvc 编译依赖代码页

    1. Here are some examples how to specify the character sets using gcc

      啊哈,之前就猜测,linux 下 gcc 源字符集和执行字符集相同,还真是

  16. Apr 2018
    1. 有没有权限更高的变量,有,那就是:选项Constant,常量一旦声明,不可修改

      反转之反转

    2. 但是可以通过删除变量,再重新创建变量更新变量内容。

      反转

    1. 通过cmd进入cmd控制台输入ping发现执行的不是ping命令,而是直接运行ping.bat ,也就是说可以通过.bat 覆盖cmd命令。

      cmd 好烂。powershell 就和 linux 的处理一致了:必须明确输出脚本路径才能执行

    1. 有一份公共代码或数据需要所有分支共享,如果存储在普通的目录下,切分支之后各个分支该目录可能会出现差异,为了避免这种差异,应该使用 SVN 的 externals 属性,确保在任意分支下的更改在所有分支下都能够生效。

      这只是 svn 外部引用的一个场景吧?引用外部第三方库也完全可以这么做

    1. time_point必须要clock来计时

      why? 因为时刻区分北京时、世界时?因为更改系统时钟后,时刻也是变化的?

    2. Duration

      由数值和单位两部分构成。

      count() 函数返回数值部分,cout << xx 时 xx 也只能使用数值,不能直接使用 duration 变量。

    3. 通过duration_cast<>()来将当前的时钟周期转换为其它的时钟周期

      只有高精度的向低精度的转换时才必须显式转换(毫秒转秒,分钟转小时);低精度赋值给高精度时无需显式转换。

    4. hz30

      赫兹

    5. 它们的定义如下:

      不知道作者从哪里拷的定义,给错了。第一个模板参数肯定是给定的才行! msvc2015 的定义:

      typedef duration<long long, nano> nanoseconds;
      typedef duration<long long, micro> microseconds;
      typedef duration<long long, milli> milliseconds;
      typedef duration<long long> seconds;
      typedef duration<int, ratio<60> > minutes;
      typedef duration<int, ratio<3600> > hours;
      
    1. The reply and status are ready once the tag

      根据.cc 源文件中的注释来理解:tag 是区分不同 request 的标识,当服务端返回请求的结果时,通过同样的 tag 值来区分结果是哪一个请求的。

      所以,tag 应该用 UUID 来实现?

    1. bidirectional streaming RPC

      什么样的使用场景?

    1. 系统隐式调用析构函数的时候,会加入释放栈内存的动作

      “释放栈内存”是由系统做的,和析构函数无关。

  17. Mar 2018
    1. whose content is stored as contiguous byte sequence

      就是顺序容器呗。下文中可以使用关联容器构造 json 对象。

    1. 如果 locale 是 NULL 或空字符串 "",则区域名称将根据环境变量值来设置,其名称与上述的类别名称相同。

      忽略这句话。错误解释&&表达凌乱。

    1. locale-sensitive C library functions

      影响的是相关的 C 标准库函数

    1. 当 locale 为 "" 时,根据环境的设置来设定 locale,检测顺序是:环境变量 LC_ALL,每个单独的locale分类LC_*,最后是 LANG 变量。

      环境变量??

    1. MeyersSingleton meyers2 = meyers;MeyersSingleton meyers3(meyers);

      这两个调用的都是拷贝构造函数,切记!切记!

    2. 拷贝构造函数(和拷贝赋值操作符)必须禁止

      禁止拷贝构造函数之后,无法创建两个同类变量,自然就用不到拷贝赋值了吧

    1. 在单线程下(或者是C++0X下)是没任何问题的,但在多线程下就不行了

      在 C++0x 之前会存在线程安全问题;在 C++0x 之后是线程安全的。’

  18. Feb 2018