合并排序MergeSort

发表于3年前(Dec 24, 2014 9:57:55 AM)  阅读 524  评论 0

分类: Java 算法 排序

标签: sort 排序 mergesort 合并排序 递归

合并排序是分治法的典型应用,就是我们常说的递归。合并排序是将两个已经排好序的数组合并成一个有序数组的过程,所以只需保证子数组有序,那么合并出来的数组也是有序的,那剩下的问题就是如何递归地对子数组进行排序。

合并排序是不能在原数组上实现的,他的时间复杂度为O(nlog n)。在上面的代码中,核心算法是merge合并算法。在该算法的实现中,对要合并的目标数组进行了拷贝,然后替换源数组的值,这样的话可读性较好,但实际上也是一件影响效率的工作。参考网上其它的算法,一般是返回一个新的排序数组,各中优略请读者自己把握。

插入排序InsertionSort

发表于3年前(Dec 24, 2014 9:56:10 AM)  阅读 480  评论 0

分类: Java 算法 排序

标签: insertionsort sort 排序 插入排序

插入排序是排序算法中很简单的一种排序,适用于少量元素排序。对他的描述,《算法导论》一书中的例子我觉得很形象。插入排序的算法原理类似于打牌中的摸牌:没摸牌时,我们手中是空的,接着,一次摸一张牌,每次摸起时,我们按照大小把它排列,无论什么时候,我们手中的牌都是已排好序的。

在实现时,我们使用两个数组,数组A用来模拟待摸的牌,数组B用来模拟我们自己手上抓的牌,每次我们从A中取一张牌插到B中,不管什么时候,B中的牌都是排好序的。

插入排序是可以在原数组上实现的,时间复杂度为O(n2)。

Flex HTTPService 跨域访问解决方案

发表于3年前(Dec 24, 2014 9:44:10 AM)  阅读 382  评论 0

分类: Flex

标签: 跨域 HTTPService useProxy 代理

HTTPService组件是Flex提供常用来从服务器端获取数据的,在这里,如果flex应用访问的服务不在一个域,也存在跨域安全问题,一般可以通过设置代理解决。

1、首先在需要使用代理服务的Flex应用要配置proxy-config.xml代理配置文件,在对应通道上加入需要访问的服务器地址,默认通道是DefaultHTTP:
<destination id=“DefaultHTTP”>
  <properties>             
    <dynamic-url>http://172.18.80.14:7001/*</dynamic-url>
  </properties>
 </destination>

2、

......

Flex跨域解决办法

发表于3年前(Dec 24, 2014 9:42:14 AM)  阅读 538  评论 0

分类: Flex

标签: crossdomain.xml Weblogic 跨域

Flex跨域问题很常见,网上有很多解决办法,最常见的就是配置crossdomain.xml文件,要求这个文件在服务器根目录能访问到(其实并不是一定要根目录,如果不是根目录,flex应用程序访问时得手动配置加载跨域安全文件,网上也有方法,但是我未能测试成功,所以这里就不说了)。如果是tomcat,很简单,只需要把这个文件放到webapps根目录下即可。但生产环境很少会是用tomcat的,我们基本上都是用weblogic,个别系统使用绑定的jboss。怎么把crossdomain.xml文件放到weblogic根目录,网上也有,我整理了一下,测试通过,现在把工程放上来,您可以直接下载使用。

计算某点围绕目标点旋转一定角度后的新坐标

发表于3年前(Dec 24, 2014 9:37:28 AM)  阅读 1768  评论 0

分类: Java Flex 算法

标签: flex 算法 Java ratation 旋转

这可以说是一道数学题,我讲一下我碰到这个题目的背景。

如上图所示,A可以看成我们的显示器屏幕,向右为x正方向,向下为y正方向,屏幕中有一个矩形B,他是屏幕A的子,D点为B在屏幕A中的坐标,C点为矩形B中的一点。现在对矩形B进行旋转,如旋转90度,那C点坐标为多少呢?

Flex全屏以及获得显示器分辨率

发表于3年前(Dec 24, 2014 9:25:49 AM)  阅读 552  评论 0

分类: Flex

标签: Capabilities StageDisplayState 全屏 分辨率

最近研究了一下flex全屏操作,flex全屏很简单,修改stage.displayState的状态值就行,stage.displayState==StageDisplayState.FULL_SCREEN就是表示全屏,stage.displayState = StageDisplayState.NORMAL;就是表示恢复全屏前的状态。不过事先要在index.template.html模板文件的AC_FL_RunContent变量里面增加两个键值对,为”allowScriptAccess”,”sameDomain”, “allowFullScreen”,”true”,修改后的文件为,注意,有两处:

AC_FL_RunConte
......

Flex使用自定义右键菜单

发表于3年前(Dec 24, 2014 9:17:08 AM)  阅读 307  评论 0

分类: Flex

标签: ContextMenu 右键菜单

在应用程序开发过程中,经常会遇到要使用右键菜单的情况,不管是flex web工程还是AIR桌面应用程序,flex是支持自定义右键菜单的,以web工程为例:
1、首先new一个自己的ContextMenu出来,ContextMenu可以看成是整个右键菜单窗口
private var nodeMenu:ContextMenu = new ContextMenu();
2、然后new自己的一个个菜单项
var menu1:ContextMenuItem = new ContextMenuItem(“右键菜单一”);
3、给菜单项加入处理事件
menu1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,menudraw);
4、将自己的菜单项加入新的ContextMenu中
nodeMenu.customItems.push(menu1);
5、然后把系统自带的菜单隐藏
n

......

flex编码问题(encodeURI)

发表于3年前(Dec 24, 2014 9:15:35 AM)  阅读 427  评论 0

分类: Flex

标签: decode encode encodeURI URLDecoder URLEncoder

中文处理一直是个很头疼的问题,前台页面到后台程序传值,如果值包含中文,通常我们会在页面对中文进行编码,然后在后台进行一次解码,这种情况能解决大多数问题。然后最近我发现我最终获得的字符串里,“+”全部变成了空格,仔细研究了一下,终于找到了问题所在。

项目是采用前台Flex后台java的形式,编码统一采用UTF-8,“+”对应的UTF-8应该为“%2B”,在java端,使用URLEncoder对字符进行编码,再用URLDecoder进行解码,是不会出问题的。进行debug,发现servlet接收的值里面,字符串里面显示的是“+”,开始没在意,然后用URLDecoder.decode进行解码时,发现“+”全部变成空格,认为是java解码有问题
svg = svg.replaceAll(“\\+”, “@plus@”);
svg = URLDecoder.decode

......

AirUtils介绍

发表于3年前(Dec 24, 2014 9:12:56 AM)  阅读 351  评论 0

分类: Flex

标签: air AirUtils 关机 重启

五一时闲来无事,用AIR做了一个类似快速启动专家的工具。可以用来快速启动程序,打开文件夹,以及关机重启等操作,这些功能的实现都有赖于AirUtils这个开源工具。

工具地址:http://code.google.com/p/airutils/

工具已经实现的功能有:
1.关机、重启、计时关机、计时重启
2.操作注册表
3.将指定的可执行程序设为开机启动
4.移除开机启动程序
5.将指定的可执行文件注册为服务
6.移除指定名称的服务
7.启动服务
8.停止服务

......

Flex嵌入页面及As函数与Js函数互相调用

发表于3年前(Dec 24, 2014 9:11:00 AM)  阅读 689  评论 0

分类: Flex

标签: as函数与js函数相互调用 FABridge flex-iframe flex嵌入页面

flex项目中,经常会遇到要嵌入html页面的情况,嵌入页面我们可以使用google的flex-iframe控件,嵌入页面后,大多情况,嵌入页面跟flex页面需要进行交互,传递数据,通常我们都是通过相互函数调用来完成的,as与js之间相互调用可以使用FABridge控件来完成。在这里我写了一个示例工程,用来演示flex如何嵌入一个html页面,并完成两个页面之间函数的相互调用。