真是个不明觉厉的术语…其实是个特别简单的概念orz
用白话讲,如果一个class A中用到了class B的实例,那么class B的实例就是class A的依赖,如果不是在class A中定义class B的实例,而是通过某个接口,将class B的实例传入classA,就叫依赖注入。
阅读更多把std::async,std::packaged_task,std::promise三个放在一起来说,是因为他们都可以返回一个std::future对象.简单来说,当某个线程需要等待一个特定的一次性事件(one-off event),它可以用一个"future"来表示这个事件.
阅读更多condition_variable 类是同步原语,能用于阻塞一个线程,或同时阻塞多个线程,直至另一线程修改共享变量(条件)并通知 condition_variable 。
用人话来说,condition_variable,也就是条件变量,是线程间通信的一种方式。
阅读更多起因是想更新一个array类型的state,结果setState更新之后用console.log() debug 结果,发现结果特别玄学。。。
查了下发现this.setState是个异步操作。。。
阅读更多先放资料:
Learning a New Programming Language: Java for C++ Programmers
java package
先说几条重要的人话:
* 一个java文件第一行可以声明该文件所属于的package,package的名字必须与整个工作目录的路径名相同。 * 同一个package下的class默认有互相访问的权限。 * 访问属性设置为public的class,如果该class所在的file声明了package,那么可以被其他package下的class访问到。 * .java的文件名必须与文件中设置为public的class名保持一致(如果没有public的类,那么名称任 …
阅读更多背景
move semantics是modern cpp中非常重要的特性,有必要详细了解一下。
updateime: 2022年7月2日
move semantic
基本的内容大家都很熟悉,就不说了
std::move 做了什么
std::move没有move任何内容,只是简单把传进来转换为对应的rvalue reference
阅读更多起因是在看《CplusplusConcurrencyInAction_PracticalMultithreading》的时候,里面讲到初始化std::thread的时候,如果thread funtion的参数列表中有引用,需要传入std::ref才可以得到符合预期的结果。
阅读更多20181014update: 可以不写了,开心
迫于生计,要从零开始学习前端。
由于之前的to do list 年代久远+ 前端的技术栈可之前几乎没有关系,因此新开一篇记录。
* css盒子模型 * 布局,flex * 前端debug的方法 * <del>javascript,</del>有空可以使用js刷leetcode练习语法 * <del>typescript</del> * jsx,以及jsx的typescript版tsx * 学习axios https://alligator.io/react/axios-react/ * 学习dva: …
阅读更多先放参考资料:
react-typescript-cheatsheet (强推一波,讲了很多react+ts的实践)
typescript是javascript的语法扩展。。。好处是提供了类型。。可以在编译(结果为js文件)的时候提供静态的类型检查。。。
阅读更多最近在学习node.js,里面讲到node.js的事件机制使用了观察者模式,因此来学习一下。
观察者模式的目的是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
阅读更多Redux是Flux架构的一种实现。
至于Flux架构是什么,可以参考Flux 架构入门教程
粗略得讲,和MVC架构是同一类东西,最大的区别是单向数据流,禁止了Model和VIEW层之间数据的流动。

阅读更多暂时没空从头开始搞…用到哪里先记录一下好了orz我觉得不行,还是要先大致了解一下。
参考资料:
A re-introduction to JavaScript (JS tutorial)
1// 让我们假设我们有一个对象 o, 其有自己的属性 a 和 b: 2// {a: 1, b: 2} 3// o 的 [[Prototype]] 有属性 b 和 c: 4// {b: 3, c: 4} 5// 最后, o.[[Prototype]].[[Prototype]] 是 null. 6// 这就是原型链的末尾,即 null, 7// 根据定义,null 没有[[Prototype]]. 8// 综上,整个原 …
阅读更多
用人话就是,主线程传给附属线程一个promise Object,然后主线程想要获取附属线程set给promise Object的值(也就是该线程返回的某个结果),需要通过主线程中的promise object 得到对应的future object(每个promise 对应一个 future),然后调用future 的get方法。如果附属线程没有执行作为参数传入的promise的set方法去返回结果,那么程序就会block住。
阅读更多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 = …
阅读更多先放资料:
How to use boost::property_tree to load and write JSON
How to iterate a boost property tree?
不出现key的方法遍历一个json文件:
1 /* *********************************************** 2 Author :111qqz 3 mail: renkuanze@sensetime.com 4 Created Time :2018年08月17日 星期五 15时29分23秒 5 File Name :ptree.cpp 6 …
阅读更多C++11 std::function 是一种通用、多态的函数封装,它的实例可以对任何可 以调用的目标实体进行存储、复制和调用操作
见下面的例子
1 /* *********************************************** 2 Author :111qqz 3 mail: renkuanze@sensetime.com 4 Created Time :2018年07月19日 星期四 17时41分00秒 5 File Name :bind.cpp 6 ************************************************ */ 7 #include …
阅读更多