当前位置:  编程技术>移动开发
本页文章导读:
    ▪Unity3d 在不同装置中的文件读写 的路径        Unity3d 在不同设备中的文件读写 的路径 Application.dataPath : 数据路径 Unity Editor: <path tp project folder>/Assets Unity 编辑器:<工程文件夹的路径>/Assets  Mac player: <path to player app bundle>.........
    ▪ 云层呼叫中心坐席并发测试结果        云端呼叫中心坐席并发测试结果                  很久没有写关于asterisk 压力测试的相关文章了。今晚终于可以抽一点时间来写点东西,跟大家来分享一下。 以下是本人最近开发的.........
    ▪ 应用Storyboard实现复杂界面       使用Storyboard实现复杂界面Storyboard是IOS5以后新增的内容,从名字上看,是以故事面板的形式来展现界面间的逻辑关系,Storyboard的功能很强大,今天就简要介绍Storyboard的基本使用,界面间的关.........

[1]Unity3d 在不同装置中的文件读写 的路径
    来源: 互联网  发布时间: 2014-02-18
Unity3d 在不同设备中的文件读写 的路径

Application.dataPath : 数据路径

Unity Editor: <path tp project folder>/Assets
Unity 编辑器:<工程文件夹的路径>/Assets 

Mac player: <path to player app bundle>/Contents
Mac播放器:<到播放器应用的路径>/Contents 

iPhone player: <path to player app bundle>/<AppName.app>/Data
iPhone播放器:<到播放器应用的路径>/<AppName.app>/Data 

Win player: <path to executablename_Data folder>
Win播放器:< 包含可执行播发器的文件夹的路径>\Data 

Dashboard widget: <path to the dashboard widget bundle>
Dasboard窗口:< dashboard widget bundle的路径> 

Web player: The absolute url to the player data file folder (without the actual data file name)
网络播放器:到播放器数据文件夹的绝对路径(没有实际的数据文件名称)


 在IOS真机设备中 需要在<path to player app bundle>/Documents路径下才可以读写。 

unity3d中通过如下操作获取Document文件路径

    public string Path
    {
        get{
            string    path=null;
            if(Application.platform==RuntimePlatform.IPhonePlayer)
            {
                path= Application.dataPath.Substring (0, Application.dataPath.Length - 5);
                path = path.Substring(0, path.LastIndexOf('/'))+"/Documents/";    
            }
            else
            {
                path=Application.dataPath+"/Resource/GameData/";
            }
            return path;
        }     
    }

    
[2] 云层呼叫中心坐席并发测试结果
    来源: 互联网  发布时间: 2014-02-18
云端呼叫中心坐席并发测试结果

                  很久没有写关于asterisk 压力测试的相关文章了。今晚终于可以抽一点时间来写点东西,跟大家来分享一下。

以下是本人最近开发的一套云端虚拟坐席租用系统,历经半年时间的实现和优化。

           在近段时间,云端服务器是一个比较很热门话题,并且很大程度上综合硬件的资源的,节约成本的同时,还有的好处就是简化服务器部署的难度和时间。其他关于云端服务的其他好处,在此不必多说了,大家可以参考一下相关的文章即可。

            如果使用云端资源来运营呼叫中心系统,最好把录音部分单独使用专门的服务器来录音。否则有可能因为磁盘IO不足导致语音质量的问题。

         下面是压力测试场景说明:

          坐席分机数量:500,但出于离线状态;

                 

            操作系统:Centos 5.5 32位定制优化版本

            asterisk版本: Asterisk 1.4.39 优化版本

          数据库 mysql 5.1.48

 

云端服务器CPU配置:

model name : Intel(R) Xeon(R) CPU           L5335  @ 2.00GHz

 

内存配置:

[root@ACS_Samples ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          2026       1211        814          0        136        790
-/+ buffers/cache:        285       1741
Swap:          502          0        502

 

以下分别为50坐席并发5CPS 下的压力测试情况:

WinSIP:

 

系统并发监控截图:

 

系统性能截图:

从系统性能观察,在整个压力测试周期中,系统资源的占用都很稳定。不存在高低起伏的太大的偏差。

 

下面我们再观察一下在100线,10CPS并发的情况下的系统表现:

WinSIP截图:

 

系统界面截图:

 

系统性能表现:

 

从以上测试当中,不定时检测呼叫语音通话质量,在100并发的时候有轻微的停顿之外,通话都比较清晰。

总结:

     总体上来说,asterisk 的效率还是比较高的,只要开发的时候组织好架构和各方面做好优化,不需要太高的配置,即可以跑个上百线的并发。跟硬件相比,成本确实降低了很多。

     因为在QQ群中也经常会问到asterisk 来做系统,到底并发能去到多少,需要什么样的服务器。希望通过今次的测试,大概可以给到问到这个问题的朋友,找到答案。

 

 

 

 

 


    
[3] 应用Storyboard实现复杂界面
    来源: 互联网  发布时间: 2014-02-18
使用Storyboard实现复杂界面

Storyboard是IOS5以后新增的内容,从名字上看,是以故事面板的形式来展现界面间的逻辑关系,Storyboard的功能很强大,今天就简要介绍Storyboard的基本使用,界面间的关系,以及如何使用xib和Storyboard共同使用的情况。

首先新建一个Empty工程,并新建一个Storyboard,我命名为MainStoryboard,以下是完整的工程目录结构:


打开MainStoryboard后拖入一个UITabViewController,并设置两个tab为UINavigationController,第三个tab设置一个ViewController。关联的方式为按住control点击鼠标左键拖动到目标界面即可,松开鼠标后点击如下第一个选项:


最后在UINavigationController上分别添加Next按钮,同样按住control键点击拖动到下一个界面松开选择push就完成了跳到下一页的功能,这比之间在代码中手写要方便、快捷。第一个Storyboard的整体布局如下:


在最后一个ViewController中(Third)中添加按钮,点击后跳到另外一个Storyboard(SecondStoryboard),SecondStoryboard的布局如下:


同样给SecondStoryboard添加一个导航视图。

然后新建几个ViewController文件,分别命名为FirstViewController、SecondViewController。。。,并在storyboard中选中指定的界面关联这些ViewController文件:


接下来就是主要实现的代码,在AppDel额gate中添加如下代码:

[cpp] view plaincopyprint?
  • - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
  •     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
  •     // Override point for customization after application launch. 
  •      
  •     //使用Storyboard初始化根界面 
  • //    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
  • //    self.window.rootViewController = [storyBoard instantiateInitialViewController]; 
  •      
  •     //启动后首先进入登陆界面 
  •     LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil]; 
  •     self.window.rootViewController = loginViewController; 
  •      
  •     self.window.backgroundColor = [UIColor whiteColor]; 
  •     [self.window makeKeyAndVisible]; 
  •     return YES; 
  • - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        // Override point for customization after application launch.
        
        //使用Storyboard初始化根界面
    //    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    //    self.window.rootViewController = [storyBoard instantiateInitialViewController];
        
        //启动后首先进入登陆界面
        LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
        self.window.rootViewController = loginViewController;
        
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        return YES;
    }
    

    现在编译运行后,就可以看到界面了:


    然后打开ThirdViewController,为按钮添加如下事件,切换到SecondStoryboard

    [cpp] view plaincopyprint?
  • - (IBAction)openStoryboard:(id)sender { 
  •     UIStoryboard *secondStoryboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil]; 
  •     [self presentModalViewController:[secondStoryboard instantiateInitialViewController] animated:YES]; 
  • - (IBAction)openStoryboard:(id)sender {
        UIStoryboard *secondStoryboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil];
        [self presentModalViewController:[secondStoryboard instantiateInitialViewController] animated:YES];
    }

    这样就完成了从一个storyboard切换到另一个storyboard。

    运行截图如下:

          

    接下来实现如何结合xib和storyboard共同使用,在一般开发中有这么一种场景,首先打开软件后进入登陆或者注册界面,登陆成功后跳转到软件首页,那么这里建立一个LoginViewController并创建LoginViewController.xib文件,里面添加一个Login按钮,并响应事件:

    [cpp] view plaincopyprint?
  • <span >- (IBAction)loginBtnClicked:(id)sender { 
  •     //点击登陆按钮后切换到storyboard界面 
  •     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
  •  
  • //    self.view.window.rootViewController = [storyboard instantiateInitialViewController]; 
  •     [self presentModalViewController:[storyboard instantiateInitialViewController] animated:YES]; 
  •      
  •     [storyboard release]; 
  • }</span> 
  • - (IBAction)loginBtnClicked:(id)sender {
        //点击登陆按钮后切换到storyboard界面
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    
    //    self.view.window.rootViewController = [storyboard instantiateInitialViewController];
        [self presentModalViewController:[storyboard instantiateInitialViewController] animated:YES];
        
        [storyboard release];
    }


    点击Login按钮后,就跳转到之前实现Storyboard的首页了:

    http://jiushun8.com/forum.php


        
    最新技术文章:
    ▪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