自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(426)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++Primer学习笔记:第1章 开始

本博客为阅读《C++ Primer》(第5版)的读书笔记第1章 开始在大多数系统中,main的返回值被用来指示状态。返回值0表示成功,非0的返回值的含义由系统定义,通常用来指出错误类型。在Unix中程序运行以后返回值保存在$?中(必须在刚运行后打印输出)编译时可能需要加上-std=c++11打开对C++11标准的支持,一般会加上-Wall参数,可以对有问题的程序结构发出警告如果想要通过打印语句进行调试,一定要及时使用endl操纵符刷新流,否则如果程序崩溃,可能无法得到输出信息,从而导致关于程序崩溃

2020-10-26 19:48:58 352 2

原创 Leetcode第451场周赛分析总结

对这种需要多重转换组合的问题,一旦卡住就没法继续下去。以后对于每个思考的方向,物理化自己的思维过程,把卡住的地方转换成新的问题重新思考,不要卡住了就想来想去没有进展。3560. 木材运输的最小成本3562. 折扣价交易股票的最大利润3563. 移除相邻字符后字典序最小的字符串。

2025-05-31 05:59:53 796

原创 FFmpeg中使用Android Content协议打开文件设备

本文介绍了在FFmpeg 7.0+中支持Android content协议处理文件的方法。随着Android 10引入Scoped Storage机制,传统文件访问方式受限。新方案通过直接使用content URI,简化了多媒体处理流程,相比传统文件描述符方案更高效且兼容性更好。

2025-05-21 15:28:32 903

原创 Android FFmpeg 交叉编译全指南:NDK编译 + CMake 集成

Android FFmpeg 交叉编译 + JNI 集成实战指南,涉及环境搭建、NDK 配置、FFmpeg 编译优化、CMake 集成、Android Studio 适配等关键步骤。

2025-04-25 16:12:43 1570 4

原创 音视频小白系统入门课-4

本系列笔记为博主学习李超老师课程的课堂笔记,仅供参阅将mp4文件转换为yuv文件是一个伪编码器,仅仅进行数据格式转换,不进行有损编码yuv数据仅仅存储视频,不存储音频yuv没有元信息,需要手动指定分辨率等信息

2025-04-23 10:29:07 1079

原创 音视频小白系统入门课-3

帧率:每秒采集/播放图像的个数 15帧/s(直播) 25(动画) 30(录制) 60(电影)H264的压缩比一般能达到100:1左右,H265的压缩比平均是H264的2倍。YUV(也称YCbCr):Y表示明亮度,UV的作用是描述影像色彩及饱和度。SAR(Sample Aspect Ratio,采样宽高比)BMP格式使用 BGR格式,导致显示的颜色不对。PPI > 300就属于视网膜级别。RGB:用于屏幕图像的展示。YUV:用于采集和编码。

2025-04-22 10:08:37 922

原创 音视频小白系统入门课-2

本系列笔记为博主学习李超老师课程的课堂笔记,仅供参阅。

2025-04-18 20:43:22 1029

原创 音视频小白系统入门笔记-1

本系列笔记为博主学习李超老师课程的课堂笔记,仅供参阅。

2025-04-16 20:36:33 548

原创 音视频小白系统入门笔记-0

本系列笔记为博主学习李超老师课程的课堂笔记,仅供参阅。

2025-04-15 20:03:29 776

原创 C++中decltype遇到引用类型时的隐藏陷阱

为了进一步理解这个问题,我借助了《Effective Modern C++》中条款 4 提到的一个技巧:通过声明一个未定义的模板类,并在模板实例化时查看编译器的类型推导报错信息。返回的仍旧是引用类型。可以解决问题,但这让代码的复杂度增加了。可以获取变量的声明类型。然而,当变量是一个引用类型时,但是,编译器却发出警告,提示。这种方式更容易阅读,也避免了使用复杂的类型萃取。这种方式可以减少重复声明,提升代码可读性。返回值中的引用部分,再手动加上。在这段代码中,我的目标是让。如果类型较长,可以通过。

2025-01-06 16:30:43 478

原创 C++ 中如何优雅地返回一个递归闭包函数?

通过闭包函数,将建图与DFS逻辑绑定,简化了调用接口,同时减少了显式参数传递的麻烦。这种高级技巧在C++中并不常见,但在特定场景(小型、局部的递归场景)下能够显著提升代码的可读性与复用性。然而,闭包函数的使用也需要谨慎,特别是在C++中,变量的捕获方式直接影响代码的安全性与性能。通过对捕获规则(值捕获、引用捕获、移动捕获)的深入理解,可以更安全、高效地使用闭包,提高代码质量。

2025-01-03 16:12:09 975

原创 Leetcode 第426场周赛分析总结

也可以先直接获取n的长度,然后计算得到,这样时间复杂度由O(logn)优化为O(1)在C++20中可以使用头文件中的函数,传入一个无符号整数,会返回其所需的最小位数(也就是最高位1的位数)如果题目要求大于n的数,我的第一思路是判断n是不是2的幂次减1,分类讨论。灵神说不必如此,相当于我们已经拥有了求大于等于n的能力,那么对于大于n的情况,我们只需要求大于等于n+1,即在整数域上:> x相当于 >= x + 1,这是一种思维的转换能力。

2025-01-03 15:23:30 839

原创 给六年前自己的一封信

或许六年后的我,同样会遗憾自己没有做的更好,没能达到更高的层次,没能走的更长远,但如果我能始终保持热爱,保持思考,那就没有什么遗憾的。

2025-01-02 18:12:24 528

原创 Leetcode 第425场周赛分析总结

题目描述看完发现不是非常trivial,看了一眼数据范围,觉得不要多想直接暴力好了。闪过念头不会把数据范围变成1e5就是第三题吧,AC之后去看了一眼发现不是松了一口气。简单想了一下感觉可能和滑动窗口有关,但是却没有发现单调性,没有什么思路。下来认真看了灵神的视频,发现果真复杂。发现自己目前存在一个问题,对于不能一眼看出思路的算法题会产生抗拒,不愿意静下心认真思考解决的方案,似乎遇到困难就会缩起来。这可能是之前刷题的时候总是苛求自己,导致闪回,遇到自己能力的边界不是一件可耻的事情。

2024-11-30 12:22:36 1227 1

原创 Bazel项目使用网络库libhv

记得在2023年末,我还在腾讯实习时,偶然听了一场关于使用Bazel替代CMake管理C++项目的技术讲座。了解到在大公司内部,大家同样不堪CMake的纷繁复杂,更加青睐语义直观、支持多语言、拥有更高一致性的Bazel。这激发了我对Bazel的兴趣。,便萌生了为这个茁壮成长的网络库添加Bazel编译支持的想法。经过一段时间的学习和尝试,终于磕磕绊绊地完成了这项工作,并提交了相关的。在这里,简单介绍一下如何在自己的Bazel项目中使用网络库libhv。幸运的是,得到了libhv开发者的支持,这让我非常开心。

2024-07-26 17:51:36 596 1

原创 rpm打包新手入门

RPM(Red Hat Package Manager)是一种软件包管理工具,主要用于Red Hat及其衍生发行版如Fedora、CentOS等。RPM可以帮助用户方便地安装、升级、删除软件包。通过学习rpm包的相关知识,我们可以将自己的软件打包成rpm包,以便于在基于Red Hat的Linux发行版(如Fedora、CentOS等)上进行分发和安装。

2023-10-11 15:08:06 688

原创 C++ 条件变量的使用

并发编程纷繁复杂,其中用于线程同步的主要工具——条件变量,虽然精悍,但是要想正确灵活的运用却并不容易。希望大家看完下面的介绍能够得到想要的答案。

2022-11-16 13:03:51 1711 2

原创 C++ 模板函数、模板类:如果没有被使用就不会被实例化

C++ 模板函数、模板类 使用和实例化的关系

2022-11-15 18:47:28 964

原创 C++ STL中的allocator

STL allocator剖析

2022-10-25 15:46:24 1050 2

原创 C++不要让函数返回一个右值引用

在C++中如果我们让函数返回一个右值引用会发生什么?结论是不要让函数返回右值引用。

2022-10-17 19:40:48 960 1

原创 Leetcode第314场周赛

Leetcode第314场周赛总结

2022-10-10 14:03:02 394

原创 Leetcode第 313 场周赛

Leetcode第 313 场周赛总结

2022-10-03 12:41:31 478

原创 为什么x&-x可以获取x的最低位的1?

证明通过x&(-x)可以获取x最低位的1

2022-09-27 12:00:36 468

原创 850. 矩形面积 II:扫描线+离散化+线段树

Leetcode 850. 矩形面积 II

2022-09-19 10:23:47 579

原创 面向对象技术浅析

蒟蒻讲一下自己对面向对象的理解

2022-09-17 17:06:50 492

原创 Leetcode第309场周赛

Leetcode第309场周赛总结

2022-09-05 22:36:03 926

原创 Ubuntu install ‘Bash to dock‘

Ubuntu安装Bash to dock

2022-08-17 16:33:43 476

原创 C++ map/unordered_map元素类型std::pair<const key_type, mapped_type>陷阱

我们要千万小心`map`和`unordered_map`的元素类型为`std::pair`,如果忘记`const`可能会不小心产生拷贝操作,不仅仅会带来性能损耗,而且可能会产生RuntimeError。

2022-07-14 16:16:46 660

原创 muduo网络库使用入门

使用muduo网络库实现一个简单的echo服务器学习如何使用

2022-07-11 18:08:16 2242

原创 C++ 工具函数库

在写一些大型项目的过程中经常需要一些工具函数,例如获取随机数、计时器、打印函数、重要常量(如最大值)等,由于每一个工程都自己手动实现一个实在是太傻,我将其总结放入一个文件中。.........

2022-07-09 10:33:31 684

原创 C++高效集合数据结构设计

在复杂算法实现过程中我们经常会需要一个高效的集合数据结构,支持常数级别的增、删、查,以及随机返回、遍历,最好还能够支持交集、并集、子集操作

2022-07-04 16:09:24 815

原创 每日一题:449. 序列化和反序列化二叉搜索树

题目分析题目链接:449. 序列化和反序列化二叉搜索树觉得序列化很简单,前序遍历、后序遍历、中序遍历、层序遍历等等。其中得到前序遍历和后序遍历是可以通过递归解法反序列化的,觉得这样子做有点复杂。就想着可不可以一次遍历。一次遍历的问题在于不知道哪里子孩子为空(因为没有保存子孩子为空的情况)。所以我就针对性地让空节点的值为-1。为了方便从字符串中读取数字,使用了C++中的istringstream。整体的实现还是比较简洁高效的。实现代码class Codec {public: // Enco

2022-05-11 21:36:45 259

原创 C++读写锁造成死锁

C++14支持std::shared_timed_mutexC++17支持std::shared_mutex前者相比后者支持的操作更多,但是后者相对性能更好。使用std::lock_guard<std::shared_mutex>和std::unique_lock<std::shared_mutex>互斥访问使用std::shared_lock<std::shared_mutex>实现共享访问(C++14),使用方式和std::unique_lock相同多个

2022-05-10 19:25:14 1325

原创 C++ 单例模式 call_once : terminate called after throwing an instance of ‘std::system_error‘

使用C++11中的call_once实现单例模式,解决出现的 'terminate called after throwing an instance of ‘std::system_error'问题

2022-04-29 11:52:08 5605 8

原创 Clion远程部署和运行

绪论作为Clion的忠实粉丝,现在的我的几乎所有的coding都是通过Clion完成。因为需要在服务器上进行开发,又离不开Clion,就了解了如何通过Clion远程部署和开发。主要是借鉴了博客:使用Clion优雅的完全远程自动同步和远程调试c++。如果我哪里没有讲清楚可以去借鉴一下这篇博客。我们的目标是在本地进行编码,运行在服务器上。设置远程工具链更新/安装cmake借鉴了博客:在Linux上安装其他版本的cmake 或 升级cmake首先我们需要保证服务器上的cmake版本至少为3.19,否

2022-04-20 15:05:54 2232 1

原创 第288场周赛

绪论虽然没有AK,但是不知道为什么排名比以前AK了都靠前。可能是因为最后一道题有些难度,缩小了我和大佬之间的差距。最后一个小时写最后一道题,累死累活想了一个贪心遍历的算法,当时是一直RE,后来下来调了调又WA了。题目分析A: 按奇偶性交换后的最大数字做法就是用一个数据结构去保存奇数数字和偶数数字,要求这个数据结构能够返回并弹出最大值。当时没有仔细考虑,直接用了一个multiset去保存,因为红黑树本身就是有序的,所以每次弹出最后一个节点。但是因为把前置–写成后置–了,所以还RE了一发,实在不应该。现

2022-04-11 22:23:00 436

原创 第287场周赛

绪论虽然是上周日参加的比赛,但是这周没有怎么学习,每天就是玩耍。也导致对周赛的总结迟迟没有进行。想着再拖下去下次周赛都要开始了,在这里补一下。这场比赛总体比上场简单一些,但是最后一道题因为忘记初始化类内变量导致调试好久,血泪教训。题目分析A:转化时间需要的最少操作数因为单独考虑小时、分钟太过繁琐,我的方法是将其转换成时间戳(类似chrono的time_since_epoch方法)。class Solution {public: int convertTime(string curre

2022-04-08 10:37:41 957

原创 Leetcode第286场周赛

绪论上周因为有事没有参加周赛,这周没有错过。这次周赛拿到了人生第一个AK,参加大大小小的比赛这么多次,从来没有AK过,泪目了。感觉这次比赛的思维难度对我来讲稍高一些,前三道题就花了一个小时,而以往只需要半个小时。看了一下排名前面的大牛们,还是十分钟就AK了,深觉自己还马达马达大内。题目分析比赛链接:https://leetcode-cn.com/contest/weekly-contest-286/题目难度上第二题和第三题都有一些思维量,不像以前直接模拟。第四题我直接记忆化搜索在最后一分钟过了

2022-03-28 14:20:42 765

原创 Leetcode第284场周赛

绪论最近发现Leetcode每周的周赛难度挺适合我的,而且时间也比较友好(不像Codeforces每次都是半夜)。所以连续参加了三周的周赛。这次才想起来应该记录一下自己的参赛历程。一方面是总结经验,另一方面有了记录就更有动力去提升,去参加下一次比赛。题目分析题目链接:https://leetcode-cn.com/contest/weekly-contest-284/还是往常一样四道题,难度依次提升。A:找出数组中的所有 K 近邻下标简单模拟,对于每一个key,其附近的2k+1个元素都是合法的

2022-03-14 10:32:27 983

转载 Ubuntu修复Fix Busybox Initramfs错误

今天早上我打开电脑,进入Ubuntu系统,结果黑屏了,屏幕显示:BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash) Enter 'help' for a list of built-in commands.(initramfs)然而我并不知道这个是什么意思,只能打开万能的谷歌搜索了一下,找到一篇解决问题的教程,按照他说的,我输入了exitfsck /dev/sda1 -yreboot然后解决了问题。虽然我

2022-01-21 16:03:54 2112

bandicam 2020-05-04 15-22-58-050.mp4

该视频是我汇编课程设计实验的运行结果,为了方便在博客中展示运行结果进行上传,没有什么用,啦啦啦啦啦啦

2020-05-19

空空如也

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

TA关注的人

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