摘要:
近来开始接触Erlang,被它深深所吸引,学习当然得有环境,我毫不犹疑的安装了Erlang的开发环境。安装非常简单,直接下载源码, 传统的三步安装:./configure./makesudo make install 这样就安装成功了。安装目录是:/usr/local成功后,在命令行输入erl就可以进行Erlang的shell。因为我还没有入门,所以学习的时候打算用emacs作为开发工具,下来我们来配置emacs1.让其支持erlang语法高亮。vim ~/.emacs, 然后加入以下内容(setq load-path (cons "/usr/local/lib/erlang/lib 阅读全文
摘要:
grunt.js是基于node.js的自动化构建工具,类似Java世界里的Maven。目前升级到v0.4版,相比v0.3,grunt不再是全局安装了,而是作为app的依赖存在,尽管还是需要一个全局安装即grunt-cli作为命令行启动: 安装: npm install -g grunt-cli 插件: grunt.js具有丰富的插件,全部由npm管理。还可以利用grunt API很方便的创建自己的插件,设置直接在gurntfile(好比pom.xml)里面直接扩展grunt task。这得易于js动态语言的特性。 v0.4以后各种常用插件基... 阅读全文
摘要:
dp[i][j]表示从前i个里选j对,dp[i][j]=min(dp[i-2][j-1]+(a[i]-a[i-1])^2,dp[i-1][j])先排序,注意初始化#include <iostream>#include <algorithm>#include <cmath>#include <cstring> using namespace std;int n,k,m,a[2005],dp[2005][2005];int main(){ int i,j,ans; while(cin>>n>>k) { for(i=1;i< 阅读全文
摘要:
在公司做了一年多的研发,一直有些想法。下午参加公司的产品评审,这些想法更强烈了。 1.为什么要研发 这个问题似乎很显然,我们开始做一个产品研发,总是知道为什么要做这个研发。但是我们认真来考虑这个问题的时候,会发现我们做的远远不够。 在下午的评审会上,评审快进行了一个小时了,但是与会人员,包括公司管理层,都没有明白我们产品的价值在哪里。这是多么可悲的一件事情,我们都研发一年多了,到现在还没明白产品的价值在哪里。 上大学的时候,老师经常要我们写可行性分析。但那时候总觉得这些东西很虚,写了半天也不知道自己要写些什么,怎么也不如写代码来的实在。转眼自己已经毕业五年了,对原来很多自己觉... 阅读全文
摘要:
errno.h#define EPERM 1 /* Operation not permitted */操作不允许 #define ENOENT 2 /* No such file or directory */文件/路径不存在 #define ESRCH 3 /* No such process */进程不存在 #define EINTR 4 /* Interrupted system call */中断的系统调用 #define EIO 5 /* I/O error */I/O错误 #define ENXIO 6 /* No such device or address */设备... 阅读全文
摘要:
之前在看android启动过程总是带着完成工作任务的目的去分析代码,但是对于一些代码的细节并不是很清楚,在这里就分析一下Init进程的执行过程。Init进程是android系统起来之后启动的第一个进程,对于研究android系统的启动过程很重要。直接根据代码来分析整个进程的执行过程。int main(int argc, char **argv){ int fd_count = 0; struct pollfd ufds[4];//存放pollfd char *tmpdev; char* debuggable; char tmp[32]; int proper... 阅读全文
摘要:
当spinlock执行lock()获得锁失败后会进行busy loop(参考这段代码),不断检测锁状态,尝试获得锁。这么做有一个缺陷:频繁的检测会让流水线上充满了读操作。另外一个线程往流水线上丢入一个锁变量写操作的时候,必须对流水线进行重排,因为CPU必须保证所有读操作读到正确的值。流水线重排十分耗时,影响lock()的性能。 inline int rdlock() { int ret = common::OB_SUCCESS; int64_t tmp = 0; while (true) { ... 阅读全文
摘要:
如果你查询优化统计还没有太多的认识和了解,那么建议你从头开始看,如果你已经很了解,那么可以直接跳到下面去看本文的重点了。 什么是查询优化统计信息? 查询优化的统计信息是一些对象,这些对象包含与值在表或索引视图的一列或多列中的分布有关的统计信息。查询优化器使用这些统计信息来估计查询结果中的基数或行数。通过这些基数估计,查询优化器可以创建高质量的查询计划。例如,查询优化器可以使用基数估计选择索引查找运算符而不是耗费更多资源的索引扫描运算符,从而提高查询性能。 每个统计信息对象都在包含一个或多个表列的列表上创建,并且包括显示值在第一列中的分布的直方图。在多列上的统计信息对象... 阅读全文
摘要:
你以为你有很多路可以选择,但是在你四周有很多看不见的墙,其实你只有一条路可以走. -《悟空传》 “团结就是力量,团结就是力量”,有时候多么想时光骤然回到三年前,爸爸妈妈跟我,满怀好奇的走进这所校园,来到人生中最重要的一站--我的大学。看着军训的新生一张张稚气未脱的脸,顿时心里五味杂陈,已然步入大四的行列,再也没有了大一的激情和冲劲。 天天背着李永乐,新东方匆忙的寻找着自习室,然后就是一天的苦读,偶尔抬头看看外面的天空,天上的云彩,恍然跟高中的时候没什么区别,耳边似乎也回想起同桌的声音,“唉,老师过来了,别走神了!”猛然惊醒,怅然若失,四... 阅读全文
摘要:
android.app.Fragment$InstantiationException 解决办法 在实际的开发中,我遇到过两次android.app.Fragment$InstantiationException报错。 其中一次报错,根据报错提示“make sure class name exists, is public, and has an empty constructor that is public”,若Fragement定义有带参构造函数,则一定要定义public的默认的构造函数。即可解决此问题。如果硬要携带参数进去,可以通过Intent结合Bunble的方式携带进去。 第二.. 阅读全文