
编程语言
文章平均质量分 66
u011822516
这个作者很懒,什么都没留下…
展开
-
windows下nvvp的基础使用1
cuda入门工具nvvp的基本使用原创 2023-02-17 11:26:25 · 1516 阅读 · 0 评论 -
生成器思想与协程
生成器思想与协程最近在学习python,刚好看到生成器(generator),突然脑子灵光一闪,想到多年前看php文档的时候也花了时间去研究php的生成器与协程.于是就把之前写的东西总结一下,放下来.生成器看到这个名字,难免会和设计模式的生成器模式弄混.其实看英语会比较明显,一个是Builder Pattern,一个是generator.在某种程度上说这也是英文专业名词翻译的大锅了.笑,这也是为什么说程序员要学习英语的一个例证了.生成器的实现其实很简单,就是处理大数据集合,不是使用数组一次性放到一个原创 2022-05-23 15:28:26 · 200 阅读 · 0 评论 -
快速判定x是否为2^n幂。
最近学到 x&(x-1) 这个式子的两个用法,跟大家分享一下。作用:将x的二进制表示从最低位起第一个为1的位清0;一、快速判定x是否为2^n幂。如果x!=0 且x&(x-1)==0,则x为2的n次幂。(当然不能判定n是多少)前提条件:x数据类型应为整数;#define ispow2(x) ( (x) 二、x=x&(x-1);相关应转载 2015-11-27 14:51:07 · 715 阅读 · 0 评论 -
堆排序使用的问题
堆排序使用的方法是一种内部的合并排序,是一种 不稳定的内部排序.不过由于对于top k这一类问题和衍生的问题,即在同时需要处理k个值,所堆排序延伸出的最大堆和最小堆而言优势明显.只会需要O(n lgK).的复杂度.top K问题给定一组任意顺序的数,假设有n个。如何尽快地找到它们的前K个最大的数?首先,既然是找前K个最大的数,那么最直观的办法是,n个数全原创 2016-01-19 14:08:31 · 516 阅读 · 0 评论 -
litcode 合并两个排序链表 递归求解
将两个排序链表合并为一个新的排序链表给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。其中链表定义如下:class ListNode { public: int val; ListNode *next; ListNode(int val) {原创 2015-12-20 17:15:09 · 708 阅读 · 1 评论 -
递归与尾递归总结
编者按:尾递归最大的好处就是不需要保存当前函数的现场,在汇编级别即不需要call和set了1、递归 关于递归的概念,我们都不陌生。简单的来说递归就是一个函数直接或间接地调用自身,是为直接或间接递归。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。用递归需要注意以下两点:(1) 递归就是在过程或函数里调转载 2015-12-03 00:11:33 · 456 阅读 · 0 评论 -
LinCode落单的数
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例给出 [1,2,2,1,3,4,3],返回 4挑战一次遍历,常数级的额外空间复杂度原本的想法是利用hash表,将数陆续放入hash表中,一旦出现匹配则,删除hash表中的数,最后剩下的数就是返回值了。后来经过百度发现了更为简单的方法。原创 2015-12-07 10:19:48 · 1012 阅读 · 0 评论 -
二叉树层次遍历
给定一棵二叉树,要求进行分层遍历,每层的节点值单独打印一行,下图给出事例结构:对此二叉树遍历的结果应该是:1,2 , 34, 5, 67, 8第一种方法,就是利用递归的方法,按层进行打印,我们把根节点当做第0层,之后层次依次增加,如果我们想打印第二层怎么办呢,利用递归的代码如下:[cpp] view plain转载 2015-12-25 09:59:46 · 564 阅读 · 0 评论 -
无符号数 有符号数 与 补码
无符号数 有符号数 与 补码本文是深入理解计算机系统这本书里面关于补码有符号数无符号数章节的一个摘要和读书报告,我个人认为这本书关于这一段的表述,要比绝大多数网上的博客甚至是国内教材要深入浅出的多.同时由于markdown的文档表示公式很麻烦,本文将大量使用书中的截图作为公式使用.===无符号数书中采用一个函数B2U w(binary to unsign ,二进制向量长度为w)将一个二进制...原创 2018-10-16 22:43:34 · 10367 阅读 · 2 评论 -
关于浮点数的一些常见要点
关于浮点数的一些常见要点本来这里应该有一篇关于浮点数的介绍的文章,不过个人认为书里面写得还是比较完善了,就暂时想欠着了,而这些关键点书里面一般介绍的比较少,我个人认为应该单独写文章出来浮点数的不精确性正如绝大多数的文章都会告诉你的一样,浮点数都是不精确的,所有浮点数都无法精确地表达实数.举一个例子,比如.0.01 在单精度浮点型中可以用说是0.0100000000029802322609...原创 2018-11-18 21:49:02 · 867 阅读 · 0 评论 -
代码优化技巧2:循环优化
代码优化技巧2:循环优化本文算不上什么很有独创性的东西,在很多人的文章和书籍中都有看到,比如深入理解操作系统在的5/4,韩天峰老师的谋篇<php需要聪明人的语言>也提到过一些相关内容.在大多数的可以允许过程化编程的语言中,循环永远是经常用到的结构.但是每一次使用循环我们都要尤其小心谨慎,避免循环出现的低效率.我们在这里使用一个有趣的例子.避免在循环条件中使用函数考虑下面一个...原创 2018-12-25 23:59:19 · 393 阅读 · 0 评论 -
实战优化php和mysql:记录一次实际项目中优化数据库访问
实战优化php和mysql:记录一次实际项目中优化数据库访问本期中某个项目中下载报名数据模块中,项目经理说正式环境下出现下载过慢的情况,在实际的数据量,一个文件需要半分钟甚至一分钟的时间生成,从而导致超时,甚至下载失败的情况.因为这个模块是之前已经离职的同事写的,因此我去接手还是有点茫然的.最后在我的优化下将下载时间优化到10s以内.还是要有点小收获.因此写下这一篇文章.同步环境首先是把线...原创 2019-01-22 11:36:59 · 761 阅读 · 0 评论 -
算法题 子数组之和为零
lintcode 138 子数组之和为零给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置这里给定是思路是这样的,依次求数组nums的前缀和,其前缀和的数组为S,对于S[i],S[j],(i>j)如果S[i],S[j],相等,这说明nums[i+1],nums[i+2]....nums[j]的子数组的和为0;这里利用h原创 2015-10-20 10:40:04 · 1947 阅读 · 0 评论 -
lintcode 木材加工
有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。样例有3根木头[232, 124, 456], k=7, 最大长度为114.注意木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。无法切出要求至少 k原创 2015-11-05 09:59:47 · 969 阅读 · 0 评论 -
qsort.c源代码分析
qsort是集成在标准C里头的库函数,使用起来简洁方便,当然他与std::sort万年不变的效率之争还是很有看头(感兴趣的朋友可以看这个网址http://www.cnblogs.com/guaiguai/archive/2008/12/12/1353390.html).由于微软十分大方的将qsort的源码放出,自然就给了鄙人围观的机会(顺便一提std::sort也是有的,不过我对Templat原创 2013-12-01 21:01:00 · 7183 阅读 · 4 评论 -
详细解析ESP寄存器与EBP寄存器
详细解析ESP寄存器与EBP寄存器 最近在看汇编码,经常在程序的开头看到ESP和EBP寄存器的出现,由于本人基础知识的不牢靠,便上网查阅相关的资料,可惜网上的资料都不给力,都只是流于形式,没有好好的解释这两个东西是什么.终于通过google国外的网站,得到一个相当不错的网页,上面解释的很清晰http://www.tenouk.com/Bufferoverflowc/Buffer原创 2014-02-26 21:36:15 · 50426 阅读 · 14 评论 -
中缀表达式生成二叉树并利用后缀表达式进行求值运算
这次是某人给的题目,题目不难,但是很复杂原创 2014-10-26 17:21:46 · 5802 阅读 · 0 评论 -
动态规划
终于来到了算法设计思想中最难,也最有趣的这部分,在去年的google笔试中,7道算法设计题有2道动态规划(Dynamic Programming)。看了这么久的算法,这部分也是唯一感觉到了比较难的地方,从这篇文章开始,将花连续的篇幅来讨论一些动态规划的问题。这包括书上介绍过的计算二项式系数,Warshall算法求传递闭包,Floyd算法求完全最短路径,构造最有二叉查找树,背转载 2014-10-28 14:48:19 · 583 阅读 · 0 评论 -
C++STL 之 迭代器
C++STL 之 迭代器 说道stl,迭代器都是一个无法回避的话题,迭代器在stl中起着一个中介层的作用,一侧是标准的容器类,另一侧则是算法(algorithm).1.迭代器与指针迭代器是指向某个元素集合中指向某个元素的物体,从这一点上看,他和指针很类似,只是多了一层封装,但是迭代器和指针却又有所不同.那么迭代器是不是指针呢?要看容器而定,由上可知,vector的迭代器原创 2014-10-17 23:45:46 · 490 阅读 · 0 评论 -
C++ stl之set容器
set容器,即集合容器原创 2014-11-23 16:50:41 · 518 阅读 · 0 评论 -
多进程和多线程
很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。我想,只要你不是整天都写那种int main()转载 2014-11-06 21:53:12 · 474 阅读 · 0 评论 -
构造后缀树
后缀树是字符串匹配算法中一种重要的数据结构,同时使用这种数据结构可以完成许多关于字符串的算法.可是看了许多blog都没有说怎么构造,只有所谓的利用哈希来构造,在网上找到了这一篇译文,便转载过来,周末有时间写一个使用哈希表来构造后缀树的博客吧 后缀树Fast String Searching With Suffix Trees 原著 Mark Nelso转载 2014-12-17 09:43:36 · 1023 阅读 · 0 评论 -
windows 环境下 0x色彩对应表
常用 0x色彩表原创 2015-01-13 17:29:52 · 18962 阅读 · 0 评论 -
基数排序与通排序
【1】基数排序以前研究的各种排序算法,都是通过比较数据大小的方法对欲排数据序列进行排序整理过程。而基数排序却不再相同,那么,基数排序是采用怎样的策略进行排序的呢?简略概述:基数排序是通过“分配”和“收集”过程来实现排序。而这个思想该如何理解呢?请看以下例子。(1)假设有欲排数据序列如下所示:73 22 93 43 55 14 28 65 39转载 2015-01-19 20:19:44 · 1113 阅读 · 0 评论 -
C++单件模式
单件模式应该是所有设计模式中最简单的一个了,但是如果使用不当会出现很多问题,下面我们就分析一下单件模式作用:保证一个class只有一个实体(instance),并为它提供一个全局唯一的访问点 适用性:1、对于一个类(对象),如果它比较大(占用的系统资源非常多),而且这些资源可以被全局共享,则可以设计为singleton模式。2、对于一个类,需要对实例进行计数。可以在In转载 2014-12-15 20:41:22 · 527 阅读 · 0 评论 -
使用栈来模拟递归过程
使用栈来模拟递归过程 一.为什么要学习递归与非递归的转换的实现方法? 1)并不是每一门语言都支持递归的. 2)有助于理解递归的本质. 3)有助于理解栈,树等数据结构. 二.预先知识 1)《数据结构》栈,二叉树,树的相关知识 2)对递归有明确的认识三.图的深度优先搜索最近写有关图的算法,首先写的便是基础中的基础,深度优先与广度优原创 2013-09-21 15:17:19 · 7449 阅读 · 0 评论