工程
2018
[c++11] std::async std::packaged_task std::promise and std::future notes
·4 mins
把std::async,std::packaged_task,std::promise三个放在一起来说,是因为他们都可以返回一个std::future对象.简单来说,当某个线程需要等待一个特定的一次性事件(one-off event),它可以用一个"future"来表示这个事件.
[C++11]std::condition_variable notes
·2 mins
condition_variable 类是同步原语,能用于阻塞一个线程,或同时阻塞多个线程,直至另一线程修改共享变量(条件)并通知 condition_variable 。
react 中setState的更新策略
起因是想更新一个array类型的state,结果setState更新之后用console.log() debug 结果,发现结果特别玄学。。。
learn java in 21 minutes for C++ Programmers
先放资料:
Learning a New Programming Language: Java for C++ Programmers
java package # 先说几条重要的人话:
[施工中][c++11] move semantics && perfect forwarding 学习笔记
·4 mins
背景 # move semantics是modern cpp中非常重要的特性,有必要详细了解一下。
[C++11 ] std::ref&&std::reference_wrapper notes
·3 mins
起因是在看《CplusplusConcurrencyInAction_PracticalMultithreading》的时候,里面讲到初始化std::thread的时候,如果thread funtion的参数列表中有引用,需要传入std::ref才可以得到符合预期的结果。
前端To do list
20181014update: 可以不写了,开心
迫于生计,要从零开始学习前端。
由于之前的to do list 年代久远+ 前端的技术栈可之前几乎没有关系,因此新开一篇记录。
typescript学习笔记
·2 mins
先放参考资料:
TypeScript 入门教程
React & Webpack
react-typescript-cheatsheet (强推一波,讲了很多react+ts的实践)
[C++11] promise && future leanrning notes
·1 min
用人话就是,主线程传给附属线程一个promise Object,然后主线程想要获取附属线程set给promise Object的值(也就是该线程返回的某个结果),需要通过主线程中的promise object 得到对应的future object(每个promise 对应一个 future),然后调用future 的get方法。如果附属线程没有执行作为参数传入的promise的set方法去返回结果,那么程序就会block住。
把二进制文件按字节读到vector中
1 std::vector<unsigned char> readFromFile1(const char* filePath) { 2 FILE* file = fopen(filePath, "rb"); 3 std::vector<unsigned char> result; 4 if (file == nullptr) { 5 return result; 6 } 7 8 // 获取文件大小,尽量一次读完 9 size_t fileSize = getFileSize(file); 10 if (fileSize != 0) { 11 result.resize(fileSize); 12 size_t n = fread(&result[0], 1, fileSize, file); 13 assert(n <= fileSize); 14 if (n != fileSize) { 15 result.resize(n); 16 } 17 } 18 19 // 在读取过程当中,有可能文件大小有变化,再尝试读取 20 const size_t read_len = 1024; 21 char buf[read_len]; 22 for (;;) { 23 size_t n = fread(buf, 1, read_len, file); 24 result.insert(result.end(), buf, buf + n); 25 if (n < read_len) { 26 break; 27 } 28 } 29 fclose(file); 30 return result; 31 } 另外一种C++风格,但是性能较差的方法:
boost:property_tree 学习笔记
·1 min
先放资料:
How to use boost::property_tree to load and write JSON
How to iterate a boost property tree?
不出现key的方法遍历一个json文件:
记录一次因动态库符号表可见性导致的未定义的引用(undefined reference)
编译某代码,发现报错某函数未定义的引用。该函数的是先前编译得到的动态库中。