当前位置:  编程技术>移动开发
本页文章导读:
    ▪花了一周左右的时间写了个ITEYE的RSS阅读器,欢迎大家指正异常        花了一周左右的时间写了个ITEYE的RSS阅读器,欢迎大家指正错误 针对ITEYE的RSS文件比较大,所以建议朋友们用无线网进行访问,接下来会继续优化,望多多支持。可能会有bug,不过请大家.........
    ▪ java 聚合简单学习Demo        java 集合简单学习Demo package com.amaker.file; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeS.........
    ▪ 【转】支付宝“技术风波会”:HTML5引发的移动开发变革       【转】支付宝“技术风云会”:HTML5引发的移动开发变革   在刚刚结束的支付宝“技术风云会”论坛上,Html5再次成为5位与会者的关注焦点。会中也有人问及:native app 和mobile web app哪个将成为.........

[1]花了一周左右的时间写了个ITEYE的RSS阅读器,欢迎大家指正异常
    来源: 互联网  发布时间: 2014-02-18
花了一周左右的时间写了个ITEYE的RSS阅读器,欢迎大家指正错误
针对ITEYE的RSS文件比较大,所以建议朋友们用无线网进行访问,接下来会继续优化,
望多多支持。
可能会有bug,不过请大家指正,源码要等些时候发布

    
[2] java 聚合简单学习Demo
    来源: 互联网  发布时间: 2014-02-18
java 集合简单学习Demo
package com.amaker.file;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

public class Collection {

	/**
	 * 集合学习Demo
	 */
	public static void main(String[] args) {
		//
	}
	/**
	 * 类集:类集就是一系列的动态对象数组。
	 * 类集中最大的几个操作接口:Collection、Map、Iterator
	 * 所有的类集操作的接口或类都在java.util包中。
	 * List接口:ArrayList(95%)、Vector(4%)、LinkedList(1%)
	 * Vector类和ArrayList类的区别:
	 * No.	区别点	              ArrayList	              Vector
	 * 1	时间	    是新的类,是在JDK 1.2之后推出的	是旧的类是在JDK 1.0的时候就定义的
	 * 2	性能     性能较高,是采用了异步处理	           性能较低,是采用了同步处理
	 * 3           输出	    支持Iterator、ListIterator输出	除了支持Iterator、ListIterator输出,还支持Enumeration输出
	 * 
	 */
	public void demo1(){
		List<String> all = new ArrayList<String>(); // 实例化List对象,并指定泛型类型
		all.add("hello "); // 增加内容,此方法从Collection接口继承而来
		all.add(0, "VINCE ");// 增加内容,此方法是List接口单独定义的
		all.add("world"); // 增加内容,此方法从Collection接口继承而来
		System.out.println(all); // 打印all对象调用toString()方法

	}
	/**
	 * Set接口:
	 * Set接口也是Collection的子接口,与List接口最大的不同在于,Set接口里面的内容是不允许重复的
	 * 此接口中有两个常用的子类:HashSet、TreeSet
	 * HashSet属于散列的存放类集,里面的内容是无序存放的
	 * 使用HashSet实例化的Set接口实例,本身属于无序的存放。
	 */
	public void demo2(){
		Set<String> all = new HashSet<String>(); // 实例化Set接口对象
		all.add("A");
		all.add("B");
		all.add("C");
		all.add("D");
		all.add("E");
		System.out.println(all);

	}
	public void demo3(){
		Set<String> all = new HashSet<String>(); // 实例化Set接口对象
		all.add("A");
		all.add("B");
		all.add("C");
		all.add("D");
		all.add("E");
		String[] str = all.toArray(new String[] {});// 变为指定的泛型类型数组
		for (int x = 0; x < str.length; x++) {
			System.out.print(str[x] + "、");
		}

	}
	/**
	 * 排序的子类:TreeSet:
	 * 与HashSet不同的是,TreeSet本身属于排序的子类
	 */
	public void demo4(){
		Set<String> all = new TreeSet<String>(); // 实例化Set接口对象\
		all.add("D");
		all.add("X");
		all.add("A");
		System.out.println(all);

	}
	/**
	 * 判断两个对象是否相等:
	 * 第一种判断两个对象的编码是否一致,这个方法需要通过hashCode()完成,即:每个对象有唯一的编码
	 * 还需要进一步验证对象中的每个属性是否相等,需要通过equals()完成。
	 * 关于TreeSet的排序实现,如果是集合中对象是自定义的或者说其他系统定义的类没有实现
	 * Comparable接口,则不能实现TreeSet的排序,会报类型转换(转向Comparable接口)错误。
	 * 换句话说要添加到TreeSet集合中的对象的类型必须实现了Comparable接口.
	 */
	
	/**
	 * 集合输出:
	 * 只要是碰到了集合,则输出的时候想都不想就使用Iterator进行输出。
	 * Iterator
	 */
	public void demo5(){
		List<String> all = new ArrayList<String>();
		all.add("A");
		all.add("B");
		all.add("C");
		all.add("D");
		all.add("E");
		Iterator<String> iter = all.iterator();
		while (iter.hasNext()) {// 判断是否有下一个元素
			String str = iter.next(); // 取出当前元素
			System.out.print(str + "、");
		}

	}
	/**
	 * Map接口:
	 * Map本身是一个接口,所以一般会使用以下的几个子类:HashMap、TreeMap、Hashtable
	 * Map接口在开发中最基本的操作过程,根据指定的key找到内容,如果没有找到,则返回null,找到了则返回具体的内容。
	 * HashMap本身是属于无序存放的。
	 * Hashtable中是不能向集合中插入null值
	 * HashMap与Hashtable的区别:
	 * No.	区别点	      HashMap	                 Hastable
	 * 1	推出时间	JDK 1.2之后推出的,新的操作类	     JDK 1.0时推出的,旧的操作类
	 * 2	性能	异步处理,性能较高	                                              同步处理,性能较低
	 * 3	null	允许设置为null	                                              不允许设置,否则将出现空指向异常
	 */
	public void demo6(){
		Map<Integer, String> map = new HashMap<Integer, String>();
		map.put(1, "张三A");
		map.put(1, "张三B"); // 新的内容替换掉旧的内容
		map.put(2, "李四");
		map.put(3, "王五");
		String val = map.get(6);
		System.out.println(val);

	}
	public void demo7(){
		Map<Integer, String> map = new HashMap<Integer, String>();
		map.put(1, "张三A");
		map.put(2, "李四");
		map.put(3, "王五");
		Set<Integer> set = map.keySet(); // 得到全部的key
		List<String> value = (List<String>) map.values(); // 得到全部的value
		Iterator<Integer> iter1 = set.iterator();
		Iterator<String> iter2 = value.iterator();
		System.out.print("全部的key:");
		while (iter1.hasNext()) {
			System.out.print(iter1.next() + "、");
		}
		System.out.print("\n全部的value:");
		while (iter2.hasNext()) {
			System.out.print(iter2.next() + "、");
		}
	}
	
	//Map集合中每一个元素都是Map.Entry的实例,只有通过Map.Entry才能进行key和value的分离操作。
	public void demo8(){
		Map<String, String> map = new HashMap<String, String>();
		map.put("ZS", "张三");
		map.put("LS", "李四");
		map.put("WW", "王五");
		map.put("ZL", "赵六");
		map.put("SQ", "孙七");
		Set<Map.Entry<String, String>> set = map.entrySet();// 变为Set实例
		Iterator<Map.Entry<String, String>> iter = set.iterator();
		while (iter.hasNext()) {
			Map.Entry<String, String> me = iter.next();
			System.out.println(me.getKey() + " --> " + me.getValue());
		}

	}
	//在JDK 1.5之后也可以使用foreach完成同样的输出,只是这样的操作基本上不使用。
	public void demo9(){
		Map<String, String> map = new HashMap<String, String>();
		map.put("ZS", "张三");
		map.put("LS", "李四");
		map.put("WW", "王五");
		map.put("ZL", "赵六");
		map.put("SQ", "孙七");
		for (Map.Entry<String, String> me : map.entrySet()) {
			System.out.println(me.getKey() + " --> " + me.getValue());
		}

	}
	/**
	 * 当一个对象被存进HashSet集合后,就不能修改这个对象中的那些参与计算的哈希值的字段了,否则,对象被修改后的哈
	 * 希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为
	 * 的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中删除当前对象,从而
	 * 造成内存泄露。
	 * 
	 */
	
	/**
	 * foreach输出
	 */
	public static void demo10(){
		String [] strs = {"a","b","c","d","e"};
		for(String s:strs){
			System.out.print(s+"、");
		}
	}
}

    
[3] 【转】支付宝“技术风波会”:HTML5引发的移动开发变革
    来源: 互联网  发布时间: 2014-02-18
【转】支付宝“技术风云会”:HTML5引发的移动开发变革

 

在刚刚结束的支付宝“技术风云会”论坛上,Html5再次成为5位与会者的关注焦点。会中也有人问及:native app 和mobile web app哪个将成为主流? 又或者html5应用能否替代native app?

确实,html5技术再不断的完善,也必将做更多的事情,但个人认为,native app在这几年还将是主流,它与生俱来的高用户体验、华丽的用户界面、较低的流量成本,并且能访问本地资源,但native app有着较为致命的缺点:较差的不同平台的可移植性、较高的多个版本的升级维护成本、盈利模式的局限性。而web app在很大程度上与native app 形成互补,较低的开发成本、跨平台移植、升级更新更容易等等。

所以,在未来几年web app 和 native app结合可能是一个不错的,Hybrid  App,通俗一点讲就是伪客户端或者轻量级客户端,它的展现模式还是类似于native app,但其实只有一个ui webView,内嵌了html5页面,如果觉得webView不能满足要求,可以开发一个适合自己的浏览内核,做到与客户端一样用户体验。

打个比方,现在私家车已经较为普遍,但平时我们也会使用自行车,我们可以根据不同的场合使用不同的交通工具,当然我们还可以把自己车架在私家车上以备不时之需。

Html5必将带来一场移动互联网的革命,作为htm5的参与者和受益者,我们将期待html5标准的统一和越来越多的web app应用,并给我们带来更多的商业化价值。

iPhone让Native App火热,Android让Native App普及

5年前的1月9日,苹果公司在Mac World大会上推出了iPhone手机,这款革命性的通信终端重新定义了SmartPhone,也宣告了移动互联网的到来。人们从AppStore上下载应用,享受着App带来的便捷、多彩生活。一年后,互联网巨鳄谷歌发布了Android系统,极大的降低了智能手机成本,也让Native App得到了普及。调查显示,2010年6月美国用户每天花在App和Web上的时间分别为43分钟和64分钟,而这一数据在一年后转变为81分钟以及74分钟。为什么Native App会如此受青睐?一方面是因为Native App拥有最佳的用户体验、绝对的本地设备访问能力、优异的盈利模式等优势;另一方面则是因为当时的wap站点还太弱小。

HTML5让web回归,wap站点向Mobile Web App转变

当《连线》杂志抛出《The Web Is Dead , Long Live the Internet》的论调时,迅速引起了整个行业的讨论,而大部分web支持者将希望寄托在HTML5身上。随着智能手机的普及,移动浏览器进行着竞争,基于Webkit引擎的终端覆盖了庞大的智能移动终端市场,移动设备对于HTML5的支持完全达到了可应用的水平。另一方面,Native App的高成本、低效率也让HTML5下的移动web重新得到关注。

2010年开始,淘宝、支付宝、腾讯、网易、新浪等国内互联网巨头都开始对wap进行重新的设计,HTML5触屏版陆续上线。至此,HTML5完成了移动web开发的一次变革:

  • CSS3被用于打造wap页面,它的圆角、渐变、阴影、动画等特性让移动web拥有了接近于native的UI,整个页面焕然一新;
  • <article>、<section>、<header>等语义化标签更容易被理解,有利于页面维护与复用;HTTML5表单实现了许多简单易用的原生属性和控件,可以轻松的构建强大的表单;
  • 强大的Javascript API让mobile web site酷起来,复杂的交互不再停留在Native App内,Mobile Web App开始展现魅力;
  • HTML5下app开发的高效让产品变得更加迅捷,也真正达到了手机应用的随时更新;
  • HTML5 = iOS + Android + WindowsPhone,一套代码跨越多个平台。
  • 不可避免的,wap的转型也给移动互联网企业带来了新的挑战:(1)产品经理、交互设计师、视觉设计师需要更多的创新适应HTML5带来的新变化;(2)生态产业链的形成需要时间,Mobile Web App如何被“发现”、“保留”、“返回”还需要进一步探讨;(3)大量的前端人才需求;(4)wap site与Mobile Web App以及不同版本Mobile Web App间的兼容开发问题,多版本适配成为新的架构挑战。

    HTML5让Native App倾斜,Hybrid或许是正道

    HTML5下的Mobile Web App确实拥有了可以和Native App叫板的资格,但是就像C/S和B/S模式同时存在一样,Mobile Web App与Native App谁也没法代替对方。乔布斯曾在受采访时说过:“Web是未来,虽然现阶段Native给了用户更好的体验。如果现在的开发者不有效的利用Web技术,那他就落伍了。但如果过分依赖Web,完全不用Native那也未必就是好事”。

    随着业务的发展和新需求的出现,产品经理们成天贪婪的追问“你那个HTML5可以获取手机硬件信息不,什么时候能调摄像头啊?”,很可惜主流的移动浏览器并没有将这些API开放出来,web依旧需要native去做一些底层的事;相对的,native的工程师也期望自己的应用里面可以加入HTML5,提高开发的效率,适应快速的需求变化。

    显然,只有将这两种模式进行融合才能应对新的挑战,HTML5让native产生了倾斜,“Hybrid”成为较好的选择。细细想来,Hybrid应用可以使用HTML5轻松呈现复杂排版内容,js也能调用移动终端底层的API,产品开发效率得到了很大的提高,并且兼容各平台,商业运作成本比较低。当然,开发一个成功Hybrid应用并不容易,需要native工程师,前端工程师以及后台开发人员的通力合作。

    当我们开始构建Hybrid App的时候,如何去“Bridging the gap”是一大挑战。其实,实际操作并不如想象的那么困难。以Android为例,它的Webview中有一个addJavascriptInterface方法,通过这个方法可以将App运行过程中的java对象暴露给js调用。同样的iOS,WindowsPhone也都存在着这样的接口。

    因此,对于技术实力超强的公司来说,自行实现Hybrid框架是可行的,也能在遇到问题时及时进行完善。而对于大部分公司来说,使用现有的Hybrid框架效率会更高,而PhoneGap无疑是最佳的选择。在被adobe收购并捐献给apache基金后,PhoneGap得到了更多的支持,更新速度也开始加快,它的Plugin机制更是可以满足HTML页面绝大部分的native扩展需求。“HTML5+PhoneGap”成为了主流的App开发方案。

    需要清醒的是,虽然Hybrid很美好,但是在这种转型过程中同样也会遇到很多的挑战:

    (1)哪些业务子应用应该使用web、哪些应该加入native;

    (2)Hybrid的性能问题;

    (3)多种模式下的产品及技术整合。

    HTML5下的移动App架构

    在HTML5的影响下,wap走向了Web App,native融合HTML页面变身为Hybrid。为了适应这种变革,支付宝无线wap以及App不断进行着调整,一种可行的架构应运而生。

    这种架构的特点是:

    客户端方面,融入了Hybrid框架。出于支付宝业务的特殊性,性能要求高、有特殊需求、现存的以及不经常变更的应用采用native完成;而对于变化快、native要求较低的业务使用Hybrid方式完成,并使用HTML5作为页面展现。

    业务开发过程中,对单业务设计多套模板实现页面级设备定制;当浏览器进行web访问,根据HTTP请求头的User-Agent信息进行版本适配和展现。

    在开发过程中,不断沉淀出业务相关的javascript组件,方便复用以及Hybrid与Web两种模式的js兼容。


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3