
C/C++
文章平均质量分 96
蒙娜丽宁
华为HDE(HUAWEI Developer Experts),UnityMarvel创始人,开放原子基金会银牌讲师,51CTO学堂金牌讲师,IT畅销书作者。从事软件研究和开发超过20年,长期从事编译器、人工智能、Python、Go、JavaScript、Java及跨平台技术的研究和开发工作,曾出版超过40本IT图书。主要著作包括《Python从菜鸟到高手》、《Python爬虫从菜鸟到高手》、《奇妙的Python:神奇代码漫游之旅》。
展开
-
高效并行计算:使用C++中的std::thread实现多线程编程
在现代计算中,随着多核处理器的普及,如何充分利用硬件资源以提升程序性能成为关键问题之一。C++标准库提供了丰富的多线程支持,其中`std::thread`是用于实现并发计算的核心工具之一。通过合理的多线程设计,程序可以实现并行计算,显著缩短任务执行时间。本文将详细讨论如何在C++中使用`std::thread`进行多线程编程,涵盖线程的创建、同步、资源共享、数据竞争问题等关键内容,并通过代码示例演示如何通过并行计算提升性能。最终,我们将分析多线程编程中的性能调优和最佳实践。原创 2024-10-21 10:00:00 · 950 阅读 · 0 评论 -
QT解决could not resolve sdk path for 'macosx10.8'
这时由于QT for Mac中qdevice.pri文件的配置问题。我现在使用的是OS X10.10,所以需要到如下路径找到qdevice.pri文件。原创 2014-12-05 20:58:31 · 9384 阅读 · 0 评论 -
据说有99%的人都会做错的面试题
这道题主要考察了面试者对浮点数存储格式的理解。另外,请不要讨论该题本身是否有意义之类的话题。本题只为了测试面试者相关的知识是否掌握,题目本身并没有实际的意义。原创 2014-08-25 22:24:50 · 5764 阅读 · 1 评论 -
Android的init过程详解(一)
Android的init过程(二);初始化语言(init.rc)解析本文使用的软件版本Android:4.2.2Linux内核:3.1.10 本文及后续几篇文章将对Android的初始化(init)过程进行详细地、剥丝抽茧式地分析,并且在其中穿插了大量的知识,希望对读者了解Android的启动过程又所帮助。本章主要介绍了与硬件相关初始化文件名的确定以及属性服务的原理和实现。 And原创 2013-04-14 20:06:42 · 8693 阅读 · 4 评论 -
开发可统计单词个数的Android驱动程序(2)
开发可统计单词个数的Android驱动程序(1)五、指定与驱动相关的信息虽然指定这些信息不是必须的,但一个完整的Linux驱动程序都会指定这些与驱动相关的信息。一般需要为Linux驱动程序指定如下信息。1. 模块作者:使用MODULE_AUTHOR宏指定。2. 模块描述:使用MODULE_DESCRIPTION宏指定。3. 模块别名:使用MODULE_ALIAS宏指定。4. 开源协议:使用MODU原创 2013-02-17 12:16:51 · 8173 阅读 · 12 评论 -
开发可统计单词个数的Android驱动程序(3)
开发可统计单词个数的Android驱动程序(2)八、 指定回调函数 本节讲的内容十分关键。不管Linux驱动程序的功能多么复杂还是多么“酷”,都必须允许用户空间的应用程序与内核空间的驱动程序进行交互才有意义。而最常用的交互方式就是读写设备文件。通过file_operations.read和file_operations.write成员变量可以分别指定读写设备文件要调用的回调函数指针。原创 2013-02-25 04:55:17 · 6550 阅读 · 13 评论 -
全排列算法原理和实现
本文为原创,如需转载,请注明作者和出处,谢谢!全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为例说明如何编写全排列的递归算法。1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排列。由于一个数的全排列就是其本身,从而得到以上结果。2、再看后三个数原创 2008-05-11 15:24:00 · 1209 阅读 · 2 评论 -
整数划分算法原理与实现
本文为原创,如需转载,请注明作者和出处,谢谢! 整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n。 如6的整数划分为 6 5 + 1 4 + 2, 4 + 1 + 1 3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1 2 + 2 + 2, 2 + 2 +原创 2008-05-11 15:24:00 · 1343 阅读 · 0 评论 -
希尔排序(shellsort)算法实现
希尔排序(shellsort)又叫增量递减(diminishing increment)排序,是由D.L. Shell发明的,这个算法是通过一个逐渐减小的增量使一个数组逐渐趋近于有序从而达到排序的目的。 假设有一个数组int data[16] = {...}。 首先将这个增量设为16 / 2 = 8,这样就将这个数组分成了8个子数组,它们的索引是0, 8原创 2008-05-15 22:23:00 · 1456 阅读 · 0 评论 -
快速配置Linux + Eclipse + wxWidgets开发环境
本文为原创,如需转载,请注明作者和出处,谢谢! wxWidgets是一个跨平台的C++开发库,与MFC类似。不过配置起来比较麻烦,如果在Linux下使用Eclipse来开发基于wxWidgets的应用程序需要进行一系列的配置,如设置include路径、library路径等。但我们可以使用一个简单的方法来快速配置wxWidgets。 在wxWidgets发行发中有很多原创 2009-01-25 14:20:00 · 1448 阅读 · 1 评论 -
得到第K个大的数算法研究
本文为原创,如需转载,请注明作者和出处,谢谢! 第一种算法是最容易想到的,就是利用快速排序的思想,将一个数组分成以某一个数X为轴,左边的所有的数都比X小,而右边的数都比X大。但我快速排序不同的是,在这个算法中只考虑X的一边,而不是两边都考虑。 如果X的位置是i,那么要得到第k个数,如果k源码如下:Code highlighting pro原创 2008-05-12 20:23:00 · 2616 阅读 · 0 评论 -
选择排序(selection sort)算法实现
从字面上理解,就是通过不断地选择数组元素,从而达到排序的目的。我插入排序类似,假设第i(i算法的时间复杂度为O(n^2)。算法的实现如下Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include原创 2008-05-16 13:23:00 · 1153 阅读 · 0 评论 -
拆半查找的递归和非递归算法
本文为原创,如需转载,请注明作者和出处,谢谢!Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include stdio.h> int binary_search(int x, int data[],原创 2008-05-11 22:24:00 · 1194 阅读 · 0 评论 -
棋盘覆盖问题的算法实现
本文为原创,如需转载,请注明作者和出处,谢谢! 在一个2^k * 2^k个方格组成的棋盘中,有一个方格与其它的不同,若使用以下四种L型骨牌覆盖除这个特殊方格的其它方格,如何覆盖。 四各L型骨牌如下图1 图1 棋盘中的特殊方格如图2图2 实现的基本原理是将2^k * 2^k的棋盘分成四块原创 2008-05-11 22:23:00 · 1502 阅读 · 0 评论 -
快速排序(quicksort)算法实现
快速排序(quicksort)是分治法的典型例子,它的主要思想是将一个待排序的数组以数组的某一个元素X为轴,使这个轴的左侧元素都比X大,而右侧元素都比X小(从大到小排序)。然后以这个X在变换后数组的位置i分为左右两个子数组,再分别进行快速排序,直到子数组中只有一个元素为止。快速排序算法如下Code highlighting produced by Actip原创 2008-05-14 20:23:00 · 1331 阅读 · 1 评论 -
归并排序(merge sort)算法实现
归并排序(merge sort)体现了分治的思想,即将一个待排序数组分为两部分,对这两个部分进行归并排序,排序后,再对两个已经排序好的数组进行合并。这种思想可以用递归方式很容易实现。归并排序的时间复杂度为O(nlogn),空间复杂度为O(n)。实现代码如下:Code highlighting produced by Actipro CodeHighlighter原创 2008-05-14 22:23:00 · 1408 阅读 · 0 评论 -
linux下动态库(*.so)的路径问题
本文为原创,如需转载,请注明作者和出处,谢谢! 最近在使用wxWidgets,这是一个跨平台的C++库,在linux下编译成动态库(*.so),如果将编译后的可执行文件发布到其他机器的linux系统中,需要带上.so文件,这就需要设置一下这些动态库的路径,一般可以使用环境变量LD_LIBRARY_PATH来设置,可以在终端中直接输出如下的命令:export LD_LI原创 2009-01-25 14:20:00 · 1318 阅读 · 0 评论 -
使用wxWidgets进行跨平台的C++开发
本文为原创,如需转载,请注明作者和出处,谢谢!Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4<!--/* Font Definitions */@font-face{font-family:宋体;panose-1:2 1 6 0 3 1 1原创 2009-01-27 11:20:00 · 1553 阅读 · 1 评论