0%

之前略有点偷懒,整个个人博客的更新也停止了很长时间。完成了硕士学位论文和毕业阶段,于是就很快进入了新的工作,也要为以后多作计划。

经过一番考虑,这一段准备更新一些之前落下的内容,例如毕设相关的一些技术知识,也准备学习一些新技术,会在这里记录一下自己的收获。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页面也有很详细的解释。

Linux/Mac系统下的goagent的使用教程

现在你应该可以在Terminal下利用Python运行goagent代理了,代理地址是 127.0.0.1:8087,下面就以使用goagent为例,介绍如何为git配置代理。

Git 目前支持的三种协议 git://ssh:// 和 http://,其代理配置各不相同:core.gitproxy 用于git:// 协议,http.proxy 用于 http:// 协议,ssh:// 协议的代理需要配置 ssh 的 ProxyCommand 参数。

阅读全文 »

不久前我接触了Bootstrap 2.3.2,对于一个像我这样之前没有太多前端开发经验和网页设计经验的人来说,Bootstrap是一个很好的工具,同时基于Bootstrap还有其他扩展和类似的工具包,我也自己做了几个简单的网页(链接),页面元素加入了Google的一些风格。前不久,广受期待的3.0终于与广大开发者见面了。

Bootstrap是Twitter推出的一个开源的用于前端开发的工具包,包含了丰富的Web组件。根据这些组件,开发者可以快速的搭建一个漂亮、功能完备的网站。在经过Bootstrap 3 RC版的测试和改善后,Bootstrap 3.0.0于8月20日正式发布。

阅读全文 »

原文出处: 赛迪

我是一名程序员,那么我在这里以一个程序员的角度来讲解Linux内存的使用。
一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。

Linux在内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上不占用实际物理内存;一级是具体的物理页面,它对应我们机器上的物理内存。

这里要提到一个很重要的概念,内存的延迟分配。Linux内核在用户申请内存的时候,只是给它分配了一个线性区(也就是虚存),并没有分配实际物理 内存;只有当用户使用这块内存的时候,内核才会分配具体的物理页面给用户,这时候才占用宝贵的物理内存。内核释放物理页面是通过释放线性区,找到其所对应 的物理页面,将其全部释放的过程。

阅读全文 »

在毕业之前是必须有一篇小论文必须发表的,通常情况是可以从毕业设计大论文的选题里出,但是对于太阳能控制这种工程性的问题,实在想不出什么大的研究价值,所以还是决定另选题目了。其实还是希望导师可以从一些研究方向予以指导,至少指导一下大的方向和题目的,自己做起来还是有点迷茫,而且有选择困难症。

下面把几个可能的方向列举一下:

  1. 推荐系统
  2. 基于GPU的推荐算法(协同过滤)的加速
  3. 随机数生成算法,和基于GPU的加速
  4. NOSQL Database