自定义博客皮肤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繁昌!

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

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

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

2019-12-16 08:00:00 11140 12

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

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

2019-11-05 17:47:46 434

原创 机器学习之初学者学习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 1301

原创 特征工程之特征关联

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

2018-10-14 13:51:32 3941

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

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

2018-10-14 13:38:03 828

原创 gRPC 实战篇:从零打造库存管理系统

说一个好消息,C++那些事开源项目4w star了!开源项目地址:https://github.com/Light-City/CPlusPlusThings网站:可以点击阅读原文或者:https://light-city.github.io/stories_things/gRPC 实战篇:从零打造库存管理系统目录一、项目背景二、如何设计 Protobuf核心代码 (inventory.proto)...

2025-03-09 14:35:48 840

原创 太炸裂了!无需编写一行代码实现海螺语音生成!

大家好,我是光城,最近玩了一下大模型mcp server,写了一个本地mcp server,功能是让大模型读取本地文件,朗诵诗句。需求很简单,怎么实现呢?这里借助几个工具:1.cline+vscode2.deepseek3.minimax海螺ai这里是效果大家可以听一下,具体实现可以看视频,里面分享了如何从0到1搭建出来。懒人版:完整代码也分享到我的星球了,欢迎感兴趣加入下载,后面分享更多有趣的内...

2025-03-01 15:53:12 214

原创 深入浅出 C 语言中的 do{..}while(0):宏定义的秘密武器

深入浅出 C 语言中的 do{..}while(0):宏定义的秘密武器在 C 语言编程中,我们常常会遇到while、for、if-else这些熟悉的循环和条件语句,它们逻辑清晰,用法直观。然而,有一种构造却总是让人摸不着头脑——do{..}while(0)。乍一看,它似乎只是while循环的变种,功能完全可以被替代,那为什么 C 语言之父 Dennis Ritchie 要设计它?它究竟有什...

2025-02-24 22:59:08 534

原创 2025 年,C++ 还能“硬核”多久?

2025 年,C++ 还能“硬核”多久?编程语言江湖:谁主沉浮?JavaScript 稳坐王座,Python 无处不在TypeScript 和 Rust:新星闪耀C++:低调的“硬核大哥”现代 C++:从“老古董”到“新宠儿”C++ vs 新兴语言:谁更胜一筹?2025 年就业风向:C++ 的“硬核”舞台AI 浪潮下的 C++:硬核助力还是边缘化?2025 年,C++ 还值得学吗?如何“硬核”地学...

2025-02-22 17:55:29 919

原创 C++ 项目:Unsplash 爬虫与瀑布流实战

C++ 项目:Unsplash 爬虫与瀑布流实战你是否曾羡慕那些能轻松从网络抓取数据并优雅展示的神奇工具?你是否想用 C++ 写出既有技术含量又实用性爆棚的项目?今天,我将带你走进一个基于 C++ 的 Unsplash 图片爬虫与瀑布流展示项目。通常大家都在使用Python写一些爬虫项目,那么C++能不能做?那答案是肯定可以的,本篇文章将会从C++17+一些爬虫知识+重磅的第三方库写一篇完...

2025-02-20 23:33:19 625

原创 现代C++并发编程:从零到一实现下载任务调度器

现代C++并发编程:从零到一实现下载任务调度器目录一、现代C++的可调用对象体系1.1 可调用对象的演进1.2 std::function:万能的函数包装器1.3 std::bind:绑定参数1.4 Lambda表达式:现代C++的匿名函数二、主菜:手把手实现一个下载任务调度器2.1 下载任务调度器设计三、总结在学习我提供的线程池项目时,有些小伙伴提出了一些困惑。在C++的现代并发编程中,我们经常...

2025-02-17 21:54:02 775

原创 C++学习路径终极指南

最近有不少朋友问我cpp学习路径及规划,本篇系统讲解学习路径!如果你是初学者请看方案1,如果你是进阶者请看方案2。初学者必看 | 方案1:从零到Offer的完整通关适用人群:刚接触编程/基础薄弱的小白???? Step 1:语法筑基(1-2周)核心目标:掌握编程思维(逻辑控制、循环、函数)必备神器:书籍《C++ Primer》开源项目加持:《C++那些事》开源版???? Step 2:实战深化(3-4周)核心...

2025-02-15 08:49:13 380

原创 如何向DeepSeek提问才能获得神级答案?

如何向DeepSeek提问才能获得神级答案?通常我们写C++程序的时候遇到过各种问题,比如:“又是Segmentation Fault?代码编译一小时,调试一整天?明明代码和教程一模一样,为什么我的IDE疯狂报红?别人的C++20写得像Python一样优雅,我的代码却像祖传屎山?”“为什么我的#include总是找不到.h文件?”“链接时报undefined reference?我明明写了函数啊!...

2025-02-11 22:38:37 303

原创 C++17十大常用特性

玩转cpp小项目星球3周年了!今天分享两个知识点:C++17我常用的十大特性。git am与git apply对patch处理的不同。

2025-02-10 23:05:06 135

原创 从bazel八问来聊快速学习!

最近在学bazel,于是有了一个学习方法,给大家分享一下,欢迎探讨!

2025-02-09 21:03:05 366

原创 2025我的第二次社招,写在春招之季

先说一个好消息,C++那些事 4w star了!前面断更了一个月,本篇文章就可以看到原因,哈哈。大家好,我叫光城,腾讯实习转正做后端开发,后去小公司做数据库内核,经过这几年的成长与积累,终于在2024年末换了工作,再一次靠自己努力实现了大厂跳跃,顺便借此机会聊一下最近的求职行情与看法。在几年前,我的第一次社招,机会非常多,比如:无人驾驶行业,AI各种方向,后端,网络安全等等,再到2024机会少了很...

2025-02-08 21:08:29 306

原创 2024年度回顾

大家好,我是光城,又到一年的最后一天了,按照惯例写出了这篇年度文章。1.C++那些事今年这一年较上一年公众号更新91篇文章,跟去年持平---我的2023年度回顾,知识星球比去年多不少,有327篇。目前公众号已发表原创653篇!C++那些事专栏210篇#C++那些事今年公众号的内容方向划分为:− 性能相关− 多线程相关− 数据库内核心相关− STL相关− 项目相关开源项目C++那些事 39.9k ...

2024-12-31 18:10:32 184

原创 ​深入浅出事件驱动libev:从理论到实现

深入浅出libev:从理论到实现大纲libev实现原理1.基本框架1.1 事件句柄(ev_watcher)1.2 IO多路复用1.3 Timer1.4 事件循环(ev_loop)2.如何使用?3.课后作业前段时间,有一个小伙伴问我能不能更新一些网络编程相关内容,本节将从源码与实现角度来讲讲libev。libev是一个跨平台的高效事件通知库,主要用于多路复用事件机制(例如select、poll、...

2024-12-11 18:48:21 918

原创 C++20那些事之span设计与陷阱

C++20那些事之span设计与陷阱本节大纲0.初衷1. 何谓span?2. span的动态与静态2.1 静态 span2.2 动态 span3. subspan4. 使用陷阱4.1 不要让 span引用已经释放的内存4.2 改变底层数组大小时的问题C++20系列文章已经更新了快10篇了,往期如下:C++那些事之C++20协程开篇盘点C++20模块那些事C++20之lambda模版C++20四...

2024-12-10 16:01:23 1023

原创 如何秒懂阅读开源项目代码?

如何秒懂阅读开源项目代码?在实际项目或开源代码中,特别是C代码比较喜欢用宏,那么造成了一个很大问题:阅读代码非常的困难,调试也是另外一个问题,那么给你一个项目带有大量的宏,如何快速理解?通常我们在面试的时候会遇到一个非常重要的知识点:gcc编译过程,大家可能对答如流,那么为了区分候选人的水平,引申出:你知道gcc哪些编译参数,各自参数有什么用?预处理阶段会发生什么?一般你会在这个阶段做些什么,对你...

2024-12-09 10:39:10 385

转载 Apache Cloudberry™ (Incubating) Meetup · 2024 上海站:12 月 7 日,共话未来!

2024 年 10 月 12 日,Cloudberry Database 项目通过投票正式获准加入 Apache 软件基金会孵化器,标志着 Cloudberry 项目及其社区迈出了重要的一步。继此历史性时刻后,2024 年 11 月 5 日,Cloudberry 项目的代码仓库成功迁移至 Apache 软件基金会,正式开启孵化开发进程,且项目名称更改为 Apache Cloudberry™ (In...

2024-11-27 17:38:39 81

原创 深入探讨 C++ 中的 mutable 关键字

深入探讨 C++ 中的 mutable 关键字统一说一下前两天分享的项目一些问题:- 项目的详细文档在docs目录,包含C++特性讲解,框架实现,环境配置等。- 环境配置这一部分小白友好,可以直接用项目docker一键部署,非常方便。重磅C++20项目:现代 C++ HTTP 服务器今天主要来分享mutable,在 C++ 中,mutable 关键字经常被认为是“穿透”常量(const)限制的工具...

2024-10-18 09:47:52 796

原创 重磅C++20项目:现代 C++ HTTP 服务器

现代 C++ HTTP 服务器最近星球小伙伴总是问我有没有网络相关的项目,于是写了一个基于现代C++ + CMake管理的完整项目。该项目具备以下特性:大量现代C++特性C++20相关coroutineconceptstd::formatstd::spanC++17相关if语句初始化结构化绑定optional高效的事件驱动机制使用 epoll 实现事件循环,管理大量的客户端连接。epoll 是 L...

2024-10-15 13:50:34 366

原创 项目实战:从原理到实战C::*ptr

::*,估计99%的人都没用过,甚至没见过,可以留言区打出来!本节将会从0讲解语法,并使用一个项目中的实际例子来实战该用法。大纲1.什么是::*1.1 语法1.2 成员变量指针1.3成员函数指针3.有什么用?4.实际项目衍生实用工具!注:懒人版,本节所有代码与示例已更新至星球,感兴趣加入即可。1.什么是::*C::* 是 C++ 中的成员指针语法,表示指向某个类 C 成员的指针。这个语法用于指向...

2024-10-12 17:53:32 318

原创 C++20那些事之constexpr与comma expr

C++20那些事之constexpr与comma exprC++20 引入了多项新特性,进一步增强了编译时能力和代码安全性。本文将深入探讨两项重要的变更:constexpr 函数中的异常处理以及下标运算符中逗号运算符的弃用。注:懒人版,本节的代码示例与相关文档已更新在星球,感兴趣加入即可。1. constexpr 函数中支持 try-catch 异常处理的变更在 C++20 之前,constexp...

2024-10-11 17:58:52 1049

原创 从浅入深,灵活妙用!避免调用默认构造!

C++那些事之避免调用默认构造在 C++ 中,有一些容器通过 resize() 方法调整大小时,默认构造函数会被调用,这可能并不是我们想要的行为。本文将介绍如何使用自定义分配器来控制这一过程,避免默认构造的调用。示例1://[0,1,2,3,4,5,6,7,8,9]vec.resize(5);vec.resize(10);你知道此时输出什么吗?答案是:[0,1,2,3...

2024-10-09 19:24:49 199

原创 C++与Rust那些事之跳过析构函数

C++与Rust那些事之跳过析构函数在Rust中mem::forget用于防止对象的析构,跳过清理工作,从而让资源的释放交给其他机制管理。例如:letfile=File::open("foo.txt").unwrap();mem::forget(file);那么在C++中如何防止析构?即跳过析构函数呢?本节将给出三种办法,完整代码示例也放于星球。1. placement newplacem...

2024-10-08 19:28:21 503

原创 高频问题:new之后是否有必要判空?

大家在阅读代码的时候可能会看到各种代码,例如:Foo*f=newFoo();if(f==nullptr){//dosomething.}f->print();或者Foo*f=newFoo();f->print();那么这两个问题归为:在new之后的nullptr判空是否必要呢?欢迎留言区讨论~一起探索更多C++项目/知识~往期推荐:向量数据库m...

2024-10-07 13:33:56 267

转载 项目实战:使用 C++17 和 SQLite 实现文件夹大小计算与存储

项目实战:使用 C++17 和 SQLite 实现文件夹大小计算与存储大纲项目目标项目实现步骤本节将会围绕一个项目背景展开:假设业务中需要定时检查某些文件夹大小,并做一下持久化操作,C++如何去完成这一个项目呢?本节带你通过一个小项目,使用 C++17 和 SQLite 实现一个文件夹大小计算与存储的系统,帮助你更好地管理你的文件系统。注:懒人版,完整代码已更新星球。项目目标我们将实现以下功能:递...

2024-09-30 13:32:07 191

原创 C++那些事之const全家桶

C++那些事之const全家桶大纲constconstexprC++20constevalconstinit注:本文所有代码示例已放星球。1.constconst 是我们在学习 C++/C 时最早接触的关键字之一,通常作为 cv-qualifier 使用,表示对象不可变。它并不保证 编译时评估,具体何时评估由编译器决定。例如:constinta=1;//编译时constautox...

2024-09-29 18:06:20 647

原创 C++那些事之内存优化

C++那些事之内存优化通常程序运行时内存是一个比较大的问题,如何减少内存占用和提升访问速度是至关重要。为了解决这些问题,C++20 引入了 no_unique_address 特性,并结合空基类优化(EBO, Empty Base Optimization),为开发者提供了一种有效的方式来优化内存布局。大纲:C++20之前的EBOC++20之后的no_unique_address注:本节代码已放星...

2024-09-28 21:27:18 425

原创 C++那些事之变量模版

C++那些事之变量模版开篇先给大家引入一个星友发的代码,这段代码你猜结果是什么?a) 编译错误b) 运行ok,请说明结果。下面就来揭秘这道问题吧在编写模板代码时,我们经常需要定义和使用各种类型特征(type traits)。这些类型特征通常用于在编译期对类型进行判断,STL 提供的 std::is_const、std::is_same 和 std::is_reference 就是这样的例子。通过这...

2024-09-26 15:45:40 1013

原创 PostgreSQL JAVA与SQL集成之PL/Java

PostgreSQL+ pljavaPL/Java 作为 PostgreSQL 的编程语言扩展之一,与 PL/pgSQL(PostgreSQL 原生的存储过程语言)相比,提供了 Java 语言特有的面向对象功能,并支持 Java 的标准库和第三方库。由于 Java 是一种跨平台的语言,这意味着在使用 PL/Java 时,开发者可以轻松利用 Java 现有的生态系统,如 Apache Commons...

2024-09-19 15:59:55 1088

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

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

2024-09-10 18:29:07 617

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

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

2024-09-09 18:57:40 952

原创 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 663

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

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

2024-08-26 16:41:53 292

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

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

2024-08-20 19:13:17 396

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

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

2024-07-29 12:02:10 482

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

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

2024-07-25 18:44:00 404

空空如也

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

TA关注的人

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