自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

哎哟哟也爱技术

不积跬步,无以至千里

  • 博客(133)
  • 资源 (4)
  • 收藏
  • 关注

原创 C++中LHS和RHS指什么

对于LHS和RHS,懂得都懂,不懂的一看就懂LHS 赋值操作的左侧 Left Hand Side,一般指左值。RHS 赋值操作的右侧 Right Hand Side,一般指右值。

2022-04-14 21:41:41 3684 1

原创 C++代码中R“(xxxxxxxxxxx)“

在 C++11 中添加了定义原始字符串的字面量,定义方式为:R “xxx (raw string) xxx”, ()两边的字符串在解析的时候是会被忽略的,因此一般不用指定。如果在()前后指定了字符串,那么前后的字符串必须相同,否则会出现语法错误。 string str1 = R"(C:\test.text)"; cout << str1 << endl; string str2 = R"hello(C:\test.text)hello"; cout &

2022-04-14 00:13:53 7977

原创 std::unordered_map主键为结构体

在C++中,当我们将某个数据或对象保存为二进制进行存储或发送时,经常使用std::vector<char>,与new char[LEN],使用std::vector<char>相比有什么好处呢?std::vector<char>作为一个容易,对字符数组进行了封装,提供了丰富的接口,不需要手动进行内存的释放,std::vector<char>的对象出了作用域,会进行自动释放内存。今天讲一讲,使用std::vector<char>的对象进行二进

2022-04-12 23:48:19 1570 2

原创 std::ifstream按行读取文本文件

按行读取并打印 std::string file_path = "xxxxx.txt"; std::ifstream infile(file_path); std::string line; while (std::getline(infile, line)) { std::cout << line << std::endl; }

2022-04-12 21:40:27 2901

原创 单件基类实现与使用

单件基类实现template<typename T>class PublicSingleton{protected: PublicSingleton() {}public: static T& getInstance() noexcept(std::is_nothrow_constructible<T>::value) { static T instance; return instance; }

2022-04-12 21:33:57 179

原创 基于SDBM算法的哈希值计算

/// Update a hash with the given 8-bit value using the SDBM algorithm.inline constexpr unsigned SDBMHash(unsigned hash, unsigned char c){ return c + (hash << 6u) + (hash << 16u) - hash; }/// Calculate hash value from a C string.sta...

2022-03-30 23:29:47 1096

原创 VLC-你不知道的那些功能-播客

podcast 播客台湾亦常直接称作“Podcasting“,是指一种在互联网上发布文件并允许用户订阅feed以自动接收新文件的方法,或用此方法来制作的电台节目。这种新方法在2004年下半年开始在互联网上流行以用于发布音频文件。“播客”一词来源自苹果电脑的“iPod”与“广播”(broadcast)的混成词。由于英文中的Podcast、Podcaster或Podcasting等词的相关性,中文中往往统称为“播客”。播客URL资源获取与应用pod.link | Share a Podcast在

2022-03-18 23:29:38 1030 1

原创 Linux-动态库与静态库

Linux 动态库与静态库的区别

2022-03-18 21:31:40 348

原创 Windows窗口程序,如何启动一个命令行调试窗口

关于这个问题,如果对Windows API熟悉的话,应该会特别简单,其实就是一个调API的过程,直接分享代码吧。void setupConsole(std::string title){ AllocConsole(); AttachConsole(GetCurrentProcessId()); FILE *stream; freopen_s(&stream, "CONOUT$", "w+", stdout); freopen_s(&stream, "CONOUT$", "w

2022-01-13 21:42:00 542

原创 C++中,返回值优化是什么?

C++中,返回值优化是什么?

2022-01-09 11:17:45 589

原创 C++中如何区分左值和右值

C++中如何判断左值还是右值

2022-01-09 11:02:56 1449

原创 如何让Visual Studio在build之前杀死要生成的进程

taskkill /F /IM "$(TargetFileName)"exit 0

2021-12-08 11:51:14 32432

原创 Centos服务器上turnserver部署

turn server配置、coturn配置、webrtc relay中继服务器配置

2021-12-02 00:17:44 1398

原创 如何解决Tinkpad P15v笔记本电脑U盘插拔后的叮咚声

这个问题,困扰了我很久,各种杀毒,各种重装驱动,都没能解决。下面给就出解决方法。1、打开设备管理器2、找到通用串行总线控制器3、选择Intel(R) USB3.1可扩展主机控制器-1.10(Microsoft),右键属性4、打开“电源管理”,取消勾选,然后确定就ok了...

2021-11-06 14:11:52 2430

原创 一张图看懂类图的画法

图片来自搜狗百科,无需多言,应该秒懂了吧

2021-09-23 20:59:26 442

原创 VkMemoryPropertyFlagBits解析

VkMemoryPropertyFlagBits用于说明存储空间的属性源码如下:typedef enum VkMemoryPropertyFlagBits { VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004, VK.

2021-08-24 21:09:05 1042

原创 VkBufferUsageFlagBits解析

VkBufferUsageFlagBits用于说明VkBuffer的用途源码如下:typedef enum VkBufferUsageFlagBits {VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,VK_BUFFER_USAGE_STORAG.

2021-08-24 20:41:33 793

原创 thinkpad p15v 风扇转速快的解决方法

在京东上买的P15V(自带Windows家庭版),从买了第一天风扇就呼呼响,明明啥也没干,CPU占用率也不高,风扇还是呼呼转的特别快。后来,在网上查了一下,主要2中解决方案吧:1、有人说将笔记本设置为“节能模式”,但是节能模式只能在不插电源时使用,但是我要解决插电源时的问题,此方案不靠谱,但是很好验证,然后放弃。2、将Windows家庭版升级为“Windows专业版”(我的已经升级完了),此方案验证起来比较麻烦。点击“ 更改产品密钥”,会弹出下面的窗口然后,我从网上搜了很多Win

2021-08-15 08:49:31 15519 4

原创 CMake时出现“could not find any instance of Visual Studio”的问题

下面这篇文章实在太好,直接引用啦https://blog.csdn.net/diaodaa/article/details/106122943

2021-08-11 21:54:27 1831

原创 likely()和unlikely()

首先:if (likely(value))等价于if (value)if (unlikely(value))等价于if (value)其次:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)__built_expect()函数是gcc(version >= 2.96)的内建函数,提供...

2021-07-07 21:31:26 167

原创 创建一个不受系统缩放设置(DPI)影响的GUI窗口

现在的屏幕分辨率都比较高,为了使屏幕字体不至于太小,通常在 Win10的显示设置里面设为放大 125%或 150%或更大,这样就会导致像素实际上被放大了。如果你的程序不希望受系统缩放设置影响,你需要使用一个新的 API 函数:SetProcessDpiAwarenessvoid setupDPIAwareness(){ typedef HRESULT *(__stdcall *SetProcessDpiAwarenessFunc)(PROCESS_DPI_AWARENESS); HM...

2021-05-11 22:28:25 1452 2

原创 为Windows GUI窗口应用程序创建控制台

// Win32 : Sets up a console window and redirects standard output to itvoid VulkanExampleBase::setupConsole(std::string title){ AllocConsole(); AttachConsole(GetCurrentProcessId()); FILE *stream; freopen_s(&stream, "CONOUT$", "w+", stdout); fre.

2021-05-11 22:19:54 476

原创 Linux 通过pid获取进程启动路径

char file[32];char buf[64];pid_t pid = getpid();sprintf(file, "/proc/%i/cmdline", pid);FILE *f = fopen(file, "r");fgets(buf, 64, f);fclose(f);

2021-04-19 11:22:59 426

原创 序列化技术特征对比

2021-04-18 16:37:16 199

原创 字节跳动面试题

计算机网络:从url输入到最后访问的过程TCP/UDP区别TCP为什么可靠,怎么实现可靠的url为什么要编码OSI参考模型以及每层作用和大概的工作方式三次握手四次挥手Time wait/Close waitHttp/Https区别GET/POST区别拥塞控制的四种方式粘包和拆包Https加密过程DNS查询过程操作系统:进程和线程的区别进程和程序的区别进程的通信方式线程的通信方式死锁的发生原因以及如何避免死锁内存调度Java语言特性:(因为简历上只写了简单了

2021-04-08 09:28:17 166

原创 数组与链表的区别

数组与链表的区别数组:数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中插入一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。链表:链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最

2021-04-08 06:03:29 1009

原创 完全二叉树和满二叉树的区别

完全二叉树和满二叉树的区别如下:1、完全二叉树是深度为k,有n个结点的二叉树,当且仅当其每一个结点,都与深度为k的满二叉树中编号从1至n的结点逐一对应的二叉树;2、完全二叉树的叶子结点只可能在层次最大的两层上出现;3、对任一结点,若其右分支下子孙的最大层次为l,则其左分支下子孙的最大层次必为l或者I加1;3、满二叉树是一棵深度为k,且有2的k次方减1个节点的二叉树;4、满二叉树的每一层上的结点数都是最大结点数。...

2021-04-08 05:50:57 5596

原创 sketchup数据结构及关系整理

2021-03-25 22:17:26 630

原创 一图读懂GLTF

不用看那些简化的博客和某呼上的文章,先通过下图看懂gltf的大概,想看更加详细的信息,可以参考gltf的官方spec(https://github.com/KhronosGroup/glTF)相信我,花1-2个小时,就会让你豁然开朗。

2021-02-25 16:16:45 339

原创 召回率与精确率

在信息检索领域,精确率和召回率又被称为查准率和查全率,查准率=检索出的相关信息量 / 检索出的信息总量查全率=检索出的相关信息量 / 系统中的相关信息总量其他详细内容,参考知乎https://www.zhihu.com/question/19645541...

2020-10-02 09:32:15 168

原创 MSB3073 命令setlocal问题的解决

在使用VS编译代码时遇到如下问题:我们首先了解一下setlocal是做什么的:setlocal是指批处理本地化的一种操作,使启动批处理文件中环境变量的本地化。本地化将持续到出现匹配的 endlocal 命令或者到达批处理文件结尾为止。问题分析因为VS中配置的批处理的脚本中,setlocal操作的C盘的目录,而VS并不是以管理员用户启动的,所以在执行setlocal时,没有权限。所以出现了上述问题。解决方案启动VS时,以管理员权限运行VS,再编译程序...

2020-08-01 16:34:24 11252 10

原创 obs-studio源码分析 之 内存管理

obs-studio源码中关于内存管理的代码在bmem.h和bmem.c中。其内存管理的特点总结下来,有一下几点:跨平台 内存对齐,提高存取效率 提供了内存申请释放的统一的C接口最大的亮点就是内存管理是经过内存对齐的,那我们首先讲讲什么是内存对齐。内存对齐的原因?(百度百科)平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。 性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,

2020-07-27 12:17:20 784

原创 obs-studio源码分析 之 C语言如何实现多态

在C++这种面对对象语言中,大家都知道如何实现多态,就是定义一个接口类,然后,子类中实现接口类的成员函数。那么C语言如何实现多态呢?下面我们就以obs-studio中的serializer为例进行说明serializer结构体定义如下// 通过指针的方式,实现多态struct serializer { void *data; size_t (*read)(void *, void *, size_t); size_t (*write)(void *, const void *,

2020-07-26 21:23:29 386

原创 Linux下运行可执行程序,提示找不到动态库?

相信很多跟我一样从Windows平台转到Linux平台开发时,就被这个找不到动态库的问题泼了一盆冷水,感觉还是Windows更友好,要么把动态库dll放到exe所在目录,要么把dll所在的文件文件夹配置到path换件变量就搞定了。那么在Linux上怎么解决呢?最近读了《Linux C与C++ 一线开发实践》,对于本文的主题做了非常详细的说明,并给出了解决方案。本来想通过文字转述一下的,但是无论怎么写,感觉都不如作者写的更加简洁明了。所以,这次我直接上图。看完了,是不是觉得有种豁然

2020-07-26 19:13:55 1143

原创 Linux下库的分类

Linux下库有两种:静态库和共享库(动态库)。二者均已文件的形式存在,其本质上是一种可执行代码的二进制格式,可以被载入内存中执行。静态链接库文件的后缀名是.a,动态链接库以.so为后缀名。无论是动态链接库还是静态链接库,它们无非是向其调用者提供变量、函数和类。静态链接库在程序编译时会被链接到目标代码中,目标程序运行时将不再需要改动态库,移植方便,体积较大,浪费控件和资源,因为所有相关的对象文件与牵涉到库都被链接合成一个可执行文件,这样导致可执行文件的体积较大。动态库在程序编译时并不会被链接到目标代

2020-07-19 10:12:40 386

原创 C/C++ 判断字符串中是否包含BOM

如果文件中包含BOM,那么将文件内容按照二进制的方式读取后,字符串的第一个字节为0xef,第二个字节为0xbb,第三个字节为0xbf。代码实现如下:bool has_utf8_bom(const char *in_char){ uint8_t *in = (uint8_t *)in_char; return (in && in[0] == 0xef && in[1] == 0xbb && in[2] == 0xbf);}...

2020-07-11 17:54:18 866

原创 C/C++实现去除字符串两头的空字符

// 判断是否为空白字符inline bool is_padding(char ch){ return ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r';}// 去除空白字符char *strdepad(char *str){ char *temp; size_t len; if (!str) return str; if (!*str) return str; temp = str; /* remove pr.

2020-07-11 15:39:42 1089

原创 obs-studio源码分析 之 动态数组darray

darray是obs中一个典型的线性表数据结构,实现了C++中模板的特性。在#define DARRAY(type)宏定义中,巧妙的使用了union联合的数据共享的优点,这也使的在创建的darray具备模板的特性。直接上代码#pragma once#include "c99defs.h"#include <string.h>#include <stdlib.h>#include <assert.h>#include "bmem.h"#ifd

2020-07-11 12:08:54 1329

原创 calloc与malloc的区别

函数原型:void *calloc(size_tn, size_t size);calloc是一个ISOC函数函数名。在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。一般使用后要使用 free(起始地址的指针) 对内存进行释放,不然内存申请过多会影响计算机的性能,以至于得重启电脑。如果使用过后不清零,还可以使用指针对该块内存进行访问。在申请分配内存空间和释放内存空间上,calloc和malloc区别不大。区别主要在于...

2020-06-25 11:39:03 4689

原创 你真的了解extern C吗

C++是一种面向对象的语言,支持函数的重载,而C语言是面向过程的语言,不支持函数的重载。同一个函数在C++环境编译后与其在C语言环境下编译后,在符号表中的签名是不同的。假如有一个函数:void decode(float position, float duration);在C语言环境下编译出来的签名为_decode,而在C++语言环境下,一般编译器生成的函数签名类似_decode_float_float。虽然在编译阶段是没有问题的,但是在连接阶段,如果不加extern "C"关键字的话,那么将会链

2020-06-16 22:59:19 198

Loading等待窗口png资源文件

Loading等待窗口png资源文件

2023-05-06

shader转spv,将着色器文件转为spv文件

将待转换的着色器文件一个或多个,拖到小程序上就会自动转换,spv直接生成到着色器所在目录。

2022-05-17

Git使用详解

对于使用Git的同学来说,记住这些命令,对于平时的开发、提交、合并、更新同步代码工作足够了,秒杀小白级别菜鸟

2019-09-22

dos命令整理总结.md

整理了常用的几乎所有Windows命令(dos命令,cmd)的文档,方便进行基于Windows操作系统的批处理脚本

2019-09-15

XComboBox.rar

基于QComboBox实现自定义的复选框的XComboBox,经过了反复测试验证,并得到了广泛的工程应用,可放心使用。

2019-08-28

空空如也

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

TA关注的人

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