为什么 iOS 总能保持*高的升级率?

苹果软件工程高级副总裁克雷格・费德里吉(Craig Federighi)在采访中表示,iOS 每年都有着很长的待办清单,因此在抉择为 iOS 添加何种新功能时,是挺头疼的事,毕竟苹果有着很多有创意和脑洞的软件工程师。

%title插图%num

就拿刚刚发布的 iOS 15 来说,新系统的功能升级多是围绕“人与人之间的分享和连接”的软性升级,比较符合当下不少人的需求。另一方面,iOS 15 界面上改进的多是细节之处,亮点并不多,有些让人提不起兴趣。

我想,在决定 iOS 15 新功能时,克雷格在一堆的新功能中,*终选择了*适合当下的需求,而降低了新设计界面这些特性的优先级。但即使如此,在 iOS 15 Beta 版上线之后,大家升级的热情依然不减。

升级系统究竟为何?

随着 iPhone 不断热卖,市面上已经有了数以亿计的 iPhone,庞大的终端数量让 iOS 逐步成为主流的移动系统之一,同时,苹果基于 iOS 的服务也在不断地增加。

%title插图%num

Apple Arcade 游戏订阅服务。图片来自:Apple

除了 App Store,iOS 还有着 Apple Music,Apple News+,Apple Arcade,Apple TV+ 等一众流媒体服务,几乎涵盖了音乐、游戏、阅读、视频等方方面面。iOS 设备端几乎成为了一个各类服务的分发平台。

但为了能让这些服务更好的推向终端,得有个保持终端系统更新率的前提。在查看苹果官网介绍 iOS 一揽子服务的页面时,往往会有一行小字“make sure that it has latest version of iOS or iPadOS, macOS, or tvOS”,直白点说,你的设备得更新到*新的系统,才能用上这些*新的服务。

%title插图%num

根据苹果在 WWDC 之前所分享的数据,在过去四年推出的 iPhone 中,90% 的 iPhone 都安装了 iOS 14,而把样本扩大到所有 iPhone 的话,这个比例也有 85% 之多,这个数字已经相当的了不起,隔壁的 Android“都馋哭了”。

而没有安装 iOS 14 的 15% 中包括了无法运行新系统的设备,也就是处理器低于 A9 芯片。倘若把 iPadOS 也算作 iOS 的一个子分类的话,安装 iPadOS 14 的 iPad 比例则是 79%,要低于 iPhone,但考虑到 iPad 的使用周期更长,且多用作娱乐,有着如此的安装率也算是个很出色的成绩了。

%title插图%num

iOS 14

从这些数据来看,iOS 14 有着*高的安装率,四舍五入的话,几乎每一部 iPhone 都会升至*新的 iOS 14,系统碎片化对于 iOS 来说,似乎是个不存在的问题。

而把眼光拉长,近年来每一代的 iOS 系统都有着*高的升级率,如 iOS 13 达到 77%,iOS 12 达到 80%,iOS 11 达到 85%。值得注意的是,在新系统发布之后的几个月时间内,iOS 新系统的安装率会很快爬升到 50%。

抛开新 iPhone 出厂预装的缘故,也存在着一些其他的因素。究其根本,就是修补系统漏洞和修复系统的 Bug,以及引入新的功能和服务

%title插图%num

但从必要性上考虑,为了保证系统安全,新系统对漏洞的修补和 Bug 的修复很有必要升级。毕竟现在智能手机已经成为生活的中心,基本一切都在围绕它展开。而系统的漏洞,很容易被利用,从而泄露隐私或者被有心人士利用。

而系统的 Bug 会为日常使用带来不便。其实不论 iOS 还是 Android,每个大版本号更新时,都会带有一些系统 Bug,后续都会用很多的小版本来修复,以避免影响到平日使用。

%title插图%num

“扁平”的 iOS 7 与“拟物”的 iOS 6. 图片来自:hipertextual

到如今,iOS 已走过近 15 年的时光,整体来说已趋于成熟,近来新 iOS 的功能改变多是细节之上,已经很难出现当年 iOS 6 到 iOS 7 由“拟物”到“扁平”风格的大跃进。

由此来说,新系统的小功能、小设计已经没有那么大的动机促使人们去升级,反而是被新服务所取代。

如上文所提,Apple Music、Apple Arcade 等等这些新服务往往会依托在新系统版本之上。就拿近期的 ALAC 无损音频和杜比全景声功能来说,它就需要 iOS 更新至 14.6。后续的新系统或可能在自家服务的多样性上多下文章。

系统升级的动力已悄然变化

以往来说,系统更新多是一个主动性行为。即是用户知晓新系统,主动去设置中检查接收 OTA 推送,进而重启完成升级。或者,系统在接收到新系统推送后,提示用户去升级。

%title插图%num

但从现在 iOS 和很多定制 Android 系统们都开通了“无感升级”,在闲时或者夜间自动下载 OTA 更新包,从而完成“无感”升级。

苹果在 iOS 12 推出了“自动更新”功能,并且默认打开,不论是 iOS、iPadOS 还是 macOS 都有如此的选项,这也就是为何很多人一夜醒来枕边的 iPhone 就“换新”了的缘故。

这原本来说是个很贴心的功能,尤其是在修复突发的系统漏洞时,能够及时的快速修复,对于用户来说也是相当的必要。只是近来 iOS 新系统存在的 bug 过多,尤其是 iOS 14.5.1 的降频问题,“自动更新”功能无疑是徒增烦恼了。

%title插图%num

说到 iOS 新系统稳定性大幅下降,也不能不提苹果对老系统版本的“及时”关闭验证。还是拿 iOS 14.5.1 来举例,苹果在推出 iOS 14.5.1 之后,随手就把 iOS 14.5 的签名验证关了。

面对遇到“薛定谔”降频的 iPhone,你要么忍受降频,等 iOS 14.6 正式版本的推送,要么升级到更不稳定的 Beta 测试版,实属进退两难。

过早关闭旧系统的签名验证,防止设备系统的“回滚”,原本的目的是防止利用较低版本的 iOS 漏洞来突破 iPhone,初心还是为了安全。

%title插图%num

图片来自:ipertino.com

但*近对于 iOS 新系统维持较高安装率的一些不同的声音,也是基于苹果的这个举措,换句话说,对于苹果过于积*地关闭旧版本 iOS 的签名验证有所怨言,并且认为 iOS 新系统能够保持高安装率,与此举措有一定的关联。

其实,这二者并没有很强的相关性,首先通过 OTA 升级是一个很简单的过程,但反过来降级则需要备份和借助工具进行线刷,门槛高了很多,并非是普通用户可以操作,或者愿意去学习尝试。

再者,iOS 系统升级后遇到的一些小问题,并非影响到每个人,或者并非每个人都在意。总之,对旧系统的提前“关门”,与 iOS 新系统安装率提升的关联不大。

总的来说,官方对促进升级,其实还是在围绕填补漏洞、修复 Bug,和新功能、新服务上。至于那些为了更人性化而出现的“小手段”,是辅助但并非是决定性的因素。

iOS 诞生之时*大的优势是成熟稳定,经过多年的演化,它所涵盖的服务和功能越来越多,iOS 变得越来越复杂。自然地,每个 iOS 大版本的 OTA 安装包的体积也在不断的提高。

%title插图%num

图片来自:consideringapple

每次的更新,对于用户来说要求变得更高了,一是网络二是手机自身的容量(说的就是 64GB 的用户)。

为此,在 iOS 15 发布之时,苹果表示未来的更新或将为用户提供两个选项,可以选择获得 iOS 15 的所有新功能,或者选择只获得 iOS 14 的安全更新。等网络或者容量准备好之后,再去获得全量的升级。

如此举措的出发点还是 iOS 系统的安全至上。近年 iOS 不断地去强调“隐私保护”,较好的隐私保护也成为 iOS 系统现在的一个独特的功能。

%title插图%num

由此,我们在说到“隐私”时,我可以想到 iOS 14.5 带来的应用程序跟踪透明度功能,也能够想到 iOS 15 上新增的 iCloud Private Relay 功能。或许将来对于促进系统升级,可能还有“隐私”这张牌。

在互联网世界中,提供一系列的有效的隐私保护,光听起来就想让人*时间去升级和更新,毕竟谁不想要“隐私”,谁不想“隐身”呢?

归根到底,此前 iOS 获得很高的安装率,更多的是依靠新功能、新设计、新特色。而后续,当 iOS 装机量足够庞大,提供新的、有趣的、多样的服务会是促进新系统升级的动力。

到了现在,或者未来的新 iOS 系统上,更好的“隐私保护”会更有可能说服你去升级。只是,不论对 iOS 新系统的升级动机如何变化,前提都得是新系统足够的稳定和成熟。

16 岁高中生成功将 Linux 移植到 iPhone,并贴出详细指南

如果你的旧 iPhone 已经无法支持你日常使用了,你会怎么处理这部 iPhone 呢?卖掉还是留起来收藏呢?近日,国外一名 16 岁的小开发者在 YouTube 上发布了一则视频,展示了自己是如何将 Linux 移植到一部无法使用的 iPhone 7。

2020 年 3 月,Corellium 提出了 Project Sandcastle,通过使用 checkra1n 越狱程序在 iPhone 上成功运行 Android,激发了开发者对那些旧型号的 iPhone 进行“改造”的热情。此后,很多开发者尝试对自己的旧设备进行“改造”,试图将 Linux 发行版移植到那些旧型号的 iPhone 上,为这些本该“吃灰”的设备延长寿命。

近日,国外一名 16 岁的小开发者 Daniel Rodriguez 成功地将 Linux Ubuntu 20.04 移植到了 iPhone 上。

图片

图片来源于 xda-developers

据 Daniel 介绍,他使用的 iPhone 7 是他外婆的,这部设备已经完全无法访问 NVMe NAND,这意味着这部设备已经无法再运行 iOS 系统,就是大家常说的“变砖”,不过这部 iPhone 7 的硬件设备没有任何故障和损坏,于是 Daniel 拿来了这部手机,准备将它改造一番。

Daniel 参考并使用了 checkra1n,linux-sandcastle,projectsandcastle 等开源项目,同时自己编写了网桥设置 script/udev 规则来实现这一复杂的工作。*终成功地在这部 iPhone7 上运行了 Ubuntu 20.04。

Daniel 还在 Reddit 上分享了一份十分详细的指南,说明自己是如何成功制造出这部「iPhone 7 Ubuntu Edition」,有经验的开发者甚至可以直接按照该教程进行操作。而对于没有经验的用户,过程就会相对繁琐了不少,因为需要开发者事先手动编译内核并使用 checkra1n 访问 pongoOS 引导前执行环境。有兴趣的小伙伴可以移步 Reddit:

SUCCESS: iPhone 7 with dead NAND netbooting unmodified Ubuntu 20.04 arm64 over usb gadget ethernet
byu/newhacker1746 inlinux

Daniel 表示,他自己在家里搭建了一组服务器,用于运行自己的俱乐部网站和游戏服务器。现在,他把改造后的 iPhone 7 当作一台服务器用来分担他的服务器的负载。而 iPhone 7 的 A10 芯片也发挥出了超乎 Daniel 想象的性能。

尝试将 Ubuntu 移植到 iPhone 7 上并不奇怪,因为该 Ubuntu 系统对于 Linux 内核并不陌生。此前的 postmarketOS 项目就是将 Linux 引入 iPhone 7 和 iPhone 7 Plus。虽然在 iPhone 上安装像 Ubuntu 这样的 GNU / Linux 发行版不会给用户带来与 iOS 相同的使用体验,但将旧设备改造并成功运行 Linux 无疑是一件很酷的事情。

他将改造成功的经历和指南发布到 Reddit 上后,迅速引发了广大开发者和用户的关注,很多用户称他为「天才」,不过 Daniel 却很谦虚,他表示,“这些都应该归功于 Corellium、checkra1n 项目的开发人员、Linus Torvalds 以及 Linux 内核的所有贡献者、Ubuntu 和 Debian 维护者等等。他们是为这个项目制作所有作品的真正英雄,而我只是恰好在 iPhone 上组装了这些前辈们留下的拼图。”

HBase-scan API 通过scan读取表中数据

直接贴代码啦

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片

  1. /**
  2.      * 
  3.      * @param zkIp
  4.      * @param zkPort
  5.      * @param tablename
  6.      * @param startRow   传null扫全表
  7.      * @param stopRow 已~结尾
  8.      * @throws Exception
  9.      */
  10.     public static void scanTable(String zkIp,String zkPort,String tablename,String startRow,String stopRow) throws Exception {
  11.         HTablePool pool;
  12.         Configuration config = HBaseConfiguration.create();
  13.         config.set(“hbase.zookeeper.quorum”,zkIp);//
  14.         config.set(“hbase.zookeeper.property.clientPort”, zkPort);
  15.         pool = new HTablePool(config, 2);
  16.         HTableInterface hbTable = null;
  17.         try {
  18.             hbTable = pool.getTable(tablename); // 表名
  19.             ResultScanner rs = null;
  20.             Scan scan = new Scan();
  21.             // scan.addColumn(Bytes.toBytes(“cf1”),Bytes.toBytes(“qual1”));扫某一列
  22.             if (startRow != null) { // 设置扫描的范围
  23.                 scan.setStartRow(Bytes.toBytes(startRow));
  24.             }
  25.             if (stopRow != null) {
  26.                 scan.setStopRow(Bytes.toBytes(stopRow));
  27.             }
  28.             rs = hbTable.getScanner(scan);
  29.             hbTable.close();
  30.             for (Result r : rs) {// 按行去遍历
  31.                 for (KeyValue kv : r.raw()) {// 遍历每一行的各列
  32.                     StringBuffer sb = new StringBuffer()
  33.                             .append(Bytes.toString(kv.getRow())).append(“\t”)
  34.                             .append(Bytes.toString(kv.getFamily()))
  35.                             .append(“\t”)
  36.                             .append(Bytes.toString(kv.getQualifier()))
  37.                             .append(“\t”).append(Bytes.toString(kv.getValue()));
  38.                     System.out.println(sb.toString());
  39.                     // kv.getRow() key
  40.                     // kv.getFamily() cf1
  41.                     // kv.getQualifier() 列名
  42.                     // kv.getValue() value
  43.                 }
  44.             }
  45.         } catch (Exception e) {
  46.             System.out.println(e.getMessage());
  47.         }finally{
  48.             pool.close();
  49.         }
  50.     }

为什么服务器大多使用Linux?

1.开放性 开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。

2.多用户 多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。Linux和Unix都具有多用户的特性。

3.多任务 多任务是现代计算机的*主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程,平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。事实上,从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。

4.良好的用户界面 Linux向用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即shell,它既可以联机使用,又可存在文件上脱机使用。shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个 Shell程序,这个程序可以单独运行,也可以与其他程序同时运行。 系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。

5.设备独立性 设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。 具有设备独立性的操作系统,通过把每一个外围设备看作一个独立文件来简化增加新设备的工作。当需要增加新设备时、系统管理员就在内核中增加必要的连接。这种连接(也称作设备驱动程序)保证每次调用设备提供服务时,内核以相同的方式来处理它们。当新的及更好的外设被开发并交付给用户时,操作允许在这些设备连接到内核后,就能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问。 Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,随着更多的程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。

6.提供了丰富的网络功能 完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。 支持Internet是其网络功能之一。Linux免费提供了大量支持Internet的软件,Internet是在Unix领域中建立并繁荣起来的,在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。 文件传输是其网络功能之二。用户能通过一些Linux命令完成内部信息或文件的传输。 远程访问是其网络功能之三。Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,一位技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地方。

7.可靠的系统安全 Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。

8.良好的可移植性 可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。 Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接口。

什么时候用linux系统多

什么时候用linux系统多【199cloud-艾娜】

kvm

Kernel-based Virtual Machine的简称,是基于内核的开源虚拟化,在Linux2.6.20之后集成在各个主要的发行版本。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。在2008年的时候,红帽发言人表示,KVM相比Xen有着更好的可管理性以及更高的性能。因此RHEL6以及之后的版本,默认支持KVM,而放弃了Xen。

Xen

Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发。Xen通过一种叫做半虚拟化的技术获得高效能的表现(较少的效能损失, 典型的情况下大约损失 2%, 在*糟的情况下会有 8% 的效能耗损; 与其它使用完全的虚拟化却造成*高到 20% 损耗的其他解决方案形成一个明显的对比),甚至在某些与传统虚拟技术*度不友好的架构上(x86),Xen也有*佳的表现。但是Xen的操作比较复杂,维护成本比较高。不支持windows虚拟机。

VirtualBox

VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。VirtualBox号称是*强的免费虚拟机软件,它不仅具有丰富的特色,而且性能也很优异!VirtualBox 是由 qemu 改写而成,包含大量 qemu 代码。可以使用于不支持虚拟化的cpu。值得说的一点:VirtualBox 在图形方面比较好,能进行2D 3D加速。操作上有独立的图形界面,易于上手。但对CPU的控制不是很好,比较适合有桌面需要的虚拟机。

VMware Workstation

VMware Workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的*佳解决方案。