- 博客(36)
- 资源 (2)
- 收藏
- 关注
转载 Python yield 使用浅析
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念。如何生成斐波那契數列斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前 N 个数是一
2013-05-27 19:21:14
562
原创 python的几个有趣点
1、变量 “_”交互模式中,最近一个表达式的值赋给变量 _ 。这样我们就可以把它当作一个桌面计算器,很方便的用于连续计算,例如:>>> tax = 12.5 / 100>>> price = 100.50>>> price * tax12.5625>>> price + _113.0625>>> round(_, 2)113.06此变量对于用户是只读
2013-05-21 19:33:13
786
原创 EDS加密算法源码
#include "stdio.h"#include "memory.h"#include "time.h"#include "stdlib.h"#define PLAIN_FILE_OPEN_ERROR -1#define KEY_FILE_OPEN_ERROR -2#define CIPHER_FILE_OPEN_ERROR -3#define OK 1typedef ch
2013-05-18 10:48:34
1940
转载 Posix线程编程指南(2)
概念及作用在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效,但却可以跨多个函数访问,比如程序可能需要每个线程维护一个链表,而使用相同的函数操作,最简单的办法就是使用同名而不同变量地址的线程相关数据结构。这样的数据结构可以由Posix线
2013-05-15 17:12:05
356
转载 使用多线程的利弊
1. Amdahl定律 一个很简单的量化公式,用来计算一个程序中串行部分所占多少对程序加速比的影响或者用来计算计算机硬件配置中某个设备的速度提高能够将整个系统的速度提高多少。 假设一个串行程序执行的总时间为1,不能被并行化的部分占的时间比例为p,即串行化的部分为p,可并行化的时间为:1-p。如果用n个核用来加速的话,加速比为: 如果
2013-05-14 10:51:49
414
原创 C语言中异常处理的两个函数
与刺激的abort()和exit()相比,goto语句看起来是处理异常的更可行方案。不幸的是,goto是本地的:它只能跳到所在函数内部的标号上,而不能将控制权转移到所在程序的任意地点(当然,除非你的所有代码都在main体中)。为了解决这个限制,C函数库提供了setjmp()和longjmp()函数,它们分别承担非局部标号和goto作用。头文件申明了这些函数及同时所需的jmp_buf数据类型
2013-05-13 10:26:31
746
转载 POSIX 线程详解
线程是有趣的了解如何正确运用线程是每一个优秀程序员必备的素质。线程类似于进程。如同进程,线程由内核按时间分片进行管理。在单处理器系统中,内核使用时间分片来模拟线程的并发执行,这种方式和进程的相同。而在多处理器系统中,如同多个进程,线程实际上一样可以并发执行。那么为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间。不同的线程可以存取内存中的同
2013-05-12 16:14:17
437
转载 pcre简介
PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之中的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正则表达式库和一些经典的正则表达式库。和Boost正则表达式库的
2013-05-12 14:53:07
997
转载 深入浅出C/C++中的正则表达式库(三)——PCRE, PCRE++
写在前面:本文是《深入浅出C/C++中的正则表达式库》系列的第三篇,本文的主要内容是介绍PCRE和PCRE++,因为它们两个是很有渊源的,所以放在一起讲。1. 什么是PCRE? 什么是PCRE++?PCRE,全称是Perl Compatible Regular Expressions。从名字我们可以看出PCRE库是与Perl中正则表达式相兼容的一个正则表达式库。PCRE是免费开源的库,
2013-05-12 14:43:05
802
转载 深入浅出C/C++中的正则表达式库(二)——Boost.Regex
写在前面:本文是《深入浅出C/C++中的正则表达式库》系列的第二篇,如果对本文感兴趣,相信你也会对《深入浅出C/C++中的正则表达式库——GNU Regex Library》感兴趣。本文主要介绍Boost中的正则表达式库,通过介绍其基本内容与相关接口,希望能够教读者朋友学会如何使用该库。1. 什么是Boost.Regex? Boost是C++中仅次于STL的一套库,它的功能比STL更加
2013-05-12 14:33:06
801
转载 深入浅出C/C++中的正则表达式库(一)——GNU Regex Library
写在前面: 本文是面向有正则表达式基础的读者朋友的,如果你还不知道正则表达式是什么,请先到这里学习一下 :http://en.wikipedia.org/wiki/Regular_expression。正则表达式(Regular Expressions),又被称为regex或regexp,是一种十分简便、灵活的文本处理工具。它可以用来精确地找出某文本中匹配某种指定规则的内容。在linux下
2013-05-12 14:28:37
821
原创 C++库 POCO
POCO C++库是开源的用于简化和加速C++开发面向网络、可移植应用程序的C++库集,POCO库和C++标准库可以很好的集成并填补了C++标准库缺乏的功能空隙。POCO库的模块化、高效的设计及实现使得POCO特别适合嵌入式开发。在嵌入式开发领域,由于C++既适合底层(设备I/O、中断处理等)和高层面向对象开发,越来越流行。当然POCO也准备好了面对企业级挑战。官方网站:http://poco
2013-05-12 08:46:58
946
转载 Posix
POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX 是为了读音更像 UNIX)。电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)最初开发 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性。然而,POSIX 并不局限于
2013-05-12 07:35:29
752
原创 OpenGL
OpenGL(全写OpenGraphics Library)是个定义了一个跨编程语言、跨平台的程序接口(Application programming interface)的规格,它用于生成二维、三维图像。这个接口由近三百五十个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD
2013-05-12 07:13:01
1281
转载 内存数据库
内存数据库,顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大
2013-05-11 16:07:20
784
原创 ACID——数据库事务正确执行的四个基本要素
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易原子性:一
2013-05-11 13:06:46
1506
原创 SQLite数据库
本文部分转至http://www.cnblogs.com/hustcat/archive/2010/01/27/1657821.html简介: SQLite,是一款轻型的数据库,是遵守ACID的关系式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/
2013-05-11 11:46:23
1042
原创 c++类的几点注意事项
1、可变数据成员(由mutable修饰),在const函数中可以修改 class Screen{ public: Screen(); Screen(string str) ; b
2013-05-10 21:37:23
858
转载 从Larbin看互联网爬虫设计
互联网是一个庞大的非结构化的数据库,将数据有效的检索并组织呈现出来有着巨大的应用前景,尤其是类似RSS的以XML为基础的结构化的数据越来越多,内 容的组织方式越来越灵活,检索组织并呈现会有着越来越广泛的应用范围,同时在时效性和可读性上也会有越来越高的要求。这一切的基础是爬虫,信息的来源入 口。一个高效,灵活可扩展的爬虫对以上应用都有着无可替代的重要意义。 要设计一个爬虫,首先需要考虑
2013-05-09 19:07:54
765
转载 五大常用算法之五:分支限界法
分支限界法一、基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。 (1)分支搜索算法 所谓“分支”就是采用广度
2013-05-05 16:08:49
453
转载 五大常用算法之四:回溯法
1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 许多复杂的
2013-05-05 16:07:02
494
转载 五大常用算法之三:贪心算法
贪心算法一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前
2013-05-05 16:05:38
416
转载 五大常用算法之一:分治算法
分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计
2013-05-05 16:04:12
364
转载 五大常用算法之二:动态规划算法
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能
2013-05-05 16:02:17
381
转载 尾递归
关于递归操作,相信大家都已经不陌生。简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,我们可以使用递归来计算一个单向链表的长度:public class Node{ public Node(int value, Node next) { this.Value = value; this.Next = next; }
2013-05-05 15:41:42
396
转载 循环(迭代/递推)与递归
循环(迭代)与递归的区别 1。递归算法与迭代算法的设计思路区别在于:函数或算法是否具备收敛性,当且仅当一个算法存在预期的收敛效果时,采用递归算法才是可行的,否则,就不能使用递归算法。当然,从理论上说,所有的递归函数都可以转换为迭代函数,反之亦然,然而代价通常都是比较高的。但从算法结构来说,递归声明的结构并不总能够转换为迭代结构,原因在于结构的引申本身属于递归的概念,用迭代的方法在设计初
2013-05-05 15:26:12
1100
转载 递归与迭代的区别
递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.使用递归要注意的有两点:1)递归就是在过程或函数里面调用自身;2)在使用递归时,必须有一个明确的递归结束条件
2013-05-05 15:08:52
369
原创 关于比赛安排的求解问题
设有2^n(n队 1 2 3 4比赛 1-2 3-4 第一天1-3 2-4 第二天1-4 2-3 第三天该问题用分治法来解决,这个思想没有问题,但我找了很多资料发现都是用数组来保存结果。虽然分析问题时有分治的思想,但在代码的形式中并没有体现出分治的思想,经过自己的研究,写了一下几个程序。1、不加任何修饰,只体现算法思想的代码如下:#
2013-05-04 19:08:33
679
原创 iostream 迭代器
1、istream_iterator 读取输入流 ostream_iterator 读取输出流2、几个程序 (1) #include #include #include using namespace std;int main(){ istream_iterator in_iter(cin); //将迭代器与输入流绑定 istream
2013-05-03 21:49:35
358
原创 c++开发小技巧
1、#ifndef NDEBUG cout #endif当需要在测试时输出一些信息,以查看程序的执行情况时,使用上面的语句,输出相关信息;待最终打包程序时,在程序的头部添加语句 #define NDEBUG,使上面的语句失效对于提供定义NDEBUG的命令行选项的编译器,不许添加 #define NDEBUG,只需在最终生成可执行程序时,使用 cc - DNDEBUG m
2013-04-22 17:53:32
480
原创 linux 下文件的路径
1、“./”当前路径比如运行当前路径下的可执行程序test,在控制台下输入“./test”2、“../”当前目录的上一层目录
2013-04-22 17:19:52
458
原创 c++判断文件是否存在
方法1:利用fstream 和ifstream(1)用fstream#include #include using namespace std;#define FILENAME "test.txt"int main(){ fstream _file; _file.open(FILENAME,ios::in);
2013-04-22 17:11:32
1076
转载 跟我一起写Makefile
makefile 介绍make命令执行时,需要一个 makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。首先,我们用一个示例来说明makefile的书写规则。以便给大家一个感性认识。这个示例来源于gnu的make使用手册,在这个示例中,我们的工程有8个c文件,和3个头文件,我们要写一个makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:1)如果
2013-04-14 09:59:44
438
转载 TinyXml 文档
TinyXml 文档TinyXML是一个简单小巧,可以很轻易集成到其它法度中的C++ XML解析器。它能做些什么简单地说,TinyXML解析一个XML文档并由此生成一个可读可批改可保存的文档对象模型(DOM)。XML的意思是“可扩大标识表记标帜说话“(eXtensible Markup Language)。它容许你创建你本身的文档标识表记标帜。在为浏览器标识表记标帜文档方面
2013-04-12 17:03:18
641
原创 调试时使用assert函数
void assert (int expression); 该函数包含在头文件内 其功能为当参数表达式为假时停止程序的执行(调用abort()函数),并向标准错误设备写相关的信息,其格式通常为 “Assertion failed:expression, filefilename, line line number"。 当在程序的头部包含
2013-04-12 16:36:12
397
原创 文本编辑器vi
vi编辑器由加州大学伯克利分校,Bill Joy 研究开发。其是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器。对Unix及Linux系统的任何版本,vi编辑器是完全相同的,其是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻 文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice,文本模式下
2013-03-29 15:17:44
559
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人