- 浏览: 24909 次
- 性别:
- 来自: 杭州
最新评论
文章列表
可能是史上最优雅的 java 快速排序(续)
- 博客分类:
- java
接上篇,改进了快速排序会排重的特性,现在不会排重了,而且输出的日志组织的更为合理,更能明白程序运行的过程
原理再阐述一下:
把列表中的数字分为3类,以第一个数字为轴心,分为小于它的,等于它的,大于它的。然后对于小于它的和大于它的,分别递归调用上述整个过程,直到列表为空。
程序的执行就像一颗树,又像一个栈,只有到分到最后列表为空时,才知道最终结果,然后这些结果一下子返回,每个子集都是排好序的,最后整个集合也是排好序的。
package com.test.clazz;
import java.util.ArrayList;
import java.util.Arrays;
imp ...
受erlang启发,写的一个快速排序,兼具排重功能,哈哈。
elang快速排序代码如下:
qsort([]) -> [];
qsort([Pivot|T]) -> qsort([X || X <- T, X < Pivot]) ++ [Pivot] ++ qsort([X || X <- T, X > Pivot])
深夜灵感突现,写了又调,2个小时后出炉
其思想是,sort接受的参数是一个乱序的List,但sort返回的一个子集必须是已排好序的。
用到了递归,递归用好了真是无比强大,在函数式编程语言中尤其如此,比如说erlang,lisp
...
原文
http://www.jifuyi.com/tag/erlang/
erlang四大behaviour之一gen_server(转载)
erlang程序设计里面有个设计原则就是把你的进程构造成树,把共用代码提出来,特定功能用自己的module实现,这也就是behaviour了,应用behaviour可以减少与本身事务无关的代码量,设计逻辑更加清晰。老纪边学习边记录吧。
gen_server实现服务器/客户端模型,用于多个客户共用一个资源的这种情况。他由几个接口函数和几个回调函数组成(回调函数必须在你的module里定义)这些可以参考erlang的doc
举个例子:
-modul ...
1、ejabberd是的Jabber / XMPP协议的即时通讯服务器,持牌GPLv2许可下(自由和开放源码) ,写的爱尔朗/检察官办公室。在其它特性中, ejabberd是跨平台,容错, clusterable和模块化。
开发语言: ErLang
项目主页: http://www.ejabberd.im/
...
这样一个场景:
查询条件:83 < price < 87, city = 杭州
order by time
但是只要前3条记录。
按前面的条件查出来是250万条
总记录11亿条,
但是只要前3条记录。
方案一:
要从11亿条按时间排序的记录中找出250万条符合条件的
250万条copy成(11亿/250万)份,和各个时间区段(0-3天以内,3到6天以内。。。这样)求交集
方案二:
是取时间段的前5000条,和那250万条求交集,看是否有3条满足;不满足继续找下5000条求交集
要做到的:
1.求交集算法,尽可能快,并且不改变原来排好 ...
作者:high0048
关键词:排序好的,分堆排序,最小值,最大值,中值,节点,虚拟化,数据迁移
传统数据查询之所以在大规模数据上性能达不到要求,是由于这些查询的排序工作是到查询之前的那一刻才进行的,这样做,要处理的东西就很多,就像临阵磨枪,所以很难。
如果我们在数据插入的时候,就进行大部分的排序,整理工作,(就好像先把房间整理好,再找东西就不难了)等到查询的时候只需要做很小的一部分工作,性能就会大大提升。
目前Key-Value的数据库十分火爆,由于其性能十分优秀,key的值就好像是地址,Value的值就是真正用到的数据,用的时候,直接从地址找数据。但是这样的数据库不能面对复杂查询。 ...
程序的执行有2种方式,一种就是互不依赖,互不影响的方式,称为独立运行。另一种就是前后相互依赖的方式,后面的执行要依赖前面的结果,称为因果运行。
并行化的关键就是尽可能的分离出这两种方式。MapReduce就是分离的一种办法。
对于因果运行,可以想到的方式,就是将所有可能结果的排列组合一一计算出来,最后取出符合条件的结果。
这种计算方法对于计算机的运算能力和中间结果的存储,都是一种前所未有的挑战。
优化的方式,是选择概率最高的组合先计算,概率低的组合后计算。
各种可能结果,出现的概率分布,在每一次计算之后都会有所不同,这就像是条件概率,每计算出一些结果,条件发 ...
今天调试程序,冒出了这段
===ERROR REPORT==== 20-Sep-2010::15:33:53 ===
** Generic server my_bank terminating
** Last message in was {add,"joe",10}
** When Server state == 20496
** Reason for termination ==
** {'function not exported',[{ets,lookup,[]},
{my_bank,handle_cal ...
OTP 设计原理:
http://erlang.shiningray.cn/otp-design-principles/
18岁的工程师谈 Erlang/OTP:
http://hi.baidu.com/k1000j1000/blog/item/072e67a825b041f41f17a268.html
http://blog.csdn.net/lawme/archive/2008/12/12/3503050.aspx
http://blog.csdn.net/lawme/archive/2008/12/14/3515508.aspx
...
初学,留记,以便日后总结。
1.基本概念:变量不变,模式匹配,原子,元组,列表。
2.要掌握的模型:服务器-客户端模型(行模式,自由模式)。
3.重要的应用:协议解析,针对一个协议,写一个函数 ...
应该是 提出解决方案 的能力,时刻明白自己想要什么,如何解决。许多牛人在写程序的时候不是死盯着屏幕,而是写一段,停下来,看着别处,理清思路,再继续往下写。
所以能提出解决方案,思路不断,是最重要的,这需要对问题非常清晰,不断的克服种种障碍,养成这种习惯。