自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Francis的博客

Keep Looking,Don't Settle! 分享传递,传递互动,IT繁昌!

  • 博客(727)
  • 问答 (2)
  • 收藏
  • 关注

原创 现代C++之万能引用、完美转发、引用折叠(万字长文)

现代C++之万能引用、完美转发、引用折叠0.导语1.问题引入2.引入万能引用3.万能引用出现场合4.理解左值与右值4.1 精简版4.2 完整版4.3 生命周期延长4.4 生命周期延长应用...

2019-12-16 08:00:00 10658 12

原创 记录我的开源之C++那些事

大家好,我是光城,在一个月左右的时间里面完成了侯捷老师相关的资料学习以及其他学习等等,将之前的C++那些事等汇总起来,记录自己的学习历程,关于C++从入门、基础、进阶、源...

2019-11-05 17:47:46 405

原创 机器学习之初学者学习Sklearn

更高级的scikit-learn介绍翻译自:https://github.com/glemaitre/pyparis-2018-sklearn有关翻译项目,欢迎star与加入翻译组:https://github.com/Light-City/Translating_documents在本节教程中将会绘制几个图形,于是我们激活matplotlib,使得在notebook中显示内联图。# 启用...

2019-01-06 14:24:49 1246

原创 特征工程之特征关联

特征工程之特征关联0.说在前面昨天学习了seaborn绘制图形,以及单变量与多变量之间的绘图,那么今天从统计学角度实战分析在处理特征工程过程中所涉及的三个相关系数(具体的三个系数数学推导,在后续更新)。为了更好的便于大家的交流,先建立一个微信总群,二维码在文章最后放出!【关键字】相关系数微信总群1.皮尔逊皮尔逊相关系数:Pearson correlation coeffici...

2018-10-14 13:51:32 3777

原创 实时车票查询及登陆CTC

实时车票查询及登陆CTC0.说在前面本文实现下面两个功能【第一】 如何登陆12306【第二】 如何做到实时车票查询当你们在排队等候服务器响应的时候,我已经买下票了;当你们在抢购最后一张车票的时候,已经没了;当你们在等待放票的时候,我已经调整好买票方案了。哈哈,有点难拉仇恨。。那么没事,学好接下来的操作,会有助于你解决车票麻烦。车票查到了,离心中的远方还远?Close To C...

2018-10-14 13:38:03 780

原创 C++性能优化之尾递归

尾递归优化是一种特殊的优化技术,适用于递归函数,它可以极大地减少递归调用的栈空间占用。通过尾递归优化,编译器可以在执行尾递归时避免创建新的栈帧,直接复用当前的栈帧,从而降低栈溢出的风险,并提高性能。大纲什么是尾递归?非尾递归的示例尾递归优化的示例尾递归优化的优势性能测试注:懒人版,本文代码与性能测试已同步至末尾星球,感兴趣进去学习即可。什么是尾递归?递归调用在返回时,没有其他操作需要执行,这样的递...

2024-09-10 18:29:07 336

原创 C++那些事之精选68道面试题

有小伙伴问我要一些C++的学习题目/面试题目,我这里总结了一下分享给大家,大家可以自行去回答下面的问题,看看可以解答多少个。注:懒人版附代码与答案会在文末星球详细讲解。大纲基础概念面向对象编程STL(标准模板库)内存管理并发编程模板与泛型编程现代 C++(C++11/14/17/20)优化相关系统定位与调试基础概念nullptr 和 NULL 的区别?什么是 RAII(Resource Acqui...

2024-09-09 18:57:40 879

原创 C++20那些事之何时使用可能性属性?

C++20 引入了 [[likely]] 和 [[unlikely]] 这两个可能性属性,它们会给编译器优化提示,表示对应代码路径可能/不可能被执行。乍一看,这似乎是一组很不错的属性,通过编译器优化,从而提高性能。但是事实并不是如此。在C++ 标准草案中明确提到:Excessive usage of either of these attributes is liable to result in...

2024-09-08 13:50:10 570

原创 函数模版与类模版你会?

最近看到一个很有意思的模版问题,看看大家对函数模版与类模版的基础掌握的如何,对于下面这个例子会出现什么问题?你一般使用什么方法进行修复?提示:本题考察类模版、函数模版。template<typenameT,intR>structfoo{foo(constT&v):value_(v){}voidbar(){std::cout&...

2024-08-26 16:41:53 244

原创 C++那些事之helgrind并发编程检测

C++那些事之helgrind并发编程检测大纲死锁数据竞争提问通常我们在写多线程程序的时候很容易遇到两个问题:死锁了,不知道什么原因导致数据不一致,多个线程没保护数据那么有没有工具来检测这两种场景呢答案是有的,我们可以使用valgrind的helgrind工具检测这两个问题,为了使本文讲解的更加丝滑,引出了几个例子。注:完整示例及修复示例已更新至星球。死锁假设有两个线程互相持有对方的锁,此时我们可...

2024-08-20 19:13:17 337

原创 C++那些事之结构化绑定

C++那些事之结构化绑定在聊结构化绑定之前,有几个面试问题,看看你会不会?如何使用结构化绑定访问自定义类的私有成员?如何使用结构化绑定修改自定义类的成员呢?这几个题目估计没几个人能答上来,题目与答案网上也都没有,基于这些问题,我们引出本文的内容:如何为自定义类型支持结构化绑定,里面有哪些坑?注:懒人版,答案与代码已放星球。为了让本文的内容更加丝滑,从示例出发。1.自定义类型如果给定一个类:stru...

2024-07-29 12:02:10 430

原创 C++20那些事之一文打通字节序

C++20那些事之一文打通字节序大纲:1.字节序基础2.字节序的重要性3.检查字节序在面试的时候,字节序通常是一个非常重要的考点,会考察:大小端概念如何判断大小端主机字节序网络字节序等等,那么判别方式其实有很多种,例如:C++20的endianunion地址转换htons那么本节就来阐述一下C++20的大小端使用与基础知识。注:懒人版,4种方式判别大小端源码已放星球,感兴趣获取即可。1.字节序基础...

2024-07-25 18:44:00 361

原创 C++那些事之代码陷阱

星球有个朋友说面试官问他一道代码分析题目,并要求他提出解决方案,然后今天简单复现一下当时的代码,你能直接看出来存在什么问题吗?如何修复它,你能给出几种方法?分别在什么场景下用哪种方法呢?代码简单介绍如下:给出了两个类,一个是buffer管理器,底层是buffer,buffer管理器持有一个buffer指针,有一个getBuffer函数。主逻辑也很简单,就是构造BufferManager,调用get...

2024-07-23 18:30:15 236

原创 C++那些事之快来pick出你喜欢的字符串分割方法

C++那些事之五种方法字符串分割通常我们在开发的时候会对一个长字符串依据分隔符进行分割,从而得到我们想要的字符串,大家都说C++字符串分割并没有那么方便,今天来总结一下5种方法分割字符串。包含了从C++11到C++20的写法,以及C风格。大纲1.find分割2.C++20 Ranges与Views分割3.正则分割4.istringstream分割5.C风格的strtok分割为了方便后续文章的讲解,...

2024-07-21 13:28:21 281

原创 C++那些事之依赖注入

C++那些事之依赖注入最近星球里面有个小伙伴让更新一下依赖注入,于是写出了这篇文章,来从实际的例子讲解,本文会讲解一些原理与实现,完整的实现代码懒人版放在星球中,我们开始正文。大纲:直接依赖接口依赖注入模版依赖注入依赖注入是一种常用的设计模式,通常会采用接口/模版的方式提高代码的可测性与维护性,下面我们来举个例子。假设有一个用户服务类UserService,需要通过HTTP客户端与远程服务器进行通...

2024-07-18 23:31:51 1136

原创 C++20那些事之宇宙飞船运算符

大纲三种排序equal与equivalent为什么使用三向比较运算符?本节将引入C++20的另一个知识点:宇宙飞船运算符/三向比较运算符。三种排序三向比较运算符<=>又称为宇宙飞船运算符,返回值有三种排序,下面从gcc源码角度来深入聊一下。注:懒人版,本节示例已更新星球。用法:<=>#include<compare>#include<iostream...

2024-07-12 15:33:15 982

转载 C++20之lambda模版

C++20之lambda模版本节将会引入C++14与C++20在lambda 模版的处理,对比两者的区别,讲讲为何C++20引入了lambda 模版,同时提出一些问题,欢迎大家留言区交流。注:懒人版福利,本节代码与问题答案会在星球更新。C++14 支持泛型 lambda 表达式,这使得 lambda 可以接受任意类型的参数,例如:autofunc=[](autoa,autob){...

2024-07-08 11:44:32 46

原创 C++那些事之小项目实战-进程间通信

小项目实战之进程间通信进程间通信是一个非常重要的话题,特别是像一些大型项目都有它的影子,例如:PostgreSQL使用了管道完成copy的进程间通信,那么本节也将基于这个主题,使用C++去搭建一个进程间通过管道通信的demo出来,本节将会结合前面几节讲的内容,给出一个比较完整的实战例子出来:mutexcondition_variablethread注:本节的完整代码会放在星球中。首先一个很简单的管...

2024-07-02 17:22:11 506

原创 项目包管理工具之零基础入门Conan

项目包管理工具之零基础入门Conan相信知道学习过CMake、Makefile的同学都知道在管理C++项目依赖时很麻烦,有没有一个包管理工具可以方便的管理第三方库呢?答案是Conan, Conan是一个用于C++项目的开源包管理工具。它的主要目标是简化C++项目的依赖关系管理过程,使开发人员能够更轻松地集成、构建和分享C++库。其中有一些比较独特的功能,例如:版本管理、第三方库管理等。今天从0开始...

2024-06-28 09:22:20 360

原创 [图解] 向量数据库之何谓乘积量化器?

Product Quantization在前面一节讲解了向量数据库索引相关的内容,那么本节将会讲解其中压缩方法的量化手段:乘积量化器。简单来说将向量的所有维度划分为多个子空间,每个子空间一部分维度,然后每个子空间独立去找最近距离。例如一个128维度的向量,划分为16个子空间,每个子空间有该向量的8个维度,第一个子空间:1-8,第二个子空间9-16,第十六个子空间121:128。下面详细讲解Prod...

2024-06-27 13:29:29 223

原创 向量数据库原理之向量索引

向量索引在前面的文章中讲解了milvus的源码安装——向量数据库milvus源码剖析之开篇,向量数据库通常具备以下特点:向量索引:用来支持高效的搜索,快速定位与查询向量相关的数据集。相似度搜索:支持余弦、欧式距离等的搜索。分布式架构,存算分离等。本节将会着重讲向量索引。众所周知,向量数据库的主要目的是提供一种快速有效的方法来存储和高效查询数据,使向量数据类型成为一等公民。两个向量之间的相似性可以通...

2024-06-26 22:33:47 692

原创 项目篇:加入Python程序之如何在Python中使用C++?

项目篇:加速Python程序之如何在Python中使用C++?通常像一些耗时的操作,我们期望在C++中去实现,然后使用Python去调用对应的接口,或者因为底层库的原因,需要支持对外的Python API,那么我们通常需要支持在Python中访问C++,如何实现呢?方法比较多,本节以pybind11为例,引入一个完整的项目工程模版,如果你后续有这种需求,可以基于模版去修改。注:(懒人版)本节的所有...

2024-06-19 14:25:46 316

原创 C++代码编写风格:Header-Only与声明实现分离的选择

C++代码编写风格:Header-Only与声明实现分离的选择最近看到一些小伙伴问到了几个比较有趣的问题,这里总结一下,这些都是实际面试中出现过的问题,看看你知道多少,考察一下底子。面试问题1:你通常编写代码的风格是什么?Header-Only?还是声明与实现分离?面试问题2:C++里面是否所有的函数可以分离实现与声明?为什么?面试问题3:模版的声明与实现分离有哪些方法?请举例说明各自优缺点,适用...

2024-06-17 11:49:37 447

原创 C++那些事之有趣的面试问题

最近想出一些有趣的问题,做一个小总结,你能回答上来几个?注:完整答案会在星球揭秘。问题1:std::variant构造函数会调用几个类型构造,1个?2个?n个?std::variant<std::string,int>a1;std::variant<X,Y>a2;相关问题:std::variant 的默认构造行为如何?当 std::variant 包含类型不具有默...

2024-06-13 17:00:33 233

原创 史上最全STL系列之从0到1全面盘点Mutex与RAII Lock

大家好,我是光城,在昨天的直播当中讲解了并发编程中最重要的一部分内容:Mutex + RAII Lock,从0到1,深入STL源码全面盘点从C++11 到 C++17的所有mutex、RAII Lock。昨天的直播讲了一个半小时,内容比较多,今天简单总结一下,讲解的面试题可以给大家分享一下,关于下面的答案与昨晚的练习代码都会放在我的星球里面,感兴趣加入后面星球即可。昨晚的直播视频也放在b站上了,识...

2024-06-07 09:57:49 228

原创 [预告] 现代C++之全面解读Mutex与RAII Lock

目标在我们编写并发编程项目的时候,mutex是必须要掌握的点,深入mutex的底层原理与实现能够帮助我们更好的理解与使用mutex。例如:在编写代码时,我们会遇到如下几个场景:如何避免死锁如何自动释放锁如何设置超时控制多读写少的场景下如何高性能的使用mutex等等。那么本节将会从0到1,深入STL源码,全面盘点从C++11 到 C++17的所有mutex、RAII Lock。本节将会引入多个示例,...

2024-06-03 18:13:22 250

原创 C++20实战之channel

C++20实战之channel继前面两节的直播,讲解了thread、jthread、stop_token、stop_source、stop_callback、cv、cv_any等的用法与底层实现,那么如何基于这些知识实现一个小项目呢?于是引出了这篇,写一个channel出来。注:本节的代码部分将会在星球公开,需要代码的前往末尾获取。1.设计1.1 接口设计接口层面我们期望与通用的channel一样...

2024-05-27 11:30:38 396

原创 C++那些事之智能指针何时作为函数参数

C++那些事之智能指针何时作为函数参数通常我们可以看到有些函数用了智能指针作为参数,有些函数又使用了裸指针,究竟用哪一个呢?使用原则是什么?本节使用abseil的tips进行讲解。如下所示,这段代码有什么问题呢?boolCanYouPetTheDog(conststd::shared_ptr<Dog>&dog,absl::Dur...

2024-05-22 16:46:45 501

原创 C++17 那些事之删除三字母

C++那些事之删除三字母C++17 之前,Trigraph 是用 ISO/IEC 646 等小字符代码编写程序的功能,在 C89 中引入。ISO/IEC 646 缺少 C 中使用的以下字符,因此??请使用以下字符进行转义:注:本节代码已放星球。三字母内容替换的内容??=#??([??)]??<{??>}??/\??!`??-~??'^\?它被转义以防止被三字母表替换。C++17三字母被...

2024-05-16 17:30:28 227

原创 C++那些事之Mixin惯用法

C++那些事之Mixin惯用法大家好,我是光城,今天给大家分享C++那些事里面的一个惯用法:mixin混合(Mixins)是Lisp中的一个概念。混合是类的一部分,意味着它旨在与其他类或混合组合在一起。常规独立类(例如Person)与混合的区别在于,混合模拟了一些小功能片段(例如打印或显示),并不用于独立使用。相反,它应该与需要此功能的其他类(例如Person)组合在一起。因此,混合的目的是允许类...

2024-05-14 14:32:41 673

原创 手把手共读STL系列之cv与cv_any[含内容]

手把手共读STL系列之cv与cv_any[含内容]最近打算做一系列的《手把手共读STL》,目前更新了几期,有两期直播,最近一期是cv,使用了非常多的示例,从0到1彻底讲明白condtion_variable与condition_variable_any的用法与底层原理!在直播中讲解了:1.condition_variable与condition_variable_any2.两者的底层实现3.学习如...

2024-05-13 11:29:33 330

原创 玩转cpp小项目星球3周年了!

公众号原创文章破600!玩转cpp小项目星球目前已运营3年,平时不怎么宣传,借此机会给大家分享一下这三年里面我沉淀了哪些内容。里面包含:1.小项目:一些核心模块的拆解,例如:grpc、mutex、线程池等。2.公众号的所有付费文章。3.开源项目源码剖析:例如:gcc-stl、leveldb等。4.技术与工作分析。5.C++那些事内部版本 + 十日狂练。6.C++20与现代C++持续更新中。7.数据...

2024-05-12 13:19:22 168 1

原创 C++那些事之共读cv

大家好,我叫光城,在上一期视频,我们直播讲解了全面解析C++11与C++20线程(含内容),本期将会从0基础讲解condition_variable与condition_variable_any。学习完本节内容,你将掌握以下几个内容:完全掌握condition_variable与condition_variable_any掌握两者的底层实现学习如何设计一个支持任意锁的cv学习如何设计一个支持优雅停...

2024-05-11 09:16:56 351

原创 预告-共读condition_variable

大家好,我叫光城,在上一期视频,我们直播讲解了全面解析C++11与C++20线程(含内容),本期将会从0基础讲解condition_variable与condition_variable_any。学习完本节内容,你将掌握以下几个内容:完全掌握condition_variable与condition_variable_any掌握两者的底层实现学习如何设计一个支持任意锁的cv学习如何设计一个支持优雅停...

2024-05-10 23:15:17 275

原创 如何实现一个线程安全多生产多消费者队列?

如何实现一个线程安全多生产多消费者队列?大家好,我是光城,在讲解明天的预告-从0基础入门到彻底掌握condition_variable内容之前,举一个非常有趣的例子,如何实现一个线程安全的多生产多消费者对列呢?如果让你手撕一个,可以写出来吗?里面有哪些细节?如何使用condition_variable?完整代码如下:获取方式见文末。引入之前,我们需要先写一个线程安全的队列,然后才能写出一个多生产多...

2024-05-10 12:01:35 298

原创 预告-从0基础入门到彻底掌握condition_variable

简介大家好,我叫光城,在上一期视频,我们直播讲解了全面解析C++11与C++20线程(含内容),本期将会从0基础讲解condition_variable与condition_variable_any。std::condition_variable 是一种与 std::mutex 一起使用的同步原语,用于阻止一个或多个线程,直到另一个线程修改共享变量(条件)并通知 std::condition_va...

2024-05-09 23:38:29 346

原创 全面解析C++11与C++20线程(含内容)

昨晚跟一些小伙伴做了第一次直播尝试,一起探讨了C++11 thread与 C++20的jthread,于此同时给大家出了几个问题,在直播之外不会公布答案,所以以后直播还是得跟着走起。总共有22人参加直播,氛围相当不错,没有录播,不过我自己花了点时间重新录了个视频,讲解内容一致,感兴趣的也可以直接在b站观看,对应的内容资料也直接在我的直播群里发出来了,如果你也需要,后台回复:thread。昨晚内容大...

2024-05-08 10:20:42 392

原创 深入STL源码解读线程

大家好,我是光城,最近有小伙伴让我讲一下thread,于是安排起来了,写了几千字的文章。想象一下,一起直播看gcc-13源码,一起学习C++11、C++20的源码是多么的有趣,本次讲解的内容将会带大家深入gcc-13的源码,从C++ 11到C++20,一起揭秘thread与jthread,非常硬核。目标帮助学习者深入学习thread与jthread,学习本次直播你将掌握如何阅读gcc-13的源码C...

2024-05-06 13:38:25 168

原创 阅读C++源码就这么简单,来写一个工具辅助吧。

利用Python协助解读C/C++程序源码导语通常我们希望想看看Redis源码,可惜太慢太多,思维太乱,于是想到看是否用Python可以分析出这个源码直接的依赖关系。这里说的依赖关系指的是,假设有一个C/C++程序,如下redis-cli.c:#include"fmacros.h"#include"version.h"#include<stdio.h>#include&l...

2024-05-01 10:05:17 326

原创 [预告]全面解析thread 与 jthread

大家好,我是光城,最近有小伙伴让我讲一下thread,于是安排起来了,写了几千字的文章。想象一下,一起直播看gcc-13源码,一起学习C++11、C++20的源码是多么的有趣,本次讲解的内容将会带大家深入gcc-13的源码,从C++ 11到C++20,一起揭秘thread与jthread,非常硬核,到时候也欢迎大家一起交流。这次也打算尝试做一次付费直播,时间暂定5.7晚8点,感兴趣的私聊我发10....

2024-04-30 11:47:31 214

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除