- 博客(26)
- 资源 (7)
- 收藏
- 关注
原创 Python中文编码过程中遇到的一些问题
首先,要明白encode()和decode()的区别。encode()的作用是将Unicode编码的字符串转换为其他编码格式。例如:st1.encode("utf-8") 这句话的作用是将Unicode编码的st1编码为utf-8编码的字符串decode()的作用是把其他编码格式的字符串转换成Unicode编码的字符串。例如:st2.decode("utf-8") 这句话的作用是
2014-06-24 23:34:55
1922
原创 局域网使用的IP地址范围
局域网可用的IP地址范围为: A类地址:10.0.0.0 - 10.255.255.255 B类地址:172.16.0.0 - 172.31.255.255 C类地址:192.168.0.0 -192.168.255.255 以上IP是都是属于局域网,但不一定是同一个局域网。要检测两台电脑是否在同一个局域网,可以再一台电脑上ping另外一台电脑的IP.能ping
2014-05-31 23:59:54
17010
原创 在VC++中怎样改变控件间的TAB切换顺序?
在编辑界面按下ctrl+D键,就会出现所有控件的Tab键顺序,按照自己想要的顺序依次点击控件,就可以重新安排顺序。
2014-01-17 20:07:18
2066
原创 N皇后问题解法及解的个数
1、将第一个皇后放置在第一行的第一个空格里 2、对于第二行,从第一个空格开始寻找不与第一行的皇后冲突的空格。找到的第一个不冲突的空格是第2个。 3、对于第三行,这时已经找不到与之前放置的两个皇后不冲突的空格了。把当前行恢复初始状态,返回到上一行。 4、在当前行皇后所占的空格之后寻找一个不与之前皇后冲突的位置。有两种情况,如果找打了则把当前行的皇后移动到该位置,然后处理下一行。如果直到最后当前行的最后一个空格也没有找合适的位置,则把当前行恢复初始状态,继续回溯到上一行。 5、把最后一个皇后成功安置在最
2014-01-04 22:08:43
36641
14
原创 VS2008无法执行添加/移除操作,因为代码元素"***"是只读的
有时候在给某个控件添加事件处理函数时会遇到这样的问题“无法执行添加/移除操作,因为代码元素"***"是只读的” 搜了下往上的解决方法,可行的方法是:关闭工程,打开你的工程文件夹,删除.ncb文件然后重新打开工程即可。
2013-12-15 16:05:12
1801
原创 VS2008恢复默认界面设置
经常不小心改变了VS2008的界面设置,一个个的拖回去很麻烦。有什么方法恢复VS的默认环境设置呢?网上查了下这个方法很好用!tools(工具)---->import and export settings wizard(导入导出设置)---> reset all settings (重置所有设置)--->保存设置/仅重置设置--->选择visual c++ development settings(重置为visual c++开发设置)--->完成!
2013-12-03 20:23:19
5513
原创 求二叉树的深度和宽度
二叉树的深度:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。二叉树的宽度:二叉树的每一层中都有一定数量的节点,节点数最多的那一层的节点数叫做二叉树的宽度。假设二叉树的节点有如下数据结构:struc Node{int num;Node* pLeft;Node* pRight;}1)求二叉树的深度根据刚才对二叉树深度的说明
2013-10-18 20:18:34
7274
原创 按层遍历二叉树(队列实现)
按层遍历二叉树的思路: 1)创建一个队列用于保存指向Node节点的指针 2) 每遇到一个节点就遍历该节点,然后将该节点不为空的孩子压入栈中 3) 从栈中取出一个节点,回到第二步
2013-09-13 22:10:18
1336
原创 两种方式遍历二叉树--递归方式和非递归方式
用递归的方法遍历二叉树很简单,但是非递归的遍历二叉树就比较困难了。在非递归方法中,我们需要栈stack的帮助。以下是分别用递归方式和非递归方式写的前、中、后序遍历二叉树的方法,经过验证结果是正确的。
2013-09-11 23:07:02
1208
原创 单件模式(Singleton Pattern)之C++实现
单件模式确保一个类只有一个实例,并提供一个全局访问点。#include #include using namespace std;class Singleton{public: static Singleton* GetInstance(); void print(); void write(string strTmp);private: Singleton(); sta
2013-09-07 10:01:45
927
原创 设计模式之装饰者模式Decorator Pattern
近来在读《Head first设计模式》这本书,感觉很不错只是书中的代码是用Java写的。因为我熟悉的是C++,于是自己写了C++的例子程序。首先说说我的感受吧,学C++的话,先看《C++ Primer》搞明白了C++的各种语法,对封装、继承、多态有初步的认识。然后学点设计模式,设计模式是针对具体事例的解决方案,是前人编程的经验,很值得借鉴! 说个具体事例吧,在买电脑的时候我们通
2013-08-18 00:49:26
1186
原创 c++参数传递的三种方式
c++参数传递的三种方式1、按值调用: 形如 int fun(int x)2、指针调用:形如 int fun(int* p)3、引址调用:形如 int fun(int &x) 或者 int fun(const int &x)
2013-07-11 22:41:49
1102
原创 C++之explicit
C++中允许一种特殊的声明比变量的方式。在这种情况下,可以将一个对应于构造函数参数类型的数据直接赋值给类变量。编译器在编译时会自动进行类转换,将对应于构造函数参数类型的数据转换为类的对象。但是这种宽松的规则会破坏代码的可读性,并导致难以发现的错误。其实只要在构造函数前加上explicit则会禁止这种自动转换。要注意的是explicit只对构造函数起作用。 下面来举例说明。#inclu
2013-07-10 21:35:05
966
原创 Linux shell 脚本中变量的数学计算
首先从一个例子说起:x=1+1echo $x你是不是期待着输出2啊?让你失望了,这样输出的结果是1+1。为什么呢?这是因为在shell script中变量类型默认为“字符串”,所以若不指定变量类型,1+1是一个“字符串”而不是“计算式”。那么怎么得到我们想要的结果呢?方法很多,但是总结起来就是两种,一种就是生命变量的类型。另一种是对特定的计算式进行处理。1)首先看第一类方法:
2013-06-28 11:08:42
8622
原创 Linux下五个字符转换命令:tr,col,join,paste,expand
Linux中常用的字符转换命令有:tr,col,join,paste,expand。(1)tr:可以用来删除一段信息当中的文字,或者是进行文字信息的转换。 a) tr 'SET1' 'SET2' tr的默认操作是替换, 作用是把标准输入中含有的SET1中的字符依次换成SET2中对应的字符。例如:echo "Hello, Kevin" | tr 'a-z' 'A-Z'输出结果是
2013-06-22 21:43:28
1406
原创 Linux五个文件查找命令--which、whereis、find、locate和type
Linux下常用的文件查找命令有which、whereis、find、locate和type。在这里不涉及具体的用法,只是对比下它们之间的区别。which:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。当加上-a参数时返回所有查找结果。whereis: 只能用于程序名的搜索,而且只会搜索二进制文件(-b),manual路径下的说明文件(-m),
2013-06-19 22:39:25
1212
原创 浅谈C++内存分配
C++内存分配由五个部分组成:栈、堆、全局代码区、常量区、程序代码区。如下图所示:1、栈区:函数中定义的局部变量放在栈中,函数执行结束时存储单元自动释放。栈内存分配一般采用寄存器来存取,存取效率高但是内存容量有限。2、堆区:通常在堆中进行动态分配。程序运行的时候用new或malloc申请一定大小的内存,用delete或free释放之前申请
2013-06-18 19:46:52
1212
原创 聊聊C++中复制构造函数和赋值操作符
复制构造函数:只有单个形参,而且形参是对本类类型对象的引用(常用const修饰),这样的构造函数称为复制构造函数。与默认构造函数一样,复制构造函数可由编译器隐式调用。复制构造函数可以用于:根据另一个同类型的对象显式或隐式初始化一个对象复制一个对象,将它作为实参传给一个函数从函数返回时复制一个对象初始化顺序容器中的元素根据元素初始化列表初始化数组元素赋值操作符:与复制构造函数一样,如
2013-06-16 11:48:23
771
原创 C++对象占多大内存?
前几天被问到,在C++里建立一个空类什么都成员没有,它占多大内存?我一下子懵掉了,还真没想过这个问题。后来查了下资料终于明白了,且听我慢慢道来。首先我们看一下这个测试程序:#include using namespace std; class Test{};main(){ Test t; cout<<"size :"<<sizeof(t)<<endl;}输出结
2013-06-15 15:22:52
2675
原创 C++中函数重载、覆盖与隐藏的区别
重载(overload):指函数有不同的参数表,对同名函数的名称做修饰,然后这些同名函数就构成了不同的函数。在同一可访问区域内被声明的几个具有不同参数列表(参数的类型,个数,顺序不同)的同名函数,程序会根据不同的参数列表来确定调用哪个函数。对于重载函数的调用,在编译期间就已经确定,是静态的,它们的地址在编译期间就绑定了与多态无关。另外,重载不关心函数的返回类型。1) int test(int
2013-06-13 21:13:01
1146
原创 逗号表达式
逗号表达式的表现形式如下:表达式1,表达式2,表达式3,......表达式n这里要注意的是:1)逗号表达式的运算顺序是从左向右2)整个表达式的值是最右边的表达式的值3)逗号操作符的优先级在所有运算符中是最低的相信逗号表达式并不难,只是大家经常忽略它。下面看一个网传的笔试题:int i=(j=4,k=8,l=16,m=32);printf("%d",i);
2013-06-13 18:33:45
824
原创 malloc、free和new、delete的区别
首先应当明确的是malloc 和free搭配使用,new和delete搭配使用,最好搭配使用否则容易造成内存泄露!malloc/free 是在C语言头文件中定义的原型为:void * malloc(size_t size): 动态配置内存,大小由size决定,返回值成功时为任意类型指针,失败时为NULL。void free(void *ptr):释放动态申请的内存空间,调用free(
2013-06-12 20:19:15
833
原创 开博宣言
大家好,我是Kevin。接连被多家IT公司拒之门外,我终于下定决心开个博客督促自己学习。我会在这里把自己的学习感悟写出来,欢迎各位指导!
2013-06-06 15:09:32
604
基于UDP的仿QQ客户端
2013-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人