之前略有点偷懒,整个个人博客的更新也停止了很长时间。完成了硕士学位论文和毕业阶段,于是就很快进入了新的工作,也要为以后多作计划。
经过一番考虑,这一段准备更新一些之前落下的内容,例如毕设相关的一些技术知识,也准备学习一些新技术,会在这里记录一下自己的收获。OK!今天先到这里吧,继续努力!
之前略有点偷懒,整个个人博客的更新也停止了很长时间。完成了硕士学位论文和毕业阶段,于是就很快进入了新的工作,也要为以后多作计划。
经过一番考虑,这一段准备更新一些之前落下的内容,例如毕设相关的一些技术知识,也准备学习一些新技术,会在这里记录一下自己的收获。OK!今天先到这里吧,继续努力!
之前用一个txt记录自己的游戏生涯,不是很方便,想想还是发布在这里吧,许多一线的大作基本都是发布后几天就通关的,像最近的《蝙蝠侠:阿甘起源》,过几天还会有《战地4》和《使命召唤》的年度终极对决。
早些年的记录都没有保存下来,但是像使命召唤系列都是玩了很多遍的,这里的记录也不是很全,也算比较遗憾吧!
指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“. ”),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?
首先,要认识到在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。
“但是,请等一下”,你怀疑地问,“这样的代码会产生什么样的后果?”
char *pc = 0; // 设置指针为空值 char& rc = *pc; // 让引用指向空值
这是非常有害的,毫无疑问。结果将是不确定的(编译器能产生一些输出,导致任何事情都有可能发生)。应该躲开写出这样代码的人,除非他们同意改正错误。如果你担心这样的代码会出现在你的软件里,那么你最好完全避免使用引用,要不然就去让更优秀的程序员去做。我们以后将忽略一个引用指向空值的可能性。
题目:
在黑板上写上1,2,3,4,……,50这50个数字,只要黑板上还有两个或两个以上的数字,就随机选取两个数字a和b,擦除a和b,并写上 |a - b|,问最后黑板上剩下的那个数可能是哪些?
这次练习赛是Google针对2014校园招聘即将到来的一个上机测试进行的一次练习,一共三道题目,都不是很难,也主要是可以对系统有一个更好的了解。
先简单说一下Google CodeJam的这个系统,与我们通常的OnlineJudge主要的不同,是提交代码的方式,在我们写好解题代码后,需要下载系统随机提供的测试用例文件,利用自己的程序跑这个输入文件并得到相应的输出,然后上传自己代码和输出给系统去判断,总体来说是复杂了一些。
大家可以通过这个链接https://code.google.com/codejam/contest/2933486/dashboard去查看这次练习的具体题目和测试用例。
Problem A. Bad Horse
引用自http://stackoverflow.com/questions/1739259/how-to-use-queryperformancecounter
最近在做一个程序,要从Linux转移到windows下测试一下计算时间,我们知道在Linux下可以使用gettimeofday得到微妙级别的时间,使用方法先复习一下:
使用到的数据结构和函数原型如下:
struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* microseconds */ };
#include<sys/time.h> int gettimeofday(struct timeval *tv, struct timezone *tz);
在gettimeofday()函数中tv或者tz都可以为空。如果为空则就不返回其对应的结构体。在struct timeval中的tv_usec域我们可以得到微妙级别的时间。
函数执行成功后返回0,失败后返回-1,错误代码存于errno中。
接下来转入到Windows部分,利用高精度性能计数器来进行定时,具体方法如下:
下面两个函数是VC提供的仅供Windows 95及其后续版本使用的精确时间函数,并要求计算机从硬件上支持精确定时器。
QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数的原型如下:
BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); BOOL QueryPerformanceCounter(LARGE_INTEGER *lpCount);
最近Git在国内使用时偶尔会遇到被墙的情况,今天我就遇到了,导致无法更新自己的远端Git仓库,于是使用goagent来解决,浏览器端的代理配置很简单,相关goagent的wiki页面也有很详细的解释。
现在你应该可以在Terminal下利用Python运行goagent代理了,代理地址是 127.0.0.1:8087,下面就以使用goagent为例,介绍如何为git配置代理。
Git 目前支持的三种协议 git://
、ssh://
和 http://
,其代理配置各不相同:core.gitproxy
用于git://
协议,http.proxy
用于 http://
协议,ssh://
协议的代理需要配置 ssh 的 ProxyCommand
参数。
原文出处: 赛迪
Linux在内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上不占用实际物理内存;一级是具体的物理页面,它对应我们机器上的物理内存。
这里要提到一个很重要的概念,内存的延迟分配。Linux内核在用户申请内存的时候,只是给它分配了一个线性区(也就是虚存),并没有分配实际物理 内存;只有当用户使用这块内存的时候,内核才会分配具体的物理页面给用户,这时候才占用宝贵的物理内存。内核释放物理页面是通过释放线性区,找到其所对应 的物理页面,将其全部释放的过程。
在毕业之前是必须有一篇小论文必须发表的,通常情况是可以从毕业设计大论文的选题里出,但是对于太阳能控制这种工程性的问题,实在想不出什么大的研究价值,所以还是决定另选题目了。其实还是希望导师可以从一些研究方向予以指导,至少指导一下大的方向和题目的,自己做起来还是有点迷茫,而且有选择困难症。
下面把几个可能的方向列举一下: