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

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

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

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

2019-12-16 08:00:00 10021 12

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

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

2019-11-05 17:47:46 389

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

原创 特征工程之特征关联

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

2018-10-14 13:51:32 3692

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

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

2018-10-14 13:38:03 755

原创 开源贡献代码之​探索一下CPython

探索一下Cython本篇文章将会围绕最近给Apache提的一个feature为背景,展开讲讲CPython遇到的问题,以及尝试自己从0写一个库出来,代码也已经放星球了,感兴趣的同学可以去下载学习。0.背景最近在给apache arrow提的一个feature因为C++接口的变动引发其他语言的接口变动,一些测试也跟着需要修复。像PyArrow熟悉的人应该一点也不陌生,这次接口变动也需要修改这个库,因...

2024-04-19 17:27:02 108

原创 C++如何排查并发编程死锁问题?

C++如何排查并发编程死锁问题?最近在Apache arrow里面写一个支持并行的算子:nested loop join,然后既然涉及到并行,这里就会遇到大家常说的死锁问题,假设你碰到了死锁问题,如何调试与定位呢?那这便是本篇目标,帮助你快速掌握并发编程:死锁检测与死锁调试问题,非常的干,好了进行正文。1.引入为了更好的讲解死锁,我们用一个程序来引入。std::mutexgMutex;int...

2024-04-11 11:21:15 407

原创 Rust那些事之ToOwned trait

Rust那些事之ToOwned trait默认的Clone trait有两个问题:只支持固定大小的类型转换也只能从&T到T,不能够从&T到U的转换。pubtraitClone:Sized那么如何实现呢?于是便有了ToOwned trait。ToOwned内部有一个关联类型Owned,实现ToOwned要求其实现Borrow trait。pubtraitToOwned{...

2024-04-08 14:06:14 505

原创 Rust那些事之Borrow VS AsRef​

最近看到两个trait长得挺像,带着疑惑前来学习一下。Borrow VS AsRefBorrow与AsRef是Rust中非常相似的两个trait,分别是:pubtraitBorrow<Borrowed:?Sized>{fnborrow(&self)->&Borrowed;}pubtraitAsRef<T:?Sized&gt...

2024-04-07 17:29:13 641

原创 手搓一个Suno AI 下载器

最近suno确实火,做了不少音乐,我自己也挺喜欢的。https://www.suno.ai/由于官方的音乐没法下载,为了帮助本地播放或者获取音乐,昨晚花了两个小时从零写了一个suno download,使用也比较简单,只需要输入分享的链接,点击下载按钮即可。体验地址:https://light-city.github.io/suno_scan/或者点击阅读原文即可访问。有人一直说找不到项目,不知道...

2024-03-30 11:56:51 338

原创 如何在Apache Arrow中定位与解决问题

如何在apache Arrow定位与解决问题最近在执行sql时做了一些batch变更,出现了一个 crash问题,底层使用了apache arrow来实现。本节将会从0开始讲解如何调试STL源码crash问题,在这篇文章中以实际工作中resize导致crash为例,引出如何进行系统性分析,希望可以帮助大家~在最后给社区提了一个pr,感兴趣可以去查阅。https://github.com/apach...

2024-03-27 16:58:20 991

原创 Rust那些事之深入理解文件系统的flush

Rust那些事之深入理解fs的flush在 Rust 中,fs 模块提供了文件系统操作的函数,包括向文件写入数据。其中一个常用的函数是 fs::write,它允许用户将数据写入文件。然而,重要的是要注意,fs::write 不会自动刷新或同步数据到磁盘,如果不正确处理,可能会导致潜在的数据丢失或不一致性问题。问题问题出在 fs::write 不保证写入文件的数据立即结束在磁盘上。相反,它会将数据缓...

2024-03-26 18:57:26 586

原创 零基础学习Vim全面指南

学习Vim全面指南最近整理了一下vim学习的资料,简单汇总一下。1.Vim大冒险这是一个寓教于乐学习vim的方式,通过游戏来学习vim,比较特别。https://vim-adventures.com/2.Vim图解一张图比较清晰的讲解个常用的命令。例如:w下一個wordW下一個word(跳過標點符號)b前一個worde跳到目前word的尾端https://blog.vgod.tw/2009/12/...

2024-03-25 11:18:40 760

原创 全面盘点17个C++17的高级特性

全面盘点17个C++17的高级特性C++17是目前比较常用的版本之一,今天花时间来梳理一下17个重要特性,所有的特性也不止这么点。目录1. 并行算法2. If Initializers3. 类模板参数推导(CTAD)4. template `<auto>`5. std::optional 和 std::variant6. 折叠表达式7. 结构化绑定8.模板模板参数9. 内联变量10. ...

2024-03-21 11:54:53 588

原创 戳->考察C++基础的两道小题

昨天分享了一天本来是考察unique_ptr禁止拷贝行为的,但是粘贴的时候贴成正确代码了,于是,今天继续找两道小题来练练手。今天这两道小题,你能回答上来不,题目1有至少6处错误,你能找到几个?题目2:有什么问题?这两道题都比较简单,非常考察基础,如果平时写代码,这两道题非常easy,否则,你可能看不全所有问题,这里面的考察点也是比较全的,大家可以看看了~欢迎留言区讨论。题目1: 一个小测试#inc...

2024-03-20 12:13:10 146

原创 我的春招求职面经

智能指针在面试时经常被问到,最近自己也在写,有一点思考,于是找到了这样一个题目,可以看看,上面这个代码有什么问题?留言区说出你的答案吧!最后分享一下之前的实习->春招->秋招等文章汇总如下,期待大家留言转发。个人在实习投了3家,分别是腾讯、阿里、CVTE,三家都拿到了,最后去了腾讯实习,随后实习转正,也拿到了正式的offer。秋招时页面了很多的公司,例如:字节、B站、快手、滴滴等,其中...

2024-03-19 10:28:18 386

原创 是黑魔法吗?揭秘std::is_function!

最近在写C++代码时用到了is_function,然后顺便看了一下源码实现,发现了一些问题,以前咱们学习的是三个点...,那六个点......你知道是啥吗?同样,如果有一段这样的代码:template<typename...Args>structfoo(Args......);你知道是啥意思?下面我们一起来深入细节!1.六个点六个点我们通常叫做two ellipsis opera...

2024-03-15 16:55:50 153

原创 稍有不慎就写出无法理解的代码

最近看到有个朋友问了个问题:-->是啥操作符,给我整懵了~完整代码如下:#include<iostream>usingnamespacestd;intmain(){intx=10;while(x-->0){cout<<x<<"";}return0;}为...

2024-03-12 17:18:35 127

原创 C++20四大特性之Ranges

C++20 Ranges1.基础概念2.使用在之前的文章已经写过另外三大特性,直通点:C++那些事之C++20协程开篇盘点C++20模块那些事C++20:从0到1学懂concept那么,本篇将开始学习另外一个特性ranges。ranges是C++20的主要特性之一,其中"view"是比较重要的一部分。C++20之前,标准库的算法实现是基于迭代器来实现的,例如:std::sort。std::sort...

2024-03-08 11:33:08 778

原创 C++那些事官网更新啦!

1.C++那些事官网C++那些事提供全面的学习指南,这是一个适合初学者从入门到进阶的仓库,解决了面试者与学习者想要深入C++及如何入坑C++的问题。除此之外,本仓库拓展了更加深入的源码分析,多线程并发等的知识,是一个比较全面的C++学习从入门到进阶提升的仓库,目前3.6W star。https://github.com/Light-City/CPlusPlusThings这个仓库涵盖了C++的基础...

2024-03-07 12:52:47 352

原创 Git零基础实战之如何实现子项目同步更新

Git零基础实战之如何实现子项目同步更新1. 背景2.git apply vs git am3.生成patch4.git apply使用5.git am使用1. 背景假设我们有一个独立的插件项目,因为一些项目的变更,现在需要将其迁移到一个较大的项目中的子目录中。传统的方法可能包括使用 git cherry-pick 来选择性地应用提交,但这种方法并不能很好的处理子目录问题。例如:项目A是我们的目标...

2024-02-26 11:34:17 920

原创 探索 C++20:为什么我们应该拥抱这个时代?

让我们一起拥抱C++20在之前的文章中零零散散的讲解了C++20的几个重要特性,例如:C++20:从0到1学懂concept盘点C++20模块那些事C++那些事之C++20协程开篇接下来本篇将会简单的列一些比较重要的特性供大家参考,陈述一下为什么大家需要学习C++20,它能够给大家带来什么样的好处。C++20是继C++17之后的C++编程语言的ISO/IEC标准修订版的名称。C++ 是一种通用高性...

2024-02-17 11:39:16 769

原创 香港银行开户完整流程

最近想研究一下股票交易,奈何没有港卡,于是调研并办理了一张。办理港卡一般有两种,一种是自己去香港办理,另一种是第三方代理。自己去香港办理花钱少,周期短,缺点是需要对银行的开户要求非常了解,不然可能白跑。而第三方办理花钱比较多,例如:汇丰第三方价格是1500起步。我因为在深圳,靠近香港,直接去办理了,整体流程非常顺利,耗时半天当日下卡〈汇丰香港one卡〉。如果你有了港卡,你可以进行香港投资跨境支付等...

2024-02-16 14:32:20 155

原创 C++那些事之位域计算UB or WD?

看到某人写了一段这样的代码,大家猜测一下下面结果是?位域的使用并不仅限于下面这个简单的示例。在实际应用中,位域常常用于节省内存或者与硬件通信。例如,在嵌入式系统中,我们可能需要与特定硬件寄存器进行精确的通信,而位域正是实现这一目标的理想选择。位域的另一个重要方面是它可以提高数据结构的可读性。通过使用位域,我们可以更明确地表示数据结构中各个成员的含义。这有助于代码的可维护性和可理解性,特别是在处理底...

2024-02-06 10:49:26 186

原创 2023 JetBrains C++ 年度报告

JetBrains 每年都会进行开发者生态系统调查,以了解开发者社区的概况,去年的结果终于出炉了,今天特意去看了一下想关注一下C++标准的使用情况。一些比较重要的调研结果如下,感兴趣的可以戳最后文末链接。2023 年最大的趋势之一是人工智能的使用在软件开发人员中获得更广泛的接受,其中高达 77% 的人使用 ChatGPT 来执行各种与工作相关的任务!在编程语言方面,Objective-C 已是垂死...

2024-01-30 11:00:48 583

原创 性能测评:memcpy vs std::copy

性能测评:memcpy vs std::copy最近在做性能优化时,发现有一些代码用了std::copy,还有一些用了memcpy,两者在功能上其实类似,那么它们对性能影响是怎样的呢?于是本篇文章将会探讨这两者的一些使用场景。memcpy:理论上有一些性能优势从理论上讲,memcpy可能具有轻微的性能优势,原因在于其不同于std::copy的要求。memcpy在处理数据拷贝时可以忽略数据重叠的可能...

2024-01-29 11:00:28 441

原创 如何定位10TB数据查询错误?

​问题:在SQL执行引擎侧对sort做了一些优化,集群机器从23台缩容18台之后,这个sql运行后出现了结果错误的问题,在原来23台以及其他规模的集群场景下没任何问题,数据出来不对了,幸亏这是个测试场景,于是便可以出debug包进行调试。​​思路:其中几个关键点。​​第一:数据不一致,这里指的是优化后的向量化执行引擎与优化前的向量化执行引擎的结果对比。​第二:集群规模发生了变更。​​所以基于这两点...

2024-01-20 17:44:50 363

原创 高效内存管理:探索C++17中的pmr模块

高效内存管理:探索C++17中的pmr模块1.引入2.memory_resource3.内存复用4.pool resource1.引入在C++17之前,标准库提供了std::allocator,而在C++17中,这一功能得到了加强,引入了polymorphic_allocator。注:本节所有的源码戳文末~在C++17之前,如果我们想要使用std::allocator来自定义内存池,我们不能使用传...

2024-01-19 11:04:47 1003

转载 星球与公众号年度报告

1.玩转cpp小项目星球活跃度全平台第14,写了15w字+。​​2.微信公众号原创88篇,11.5w字。​​​2024继续加油????​​

2024-01-18 11:40:43 31

原创 性能狂飙:C++ SSO优化与性能测试

C++ SSO优化与性能测试本篇文章将会引入两个问题,看看大家能答得上来不?1.下面代码性能上有没有区别?std::strings1("helloworldhel");std::strings2("helloworldhelo");2.sizeof(std::string)是多少?这里主要考察大家对C++ STL的string SSO优化是否了解,如果你不知道,欢迎继续阅读本篇文章,...

2024-01-16 13:17:22 405

原创 Linux 内核大转变:是否将迈入现代 C++ 的时代?

Linux开发者 H. Peter Anvin 在邮件列表中重启了关于 Linux内核C代码转换为C++的讨论,并陈述了自己的观点。说之前先看一下这个话题的历史背景。早在2018年4月1日,Andrew Pinski提议将 Linux 内核源码转为 C++,在文中写道之所以引入是由于以下优点:(1) 内联模板函数,使得诸如 cmpxchg() 和 get_user() 这样的功能的实现更加清晰。(...

2024-01-13 09:50:23 531

原创 未来已来:C++17 并行STL性能测评

C++17 并行STL使用与测评目录各个编译器支持进度并行算法库要求如何使用性能测试最近在研究一些并行框架,发现C++17之后STL支持并行,于是使用并做了个性能测评,在测评过程中遇到一些问题,特别是TTB,本文将会带大家扫盲学会STL并行。注:本文的所有代码已放星球,感兴趣可以拿去学习。1.各个编译器支持进度不同编译器对并行算法库的支持,如下:https://en.cppreference.co...

2024-01-12 17:40:34 1023

原创 C++多态性能测试:CRTP vs std::variant vs virtual

C++多态性能测试:CRTP vs std::variant vs virtual多态是面向对象编程的一个重要概念,它使得单一接口能够代表不同的类型。C++提供了几种实现多态性的方式,本文将会讨论三种场景的多态:虚函数:在C++中实现多态性的传统方式是使用虚函数。这涉及使用基类和派生类来实现特定的实现。std::variant:在C++17中引入的std::variant,它实现了一种无需继承的多...

2024-01-11 15:56:44 950

原创 秒杀面试题:深入final,掌握C++性能优化

秒杀面试题:深入final,掌握C++性能优化C++11之后有了final,它用来指定不能在派生类中重写虚函数,或者不能从中派生类。例如下面这个例子,当添加final之后:foo函数被禁止重写bar函数被禁止重写B类被禁止继承那么,除了这些还有什么?如果面试官问你final,你只答这些能过?接下来本文来拓展一下final的妙用!structBase{virtualvoidfoo(...

2024-01-10 17:31:55 364

原创 Meson 构建系统:让 C++ 项目高速驶入快车道

Meson 构建系统:让 C++ 项目高速驶入快车道最近在使用一些开源项目的时候,发现都采用了meson+ninja的构建方式,摒弃了CMake,Makefile的方式,本文将会引入Meson,从入门安装到完整编写一个meson项目。下面,我们来进入正文。目录:1.Meson安装2.Meson Vs Cmake2.1 Meson的优势与劣势2.2 CMake的优势与劣势3.Meson WrapDB...

2024-01-09 13:20:44 652

原创 C++20:从0到1学懂concept

目录1.concept语法1.1 替换typename1.2 requires关键字1.4 concept与auto2.编译器支持3.总结C++20引入了concept(概念),是对模板参数(编译时评估)的一组约束。你可以将它们用于类模板和函数模板来控制函数重载和特化。一些优点包括:对模版参数强制类型约束提高代码可读性(替换了较长的SFINAE代码)提供更友好的报错信息通过限制可以使用的类型来防止...

2024-01-08 11:43:52 1118

原创 C++ 多值返回:从版本1到版本6秒杀​

C++ 多值返回:从版本1到版本6秒杀1. 指针与引用2. Tuple + Tie3. Struct Binding4. 函数 Callback5. 自定义 Out6. 模版推导今天再提出一个比较经典的面试题:函数如何返回多个结果?你能想到几种办法?其实这道题目考察的知识点非常的多,涉及到:指针引用lambdafunctionaltietuplestruct bingdingtemplate de...

2024-01-07 13:06:46 370

原创 编程轻松炫技:不费吹灰之力打印100个数字,面试考点应有尽有

给大家设定一个条件:不使用循环,请打印出1-100个数字。如果使用循环很简单了,那么你能想到多少种方法呢?今天来给大家用一些C++的骚操作来写出这种代码,欢迎留言与转发~这道题目其实非常简单,但却涵盖了很多面试考点,其中包括:模版特化、便特化,如何编写递归模版CRTPstd::copy、std::iota、std::transform如何使用,各自算法实现类静态变量等等1.递归1-100可以拆为5...

2024-01-06 21:27:20 415

原创 深入理解内存检测工具:一文解析内存检测工具的全貌与使用技巧

C和C++是非常不安全且容易出错的编程语言,Address Sanitizer是由Google开发的一种工具,用于检测内存访问错误,如使用后释放(use-after-free)和内存泄漏。它已集成到GCC版本>= 4.8中,可用于C和C++代码。Address Sanitizer使用运行时插桩来跟踪内存分配,这意味着您必须使用AddressSanitizer构建代码,以充分利用其功能。Use...

2024-01-05 18:50:29 368

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

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

2024-01-04 22:33:24 360

空空如也

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

TA关注的人

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