位置:首页 » 技术 » 64-bit Tips

64-bit Tips

日期:2015-01-06 阅读:0num
Advertisement

终究还是来了。Apple下发了支持64位的最后通牒:

As we announced in October, beginning February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June 1, 2015 app updates will also need to follow the same requirements.

早应该做的适配终于要开始动工了,苦了64位的CPU运行了这么久32位的程序。前段时间公司项目完成了64-bit包的适配,本没那么复杂的事被无数不标准的老代码搅和的不轻,总结几个Tip共勉。

Tips

拒绝基本数据类型和隐式转换

首当其冲的就是基本类型,比如下面4个类型在32-bit和64-bit下分别是多长呢?

size_t s1 = sizeof(int);
size_t s2 = sizeof(long);
size_t s3 = sizeof(float);
size_t s4 = sizeof(double);

32-bit下:4, 4, 4, 8;64-bit下:4, 8, 4, 8

(PS: 这个结果随编译器,换其他平台可不一定)

它们的长度变化可能并非我们对64-bit长度加倍的预期,所以说,程序中出现sizeof的代码多看两眼。而且,除非你明确知道自己在做什么,应该使用下面的类型代替基本类型:

  • int -> NSInteger
  • unsigned -> NSUInteger
  • float -> CGFloat
  • 动画时间 -> NSTimeInterval

这些都是SDK中定义的类型,而我们大部分时间都在跟SDK的API们打交道,使用它们能将类型转换的影响降低很多。

再比如说下面的代码:

NSArray *items = @[@1, @2, @3];
for (int i = -1; i < items.count; i++) {
    NSLog(@"%d", i);
}

结果是,for循环一次都没有进。

数组的count是NSUInteger类型的,-1与其比较时隐式转换成NSUInteger,变成了一个很大的数字:

(lldb) p i
(int) $0 = -1
(lldb) p (NSUInteger)i
(NSUInteger) $1 = 18446744073709551615

这和64-bit到没啥关系,想要说明的是,这种隐式转换也需要小心,一定要注意和这个变量相关的所有操作(赋值、比较、转换)

老式for循环可以考虑写成:

for (NSUInteger index = 0; index < items.count; index++) {}

当然,数组遍历还是更推荐用for-in或block版本的,它们之间的比较可以回顾下这篇文章。

使用新版枚举

和上面的原因差不多,枚举应该使用新版的写法:

typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
    UIViewAnimationCurveEaseInOut,
    UIViewAnimationCurveEaseIn,
    UIViewAnimationCurveEaseOut,
    UIViewAnimationCurveLinear
};

不仅能为枚举值指定类型,而且当赋值赋错类型时,编译器还会给出警告,没理由不用这种写法。

替代Format字符串

适配64-bit时,你是否遇到了下面的恶心写法:

NSArray *items = @[@1, @2, @3];
NSLog(@"数组元素个数:%lu", (unsigned long)items.count);

一般情况下,利用NSNumber的@语法糖就可以解决:

NSArray *items = @[@1, @2, @3];
NSLog(@"数组元素个数:%@", @(items.count));

同理,int转string也可以:

NSInteger i = 10086;
NSString *string = @(i).stringValue;

当然,如需要%.2f这种Format就不适用了。

64-bit下的BOOL

32-bit下,BOOL被定义为signed char,@encode(BOOL)的结果是'c'

64-bit下,BOOL被定义为bool,@encode(BOOL)结果是'B'

更直观的解释是:

(lldb) p/t (signed char)7
(BOOL) $0 = 0b00000111 (YES)
(lldb) p/t (bool)7
(bool) $1 = 0b00000001 (YES)

32-bit版本的BOOL包括了256个值的可能性,还会引起一些坑,像这篇文章所说的。而64-bit下只有0(NO),1(YES)两种可能,终于给BOOL正了名。

不直接取isa指针

编译器已经默认禁用了这种使用,isa指针在32位下是Class的地址,但在64位下利用bits mask才能取出来真正的地址,若真需要,使用runtime的object_getClass 和object_setClass方法。关于64位下isa的讲解可以看 这篇文章

解决第三方lib依赖和lipo命令

以源码形式出现在工程中的第三方lib,只要把target加上arm64编译就好了。

恶心的就是直接拖进工程的那些静态库(.a)或者framework,就需要重新找支持64-bit的包了。这时候就能看出哪些是已无人维护的lib了,是时候找个替代品了(比如我全网找不到工程中用到的一个音频库的64位包,终于在一个哥们的github上找到,哭着给了个star- -)

打印Mach-O文件支持的架构

如何看一个可执行文件是不是支持64-bit呢?

使用lipo -info命令,比如看看UIKit支持的架构:

// 当前在Xcode Frameworks目录
sunnyxx$ lipo -info UIKit.framework/UIKit
Architectures in the fat file: UIKit.framework/UIKit are: arm64 armv7s

想看的更详细的信息可以使用lipo -detailed_info:

sunnyxx$ lipo -detailed_info UIKit.framework/UIKit
Fat header in: UIKit.framework/UIKit
fat_magic 0xcafebabe
nfat_arch 2
architecture arm64
    cputype CPU_TYPE_ARM64
    cpusubtype CPU_SUBTYPE_ARM64_ALL
    offset 4096
    size 16822272
    align 2^12 (4096)
architecture armv7s
    cputype CPU_TYPE_ARM
    cpusubtype CPU_SUBTYPE_ARM_V7S
    offset 16826368
    size 14499840
    align 2^12 (4096)

当然,还可以使用file命令:

sunnyxx$ file UIKit.framework/UIKit
UIKit.framework/UIKit: Mach-O universal binary with 2 architectures
UIKit.framework/UIKit (for architecture arm64):Mach-O 64-bit dynamically linked shared library
UIKit.framework/UIKit (for architecture armv7s):Mach-O dynamically linked shared library arm

上述命令对Mach-O文件适用,静态库.a文件,framework中的.a文件,自己app的可执行文件都可以打印下看看。

合并多个架构的包

如果,我们有MyLib-32.a和MyLib-64.a,可以使用lipo -create命令合并:

sunnyxx$ lipo -create MyLib-32.a MyLib-64.a -output MyLib.a

支持64-bit后程序包会变大么?

会,支持64-bit后,多了一个arm64架构,理论上每个架构一套指令,但相比原来会大多少还不好说,我们这里增加了大概50%,还有听说会增加一倍的。

一个lib包含了很多的架构,会打到最后的包里么?

不会,如果lib中有armv7, armv7s, arm64, i386架构,而target architecture选择了armv7s, arm64,那么只会从lib中link指定的这两个架构的二进制代码,其他架构下的代码不会link到最终可执行文件中;反过来,一个lib需要在模拟器环境中正常link,也得包含i386架构的指令。

Checklist

最后列一下官方文档中的注意点:

  • 不要将指针强转成整数
  • 程序各处使用统一的数据类型
  • 对不同类型的整数做运算时一定要注意
  • 需要定长变量时,使用如int32_t, int64_t这种定长类型
  • 使用malloc时,不要写死size
  • 使用能同时适配两个架构的格式化字符串
  • 注意函数和函数指针(类型转换和可变参数)
  • 不要直接访问Objective-C的指针(isa)
  • 使用内建的同步原语(Primitives)
  • 不要硬编码虚存页大小
  • Go Position Independent

References

https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40013501-CH1-SW1

http://www.sealiesoftware.com/blog/archive/2013/09/24/objc_explain_Non-pointer_isa.html

http://www.bignerdranch.com/blog/64-bit-smorgasbord/

http://www.bignerdranch.com/blog/bools-sharp-corners/

相关文章
  • 64-bit Tips

    终究还是来了.Apple下发了支持64位的最后通牒: As we announced in October, beginning February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June 1, 2015 app updates will also need to follow the sam

  • Windows2008 64位IIS7+ACCESS数据库无法打开Asp页面

    1. 让IIS7支持ASP Windows Vista中IIS7是默认不安装的,所以在安装完Windows Vista之后如果需要安装IIS7的话,就要自己动手了.安装的步骤为:开始>控制面板>程序>打开或关闭Windows功能>Internet信息服 务(以前操作系统版本里面的"Windows components" 在Vista里面叫做"Programs and Features").IIS7安装时需要注意的是,如果需要ASP.ASP.N

  • 【口试】剑指offer题目解析及tips速查(不断更新中) 【口试】剑指offer题目解析及tips速查(不断更新中)

    [面试]剑指offer题目解析及tips速查(不断更新中) [注]阅读<剑指offer>时做的笔记,简要描述问题内容.几种解法.需要注意的tips及全面的测试用例列举.适合已经读过<剑指offer>,在面试前需要快速浏览一遍回忆细节.巩固注意事项的人.在每个题目中标注了题目在原书中出现的页码以及对应的在线OJ练习链接. 1.将字符串转换成整数.P12 tips:输入为正负号(一个正负号.多个正负号.一个正负号后边没有数字):输入非数字字符:输入空指针.空串:最大正数和最小负数溢出(

  • 关于32位程序在64位系统下运行中需要注意的重定向问题 关于32位程序在64位系统下运行中需要注意的重定向问题

    OS:Win8x64 开发环境:VS2008 1.编写程序写入注册表 代码如下: #!cpp#include int main(int argc, char *argv[]){ LPCTSTR lpSubKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run"; HKEY hKey; DWORD dwDisposition = REG_OPENED_EXISTING_KEY; LONG lRet = ::RegCreateKey

  • 怎么使自定义类型适用于32位或64位平台

    如何使自定义类型适用于32位或64位平台 如题.例如在一个头文件中定义:typedef int MyInt; MyInt 能在win32或者win64下使用: 为了这个头文件能在 32位或64位下使用,编译时候,自动区分MyInt是32位的int还是64位的int ------解决方案-------------------- 用条件编译 ------解决方案-------------------- 首先int和long在VC的32和64位下没有区别,不用在意 如果存在其他有区别的类型,或者在gc

  • 《java performance》读书笔记之java运用调优tips 《java performance》读书笔记之java运用调优tips

    <java performance>读书笔记之java应用调优tips 首先 java performance把应用中代码引起的性能问题分为以下几类: 1.低效的算法.数据结构 2.锁竞争 3.低效的代码 然后文章分门别类得列举了一些java应用中典型的性能问题和调优tip,主要讲解了以下几类问题的原因分析和排查解决思路: 一.系统态cpu资源消耗过高 cpu消耗中有两项主要的消耗是用户态和系统态资源消耗.系统态cpu消耗是指内核对系统资源进行调度时消耗的cpu资源,而用户态则是应用程序进程消

  • 玩转渗透神器Kali:Kali Linux作为主系统使用的正确姿势TIPS

    Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Linux 发行版,包含很多安全和取证方面的相关工具. 本文假设你在新装好的kali linux环境下-命令之前的说明带#的,表示需要root权限执行,带$的,表示普通用户权限. #安装好Kali后为系统添加一个新用户,建议设置密码和root的一样,以后默认都用这个用户登录系统,需要执行一次性的高权限命令时用sudo,执行一系列高权限命令时用su -. useradd -m -G video,audi

  • windows(64位)下用vagrant+virtualbox 治理虚拟机详解

    windows(64位)下用vagrant+virtualbox 管理虚拟机详解 windows下安装(64位) vagrant 跟 vituriebox http://blog.smdcn.net/article/1308.html Host: 127.0.0.1 Port: 2222 Username: vagrant Private key:xxxxx Tips:VirtualBox 的安装 要先于 vagrant 切记切记(PS:这两个文件最好是安装到他默认的C盘中) vagrant 命

  • 在淘宝里,他们小结的一些前端Tips

    在淘宝里,他们总结的一些前端Tips 在淘宝里,他们总结的一些前端Tips 2010年12月15日 3.2 - 3.5 1.[约定]文件命名全部都用小写和下划线,样式命名全部使用小写和连接符,JS的钩子使用"J_HiTao" 2.[HTML]需要为html元素添加自定义属性的时候,首先要考虑下有没有默认的已有的合适标签去设置,如果没有,可以使用以"data-"为前缀来添加自定义属性,避免使用"data:" 3.[约定]文件要求编码必须为GBK.G

  • iredmail运用tips iredmail运用tips

    iredmail使用tips DNS DNS记录,需要你到你的域名托管商那里进行设置或者你自己管理DNS服务器.不少域名托管商不支持txt记录或者不支持DKIM记录,所以你就无法使用SPF和DKIM的功能. DNS的修改,需要48小时以上才能生效. 国内的万网是不支持DKIM,目前新网是支持SPF和DKIM MX记录 邮件的MX记录最好是指向机器A记录,尽量不要直接指向IP地址(不符合规范). 添加A记录 mail.example.com 192.168.1.100 添加MX记录 example

  • PHP-FPM高载荷技巧 (PHP-FPM on highload tips)

    PHP-FPM高负载技巧 (PHP-FPM on highload tips) 原文地址:http://hi.baidu.com/pibuchou/blog/item/7cbccff0a3b77dc60b46e024.html 导致nginx 502 bad gateway的PHP-CGI(FASTCGI) NGINX频爆502 BAD GATEWAY的错误,看了网上的教程,仍没有彻底解决. 目前我总结的解决502 BAD GATEWAY的方式有: 1.视服务器的性能,在php-fmp.conf

  • C++程序32位编译成64位程序,有点项目无法设置为X64

    C++程序32位编译成64位程序,有些项目无法设置为X64 在win7 64位,VS2012环境下:我一个解决方案中有13个项目,以前是32位的,编译运行没问题.现在想编成64位,就按照项目(菜单中)->配置管理器->活动解决方案平台中 将win32改为X64,结果在下面的项目上下文框中只有2个项目变为X64,其他的手工设置也不行,出现 "未能创建此平台,因为已存在同名的解决方案平台"提示,是什么原因?好像也没有地方可以找到他们的X64配置. ------解决方案-----

  • 《深入java虚拟机二》之安全tips

    <深入java虚拟机2>之安全tips 发现有这么一本书在书架上,随便翻翻. 1.java的安全模型包括类装载体系.class文件4重校验.java内置安全特性.安全管理器和java api. 2.java类装载体系通过4个措施预防安全问题. (1)同一个命名空间(package)下只能加载一个相同类名的类. (2)委托父装载器优先加载防止非受信任类先于受信任类加载. (3)位于相同命名空间下(package)的类,jvm只授予使用相同classloader加载类具有包访问成员的权限.所以不要

  • 10个加速Table Views开发的Tips 10个加速Table Views开发的Tips

    本文由CocoaChina译者yake_099( 博客 )翻译,作者: David McGraw 原文: 10 Actionable Performance Tips To Speed Up Your Table View 在我们开始之前,我准备从今年开始多听取一个意见.请花一些时间通过这篇简短的调查给我们一些反馈.这将会帮助我来帮助你. 如果你曾经跟collectionview打过交道,你可能已经意识到了这篇文章的价值.如果你没有注意速度这将会是一个大问题,你的用户会让你了解的.当你的scro

  • 在 64 位 Ubuntu 上运行最新版本的 boinc-client 加入 WCG 的攻略

    基本上,现在大家的 Ubuntu 都是 64 位的了,但是 BOINC 的某些运算任务是 32 位的,所以需要做一些准备工作. apt-get update apt-get install libxss1 libstdc++5 ia32-libs freeglut3 然后下载这个安装包(到任何你喜欢的目录): wget http://boinc.berkeley.edu/dl/boinc_7.2.33_x86_64-pc-linux-gnu.sh chmod +x boinc_7.2.33_x8

  • 准备入 iPhone SE ,但不清楚选 16/64 Gb 的版本,老司机请帮忙。 准备入 iPhone SE ,但不清楚选 16/64 Gb 的版本,老司机请帮忙。

    如题, SE 准备用作备机,使用场景: - 准备当备机,因为比较小,所以临时出门时,可以直接装兜里.支持 Apple Play .直接带点零钱,卡基本上不用带了. 基本上不会装的 APP : - 游戏类 APP - 应该不会装.尤其是大型游戏,再说,小屏玩游戏,也是种折磨... - 视频类 APP - 我对此类 APP 无爱. - 屏幕太小,基本上用它当作 生产力工具 也不太靠谱,至少 长时间使用 键盘的 APP 不会装. 基本上 会装的 APP : - News 们 - 支付宝 们 - 团购

  • 树莓派 3 来了, 64 位处理器,内置 WiFi 及蓝牙,价格$35 不变。

    https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/ Raspberry Pi 3 featuring: A 1.2GHz 64-bit quad-core ARM Cortex-A53 CPU (~10x the performance of Raspberry Pi 1) Integrated 802.11n wireless LAN and Bluetooth 4.1 Complete compatibility with Ras

  • 树莓派 3 来了 4 核 64 位 1.2G 处理器 1G 内存 支持 WIFI 和蓝牙 4.1 售价依旧

    Raspberry Pi 3 搭载了 64 位四核 1.2GHz 处理器, 1GB LPDDR2 内存,完全兼容现已发布的应用程序.网络方面, Raspberry Pi 3 还直接板载了激动人心的 802.11n Wi-Fi 和蓝牙 4.1 支持. 估计某宝很快就有了. --cut-- yuewolf在2016-05-09 22:09:26回答到: 晕,发完才发现已经有人发布过了--

  • SelfStore 访谈:王巍与《Swifter - 100 个 Swift 必备 tips》 SelfStore 访谈:王巍与《Swifter - 100 个 Swift 必备 tips》

    23 Sep 2014 王巍与<Swifter - 100 个 Swift 必备 tips> 前言:近日王巍( @onevcat )发布了他的新书< Swifter - 100 个 Swift 必备 tips >,SelfStore 被选为这本书的发售渠道之一.趁着这个机会,SelfStore 与王巍进行了一次邮件访谈. 首先作一个自我介绍吧. 大家好,我叫王巍,一般在网络上用 onevcat 这个 ID.2011 年左右开始接触 Objective-C 和 iOS 开发,同时也在

  • Gmai Tips: 每个网站使用不同的帐号

    小明有一个 Gmail 邮箱, [email protected] .注册美团团可以这样写 [email protected] ,注册 Uber 康可以这样写 xiaoming + [email protected] .这样所有的邮件都会汇总到 [email protected] .如果有一天---,小明收到一个其他人发到 [email protected] 的邮件,小明就会知道是美团团把他的用户信息泄漏了. 配合 1Password 或

最新文章
  • 求助,大容量磁盘数据 克隆至 小容量磁盘 求助,大容量磁盘数据 克隆至 小容量磁盘

    如图所示,两个优盘,都是 16G ,但是磁盘 2 稍微小一点点,然后,磁盘 1 的镜像写入不进去. 求助 V 友,有什么办法可以克隆?毕竟磁盘 1 大多数空间未分配 --cut-- xbb7766在2016-05-08 13:43:40回答到: 是要直接覆盖掉磁盘 2 么?直接 dd 就可以了.因为磁盘 1 后面没分区. imydou在2016-05-08 13:43:40回答到: sudo dd if=/dev/pan1 of=/dev/pan2 @xbb7766 这样可以吗? hechaoj

  • 这十个国家美女对中国男人如此青睐 你想去吗? 这十个国家美女对中国男人如此青睐 你想去吗?

    调查显示,中国男女比例失调,男性明显多于女性.那中国的男同胞怎么办呢?世界这么大,美女这么多,随着中国经济迅速发展,中国男人越来越受世界女性青睐,更有国外媒体评选出最爱嫁中国男人的10国女性,有你愿意娶得吗? 1.乌克兰 乌克兰是一个女性数量严重过剩的国家,又因为斯拉夫民族血统使其成为美女如云的国家.但是,乌克兰并不富裕,与一些发达国家差距甚远.由此乌克兰女性都希望嫁到国外相对发达的国家去,如果能嫁到欧美当然最好,但女性被在欧美路上拐卖的案件比比皆是,最终,她们渴望嫁到一个离家近又相对富裕的中国

  • 陈洁仪《着迷》歌词 陈洁仪《着迷》歌词

    陈洁仪<着迷>歌词 作词:潘协庆 作曲:潘协庆 再不允许你多消失一秒 我的心早融化 我的爱正燃烧 在没遇见你生命若似漂浮的水草 游游荡荡 浮沉在熙攘人海 当伤心沐浴日光 当遗憾 宽阔在无垠蔚蓝 当呼吸 充满幸福芬芳 愿我的爱 也能让你温暖 我们要细水长流 我们要天空海阔 对我说 你爱我 真心爱我 让我为你着迷 当伤心沐浴日光 当遗憾 宽阔在无垠蔚蓝 当呼吸 充满幸福芬芳 愿我的爱 也能让你温暖 我们要细水长流 我们要天空海阔 对我说 你爱我 真心爱我 让我为你着迷 我们要偕老白头 我们要天长地

  • 吃素健康吗?吃素的误区 吃素健康吗?吃素的误区

    吃素健康吗?吃素的误区 吃素健康吗? 很多人都有吃素的习惯,并且大部分人都认为素食不仅有利于健康还能帮助大家减肥.怀着对素食的热衷,减肥瘦身者被素食深深吸引祝其实日常生活中也有一些吃素的误区,如果踏入误区就会让你的健康指数直线下滑. 吃素对心脏有益 吃大量的蔬菜.水果可以降低心脏病发和中风的机率,即使你曾经心脏病发也一样. 根据哈佛大学的研究指出,每天多吃一根胡萝卜或半粒番茄(富含胡萝卜的食物)的妇女,可以减少22%心脏病发和40-70%中风的机会. 在心脏病发之后,蔬菜水果也是一帖良药. 美国

  • htc desire a55配置怎么样?

    联发科MT6795,2.0GHz×8,64位 3GB内存 32GB存储空间 5.5英寸2K显示屏 2000万像素后置镜头 1300万像素/400万像素UltraPixel前置镜头 电池容量小于3000毫安时 Android 5.0,Sense 7.0 BoomSound扬声器 蓝牙4.1 HTC A55将会提供白色.玫瑰红.金色.灰色.金棕色以供选择,并支持DotView保护套.不过遗憾的是目前尚无这款新机的谍照流出. 据爆料,这款新机将会在本月亮相,提供两个版本,其中A55#UL面向欧洲.中东

  • NASA发现太阳系外最接近地球的“兄弟”(图) NASA发现太阳系外最接近地球的“兄弟”(图)

    据美国宇航局(NASA)官网消息,天文学家在太阳系外发现了一颗地球体积的岩石行星. 该行星位于天鹅座方向,距离地球400光年.这颗编号为"开普勒-78b"的行星每隔8.5小时绕其中央恒星公转一周.经过测算,其大小和质量甚至组成成分都和地球非常相似. 这个"兄弟"被称为Kepler-78b,距离地球700万光年,成分大部分为岩石和铁,表面和大气成分正在研究中.其出现有助于研究类似地球和太阳系的天体在宇宙中存在的可能性. 由于离中央恒星太近,它上面的温度过高,不适合生命

  • 哪些病人忌吃冷饮食品 哪些病人忌吃冷饮食品

    1.患有胃及十二指肠溃疡.慢性胃炎.慢性结肠炎以及长期腹泻.消化不良的病人,不宜吃冷饮食品.因为这些病人的消化系统功能较差,吃冷饮食品后,容易刺激胃肠粘膜,加重病情. 2.患有龋齿.牙本质过敏的人,也不宜吃冷饮食品,以免诱发牙痛. 3.患有高血压.冠心病.动脉粥样硬化的病人,不宜大量吃冷饮.因为,过量的冷饮食品进入胃肠后,会突然刺激胃,使血管收缩,血压升高,加重病情,并易诱发脑溢血. 4.患有咽喉炎.支气管炎.支气管哮喘和关节炎的病人,最好不吃冷饮食品.因为,冷饮食品的刺激,可使咽喉部炎症加重或

  • DLAN的定义是什么

    DLNA的全称是DIGITAL LIVING NETWORK ALLIANCE, 其宗旨是Enjoy your music, photos and videos, anywhere anytime, DLNA(Digital Living Network Alliance) 由索尼.英特尔.微软等发起成立.旨在解决个人PC,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能,目前成员公司已达280多家. 详细规范 DLNA将其整个应用规定成5

  • Jetty学习5:配置上下文

    Jetty学习五:配置上下文 这篇文件讲述配置Jetty上下文的各种选项. 设置上下文路径 上下文路径是一个URL路径的前缀,用于将一个输入请求对应到对应的上下文.Java Servlet Server的URL通常的格式为:http://hostname.com/contextPath/servletPath/pathInfo.如果没有上下文路径,则对应上下文为根上下文,根上下文必须被配置为"/". 你怎么设置上下文路径依赖你怎么部署web应用(或者ContextHandler): 用

  • 尝试cython跟openmp

    尝试cython和openmp 1. 初衷 最近学用python,python不愧是为程序员考虑的编程语言,写起来很快很方便,大大节省开发效率.而且,对于小规模程序,运行效率也不错.前两天写了一篇博文<[总结]学用python写程序>,大大地夸奖了python一番.不过这两天,我就受到"诅咒"了.数据规模稍微大一点,python的执行效率的差劲就体现出来了.这两天写的一个程序,尽管在我所知道的范围内,我做了python语言能做的优化,不过程序依然运行了五个小时之久.想把程序

热门推荐
  • 求救!升级 yosemite 后,硬盘无法抹掉,并从启动磁盘里消失了。 求救!升级 yosemite 后,硬盘无法抹掉,并从启动磁盘里消失了。 现在内置的固态硬盘,原是系统盘.昨天升级版新系统后,用TM还原10.9失败,重启后启动磁盘和Tm都找不到这个磁盘了. 从移动硬盘里的备份系统进入,磁盘工具里可以看到这个磁盘,但是仅有急救和分区两个选项,但分区里面所有操作都是灰色不可点击的. 磁盘的状态显示联机,类型为逻辑卷宗组.里面的系统分区貌似已被清空了. 现在搞了一天一夜,就是找不到方法.我只是想找系统用回10.9,求各位大神解救. --cut-- mystryl在2014-10-19 12:11:3回答到: 既然有TM,就好办,下10.9
  • 柳宗元的名言 柳宗元的名言 君子在下位则多谤,在上位则多誉;小人在下位则多誉,在上位则多谤. 言而无实,罪也. 妒人之能,幸人之失. 千山鸟飞绝,万径人踪灭.孤舟蓑笠翁,独钓寒山雪. 问春从此去,几日到秦原?凭寄还乡梦,殷勤入故园. 溪路千里曲,哀猿何处鸣?孤臣泪已尽,虚作断肠声. 二十年来万事同,今朝岐路忽西东.皇恩若许归田去,晚岁当为邻舍翁. 久为簪组束,幸此南夷谪.闲依农圃邻,偶似山林客.晓耕翻露草,夜榜响溪石.来往不逢人,长歌楚天碧. 渔翁夜傍西岩宿,晓汲清湘燃楚竹.烟销日出不见人,唉乃一声山水绿.回看天际下中流,
  • Photoshop打造唯美的古典淡蓝色树林人物图片 Photoshop打造唯美的古典淡蓝色树林人物图片 淡雅的古典色比较好把握,调色的时候可以直接降低主色饱和度得到初步的中性图片;然后给高光及暗部增加一点淡色增加古典味道;后期渲染一些烟雾,整体柔化处理做出唯美效果即可. 原图 最终效果 1.打开素材图片,创建色相/饱和度调整图层,对黄.绿.青进行调整,参数设置如图1 - 3,效果如图4.这一步快速把图片主色转为中性色. <图1> <图2> <图3> <图4> 2.按Ctrl + J 把当前色相/饱和度调整图层复制一层,效果如下图. <图5> 3.创
  • 巧用锚文字布置友情链接让SEO排名大提升 巧用锚文字布置友情链接让SEO排名大提升 说到SEO排名,站长们都未必兴奋,排名浮动或者根本就做不上去都已经成了家常便饭,那么在SEO排名或者优化过程中除了网站架构.页面元素,社会化意外,链接建设可以说是又一个重点,在SEO的链接建设中,友情链接又是最有效提高SEO排名的关键方法,但是即使是您找到友情链接资源,如果锚文字布置的不合理,对SEO排名也会有大大的影响,今天分享如何巧妙的布置您友情链接的锚文字,让SEO排名大幅度提升. 前提:您解决了网站架构.页面元素.链接层次问题. 一.锚文字的单一化与权重分配对比 单词优化的网站往往链接网