自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

转载 [转载]走出浮躁的泥沼:把一件事做到某种境界

今天看到这篇文章,心有戚戚焉。研究生以来自己确实相当浮躁,没有沉下心来做好一件事情,包括科研和编程。值得好好反省一下了。此文为转载,转载地址:http://www.nowamagic.net/librarys/veda/detail/2263《走出浮躁的泥沼:把一件事做到某种境界》从小我就是个所谓“兴趣广泛”的人。曾经一度或是因为被洗脑,或是因为

2013-11-27 10:35:41 741

原创 知乎每日精选python阅读脚本

好久没写程序了,话说自从决定进审协后,感觉学了这么长时间的coding算是有点浪费。找工作的时候挺想去做编程的,但由于种种原因还是签了家乡的单位。如果家乡的IT行业能稍微好一点,我就会毫不犹豫地去写代码啦。废话少说。写了一个python脚本来看知乎每日精选,不过在命令行下挺不方便的,现在极想找一个CLI框架,像使用telnet那样方便地在命令行里跳转。下面是截图:一开始没有使用

2013-11-25 21:48:25 2362

原创 DDSCAT7.1编译及使用

DDSCAT是DDA(分立偶极子近似)方法的数值仿真程序,由普林斯顿大学的Bruce T. Draine和加利福尼亚大学的Piotr J. Flatau开发,十多年来广受计算物理学工作者的欢迎。目前的版本是7.3,项目地址:https://code.google.com/p/ddscat/我这里只有2010年的7.1版,两者有稍微的差别,比如7.3增加了一些新的可选算法,修改了

2013-10-14 21:28:45 5935 6

原创 单链表中删除重复结点

templatevoid LinkList::delSameValue(){ LinkListNode *ptr1 = this->head; while(ptr1->next != NULL){ LinkListNode* ptr2 = ptr1->next, *pre = ptr1; while(ptr2 != NULL){ if(ptr2->value == ptr1->v

2013-10-11 16:02:38 4744

原创 使用python脚本抓取百度fm中的歌曲

抽空研究了一下百度fm的机制,发现没有想像中复杂啊。这篇文章参考了zhangyuanwe的XBMC百度FM插件。检查http://fm.baidu.com的源代码,在最后一部分的javascript代码段可以发现rawChannelList={...},这里即是频道列表的信息。为方便处理,先将这段代码按照json的方式解析为python列表:start = html.find(

2013-09-18 17:28:30 3346

翻译 XBMC插件addon.xml编写说明

XBMC插件addon.xml编写说明翻译自http://wiki.xbmc.org/index.php?title=Addon.xml ,不完全翻译。  ====================================  1. 引言XBMC中每一个皮肤或脚本(或插件)都要包含一个addon.xml文件,它会设置扩展的总体信息(开发人员,版本信息和依赖库)。

2013-09-17 14:19:03 4449

翻译 XBMC插件编写规范

XBMC插件编写规范 本文翻译自xbmc维基网站,不完整翻译:http://wiki.xbmc.org/index.php?title=Add-on_development XBMC插件系统基于插件库c-pluff。 插件结构每一插件都需要有自己单独的文件夹,在主目录下,使用addon.xml描述相关信息。另外,还该当包含(虽然不是必须的)icon.png、change

2013-09-16 16:30:09 2727

翻译 boost asio库中同步、异步工作机制

本文翻译自boost::asio库,不是完整翻译。=========================asio使用了设计模式中的前摄器模式(Proactor),使用io_service作为前摄器,可以处理同步和异泊的I/O请求,多用于网络通信。每个使用asio库的程序都必须有一个io_service对象,负责管理与操作系统底层的通信。为进行I/O操作,还必须有一个IO对象,如一个TCP或

2013-08-24 11:45:03 2314

原创 Mingw连接boost thread库时的一个问题

使用boost::thread库时,编译时没有问题,连接时出现了一个“多重定义”的问题:粗粗看了一下,这是一个BUG:http://forums.codeblocks.org/index.php?topic=13357.0https://svn.boost.org/trac/boost/ticket/4258https://svn.boost.org/trac/bo

2013-08-21 21:27:50 1014

原创 Win7下MingW编译Boost Asio程序的错误解决方法

使用MingW学习Boost真是一波三折,果然谁要是想少走弯路还是直接用windows自带的那些编译器吧,开源的东东在微软的平台上真的很有受待见也很麻烦。先说下编译环境:WIN7 64位旗舰版,MingW 4.4,Boost版本1.53,编译库时都是编译成了静态库(.a),源文件是boost asio文档里的第一个例子,文件名改为timer_sync.cpp。链接时遇到了两个问题:

2013-08-21 18:46:43 2043

原创 python调用中国天气网的公用API获取天气信息

闲来无事想搞一下天气API,大致查了一下,国内比较好的还是中国天气网(中国气象台)的,门户网站有新浪和腾迅(搜搜),其他有一些小网站担心不稳定,所以没有用。最简单的脚本。发送请求获取JSON并解析,简单地输出到屏幕上。这里只用到了北京地区,其他地区需要将URL地址中的相关代码替换掉。这些代码可以在下面的参考链接中查到。截屏如下,又有乱码,没有办法,python的乱码太恶心了,在IDLE

2013-05-13 17:06:38 12690 8

原创 使用python抓取有道词典的网页并返回结果信息

使用Python写了一个抓取有道词典首页的脚本,目前功能还不完善,只能抓取基本的Tag并使用BeautifulSoup显示出来,没有对Tag里的信息进行细分。另外,网页端是按utf-8编码的,放到Windows上的命令行里无法正常显示,目前还没有测试Linux终端里的情况。有时间再完善一下吧。#! /usr/bin/python# coding = utf-8

2013-04-23 16:47:55 2716 3

原创 《设计模式》笔记之抽象工厂模式

抽象工厂模式===========================1.模式目标:为创建相关或信赖的对象提供统一的接口。2.动机:在设计窗口系统时,不仅需要为不同的窗口部件分别设计类(窗口,滚动条等),而且对于一个跨平台系统甚至有多个皮肤的系统而言,还需要为不同的外观分别设计样式(如Linux上的Motif,Windows上的样式等),如果为窗口部件分别设计适用于不同主题的类,也就太繁琐

2012-11-05 22:41:50 576

原创 《设计模式》笔记-序言

自从九月份读完《Effective C++》后,实验室的任务就特别多,导师管理得也严格,白天基本上只能待在实验室,晚上回宿舍也没有太多精神看书,因此计算机相关内容的学习就相当缓慢。通过读《Effective C++》,对C++的底层特性有了更深的了解。当时预计从C++出发,一方向是向下更深地去理解C++的对象模型和语言特性,学会使用STL和Boost,使对这门语言的掌握更上层楼,向上则学习设计

2012-11-04 21:12:22 588

翻译 Python中的正则表达式(5)

修改字符串到目前为止,我们已经简单实现了字符串的静态搜索;另外,正则表达式也常常用于通过不同的方式修改字符串,使用的函数如下:方法或属性用途split()将字符串分割为列表,是在正则表达式匹配的地方进行分割。sub()寻找所有匹配的子串,并将它们替换为指定的字符串subn

2012-09-18 17:44:18 2983

翻译 Python中的正则表达式(4)

最近实验太紧张了,没有时间再来看这些语法上的东西。------------------------分组 很多情况下你需要除了是否匹配以外的其他信息,正则表达式经常用于将字符串分解为子串以匹配不同的成分。例如,一个RFC-822头信息可以分解为一个头名和一个值,并通过:来连接,如下:From:[email protected]

2012-09-16 21:28:19 1942

翻译 Python中的正则表达式(3)

<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->模块级别的函数<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->不必每次都先创建样式对象再调用函数,re模块同时提供了高层次的函数如match(),search(),findall(

2012-09-09 11:06:14 2403

翻译 Python中的正则表达式(2)

正则表达式的使用 学习过最简单的正则表达式的规则后,如何在实际中运用呢?Python中的re模块提供了正则表达式引擎的接口,允许用户将表达式编译成对象,然后再进行匹配。 正则表达式的编译 将正则表达式编译成格式对象,此对象含有不同的操作函数,如查找或子串替换等。 >>> import re >>> p = re.compile('ab*') >>> print

2012-09-07 18:05:26 895

翻译 Python中的正则表达式(1)

写这个系列是为了整理在Python中学习正则表达式的知识。其实在Linux Shell、PHP以及Qt的学习中都接触过正则表达式,但是由于笔记做得不好,所以经常到了使用的时候翻来翻去,很是麻烦,所以把知识梳理一下。本文主要翻译自Python标准库手册中的指南,但是没有逐字句地翻译,它比标准库中的re模块相应介绍要简单一些,也更容易看懂。-----------------------------

2012-09-07 14:44:35 1011

原创 《Effective C++》读后感

从八月初在当当上订上这本书,到现在九月初把这本书粗粗读完一遍,期间大概一个月时间,平均每天读一个条款多一点。基本上,每个条款,除了个别的细节外,都能读明白,大致上也都知道“所以然”。但是,如果现在让我合上书,写上一段代码,恐怕这些理解还显得肤浅——毕竟”看“和”写“是两码事,程序员归根结底还是要去”创造“的。全书55个条款,可以看成55节,分为9章,作者的语言相对平实,思维有些跳跃,而且主要是

2012-09-04 10:55:02 876

原创 《Effective C++》读书笔记之item52:写了placement new也要写placement delete

1.当在类中声明了一个placement new(一个特定位置上的new),它接受了除std::size_t外的其他变量作为参数,则必须同样声明一个placement delete并且其参数与placement new相同以取得对应关系,这样当内存分配失败时C++编译器将调用与placement new相匹配的placement delete归还内存。注意placement delete只有在

2012-09-03 21:06:40 599

原创 《Effective C++》读书笔记之item51:编写new和delete时需固守常规

1.当用户自定义operator new时,应当满足以下要求:(1)operator new应当包含一个无穷循环,并在其中尝试分配内存,如果分配失败,就应当调用new-handler。(2)同时它应当有能力处理0-byte申请,一种常见做法是将它视为1-byte申请。C++规定,即使客户要求0字节,operator new也应该返回一个合法指针。(3)类专属版本的operator ne

2012-09-03 20:34:57 529

原创 《Effective C++》读书笔记之item50:了解new和delete的合理替换时机

1.C++标准程序库中的operator new和operator delete一般情况下能够满足需要,但是如果为了以下目的,可以定制自己版本的operator new和operator delete:检测运用上的错误:比如underrun(写入点在分配区块起点之前)和overrun(写入点在分配区块尾端之后)错误,可以自行定义operator new以超额分配内存,在客户所需要的内存前后

2012-09-03 13:01:32 602

原创 《Effective C++》读书笔记之item49:了解new-handler的行为

1.new_handler函数:当operator new或operator new[]分配内存失败时调用的函数。set_new_handler函数:试图分配更多内存以足够使用,成功时会返回,否则会抛出一个bad_alloc异常(或其派生类对象)或调用cstdlib的abort()或exit()函数强制退出。参考资料:http://www.cplusplus.com/reference/s

2012-09-02 21:58:27 618

原创 《Effective C++》读书笔记之item53:不要轻忽编译器的警告

1.严肃对待编译器发出的警告信息,努力在编译器的最高(最严苛)警告级别下争取“无任何警告”。2.不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。代码一旦移植,原来倚赖的警告信息有可能消失。

2012-09-02 19:18:34 500

原创 《Effective C++》读书笔记之item54:让自己熟悉包括TR1在内的标准程序库

1.C++98中的标准程序库包括:STL(标准模板库):包括容器、迭代器、通用算法、函数对象、适配器(容器适配器和函数对象适配器)。 输入输出流:包括用户自定缓冲功能、国际化IO以及预定义的对象cin、cout、cerr和clog。 国际化支持:包括多区域支持,促进unicode。 数值处理:包括数值模板和纯数值数组。 异常:一个异常处理体系。 C89标准程序库。 2.TR1表示Tec

2012-09-02 19:13:55 669

原创 《Effective C++》读书笔记之item55:让自己熟悉Boost

1.Boost是一个社群,也是一个网站,它提供免费、源代码开放、同行复审的C++程序库。Boost的开发者很多来自C++标准委员会,在C++标准化过程中扮演深具影响力的角色。2.Boost提供许多TR1组件的实现。PS:Boost维基百科条目:http://zh.wikipedia.org/wiki/Boost_C++_Libraries 。有空学习一下Boost,越学C++越觉得这门语言

2012-09-02 19:06:48 541

原创 《Effective C++》读书笔记之item48:认识template元编程

1.模板元编程可以将部分执行期的任务提前至编译期完成,从而可以更早发现错误,更加高效(编译时间会变长,但是执行期的效率会更高)。2.模板元编程是图灵完备的,可以执行分支语句和循环(通过递归实现)。如解决阶乘问题的代码:template //一般情况,递推关系式struct Factorial{ enum{value = n * Factorial::value};};temp

2012-08-30 20:18:40 1768

原创 《Effective C++》读书笔记之item47:请使用traits classes表现类型信息

1.使用traits技术可以在编译期间获取某些类型信息,它要求对内置类型和用户自定义类型表现得一样好。标准模板库是把traits信息放到模板中,其中针对迭代器的被命名为iterator_traits,它是一个结构体:templatestruct iterator_traits;它的工作原理是:针对每一个类型IterT,在结构体中声明某个typedef名为iterator_

2012-08-30 19:53:29 693

原创 《Effective C++》读书笔记之item46:需要类型转换时请为模板定义非成员函数

1.在类外定义的模板函数,在实参具现化时不进行隐式类型转换:可以在函数调用过程中进行这样的转换,但是在能够调用一个函数之前,编译器必须知道那个函数存在,而为了知道它,必须先为相关的函数模板具现化参数类型。这是template C++与面向对象的C++不同的地方。对条款24中的例子进行模板化:templateclass Rational{ public: Rational(con

2012-08-30 17:41:02 1131

原创 《Effective C++》读书笔记之item45:运用成员函数模板接受所有兼容类型

1.注意一个特殊的行为:如果以带有派生关系的基类B和派生类D两类型分别具现化某个模板类,产生出来的两个具现体并不带有派生关系。2.如果模板类中需要接受多个兼容类型,可以声明一个成员函数模板。这样的函数往往应该是一个复制构造函数模板(泛化复制构造函数)和一个复制赋值重载函数模板以支持模板对象间的转换。如用户自定义的一个智能指针:templateclass SmartPtr{ publ

2012-08-29 20:34:18 757

原创 《Effective C++》读书笔记之item44:将与参数无关的代码抽离templates

1.模板类生成多个类和多个函数,所以任何模板类代码都不该与某个造成膨胀的模板参数产生相依关系。例如一个正方矩阵具有一个矩阵求逆的成员函数invert():template //该模板类支持n*n矩阵,元素类型为T,std::size_t属于非类型参数class SquareMatrix{ public: void invert(); //矩阵求逆运算 ...};如

2012-08-29 19:58:59 569

原创 《Effective C++》读书笔记之item43:学习处理模板化基类内的名称

1.注意从“面向对象的C++”转向“模板C++”时继承可能遭遇问题:由于基类模板可能被特化,而该特化版本可能会改变成员,因此C++拒绝在模板化基类中寻找继承而来的名称。2.实例:假设将信息传送到不同的公司去,传送方式包括明文传送和密文传送,采用模板类的设计方法:templateclass MsgSender{ public: ... void sendClear(const

2012-08-26 21:08:04 1212

原创 《Effective C++》读书笔记之item42:了解typename的双重意义

1.当声明模板类型参数时,class和typename的意义相同。2.模板内出现的名称如果依赖于某个模板参数,称为从属名称(dependent names);如果从属名称在类中呈嵌套状,称为嵌套从属名称。嵌套从属名称有可能导致解析困难,如:templatevoid print2nd(const C& container){ C::const_iterator* x; //可能

2012-08-25 20:37:31 638

原创 《Effective C++》读书笔记之item41:了解隐式接口和编译期多态

1.C++模板机制是一部完整的图灵机:它可以被用来计算任何可计算的值。由此发展出模板元编程,创造出“在C++编译器内执行并于编译完成时停止执行”的程序。2.类和模板都支持接口和多态,不同的是对类而言,接口是显式的,以函数签名(声明)为中心,多态则是通过运行期绑定(虚函数机制);对模板而言,接口是隐式的,奠基于有效表达式,多态则是通过模板具现化和函数重载解析,发生于编译期。

2012-08-23 21:02:20 586

原创 《Effective C++》读书笔记之item40:明智而审慎地使用多重继承

1.多重继承的缺点:(1)从一个以上的基类继承相同名称,可能导致歧义,使用时应当使用域作用符限定具体是哪个基类的成员。注意:在这种歧义中,C++用来解析重载函数调用的规则在起作用——在看到是否有个函数可取用之前,首先确定这个函数对此调用来说是最佳匹配,找到最佳匹配函数后才检验其可取用性。(2)如个一个基类有多个派生类,而更深层次的派生类从这些派生类中派生出来,基类如何构成这更深层次的派生类

2012-08-23 20:06:25 614

原创 《Effective C++》读书笔记之item39:明智而审慎地使用private继承

1.private继承意味着“根据某物实现出”,只有实现部分被继承,接口部分应略去;它只在软件“实现”层面上有意义,在软件设计层面上没有意义。private继承而来的基类成员都会在派生类中成为private属性;如果类之间是private继承关系,编译器不会自动将一个派生类对象转换为基类对象。2.private继承和复合都是“根据某物实现出”,在设计时应尽量使用复合,少使用private继承。

2012-08-22 19:58:27 566

原创 《Effective C++》读书笔记之item38:通过复合塑模出has-a或“根据某物实现出”

1.public继承是“is-a“的关系,而复合有”has-a“或”根据某物实现出(is-implemented-in-terms-of)“的意思——当复合发生在应用域内的对象之间,表现出has-a关系;当它发生于实现域内则是表示“根据某物实现出”的关系。2.实例:set的构造。标准程序库中有set模板,它“每个元素都耗用三个指针”,是用平衡查找树实现而成,使它们在查找、插入、删除元素时保证拥

2012-08-22 18:47:30 483

原创 《Effective C++》读书笔记之item37:绝不重新定义继承而来的缺省参数值

1.绝不重新定义继承而来的缺省参数值,它有两层意思:(1)如果函数是非虚函数,你根本不应该重新定义它,因此也谈不上改变缺省参数值了。(2)如果函数是虚函数,由于缺省参数值是“静态绑定”,即使使用基类类型的指针或引用指向派生类函数,并且函数以派生类所定义的版本动作,其缺少参数值仍旧是基类所定义的!C++使用这种方式是为了“运行期效率”,在编译期确定参数比在运行期确定效率要高。2.如以下继

2012-08-20 11:51:14 653

原创 《Effective C++》读书笔记之item36:绝不重新定义继承而来的non-virtual函数

1.任何情况下都不应该重新定义一个继承而来的非虚函数。如果重新定义,会出现“静态绑定”,只有声明为虚函数才能实现“动态绑定”。2.条款7“为多态基类声明虚析构函数”是本条款要求的特例:派生类可能有更多的成员变量和相应操作,因而析构函数必须与基类不同,采用虚析构函数的方法可以使用“动态绑定”从而产生安全的析构行为;反之,如果声明为非虚析构函数,必须重新定义,这和本条款的要求相违背。

2012-08-20 11:17:27 497

空空如也

空空如也

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

TA关注的人

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