06 2019 档案

摘要:判断值类型的方法有三种: 通过decltype 通过declval 通过result_of #include #include int fn(int) { return int(); } // function typedef int(&fn_ref)(int); ... 阅读全文
posted @ 2019-06-26 23:30 osbreak 阅读(926) 评论(0) 推荐(0) 编辑
摘要:map与unordered_map的区别 1、map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素, 因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行这样的操作,故红黑树的效率决定了map的效率。 2、unordered_map: unordered_map内部实现了... 阅读全文
posted @ 2019-06-26 22:40 osbreak 阅读(361) 评论(0) 推荐(0) 编辑
摘要:动机: 在某些情况下我们可能会"过度地使用继承来扩展对象的功能”由于继承为类型引入的静态特质,使得这种拓展方式缺乏灵活性; 并且随着子类的增多(拓展功能的增多)",各种子类的组合(拓展功能的组合)会导致更多子类的膨胀。 如何使"对象功能的拓展"能够根据需要来动态实现?同时避免"拓展功能的增多"带来的 阅读全文
posted @ 2019-06-26 21:49 osbreak 阅读(112) 评论(0) 推荐(0) 编辑
摘要:#include #include class MyString { private: char* m_data; size_t m_len; void copy_data(const char* s) { m_data = new char[m_len + 1]; memcpy(m_data, s, m_len); ... 阅读全文
posted @ 2019-06-26 21:43 osbreak 阅读(295) 评论(0) 推荐(0) 编辑
摘要:类模版std::function是一种通用、多态的函数封装。 可调用对象的包装器,它最重要的功能是实现延时调用。 std::function对象是对C++中现有的可调用实体的一种类型安全的封装。 1、绑定普通函数 void func(void) { std::cout << __FUNCTION__ 阅读全文
posted @ 2019-06-25 23:36 osbreak 阅读(303) 评论(0) 推荐(0) 编辑
摘要:void func(void){} //函数指针 void(*func_ptr)(void) = &func; func_ptr(); struct Foo { void operator()(void){ } }; //仿函数 Foo foo; foo(); struct A { int a_; void mem_func(void)... 阅读全文
posted @ 2019-06-25 23:28 osbreak 阅读(144) 评论(0) 推荐(0) 编辑
摘要:std::wstring主要用于 UTF-16编码的字符, std::string主要用于存储单字节的字符( ASCII字符集 ),但是也可以用来保存UTF-8编码的字符。 UTF-8和UTF-16是UNICODE字符集的两种不同的字符编码。 std::string ws2s(const std::wstring &ws) { size_t i; std::string ... 阅读全文
posted @ 2019-06-24 22:54 osbreak 阅读(4382) 评论(0) 推荐(0) 编辑
摘要:模板类函数 1.01 std::is_floating_point std::is_floating_point是C++11新增加的类型特征模板之一,它用于判断一个类型是否是浮点类型。它包含在头文件<type_traits>中。 通过在模板函数中使用std::is_floating_point来判断 阅读全文
posted @ 2019-06-24 22:53 osbreak 阅读(759) 评论(0) 推荐(0) 编辑
摘要:待续 阅读全文
posted @ 2019-06-24 22:50 osbreak 阅读(174) 评论(0) 推荐(0) 编辑
摘要:std::future提供了一种访问异步操作结果的机制。 阅读全文
posted @ 2019-06-24 22:49 osbreak 阅读(188) 评论(0) 推荐(0) 编辑
摘要:s 阅读全文
posted @ 2019-06-24 22:47 osbreak 阅读(156) 评论(0) 推荐(0) 编辑
摘要://原子操作 计算机处理命令时最小的操作单位 atomic_int sum = 0; void workFun(int index) { for (int n = 0; n < 20000000; n++) { //自解锁 //lock_guard<mutex> lg(m); sum++; } } 阅读全文
posted @ 2019-06-24 22:44 osbreak 阅读(165) 评论(0) 推荐(0) 编辑
摘要:条件变量可以履行发送者或接收者的角色。 作为发送者,它可以通知一个或多个接收者。 条件变量允许我们通过通知进而实现线程同步。 因此,您可以实现发送方/接收方或生产者/消费者之类的工作流。 #include #include #include #include #include #include #include std::mutex mutex_; std::... 阅读全文
posted @ 2019-06-24 22:42 osbreak 阅读(274) 评论(0) 推荐(0) 编辑
摘要:待续 阅读全文
posted @ 2019-06-24 22:36 osbreak 阅读(126) 评论(0) 推荐(0) 编辑
摘要:std::this_thread::yield(): 当前线程放弃执行,操作系统调度另一线程继续执行。。 std::this_thread::sleep_for(): 表示当前线程休眠一段时间,休眠期间不与其他线程竞争CPU,根据线程需求,等待若干时间。 #include #include #include void little_sleep(std::chrono::mic... 阅读全文
posted @ 2019-06-24 22:34 osbreak 阅读(2104) 评论(0) 推荐(0) 编辑
摘要:待续 阅读全文
posted @ 2019-06-24 22:13 osbreak 阅读(613) 评论(0) 推荐(0) 编辑
摘要:std::optional还有一个类似于智能指针的接口, 它可以显式转化为bool来表示std::optional是否有一个值。 指针的解引用操作符*和->都实现了, 但是没有std::bad_optional_access,用这种方式访问一个空的std::optional是一个未定义的行为。 reset()清除std::optional包含的对象,让它为空。 int main(... 阅读全文
posted @ 2019-06-24 16:04 osbreak 阅读(1225) 评论(0) 推荐(0) 编辑
摘要:#include std::is_same 判断类型是否一致 通过std::is_same即可判断两个类型是否一样,特别在模板里面,在不清楚模板的参数时,此功能可以对一些特定的参数类型进行特殊的处理。 std::is_same可以判断两种类似是否一样,那么用在模板里就是利器了,本位一开始提到的那个问题就可以这样写: #include template typeCheck(TYPE da... 阅读全文
posted @ 2019-06-24 16:00 osbreak 阅读(1055) 评论(0) 推荐(0) 编辑
摘要:remove_reference 1.0 引用移除 remove_reference 引用折叠规则 A& & 折叠成 A& A& && 折叠成 A& A&& & 折叠成 A& A&& && 折叠成 A&& 阅读全文
posted @ 2019-06-24 15:57 osbreak 阅读(1547) 评论(0) 推荐(0) 编辑
摘要:#include <initializer_list> template <class T> class initializer_list; initializer_list对象中的元素永远是常量值const T,不能initializer_list对象中元素的值修改 1、可以使用初始化列表语法, 阅读全文
posted @ 2019-06-24 15:13 osbreak 阅读(584) 评论(0) 推荐(0) 编辑
摘要:decltype decltype ( 实体 ) decltype ( 表达式 ) 若实参是其他类型为 T 的任何表达式,且 a) 若 表达式 的值类别为亡值,则 decltype 产生 T&&; b) 若 表达式 的值类别为左值,则 decltype 产生 T&; c) 若 表达式 的值类别为纯右 阅读全文
posted @ 2019-06-24 14:53 osbreak 阅读(1592) 评论(0) 推荐(1) 编辑
摘要:auto 1.0 定义变量时,必须初始化 auto a = 10; // 正确 auto b; // 错误 1.1 不能用于函数参数 void func(auto a = 1); // 错误 1.2 不能用于函数参数 struct Foo { auto var1_ = 0; // error: au 阅读全文
posted @ 2019-06-24 14:52 osbreak 阅读(267) 评论(0) 推荐(0) 编辑
摘要:环境:win10 vs2017 c++17 boost 1、下载源码:https://github.com/qicosmos/iguana 2、创建工程,包含源码目录、boost库目录;boost库;c++17 阅读全文
posted @ 2019-06-21 16:48 osbreak 阅读(813) 评论(0) 推荐(0) 编辑
摘要:cinatra 一个高效易用的c++ http框架 1、下载源码 https://github.com/qicosmos/cinatra 2、 准备好boost库 (vs2019 编译boost库 【msvc-14.2】 x64位) 3、 vs2019 配置工程: c++17 、boost路径、库路 阅读全文
posted @ 2019-06-21 13:59 osbreak 阅读(1182) 评论(0) 推荐(0) 编辑
摘要:环境: win10 vs2017 v141 1、下载 boost_1_70_0.zip. 2、以管理员方式打开 3、 bootstrap.bat 4、编译64位库 b2.exe stage --toolset=msvc-14.1 address-model=64 --stagedir="D:\App 阅读全文
posted @ 2019-06-21 11:05 osbreak 阅读(4212) 评论(0) 推荐(1) 编辑
摘要:基础操作 1.0 Pod /* 获取命名空间 */ kubectl get namespace /* 创建命名空间 */ kubectl create ns test /* 删除命名空间 */ kubectl delete ns test /* 使用yml文件 */ kubectl apply -f 阅读全文
posted @ 2019-06-18 14:37 osbreak 阅读(970) 评论(0) 推荐(0) 编辑
摘要:Kuboard 搭建k8s 官网教程:https://kuboard.cn/ https://kuboard.cn/install/history-k8s/install-k8s-1.19.x.html 1.0 环境配置 # 修改 hostname hostnamectl set-hostname 阅读全文
posted @ 2019-06-15 18:25 osbreak 阅读(387) 评论(0) 推荐(0) 编辑
摘要:certbot certonly -》 选1 输入用邮箱 -》 A 同意 -》 Y -》 输入你的域名 -》 阅读全文
posted @ 2019-06-01 14:55 osbreak 阅读(394) 评论(0) 推荐(0) 编辑
摘要:查看端口占用 ss -lntpd | grep :80 阅读全文
posted @ 2019-06-01 13:54 osbreak 阅读(135) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示