`
lotusyu
  • 浏览: 33586 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论
文章列表
0.7版本更新: 1:加入取数组(array[i])和集合值(list[i]、set[i])的功能,并且支持多维数组和多维集合。 2:加入设置变量类型的功能。 3:调整FelContext接口,加入getVar和setVar方法。 3:优化语法分析功能。 4:对数值型的变量生成的编译代码进行调整。 参见:http://code.google.com/p/fast-el/
此版本主要觖负号和减号冲突的问题
需求: 1:对一个大数组进行求和。 2:需要使用多线程实现。 思路: 1:将大数组根据线程的数量进行拆分。 2:每个线程对数组的部分元素进行求和。 3:等待所有线程执行完毕,返回结果。 说明: 在论坛中看到有一个帖子是使用concurrent包实现的,我这个例子没有使用concurrent包,发现也挺简单。 代码如下所示: /** * 多线程求和 * @author Administrator * */ public class ThreadsSum { static public long sum(final int[] array) { if (ar ...
Fel是轻量级的高效的表达式计算引擎。 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求。 Fel是开放的,引擎执行中的多个模块都可以扩展或替换。Fel的执行主要是通过函数实现,运算符(+、-等都是Fel函数),所有这些函数都是可以替换的,扩展函数也非常简单。 Fel有双引擎,同时支持解释执行和编译执行。可以根据性能要求选择执行方式。编译执行就是将表达式编译成字节码(生成java代码和编译模块都是可以扩展和替换的) Fel基于Java1.5开发,适用于Java1.5及以上版本。 特点: 易用性:API使用简单,语法简洁,和java语法很相似。 轻量级:整个包 ...
策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 在Fel中,使用的最多就是FelContext。FelContext就是一个策略,引擎执行时依赖于FelContext获取变量。FelContext只是定义了取变量的接口,取变量的策略由子类实现。这样引擎就可以专注于解析执行表达式,与变量相关的都交给FelContext了。 请看类图: 在FelContext中有一个最常用的实现类,就是MapContext。MapContext是使用Map来保存变量,需要时提供给引擎使用。当然也还有很多其他的实现类,如果有需要,也 ...
fast-el是表达式语言,实现简单,效率高,扩展性强。 有兴趣的朋友关注一下,帖子地址:http://www.iteye.com/topic/919382#1919146
合并排序采用了分治法的思路来设计排序算法。 主要步骤: 1:分解数组 2:排序子数组 3:合并排序好的子数组 其代码如下: public interface Sort<T> { /** * 返回排序后的数组 * @return */ public T[] sort(T[] array); } import java.util.Arrays; import java.util.Comparator; public abstract class AbstractSort<T> implements Sort< ...
插入排序好比抓牌,一副牌是待排序的数组,拿一张牌,跟手里的牌从右到左一张张比较,插入到合适的位置。 优点:适应小数据量排序,空间消耗小。 缺点:当数据量比较大时,排序效率不高。 代码结构: Sort:排序接口 AbstractSort:排序抽象类 InsertSort:排序算法。 Sort: public interface Sort<T> { /** * 返回排序后的数组 * @return */ public T[] sort(T[] array); public T[] sort(); } AbstractSort: ...
通过统计元素的个数来达到排序的目的。 优点: 不需要对元素比较就能对元素进行排序(这个想法很巧妙)。 缺点: 1:只能对自然数进行排序。 2:自然数的数值不能太大(排序过程中需要创建一个计数数组,其长度要不能小于数组中的最大值) 实现代码: import java.lang.reflect.Array; public class CountSort<T extends Number> { private T[] array; public CountSort(T[] array) { this.array = array; } publi ...
快速排序算法的思想来自于分治法(我的理解就是大事化小,小事化了)。 优点:速度快,内存占用小。 缺点:对于有序数组,耗时比较长(稳定性不够好) 实现步骤: 1:找出数组的最后位置的值(mid),不大于mid的,排在数组的前面,mid排在中间,比mid大的排在mid的后面(对应partition方法,返回mid的索引位置)。 2:将mid的前半部分做为子数组,递归调用步骤1;将mid的后半部分做为子数组,递归调用步骤1 实现代码: import java.util.Comparator; public class QuickSort<T> { private T[] a ...
topn指的是从已经存在的数组中,找出最大(或最小)的前n个元素。 topn算法实现思路(找最大的n个元素) 1:取出数组的前n个元素,创建长度为n的最小堆。 2:从n开始循环数组的剩余元素,如果元素(a)比最小堆的根节点大,将a设置成最小堆的根节点,并让堆保持最小堆的特性。 3:循环完成后,最小堆中的所有元素就是需要找的最大的n个元素。 代码如下: import java.util.Comparator; /** * 堆数据结构应用实例 * * @author Administrator * */ public class HeapApp { pub ...
闲时写了一个heap的数据结构,支持最大堆,最小堆。 import java.util.Comparator; /** * 堆数据结构 * * @author Administrator * */ public class Heap<T> { /** * 以数组形式存储堆元素 */ private T[] heap; /** * 用于比较堆中的元素。c.compare(根,叶子) > 0。 * 使用相反的Comparator可以创建最大堆、最小堆。 */ private Compar ...
转自http://topic.csdn.net/u/20110518/09/6021fd63-3084-4fda-a4b6-da2fe58de367.html?seed=1655503227&r=73523235#r_73523235 对原贴的代码进行整理并做一些修改 import java.util.Comparator; /** * 将堆调整成最大堆 * * @author Administrator * */ public class Heap { /** * 返回值为i/2 * @param i * @return ...
                     Fel使用说明 1:Fel简介 Fel是简单的、高效的、易扩展的开源项目,使用java开发的开源项目。 简单性:语法简单,与java表达式类似,支持中文变量和函数。其实现原理也非常简单,只要稍微有一些java基础就可以看懂源码。 高效性:不会比开源的脚本引擎慢。一些高级应用还可以大大高于其他脚本引擎。 易扩展:在执行表达式的主要环节(解析表达式、函数管理、操作符重载、引擎上下文、节点解释器)都有很高的可定制性。 Fel设计目标是面向最终用户和二次开发用户。它是功能灵活的、可以轻易掌控的和可定制的表达式语言。 2:快速入门 获取Fel 项目地 ...
Global site tag (gtag.js) - Google Analytics