自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AVX指令集加速向量内积运算

以下是一个使用 C++ 实现的示例代码,用于比较使用 AVX 指令集和不使用 AVX 指令集进行向量内积的执行时间

2024-11-03 14:40:02 299

原创 矩阵相乘_重排序(reordering)算法的C++实现

矩阵在内存中存储的时候是按行存的,cache在读取的时候,也是按行取的(下面的代码可以证明)。如果按照正常算法执行矩阵相乘,依次计算新矩阵每个位置的结果,用第一个矩阵的行去乘第二个矩阵的列,然后累加求和,那第二个矩阵每次运算都跨行了,这涉及到3层循环,第1层表示行,第2层表示列,第3层表示累加。如果能设计一个算法,让第3层循环的不要跨行,而是一直在执行某一行的计算,该行的所有元素都取完了再去执行下一行,那就可以避免cache-miss了。

2024-10-26 19:53:42 466

原创 单词排序C++实现

【代码】单词排序C++实现。

2024-09-10 21:02:45 342

原创 cache miss问题C++示例

第二层是高速缓存,或者简称为缓存,它本来是属于主存的一部分,但是它在架构上离CPU更近一些,其每行有64字节数据,称为“高速缓存行”。我的云桌面的主存就是12G的(本书是2017年及以前更新和编写的,那时的容量可能就只有1-8G),主存里存的东西都是暂时的,当电脑关机后,就丢失了。当步长是16时,共有4M,就算运行这些指令不需要花时间,那也才比步长为2的快了16ms,但是程序的整体运行时间是300ms+,由此说明,存取数据的时间比指令运行时间长得多,二者不是一个数量级的。和我们的想象很不一样,why?

2024-09-10 20:46:17 1090

原创 函数指针C++示例

第一部分是一个函数指针int (*fun)(int),,这其中有2个int,第一个int表示它对外显示的就是一个整形的数,第二个int表示它有一个输入,且输入也要是整形,而fun是函数名称,它只是一个形参,不用太在意。(注:int (*fun(int))的写法是错误的,因为只有函数名称是函数指针,而int仅仅代表它接收的参数类型,并不是指针的一部分。这个链接http://c.biancheng.net/view/228.html可以好好学习一下。第二部分是int b,没啥好说的。

2024-09-10 19:26:54 383

转载 bazel编译C++学习记录

bazel学习

2024-08-30 14:49:02 110

原创 std::vector的reserve(), resize()和shrink_to_fit()

std::vector 是 C++ 标准库中的动态数组类型,提供了多种调整其大小的接口函数。以上就是 std::vector 主要的调整大小接口函数,它们提供了足够的灵活性来适应不同的数据管理需求。

2024-08-26 20:57:29 293

原创 将一串数字拆分成几个递增的连续数字

Split a string to a list of integers and the integers must be incrementally increased.

2024-08-22 02:23:32 276

原创 使用vs code生成UUID保护宏

点开这个插件的详情页,在“细节”一栏有动态图教你如何使用它生成保护宏(动态图加载比较慢)。(如果原来有宏保护,也直接输入这个指令,可以将原来的替换掉,而不用先删除之前的)此时新建一个a.h文件,就可以看到自动生成头文件保护宏了。

2024-08-21 17:11:03 268

原创 多线程实现矩阵相乘_C++

多线程实现矩阵相乘的C++实现

2024-08-21 16:17:36 309

原创 git配置别名+自动添加评审

【代码】git配置别名+自动添加评审。

2024-08-21 16:07:52 105

原创 Ringbuffer

【Ringbuffer】C++实现

2024-06-03 08:47:33 288

转载 零拷贝详解

零拷贝就是一种避免 CPU 将数据从一块存储拷贝到另外一块存储(比如从网络设备到用户程序空间)的技术。通过减少数据拷贝次数,减少系统调用和上下文切换,实现CPU的零参与,彻底消除 CPU在这方面的负载。

2024-05-25 11:01:06 104

原创 mac上简单实现一个java调用C接口的JNI

尝试在MAC笔记本上安装JDK,并通过Java调用C/C++的方式,实现一个简单的JNI

2024-05-18 22:32:51 693

原创 typedef和#define的区别

unsigned YourInt c的写法不行,是因为编译器读到unsigned后,先将unsigned看作一个类型了(和unsigned int同义),再编译到YourInt时,将它处理为int,此时就变成unsigned int int,所以报错。三、使用#define定义指针时,容易犯“就近原则”的错误,但typedef不会。一、typedef一般用来给类型取别名(type即类型)。说明a, c, d是指针,而b不是。阶段直接进行,而typedef是。二、#define是。

2024-05-18 17:20:15 288

原创 线程池的C++实现

本篇使用queue、互斥锁和条件变量实现了一个基于C++的线程池。并对其中的关键代码作了注解。

2024-04-28 21:18:40 229

原创 把M个同样的宝石放在N个同样的盘子_C++实现

把M个同样的宝石放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(其中1,5,1和5,1,1代表同一种方法),用C++实现。注意最后是输出n行字符,不是算出来有几种分法。

2024-04-14 18:30:51 241

原创 模板函数小结

本文举例说明了模板函数的用法,并阐述了为什么模板函数的定义和声明需要都放到头文件中。

2024-04-13 22:44:41 609

原创 如何用C++判断一个系统是16位、32位还是64位?

如何用C++判断一个系统是16位、32位还是64位?方法一:使用指针的sizeof()判断。方法二:使用预定义宏来判断(同时能判断出是intel还是arm)。方法三:使用整数溢出来判断。

2024-04-10 10:35:45 810

原创 用O(1)时间复杂度实现bitset()函数

注:1ULL 的含义是将整数1显式地标记为 64 位的无符号 long long 类型。这样做是为了确保该整数字面量被作为 64 位无符号整数来处理。这些写法可以用于显式指定整数字面量的数据类型,以确保在进行表达式计算时使用指定的数据类型。

2024-04-05 16:09:59 313

原创 C++11新特性总结

当从C++98升级到C++11时,引入了许多新特性和改进。以下是C++11相对于C++98的一些重要变化

2024-04-02 23:57:05 360

原创 条件变量的简易C++实现版

条件变量通常与互斥锁一起使用,用于线程间的同步。

2024-04-02 18:49:38 308

原创 static_cast, dynamic_cast, const_cast, reinterpret_cast和C风格转换(如(int)x)的用法详解

本文对比了几个类型转换函数

2024-03-28 17:21:32 639

原创 FizzBuzzWhizz用C++

用他的方法做了实现。本文是根据大佬张晓龙的那篇。

2024-03-28 09:50:27 322

原创 大数加法C++实现

假设输入是2个数字,可能超过long long类型能表示的范围,请输出两数相加的运算结果。

2024-03-27 17:06:50 272

原创 智能指针shared_ptr、unique_ptr、weak_ptr和弃用的auto_ptr

本文介绍了智能指针的一些用法和特点

2024-03-25 01:36:05 1931

原创 信号量实现生产者消费者程序_C语言示例

信号量实现生产者消费者程序_C语言

2024-03-17 18:56:38 703

原创 基于Linux内核的共享内存C语言示例

本篇文章用C语言完成这样一个功能:创建一块共享内存,然后开辟2个进程。用户在后台控制父进程,输入字符串,父进程会往共享内存里写这段内容。子进程每秒钟去读一次共享内存的内容,然后将读到的内容打印出来。全篇使用C语言完成。

2024-03-17 18:12:29 482

原创 基于Linux内核的socket编程(TCP)的C语言示例

手写一个简单的基于Linux内核的socket编程(TCP)的C语言示例

2024-03-14 01:18:06 667

原创 无名管道在进程中使用的方法示例

无名管道在进程中的使用方法

2024-03-13 01:18:42 378

原创 Linux多进程中wait()函数学习

wait系统调用可以让父线程阻塞等待子线程的终止,并且可以获取子线程的终止状态信息。

2024-03-12 01:44:09 513

原创 用C++打印环境变量environ

【代码】用C++打印环境变量environ。

2024-03-11 19:28:58 546

原创 使用fork()创建子进程示例

这就像是:bash进程是爷爷,程序的主进程是父亲,子进程是儿子。父亲“挂”了后,爷爷给父亲收尸。爷爷不管儿子,所以儿子进了孤儿院~但是子进程没有结束。会继续输出,但是此时它已经没有父进程了,所以它结束后不会再交给bash接管,也就不会出现。父进程在输出3次“parent process”就结束了,交给了bash进程接管。

2024-03-11 19:12:53 465

原创 多线程求解5千万内有多少个质数?

本文分别使用了单线程和多线程来计算5千万内有多少个质数。然后比较了他们的运行时间。

2024-03-10 18:42:25 372

原创 实现一个栈,使得出栈、入栈、获取最大值的时间复杂度为O(1)

思路:用2个栈,其中一个叫数据栈,用来做入栈、出栈操作。第二个叫最大值栈,用来返回最大值。

2024-03-08 01:11:26 556

原创 常用git指令

本文列举了一些常用的git指令

2024-03-05 10:40:50 377

原创 一副扑克牌一共54张,平均分成2份,求这2份都有2张A的概率。

这是一道高中数学题,此处介绍2个解法,第1个是我喜欢用的快速解法,第2个是公式解法。

2024-02-04 00:13:57 1085 1

原创 单例模式的一种C++写法

本文介绍了2种单例模式的写法。分为懒汉模式和饿汉模式。

2024-02-01 12:26:33 414

原创 RAII: autoMsg在带union时使用placement new的实现

实现了一个简单的AutoMsg在带union时使用placement new的情况

2024-01-30 11:31:47 408

原创 比较两个版本号 version1 和 version2

如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序列。

2024-01-20 18:02:50 1044

一个bazel使用示例

12345678900

2024-09-02

FizzBuzzWhizz的2个版本在win10上使用gtest测试框架的实现

2个版本中,第1个版本是我原创的,里面介绍了map和vector-pair这2种方法。 第2个版本的代码内容基本来自张晓龙教练的简书链接:https://www.jianshu.com/p/7f2d0d662267?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-friends 我只是将其适配到了gtest框架里。

2023-01-10

书写者鉴别.rar

本资源是某高校研究生课程模式识别的大作业,是关于手写汉字识别的,代码全部用Python编写,主要参考了莫烦的Python课程,相关资源在网上都有,非常好找。

2019-08-21

空空如也

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

TA关注的人

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