- 博客(60)
- 资源 (8)
- 收藏
- 关注
原创 python实战之编码问题:中文!永远的痛
编码的思维图谱:也就是说文件没有编码之说,其实都是按二进制格式保存在硬盘中的,仅仅是在写入读取时须使用对应的编码进行处理,以便操作系统配合相关软件/字体,绘制到屏幕中给人看。所以关键问题是得知道原先这些字串数据是使用什么编码来编译的!但是在 Unicode之前都是使用类似对照表的形式来组织编码的,无法从串数据流本身统一解出不同的文字来。
2014-10-16 13:18:47
941
原创 python实战二:查看某网页是用什么编码的
编程环境:虚拟linux (windows 下 cygwin)识别某网页的编码方式,usage: python coding http://www.***.com测试结果:
2014-10-16 12:00:54
865
原创 [trouble shoot]atol和atoll
就最终的结果来看,其实就是一个小的错误。但定位错误的时间比较漫长了。。。背景:出错的代码是 一段运行在 linux 服务器上的程序,程序的主要功能是处理银行pos刷卡记录并做一些计算,最后汇总、格式化输出。该公司是和银行打交道的,接的项目都是银行的。第二天老板就给了我一个2000多行的纯c程序,一个测试出错的测试文档 和 出错的输出结果。由于历史的原因。。。。。该段程序
2014-10-10 16:01:36
1645
原创 堆内存和栈内存(待整理……)
参考:http://blog.youkuaiyun.com/abcjennifer/article/details/39780819未完待续……堆:顺序随意 栈:先进后出 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似
2014-10-04 20:12:34
853
原创 VS2010打开VS2013的项目
VS低版本打开高版本创建的项目时会提示"选择的文件是解决方案文件,但是用此应用程序的较新版本创建的,无法打开"低版本不能向上兼容。解决办法:1 修改sln文件: 用文本编辑器打开sln文件, Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013
2014-09-22 13:29:38
1318
原创 敏捷软件开发——开放—封闭原则(OCP)
由来:怎么样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一版本以后不断推出新的版本呢?bertrand meyer 在1988年提出的著名的开发—封闭原则(the open-closed princle)为我们提供了指引。遵循开放—封闭原则设计出的模块具有两个主要特征:1. “对于扩张是开放的”(open for extension) 这以为着模
2014-09-21 22:13:51
1038
原创 敏捷软件开发——单一职责原则(SRP)
定义:简单来说,单一职责原则(SRP)就是对对一个类而言,应该仅有一个引起它变化的原因。什么是职责? 在SRP中,职责 = a reason for change 。如果你能想到多于一个的动机去改变一个类,那么这个类就具有多于一个职责。 具体的例子可以看敏捷软件开发 p91 。 SRP是所有原则找那个最简单的之一,也是最难
2014-09-20 14:55:00
1018
原创 c++——继承类中的子对象和基类对象的初始化
为什么研究临时对象?主要是为了提高程序的性能以及效率,因为临时对象的构造与析构对系统开销也是不小的,所以我们应该去了解它们,知道它们如何造成,从而尽可能去避免它们。临时对象是可以被编译器感知的。下面的例子,可能有人认为"int temp"是"临时对象",但是其实不然,"int temp"仅仅是swap函数的局部变量。 #include void swap( int &a,
2014-09-16 14:25:01
4315
1
原创 class和struct有什么区别?
这里有两种情况下的区别。(1)C的struct与C++的class的区别。(2)C++中的struct和class的区别。在第一种情况下,struct与class有着非常明显的区别。C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数。例如下面的C代码片断: struct Point {
2014-09-14 21:55:35
769
原创 C++ 中explicit关键字
explicit用来防止由单参数构造函数定义的隐式转换。或者有2个参数的构造函数,但有一个参数设置了默认值。先扫盲下什么是隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。eg:class things{ public: things(string &name = ""): m_nam
2014-09-14 10:55:45
961
原创 模版的特化和偏特化
模版的特化与偏特化 Partial Template Specialization能够让你在模板(Template)的所有可能的实体中特化出一组子集. 1.模板的特化(template specialization): 例如,定义如下的一个模板: template class Widget { ... 泛化实现
2014-09-13 18:44:28
698
原创 函数对象
定义:函数对象,顾名思义,行为类似函数的对象叫做函数对象,它定义了 调用操作符的类优点:首先,因为对象可以在内部修改而不用改动外部接口,因此设计更灵活,更富有弹性。函数对象也具备有存储先前调用结果的数据成员。在使用普通函数时需要将先前调用的结果存储在全程或者本地静态变量中,但是全程或者本地静态变量有某些我们不愿意看到的缺陷。其次,在函数对象中编译器能实现内联调用,从而更进一步增
2014-09-13 16:18:05
851
原创 敏捷软件开发——一个例子:copy程序
应用程序中有3个模块,或者子程序。copy模块调用另外两个模块。copy从read keyboard中获取字符,并把字符传递给write printer模块。。。。。需求在变化: 希望copy可以从纸带读入机中读入信息:如果变量值为false,就像以前一样从键盘读取信息。槽糕的是,现在已有许多其他程序正在使用copy程序,你不能改变copy程序的接口。改变接口会导致长时间的重新编译和
2014-09-10 20:23:12
1417
原创 敏捷软件开发——项目版本迭代
开发人缘和客户决定迭代规模,一般需要两周。同样地,刻骨选择他们想要在首次迭代中实现的素材(功能)。他们不能选择与当前开发速度不符的更多的素材。 迭代期间用户素材的实现顺序属于技术决策范畴,开发人员采用最具有技术意义的顺序来实现这些素材、可以串行的实现,完成了一个再完成下一个,或者分摊这些素材,然后一起并行地开发。 一旦迭代开始,客户就不能再开遍该迭代期间需要实现的素材。除了
2014-09-04 22:45:04
3913
原创 敏捷软件开发——重构篇
代码往往会腐化。 随着一个又一个新特性的添加,处理一个有一个的错误,代码的结构逐渐退化。如果对此置之不理的话, 这种退化最终会导致纠结不清,难于维护的混乱代码。 xp(极限编程 eXtreme Programming)团队通过经常性的代码重构来扭转这种退化。重构就是在不改变代码行为的前提下,进行一系列小的修改,旨在改进系统结构。每个改造都是微不足道的,几乎不值得去做,但是所有
2014-09-04 22:14:32
1843
原创 gas_station——leetcode
class Solution {public: int canCompleteCircuit(vector &gas, vector &cost) { int len = gas.size(); int tank_all = 0; int pos = 0; int tank_cur =0; for (int i = 0; i < len; i++){ int tank
2014-09-04 15:35:53
657
原创 *candy——leetcode
/* There are N children standing in a line. Each child is assigned a rating value.You are giving candies to these c
2014-09-04 10:15:11
671
原创 敏捷软件开发之原则篇
1、我们最优化先要做的是通过尽早的、持续的交付有减脂的软件来使客户满意。2、即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。3、经常性地交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好。4、在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。5、围绕被激励起来的个人构建项目。给他们踢空所需的环境和支持,并且信任他们能够完成工
2014-09-04 10:07:52
1041
1
原创 single number i
Given an array of integers, every element appears twice except for one. Find that single one.class Solution {//using xor bit manipulationpublic: int singleNumber(int A[], int n) {
2014-09-02 17:32:28
535
原创 Single Number II
Given an array of integers, every element appears three times except for one. Find that single one.#include#include#includeusing namespace std;#define STOP system("pause")#if 0class Soluti
2014-09-02 17:27:01
675
原创 Copy List with Random Pointer -- LeetCode
#includeusing namespace std;#define STOP system("pause")struct RandomListNode { int label; RandomListNode *next, *random; RandomListNode(int x) : label(x), next(NULL), random(NULL) {}};class
2014-09-02 13:51:51
423
原创 C++11—引入nullprt
1. 引入nullptr的原因引入nullptr的原因,这个要从NULL说起。对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价。NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(macro)。1.1 NULL在C中的定义在C中,习惯将NULL定义为void*指针值0:[cpp] view plai
2014-09-02 10:39:18
702
原创 ★ Linked List Cycle II -- LeetCode
证明单链表有环路:本文所用的算法 可以 形象的比喻就是在操场当中跑步,速度快的会把速度慢的扣圈 可以证明,p2追赶上p1的时候,p1一定还没有走完一遍环路,p2也不会跨越p1多圈才追上 我们可以从p2和p1的位置差距来证明,p2一定会赶上p1但是不会跳过p1的 因为p2每次走2步,而p1走一步,所以他们之间的差距是一步一步的缩小,4,3,2,1,0 到0的时候就重合
2014-09-01 09:50:04
668
原创 Linked List Cycle [leetcode]
#include#include#includeusing namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} };class Solution {public: bool hasCycle(ListNod
2014-08-31 21:51:48
532
原创 链表的建立
fstream fin("test.txt"); ListNode* head(0); int val = 0; while (fin >> val){ if (head == NULL){ head = new ListNode(val); } else{ while (head->next != NULL) head = head->next; he
2014-08-18 16:10:51
589
原创 [leetcode]sort list
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };* Sort a linked list in O(n log n) time using const
2014-08-18 14:10:42
627
原创 static作用
(1)第一个作用:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容#include增加这条语句char a = ‘A‘; // global variablevoid msg() { printf("Hello\n"); }
2014-06-26 11:02:19
582
转载 快排多版本
前言: 相信,经过本人之前写的前俩篇关于快速排序算法的文章:第一篇、一、快速排序算法,及第二篇、一之续、快速排序算法的深入分析,各位,已经对快速排序算法有了足够的了解与认识。但仅仅停留在对一个算法的认识层次上,显然是不够的,即便你认识的有多透彻与深入。最好是,编程实现它。 而网上,快速排序的各种写法层次不清,缺乏统一、整体的阐述与实现,即,没有个一锤定音,如此,我便打算自己
2014-06-25 23:05:14
726
原创 快速排序-c++(分别用数组和容器实现)
/***********************************************************************版权所有 (C)2014, cheng yang。**文件名称:快速排序.cpp*内容摘要:无*其它说明:无*当前版本: V1.0*作 者:cheng yang*完成日期: 20140625** 版本 修改时间
2014-06-25 19:45:25
1184
原创 十进制转二进制-快速算法
#include#includeusing namespace std;int main(int agrc, char *agrv[]){ int iInPut = 0; while (cin >> iInPut) { string sBinary;//转换后的二进制存储为字符串,调用了默认构造函数初试化为空串 int temp = abs(iInPut); if (t
2014-06-24 22:59:30
4758
原创 堆-c++
/***********************************************************************版权所有 (C)2014, cy。**文件名称:堆.cpp *内容摘要:无*其它说明:无*当前版本: V1.0*作 者:cheng yang*完成日期: 20140624** 版本 修改时间 修改人
2014-06-24 21:47:12
636
原创 高效判断素数的算法
来求出小于等于n的所有的素数。 num = 0; for(i=2; i { for(j=2; j if( j%i==0 ) break; if( j>sqrt(i) ) prime[num++] = i; //这个prime[]是int型,跟下面讲的不同。 } 这就是最一般的求解n以内素数的算法。复杂度是o(
2014-06-23 20:00:07
757
原创 一种高效的求平均数的算法
#includeusing namespace std;int main(int agrc, char*agrv[]){ int x, n = 0; while (cin >> n) { double avg = 0; for (int i = 1; i <= n; i++) { cin >> x; avg += (x - avg) / i; } cou
2014-06-23 14:58:45
4638
Pattern_Recognition_and_Machine_Learning_(Solution_Manual)_-_Bishop
2014-09-05
PRML笔记-Notes on Pattern Recognition and Machine Learning
2014-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人