关于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 ... | 归档目录:移动互联, 软件技术 | 标签: , |

搭建了一个iNews程序

在分享网站上面看到开源了一个类似Hacker News程序的框架(Trimidea / inews),就迫不及待的安装了。安装过程并不轻松。首先是composer安装的问题,然后是源代码中的安装流程有笔误,自己对PHP代码也不了解,折腾了比较长的时间。终于还是搞定了:http://news.codefine.site/

这里把我的安装过程简单发一下:

1、确保PHP 5.39以上的环境;

2、准备好一个MySQL的帐号,有创建库的权限;

阅读全文 »

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

广度优先搜索解决“营救公主”问题

在之前的一篇文章(迷宫营救公主算法)中提供了一个半成品的解决方案,之所以说他是半成品,是因为首先选择的算法就不对,采用的是深度优先搜索,其次也没有真正的用对深度优先算法,走过的点应该标记为已经走过,而不应该重复遍历该节点。下面的文章对于广度优先和深度优先两种算法的解释非常到位。今天准备把这个问题再完整的用正确的算法解答一遍。

文章链接:【图论】广度优先搜索和深度优先搜索

就营救公主的问题而言,这里不再重复描述问题了,请点击这里查看题目分析:链接。这次选用广度优先算法来解决该问题。上面的算法介绍文章中对该算法已经分析得非常清晰了。先给解决本问题的算法伪代码:

这里每个节点有三种状态:

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 归档目录:Java, 算法数据结构 | 标签: , , , , , |

DRBD源码分析(三)——块设备驱动和IO队列处理函数

很长时间没有继续这个源码分析了,原因是到了主流业务,对底层的驱动知识不太了解,也没有太多时间。

在上一节中分析到

STATIC void drbd_connector_callback(struct cn_msg *req, struct netlink_skb_parms *nsp)

方法。在该方法中有一处调用:
mdev = ensure_mdev(nlp); 

在这个调用中,会进行设备的注册和驱动的加载。这一节重点分析struct drbd_conf* drbd_new_device(unsigned int minor)方法。该方法主要是一个块设备的驱动。关于块设备的驱动程序的编写,可以参考CU上面的赵磊的帖子,该帖子绘声绘色的讲解了如何从0基础开始编写块设备驱动:链接

对于每一个块设备,会进行一系列的初始化,会启动3个内核线程:

drbd_thread_init(mdev, &mdev->receiver, drbdd_init); 
drbd_thread_init(mdev, &mdev->worker, drbd_worker);
drbd_thread_init(mdev, &mdev->asender, drbd_asender);

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 9票) Loading ... Loading ... | 归档目录:C/C++, DRBD | 标签: |

一次与“伟大的墙”插肩而过的经历

刚刚发现所有文章的图片都无法加载,原以为我的WordPress程序存在漏洞被黑了,后来使用curl命令直接获取图片也不行。检查后台的访问日志,发现只要是2013年的日志的图片都无法加载,可以看到服务端是正确接收到了请求,并且已经向客户端返回200 OK,只是在传输图片数据时无法接收。

image

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 归档目录:奇趣见闻, 建站技术, 移动互联 | 标签: , |

从百度网盟广告页面中拔了一个Metro风格的标签云

一直想做一个Metro风格的标签云,但是没有JS的功底,自己实现不了。于是从百度推广的Metro风格的广告页面中找来了代码,修改成了如下页面:

http://codefine.site/tagcloud.htm

然后到WordPress的后台的小工具页面添加一个HTML块,内容为:

<iframe style="margin:6px 0 8px 0; border-right-width: 0px; width: 100%; 
border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px"
 src="http://codefine.site/tagcloud.htm" width="100%" height="280px" 
marginwidth="0" scrolling="no" ></iframe>

 

tagcloud.htm页面的内容非常容易定制,包括颜色集,整个block块的长宽等。由于这个只是抄袭过来的代码,标签的大小并不能体现文章数的多少,鼠标悬停在超链接上面时也不能浮出文章书目值。

应用这个小模块后生成的标签云效果截图为:

Metro风格的标签云

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

Hacker News的排名算法–越是简单的越是有用

从dbanotes.net的startup news知道了hacker news,关注了一段时间,发现排名确实能反映绝大多数用户的喜好,并且也不至于让比较热的文章永远出现在前列,而导致没有新的内容被关注。因此对其算法比较好奇,在网络上搜索了一下,看到实际的算法,有点不敢相信,整个系统只需要依赖这样一个简单的算法,不需要任何人工干预(也许链接是否发布出来需要审核)。hacker news的原理很简单,任何人都可以提交链接到网站首页,然后大家可以阅读其他人提交的链接,当发现该链接对自己有意义或者非常好时可以点击一个类似赞的按钮,给该文章投上一票。最终首页上会按照文章的票数多少和发布时间对文章进行热度排序。

整个算法就是基于下面这个表达式:

r=(P – 1) / (t + 2)^1.8

P是得票数,t是时间,天为单位。因此时间越短得票数越多的文章排名靠前,得票数一定,随着时间的增加,文章的排名也会慢慢降低。

已经有人画出了不同的P值对应的r与t的函数曲线图:

bg2012022405

参考链接:基于用户投票的排名算法(一):Delicious和Hacker News

| 1 分2 分3 分4 分5 分 (5.00- 5票) Loading ... Loading ... | 归档目录:移动互联, 算法数据结构 | 标签: , |

Anonymous:Touch ID帮助政 府收集全民指纹

知名黑客组织Anonymous今日发布了一段视频,称苹果iPhone 5s上配备的Touch ID指纹识别传感器将帮助美国国安局(NSA)收集指纹数据。这段视频中揭秘了很多苹果、AuthenTec和美国各种安全局勾结的证据。Touch ID指纹识别技术正是来自苹果收购的AuthenTec公司,而AuthenTec公司的董事会成员与美国国安局各种勾结。

来自cnBeta

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