- 博客(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 303
原创 Java和C++多态的区别
1:构造函数或者析构函数中有虚函数的场景 C++中,此时不产生动态联编,即此时调用的肯定是积累的虚函数 而JAVA中依然产生动态联编,此时调用的是对应子类的虚函数。 2:C++中覆盖的场景要求父类和子类的函数声明完全相同,而JAVA中子类的对应函数返回值可以是子类的类型 3:上述第1条,若涉及到变量读值,若变量没有赋值的话,则使用初始值(一个类中的成员变量构造顺序为:static块(stat
2015-12-20 15:14:02 291
原创 读书笔记--JAVA对象初始化
1 构造函数可以调用另外一个构造函数,但是要保证被调用的构造函数必须在调用者的{}内部开始处。这也意味着,构造函数内部不能调用俩或更多的构造函数。 2 在类定义的时候也可以初始化(称之为自动初始化),这个初始化的顺序是在构造函数之前的。 3 即构造函数之前,若成员对象声明引用的时候即被new了一个类对象时,此时即可初始化。 4 静态成员的初始化方法和普通成员一致 5 当类中有静态成员和非静态
2015-12-16 17:15:35 212
原创 读书笔记--JAVA对象初始化
1 构造函数可以调用另外一个构造函数,但是要保证被调用的构造函数必须在调用者的{}内部开始处。这也意味着,构造函数内部不能调用俩或更多的构造函数。2 构造函数初始化类的成员变量之前,在类定义的时候也可以初始化(称之为自动初始化),这个初始化的顺序是在构造函数之前的。3 即构造函数之前,若成员对象声明引用的时候即被new了一个类对象时,此时即可初始化。4 静态成员的初始化方法和普通成员一致5 当类中
2015-12-16 17:14:43 99
原创 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 217
原创 design pattern
单例模式建造者模式中介模式MVC模式观察者模式 实际上,使用的vconf等就是观察者模式的体现。 观察者注册vconf变化函数,当cconf变化的时候,变化函数被调用到。工厂模式
2015-11-15 20:21:57 108
原创 OS,设计模式
进程间通信管道信号信号量共享内存socketmmap虚拟内存僵尸进程 孤儿进程 Observer, Strategy, Composite and Singleton, Factory, Decorator
2015-11-09 13:37:32 363
原创 C++,数据结构
项目经验相关:逐条分析C++:1 构造函数和析构函数可以调用虚函数,此时没有动态联编。2 智能指针是怎么实现的,你来实现一个智能指针。在构造函数里进行指针赋值,析构里delete。其实还有很多的,比如实现get方法,拷贝构造函数、赋值运算符行为。static_cast,const_cast,dynamic_cast区别,没有问reinterpret_cast。第一个
2015-11-09 13:35:45 100
原创 智能指针小结
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 181
原创 1:const static 重载 覆盖隐藏 等知识点总结(更新)。
测试环境 VS2013 主要描述下自己工作中容易混淆的点。const 1- 不能只基于返回值是否为const来进行重载,换句话说,重载和返回值无关,即是否重载时不看函数返回值(包括返回值加了const和static限定时也不会构成重载条件) 因为当调用foo(1)的时候,编译器不知道是不是要把返回值置为const。 2- 不能只基于形参列表中的形参是否限定为const进行重载。因为
2015-10-30 09:29:33 303
原创 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 172
转载 自旋锁 互斥锁 读写锁 递归锁
这几个锁的概念各有交叉,容易混淆互斥锁(mutexlock):最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠等待锁释放时被唤醒自旋锁(spinlock):同样用来标记只能有一个线程访问该对象,在同一线程多次加锁操作会造成死锁;使用
2015-10-27 10:16:58 325
转载 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 217
原创 python 学习小结
记录容易和已有知识混淆的部分。print('xxx')打印的时候,如果前面加r代表不转义;如果''换为''' '''表示支持多行输出。二者可混用。
2015-10-16 10:22:31 135
原创 常用排序算法源代码(快排,插入排序,堆排序,冒泡等)
备忘用~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 381
原创 二叉树的分层遍历(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 265
原创 二叉树打印所有的路径 & 根据数组构建完全二叉树
这道题目暂时没想起来怎么用递归去做,就用非递归吧。 这道题目是的地址是https://leetcode.com/problems/binary-tree-paths/ 主要是用了一个vector来保存节点信息,这个节点信息是对原来节点信息的封装, 增加了两个单独的参数,这两个参数表示“左右子树是不是存在以及是不是访问过” 默认值是-1,取0表示有子树且没有访问过,取1表子树已经访问过。 基
2015-09-17 10:10:27 463
原创 几个找数字的小题目
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 233
原创 数组奇偶重排
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 397
原创 微软2014校园招聘笔试试题的编程题
笔试题见微软2014校园招聘笔试试题 这里主要写一下最后一道题。 主要分三步: 1:通过“两步走 一步走”的方法,找到中间点或者前半列的最后一个点(偶数个数时) 2:“1”中的点之后的所有点顺次入栈。 3:只要栈不为空,依次出栈然后按题目要求改点指针。 点结构为:struct Node{ int val_; Node* next; Node(int x) :v
2015-09-14 15:08:06 217
原创 移动字符串和字符串删除
两个小题目。 一个是:字符串里面只有字母和星号,要求把星号移动最左边,字母移动到最右边,要求复杂度尽可能低。 比如“a*b*c*d*”移动之后成为”****abcd” 这个题目有两个方法,首先就是暴力解法。从串尾或者串首判断(假设串尾),如果是星号则移动到串首起第一个不是星号的位置,然后把从那个位置开始的串统统后移一位到星号处。复杂度应该是 平方级。 这个方法的劣势就在于字母移动的位置可能不
2015-09-14 13:23:57 291
原创 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 179
原创 数组子串的最大乘积
和数组子串的最大和 类似,数组子串的最大乘积也有两种求值方法。 对应的,之前的判断和改为判断积;之前的跟‘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 276
原创 杨氏矩阵搜索
杨氏矩阵,即存在一个矩阵A[M][N]。 其中任意一行,从左到右是递增的;任意一列,从上到下是递增的。搜索一个数据是否在数组中,最直接的方法当然是一个个的找,复杂度为O(N*M)。 另外可以利用矩阵的特点来“二分查找”。考虑右上角的元素,对于这个元素而言,比它大的在下面,比它小的数据在左边。 因此可以拿这个数据和欲查找数据进行比较,若欲查找数据较大,则往下查找,否则往左查找。 也可以考虑左下
2015-09-09 17:48:33 174
原创 杨氏矩阵搜索
杨氏矩阵,即存在一个矩阵A[M][N]。 其中任意一行,从左到右是递增的;任意一列,从上到下是递增的。搜索一个数据是否在数组中,最直接的方法当然是一个个的找,复杂度为O(N*M)。 另外可以利用矩阵的特点来“二分查找”。考虑右上角的元素,对于这个元素而言,比它大的在下面,比它小的数据在左边。 因此可以拿这个数据和欲查找数据进行比较,若欲查找数据较大,则往下查找,否则往左查找。 也可以考虑左下
2015-09-09 17:47:24 78
原创 读书笔记之 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 193
原创 最大子数组和(最大子序列和 | 连续子数组最大和)
理论部分见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 241
原创 最近看编程之美的一些心得(不断更新)
排序复杂度: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 262
原创 4: linux服务器网络编程模型小结(学习笔记)
内容主要引用:http://www.cricode.com/3510.html主要是五种模型一:纯粹的socket调用,单进程,单线程缺陷:1:当没有客户端链接时,accept阻塞2:当客户端1链接上但是没有发送数据时,read阻塞导致客户端2无法链接。即无法响应多客户端情况二:多线程在accept到一个新的链接时,新开启一个线程用于处理数据。
2015-05-24 18:46:47 211
原创 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 561
原创 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 207
原创 1:const static 重载 覆盖隐藏 等部分知识点总结。
const 1 不能只基于返回值是否为const来进行重载,换句话说,重载和返回值无关,即是否重载时不看函数返回值(包括返回值的const和static限定) 因为当调用foo(1)的时候,编译器不知道是不是要把返回值置为const。 2 不能只基于形参列表中的形参是否限定为const进行重载。因为对于foo(1),系统不知道调用形参是否限定了const的函数。3 可以只基于成员
2015-05-14 11:13:49 128
蚁群算法TSP模型C++代码
2012-09-24
如何在linux系统解析EXCEL文件?
2016-04-07
如何快速解析以分号相隔的字符串?
2016-04-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人