当前位置:  编程技术>移动开发
本页文章导读:
    ▪如何处理ViewController打开时Orientation异常        如何避免ViewController打开时Orientation错误最近在一个iPad项目上要做一个BeginnerGuide,我的设计是将其做在help里,在第一次运行程序时显示此help,否则在需要了解帮助信息时,可以点击help按钮.........
    ▪ Memcache缓存技术学习小结        Memcache缓存技术学习总结Memcached是一个高发性能的分布式对象缓存系统。目前全世界不少人使用这个缓存项目来构建自己 大负载的网站,来分担数据库的压力,通过在内在里维护一个统一的.........
    ▪ 应用initramfs       使用initramfs菜鸟心得,高手路过。。。。。         在方案公司开发环境一般极其复杂, 有一种情况如果在板子inand没有驱动起来的时候,没有分区,没有根文件系统。快被淘汰掉的nandfla.........

[1]如何处理ViewController打开时Orientation异常
    来源: 互联网  发布时间: 2014-02-18
如何避免ViewController打开时Orientation错误

最近在一个iPad项目上要做一个BeginnerGuide,我的设计是将其做在help里,在第一次运行程序时显示此help,否则在需要了解帮助信息时,可以点击help按钮打开此BeginnerGuide。

我的结构是一个基于SplitViewController的Master-Detail结构,在第一次运行时,在Master的ViewWillAppear中通过performSegueWithIdentifier弹出此help窗口,其它情况下通过在点击Master中的help按钮弹出。之所以在ViewWillAppear中弹出而不是ViewDidAppear,是由于不想在显示BeginnerGuide之前,让用户看到主界面,那样就不叫BeginnerGuide了。

这里的问题是,在ViewWillAppear中弹出的窗口初始时总是Portrait模式,而不管设备所处模式是什么。但是打开之后,旋转设备,窗口则可以根据实际的模式调整过来。如果在父窗口的ViewWillAppear或新弹出的ViewController中的ViewDidLoad中运行如下代码:

    if  (UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
    {
        //landscape view code
        NSLog(@"Landscape");
    }
    else
    {
        //portrait view code
        NSLog(@"Portrait");
    }
    
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
        // portrait
        NSLog(@"Portrait");
    } else {
        // landscape
        NSLog(@"Landscape");
    }
    
    if  (UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation]))
    {
        //landscape view code
        NSLog(@"Landscape");
        
    }
    else
    {
        //portrait view code
        NSLog(@"Portrait");
    }

当设备为Landscape模式时,实际输出为:

Portrait
Portrait
Landscape

也就是视图所处模式与设备是不同的。

遍寻Baidu、Google、StackOverFlow,唯一的收获是,在ViewWillAppear中,无法知道正确的Orientation信息。不过幸运的是,我最后找到了这篇文章,文中说,设备的消息已经传到了程序,刚才的例子也可以说明这点,由于Rotate消息在ViewWillAppear之前就已经排在消息队列中,这个队列是用于处理所有启动过程(Startup process)的,我们的程序只是晚了一点点,当我们的ViewController显示的时候,Rotate消息已经处理结束了。

其实很简单,我们无法将我们的显示提前到Startup Process中,但是可以延后,等到Startup Process处理完成,比如增加一个timer延时,或者更简单的方案--使用Block,代码如下:

- (void)viewWillAppear: (BOOL)animated {
    [super viewWillAppear:animated];
    if (freshInstall) {
        dispatch_async(dispatch_get_main_queue(),^{
            [self performSegueWithIdentifier: @"firstRun" sender: self];
        });
    }
}

据这篇Twitter说,这个问题已经在iOS6上解决了。







    
[2] Memcache缓存技术学习小结
    来源: 互联网  发布时间: 2014-02-18
Memcache缓存技术学习总结

Memcached是一个高发性能的分布式对象缓存系统。目前全世界不少人使用这个缓存项目来构建自己
大负载的网站,来分担数据库的压力,通过在内在里维护一个统一的巨大的的hash表,它能够用来
存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等,简单的说就是将数据调用
到内存中,然后从内在中读取,从而大大提高读取速度。

memcache是一个高效的分布式的内在对象缓存系统,她可以支持把各种php的数据(array对象、基本数据
类型)放入到它管理的内在中.


Memcached最佳实践:将从数据库查询的数据放入Memcached

使用方法:

 一、telnet------>>>memchached缓存系统;
 
 crud

 二、php程序(memcache扩展、memcached扩展、使用socket访问)----->>>memcached缓存系统;

使用memcache扩展(一堆函数)来操作memcached操作系统

 1.在php.ini中配置extension
 放入到php/ext/目录
 2.打开extension
 这里启用memcache的扩展
 extension=php_memcache.dll
 3.编程测试
 memcache除了资源类型外的其它类型都可以储存;

 $mem = new Memcache();
 //$mem->connect("localhost","11211");//立即向localhost的11211端口发出请求;
 //上面链接不写,可以创建下面多个memcached服务链接;
 $mem->addserver("192.168.1.200","11211");
 $mem->addserver("192.168.1.201","11211");
 $mem->addserver("192.168.1.202","11211");
 //这里使用负载均衡算法来选一个memcached使用;
 $mem->add("name","jmb",1,100);

 
使用socket套接字符串操作memcached缓存系统;(memcached-client.php)

 


浅谈memcached机制:

1.是c/s结构的,使用简单文本通讯;
2.基于libevent事件处理;
3.是内存缓存;
4.基于客户端的分布式;


Memcached的细节:
1.生命周期,是在add数据的时候指定的;
2.如何配置,将session数据自动保存到memcached服务器中;


步骤:

1.在php.ini文件中
把session数据放入memcache
session save_hander = memcache
这里指定放到哪个memcached服务器
session save_path = "tcp//127.0.0.1:11211"

小结:我们只需要在php.ini中作一个配置,然后再使用session时候,还是老规矩,只是这个时候,
我们的session数据,已经放到memcached中

如何使用memcached的因素:

1.如果是一个小网站,pv值不大,就不考虑使用memcached
2.变化频繁,查询频繁,但是不一定写入数据库(适合memcached)(用户在线状态)
3.变化频繁,一变化就要入库(比如股票,金融)不适合memcached
4.变化不频繁,查询频繁,不管入不入库,都比较适合memcache,(新浪的新闻频道)


    
[3] 应用initramfs
    来源: 互联网  发布时间: 2014-02-18
使用initramfs

菜鸟心得,高手路过。。。。。

 

      在方案公司开发环境一般极其复杂, 有一种情况如果在板子inand没有驱动起来的时候,没有分区,没有根文件系统。快被淘汰掉的nandflash板子上压根没焊,而且手机的板子中根本没有rj45接口,所以想要做nfs那是天方夜谈的事情。想要安安心心的进入shell界面谈何容易。除非有别的方法启动板子,但是会让本就复杂的情况变得更复杂。至于其他理由及需求我这里不在赘述。

      因为当网络中这方面资料讲的虽然比较全面,而且提纲挈领,但是方法繁多,结构松散,不知从何入手。几经折腾后写下这篇心得,不管你多菜,跟随五个步骤一步一步做,问题应该能够得到解决。(initramfs.cpio我认为是很好的一种方法,使用简单,内核自带,不需要打任何补丁,在逻辑中内核跟文件系统看起来浑然一体,移植性更高,不需要各种复杂的uboot操作,使用这种方法足以对应各种发杂的开发环境)

     注:我这里用到的环境是s3c6410 linux2.6.32.2

1)找个简单一下的跟文件系统,需要一个busybox用来做一些最简单的操作

注:这里我放在了内核根目录下面,在逻辑上来看内核跟文件系统形成了一部分东西

2)make menuconfig中勾选

          General setup  --->

          [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

然后这里填入具体根目录的路径(内核目录下的minirootfs)

3)make重新编译内核,一般情况不需要clean

编译过程中会发现usr/initramfs_data.cpio被更新了

来到usr目下发现确实是有这么一个7.8M的东东,不管,继续去arch/arm/boot/下查看

发现zImage变成了7M的大家伙,做到这步,说明你已经成功一半了

 

5)OK让我们放到板子上跑一下

想办法把把zImage拷贝到内寸中,不管用什么办法,拷贝到启动地址即可,我这里使用的是TFTP(s3c6410的启动地址是0x50008000这里就不在赘述了)

 

设置bootargs为"console=ttySAC0,115200 init=/linuxrc ==>ttySAC0"即不指定根"root=xxx"

bootm启动

 

如果你进shell了,说明你已经成功了,在我博客blog.csdn.net/dragon101788上顶一下帖子说明对你有所帮助。如果没有成功,那么加我QQ:45797408,一起讨论

如果你想更深入的了解请点击精通initramfs构建step by step

 

 

可能会出现问题:

 

找不到控制台,串口连不上

:来到initramfs根目录中的dev下创建console与null

重新make以下步骤,问题得以解决


    
最新技术文章:
▪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添加多个可点击的文本
.net/c#/asp.net iis7站长之家
▪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