作者归档: 童燕群

基于C语言的hash table实现进程内缓存

最近遇到一个问题需要做本地缓存,首先想到就是hash表。如果是java,太easy了。C语言就是需要不停的造轮子,实在不想写这个面试题样的东西了,求助于万能的Google了。找到一个不错的hashtable开源实现:http://troydhanson.github.io/uthash/,BSD的许可,赞。也找到了一篇文章介绍详细的用法:http://blog.csdn.net/hongqun/article/details/6103275

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 9票) Loading ... Loading ... | 归档目录:C/C++, 算法数据结构, 语言基础 | 标签: , , |

华为存储助力CERN揭开宇宙奥秘

摘要:2013年10月8日,瑞典皇家科学院宣布将今年诺贝尔物理学奖授予英国物理学家彼得·希格斯和比利时物理学家弗朗索瓦·恩格勒,用于表彰他们对希格斯玻色子(又称“上帝粒子”)所做的预测。

2013年10月8日,瑞典皇家科学院宣布将今年诺贝尔物理学奖授予英国物理学家彼得·希格斯和比利时物理学家弗朗索瓦·恩格勒,用于表彰他们对希格斯玻色子(又称“上帝粒子”)所做的预测。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 归档目录:存储业界 | 标签: , , , , |

设计模式,学以致用—Proxy模式

最近在恶补设计模式的知识,GoF的23种设计模式都囫囵吞枣的看了一遍,貌似每一种模式都看懂了。然而到底有没有掌握各种模式呢,遇到实际问题时能否正确处理,还是需要打一个大大的问号。这里就遇到一个实际问题需要用模式来解决,然而我拿到这个问题的时候第一时间想到的却不是用模式,走了不少弯路。

问题如下:拿到了如下接口和库文件。需求是,不想把这个原始的接口暴露给用户,希望将真实的接口做一个简单的隐藏,对这套接口进行一个封装,在客户调用doSmth之前,还能做一些别的事情,诸如做一些额外的初始化。也就是对一个动态库文件和接口进行二次封装。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.88- 8票) Loading ... Loading ... | 归档目录:C/C++, 语言基础, 软件技术 | 标签: , , , , |

使用新浪云平台创建WordPress站点

前几天看到新闻,SAE和GAE都先后放出了PHP的支持。昨天看到新浪云的后台技术人员提供了最新版本的WordPress版本的定制版本:WordPress for SAE。以前总有印象,新浪并不是一个技术公司,以前也就用来看看新闻而已。注册了一下新浪云,按照官方的指导安装了一个WordPress,然后从codefine.site/wp-content/uploads同步了主题和插件,居然能完整复制了整个站点。

新浪云还是有一些限制,简单列举一下:

1、不支持php写本地文件;
2、不支持php中直接调用后台脚本;

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 4票) Loading ... Loading ... | 归档目录:建站技术 | 标签: , , , , |

如何有效避免大量重复的switch分支

最近学习设计模式相关知识,结合前面的DRBD源码分析掌握了表驱动编程模式,这里作一些简单的总结。

先看一段C代码:

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 5票) Loading ... Loading ... | 归档目录:语言基础, 软件技术 | 标签: , |

Java程序员应该知道的10个面向对象理论

本文由 ImportNew唐小娟 翻译自 Javarevisited。如需转载本文,请先参见文章末尾处的转载要求。

面向对象理论是面向对象编程的核心,但是我发现大部分Java程序员热衷于像单例模式、装饰者模式或观察者模式这样的设计模式,而并没有十分注意学习面向对象的分析和设计。学习面向编程的基础(如抽象,封装,多态,继承等)是非常重要的,而运用它们来设计干净的模块也同样重要。我也认识很多不同等级的程序员,他们没有听过这些面向对象理论,或者不知道某个设计理论有什么好处,或者如何在编码中使用这些设计理论。

我们起码要设计出高度一致而且松散耦合的代码。Apache和Sun的源代码就是学习Java面向对象理论的非常好的例子。JDK遵循了一些设计模式,譬如在BorderFactory中使用工厂模式,Runtime类中使用单例模式,java.io中的许多类中使用装饰者模式。如果你真的对Java编程感兴趣,请先阅读Joshua Bloch的Effective Java,正是他参与编写了Java API。另外两本我喜欢的关于设计模式的书还有,Kathy Sierra等编写的的Head First Design PatternHead First Object Oriented Analysis and Design。这些书帮助理解面向对象理论,并帮助我写出更好的代码。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.57- 7票) Loading ... Loading ... | 归档目录:Java, 语言基础, 软件技术 | 标签: , , , , , , , , , |

一种常见的并发编程场景的处理

对于并发编程,大家想到总是多线程之间对等的临界资源竞争。然而经常会遇到下面这样的场景:

守护线程提供一个临界资源,多个子线程会并发改写该临界资源。大部分时候(99.9%的时间),主线程是不会干涉各个线程之间的竞争的,通常只要该临界资源自己内部处理好同步即可。但是偶尔主线程也会干预一下该临界资源,比如做一些统计,做一个快照,或者复制数据然后清空等。这个操作通常会耗时比较长,并且在此期间不希望有人改写临界资源。如果,主线程与各个子线程使用同样的锁或者synchronized同步,那么在主线程没有作该操作时,各个子线程之间会因为竞争而阻塞,这个阻塞开起来是没有必要的。

这里介绍一个利用volatile变量的特性解决该问题的方案。尝试在性能和数据保护上面达到最大平衡。Atomic变量是采用的寄存器(volatile)变量实现的。用两个变量标志map表当前的状态。而不必在后台线程和众多业务线程之间加锁或者同步,由于在多数情况下volatile变量的性能优于锁(Java 理论与实践: 正确使用 Volatile 变量)。这里只以map表举例,其他保证线程安全的数据结构也适用。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 4票) Loading ... Loading ... | 归档目录:Java, 多线程编程, 语言基础 | 标签: , |

关于Java中Random的一些使用细节

Random类相信大家都不陌生,但是必须掌握一些特定的细节才能在要求较高的场合用好该变量。这里分析一个多线程环境下Random的使用。

现在面临一个问题:有多个线程需要按照随机的方式取一个令牌,尽量让每个线程取得的令牌不一样,可以认为令牌就是一个数字,如1~100之内的一个整数。那么怎样实现能最好的解决这个问题呢?首先想到的是用一个同步的变量,使用一个getAndIncrement接口,这样每个线程调用这个接口时都能获得一个与其他同时访问该接口不一样的值。当然这不是本帖想要讨论的问题。本帖希望用随机数生成器的方式给每一个线程提供这个接口。

于是一位粗心的同学有了下面这样的接口:

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.86- 7票) Loading ... Loading ... | 归档目录:Java, 多线程编程, 语言基础 | 标签: , , |

乔布斯发布会合集

整理了乔布斯的iPhone和iPad重要产品的发布会视频,按照时间顺序排列。

2007年iPhone发布会,“每隔一段时间就有一个革命性的产品出现,然后改变一切。一个人一生能参与一件革命性的产品就够幸运了,而苹果,却已经有好几件这样的产品。”

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 归档目录:数码硬件, 移动互联 | 标签: , , , |

一张图让你看懂各开源License

你是否遇到过开源License,精炼而又晦涩的文字通常要读半天才能理解,而且大多数License差别不大,容易混淆。下面这张图让你短时间迅速掌握各种开源的License。

图片来源:阮一峰的博客

各种开源Lisence的限制点

| 1 分2 分3 分4 分5 分 (4.83- 6票) Loading ... Loading ... | 归档目录:移动互联, 软件技术 | 标签: , |
返回顶部