摘要:
最近一段时间阅读了muduo源码,读完的感受有一个感受就是有点乱。当然不是说代码乱,是我可能还没有完全消化和理解。为了更好的学习这个库,还是要来写一些东西促进一下。 我一边读一边尝试在一些地方改用c++11的新特性,这个工作持续在进行中。为啥这么干?没什么理由,纯粹是为了学习。 注:本文的大部分代码 阅读全文
摘要:
本文是自己学习经验总结,有不正确的地方,请批评指正。 总结一下这一段时间来,有关网络编程的学习。我是从csapp的最后章节的Tiny HTTP服务器开始,以它为基础,改用不同的方式实现并发,包括进程、线程、线程池、I/O多路复用。所有代码见地址:https://github.com/xibaohe/ 阅读全文
摘要:
```cppint binarySearch(int a[], int key, int length){ int low = 0; int high = length - 1; while (low key) high = mid - 1; else return mid;// key found } return -(low + 1);// key not found}```是在其他地方无意间看到这个BUG的。这个BUG曾经存在于JDK中,参见[这里](http://googleresearch.bl... 阅读全文
摘要:
这篇文章没有太多的实际内容,简单记录下static的用法。顺便试一下用markdown来写文章。###1. **在函数中使用**我们都知道在一个函数中的变量是存储在**栈区**中,函数的每一次调用都伴随着变量的重新定义和销毁。如果在变量前面加上static关键字,这个变量就会在程序的静态存储区。这个变量只会在**第一次**调用函数的时候定义并初始化。当再次调用函数时,会保留上次的值。例子:```cppint showNum(){ static int num = 0; return num++;}int main(){ for(int i=0;if() << endl; ... 阅读全文
摘要:
很长时间都没写过博客了,主要是还没有养成思考总结的习惯,今天来一发。 我是重度拖延症患者,本来这篇总结应该是早就应该写下来的。一、虚函数表 C++虚函数的机制想必大家都清楚了。不清楚的同学请参看各种C++入门书籍。这里,我要讨论一下这个虚函数机制究竟是怎么实现的。虚函数主要是靠一张VTABLE来实现的,先来看看这个VTABLE在哪里。 首先我们看下面的代码: 1 class ClassA 2 { 3 public: 4 int m_data1; 5 int m_data2; 6 void vfunc1(){cout vfunc1(); 我们都知道如果是虚函数... 阅读全文
摘要:
一直想了解一下git,正好最近的有一个问题就是,实验室写的代码,怎么同步到自己宿舍的笔记本上面来。最开始想用dropbox,但是用VS的人都知道,工程文件里面会给你生成乱七八糟的很多东西,很占空间,dropbox好像没有选择同步某个文件的功能,只能同步某个文件夹。以前看过git,但是好久没用,隔了一俩个月就忘了。这里把常用的概念、命令做个笔记。 资料大部分来源于这里 1.文件的三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放... 阅读全文
摘要:
最近几天好好的研究了一下这个问题。问题本身就不多说了,求一串数字中的所有子串中,和最大的一个子串。例如: 输入:-10 5 2 3 4 -5 -23 3 7 -21 输出:14 5 4一、各种方法 方法1:maxsofar = 0for i = [0,n) for j = [i,n) sum = 0 for k =[i,j] sum += x[k] maxsofar = max(maxsofar,sum) 这是最直接最暴力的方法,我没有写,时间复杂度为O(n3),明显这里面有很多重复的运算,我们可以很容易的把时间复杂... 阅读全文
摘要:
最近花了点时间,把以前没做好的事情仔细整理了一下。一看时间,隔了有半年之久。惭愧惭愧。。。。其实以前都没有仔细考虑清楚到底是怎么样的事情,只是照着别人的思路把程序写下来而已,这几天重新做了几个实验,仔细考虑了一番。 一、以前的BUG 以前的结果中,图片中有一条横线,效果也感觉不对,其实是程序中的BUG。是在我的插值函数中:1 uchar *data1 = imageWater.data + y[0]*imageWater.step + x[0]*imageChannels;2 uchar *data2 = imageWater.data + y[0]*imageWate... 阅读全文
摘要:
Exercise 6:放大镜功能要求:在练习5的基础上,实现放大镜功能,放大场景中的任意部分;放大镜可以通过鼠标键盘进行控制;考察目的:对OpenGL坐标系变换的理解;我的思路就是,获取屏幕坐标,转换成opengl 坐标。移动glulookat到相应的位置,然后拉近摄像头距离,实现放大不过,不能是正交投影,正交投影下,照相机远近不能影响大小。特别坑爹,感觉肯定有其他方法实现。屏幕坐标的转换,参考http://nehe.gamedev.net/article/using_gluunproject/16013/pos就是转换后的结果 1 void GLPOS(int x,int y,GLdoubl 阅读全文
摘要:
1 #coding:utf8 2 from threading import Thread,Lock 3 from Queue import Queue,Empty 4 5 class Worker(Thread): 6 def __init__(self,threadPool): 7 Thread.__init__(self) 8 self.threadPool = threadPool 9 self.daemon = True10 self.state = None11 self.start() ... 阅读全文