自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(36)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 计算机图书

一:语言类1.1 C++/JAVA/1 C和指针,阅读CARM和TCPL 2 《深入探索C++对象模型》 3 **自学脚本语言pathon 目标: 网络 邮件客户端 爬虫小程序**等 others 1 重读WritingSolid Code、Elements of Programming、Practice of programming 2,阅读Science

2015-12-30 08:42:10 270

原创 Java和C++多态的区别

1:构造函数或者析构函数中有虚函数的场景 C++中,此时不产生动态联编,即此时调用的肯定是积累的虚函数 而JAVA中依然产生动态联编,此时调用的是对应子类的虚函数。 2:C++中覆盖的场景要求父类和子类的函数声明完全相同,而JAVA中子类的对应函数返回值可以是子类的类型 3:上述第1条,若涉及到变量读值,若变量没有赋值的话,则使用初始值(一个类中的成员变量构造顺序为:static块(stat

2015-12-20 15:14:02 252

原创 读书笔记--JAVA对象初始化

1 构造函数可以调用另外一个构造函数,但是要保证被调用的构造函数必须在调用者的{}内部开始处。这也意味着,构造函数内部不能调用俩或更多的构造函数。 2 在类定义的时候也可以初始化(称之为自动初始化),这个初始化的顺序是在构造函数之前的。 3 即构造函数之前,若成员对象声明引用的时候即被new了一个类对象时,此时即可初始化。 4 静态成员的初始化方法和普通成员一致 5 当类中有静态成员和非静态

2015-12-16 17:15:35 188

原创 读书笔记--JAVA对象初始化

1 构造函数可以调用另外一个构造函数,但是要保证被调用的构造函数必须在调用者的{}内部开始处。这也意味着,构造函数内部不能调用俩或更多的构造函数。2 构造函数初始化类的成员变量之前,在类定义的时候也可以初始化(称之为自动初始化),这个初始化的顺序是在构造函数之前的。3 即构造函数之前,若成员对象声明引用的时候即被new了一个类对象时,此时即可初始化。4 静态成员的初始化方法和普通成员一致5 当类中

2015-12-16 17:14:43 73

原创 C++和JAVA申请数组的一点区别

目前在学习JAVA,随笔一写,若您发现错误欢迎指出,谢谢。 C++: type * p = new type(value);//对应的调用构造函数,对于基本类型而言则是直接赋值。 //申请一维数组,后面不能再加(value)了 type *p= new type[size]; //申请二维数组 type **p = new *type[row size]; p[i] = new

2015-12-02 11:40:09 188

原创 design pattern

单例模式建造者模式中介模式MVC模式观察者模式   实际上,使用的vconf等就是观察者模式的体现。   观察者注册vconf变化函数,当cconf变化的时候,变化函数被调用到。工厂模式

2015-11-15 20:21:57 84

原创 OS,设计模式

进程间通信管道信号信号量共享内存socketmmap虚拟内存僵尸进程  孤儿进程 Observer, Strategy, Composite and Singleton, Factory, Decorator

2015-11-09 13:37:32 311

原创 C++,数据结构

项目经验相关:逐条分析C++:1 构造函数和析构函数可以调用虚函数,此时没有动态联编。2 智能指针是怎么实现的,你来实现一个智能指针。在构造函数里进行指针赋值,析构里delete。其实还有很多的,比如实现get方法,拷贝构造函数、赋值运算符行为。static_cast,const_cast,dynamic_cast区别,没有问reinterpret_cast。第一个

2015-11-09 13:35:45 74

原创 智能指针小结

1. auto_ptr 1> 属于STL的一部分 2>使用时不能使用”operator=”运算符,因为会剥夺所有权。 即:std::auto_ptr<sample> auto1(new sample);std::auto_ptr<sample> auto2 = auto1;此时auto1不能再调用接口。 3>auto_ptr 对象在执行完release函数之后并没有实际

2015-11-04 20:57:13 155

原创 1:const static 重载 覆盖隐藏 等知识点总结(更新)。

测试环境 VS2013 主要描述下自己工作中容易混淆的点。const 1- 不能只基于返回值是否为const来进行重载,换句话说,重载和返回值无关,即是否重载时不看函数返回值(包括返回值加了const和static限定时也不会构成重载条件) 因为当调用foo(1)的时候,编译器不知道是不是要把返回值置为const。 2- 不能只基于形参列表中的形参是否限定为const进行重载。因为

2015-10-30 09:29:33 269

原创 C++11部分特性总结

C++11在G++ 4.6上不支持,4.7则支持,但是需要编译的时候加上选项’-std=c++11’ 即‘g++ -std=c++11 test.cpp -o test’void func(int z){ cout << "int"; }void func(int *z){ cout << "int*"; }void sumf(int &x){ cout << x; }class foo{pu

2015-10-29 13:32:24 147

转载 自旋锁 互斥锁 读写锁 递归锁

这几个锁的概念各有交叉,容易混淆互斥锁(mutexlock):最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠等待锁释放时被唤醒自旋锁(spinlock):同样用来标记只能有一个线程访问该对象,在同一线程多次加锁操作会造成死锁;使用

2015-10-27 10:16:58 301

转载 GitHub上README.md教程

http://blog.csdn.net/kaitiren/article/details/38513715最近对它的README.md文件颇为感兴趣。便写下这贴,帮助更多的还不会编写README文件的同学们。README文件后缀名为md。md是markdown的缩写,markdown是一种编辑博客的语言。用惯了可视化的博客编辑器(比如CSDN博客,囧),这种编程式的博客编辑方

2015-10-23 10:38:16 180

原创 复习概要-网络和数据库

11

2015-10-19 17:59:15 112

原创 python 学习小结

记录容易和已有知识混淆的部分。print('xxx')打印的时候,如果前面加r代表不转义;如果''换为''' '''表示支持多行输出。二者可混用。

2015-10-16 10:22:31 111

原创 常用排序算法源代码(快排,插入排序,堆排序,冒泡等)

备忘用~void swap(int &x, int &y){ x = x^y; y = x^y; x = x^y;}O(N*N)的三大算法 (一)选择排序 核心思想,每次用后面m个元素中查找最小的放在当前m个元素的第一个位置上。void selecttsort(int *a, int n){ for (int i = 0; i < n - 1; ++i)

2015-10-12 11:23:01 342

原创 二叉树的分层遍历(BFS)

这个题目用队列做,非常简单 1 充分利用了队列先入先出的概念 2 递归的终止条件就是‘if (seq.size())’的size,其为0时,不会进一步递归。void _seqTreeBylevel(queue<TreeNode *> &seq) { int size = seq.size(); for (int i = 0; i < size; ++i) {

2015-09-17 10:51:03 234

原创 二叉树打印所有的路径 & 根据数组构建完全二叉树

这道题目暂时没想起来怎么用递归去做,就用非递归吧。 这道题目是的地址是https://leetcode.com/problems/binary-tree-paths/ 主要是用了一个vector来保存节点信息,这个节点信息是对原来节点信息的封装, 增加了两个单独的参数,这两个参数表示“左右子树是不是存在以及是不是访问过” 默认值是-1,取0表示有子树且没有访问过,取1表子树已经访问过。 基

2015-09-17 10:10:27 442

原创 几个找数字的小题目

N+1个数字,其中有一个是重复的,要求找出来。 方法:累加后的和减掉1~N的和就是重复的那个数字。 方法2:使用bitmap或者hash表1~N中缺少一个数字,要求找出来 方法1:累加后的和被1~N来减,就是那个数字 方法2:hash表。N个数字是偶数对出现的,有个数字是单独出现的,要求找出来。 方法:所有数字进行异或,最后的值就是那个数字(a^a = 0)N个数字是偶数对出现的,有两个数

2015-09-15 21:09:24 206

原创 数组奇偶重排

bool check(int x)//{ return (x & 0x01)? false : true;}void swap(int &x, int &y){ x = x^y; y = x^y; x = x^y;}void move(int *p, int len){ if (p == NULL || len <= 0)return;

2015-09-15 16:38:39 364

原创 微软2014校园招聘笔试试题的编程题

笔试题见微软2014校园招聘笔试试题 这里主要写一下最后一道题。 主要分三步: 1:通过“两步走 一步走”的方法,找到中间点或者前半列的最后一个点(偶数个数时) 2:“1”中的点之后的所有点顺次入栈。 3:只要栈不为空,依次出栈然后按题目要求改点指针。 点结构为:struct Node{ int val_; Node* next; Node(int x) :v

2015-09-14 15:08:06 194

原创 移动字符串和字符串删除

两个小题目。 一个是:字符串里面只有字母和星号,要求把星号移动最左边,字母移动到最右边,要求复杂度尽可能低。 比如“a*b*c*d*”移动之后成为”****abcd” 这个题目有两个方法,首先就是暴力解法。从串尾或者串首判断(假设串尾),如果是星号则移动到串首起第一个不是星号的位置,然后把从那个位置开始的串统统后移一位到星号处。复杂度应该是 平方级。 这个方法的劣势就在于字母移动的位置可能不

2015-09-14 13:23:57 263

原创 string to int 字符串转为整数

关键点判断 1:空指针 2:空格排除 3:正负号过滤 4:异常字符终止 5:越界时只返回最大值。 其中正数最大值为int num = (unsigned )~0>>1 负数最大值为 -num-1;int myAtoi(char* str) { // null if (str == NULL) return 0; // space whi

2015-09-10 15:42:33 162

原创 数组子串的最大乘积

和数组子串的最大和 类似,数组子串的最大乘积也有两种求值方法。 对应的,之前的判断和改为判断积;之前的跟‘0’比较变成跟‘1’比较(若A>1,则AB比A大,否则比A小),对应代码为:#include <iostream>using namespace std;double d[7];double End[7];double maxsub(double *p, int len){ if

2015-09-09 20:44:01 250

原创 杨氏矩阵搜索

杨氏矩阵,即存在一个矩阵A[M][N]。 其中任意一行,从左到右是递增的;任意一列,从上到下是递增的。搜索一个数据是否在数组中,最直接的方法当然是一个个的找,复杂度为O(N*M)。 另外可以利用矩阵的特点来“二分查找”。考虑右上角的元素,对于这个元素而言,比它大的在下面,比它小的数据在左边。 因此可以拿这个数据和欲查找数据进行比较,若欲查找数据较大,则往下查找,否则往左查找。 也可以考虑左下

2015-09-09 17:48:33 150

原创 杨氏矩阵搜索

杨氏矩阵,即存在一个矩阵A[M][N]。 其中任意一行,从左到右是递增的;任意一列,从上到下是递增的。搜索一个数据是否在数组中,最直接的方法当然是一个个的找,复杂度为O(N*M)。 另外可以利用矩阵的特点来“二分查找”。考虑右上角的元素,对于这个元素而言,比它大的在下面,比它小的数据在左边。 因此可以拿这个数据和欲查找数据进行比较,若欲查找数据较大,则往下查找,否则往左查找。 也可以考虑左下

2015-09-09 17:47:24 62

原创 二分查找(递归和非递归)

二分搜索

2015-09-09 16:03:14 177

原创 读书笔记之 LCS 最大公共序列

LCS最大公共序列,即A,B字符串中的最大公共部分,可以是不连续的。这块代码分为两部分,两部分的时间复杂度是一样的,都是O(N*N),空间复杂度有不同假设dij为A字符串取i个字符,B字符串取j个字符后对应俩字符串的LCS的长度。那么:当i=0或者j=0的时候,显然dij=0;i!=0且j!=0,并且a[i]=b[j],此时dij=d(i-1)(j-1)+1;i!=

2015-09-05 16:24:55 173

原创 最大子数组和(最大子序列和 | 连续子数组最大和)

理论部分见http://www.ahathinking.com/archives/120.html下面为个人代码#include #include #include #includeusing namespace std;int maxsub(int *p, int len){ int sum = *p; int maxsum = *p; for(int i =1;i

2015-08-30 22:04:08 218

原创 最近看编程之美的一些心得(不断更新)

排序复杂度:O(N²),O(N*logN),O(N)查找负责度:O(N),O(logN),O(1)其中排序复杂度为N²的为直接排序,选择排序,希尔排序NlogN的为归并排序,快速排序和堆排序N的一般是做hash或者通过bitmap,布隆过滤器等。如果考虑到提高排序效率,则提高到log级别时,要考虑二分法排序;提高到O(N)级别则考虑bitmap或者hash了。

2015-08-30 21:59:52 245

原创 把二元查找树转变成排序的双向链表

把二元查找树转变成排序的双向链表

2015-08-30 12:45:12 156

原创 5 DB

1 http://www.w3school.com.cn/sql/sql_quickref.asp

2015-06-11 09:45:03 174

原创 4: linux服务器网络编程模型小结(学习笔记)

内容主要引用:http://www.cricode.com/3510.html主要是五种模型一:纯粹的socket调用,单进程,单线程缺陷:1:当没有客户端链接时,accept阻塞2:当客户端1链接上但是没有发送数据时,read阻塞导致客户端2无法链接。即无法响应多客户端情况二:多线程在accept到一个新的链接时,新开启一个线程用于处理数据。

2015-05-24 18:46:47 190

原创 3:sort函数如何自定义排序函数

主要总结形如sort函数如何自定义排序函数的问题。目前发现有四种方法:1:排序对象自定义“bool operator {.... return true or false;}2:自定义排序函数,保证形参返回值即可bool nameisnotimportant (const TYPE & a, const TYPE & b){.... return t

2015-05-15 10:29:16 526

原创 2:C C++混合编程

测试环境 VS2012。C调用C++1: c++接口头文件格式#ifndef XXX#define XXX#ifdef __cplusplusextern "C"{#endifC API #ifdef __cplusplus}#endif#endif然后对应的cpp文件中可以定义类或者调用其他文件中有类的头

2015-05-14 18:48:05 174

原创 1:const static 重载 覆盖隐藏 等部分知识点总结。

const 1 不能只基于返回值是否为const来进行重载,换句话说,重载和返回值无关,即是否重载时不看函数返回值(包括返回值的const和static限定)  因为当调用foo(1)的时候,编译器不知道是不是要把返回值置为const。 2 不能只基于形参列表中的形参是否限定为const进行重载。因为对于foo(1),系统不知道调用形参是否限定了const的函数。3 可以只基于成员

2015-05-14 11:13:49 101

蚁群算法TSP模型C++代码

研究生毕业时用到的蚁群算法来处理图像。 上传的源码为蚁群算法的经典TSP模型,打包下载后直接在vc中建立控制台工程即可。 处理蚁群算法的基于MFC IDE的代码可以另外联系我。

2012-09-24

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

TA关注的人

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