当前位置:  编程技术>移动开发
本页文章导读:
    ▪单例模式的基准写法、注意事项、作用及测试        单例模式的标准写法、注意事项、作用及测试 最新最准确内容建议直接访问原文:单例模式   主要介绍单例模式的标准写法、注意事项、作用、测试,以Java语言为例,下面代码是目前见过.........
    ▪ 16大跨平台游戏发动机        16大跨平台游戏引擎 1. Edgelib:2D及3D中间件游戏引擎,支持iOS、Android、Windows Phone、塞班、Mac,Linux等等平台的游戏开发。可免费使用。2. Emo:移动游戏框架,利用Squirrel脚本语言,基于OpenG.........
    ▪ 获取/data/data索引RW权限       获取/data/data目录RW权限 $su # mount rootfs / rootfs ro 0 0 tmpfs /dev tmpfs rw,mode=755 0 0 devpts /dev/pts devpts rw,mode=600 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0 none /dev/cpu.........

[1]单例模式的基准写法、注意事项、作用及测试
    来源: 互联网  发布时间: 2014-02-18
单例模式的标准写法、注意事项、作用及测试

最新最准确内容建议直接访问原文:单例模式

 

主要介绍单例模式的标准写法、注意事项、作用、测试,以Java语言为例,下面代码是目前见过最好的写法:

public class Singleton {

    private static volatile Singleton instance = null;

    // private constructor suppresses
    private Singleton(){
    }

    public static Singleton getInstance() {
        // if already inited, no need to get lock everytime
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }

        return instance;
    }
}

1、需要注意的点

其中需要注意的点主要有三点
(1) 私有化构造函数
(2) 定义静态的Singleton instance对象和getInstance()方法
(3) getInstance()方法中需要使用同步锁synchronized (Singleton.class)防止多线程同时进入造成instance被多次实例化
可以看到上面在synchronized (Singleton.class)外又添加了一层if,这是为了在instance已经实例化后下次进入不必执行synchronized (Singleton.class)获取对象锁,从而提高性能。

Ps: 也有实现使用的是private static Object    obj      = new Object();加上synchronized(obj),实际没有必要多创建一个对象。synchronized(X.class) is used to make sure that there is exactly one Thread in the block.

 

2、单例的作用
单例主要有两个作用
(1) 保持程序运行过程中该类始终只存在一个示例
(2) 对于new性能消耗较大的类,只实例化一次可以提高性能

 

3、单例模式测试

单例模式可以使用多线程并发进行测试,代码如下:

public static void main(String[] args) {
    final CountDownLatch latch = new CountDownLatch(1);
    int threadCount = 1000;

    for (int i = 0; i < threadCount; i++) {
        new Thread() {

            @Override
            public void run() {
                try {
                    // all thread to wait
                    latch.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                // test get instance
                System.out.println(Singleton.getInstance().hashCode());
            }
        }.start();
    }

    // release lock, let all thread excute Singleton.getInstance() at the same time
    latch.countDown();
}

其中CountDownLatch latch为闭锁,所有线程中都用latch.await();等待锁释放,待所有线程初始化完成使用latch.countDown();释放锁,从而达到线程并发执行Singleton.getInstance()的效果

 

你可能还感兴趣:

Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)

Android ImageCache图片缓存

Android性能优化专题


    
[2] 16大跨平台游戏发动机
    来源: 互联网  发布时间: 2014-02-18
16大跨平台游戏引擎
1. Edgelib:2D及3D中间件游戏引擎,支持iOS、Android、Windows Phone、塞班、Mac,Linux等等平台的游戏开发。可免费使用。


2. Emo:移动游戏框架,利用Squirrel脚本语言,基于OpenGL ES及OpenAL/OpenSL开发iOS及Android游戏。开源,免费。



3. Unreal Development Kit:是目前世界最知名的授权最广的顶尖游戏引擎,占有全球商用游戏引擎80%的市场份额。支持iOS及Android。虚幻3引擎的免费版本,不包含源代码,但包含了开发基于虚幻3引擎独立游戏的所有工具。



4. JMonkey Engine:基于Java OpenGL的免费开源引擎,一个基于场景图、高性能的图形API,是一个使用Java语言编写的图形绘制引擎。通过使用一个抽象层,支持任意的绘制系统。可用Java语言编程并导入任何与OpenGL 2兼容的设备。



5. ShiVa3D:号称最具跨平台意义的移动游戏引擎,是一个3D游戏引擎及开发工具包,支持iOS,Android,WP及黑莓。国内有专门的书作介绍。



6. Libdx:免费的Android、HTML5及Java 3D/2D游戏开发框架,只写一次便可以适配到多个平台。



图:用Libgdx开发的游戏

7. Papaya Social Game Engine:2D游戏引擎,帮助轻松手机开发移动社交游戏,支持iOS及Android。另外还提供游戏内购买系统,帮助你实现游戏的货币化。



8. MoSync:HTML5/JavaScript的轻量级工具,用于手机开发iOS,Android及Windows Phone的本地移动App。手机开发者能通过MoSync精简库调用本地设备API,手机开发的App还能使用本地的UI控件。为Android设备做开发时,MoSync可以创建Dalvik字节码,也能在使用Java-Native界面和NDK时直接工作于C++层面。



9. NME:免费开源框架,能用于手机开发Android、iOS、黑莓及WindowsPhone App,无需C或C++开发技巧。



图:用NME开发的游戏


10. SIO2:基于OpenGLES的跨平台2D及3D游戏引擎,支持iOS及Android,采用的是C及C++语言。官网上有入门教程,可以去参考。



11. Corona SDK:著名跨平台游戏开发工具,支持iOS,Android,据说有150000开发者使用这个工具。很多iOS开发者反映这个工具很好用,但据Android开发者说该工具用起来不是特别顺心。



图:用Corona开发的游戏“The Lost City”

12. Marmalade:采用C/C++开发跨平台的原生游戏及App,能适配到桌面端及移动端,支持iOS、Android及黑莓,可循环利用代码,兼容PhoneGap API。



13. BattryTech:一个游戏开发框架,能为Android及iPhone平台写原生C++代码。引擎基于Lua 5.1语言,所以你只需要懂一点Lua语言即可,引擎免费。





14. App Game Kit:跨平台游戏开发工具,利用BASIC脚本语言,支持黑莓、Android、iOS平台。支持开发商结合Eclipse手机开发环境,使用LoadImage、Sprite、PlaySound等简单的程序命令制作游戏,然后将这些游戏编译到指定的平台。



图:用App Game Kit开发的游戏

15. Antiryad Gx:跨平台的多核3D及2D游戏引擎,支持C、C++及Gel语言,使用iOS,Windows及Android平台。



图:Antiryad Gx设计界面

16. Unity  Mobile:手机开发游戏开发者都不会陌生,这是一个非常好的游戏引擎,移动版的著名3D Unity引擎(推荐阅读:天才之为责任:Unity CEO谈论Unity 4.0游戏引擎),支持iOS及Android,Madfinger曾用于开发游戏“Shadowgun”(暗影之枪)。



原文:http://blog.csdn.net/z104207/article/details/8692995

    
[3] 获取/data/data索引RW权限
    来源: 互联网  发布时间: 2014-02-18
获取/data/data目录RW权限
$su
# mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
# mount -o remount /dev/block/mtdblock0 /system
---# mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system 
# mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 rw 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
java/j2ee iis7站长之家
▪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