摘要: 一、递归函数 看如下递归函数: 1 int f(int n){ 2 if(n == 1){ 3 return 1; 4 } 5 return f(n - 1) + 1; 6 } 客户端调用该递归函数时传入n = 5, 返回的函数值为5。那么它的调用堆栈(call stack)是怎么样的?又是如何计算 阅读全文
posted @ 2021-04-22 17:13 blackstar666 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 一、Lambda表达式定义 二、Lambda捕获方式 三、Lambda使用 1 void main() 2 { 3 int a = 1, b = 2; 4 auto fn1 = []() {std::cout << "fn1\n"; }; 5 // auto fn1 = []() {std::cou 阅读全文
posted @ 2021-04-21 18:18 blackstar666 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 一、lock_guard和unique_lock锁 在并发编程中,我们常常使用标准库中的mutex互斥对象实现线程同步;但是如果在开发中裸用mutex对象,当某个线程锁住临界资源或临界区且在未解锁的情况下异常退出,那么其他线程将始终无法访问临界资源或临界区。lock_guard和unique_loc 阅读全文
posted @ 2021-04-06 22:39 blackstar666 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 一、问题探讨 大家是否有在子类或基类构造函数中调用虚函数的情况呢?语法是否支持?执行情况如何呢?为什么呢? 二、问题验证 这个问题的最好答案是亲自写个demo调试下看看结果如何,下面是demo代码(vs2019): 1 class Base { 2 public: 3 Base() { 4 cout 阅读全文
posted @ 2021-03-26 22:07 blackstar666 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 在防火墙内部的客户端主机(A)想访问某个服务器(C)时,有时候是无法直接访问的;但是如果有一台服务(B),A可以直接访问,而B又可以直接访问C,那么就可以通过访问B服务达到间接访问C的目的,B称为代理服务器。这篇文章介绍下socks5的TCP代理。 一、什么是socks5代理 socks5是sock 阅读全文
posted @ 2021-03-22 00:48 blackstar666 阅读(1695) 评论(0) 推荐(0) 编辑
摘要: 一、背景 在C++标准库(第2版)第10章中的10.1.4 Predicate(判断式) VS.Function Object(函数对象)有这么个例子(gcc 4.5 visual C++2010): 1 class Nth { 2 public: 3 Nth(int nth) : _nth(nth 阅读全文
posted @ 2021-03-14 11:53 blackstar666 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 一、前言 Microsoft Windows中存在大量获取系统属性的API,其中参数很多都是结构体类型,比如获取系统内存信息API: 1 void main() 2 { 3 MEMORYSTATUSEX memInfo{}; 4 memInfo.dwLength = sizeof(memInfo); 阅读全文
posted @ 2021-03-13 19:29 blackstar666 阅读(645) 评论(0) 推荐(0) 编辑
摘要: 一、背景 在C++中,当我们在堆或栈上创建一个对象的时候,系统会自动调用对象的构造函数;当对象声明周期结束的时候,系统又会自动调用对象的析构函数。其实,我们在阅读其他项目的时候,也会发现有些类定义中,会将构造和析构函数申明为私有;客户端在这正常情况下无法创建该类的对象(不考虑使用相关的方式)。如下定 阅读全文
posted @ 2021-03-13 13:28 blackstar666 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 一、问题引入 有如下一段代码: 1 auto MakeGuard(HINTERNET hinternet) 2 { 3 if(!hinternet) { 4 const DWORD ec = ::GetLastError(); 5 throw std::system_error(ec, std::s 阅读全文
posted @ 2021-03-10 23:35 blackstar666 阅读(1151) 评论(0) 推荐(0) 编辑
摘要: 一、背景 一个进程的线程窗口(window1)如何在不知道另一个进程的线程窗口(window2)的情况下接收到window2发送的自定义消息呢? 二、自定义消息 Windows系统除了预定义一些系统的消息外,还为用户预留了自定义消息的范围(WM_USER~0x7FFF)。通过RegisterWind 阅读全文
posted @ 2020-03-13 23:18 blackstar666 阅读(421) 评论(0) 推荐(0) 编辑