<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/rss.xsl" type="text/xsl"?>
<rss version="2.0">
  <channel>
    <title>IT瘾手机推荐</title>
    <link>https://itindex.net/categories/手机</link>
    <description>IT社区推荐资讯 - ITIndex.net</description>
    <language>zh</language>
    <copyright>https://itindex.net/</copyright>
    <generator>https://itindex.net/</generator>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>https://itindex.net/images/logo.gif</url>
      <title>IT社区推荐资讯 - ITIndex.net</title>
      <link>https://itindex.net/categories/手机</link>
    </image>
    <item>
      <title>Omdia：2025 年华为时隔五年重夺中国大陆智能手机市场第一</title>
      <link>https://itindex.net/detail/63142-omdia-%E5%8D%8E%E4%B8%BA-%E4%B8%AD%E5%9B%BD%E5%A4%A7%E9%99%86</link>
      <description>&lt;div&gt;
									  &lt;div&gt;
									     &lt;a href="https://www.donews.com/&amp;#8203;"&gt;&lt;/a&gt;
									&lt;/div&gt;
									  &lt;div&gt;
									     &lt;div&gt;    &lt;p&gt;DoNews1月15日消息，Omdia 今日发布的最新研究显示，2025 年，中国大陆智能手机市场全年出货量为 2.823 亿台，小幅下滑 1%。排名如下：华为以 4680 万台的出货量时隔五年重回第一，占据 17% 市场份额；vivo 紧随其后排名第二，出货量 4600 万台，市场份额为 16%。&lt;/p&gt;
    &lt;p&gt;     &lt;img src="https://img6.donews.com/img/2026/01/15/img_pic_491768483348.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
    &lt;p&gt;苹果凭借第四季度的出色表现，全年出货量 4590 万台，跻身市场前三；小米出货 4370 万台，OPPO 出货 4280 万台，分别位列第四第五。&lt;/p&gt;
    &lt;p&gt;     &lt;img src="https://img6.donews.com/img/2026/01/15/img_pic_291768483354.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
    &lt;p&gt;2025 年第四季度，得益于年末促销及国补政策的延续，大盘跌幅有所收窄，中国大陆智能手机市场四季度同比下降 1%，出货 7640 万台。苹果以 1650 万台的出货量得到第一，占据 22% 市场份额；vivo 排名第二，出货量 1195 万台，市场份额为 16%。&lt;/p&gt;
    &lt;p&gt;     &lt;img src="https://img6.donews.com/img/2026/01/15/img_pic_551768483366.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
    &lt;p&gt;OPPO 市场表现同比回升，出货量 1160 万台，排名相较去年同期上升两位，跻身市场前三；华为出货 1110 万台，排名第四，小米出货 1000 万台紧随其后。&lt;/p&gt;
    &lt;p&gt;     &lt;img src="https://img6.donews.com/img/2026/01/15/img_pic_571768483370.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
    &lt;p&gt;     &lt;img src="https://img6.donews.com/img/2026/01/15/img_pic_471768483374.jpg"&gt;&lt;/img&gt;&lt;/p&gt;&lt;/div&gt;
									&lt;/div&gt;
								  &lt;/div&gt;
								
							  
						&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/63142-omdia-%E5%8D%8E%E4%B8%BA-%E4%B8%AD%E5%9B%BD%E5%A4%A7%E9%99%86</guid>
      <pubDate>Thu, 15 Jan 2026 21:22:59 CST</pubDate>
    </item>
    <item>
      <title>将 Android 手机变成监听工具</title>
      <link>https://itindex.net/detail/62947-android-%E6%89%8B%E6%9C%BA-%E7%9B%91%E5%90%AC</link>
      <description>之前的实验表明，智能手机中的陀螺仪和加速计等惯性测量单元（IMU），可以通过检测声波振动监听对话。这意味着，即使是一个没有开启麦克风权限的应用程序也可以通过 IMU 获得对话内容。为了不让攻击者获得准确信息，Google 将 Android 应用从 IMU 采样数据的频率限制在每秒 200 次，使攻击者无法准确获得对话内容。根据发表在预印本平台 arXiv 上的预印本，研究人员发现了一个漏洞——通过欺骗陀螺仪和运动传感器在时间上稍微偏移地进行测量，将应用实际采样率从每秒 200 次提高到 400 次，可以突破上述保护措施。利用这种方法，攻击者能修复获得的音频量大大提升。与每秒仅采集 200 个样本相比，他们的方法在 AI 转录时单词错误率降低了 83%。这表明，目前的安全保护措施“不足以防止复杂的窃听攻击发生”，应该对其重新评估。
 &lt;p&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62947-android-%E6%89%8B%E6%9C%BA-%E7%9B%91%E5%90%AC</guid>
      <pubDate>Tue, 15 Oct 2024 23:48:56 CST</pubDate>
    </item>
    <item>
      <title>你现在可以在笔记本电脑、手机和树莓派上运行 AI 模型 LLaMA</title>
      <link>https://itindex.net/detail/62677-%E7%AC%94%E8%AE%B0%E6%9C%AC-%E7%94%B5%E8%84%91-%E6%89%8B%E6%9C%BA</link>
      <description>单机版大语言模型正快速向我们走来。自 ChatGPT 发布以来，一些人就对 AI 模型内置的对敏感话题的限制以及需要为使用 API 向 OpenAI 付费而感到沮丧。大语言模型的开源方案也存在，但距离普通人很遥远，它们或者需要大量的 GPU 显存和存储空间，或者在消费级硬件上达不到 GPT-3 级别的性能。但 Meta 的 LLaMA 改变了这一现状。2 月 24 日 Meta 宣布了它的大语言模型 LLaMA，参数规模在 70 亿到 650 亿之间，它还没有开源，只是提供给一部分研究人员预览。但在 3 月 2 日有人通过 BT 泄露了 LLaMA。随后开源社区迅速围绕 LLaMA 进行优化和开发，使其能运行在普通人能访问的硬件上。3 月 11 日 Georgi Gerganov 创建了能运行在 M1 Mac 的 llama.cpp；12 日 Artem Andreenko 在 4GB 内存的树莓派 4 上运行 LLaMA 7B（生成速度 10 sec/token）；13 日有人设法在 Pixel 6 手机上运行 llama.cpp；同一天斯坦福研究人员发布了 LLaMA 7B 的优化版 Alpaca 7B，性能接近 OpenAI 的 text-davinci-003 但硬件需求低得多。
 &lt;p&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62677-%E7%AC%94%E8%AE%B0%E6%9C%AC-%E7%94%B5%E8%84%91-%E6%89%8B%E6%9C%BA</guid>
      <pubDate>Tue, 14 Mar 2023 13:34:08 CST</pubDate>
    </item>
    <item>
      <title>最具性价比的A15手机！iPhone SE 3渲染图曝光：还是熟悉的味道</title>
      <link>https://itindex.net/detail/62084-%E6%80%A7%E4%BB%B7%E6%AF%94-a15-%E6%89%8B%E6%9C%BA</link>
      <description>&lt;p&gt;【TechWeb】近段时间以来，除了新一代的iPhone14系列外，关于新机iPhone SE3的消息也越来越多。此前有媒体称，该机将在今年的春季新品发布会上与我们见面，有望成为最具性价比的A15手机。随着发布时间的日益临近，关于该机各方面的爆料也更加密集。现在有最新消息，近日有外媒进一步晒出了据称是该机的外观渲染图。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" border="0" src="http://upload.techweb.com.cn/2022/0204/1643967404933.png" title=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;据外媒letsgodigital最新根据网上信息绘制的渲染图显示，全新的iPhone SE 3在外观上将基本延续前作iPhone SE 2020的设计思路，将依旧采用一块4.7寸液晶屏，不过还有一种说法是该机会采用刘海屏设计，目前尚不清楚具体的方案。此外，该机正面将保留Touch ID指纹识别，背部则依旧后置单摄像头，三围尺寸为138.4 x 67.3 x 7.3mm。&lt;/p&gt;
 &lt;p&gt;其他方面，根据此前曝光的消息，全新的iPhone SE 3将搭载iPhone 13系列同款的苹果A15仿生芯片，是智能手机中性能最强悍的芯片，还支持5G网络，这是iPhone SE系列第一款5G机型。同时，该机还将配备4GB内存，存储空间也将会升级到128GB起步。此外，该机将后置一颗1200万像素摄像头，支持夜景模式、智能HDR等。值得注意的是，iPhone SE 3考虑到5G功耗较高，苹果可能将会为其配备更大容量的电池。&lt;/p&gt;
 &lt;p&gt;据悉，全新的iPhone SE 3最早有望在3月份前后举办的春季新品发布会上与大家见面，传闻称该机将会保持与iPhone SE 2020相同的价格——490欧元（约合人民币3500元）。如果该爆料属实的话，那么该机将成为迄今为止性价比最高的A15手机。更多详细信息，我们拭目以待。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#25991;&amp;#31456;" border="0" src="http://s1.techweb.com.cn/static/img/20180614.png"&gt;&lt;/img&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62084-%E6%80%A7%E4%BB%B7%E6%AF%94-a15-%E6%89%8B%E6%9C%BA</guid>
      <pubDate>Fri, 04 Feb 2022 17:36:44 CST</pubDate>
    </item>
    <item>
      <title>手机关了 GPS 还会被定位，一项新研究能阻止位置隐私泄露</title>
      <link>https://itindex.net/detail/61678-%E6%9C%BA%E5%85%B3-gps-%E7%A0%94%E7%A9%B6</link>
      <description>&lt;p&gt;你知道吗？即使你的手机关闭 GPS 定位，你的位置信息也会被追踪到。这是因为你的手机会向你附近的手机信号塔显示个人标识符，这样运营商就知道了你的位置，并且你的位置数据可能会因此被泄露给第三方的数据收集行业。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#25163;&amp;#26426;&amp;#20851;&amp;#20102;GPS&amp;#36824;&amp;#20250;&amp;#34987;&amp;#23450;&amp;#20301;&amp;#65311;&amp;#36825;&amp;#39033;&amp;#26032;&amp;#30740;&amp;#31350;&amp;#33021;&amp;#38459;&amp;#27490;&amp;#27844;&amp;#38706;&amp;#20301;&amp;#32622;&amp;#38544;&amp;#31169;" src="https://img.ithome.com/newsuploadfiles/2021/8/6249b1b5-e2db-4cae-9025-c274008f50e5.jpg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;美国南加州大学和普林斯顿大学的两位研究人员找到了一种能够阻止蜂窝网络泄露隐私的方法，能够使手机用户正常使用移动网络连接的同时，保护用户的位置数据等隐私信息。&lt;/p&gt; &lt;p&gt;研究人员称，所有运营商都可以采用这种技术，只需要简单的软件升级就可以实现用户位置信息的保护，而不必去改变任何硬件设备。&lt;/p&gt; &lt;p&gt;这项新技术名为“优良手机加密（Pretty Good Phone Privacy，PGPP）”，于 8 月 11 日在 USENIX 安全会议上展示，研究论文已于 2020 年 9 月 18 日预发表在论文预发表平台 arXiv 上，论文以该新技术命名。&lt;/p&gt; &lt;p&gt;  &lt;img src="https://img.ithome.com/newsuploadfiles/2021/8/ebe8be6a-d368-4e0e-904a-d27cb499e318.jpg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;论文链接：&lt;/strong&gt;  &lt;a href="https://arxiv.org/pdf/2009.09035.pdf" target="_blank"&gt;https://arxiv.org/pdf/2009.09035.pdf&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;一、你的位置被手机信号塔“出卖”了&lt;/h2&gt; &lt;p&gt;你有没有想过，为什么你刚刚到达一个新城市，就会收到运营商的问候信息？运营商是怎么知道你在哪里的？没错，就是你身边的信号塔“出卖”了你。&lt;/p&gt; &lt;p&gt;每张 SIM 卡都拥有一个永久的 ID 号码，被称作“国际移动用户识别码（IMSI）”。你的手机如果想正常工作，它就会向附近的信号塔出示自己的 IMSI，这样运营商就可以知道你是谁、你有没有缴费以及你在哪个信号塔附近。&lt;/p&gt; &lt;p&gt;“当你的手机接受或发送数据时，无线电信号会从你的手机发送到手机信号塔，然后进入网络。网络可以获取所有的数据并将其出售给第三方公司或者出租信息的中间商。即使你禁止应用程序跟踪你的位置，手机仍然可以与信号塔交换数据，这意味着运营商随时都可以知道你在哪里。”论文的作者之一，南加州大学助理教授 Barath Raghavan 说。&lt;/p&gt; &lt;p&gt;在美国，没有任何一条联邦法律限制第三方使用用户的位置数据，因此专门买卖用户数据的“数据经纪人”和运营商可以从用户的位置信息等数据中获利。&lt;/p&gt; &lt;p&gt;据美国媒体 WIRED 报道，美国的主要运营商们尽管承诺不会销售用户数据，但仍然在暗地里将这些数据出售给第三方，直到美国联邦通信委员会对 AT&amp;amp;T、T-Mobile、Verizon 等运营商做出了合计近 2 亿美元的罚款才停止了这种行为。&lt;/p&gt; &lt;h2&gt;二、给手机的“身份证”加密，让用户匿名上网&lt;/h2&gt; &lt;p&gt;为了解决信息泄露的问题，Barath Raghavan 同普林斯顿大学的 Paul Schmitt 一起开展了研究。他们发现，在手机联网过程中，身份验证环节可以和后续的联网相分离，也就是说，用户个人的身份信息不必接入网络。&lt;/p&gt; &lt;p&gt;PGPP 通过打破用户手机和手机信号塔之间的直接通信线路来工作。通过这一方法，手机不会向手机信号塔发送个人身份信息，而是发送加密令牌。用户上网过程的身份认证工作交由 PGPP 网关来完成，而不必被上传至网络。&lt;/p&gt; &lt;p&gt;  &lt;img src="https://img.ithome.com/newsuploadfiles/2021/8/2750c7bb-5b9e-488c-8cbe-35426984e51c.jpg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;▲ 手机通过传统方式上网与通过 PGPP 上网过程区别示意图&lt;/p&gt; &lt;p&gt;“解决问题的关键在于，如果你想匿名，该怎么让运营商知道你已经缴了费。在我们开发的协议中，用户支付账单后可以从服务提供商那里获得具有加密签名的令牌，用户可以通过令牌认证身份上网。我们的方法让用户的身份信息与位置信息相分离，这样就能使用户在接入网络的过程中匿名。”Barath Raghavan 说。&lt;/p&gt; &lt;p&gt;PGPP 的目标是避免使用唯一标识符来验证客户和授予网络访问权限。通过这项技术，网络通过匿名令牌识别用户，而运营商可以为全部用户发放相同的 IMSI 号码或者其他任何随机 ID，这样就可以避免用户被人通过网络追踪。&lt;/p&gt; &lt;p&gt;Barath Raghavan 和 Paul Schmitt 在实验室中用几部手机、一台运行 Linux 系统的电脑以及一个无线电平台 USRP B210 制作了原型系统，并在手机中安装了可编程的 SIM 卡对 PGPP 技术进行了测试。&lt;/p&gt; &lt;p&gt;他们发现这种新技术跟传统方式相比几乎没有增加任何网络延迟，也没有给网络连接增加多余的负担。运营商采用这种技术后，可以在单个服务器上处理数千万用户的匿名联网需求，并且通过现有网络无缝地部署给客户。&lt;/p&gt; &lt;p&gt;另外，由于该系统的工作原理是防止信号塔识别到用户身份，从而隐去用户的位置信息，因此其他基于位置信息的网络服务仍然可以正常使用。&lt;/p&gt; &lt;p&gt;  &lt;img src="https://img.ithome.com/newsuploadfiles/2021/8/b4760b1c-cc18-44cd-b57f-8f267a047146.jpg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;▲ 研究人员组成的测试平台&lt;/p&gt; &lt;h2&gt;三、PGPP 让第三方获取的用户数据失效&lt;/h2&gt; &lt;p&gt;为了使这项技术更好的在美国的电信公司内推广，Barath Raghavan 和 Paul Schmitt 创办了一家名为 Invisv 的初创公司。他们说，运营商想要采用这种新开发的技术很容易，但是就算一切顺利，在全美推广也是个漫长的过程。&lt;/p&gt; &lt;p&gt;不过他们认为只要有几家运营商采用了这一技术，情况就可以产生很大的变化。因为如果一部分用户的位置数据变得不准确，那么包含这些数据的整批数据都没那么可靠了，也就是说这些数据对于想要获取用户信息的第三方来说将变得没有意义。&lt;/p&gt; &lt;p&gt;研究人员希望这项技术能够被主流的运营商所采用。“地球上的几乎每个人都可以被实时追踪，我们不得不默默地接受我们对自己数据控制权的丧失。我们相信，这项技术能够使我们恢复一部分控制我们个人数据的权利。”Raghavan 说道。&lt;/p&gt; &lt;h2&gt;结语：让运营商放弃既得利益，PGPP 推广充满波折&lt;/h2&gt; &lt;p&gt;长期以来隐私保护一直是公众热议的话题，随着互联网技术的快速发展，隐私泄露问题时有发生。&lt;/p&gt; &lt;p&gt;目前已经有不少国家和地区针对面部识别进行立法，以保护公众的面部数据隐私。关于用户上网过程中的身份信息、位置信息等泄露问题正引起更多的重视。&lt;/p&gt; &lt;p&gt;美国部分运营商曾被爆出出售用户信息获利，如果 PGPP 能够得到推广，这条利益链条便会被斩断，显然这些运营商们不会主动放弃既得利益。因此，PGPP 要得到推广必定会充满波折。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/61678-%E6%9C%BA%E5%85%B3-gps-%E7%A0%94%E7%A9%B6</guid>
      <pubDate>Fri, 13 Aug 2021 22:22:12 CST</pubDate>
    </item>
    <item>
      <title>28个免费数据源网站，不要白不要_手机搜狐网</title>
      <link>https://itindex.net/detail/61668-%E5%85%8D%E8%B4%B9-%E6%95%B0%E6%8D%AE-%E7%BD%91%E7%AB%99</link>
      <description>&lt;div&gt;    &lt;p&gt;   &lt;strong&gt;1.中国国家数据中心&lt;/strong&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;http://data.stats.gov.cn/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;在中国国家数据中心，用户可以查找到所需要的最全面最权威的数据信息，了解最新的数据法规及制度。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;2.中国统计信息网&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.tjcn.org/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;国家统计局的官方网站，上面汇集了海量的全国各级政府各年度的国民经济和社会发展统计信息，用户还可以在上面找到统计年鉴、阶段发展数据、统计分析、经济新闻、主要统计指标排行等。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;3.香港政府数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.gov.hk/en/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;这是香港特别行政区政府公共部门信息门户，该门户网站由政府首席信息官办公室负责维护，其中的数据集由不同的政府部门和公共/私人组织提供。你可以免费用于下载，分发，复制，重复使用或链接等商业或非商业活动。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;4.纽约市开放数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://opendata.cityofnewyork.us/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;纽约市开放式数据中心致力于搭建一个数据交流、交换、分享的平台，既包括纽约市政府开放的各门类公共数据，也包括私人机构和企业公布的非公共数据。任何人都可以搜索、检察、下载、使用这些数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;5.纽约政府数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.ny.gov/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;该网站是纽约市政府名下的一个关于政策、程序和工具的数据信息门户，在数据时代为公众和政府提供了可公共访问的合作和分析数据&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;6.&lt;/strong&gt;      &lt;strong&gt;澳大利亚国家开放数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://data.gov.au/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;这是澳大利亚开放式数据信息门户，用户可以在这个网站查找，访问和反复使用公共数据，其网站团队是基于政府及用户的反馈来发布新的数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;7.英国国家数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.gov.uk/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;在这个网站用户可以查找政府部门和机构、公共机构和地方当局公布的数据，并使用这些数据来了解更多关于政府如何工作，或用于进行研究，构建应用程序和服务等。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;8.日本统计局&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.stat.go.jp/&lt;/p&gt;    &lt;p&gt;      &lt;img height="424" width="557"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;该网站上各方面统计数据由日本统计局与统计中心提供，网站会定期发布统计报告。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;9.美国劳工统计局&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://www.bls.gov/data/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;美国劳工统计局是美国联邦政府劳动经济和劳工统计的主要机构，负责收集、加工、分析、以及向公众发布重要的统计数据。用户可以在网站上搜索到包括通货膨胀与价格、消费支出、失业数据、就业数据、福利待遇、产出率、工伤统计等信息。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;10.经合组织（OECD）&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.oecd.org/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;用户可在此网站查找、比较和分享最新的经合组织数据，如图表、地图、表格和相关出版物等。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;11.欧盟数据门户&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://www.europeandataportal.eu/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;欧盟数据开放平台中的数据库包括地理、统计、气象数据，以及来自公共资金研究项目的数据和数字化图书等，平台中的数据集均由欧盟收集、购买，再免费提供给所有的用户，来自欧盟以及其他地区的用户都可以到平台上直接下载数据用于分析、开发创新服务或应用等用途。&lt;/p&gt;    &lt;p&gt;金融开放数据&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;12.中国保险数据&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.circ.gov.cn/web/site0/tab5179/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;用户可以在这个网站上查到国家宏观上最新的保险统计数据报告，保险业经营情况，保险公司保费收入情况等保险相关的数据信息。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;13.中国保险网——数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.china-insurance.com/info/list.aspx?cid=21&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;在中国保险网内的数据中心里，用户可以查到具体一家保险公司的各项数据情况，相较于中国保险数据网的信息更为精细。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;14.和讯保险数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://datainfo.stock.hexun.com/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;和讯保险数据中心里，用户可以查到全国和地方的保险相关的数据及其可视化图表，可清晰地看到保险行业的各项指标的变化趋势。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;15.世界银行数据库&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.worldbank.org.cn/?year_high_desc=false&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;世界银行数据库列出了世界银行数据库的七千多个指标，所有用户都可以免费使用和分享数据。用户也可以按照国家、指标、专题和数据目录浏览数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;16.CEIC&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.ceicdata.com/zh-hans&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;网站拥有一套最完整的超过128个国家的经济数据，能够精确查找GDP, CPI, 进口，出口，外资直接投资，零售，销售，以及国际利率等深度数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;17.Wind（万得）&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.wind.com.cn/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;万得被誉为中国的Bloomberg，在金融业有着全面的数据覆盖，金融数据的类目更新极快，很受国内的商业分析者和投资人的亲睐。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;18.搜数网&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.soshoo.com/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;已加载到搜数网站的统计资料达到8788本,涵盖2006664张统计表格和407992416个统计数据，汇集了中国资讯行自92年以来收集的所有统计和调查数据，并用户提供多样化的搜索功能。&lt;/p&gt;    &lt;p&gt;其他机构开放数据&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;19.Open Data Inception&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://opendatainception.io/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;网站记录了2600+个开放式数据信息门户网站，可直接通过地图精准找到你需要的不同地区的数据门户网站。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;20.Open Data 500&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.opendata500.com/us/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;Open Data 500是首个以开放政府数据来产生新的业务和开发新的产品和服务的综合研究性美国公司。研究机构可以发布网站上收集的数据，企业、组织和公民也可以分析网站上的数据，并使用这些信息。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;21.英国开放式数据研究所&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://theodi.org/about&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;网站汇集了各类商业和非商业组织以及围绕特定部门的政府机构来帮助人们识别和处理数据网络，旨在共同建立一个强大的数据基础设施，提供Web规模的开放式创新。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;22.数据美国&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://datausa.io/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;美国大数据(Data Usa)主要研究宏观的社会联系，在海量数据中找出人们的某个被忽略的特征。网站根据地区、行业、职业、教育背景做了初步的分类，用户可以进入任何你想了解的部分，探索美国社会局部的详细情况。它们也提供了地图式的阅读视图。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;23.亚马逊公共数据集&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://amazonaws-china.com/cn/public-datasets/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;网站来自亚马逊的跨科学云数据平台，其中包含化学、生物、经济等多个领域的数据集，当数据在 AWS 上公开提供后，任何人都可以分析任意数量的数据，而无需自行下载或存储这些数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;24.伯克利亚数据实验室&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.lib.berkeley.edu/libraries/data-lab&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;数据实验室是由当前加州大学伯克利分校的学生和教员提供有关数字数据的研究，他们会查找并推荐好的数据源到网站，并会对像文件格式转换、网页抓取和基本统计软件等技术数据问题提供咨询。实验室还提供工作站分析软件如ArcGIS、SAS、SPSS、STATA，Stata，R和Python等。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;25.IPUMS&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://www.ipums.org/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;IPUMS是普查数据的集成网站，用户可以查询包括人口、地理、居民生活、收入和消费信息等普查数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;26.数据世界&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://ourworldindata.org/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;数据世界这个网站像是一本在线出版物，它展示了生活条件是如何变化的。其目的是提供一个全球的概览，并显示各类信息在很长一段时间的变化。它涵盖了健康趋势，粮食供应，收入的增长和分配，暴力，权利，战争，文化，能源使用等主题的分析和可视化数据，所有用户可以在上面免费下载数据和代码。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;27.figshare&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://figshare.com/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;这是一个研究成果共享平台，在这里用户可以看到来自世界各地的专业人士的研究成果分享，同时也获取其中的研究数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;28.github&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://github.com/caesar0301/awesome-public-datasets&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;github为用户整理了非常全面的数据获取渠道，包含各个细分领域的数据库资源，自然科学和社会科学的覆盖都很全面，用户可以自己获取数据去做研究和数据分析。&lt;/p&gt;    &lt;p&gt;在互联网高度发达的今天，数据资源异常的丰富和庞大，      &lt;strong&gt;如何高效地获取数据成为一种重要的能力&lt;/strong&gt;，利用好互联网带给我们的便利，将这些可以利用的资源整合起来，肯定会对自己的学习研究工作有很大的帮助。&lt;/p&gt;    &lt;p&gt;在后台回复      &lt;strong&gt;“资源”&lt;/strong&gt;可获得更多开放数据资源链接~&lt;/p&gt;    &lt;p&gt;▼&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;如何成为一名数据科学家 | 面试篇(附视频中字)&lt;/p&gt;    &lt;div&gt;&lt;/div&gt;声明：该文观点仅代表作者本人，搜狐号系信息发布平台，搜狐仅提供信息存储空间服务。&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/61668-%E5%85%8D%E8%B4%B9-%E6%95%B0%E6%8D%AE-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Sun, 08 Aug 2021 15:18:13 CST</pubDate>
    </item>
    <item>
      <title>震惊！手机恢复出厂设置数据仍可“复活”，一两毛钱就能获取你的基本信息！</title>
      <link>https://itindex.net/detail/61324-%E6%89%8B%E6%9C%BA-%E6%95%B0%E6%8D%AE-%E5%A4%8D%E6%B4%BB</link>
      <description>&lt;p&gt;  &lt;img src="https://static.leiphone.com/uploads/new/images/20210411/6072b65232530.jpg?imageView2/2/w/740"&gt;&lt;/img&gt;4月10日消息，据央视财经频道新闻报道，手机在恢复出厂设置后，仍然可以通过特殊手段来恢复数据。&lt;/p&gt; &lt;p&gt;就此新闻报道后，关于手机隐私泄露又再次引起了人们的担忧。 &lt;/p&gt; &lt;p&gt;对此，在微博上有网友表示，“从来不卖旧手机，我宁愿放着”，“害怕第三方保留数据”，大家更愿意放着闲置，也不想承担数据泄露的风险。&lt;/p&gt; &lt;p&gt;   &lt;img src="https://static.leiphone.com/uploads/new/images/20210411/6072b6d00e0d8.png?imageView2/2/w/740"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;不过可以理解的是，大部分人使用手机不会超过三到四年，就会考虑换新机。在换手机之前，大家都会进行清空和恢复出厂设置，结果这只是从表面上删除了数据，实际上，一些基本数据和重要信息是可以“复活”的！&lt;/p&gt; &lt;h3&gt;怎么做到数据“复活”？&lt;/h3&gt; &lt;p&gt;  &lt;img src="https://static.leiphone.com/uploads/new/images/20210411/6072b702b1bad.png?imageView2/2/w/740"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;数据“复活”，对于技术人员来说是“零门槛”。 &lt;/p&gt; &lt;p&gt;如今在各大电商平台上，搜索“恢复手机数据”，就会出现大量恢复数据的网店，这些网店都保证“价格不等，不能保证恢复多少数据，查完付钱”。&lt;/p&gt; &lt;p&gt;据报道了解，“进行手机数据恢复的人员，不论是在线下还是远程操作，都会使用名为 “取证系统”的终端设备”。&lt;/p&gt; &lt;p&gt;经过这种操作，原手机主人的基本信息如电话、聊天记录、账号密码等信息都可以获得。或许你会认为，我把重要信息保存在类似百度云的云端不就好了吗？&lt;/p&gt; &lt;p&gt;那也不行，因为恢复手机数据，同样可以获得你的账号密码信息，如果你在云端的登陆处于一种自动登录状态，你保存在云端的信息同样也可以被盗取。因为个人删除只是在手机文件上让它“消失”，只需要在芯片中找到一条通往存储完整数据区域的路径即可。&lt;/p&gt; &lt;p&gt;可以这样认为，对于技术人员来说，一般手机的存储芯片没有大的损坏，就可以恢复数据。&lt;/p&gt; &lt;p&gt;为什么会这样？ &lt;/p&gt; &lt;p&gt;其实，大家选择的恢复出厂设置，实际上，是将设备或仪器的个性设置恢复到出厂的默认状态，如待机方式、开始界面、操作快捷键、定时提醒等等恢复到出厂时的设置但不会删除存储的数据。 &lt;/p&gt; &lt;p&gt;手机芯片是电子设备中最重要的部分，承担着运算和存储的功能。有媒体解释，“尽管目前的手机采用的大都是 eMMC、UFS 闪存芯片，但其原理与电脑 SSD 类似，单纯的删除操作并不能抹掉文件”。 &lt;/p&gt; &lt;h3&gt;你的手机数据可以值多少钱？   &lt;img src="https://static.leiphone.com/uploads/new/images/20210411/6072b7f274e59.jpg?imageView2/2/w/740"&gt;&lt;/img&gt;&lt;/h3&gt; &lt;p&gt;你的数据能卖多少钱，和市场需求有关。 &lt;/p&gt; &lt;p&gt;首先，我们看一下大家是怎么处理手机的，根据微博上环球网设置的投票，怎么处理自己的旧手机？将近两万人进行投票显示，有约7000人选择“留着当备用机”，有约5000人表示愿意“静静放着闲置”，还有约3000人选择“二手平台交易”。&lt;/p&gt; &lt;p&gt;从选项比例来看，大家更愿意把手机留在自己手上，会觉得更安全。还有不少人愿意进行二手交易，从安全角度来看，如果把手机留在手上，的确可以减少数据泄露的风险，是相对稳妥的做法，往往把手机进行二手交易的风险更大。&lt;/p&gt; &lt;p&gt;在2020年，因为疫情的影响，受手机产需供能的影响，华为、小米等著名手机品牌出现了需求下滑的情况。来自市场调研机构IDC发布的《2020-2024年全球二手智能手机预测》中显示，在2020年，全球二手智能手机的出货量达到2.254亿部。去年的全球智能手机三星品牌的出货量是2.66亿部，二手手机和全球出货量第一的三星手机数据相差不是很大。 &lt;/p&gt; &lt;p&gt;二手手机的市场份额扩大，越来越多的人愿意接受二手手机。有些不法商家将二手手机经过处理，收集到的部分数据，然后打包出售就已经形成了一条完整的地下产业链。&lt;/p&gt; &lt;p&gt;手机的主人如果不能很好地清除数据，确实会有安全风险。&lt;/p&gt; &lt;p&gt;根据知情人士透露，“一般一毛一条信息”。在去年1月，中国电信超2亿条用户信息被卖案件审判书中提到，被告人以0.01元/条至0.2元/条的价格出售，累计获利2000余万元，涉及公民个人信息2亿余条。&lt;/p&gt; &lt;p&gt;所以，一毛钱就可以获得你的基本信息，通话记录、短信、联系人、多媒体文件、第三方支付信息、邮件信息等。&lt;/p&gt; &lt;h3&gt;手机数据怎样才能安全清除？&lt;/h3&gt; &lt;p&gt;你觉得只有变卖二手手机才会有风险吗？&lt;/p&gt; &lt;p&gt;你有过想恢复微信信息的时候吗？有过误删重要照片的时候吗？有过手误删掉重要联系人电话号码的时候吗？ &lt;/p&gt; &lt;p&gt;在这样的情况下，你只是单纯的想恢复部分数据也有可能被第三方保留数据，所以，针对这类的手机数据恢复，大家需要尽量找安全的平台进行恢复，或者保留好重要信息，尽量避免第三方接触到你的重要信息，以免泄露。&lt;/p&gt; &lt;p&gt;既然手机芯片是关键，那应该可以物理摧毁吧？这个办法并不推荐，手机是比较精密的设备，进行暴力拆卸，自己会有一定的安全危险。并且经过拆卸再组装，这样的手机基本上不能再销往二手平台。&lt;/p&gt; &lt;p&gt;在这里有一个大家公认比较简单实用的方法。&lt;/p&gt; &lt;p&gt;首先，删除社交APP的登录设备，也要退出APP的原有账号，这两项不同的手机会有不同的操作，然后，再清除所有数据，把手机恢复出厂设置。&lt;/p&gt; &lt;p&gt;前面已经说过单纯的把手机恢复出场设置并不安全，所以，我们要在最后对手机进行“完全复写”。 &lt;/p&gt; &lt;p&gt;完全复写是指用其他不重要的文件、视频、图片等来重新占据你的手机内存，并且要保证手机内存处于“完全占满”的状态。每复写一次，就需要再次进行格式化，重复复写5到8次是比较安全的，这个时候就可以把你的手机安全的卖掉了，就可以保护你的隐私安全。&lt;/p&gt; &lt;p&gt;目前在应用市场上有许多“全家桶”可以下载，根据自己的手机内存选择下载，达到基本占满就可以了，还不够，可以继续下载内存消耗大的文件。&lt;/p&gt; &lt;p&gt;同样的，重复几次，想要再次找回你的数据就比较难了。重复过后，自己需要再检查一下，也通过专业人士再尝试找回信息，看能不能找回自己的数据信息，如果没有，就说明成功了。&lt;/p&gt; &lt;p&gt;如今数据泄露问题随着网络技术的发展变得更为严重，如何在智能化的各种社会场景保证个人信息安全，还需要大家的共同努力。雷锋网雷锋网雷锋网&lt;/p&gt; &lt;p&gt;参考来源：&lt;/p&gt; &lt;p&gt;https://www.ithome.com/0/545/322.htm&lt;/p&gt; &lt;p&gt;https://baijiahao.baidu.com/s?id=1599147764721090669&amp;amp;wfr=spider&amp;amp;for=pc&lt;/p&gt; &lt;p&gt;https://baijiahao.baidu.com/s?id=1696644224851971641&amp;amp;wfr=spider&amp;amp;for=pc&lt;/p&gt; &lt;p&gt;https://new.qq.com/rain/a/20210410A07KKY00&lt;/p&gt; &lt;p&gt;https://baijiahao.baidu.com/s?id=1696644224851971641&amp;amp;wfr=spider&amp;amp;for=pc  &lt;br /&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>业界</category>
      <guid isPermaLink="true">https://itindex.net/detail/61324-%E6%89%8B%E6%9C%BA-%E6%95%B0%E6%8D%AE-%E5%A4%8D%E6%B4%BB</guid>
      <pubDate>Sun, 11 Apr 2021 16:53:00 CST</pubDate>
    </item>
    <item>
      <title>人去世后，指纹还能解锁手机吗？</title>
      <link>https://itindex.net/detail/61181-%E5%8E%BB%E4%B8%96-%E6%8C%87%E7%BA%B9-%E6%89%8B%E6%9C%BA</link>
      <description>&lt;div&gt;
  &lt;div&gt;
   &lt;img alt="&amp;#20154;&amp;#21435;&amp;#19990;&amp;#21518;&amp;#65292;&amp;#25351;&amp;#32441;&amp;#36824;&amp;#33021;&amp;#35299;&amp;#38145;&amp;#25163;&amp;#26426;&amp;#21527;&amp;#65311;&amp;#30340;&amp;#22836;&amp;#22270;" src="https://iknow-pic.cdn.bcebos.com/d833c895d143ad4b8d6af3bf92025aafa40f060c?x-bce-process=image/resize,m_lfit,w_800,h_450,limit_1"&gt;&lt;/img&gt;
&lt;/div&gt;
  &lt;h1&gt;
人去世后，指纹还能解锁手机吗？
&lt;/h1&gt;
  &lt;div&gt;
2021-01-14
 | 
   &lt;a href="https://zhidao.baidu.com/daily/author?un=%E9%92%9F%E9%93%AD%E8%81%8A%E7%A7%91%E5%AD%A6&amp;ie=gbk" target="_blank"&gt;钟铭聊科学&lt;/a&gt;
原创
   &lt;input type="text" value="10553"&gt;&lt;/input&gt;
   &lt;a href="https://zhidao.baidu.com//daily/view?id=230221#"&gt;
    &lt;strong&gt;&lt;/strong&gt;
收藏(1)&lt;/a&gt;
 | 

&lt;/div&gt;
  &lt;div&gt;
   &lt;p&gt;随着手机的更新迭代，指纹解锁已经成了大多数手机的标配，然而这却带来一个问题，那就是如果一个人突遭不幸，那么他的指纹还可以解锁自己的手机吗？&lt;/p&gt;   &lt;p&gt;    &lt;img src="https://iknow-pic.cdn.bcebos.com/9c16fdfaaf51f3deb5f60c1b84eef01f3a29790c?x-bce-process=image/resize,m_lfit,w_450,h_600,limit_1"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p&gt;    &lt;strong&gt;指纹解锁原理&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;手机指纹解锁的原理很简单，那就是先录入指纹，由于每个人的指纹都有细微的变化，因此我们可以将指纹看作是我们的身份证，录入指纹就是先在手机中录入我们的信息。&lt;/p&gt;   &lt;p&gt;当我们使用手机解锁时，我们的手机就会识别我们的指纹，它们识别的并不是我们指纹的纹路，而是将我们的手指分成一个个的小格子，其中指纹是凸的地方，则被录入为1，而指纹是凹的地方，则被录入为0，就这样我们的信息以二进制的方式被储存在指纹库之中。&lt;/p&gt;   &lt;p&gt;    &lt;img src="https://iknow-pic.cdn.bcebos.com/cf1b9d16fdfaaf51f3a734c09c5494eef01f7a0c?x-bce-process=image/resize,m_lfit,w_450,h_600,limit_1"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p&gt;当我们去解锁时，我们录入到的信息会与指纹库中的指纹进行对比，如果相似度较高，那么就可以解锁；如果相似度较低，则无法解锁。&lt;/p&gt;   &lt;p&gt;现如今有三种指纹解锁比较常见：光学指纹解锁，电容式指纹解锁和超声波指纹解锁（相对少见）。&lt;/p&gt;   &lt;p&gt;其中光学指纹解锁就是屏幕发光，照亮指纹，光受到阻扰之后会将一部分光反射到手机之中，而手机下方的传感器会接收到用户手指反射的光，这些信息经过处理之后，就会与指纹库中的指纹进行对比，对比成功就可以解锁。&lt;/p&gt;   &lt;p&gt;    &lt;img src="https://iknow-pic.cdn.bcebos.com/e61190ef76c6a7ef32631d59edfaaf51f3de660c?x-bce-process=image/resize,m_lfit,w_450,h_600,limit_1"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p&gt;电容式指纹解锁则是测量指纹凹凸不平导致的电容量差异，从而解锁。&lt;/p&gt;   &lt;p&gt;    &lt;img src="https://iknow-pic.cdn.bcebos.com/8435e5dde71190ef8cbe27a0de1b9d16fdfa600c?x-bce-process=image/resize,m_lfit,w_450,h_600,limit_1"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p&gt;超声波式解锁则是手机发出超声波，之后根据回音来完成扫描皮肤表面的细微特征，从而完成手机解锁。&lt;/p&gt;   &lt;p&gt;    &lt;img src="https://iknow-pic.cdn.bcebos.com/a6efce1b9d16fdfa50297391a48f8c5494ee7b0c?x-bce-process=image/resize,m_lfit,w_450,h_600,limit_1"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p&gt;目前世界上这三种指纹解锁各有千秋，但是光学式和电容式指纹解锁使用率较高。&lt;/p&gt;   &lt;p&gt;    &lt;img src="https://iknow-pic.cdn.bcebos.com/e4dde71190ef76c65c974e548d16fdfaaf51670c?x-bce-process=image/resize,m_lfit,w_450,h_600,limit_1"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p&gt;    &lt;strong&gt;人死之后，还能解锁手机吗？&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;由于手机解锁使用的原理不同，所以主人死亡之后通过指纹解锁的成功率也不同。&lt;/p&gt;   &lt;p&gt;首先是光学式指纹解锁，该指纹解锁其实经常会出现精确度不高的问题，曾经有人尝试过破译这种解锁方式发现：在主人使用过指纹解锁后不久，其他人用一张白纸蒙在屏幕上，然后按压就可以解锁。&lt;/p&gt;   &lt;p&gt;这是因为主人在使用指纹解锁之后，指纹还残留在屏幕上，而白纸可以反射光线，使之解锁。不过这个问题被反馈之后，据说被厂商改正了。&lt;/p&gt;   &lt;p&gt;由于光学式指纹解锁的精确度并不高，而且光学式指纹解锁并不会识别出人类其他信息，比如：是否活着，是否有电流等特征，因此使用光学式指纹解锁的手机，当已故的主人指纹录入上面时有很大概率可以被通过。&lt;/p&gt;   &lt;p&gt;    &lt;img src="https://iknow-pic.cdn.bcebos.com/91ef76c6a7efce1b606e7db5bf51f3deb48f650c?x-bce-process=image/resize,m_lfit,w_450,h_600,limit_1"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p&gt;超声波指纹解锁可以穿透手指的真皮层，甚至也能鉴定出材质是手指还是其他材料伪造的，但是超声波指纹解锁却难以识别出死亡还是活着，因此采用超声波指纹解锁的手机也能解锁。&lt;/p&gt;   &lt;p&gt;只有电容式指纹解锁的手机无法解锁已故的主人指纹。这是因为电容式指纹解锁需要识别生物电流，主人还活着时，细胞的活动会释放出生物电流，尽管这种电流很微弱。但当主人死亡之后，体内的细胞也会一点点的死亡，死亡后的细胞无法发出生物电流，因此就无法解锁。&lt;/p&gt;   &lt;p&gt;    &lt;img src="https://iknow-pic.cdn.bcebos.com/77c6a7efce1b9d1603822f1ee3deb48f8c54640c?x-bce-process=image/resize,m_lfit,w_450,h_600,limit_1"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p&gt;当然了，人体死亡的过程是缓慢的，身体的细胞凋亡也是缓慢完成的。不过死亡也分为两种，一种是脑死亡；另一种是心跳停止。&lt;/p&gt;   &lt;p&gt;如果是脑死亡，那么心脏还可以维持3-4分钟左右，肝脏5-8分钟，手指位于肢体的末端，因此在2个半小时左右依旧可以检测到微弱的电流；如果是心跳停止作为死亡依据，那么人的手指大约在2小时左右依旧存在微弱的电流。在此期间内，依然可以利用已故主人指纹解锁手机。&lt;/p&gt;   &lt;p&gt;如果是为了保证信息安全，可以关闭指纹解锁。比如：美国一些参与游行的人会关闭指纹解锁、人脸识别等解锁手机的方式，以防止自己已故之后信息泄露。&lt;/p&gt;   &lt;p&gt;但如果为了以防万一，万一不小心晕倒失去意识，指纹解锁也是一种较为快捷的解锁方法，能够让别人打开你的手机，联系到你的家人。&lt;/p&gt;   &lt;p&gt;当然了，具体利弊还要看你怎么取舍。&lt;/p&gt;
   &lt;div&gt;
    &lt;p&gt;特别声明&lt;/p&gt;
    &lt;p&gt;
本文为自媒体、作者等在百度知道日报上传并发布，仅代表作者观点，不代表百度知道日报的观点或立场，知道日报仅提供信息发布平台。合作及供稿请联系zdribao@baidu.com。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;div&gt;
   &lt;h2&gt;为您推荐：&lt;/h2&gt;


&lt;/div&gt;
  &lt;div&gt;
   &lt;div&gt;
+1

点个赞吧

赞(    &lt;em&gt;0&lt;/em&gt;)
&lt;/div&gt;
&lt;/div&gt;
  &lt;div&gt;
   &lt;h3&gt;关注作者&lt;/h3&gt;
   &lt;div&gt;
    &lt;a href="https://zhidao.baidu.com/daily/author?un=%E9%92%9F%E9%93%AD%E8%81%8A%E7%A7%91%E5%AD%A6&amp;ie=gbk" target="_blank"&gt;
     &lt;img alt="&amp;#22836;&amp;#20687;" height="80" src="https://iknow-pic.cdn.bcebos.com/79f0f736afc379314d1017ebe5c4b74542a911f3?x-bce-process=image/quality,q_85" width="80"&gt;&lt;/img&gt;
&lt;/a&gt;


    &lt;a href="https://zhidao.baidu.com/daily/author?un=%E9%92%9F%E9%93%AD%E8%81%8A%E7%A7%91%E5%AD%A6&amp;ie=gbk" target="_blank"&gt;钟铭聊科学&lt;/a&gt;

一本正经聊科学

    &lt;a href="https://zhidao.baidu.com//daily/undefined"&gt;
     &lt;strong&gt;&lt;/strong&gt;
关注&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/61181-%E5%8E%BB%E4%B8%96-%E6%8C%87%E7%BA%B9-%E6%89%8B%E6%9C%BA</guid>
      <pubDate>Sat, 16 Jan 2021 04:02:10 CST</pubDate>
    </item>
    <item>
      <title>手机抓包HTTPS</title>
      <link>https://itindex.net/detail/61171-%E6%89%8B%E6%9C%BA-https</link>
      <description>&lt;p&gt;之前也介绍过 Charles 抓包神器，详细可以看这篇文章：  &lt;a href="http://mp.weixin.qq.com/s?__biz=MzUxNjg4NDEzNA==&amp;mid=2247490881&amp;idx=1&amp;sn=22e52d3762fa03d225ab3d042379cc6d&amp;chksm=f9a1ce88ced6479e0cedb167ae07b877767e2512e6da093eb37880be8663c807fd8e3952a1f1&amp;scene=21#wechat_redirect" target="_blank"&gt;抓包神器&lt;/a&gt;。这个神器主要是解决在开发过程中快速定位异常，到底是界面展示 Bug 还是接口数据异常？这样借助这个神器，基本上在开发过程中就能解决很多问题了。  &lt;br /&gt;&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/ePw3ZeGRruy5kEfQ1NZEn0zTgiaGT8NbOSOvBIcLM7A6rGwqianJtpshVeb9WJe8Z3jSftYPqu3pPAPgL8ATeZXA/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;学会手机抓包也能解决开发中很多问题，不仅如此，还能解锁去广告、白嫖 VIP 等骚操作。&lt;/p&gt; &lt;p&gt;在开发中，不知道大家有没有遇到过这样的场景。&lt;/p&gt;线上发布 App 出现一个 Bug，但是这个时候可能并不在公司（等于 Charles 无法发挥作用），也需要立即 定位问题，数据问题？界面问题？我的代码没动过啊！明明测试环境都是好的，大部分用户也是好的啊。 &lt;p&gt;基于 Charles 的 Map Remote 或 Rewrite 我们可以做到 App 灵活的在服务测试环境和正式环境之间切换，但是有一个前提，就是需要 电脑 💻，要是没有电脑呢？&lt;/p&gt; &lt;p&gt;这时候手机抓包就派上用场了，但这只是针对开发。你有没有下面这样的需求呢？手机抓包也能派上用场：&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;   &lt;p&gt;有的 App 的广告真的太过分了，非常影响体验（虽然添加广告也是合理的）有没有什么办法可以去掉某些 App 的广告呢。&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;不花钱的 VIP 他不香吗？&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;1. HTTP Catcher 简介&lt;/h2&gt; &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20H53yq6M6IzebwD3Ze2JWhtbZjEiasFnNcrwhjOkG0ywsdhOM4ta9UQeg/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;交代了故事背景，今天的主角就登场了。首先声明，本文章不是 App 广告，随便找了一个抓包工具，你也可以用其他的。HTTP Catcher 是一个 Web 调试工具，可以对来自 iOS 系统的 http/https 请求进行拦截，查看，修改和重放。你不需要连接电脑，HTTP Catcher 可以在后台记录 Wi-Fi 和蜂窝网络下的 HTTP 流量。HTTP Catcher 让你非常容易的测试你的应用和网站，你可以直接查看它们的请求和响应。HTTP Catcher 会创建一个VPN配置。当你开启抓包时，HTTP Catcher 会在 VPN 进程中启动一个本地 HTTP 代理，所有的 HTTP 流量将通过 VPN 转发到这个本地代理中。 &lt;strong&gt;功能&lt;/strong&gt; &lt;ul&gt;  &lt;li&gt;解密 HTTPS&lt;/li&gt;  &lt;li&gt;实时修改请求和响应&lt;/li&gt;  &lt;li&gt;请求重放&lt;/li&gt;  &lt;li&gt;阻止请求&lt;/li&gt;  &lt;li&gt;域名过滤&lt;/li&gt;  &lt;li&gt;DNS 修改&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;看到这里可能你对 HTTP Catcher 有一个基本的认识，这只是对它的一个基本介绍。&lt;/p&gt; &lt;h2&gt;2. 安装 &amp;amp; 配置&lt;/h2&gt;（1）在 AppStore 下载 HTTP Catcher。（2）安装证书，因为我们需要抓取 HTTPS 请求。 &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HF3aGKSZH7bA1TGuOdxUgXJUVWekbLEcXhicTQqGU9e08XUDvfh4oicqA/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt; &lt;p&gt;如上图所示，点击解密 HTTPS 流量 - 安装证书 - 下载证书 - 设置 - 已下载描述文件中安装证书。&lt;/p&gt; &lt;p&gt;（3）证书信任&lt;/p&gt; &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HbwZeV514sUMgUnFWt5WcIB4sfBeJmX9tk5eukgzWAQTicjQLNQVbOyA/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt; &lt;p&gt;紧接着我们还需要在 iOS 中对此证书进行信任。&lt;/p&gt; &lt;p&gt;设置 - 通过 - 关于本机 - 证书信任设置 - 选择 HTTP Catcher CA&lt;/p&gt; &lt;h2&gt;  &lt;strong&gt;HTTP Catcher 界面功能介绍&lt;/strong&gt;&lt;/h2&gt; &lt;h3&gt;主菜单&lt;/h3&gt; &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HU1aZSFYHk8jg3V6XKDlv1jIicU6yJtE8SicGU3E2iajG2ektCEDYeV99Q/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt; &lt;table&gt;  &lt;tr&gt;   &lt;th width="48"&gt;序号&lt;/th&gt;   &lt;th width="487"&gt;含义&lt;/th&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="48"&gt;0️⃣&lt;/td&gt;   &lt;td width="487"&gt;HTTP Catcher 所抓到的包会现在在这个 Tab 下&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="48"&gt;1️⃣&lt;/td&gt;   &lt;td width="487"&gt;开始监听请求，在开始监听前会清空之前的历史请求&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="48"&gt;2️⃣&lt;/td&gt;   &lt;td width="487"&gt;跳转到工具栏，工具栏详情有 过滤器，代理，DNS 劫持，重写，黑名单&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="48"&gt;4️⃣&lt;/td&gt;   &lt;td width="487"&gt;请求列表展示处&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="48"&gt;5️⃣&lt;/td&gt;   &lt;td width="487"&gt;监听到的请求是按照请求时间展示，还是按照域名聚合展示&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="48"&gt;6️⃣&lt;/td&gt;   &lt;td width="487"&gt;可以过滤请求结果。只展示 JSON 或者 图片，媒体，WebSocket，HTML&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="48"&gt;7️⃣&lt;/td&gt;   &lt;td width="487"&gt;历史数据监听包，点击右上角可删除。&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;h3&gt;  &lt;strong&gt;解密 HTTPS 流量开关&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;如果不开启此开关，那么默认只会监听 HTTP 的流量。&lt;/p&gt; &lt;p&gt;不过我们在开发测试的时候一般是在 HTTP 下进行，正式进入生产环境才会使用 HTTPS，所以在开发环境下 不需要打开次开关。&lt;/p&gt; &lt;h3&gt;  &lt;strong&gt;过滤器&lt;/strong&gt;&lt;/h3&gt; &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20H4DiaYPpxv8icMz7va6NZUyYiadd0V1B2Yo7bxzGGib0HgDy20ZJ2zbSfmA/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt; &lt;p&gt;过滤器的作用可以对指定的域名进行定向抓包，因为如果不设置指定域名的话，那么在开启代理后，会有很多其他的 App 的请求包，会略微影响到观看数据体验。&lt;/p&gt; &lt;p&gt;还有就是因为 iOS 系统不信任用户导入的证书，所以在开启抓包之后，类似于 iCloud，AppStore，iTunes  都是无法使用的，为了不影响上述服务的使用，我们可以将 苹果 旗下的域名进行排除。&lt;/p&gt; &lt;h3&gt;  &lt;strong&gt;DNS 劫持&lt;/strong&gt;&lt;/h3&gt; &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20Hk3vIWpibSicLv6icrmV62Xl01QFSmFRkWr08MBbZaVeEib41G20Oq2n6qQ/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt; &lt;p&gt;假设我们正在开发的 App 的  &lt;strong&gt;正式环境&lt;/strong&gt;的域名为 https://api.i.server.com 此时我们想要将次 App 变为测试环境 App&lt;/p&gt; &lt;p&gt;那么我们就需要将对应的 https://api.i.server.com 转变为 https://api.t.server.com ，这样这个 App 就变成测试环境 App 啦。&lt;/p&gt; &lt;p&gt;DNS 就是为了实现这个功能的。&lt;/p&gt; &lt;h3&gt;  &lt;strong&gt;黑名单&lt;/strong&gt;&lt;/h3&gt; &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HCPSQic6fc4jxe5KzKVHczribzJfMFl3687vF61OprGp0CAsD7GfTk7HA/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt; &lt;p&gt;黑名单的作用就是设置之后，无法对目标地址发起请求。&lt;/p&gt; &lt;p&gt;至于应用场景，还没有太 Get 到。&lt;/p&gt; &lt;h3&gt;  &lt;strong&gt;重写&lt;/strong&gt;&lt;/h3&gt; &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HcujILEnIfwePU7YHATIbI2Cfo2bZicMXZnyMs7evDRjJPAqzwBqodjQ/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt; &lt;p&gt;  &lt;strong&gt;重写&lt;/strong&gt; 基本上就是 HTTP Catcher 最强大的功能了，对标 Charles 的 Rewrite 功能。&lt;/p&gt; &lt;p&gt;主要作用是可以针对一次 HTTP 请求包，可以在请求和响应阶段修改任何内容。&lt;/p&gt; &lt;p&gt;修改细则为&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;   &lt;p&gt;添加 Header&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;修改 Header&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;删除 Header&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;Path&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;URL&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;添加 Query 参数&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;修改 Query 参数&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;删除 Query 参数&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;添加表单参数&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;修改表单参数&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;删除表单参数&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;修改 Body&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;  &lt;strong&gt;WiFi 访问&lt;/strong&gt;&lt;/h3&gt; &lt;img src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="&gt;&lt;/img&gt; &lt;h2&gt;3. 实战&lt;/h2&gt; &lt;h3&gt;  &lt;strong&gt;去广告&lt;/strong&gt;&lt;/h3&gt; &lt;img src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="&gt;&lt;/img&gt; &lt;p&gt;某天想去下载一款   &lt;strong&gt;斗图&lt;/strong&gt; 方面的表情包软件，然后就在 AppStore 上搜索并下载了   &lt;strong&gt;斗图表情&lt;/strong&gt; 。接下来是使用体验。&lt;/p&gt;打开 App 弹出 5s 广告。 &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20Hpw2ILKDAoOMX5OMfMmiae2p7STIrbLpCeQlBZuibr3p3osukjI5ZfJvQ/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;打开软件之后 可能不到 2s 吧，直接弹出 AppStore 评分，这。。。。 &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_jpg/ePw3ZeGRruy5kEfQ1NZEn0zTgiaGT8NbOqBdHfica2IP22yZJu14J02GKPDoXM9vR89DZPqS5uRIsUG32FGCU5GA/640?wx_fmt=jpeg&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;在浏览20s 之后直接弹出 28s 的广告。并且刚开始还不能关闭，需要浏览 5 秒之后才能关闭。 &lt;img src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="&gt;&lt;/img&gt;到这 我想直接好家伙，这饭恰的 也太。。。。（有点让我不舒服，哈哈哈哈） &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_jpg/ePw3ZeGRruy5kEfQ1NZEn0zTgiaGT8NbOEa7g1Fypp3I6fFo5LpibZMHHOibdiasIueUjL5BqVqKxUrdhufn3aGXHw/640?wx_fmt=jpeg&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;我也是被逼急了，不得不采用技术手段解决这件事了。因为 App 需要在启动的时候就加载广告，那么 App 开屏页需要展示什么对应的肯定是服务器返回的。所以我们需要抓取一下在 App 刚开始启动的时候的接口调用情况。此时打开 Charles ，手机配置好代理，就开始准备抓包了。分析启动接口。 &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20Hy16NmSOX8ZccWs7bGf0GfYqPKpMlbzlE7rtAD9LCgicg8YvOA4hQTQA/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;上方图示可以看到，在 App 刚刚启动的时候通过观察接口抓取情况，可以定位到 该软件的域名是 adesk.com。然后接下来就需要分析接口了。 &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HlJ1MMso87ic1gZicxBCcXxhfNmkZMdhn0VSotibOdB71EaOpUXBMPHFcw/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;将所有请求展开之后，可以看到上方蓝色部分的 config 接口还是很醒目的💩💩💩💩。打开他 看一下 &lt;pre&gt;  &lt;code&gt;{   &lt;br /&gt; &amp;quot;code&amp;quot;: 0,   &lt;br /&gt; &amp;quot;msg&amp;quot;: null,   &lt;br /&gt; &amp;quot;res&amp;quot;: {   &lt;br /&gt;  &amp;quot;app_rate&amp;quot;: {   &lt;br /&gt;   &amp;quot;enable_rate&amp;quot;: true,   &lt;br /&gt;   &amp;quot;tyle_custom&amp;quot;: true,   &lt;br /&gt;   &amp;quot;main_title&amp;quot;: &amp;quot;给我们些建议吧！&amp;quot;,   &lt;br /&gt;   &amp;quot;sub_title&amp;quot;: &amp;quot;非常感谢您使用我们的产品，我们非常重视您的评价和意见，如果您喜欢我们的产品，请给个好评吧！&amp;quot;,   &lt;br /&gt;   &amp;quot;confirm_text&amp;quot;: &amp;quot;好评一下&amp;quot;,   &lt;br /&gt;   &amp;quot;cancel_text&amp;quot;: &amp;quot;我再想想&amp;quot;,   &lt;br /&gt;   &amp;quot;targeturl&amp;quot;: &amp;quot;https://apps.apple.com/cn/app/id1155901497&amp;quot;,   &lt;br /&gt;   &amp;quot;rate_interval&amp;quot;: 2,   &lt;br /&gt;   &amp;quot;rate_limit_time&amp;quot;: 2   &lt;br /&gt;  },   &lt;br /&gt;  &amp;quot;app_update&amp;quot;: {...},   &lt;br /&gt;  &amp;quot;app_configuration&amp;quot;: {...},   &lt;br /&gt;  &amp;quot;other_data&amp;quot;: {...},   &lt;br /&gt;  &amp;quot;app_advertising&amp;quot;: {...}   &lt;br /&gt; }   &lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt; &lt;code&gt;&lt;/code&gt;好家伙，原来让我一进入 App 就评分就是这个东西再搞鬼。在看下面的  &lt;code&gt;app_advertising&lt;/code&gt; 这个字段，很明显就是针对 App 广告的配置了。既然接口已经找到了，那么就可以开始我们进攻的号角了虽然目前我们虽然通过 &lt;strong&gt;接口分析&lt;/strong&gt; 看到了类似广告的接口，但是我们还是需要来验证自己的推测。这里建议先在电脑上使用 Charles 的 Map Local 功能直接修改到执行的 文本文件里。然后直接将 app_advertising 对应的字段改为空对象，快速验证我们自己的想法。 &lt;pre&gt;  &lt;code&gt;{   &lt;br /&gt; &amp;quot;code&amp;quot;: 0,   &lt;br /&gt; &amp;quot;msg&amp;quot;: null,   &lt;br /&gt; &amp;quot;res&amp;quot;: {   &lt;br /&gt;  &amp;quot;app_rate&amp;quot;: {   &lt;br /&gt;   &amp;quot;enable_rate&amp;quot;: true,   &lt;br /&gt;   &amp;quot;tyle_custom&amp;quot;: true,   &lt;br /&gt;   &amp;quot;main_title&amp;quot;: &amp;quot;给我们些建议吧！&amp;quot;,   &lt;br /&gt;   &amp;quot;sub_title&amp;quot;: &amp;quot;非常感谢您使用我们的产品，我们非常重视您的评价和意见，如果您喜欢我们的产品，请给个好评吧！&amp;quot;,   &lt;br /&gt;   &amp;quot;confirm_text&amp;quot;: &amp;quot;好评一下&amp;quot;,   &lt;br /&gt;   &amp;quot;cancel_text&amp;quot;: &amp;quot;我再想想&amp;quot;,   &lt;br /&gt;   &amp;quot;targeturl&amp;quot;: &amp;quot;https://apps.apple.com/cn/app/id1155901497&amp;quot;,   &lt;br /&gt;   &amp;quot;rate_interval&amp;quot;: 2,   &lt;br /&gt;   &amp;quot;rate_limit_time&amp;quot;: 2   &lt;br /&gt;  },   &lt;br /&gt;  &amp;quot;app_update&amp;quot;: {...},   &lt;br /&gt;  &amp;quot;app_configuration&amp;quot;: {...},   &lt;br /&gt;  &amp;quot;other_data&amp;quot;: {...},   &lt;br /&gt;  &amp;quot;app_advertising&amp;quot;: {}   &lt;br /&gt; }   &lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;我们将对应的返回结果里面的 app_advertising 字段修改为空对象，然后保存为 &amp;quot;ad.json&amp;quot; 然后手动将次接口的响应结果映射 ad.json 这样最终的返回接口就是 ad.json 文件中的内容了。在经过 Charles 设置之后的 App 就没有广告了，真的是通畅无比。 &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_jpg/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HzBq9ic9hTMia8qewIibmgDkLicIibMicB0yib45FfOgPVag0Omiaw4ZwA31zTw/640?wx_fmt=jpeg&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;刚才我们已经在电脑上 通过 Charles 实现了广告过滤，那么其实大部分时间我们在使用手机的时候不在电脑旁边，也不一定连接的同一个 WIFI。这个时候就到 HTTP Catcher 就排上用场了。我们主要的任务就是将在电脑上 Charles 实现的功能自己在实现以下就可以了。开启手机  HTTP Catcher 数据包监听，打开软件，耐心等待广告加载完成后 进入 HTTP Catcher。 &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HQib7wTCDiaPMOXtmouaiaV9Prq2NQ9HdQPJtsCyypCb4ibvMhmvpNeJ1ag/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;如上图所示，选择 new-kv.adesk.com 然后选中 config 接口 左滑。选择更多 &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_png/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HHHib7C87Kvc0qSou7RICBJjicPP5KwyUCzOiaQ8ULu2CYRqCIpq32SZNQ/640?wx_fmt=png&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;在弹出的菜单栏中选择新建重写，选择在文本编辑器中编辑，然后复制下面的内容，将文本框中的内容进行替换。 &lt;pre&gt;  &lt;code&gt;{   &lt;br /&gt;   &amp;quot;rules&amp;quot; : [   &lt;br /&gt;    {   &lt;br /&gt;      &amp;quot;action&amp;quot; : &amp;quot;body&amp;quot;,   &lt;br /&gt;      &amp;quot;matchField&amp;quot; : &amp;quot;&amp;quot;,   &lt;br /&gt;      &amp;quot;field&amp;quot; : &amp;quot;&amp;quot;,   &lt;br /&gt;      &amp;quot;value&amp;quot; : &amp;quot;\&amp;quot;app_advertising1\&amp;quot;:{},\&amp;quot;test\&amp;quot;&amp;quot;,   &lt;br /&gt;      &amp;quot;matchValue&amp;quot; : &amp;quot;\&amp;quot;app_advertising\&amp;quot;&amp;quot;,   &lt;br /&gt;      &amp;quot;destiontion&amp;quot; : &amp;quot;response&amp;quot;,   &lt;br /&gt;      &amp;quot;isRegex&amp;quot; : false   &lt;br /&gt;    }   &lt;br /&gt;  ],   &lt;br /&gt;  &amp;quot;enabled&amp;quot; : true,   &lt;br /&gt;  &amp;quot;name&amp;quot; : &amp;quot;去广告 &amp;quot;,   &lt;br /&gt;  &amp;quot;description&amp;quot; : &amp;quot;&amp;quot;,   &lt;br /&gt;  &amp;quot;locations&amp;quot; : [   &lt;br /&gt;    {   &lt;br /&gt;      &amp;quot;method&amp;quot; : &amp;quot;GET&amp;quot;,   &lt;br /&gt;      &amp;quot;scheme&amp;quot; : &amp;quot;https&amp;quot;,   &lt;br /&gt;      &amp;quot;enabled&amp;quot; : true,   &lt;br /&gt;      &amp;quot;port&amp;quot; : 443,   &lt;br /&gt;      &amp;quot;query&amp;quot; : &amp;quot;appver=2.9.7&amp;amp;os=ios&amp;amp;packagename=com.emojifair.emoji&amp;quot;,   &lt;br /&gt;      &amp;quot;host&amp;quot; : &amp;quot;new-kv.adesk.com&amp;quot;,   &lt;br /&gt;      &amp;quot;path&amp;quot; : &amp;quot;\/v1\/config&amp;quot;   &lt;br /&gt;    }   &lt;br /&gt;  ]   &lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;替换后，重启一下 HTTP Catcher, 然后在打开软件你会发现🤩 这软件用起来真的体验翻倍。 &lt;h3&gt;4. 白嫖 VIP&lt;/h3&gt; &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_gif/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HpoQT9RpSvnsSPyPU8yN09bdsQico8SnxaGQoanorYXrhdnNHrAib4Ujw/640?wx_fmt=gif&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1"&gt;&lt;/img&gt;这里以 iOS 端  &lt;strong&gt;有道云笔记&lt;/strong&gt; 为例在 HTTP Catcher  重写中添加以下内容 &lt;pre&gt;  &lt;code&gt;{   &lt;br /&gt;  &amp;quot;rules&amp;quot; : [   &lt;br /&gt;    {   &lt;br /&gt;      &amp;quot;action&amp;quot; : &amp;quot;body&amp;quot;,   &lt;br /&gt;      &amp;quot;matchField&amp;quot; : &amp;quot;&amp;quot;,   &lt;br /&gt;      &amp;quot;field&amp;quot; : &amp;quot;&amp;quot;,   &lt;br /&gt;      &amp;quot;value&amp;quot; : &amp;quot;{\&amp;quot;service\&amp;quot;: 1,\&amp;quot;payYear\&amp;quot;: \&amp;quot;true\&amp;quot;,\&amp;quot;end\&amp;quot;: \&amp;quot;4100688000000\&amp;quot;,\&amp;quot;um\&amp;quot;: {\&amp;quot;nn\&amp;quot;:\&amp;quot;atomhu\&amp;quot;,\&amp;quot;q\&amp;quot;: 3225419776,\&amp;quot;u\&amp;quot;: 31360,\&amp;quot;dp\&amp;quot;: 0,\&amp;quot;dq\&amp;quot;: 100}}&amp;quot;,   &lt;br /&gt;      &amp;quot;matchValue&amp;quot; : &amp;quot;[\\s\\S]+&amp;quot;,   &lt;br /&gt;      &amp;quot;destiontion&amp;quot; : &amp;quot;response&amp;quot;,   &lt;br /&gt;      &amp;quot;isRegex&amp;quot; : true   &lt;br /&gt;    }   &lt;br /&gt;  ],   &lt;br /&gt;  &amp;quot;enabled&amp;quot; : true,   &lt;br /&gt;  &amp;quot;name&amp;quot; : &amp;quot;有道笔记破解会员&amp;quot;,   &lt;br /&gt;  &amp;quot;locations&amp;quot; : [   &lt;br /&gt;    {   &lt;br /&gt;      &amp;quot;method&amp;quot; : &amp;quot;POST&amp;quot;,   &lt;br /&gt;      &amp;quot;scheme&amp;quot; : &amp;quot;https&amp;quot;,   &lt;br /&gt;      &amp;quot;enabled&amp;quot; : true,   &lt;br /&gt;      &amp;quot;port&amp;quot; : 443,   &lt;br /&gt;      &amp;quot;query&amp;quot; : &amp;quot;method=status&amp;quot;,   &lt;br /&gt;      &amp;quot;host&amp;quot; : &amp;quot;note.youdao.com&amp;quot;,   &lt;br /&gt;      &amp;quot;path&amp;quot; : &amp;quot;\/yws\/mapi\/payment&amp;quot;   &lt;br /&gt;    }   &lt;br /&gt;  ]   &lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;然后再次打开有道云，你会神奇的发现，你已经变身 VIP 了 🤩🤩🤩🤩 &lt;br /&gt;这里变为 VIP 实际上也是利用重写功能，在有道云返回用户信息的接口里面，手动修改了用户的 VIP 状态。 &lt;img alt="&amp;#22270;&amp;#29255;" src="https://mmbiz.qpic.cn/mmbiz_jpg/oTKHc6F8tsjqxrf4eMd84A16Ph4Lt20HOVfpgMezuGn2Y55srSmqJt5GzKeoIicQickDZg8W7mvMVPrUDCibcVlzg/640?wx_fmt=jpeg&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1"&gt;&lt;/img&gt;很多的软件需要大家去探索才行，至于最后是否 OK 是多方面因数所影响的。 &lt;h2&gt;5. 软件抓取报告&lt;/h2&gt;当我学会使用 Charles 时开始，一发不可收拾，市面上 大部分常见 App 我都抓取过，这里整理一份报告 &lt;table&gt;  &lt;tr&gt;   &lt;th width="80"&gt;App 名称&lt;/th&gt;   &lt;th width="88"&gt;是否可抓取&lt;/th&gt;   &lt;th width="142"&gt;Content-Type&lt;/th&gt;   &lt;th width="183"&gt;备注&lt;/th&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;掘金&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;通过接口拿到一些自己定向想要查看的信息，定向搜索整理资源    &lt;br /&gt;这就是项目 awesome-IntelliJ-IDEA 的由来&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;简书&lt;/td&gt;   &lt;td width="76"&gt;❌&lt;/td&gt;   &lt;td width="142"&gt;未知&lt;/td&gt;   &lt;td width="183"&gt;比较奇怪，开启抓包后    &lt;br /&gt;简书就不能使用了。&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;CSDN&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;CSDN 有验签，接口不能重复请求&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;斗图表情&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;去广告&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;小睡眠&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;可以通过重写将自己的 Tilte 改为 VIP    &lt;br /&gt;但是不能带来实际的改变    &lt;br /&gt;因为权限验证是后端&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;潮汐&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;倒腾了好久，最终还是没能 白嫖 VIP🤩🤩&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;闲鱼&lt;/td&gt;   &lt;td width="76"&gt;❌&lt;/td&gt;   &lt;td width="142"&gt;未知&lt;/td&gt;   &lt;td width="183"&gt;不知道是不是 阿里系 原因    &lt;br /&gt;什么都看不到    &lt;br /&gt;靓仔落泪&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;自如&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;    &lt;br /&gt;&lt;/td&gt;   &lt;td width="183"&gt;    &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;网易云&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;text/plain;charset=UTF-8&lt;/td&gt;   &lt;td width="183"&gt;网易云的返回结果应该都是加密的    &lt;br /&gt;什么都看不到&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;B 站&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;bilibili-schedule    &lt;br /&gt;哔哩哔哩（Bilibili）每日任务投币，点赞，分享视频，直播签到，银瓜子兑换硬币，漫画每日签到&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;微博&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;可以抓取 每日热榜数据等&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;最右&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;    &lt;br /&gt;&lt;/td&gt;   &lt;td width="183"&gt;我记得最右 是关停过一段时间整体架构升级。我只能说改版后的架构 我什么都看不出来。&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;豆瓣&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;电影榜单&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;幕布&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;可以抓取优秀笔记&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;滴答清单&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;如果你足够牛逼，应该可以变身 VIP&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;知乎&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;知乎热榜    &lt;br /&gt;知乎热搜词&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;有道云笔记&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;实现 VIP 🤩🤩    &lt;br /&gt;通过重写功能可以实现 VIP 才能使用的 faceID 功能&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;美团&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;查看自己附近的店铺列表&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;饿了吗&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;查看自己附近的店铺列表&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;京东&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;可以通过借口实现京东模拟签到&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;理想&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;分析接口设计&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;小鹏&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;分析接口设计&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td width="51"&gt;蔚来&lt;/td&gt;   &lt;td width="76"&gt;✔️&lt;/td&gt;   &lt;td width="142"&gt;application/json; charset=utf-8&lt;/td&gt;   &lt;td width="183"&gt;分析接口设计，蔚来的每个接口都是加签的，安全性还是比较高的。&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;h2&gt;6. 写到最后&lt;/h2&gt; &lt;p&gt;学习 Charles，HTTP Catcher 这样的抓包软件，是为了帮助自己解决工作中棘手的问题。&lt;/p&gt; &lt;p&gt;在没有电脑的情况下，也能通过手机定位问题。再也不用一会要下载正式环境 App 一会 又要安装测试环境 App 了。&lt;/p&gt; &lt;p&gt;同时也可以通过抓包学习一下其他公司的 API 接口设计。如果恰巧你对这方面格外有兴趣的话，那么实现 禁用广告，VIP 破解，甚至于 商品秒杀，都没问题。&lt;/p&gt;投稿作者：胡川港知乎主页：zhihu.com/people/hu-chuan-gang-58 &lt;p&gt;GitHub主页：https://github.com/xiaoxiunique&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/61171-%E6%89%8B%E6%9C%BA-https</guid>
      <pubDate>Wed, 13 Jan 2021 09:28:25 CST</pubDate>
    </item>
    <item>
      <title>黄奇帆：产业互联网金融的意义在于解决中小微企融资难融资贵难题_手机新浪网</title>
      <link>https://itindex.net/detail/60989-%E9%BB%84%E5%A5%87%E5%B8%86-%E4%BA%A7%E4%B8%9A-%E4%BA%92%E8%81%94%E7%BD%91</link>
      <description>&lt;p&gt;10月25日消息，复旦大学特聘教授、重庆市原市长黄奇帆在2020外滩金融峰会上表示，产业互联网金融的现实意义在于解决中小微企业融资难融资贵难题。中小微企业融资难不仅是中国的问题，还是世界性难题，不仅仅是银行自身的问题，还与中小微企业自身的特点有关。&lt;/p&gt;  &lt;p&gt;他进一步指出，小微企业属于金融业长尾客户，存在抵押品不足、信用资质差、信息不对称、生命周期短等问题，银行开展小微金融业务也存在获客、尽职调查成本高、担保不足、风控流程长及成本过高等问题。借助产业互联网金融，通过“五全信息”的合理运用，可以有效解决中小企业存在的信息、信用孤岛，为小微企业提供与之匹配的金融服务。&lt;/p&gt;  &lt;a href="JavaScript:void(0)"&gt;    &lt;img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADAQMAAACOOjyFAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjAAMAAAYAAegKKqQAAAAASUVORK5CYII="&gt;&lt;/img&gt;    &lt;img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADAQMAAACOOjyFAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjAAMAAAYAAegKKqQAAAAASUVORK5CYII="&gt;&lt;/img&gt;    &lt;h2&gt;&lt;/h2&gt;&lt;/a&gt;  &lt;p&gt;嘉宾发言实录：&lt;/p&gt;  &lt;p&gt;黄奇帆：各位嘉宾、各位朋友：&lt;/p&gt;  &lt;p&gt;很高兴受邀参加2020年中国外滩金融峰会。我就今天的主题“后疫情时代的数字经济和数字金融的趋势与机遇”谈一点学习心得，供大家参考。&lt;/p&gt;  &lt;p&gt;数字化平台拥有的 “五全信息”的基因具有强大的颠覆性作用。所谓数字化平台，是指大数据、人工智能、移动互联网、云计算、区块链等一系列数字化技术组成的“数字综合体”。数字化平台具有全空域信息、全流程信息、全场景信息、全解析信息和全价值信息的“五全信息”。这种“五全信息”具有五个特征：&lt;/p&gt;  &lt;p&gt;“五全信息”是结构型的信息。这些信息必须包含社会经济系统的各种结构性特征，如产业系统的各种特征描述、社会系统的运营数据等。“五全信息”的结构性体现了“数字孪生”的概念，是企业运营、产业生态和社会系统的全样本刻画。&lt;/p&gt;  &lt;p&gt;“五全信息”是动态型的信息。每一条“五全信息”都有时间戳、体现事物某一时刻的状态，“五全信息”积累起来可以描绘事物的历史规律和预测未来的发展趋势。&lt;/p&gt;  &lt;p&gt;“五全信息”是秩序型的信息。“五全信息”既包含了社会经济系统的基本制度，也包含其运营规则。也就是说，“五全信息”采自于系统现有的秩序，也会帮助系统构建新的秩序。&lt;/p&gt;  &lt;p&gt;“五全信息”是信用型的信息。进入“五全信息”社会后，这些信息因为区块链等新技术的广泛应用，具有高度的可信性。基于新的信用体系，无论是金融还是其他社会经济系统都将发生更加彻底的革命。&lt;/p&gt;  &lt;p&gt;“五全信息”是生态型的信息。“五全信息”存在于特定的社会生态、产业生态之中，各类信息之间往往存在大量关联，并以一个整体的形式展现出来的。&lt;/p&gt;  &lt;div&gt;&lt;/div&gt;  &lt;p&gt;任何一个传统产业链一旦能够利用“五全信息”，就会立即形成新的经济组织方式，从而对传统产业构成颠覆性的冲击。现在的数字化平台，在5G背景下还会进一步形成万物万联体系，数字社会将拥有越来越多的“五全信息”。“五全信息”与工业制造相结合时，就形成工业制造4.0；与物流行业相结合，就形成智能物流体系；与城市管理相结合，就形成智慧城市；与金融结合，就形成金融科技或科技金融。&lt;/p&gt;  &lt;p&gt;金融科技发展的主体是产业互联网金融。在大数据、云计算、物联网、人工智能等技术赋能下，金融科技发展带来前所未有的历史机遇。未来，符合科学、契合规律的金融科技应当走什么样的发展路径？我认为，发展前景巨大的是产业互联网金融。产业互联网金融是机构通过金融科技向产业生态、尤其是中小微企业提供投融资服务的统称。产业互联网金融以企业为用户，以生产经营活动为场景提供数字金融服务，由于产业价值链更复杂、链条更长，目前数字化的比例仍然很低，金融服务还远未达到面向个人端的数字金融智能化、便捷化的程度，是金融科技发展的下一个蓝海。&lt;/p&gt;  &lt;p&gt;产业互联网金融的现实意义在于解决中小微企业融资难融资贵难题。中小微企业融资难不仅是中国的问题，还是世界性难题，不仅仅是银行自身的问题，还与中小微企业自身的特点有关。小微企业属于金融业长尾客户，存在抵押品不足、信用资质差、信息不对称、生命周期短等问题，银行开展小微金融业务也存在获客、尽职调查成本高、担保不足、风控流程长及成本过高等问题。借助产业互联网金融，通过“五全信息”的合理运用，可以有效解决中小企业存在的信息、信用孤岛，为小微企业提供与之匹配的金融服务。&lt;/p&gt;  &lt;p&gt;产业互联网金融发展的关键节点逐步打通，进入成熟发展阶段。金融的底层逻辑是信用，在“五全信息”的驱动下，企业运营数据可以与金融服务紧密地结合起来，以信息流转带动信用流转，从而解决传统金融供给无效的问题。&lt;/p&gt;  &lt;p&gt;以人工智能在企业中的应用为例，当前人工智能主要有八大关键技术，分别是深度学习、增强学习、模式识别、机器视觉、数据搜索、知识工程、自然语言理解和类脑交互决策。在这八大技术的支持下，制造业得以做到自感知、自适应、自学习、自决策，从而实现了生产的智能化、供应链的智能化、产品创新的智能化、企业经营的智能化。在此阶段，大量结构化、可靠的数据成千上万倍的增长，被采集、清洗、积累后，产生的数据利用区块链不可篡改的特性，进行大数据的交叉验证，从而使得金融资产数字化，数字资产标准化。多方资金按照不同标的需求，匹配进各类生产环境中，将金融交易产品化，利用信息集成、交叉验真、资产穿透、溯源管理等手段，提升对金融业务风险管控能力及金融资产配置的综合服务能力。&lt;/p&gt;  &lt;p&gt;数字化平台与金融机构各尽所能、各展所长是最合理的发展模式。在产业互联网时代，任何数字化平台的发展，不能靠简单的烧钱来扩大市场占有率，也不能让客户有成本无效果、长期赔钱，这是不可持续的自杀行为。合理的数字化平台，应能够通过四种渠道取得效益：一是通过物联网、大数据、人工智能的运筹、调度，降低产业链、供应链的物流成本；二是通过大数据、云计算、人工智能的应用，提高金融业务的工作效率；三是由于全产业链、全流程、全场景的信息传递功能，降低金融运行成本和风险；四是实现数字公司和金融业务的资源优化配置，产生优化红利。 &lt;/p&gt;  &lt;p&gt;同样，与数字化平台合作的金融企业，也可以通过四种优势为合作项目取得效益和红利：一是低成本融资的优势。二是企业信用判断的优势。数字化平台对客户信用诊断相当于是X光、CT、核磁共振，代替不了医生临门一脚的诊断治疗。客户的实际信用调查及风险防范是金融企业的强项。三是资本规模的优势。数字化平台尽管有巨大的客户规模，但自身至少要有融资规模10%以上的资本金。只有银行、信托、保险等专业的金融公司有这种资本金规模及与时俱进的扩张能力。四是社会信用的优势。不论是金融监管当局还是老百姓，与有牌照、有传统的金融企业打交道往往更放心、更顺手。基于上述四项+四项分析，数字化平台与专业的金融企业的合作是强强联合、优势互补、资源优化配置，是最好的发展模式。&lt;/p&gt;  &lt;p&gt;未来，数字化平台下的非银金融机构出路在哪里？最合理、最有前途的模式是互联网或物联网形成的数字化平台与各类金融机构的有机结合，各尽所能、各展所长，形成与实体经济产业链、供应链、价值链相结合的产业互联网金融平台。数字化平台应当发挥自己的长处，深耕产业，形成各行业的“五全信息”，提供给相应的金融战略伙伴，使金融平台服务效率得到最大化的提升。&lt;/p&gt;  &lt;p&gt;数字化平台与金融机构要形成明确的各方多赢的效益格局。万流归宗，无论金融科技还是科技金融业务的发展，最终要让各方受益，要降低实体经济中小微企业的融资成本，降低商业银行等金融机构的授信成本，在这个过程中，可以通过科技手段获得合理的收益，并将这些效率红利，合理地返还于产业链、供应链的上下游和金融方及数据平台经营方，从而产生万宗归流的洼地效益和商家趋利集聚效益。&lt;/p&gt;  &lt;p&gt;谢谢大家！&lt;/p&gt;  &lt;div&gt;  &lt;br /&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60989-%E9%BB%84%E5%A5%87%E5%B8%86-%E4%BA%A7%E4%B8%9A-%E4%BA%92%E8%81%94%E7%BD%91</guid>
      <pubDate>Sat, 07 Nov 2020 16:03:02 CST</pubDate>
    </item>
    <item>
      <title>手机活动分布预测疫情风险</title>
      <link>https://itindex.net/detail/60556-%E6%89%8B%E6%9C%BA-%E6%B4%BB%E5%8A%A8-%E5%88%86%E5%B8%83</link>
      <description>在疫情的背景下，快速准确的跟踪人口流动具有预测疫情可能会在何地爆发的意义。根据发表在《自然》期刊上的一项 &lt;a href="https://www.nature.com/articles/s41586-020-2284-y"&gt;  &lt;u&gt;研究&lt;/u&gt;&lt;/a&gt;，研究人员 &lt;a href="http://news.sciencenet.cn/htmlnews/2020/5/439210.shtm"&gt;  &lt;u&gt;利用&lt;/u&gt;&lt;/a&gt;中国一家大型国有手机运营商的匿名手机数据，分析了 2020 年 1 月 1 日至 1 月 24 日期间，在武汉至少停留两小时的超过 1100 万人口的流动情况。随后将这些数据与中国 31 个省区市的 296 个县截至 2 月 19 日的新冠肺炎疫情感染率联系起来。研究表明，根据人口流出的分布，最多可以提前两周准确预测新冠肺炎疫情感染在中国的发生频率和地理位置，并能在疫情早期发现潜在传播风险较高的城市。研究人员表示，研究结果或可用于其他能获取手机数据的疫情国家，帮助他们的决策者进行快速准确的风险评估，规划好有限资源的合理分配。                       &lt;img src="https://img.solidot.org//0/446/liiLIZF8Uh6yM.jpg"&gt;&lt;/img&gt;
        &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>医学</category>
      <guid isPermaLink="true">https://itindex.net/detail/60556-%E6%89%8B%E6%9C%BA-%E6%B4%BB%E5%8A%A8-%E5%88%86%E5%B8%83</guid>
      <pubDate>Fri, 01 May 2020 22:11:00 CST</pubDate>
    </item>
    <item>
      <title>A股财务造假的动机、原理、手段和识别</title>
      <link>https://itindex.net/detail/60479-%E8%B4%A2%E5%8A%A1-%E9%80%A0%E5%81%87-%E5%8A%A8%E6%9C%BA</link>
      <description>&lt;p&gt;&lt;b&gt;一、十天两神文：我是如何发现康美药业和康得新造假的&lt;/b&gt;&lt;/p&gt;&lt;p&gt;市场上一直存在康美药业和康得新的质疑声，2018年10月，站在前辈肩膀上的初善君在各大财经平台连续发布康美药业和康得新的质疑文章。文章引起了巨大的反响，最终加速了两家千亿级上市公司的覆灭。&lt;/p&gt;&lt;p&gt;今天先聊聊这两段故事。&lt;/p&gt;&lt;p&gt;1康美药业的故事&lt;/p&gt;&lt;p&gt;2018年10月15日，初善君在微信公众号首发了文章&lt;b&gt;《康美药业究竟有没有谎言》&lt;/b&gt;，对康美药业的资金真实性、经营现金流、存贷双高、存货高企、股权质押等问题进行了质疑。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90ac2f124ce3fef5366.jpg!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：初善君康美药业底稿&lt;/p&gt;&lt;p&gt;第二天（10月16日）在雪球、头条等网站进行转载，随后康美药业股价触及跌停，并连续跌停。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90ac46123783fcd53f4.jpg!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;下图是雪球当时的截图，文章阅读量达到了30.3万。更有网友提出：文章发布在10:19分，当时一切正常，20分钟后康美药业跌停。殊不知，这一切只是刚刚开始，那时候即使跌停，股价依然有19块左右。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90ac65123793fe15d5a.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;连续跌停之后，康美药业发布了澄清公告。尅是这澄清公告不仅没有澄清初善君的疑问，反而加深了疑问，忍不住写了《扫雷康美药业2：澄清公告澄清了吗？》。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90abd9123c13fe00460.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：初善君康美药业2底稿&lt;/p&gt;&lt;p&gt;文章依然引起了很大的争议，有些人是屁股决定了脑袋，有些人是看热闹不嫌事大，当然，更多的人是看到初善君的警醒而远离康美药业，从而避免了巨大的投资损失。&lt;/p&gt;&lt;p&gt;2019年4月底康美药业披露2018年公司年报，公司表示由于公司采购付款、工程款支付以及确认业务款项时的会计处理存在错误，造成公司应收账款少计 6.41亿元；存货少计 195.46亿元；在建工程少计 6.32亿元；由于公司核算账户资金时存在错误，造成货币资金多计 299.44亿元。&lt;/p&gt;&lt;p&gt;康美药业企图通过会计差错的方式蒙混过关，初善君当天就写了文章&lt;b&gt;《300亿，说没就没了！》&lt;/b&gt;，质疑公司企图通过把货币资金转存货，以后年度在计提存货减值损失的套路洗白造假。该文章引起广泛关注，不少媒体跟进报道。&lt;/p&gt;&lt;p&gt;终于2019年8月底，证监会披露了调查结果：康美药业三年虚增收入206亿元，虚增利润20.72亿元，2018年账上362亿货币资金是假的，同时虚增固定资产、在建工程、投资性房地产36.05亿元。&lt;/p&gt;&lt;p&gt;坐实了康美药业三百亿造假大案。&lt;/p&gt;&lt;p&gt;2康得新的故事&lt;/p&gt;&lt;p&gt; 初善君在写完康美药业之后，紧接着又写了关于康得新的文章。2018年10月24日晚接近12点写完。本来拟定的标题是《康得新财务数据探秘》，但是刚好康得新披露被立案调查，于是标题改成了&lt;b&gt;《扫雷7：康得新，被证监会立案调查，这仅仅是开始》。&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90abda123eb3fccadf0.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：初善君康得新底稿&lt;/p&gt;&lt;p&gt;这篇文章从固定资产折旧、现金流、存货余额、存贷双高等问题进行了分析和质疑，随后公司公关通过各种途径联系了初善君，迫于压力，初善君把公众号、雪球等平台文章都删除了，好在今日头条保留了当时的证据。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90acd9125393fe1f6a7.jpg!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;2019年4月，康得新在年报披露中承认资金被大股东占用，股价被ST。康得新的大股东康得集团通过北京银行西单支行银行账户占用了上市公司122亿货币资金。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90ae391253a3fc05277.jpg!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;7月5日晚间，康得新发布公告称，2015年1月至2018年12月，康得新通过虚构销售业务方式虚增营业收入，并通过虚构采购、生产、研发费用、产品运输费用方式虚增营业成本、研发费用和销售费用。通过上述方式，康得新2015年至2018年分别虚增利润总额23.81亿元、30.89亿元、39.74亿元和24.77亿元，四年累计虚增利润总额119.21亿元。&lt;/p&gt;&lt;p&gt;这个金额与康美药业一时瑜亮，刷新三观。&lt;/p&gt;&lt;p&gt;&lt;b&gt;二、财务造假的动机&lt;/b&gt;&lt;/p&gt;&lt;p&gt;前面是开胃小菜，让大家熟悉初善君，下面开始正餐。先说第一个问题，上市公司财务造假的动机是什么？知道了动机，我们才能更好的去预防。&lt;/p&gt;&lt;p&gt;A股财务造假的目的很明确，一般就是虚增净利润。&lt;b&gt;那么只要有虚增净利润的需求，就有财务造假的动机。&lt;/b&gt;这么说的话，所有A股上市公司都有财务造假的动机。事实上我们在分析上市公司财报时，就应该带着这种质疑。&lt;/p&gt;&lt;p&gt;有几类动机属于明显的财务造假高发动机，需要我们给予重点关注。&lt;/p&gt;&lt;p&gt;1避免被ST或者退市&lt;/p&gt;&lt;p&gt;A股对上市公司的净利润有各种各样的高要求，比如连续二年亏损就要ST、三年连续亏损就要暂停上市。那么，那些一年亏损、连续两年亏损的企业在接下来的年度就有非常大的压力，如果靠实际业务不能扭亏为盈，为了维护上市公司形象或者保壳，可能会铤而走险进行造假。&lt;/p&gt;&lt;p&gt;同时A股由于壳价值非常高，这种ST和准ST公司为了避免被暂停上市或退市，造假的太多了，简直罄竹难书。&lt;/p&gt;&lt;p&gt;举几个例子。&lt;/p&gt;&lt;p&gt;圣莱达2014年度经审计的净利润为负值，2015年中公司预计自己2015年度净利润亦将为负值，连续两年为负的话会被ST，于是公司铤而走险，通过虚构影视版权转让业务虚增营业务收入1000万元，二是跟政府签订协议虚构政府补助1000万元，上述两项违法事实导致圣莱达2015年度年报合计虚增收入和利润2000万元，虚增净利润1500万元。圣莱达2015年度年报显示公司利润总额367.15万元，归属于母公司股东的净利润为431.43万元。扣除虚增金额，圣莱达2015年实际利润总额为-1632.85万元、净利润为-1068.57万元。虚增行为导致圣莱达2015年度扭亏为盈。&lt;/p&gt;&lt;p&gt;2010年、2011年，*ST国药连续两年亏损，公司股票交易被证券交易所实行退市风险警示。为避免退市，满足维持上市地位所需的营业收入等财务条件，*ST国药采取措施财务造假增加公司营业收入、利润，保住壳价值。&lt;/p&gt;&lt;p&gt;金亚科技2013年大幅亏损，为了扭转公司的亏损，避免ST。金亚科技2014年年度报告合并财务报表共计虚增营业收入7364万元，虚增营业成本1925万元，少计销售费用369万元，少计管理费用132万元，少计财务费用795万元，虚增利润总额8050万元，占当期披露的利润总额的比例为335.14%，上述会计处理使金亚科技2014年年度报告利润总额由亏损变为盈利。&lt;/p&gt;&lt;p&gt;2完成业绩承诺&lt;/p&gt;&lt;p&gt;只要有压力，就有作假的动力，比如你年初签订了当年销售1000万产品的KPI，整个年度内你都有作假的想法。上市公司也一样，由于对赌协议的存在，有业绩承诺的上市公司为了完成业绩承诺，有些时候不惜铤而走险。&lt;/p&gt;&lt;p&gt;那么哪些上市公司有业绩承诺呢，一般&lt;b&gt;借壳上市&lt;/b&gt;的公司有业绩承诺，这也是初善君一直提醒大家的，&lt;b&gt;借壳上市公司财务造假的概率远远大于一般的上市公司&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;借壳上市财务造假的例子太多了。&lt;/p&gt;&lt;p&gt;例子一：雅百特2015年借壳中联电气上市时，账面价值仅为3亿，估值却达到35亿元，溢价超10倍。高溢价往往伴随着高的利润承诺，根据当时交易双方签订的《业绩补偿协议》，雅百特2015年度、2016年度、2017年度的承诺净利润数分别为2.55亿元、3.61亿元、4.76亿元。&lt;/p&gt;&lt;p&gt;业绩不够，造假来凑。为了实现业绩承诺，开始了造假之旅。雅百特2015至2016年9月通过虚构海外工程项目、虚构国际贸易和国内贸易等手段，累计虚增营业收入58,312.41万元，虚增利润25,650.11万元。其中，2015年虚增收入48,182.17万元，虚增利润23,226.34万元，虚增利润金额占当年披露利润总额的73.08%；2016年1至9月虚增收入10,130.24万元，相应虚增当期利润2,423.77万元，占2017年1至9月份当期披露利润总额的19.74%。&lt;/p&gt;&lt;p&gt;例子二：2011年4月，佳电股份作价10.66亿元借壳阿继电器上市，佳电公司的业绩承诺为在2011至2014年度实际净利润不低于1.68亿元、1.90亿元、2.24亿元和2.51亿元，否则原股东以本次交易中各方认购的股份总数为上限向阿继电器进行补偿。&lt;/p&gt;&lt;p&gt;业绩不够，造假来凑。佳电股份通过少结转佳电公司的主营业务成本、少计销售费用等方式，在2013年和2014年分别虚增利润1.58亿元、0.40亿元，分别占当期披露利润总额的82.58%、446.15%，占当期净利润的93.48%、706.86%。&lt;/p&gt;&lt;p&gt;业绩承诺期过了，从2015年开始，佳电公司将前期调节的利润从2015年1月份开始逐月分期消化，直至全部转回，恢复真实的财务状况。&lt;/p&gt;&lt;p&gt;此外，最近刷屏的辅仁药业也是借壳上市的公司，账上17亿货币资金付不起0.5亿的分红。&lt;/p&gt;&lt;p&gt;第二种是收购大股东或关联方的资产，这种业绩承诺方是大股东或关联方，管理层有极强的财务造假完成业绩承诺的动机，即使是国企也一样高危。如果是收购第三方资产，上市公司大股东是和小股东站在一起的，这种财务造假的话，大股东也会防着，所以比收购大股东或者关联方的资产风险小一点。&lt;/p&gt;&lt;p&gt;初善君一直不喜欢那种收购自己资产、左手倒右手的上市公司收购，因为小股东在这时太弱势了，装进上市公司的资产是骡子是马只有等到后来才知道。&lt;/p&gt;&lt;p&gt;举个国企造假的例子。&lt;/p&gt;&lt;p&gt;2009年，皖江物流（芜湖港）以发行股份购买资产方式，向淮南矿业集团购买其持有的淮矿铁路运输有限责任公司和淮矿现代物流有限责任公司的100%股权，交易价格18.62亿元。淮南矿业集团承诺，铁运公司和物流公司2010年度实现的经审计后的净利润合计不低于3.2亿元，2011年度实现的经审计后的净利润合计不低于3.84亿元，2012年度实现的经审计后的净利润合计不低于4.61亿元。&lt;/p&gt;&lt;p&gt;同时，如果未能达到上述业绩承诺，其差额部分由淮南矿业集团在该会计年度的铁运公司和物流公司年度审计报告正式出具后的二十个工作日内以&lt;b&gt;现金向公司补足&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;但是很显然，皖江物流无法完成业绩承诺。于是2012年通过虚增收入、阴阳合同、少计费用少提坏账准备等方式虚增收入45亿元，虚增利润2.6亿元。&lt;/p&gt;&lt;p&gt;为了不承担现金不足责任，国企领导也会铤而走险，造假起来。&lt;/p&gt;&lt;p&gt;3维持股价或融资的需求&lt;/p&gt;&lt;p&gt;毋庸置疑，在所有的粉饰财报的动机中，维持股价是最直接的。把财报粉饰的好看了，可以通过讲故事，维持一个比较满意的股价水平，从而使企业持股的高管、员工减持获取不错的收益。还可以维持公司较大的融资需求，包括股权融资、债权融资，或者股票质押融资。&lt;/p&gt;&lt;p&gt;比如康美药业、康得新的例子均是如此。不客气的说，几乎所有A股上市公司都有这种动机。&lt;/p&gt;&lt;p&gt;以上三种动机几乎涵盖了所有A股上市公司财务造假的动机，了解了动机之后，对于小伙伴如何规避就简单多了，比如不买入所有借壳上市公司，自然就避免了业绩承诺带来的财务造假。&lt;/p&gt;&lt;p&gt;&lt;b&gt;三、财务造假的原理&lt;/b&gt;&lt;/p&gt;&lt;p&gt;财务造假的目的一般是虚增利润，也就意味着利润表中的净利润是虚增的，那么净利润必然会转入所有者权益的未分配利润科目，根据会计恒等式，资产=负债+所有者权益，所有者权益是虚增的话，那么资产必须有虚增或者负债有虚减。由于调减负债比较困难，因此虚增资产是财务造假最常见的手段。&lt;/p&gt;&lt;p&gt;比如虚增应收账款，这个很好理解，就是虚增营业收入时直接确认应收账款即可，后面呢，是否收回不重要，因为利润已经有了。&lt;/p&gt;&lt;p&gt;比如虚增存货、在建工程、固定资产等，具体方式是通过采购原材料、预付款项、采购设备等方式将公司的资金转移至体外关联方，然后可以以销售回款的方法流入上市公司。这种不仅达到了虚增收入利润的目的，还可以名义将公司自有资金转移至体外，再借销售回款的名义转回公司，这样不仅达到了虚增收入、利润的目的，还可以虚增经营现金流，体现的结果就是虚增的收入利润放在了存货、在建工程或者固定资产科目。&lt;/p&gt;&lt;p&gt;此外，其他应收款、预付账款都是把资金转移出去的好科目。比如康得新预付款的去向现在还没找到，比如雏鹰农牧的其他应收款大概率被大股东占用了。&lt;/p&gt;&lt;p&gt;根据虚增利润时现金流量表是否配合，和资产负债表的具体表现，可以把财务造假分成四种境界。&lt;/p&gt;&lt;p&gt;1虚增利润，虚增应收账款，现金流不参与&lt;/p&gt;&lt;p&gt;财务造假的第一重境界就是现金流完全不参与，是相对简单的财务造假形式。一般情况下，企业会虚增收入来达到虚增利润的目的，虚增收入的方式就是虚增应收账款或者应收票据，这些虚增的收入并不会通过现金流流入企业。这也是为什么2018年市场对现金流差的环保和中药企业如此不待见的原因，这是最简单暴力的排除企业财务造假的方法。&lt;/p&gt;&lt;p&gt;&lt;b&gt;案例一：郑百文的财务造假案。&lt;/b&gt;&lt;/p&gt;&lt;p&gt;郑百文为了上市，走上了财务造假的不归路。其造假方式简单粗暴，公司在不符合IPO条件的情况下，成立了以财务总监为首的假账班子，通过虚增应收账款的方式，将公司打造为营业收入超40亿元的沪深两市第一大商贸零售公司。在摇身一变成为上市公司后，郑百文原形毕露，公司控制人将2亿元募集资金拆借挪用，总资产仅为6亿元的公司连续两年内累计录得15亿元的巨额亏损，公司濒临破产，被三联集团收购重组。&lt;/p&gt;&lt;p&gt;&lt;b&gt;案例二：皖江物流造假案&lt;/b&gt;&lt;/p&gt;&lt;p&gt;2009年，皖江物流（芜湖港）以发行股份购买资产方式，向淮南矿业集团购买其持有的淮矿铁路运输有限责任公司和淮矿现代物流有限责任公司的100%股权，交易价格18.62亿元。淮南矿业集团承诺，铁运公司和物流公司2010年度实现的经审计后的净利润合计不低于3.2亿元，2011年度实现的经审计后的净利润合计不低于3.84亿元，2012年度实现的经审计后的净利润合计不低于4.61亿元。如果未能达到上述业绩承诺，其差额部分由淮南矿业集团在该会计年度的铁运公司和物流公司年度审计报告正式出具后的二十个工作日内以现金向公司补足。&lt;/p&gt;&lt;p&gt;为了完成业绩承诺，皖江物流通过虚构收入和阴阳合同的方式虚增收入和利润，在造假2012年，其报表最显著的特点就是应收账款增加了32.27亿元。&lt;/p&gt;&lt;p&gt;这种财务造假的特点很明显，广大投资者深受其害，也基本学会了：应收账款增速大于营业收入增速；收现比（销售商品收到的现金/营业收入）长期小于1甚至更低。当然，现金流差只是必要不充分条件，有一些行业天生现金流就不好。&lt;/p&gt;&lt;p&gt;2虚增利润，虚增货币资金，经营现金流流入&lt;/p&gt;&lt;p&gt;财务造假的第二重境界就是利润表虚增收入和利润的同时，虚增相应的经营现金流流入，对应的资产负债表虚增的不是应收账款，而是货币资金。很多朋友会说，货币资金怎么造假，银行函证肯定搞定了，哪有银行愿意配合公司财务造假的。可是这篇神州从未让人失望过，2018年都还有萝卜章，都还能自己给自己出具审计报告，有什么是不可能的呢。因此私刻印章、虚假回函、甚至开假银行网点也是让人大开眼界。&lt;/p&gt;&lt;p&gt;而且此种情形还有升级版，即通过预付账款、其他应收款等形式把钱转到关联公司，一圈丢丢转转，然后通过经营活动现金流入，从现金流角度这就是完美的生意。&lt;/p&gt;&lt;p&gt;&lt;b&gt;案例三：圣莱达财务造假案&lt;/b&gt;&lt;/p&gt;&lt;p&gt;圣莱达2014年度经审计的净利润为负值，预计圣莱达2015年度净利润亦将为负值，连续两年为负的话会被ST，于是公司铤而走险，2015年开始了财务造假之路。&lt;/p&gt;&lt;p&gt;一是圣莱达通过虚构影视版权转让业务虚增营业务收入1000万元。&lt;/p&gt;&lt;p&gt;具体的方式是签订虚假销售协议，确认虚假营业外收入。2015年11月10日，圣莱达与华视友邦签订影片版权转让协议书，约定华视友邦将某影片全部版权作价3000万元转让给圣莱达，华视友邦应于2015年12月10日前取得该影片的《电影片公映许可证》，否则须向圣莱达支付违约金1000万元。当月，圣莱达向华视友邦支付了转让费3000万元。&lt;/p&gt;&lt;p&gt;2015年12月21日，圣莱达向北京市朝阳区人民法院提起民事诉讼，认为华视友邦未依约定取得电影公映许可证，请求法院判决华视友邦返还本金并支付违约金。2015年12月29日，圣莱达与华视友邦签订调解协议书，约定华视友邦于2016年2月29日前向圣莱达支付4000万元，其中包含1000万元违约金。次日，法院裁定该调解协议书合法有效。2016年1月29日至2月29日，圣莱达分三笔收到华视友邦转入的4000万元。圣莱达将华视友邦支付的1000万元违约金确认为2015年的营业外收入。&lt;/p&gt;&lt;p&gt;二是跟政府签订协议虚构政府补助1000万元。2015年12月31日，圣莱达发布《关于收到政府补助的公告》，称收到宁波市江北区慈城镇经济发展局和宁波市江北区慈城镇财政局联合发文，公司获得极速咖啡机研发项目财政综合补助1000万元，确认为2015年度本期收入。&lt;/p&gt;&lt;p&gt;这种造假方式就是通过控股股东的关联公司支付给对方，然后对方在把钱转进来。比如政府补助这笔，由控股股东关联公司宁波金阳光先以税收保证金的名义向慈城镇政府转账1000万元，然后再由慈城镇政府以财政补助的名义将钱打给圣莱达。&lt;/p&gt;&lt;p&gt;&lt;b&gt;案例四：金亚科技造假案&lt;/b&gt;&lt;/p&gt;&lt;p&gt;金亚科技顶着“创业板首批上市公司”的光环于2009年10月登陆资本市场，然而由于行业的原因为了留住上市，也开始了财务造假。&lt;/p&gt;&lt;p&gt;2013年公司业绩出现大幅亏损，为了落实周董事长2014年度扭亏为赢的重要指示，公司财务负责人设置了 006 和 003 两个会计核算账套，虚增收入、成本，配套地虚增存货、往来款和银行存款，虚增2014年度净利润8049万，虚增中国工商银行成都高新西部园区支行银行存款2.18亿元。&lt;/p&gt;&lt;p&gt;对于境界二的造假，我们很难通过经营现金流与利润表的匹配来判断，也就是说收现比和净现比都失效了。但是我们可以通过一些常识来判断，比如要警惕大存大贷的企业（真不是点名康美药业和康得新），比如计算利息收入和货币资金的匹配性，虚增货币资金无法产生利息收入的，比如查看货币资金的受限情况（财务报表附注有披露）。当然，预付账款和其他应付款等科目余额特别高，且没有合理的解释也是需要我们注意的（大家可以看看雏鹰农牧的资产负债表）。&lt;/p&gt;&lt;p&gt;3虚增利润，虚增存货，现金流流入、流出&lt;/p&gt;&lt;p&gt;财务造假的第三重境界，就是虚增利润的同时，不仅虚增现金流入（或者也不需要这一步），还需要虚增现金流出，从而把资产负债表的造假科目变成存货等内容。而由于农业企业存货的难以核查性，这种境界的大部分造假公司都在农业企业。&lt;/p&gt;&lt;p&gt;远在十年前的蓝田股份、银广夏，近年来的绿大地和万福生科，还有这几年扇贝游来游去的獐子岛，都是典型代表。&lt;/p&gt;&lt;p&gt;&lt;b&gt;案例五：绿大地造假案&lt;/b&gt;&lt;/p&gt;&lt;p&gt;作为云南省第一家A股上市民营企业和园林绿化行业第一家上市公司，绿大地头顶一个不祥的公司名称，上市以来业绩连年高速增长。直到2010年春季，时逢西南地区百年不遇旱灾，绿大地三次下修业绩快报，业绩五次变脸，大幅计提苗木存货减值。&lt;/p&gt;&lt;p&gt;经查，绿大地在上市前三年采用伪造合同、发票、工商登记资料等手段，虚构交易业务，虚增资产0.7亿元、虚增收入2.96亿元，主要虚增资产以存货的形式表现在资产负债表中；上市之后，公司被迫以一个谎言维系另一个谎言，2007-2009年间，绿大地通过伪造合同和会计资料、销售款转回等手段，虚增资产2.88亿元，虚增收入2.5亿元。公司借2009年西南地区百年不遇旱灾之东风，妄图通过大洗澡将旧账一笔勾销，却难逃证监会火眼金睛。&lt;/p&gt;&lt;p&gt;&lt;b&gt;案例六：万福生科造假案&lt;/b&gt;&lt;/p&gt;&lt;p&gt;万福生科的造假模式是用公司的自有资金打到体外循环，同时虚构粮食收购和产品销售业务，虚增销售收入和利润。为完成资金体外循环，万福生科借用了一些农户的身份去开立银行账户，并由万福生科控制使用，有些个人银行账户甚至连农户本人都不知道。&lt;/p&gt;&lt;p&gt;具体流程是，它首先把自己账上的资金打到其控制个人账户上去，同时在财务上记录粮食收购的预付款，再相应的做粮食收购的入账，完成原材料入账。之后再把这些实际控制的个人账户的钱，以不同客户回款的名义分笔转回到公司的账户上，财务上对应地做这些客户的销售回款冲减应收款，再相应的做客户销售收入等账目，利用资金的循环达到虚增销售收入的目的。&lt;/p&gt;&lt;p&gt;万福生科造假流程遍及到它的进、存、产、销的各个经营环节上，参与的人员比较多，总体上来说是龚永福授权财务总监来具体执行，执行过程中是财务总监来具体分配任务，每个参与的人员完成各自负责的一部分，俨然是流水线式的造假流程，体现出造假的系统性比较强。&lt;/p&gt;&lt;p&gt;万福生科在做资金的体外循环中也变换了很多种方式。比如有两个500万转出去，回来的时候不一定就是两个500万回来，可能会拆分成几笔，把回款的资金拆的比较零碎，想做那个客户的回款，就假冒成这个客户把钱打回公司账户上。&lt;/p&gt;&lt;p&gt;把款打回来之后就涉及到一个问题，银行的回单上会显示成个人账户打回来多少钱，而不是客户打回来多少钱，为了掩盖这个情况，万福生科又伪造了大量的银行的回单，私刻了若干个银行的业务章，盖在上面。他们做的单据很逼真，调查人员也是在反反复复翻银行回单的时候发现了蛛丝马迹，最终还是把这些造假的银行回单给找出来了。&lt;/p&gt;&lt;p&gt;对于第三重境界，典型特征就是净现比会比较低，同时存货等流动资产科目余额持续增长，然后期待一次说走就走的旅行洗澡，就可以洗白了。这里究竟什么样子的净现比算比较低的净现比呢，初善君觉得重点不是绝对值，而是跟同行业对比进行判断。&lt;/p&gt;&lt;p&gt;4&lt;/p&gt;&lt;p&gt;虚增利润，虚增在建工程、固定资产，现金流流入，投资现金流出&lt;br/&gt;&lt;/p&gt;&lt;p&gt;财务造假的第四重境界是虚增利润的同时，虚增经营性现金流流入，同时虚增投资性现金流流出，在资产负债表体现的科目就不是存货类的流动资产，而是转移到了更难审查的非流动资产，如固定资产和在建工程。&lt;/p&gt;&lt;p&gt;虽然相对于银行存款和存货，固定资产和在建工程等是实打实的资产，看得见、摸得着，投入资金巨大，但是很难说得清，也就是说这个在建工程或者固定资产究竟值多少钱完全说不清，自然就成了藏污纳垢的地方。&lt;/p&gt;&lt;p&gt;&lt;b&gt;案例七：锦州港财务造假&lt;/b&gt;&lt;/p&gt;&lt;p&gt;这是一个很久之前的造假案例，十五年前，有一家浓眉大眼的国资背景企业，在KPMG三年无保留意见的背书下，受到了前文所提的“夏草”老师公开质疑，牵涉出一桩财务舞弊的悬案。&lt;/p&gt;&lt;p&gt;锦州港，环渤海地区枢纽港口，1998年登陆资本市场，中规中矩的港口公司，上市以后业绩表现平庸。2002年，民间财务杀手“夏草”公开质疑锦州港财务造假，洋洋洒洒列出数点理由，核心论点在于公司固定资产周转率（0.21）远低于同为环渤海港口的营口港（0.6）和天津港（0.67）。锦州港的在建工程和固定资产多在水下，审计师难以核查，但固定资产规模逼近北方第一大港天津港，着实令人费解。&lt;/p&gt;&lt;p&gt;后来被证实，公司对在建工程确认不准确，1998－2000年多列资产11939万元”（实际虚增资产超过4亿元）。2003年，锦州港对以前年度存在的重大会计差错进行了追溯调整，分别调减2000年、2001年净资产及2001年净利润4.66亿元，5.01亿元和3.54亿元。没有人知道锦州港财务造假的动机，但锦州港前后两任董事长张宏伟和关国亮都是资本运作的老手，背后或许也另有一番故事吧。&lt;/p&gt;&lt;p&gt;对于财务造假的第四重境界，通过净现比很难判断，但是初善君依然可以给大家提供一个思路：就是固定资产周转率和总资产周转率会下滑，因为虚增的资产不能带来收入。当然这种情况其实核查的难度是最高的，尤其是在如今的A股，通过在建工程来调节利润的很常见。&lt;/p&gt;&lt;p&gt;问题来了，康美药业和康得新分别属于哪种或者哪种的组合？&lt;/p&gt;&lt;p&gt;&lt;b&gt;四、财务造假的手段&lt;/b&gt;&lt;/p&gt;&lt;p&gt;如果你认可了我之前的内容，那我们就明确，这里的财务造假指虚增利润。虚增利润的手段就太多了，而且也在与时俱进，根本方法就是虚增收入、虚减成本费用。&lt;/p&gt;&lt;p&gt;虚增收入包括虚增收入、提前确认收入等，虚减成本费用包括少记成本费用、推后确认费用，此外还包括使用非经常性损益、隐藏债务等。&lt;/p&gt;&lt;p&gt;1虚增收入&lt;/p&gt;&lt;p&gt;虚增收入是无中生有，可以通过虚构业务或者伪造合同的方式确认收入。如果虚构收入的话那么一定要有人配合，一般都是隐藏的关联方配合，或者是难以核查的收入，比如虚构海外收入。&lt;/p&gt;&lt;p&gt;比如借壳上市的雅百特。雅百特于2015至2016年9月通过虚构海外工程项目、虚构国际贸易和国内贸易等手段，累计虚增营业收入58,312.41万元，虚增利润25,650.11万元。其中，2015年虚增收入48,182.17万元，虚增利润23,226.34万元，虚增利润金额占当年披露利润总额的73.08%；2016年1至9月虚增收入10,130.24万元，相应虚增当期利润2,423.77万元，占2017年1至9月份当期披露利润总额的19.74%。&lt;/p&gt;&lt;p&gt;具体来看，雅百特为了造假，动用了7个国家和地区的50多个公司走账，超过了100多个银行帐户进行资金划转，而且经常通过银行票据和第三方支付划转，渠道复杂。稽查人员为了核实这些账户信息，几乎走遍了上海各大银行。&lt;/p&gt;&lt;p&gt;具体方式2015年雅百特在与巴基斯坦木尔坦市开展的城市快速公交专线项目实现收入超过2亿元，占年度销售总额21.8%。巴基斯坦木尔坦项目业主方为木尔坦发展署，建设城市快速公交线，总投资超过3.5亿美元。不过，木尔坦发展署根本没有和雅百特合作，年报所说的收入完全是子虚乌有。在证监会调查中发现雅百特根本就没有参与这个项目的建设，它是找了海外的一个公司伪造了一个虚假的工程建设合同，但是这个合同根本就没有履行。为了圆谎，雅百特还自导自演了一场将建材出口到巴基斯坦的“好戏”。&lt;/p&gt;&lt;p&gt;从资金链来讲，经过证监会的调查，雅百特的回款主要来源于雅百特本身控制的公司，还有其他的一些中国境内的公司，根本就不是那个巴基斯坦方面转钱的。&lt;/p&gt;&lt;p&gt;比如老朋友，北大荒。北大荒鑫亚通过亚麻交易虚增2011年度利润1,600.58万元。2011年11月至12月，北大荒鑫亚向北大荒青枫亚麻纺织有限责任公司销售4,071.03吨亚麻时，与青枫亚麻串通，另签订虚假合同，每吨加价4,600元，虚增2011年度利润1,600.58万元。&lt;/p&gt;&lt;p&gt;北大荒鑫亚通过水稻交易虚增2011年度利润3,524万元。北大荒鑫亚委托鸡东县忠旺粮库代理收购、保管及销售水稻。2011年，忠旺粮库将代理北大荒鑫亚保管的35,325.87吨水稻烘干整理后剩余33,600.51吨，与北大荒鑫亚的经办人赵亚光联系确定价格后，销售取得含税收入7,421万元，北大荒鑫亚此项业务为亏损。为了不暴露亏损并完成目标任务，北大荒鑫亚通过伪造合同等方式，使本项水稻销售共确认含税收入11,403万元，导致虚增2011年度利润3,524万元。&lt;/p&gt;&lt;p&gt;北大荒有高管抗辩到，关于亚麻项目，北大荒鑫亚将第二年能够实现的利润挪到第一年，符合会计规定，不构成虚增利润。&lt;/p&gt;&lt;p&gt;2提前确认收入&lt;/p&gt;&lt;p&gt;提前确认收入也很好理解，最常见的提前确认收入主要是使用完工百分比法的那些公司，当然其他公司也存在。提前确认收入的目标也很明确，就是先撑一年再说。&lt;/p&gt;&lt;p&gt;比如恒顺众昇，2014年公司为了避免亏损，提前确认与四川电力、ASI、PT Metal Smeltindo Selaras的收入2.92亿元。&lt;/p&gt;&lt;p&gt;再比如山东墨龙，山东墨龙2015年三季报通过虚增收入2,167.73万元，少结转成本8,351.34万元，导致净利润虚增10,519.07万元。山东墨龙2016年三季报通过虚增收入6,049.28万元，少结转成本17,582.29万元，导致净利润虚增22,731.56万元。具体方法是，公司在真实财务数据的基础上，通过调增《借出明细表》中的销售单价虚增暂估收入，同时少结转销售成本（包括暂估销售成本和已开票收入对应的销售成本），从而实现净利润的虚增。经上述调整后，公司2015年、2016年的一季报、半年报、三季报归属于母公司所有者的净利润从亏损调整为盈利。&lt;/p&gt;&lt;p&gt;比如欢瑞世纪。&lt;/p&gt;&lt;p&gt;欢瑞影视于2013年12月确认《古剑奇谭》版权转让收入 4905.66万元，发行收入147.17元，同期结转成本2572万元。欢瑞影视与湖南广播电视台卫视频道签订的《电视剧＜古剑奇谭＞中国大陆独家首轮播映权转让协议》生效时间为2014年2月17日，晚于欢瑞影视2013年12月确认《古剑奇谭》营业收入时间，且欢瑞影视在2014年6月27日才与湖南广播电视台完成《古剑奇谭》母带交接工作，不符合《企业会计准则》和欢瑞影视会计政策的规定。&lt;/p&gt;&lt;p&gt;欢瑞影视于2013年12月确认《微时代之恋》版权转让收入1886.79万元，同期结转成本846万元。欢瑞影视与深圳市腾讯计算机系统有限公司签订的《影视节目独占授权合同书》（以下简称《授权合同》）以及《补充协议》生效时间为 2014年2月10 日,晚于欢瑞影视2013年12月确认《微时代之恋》营业收入时间，且《授权合同》存在解除并退款的风险，不符合《企业会计准则》和欢瑞影视会计政策的规定。此外，欢瑞影视不能提供2013年12月已完成母带交接的资料，不能证明2013年12月已完成母带交接手续。&lt;/p&gt;&lt;p&gt;3.欢瑞影视于2014年12月确认《少年四大名捕》版权转让收入2490.57万元,发行收入299万元元，同期结转成本1537.57元。欢瑞影视与湖南广播电视台卫视频道签订的《电视剧＜少年四大名捕＞中国大陆独家首轮播映权转让协议》生效时间为2015年2月26 日, 晚于欢瑞影视2014年12月确认《少年四大名捕》营业收入时间，且欢瑞影视在2015年3月13日才与湖南广播电视台完成《少年四大名捕》母带交接工作，不符合《企业会计准则》和欢瑞影视会计政策的规定。&lt;/p&gt;&lt;p&gt;综上，欢瑞影视2013年因提前确认收入虚增营业收入6940万元元；2014年因提前确认收入虚增营业收入2789万元。&lt;/p&gt;&lt;p&gt;3少记成本、费用&lt;/p&gt;&lt;p&gt;少计成本费用的道理很简单，就是推迟成本费用的入账时间，甚至完全不入账，从而虚增利润。&lt;/p&gt;&lt;p&gt;比如佳电股份，佳电股份以以下三种方式少记成本：第一，将在产品少结转到完工产品成本，降低产值成本率，间接实现少结转主营业务成本；第二，在库存商品结转主营业务成本时，直接少结转主营业务成本，留存部分成本在库存商品中；第三，将销售费用中的部分代理费和网点兑现费延期入账，从而调整当年利润。&lt;/p&gt;&lt;p&gt;其实财务造假的手段很简单，无非就是把收入做大，把成本、费用做小，从而做高净利润。这里需要说明的是，财务造假和财务调节不同，财务调节可以理解为在准则范围内的调整，涉及主观判断，很难定性造假。&lt;/p&gt;&lt;p&gt;&lt;b&gt;五、如何识别财务造假&lt;/b&gt;&lt;/p&gt;&lt;p&gt;当我们知道了上市公司财务造假的动机、原理和手段之后，我们如何识别财务造假呢？其实上面的内容已经包含了识别的手段，这里我们把相关特征在梳理一下。&lt;/p&gt;&lt;p&gt;1远高于同行业的毛利率&lt;/p&gt;&lt;p&gt;浑水做空的财务指标特征里，“&lt;b&gt;远高于同行业的毛利率&lt;/b&gt;”排在第一位。为什么呢？因为不管你是虚增收入还是虚减成本，其结果就是毛利率变高，而且理论上在充分竞争的市场中，每家企业只能取得平均的利润率，因此在使用这个指标时，一定要注意适应性：在TOC领域，品牌可以带来超额的毛利率；在TOB的制造业领域，先进的技术也可以带来超额毛利率。&lt;/p&gt;&lt;p&gt;因此&lt;b&gt;毛利率异常&lt;/b&gt;是判断上市公司财务是否造假的起点。&lt;/p&gt;&lt;p&gt;什么叫毛利率异常呢？这里分几种情况：一是浑水提到的&lt;b&gt;毛利率明显高于或者低于同行业上市公司的水平，或者变动趋势与行业不一致&lt;/b&gt;；二是无视经济周期的影响，增长异常平稳；三是毛利率稳定或上升时，应收账款大增，存货周转变缓。&lt;/p&gt;&lt;p&gt;初善君扫雷5《康美药业究竟有没有谎言》中提到，康美药业赖以起家的中药材贸易毛利率奇高，不符合贸易业的一般常理。下图为康美药业中药材贸易收入明细及毛利率，可以看到与一般贸易业10%甚至5%以内的毛利率比，中药材贸易毛利率高达24%以上，2018年上半年实现营业收入48.03亿元，毛利率高达26%。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90ae28123c23fc2b8a6.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;初善君提到，好奇中药材贸易的上下游分别是谁，为什么让康美药业半年赚取12.35亿的毛利润？&lt;/p&gt;&lt;p&gt;2经营现金流差&lt;/p&gt;&lt;p&gt;经营现金流差是被质疑财务造假最常见的指标，经营现金流差可能有两个原因：一是该收的没收回来，表现是应收账款高估；二是该付的已经付出去了，表现是存货高估。&lt;/p&gt;&lt;p&gt;那么什么叫经营现金流差呢？&lt;/p&gt;&lt;p&gt;初善君一直用的是净现比，意思是净利润现金含量，即经营现金流量净额/净利润，就是说企业实现一元净利润实际流入多少现金。长周期来看（10年以上），经营活动现金流量净额/净利润应该大于1。看整个A股的净现比，扣除金融业之后，A股实现净利润1.94万亿元，经济活动现金流量净额为2.55万亿元，净现比为1.32，也就意味着A股实现1元的净利润，那么流入的现金为1.32元。&lt;/p&gt;&lt;p&gt;第二个指标是收现比，即经营活动现金流入/营业收入，即公司的营业收入中多少收回了现金，一般情况下考虑增值税，这个比值在1.16，即经营活动现金流入/营业收入=1.16。&lt;/p&gt;&lt;p&gt;虽然净现比和收现比的理论值分别为1.32和1.16，但是很多公司达不到的，初善君个人认为净现比不低于0.5，收现比不能低于0.8。&lt;/p&gt;&lt;p&gt;此外，经营现金流波动也不能过大，否则也很异常。&lt;/p&gt;&lt;p&gt;比如信威集团2015年和2016年，连续两年经营现金流为-20亿和-37亿，同期净利润是20亿和16亿，这种巨额背离根本不符合电信业的特征。&lt;/p&gt;&lt;p&gt;初善君扫雷5《康美药业究竟有没有谎言》中关于康美药业的经营现金流做了深入分析，可供大家参考。&lt;/p&gt;&lt;p&gt;回头来看康美药业的净现比，从2010年至2018年上半年，康美药业累计实现净利润201.08亿元，经营活动现金流量净额只有94.65亿元，&lt;b&gt;净现比只有47%&lt;/b&gt;，即实现1元的净利润流入的现金只有0.47元。尤其是2018年上半年，净现比只有17%。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90af3e124d33fd9f53c.jpg!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：wind，作者整理&lt;/p&gt;&lt;p&gt;然而仅仅以此来质疑康美药业财务造假，这不是一个财务高手做的事情，现金流不好有各种原因，至少要去分析经营现金流净额差的原因。是现金没有收回来，还是买入了更多的存货？有两种方法来看这个问题。一种是上图的间接法，可以明显看到，&lt;b&gt;2010年至2018年上半年应收类账款累计增加70.92亿元，但是存货余额增加154.78亿元，这是现金流差的主要原因。&lt;/b&gt;&lt;/p&gt;&lt;p&gt;第二种方法是看根据直接法编制现金流量表和利润表计算的收现比，即销售商品、提供劳务收到的现金/营业收入，意思是1元的营业收入收到了多少现金。因为增值税的原因，一般情况下，收现比约等于1.16。&lt;b&gt;看康美药业的收现比，可以发现从2010年至今，收现比均大于1，也就是公司的收现比还不错，确认的营业收入基本收回了现金。&lt;/b&gt;也就意味着公司应收账款的增加基本跟营业收入的增加同步，公司现金流差的主要原因是购买存货流出的太多了。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90af1b123ec3fc0a3f9.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：wind，作者整理&lt;/p&gt;&lt;p&gt;其实，康美药业所在的中药行业经营现金流普遍不好，甚至整个医药行业经营现金流普遍不好，主要是因为下游是连锁药店或者医院。以2015年-2017年主要医药公司的净利润和经营现金流量净额为例，主要医药公司的净现比都小于1，&lt;b&gt;恒瑞医药、云南白药、复星医药等分别为0.93、0.72和0.75.但是即使如此对比，康美药业的净现比还是相对较低，只有0.39。&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90af1c1253b3fb06d83.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：wind，作者整理&lt;/p&gt;&lt;p&gt;跟主要医药公司相比，康美药业的净现比是最低的。&lt;/p&gt;&lt;p&gt;3大存大贷&lt;/p&gt;&lt;p&gt;货币资金和短期借款都很高，简称存贷双高，尤其是长期的存贷双高，很多人认为这种企业造假的可能性非常大。因为在财务管理者眼中，企业的借贷都是根据企业价值最大化进行的，在企业有大量现金时，何必去借贷呢，企业借贷金额那么高，现金为什么不还贷呢？总之，企业低资金利用效率让人怀疑。&lt;/p&gt;&lt;p&gt;康得新和康美药业的股债双杀更是加深了大家这种印象。&lt;/p&gt;&lt;p&gt;金亚科技当年就是存在存贷双高现象而被实锤造假的。2014年度金亚科技的财务报表显示，货币资金3.45亿，占到总资产的26%，短期借款、长期借款、长期债券等筹资活动的负债余额为4.07亿，占到总资产的30%。对比公司的收入规模5.53亿，有着存贷双高的迹象。2015年公司发布的公告进行差错更正，2014年末账面货币资金余额由3.45亿元调减为1.24万元，调减部分的2.2亿资金实际上为股东占用，这里的存贷双高背后实际上是有潜含着股东占款的情况。&lt;/p&gt;&lt;p&gt;比如信威集团，截止2018年底，公司年报显示账面资金高达111亿，然而2019年1月，16信威01债违约，债券规模20亿，又是典型的111亿资金还不起20亿的借债，要知道公司借壳上市后募集资金上百亿，这些钱去了哪里不言而喻了。&lt;/p&gt;&lt;p&gt;初善君扫雷5《康美药业究竟有没有谎言》中关于康美药业的大存大贷做了深入分析，可供大家参考。&lt;/p&gt;&lt;p&gt;康美药业财务数据被质疑最多的地方就是存贷双高，所谓存贷双高是指一家公司存款余额和贷款余额都非常高，在财务管理者眼里，这种情况是对资金的巨大浪费，一边需要支付高额的财务费用，一边账上还保留大量的现金，不符合商业逻辑。&lt;/p&gt;&lt;p&gt;看康美药业的报表，截止2018年半年报，公司货币资金余额为399亿元，同时有息负债（包括短期借款、长期借款、应付债券、其他负债等）高达347亿元，占净资产的比例分别为119%和104%。而且拉长周期看，康美药业的存贷双高并非一日形成的，从2010年开始，其货币资金和有息负债余额分别为28亿、28亿，占净资产的比例均为56%，占比一路上涨，尤其是近四年，一步一个台阶，公司的资产负债表上除了现金就是有息负债，像一对孪生兄弟，很有意思。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90af41124cf3fe21ac3.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：wind，作者整理&lt;/p&gt;&lt;p&gt;那么这么多年的存贷双高是怎么来的呢？股债双融资。看康美药业上市以来的募资统计，其中首发融资只有2.26亿元，但是配股、增发、优先股分别融资34.70亿、96.52亿、30亿，股权累计融资163.48亿元，债务融资更厉害，累计借款融资123.95亿元，债券融资516.5亿元，股债合计融资803.93亿元。如果借款融资按照筹资现金流入的话，则高达742.7亿元，股债合计融资1422.68亿元。&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90b17d123ed3fe0ceb4.jpg!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：wind&lt;/p&gt;&lt;p&gt;存贷双高的一个影响就是康美药业利润表中利息支出占比在不断提升，2018年上半年实现净利润25.92亿元，利息支出高达8.01亿元，占比31%。2017年实现净利润40.95亿元，利息支出12.18亿元，占比30%。而且这种现象持续多年，2010年实现净利润7.16亿元，利息支出1.40亿元，占比20%。在利息支出上，康美药业从未让人失望。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90b1ba1237a3fd04adc.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：wind，作者整理&lt;/p&gt;&lt;p&gt;从资产负债表的存贷双高，到利润表高额的利息支出，康美药业的财务管理行为让人不解。那么康美药业的货币资金是真实存在的吗？初善君在《货币资金》一文中写过，可以通过计算货币资金的收益率与七天通知存款利率来判断货币资金的真实性，比如计算得知2017年上市公司货币资金季度平均余额9.07万亿，实现利息收入1173亿元，平均收益率为1.29%，略低于2017年央行公布的七天通知存款利率1.35%；2018年上半年上市公司货币资金平均余额为9.52万亿，实现利息收入688.74亿元，平均收益率1.45%，略高于央行七天通知存款利率1.35%。&lt;/p&gt;&lt;p&gt;那么康美药业呢，初善君整理了康美药业的利息收入和货币资金余额，计算出货币资金收益率，如下图。可以看到康美药业的货币资金收益率在0.63%-1.45%之间，近三年约0.8%附近，远低于七天通知存款利率，因此使用此方法测算，康美药业货币资金的真实性存在部分可疑。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90b1b3126a53fda010d.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：wind，作者整理&lt;/p&gt;&lt;p&gt;但是实话实说，此测算方法局限性比较大，并不能保证测算结果的完全真确，只是一种参考方法。可是初善君用此方法测算利息支出发现，康美药业的利息支出高达5%以上，2012年-2014年更是高达7%左右，所以从财务管理的角度没有人能够合理解释：康美药业为什么要用5%以上的利息支出率借款347亿元，而收益率只有0.8%左右，难道银行是康美药业大股东开的，为了给银行支付利息？&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;数据来源：wind，作者整理&lt;/p&gt;&lt;p&gt;在货币资金一文中，初善君发现有三类公司的存贷可能会出现双高，一种是因为商业模式，比如供应链企业，一种是传统行业的国企，还有一种属于子公司多的企业。子公司多的企业，由于不同业务板块的盈利能力、报表不同，自然存在一些子公司存款多，另一些子公司贷款多，那么合并报表里自然会出现双高的局面。&lt;/p&gt;&lt;p&gt;截止2018年半年度，康美药业并表子公司高达120多家，是不是因为子公司多导致存贷双高呢。从2010年开始，康美药业已经存贷双高了，但是当年康美药业并表子公司只有12家，因此康美药业的存在双高也不是因为子公司众多导致的，其货币资金主要存放在母公司。对比康美药业的母公司报表货币资金及合并报表货币资金可以发现，康美药业的母公司货币资金占比非常高，一直在90%以上，&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90b20e1231a3fc2429a.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;数据来源：wind，作者整理&lt;/p&gt;&lt;p&gt;而且查看公司半年报得知，公司受限的货币资金不足1亿元，外币存款更是不足0.1亿元，&lt;b&gt;纵然公司董秘在多个场合强调公司高额货币资金的合理性，不合理就是不合理&lt;/b&gt;。&lt;/p&gt;&lt;p&gt;4隐瞒关联交易或严重依赖关联交易&lt;/p&gt;&lt;p&gt;提到大A股关联交易，不得不提两个典型公司，一个是当年集万千宠爱于一身的乐视网，一个是不知关联方在何处的神雾环保。&lt;/p&gt;&lt;p&gt;然而时至今日，两家公司股价回撤均超过90%,神雾环保股价最高接近400亿，现在只有36亿；乐视网股价最高接近1600亿，现在市值不到70亿。&lt;/p&gt;&lt;p&gt;这种暴跌，跟关联交易有很大的关系。&lt;/p&gt;&lt;p&gt;之前初善君也写过，&lt;b&gt;关联交易带来两个资本市场最怕的问题，一是公司业绩是否对关联方及关联交易存在依赖，二是担心公司是否借关联交易调节业绩。&lt;/b&gt;&lt;/p&gt;&lt;p&gt;初善君2017年10月12日发布过文章《从合同角度四问神雾环保》。其中问题一和问题四如下。&lt;/p&gt;&lt;p&gt;问题一：为什么确认收入的大多都是关联方，而非关联方山西襄矿和石家庄化工化纤有限公司的合同则因各种原因搁浅，合同签订两三年仍未能开工建设。而即使是确认收入的港原和新疆博力拓均为小额收入，占公司收入比例特别低。&lt;/p&gt;&lt;p&gt;问题四：如果公司宣称的“黑科技”属实，为什么在港原化工的项目（客户2合同一）竣工一年多以来，签署的合同还是关联合同？既然有示范效益，且效益那么大，其他大的化工公司不是应该主动跟贵公司签订合同吗？关联交易合理性不足。&lt;/p&gt;&lt;p&gt;5海外收入&lt;/p&gt;&lt;p&gt;海外收入由于核查难度大，被很多A股公司用来隐藏造假，而且屡试不爽。&lt;/p&gt;&lt;p&gt;比如改造地球的信威集团，比如2015年和2016年国外实现营业收入33亿和27亿，占比超过90%，而这些收入的毛利率高达91%和85%，这那里是电信设备，比洗钱还赚钱。2017年之后，国外收入骤降至0.88亿和0.02亿，康得新的毛利率至少还是稳定可信的。&lt;/p&gt;&lt;p&gt;6实控人股票质押比例过高&lt;/p&gt;&lt;p&gt;这样的情况在A股也是一个经常性的现象，实控人股票质押比例过高。股票质押在一般情况下是公司实控人进行融资的手段，是一件好事。但是如果公司实控人过多的质押股份，会形成很大的风险，一方面在于其经营上缺钱，一方面一旦股价低于质押价格，很可能遭遇平仓，使得股价进一步的降低。一个是经营上出现问题，一个是股价出现闪崩，两方面都不好。&lt;/p&gt;&lt;p&gt;初善君扫雷5《康美药业究竟有没有谎言》中关于康美药业的股权质押：康美药业股东股权质押比例非常高，截止目前，大股东康美实业持有康美药业91.91%的股权已经质押，因此有些投资者已经发现了康美药业最近一周每天拉升尾盘，特别有庄股的嫌疑。&lt;/p&gt;&lt;p&gt;7分红少&lt;/p&gt;&lt;p&gt;虽然A股的传统是分红不积极，但是财务造假的公司一定更吝啬。因为净利润是虚增的，怎么会有钱进行大额分红呢。&lt;/p&gt;&lt;p&gt;比如康得新2014年以来虽然年年盈利超10亿元，但是分红很少，分红率只有10%。&lt;/p&gt;&lt;p&gt;&lt;img class="ke_img" src="https://xqimg.imedao.com/1714a90b1e61237b3fcb6dc1.png!custom.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;以上识别手段均是发现财务造假的起点，至于能否发现并证实，需要对公司的进行逻辑缜密的验证，如果发现不符合常识、逻辑的地方，那么大概率是有问题的。&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://xueqiu.com/n/今日话题" target="_blank"&gt;@今日话题&lt;/a&gt; &lt;a href="http://xueqiu.com/S/LK" target="_blank"&gt;$瑞幸咖啡(LK)$&lt;/a&gt; &lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://xueqiu.com/6615553088/146105529"&gt;本话题在雪球有70条讨论，点击查看。&lt;/a&gt;&lt;br/&gt;雪球是一个投资者的社交网络，聪明的投资者都在这里。&lt;br/&gt;点击下载雪球手机客户端 &lt;a href="http://xueqiu.com/xz"&gt;http://xueqiu.com/xz&lt;/a&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60479-%E8%B4%A2%E5%8A%A1-%E9%80%A0%E5%81%87-%E5%8A%A8%E6%9C%BA</guid>
      <pubDate>Mon, 06 Apr 2020 20:35:22 CST</pubDate>
    </item>
    <item>
      <title>深度解读零信任身份安全—— 全面身份化：零信任安全的基石_手机搜狐网</title>
      <link>https://itindex.net/detail/60423-%E6%B7%B1%E5%BA%A6-%E4%BF%A1%E4%BB%BB-%E8%BA%AB%E4%BB%BD</link>
      <description>&lt;div&gt;    &lt;p&gt;传统的基于边界的网络安全架构某种程度上假设、或默认了内网是安全的，认为安全就是构筑企业的数字护城河，通过防火墙、WAF、IPS等边界安全产品/方案对企业网络出口进行重重防护而忽略企业内网的安全。&lt;/p&gt;    &lt;p&gt;在“企业边界正在瓦解，基于边界的安全防护体系正在失效”这一大背景下，零信任安全针对传统边界安全架构思想进行了重新评估和审视，并对安全架构思路给出了新的建议，其      &lt;strong&gt;核心思想是：默认情况下不应该信任网络内部和外部的任何人/设备/系统，需要基于认证和授权重构访问控制的信任基础&lt;/strong&gt;。零信任对访问控制进行了范式上的颠覆，引导安全体系架构从网络中心化走向身份中心化，其本质诉求是以身份为中心进行访问控制。&lt;/p&gt;    &lt;p&gt;从技术方案层面来看，零信任安全是借助现代身份管理平台实现对人/设备/系统的全面、动态、智能的访问控制，其核心实践包括：&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;以身份为中心&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;通过身份治理平台实现设备、用户、应用等实体的全面身份化，采用设备认证和用户认证两大关键技术手段，从0开始构筑基于身份的信任体系，建立企业全新的身份边界。&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;业务安全访问&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;所有的业务都隐藏在零信任可信接入网关之后，只有认证通过的设备和用户，并且具备足够的权限才能访问业务。&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;动态访问控制&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;访问控制需要符合最小权限原则进行细粒度授权，基于尽量多的属性进行信任和风险度量，实现动态自适应访问控制。&lt;/p&gt;    &lt;p&gt;不难看出，以身份为中心实现设备、用户、应用、系统的全面身份化是零信任安全的根基，缺少了这个根基，动态访问控制将成为无源之水无本之木。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;“全面身份化”是零信任安全动态访问控制的基石&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;传统语境下，身份更多的是“人”的专属术语，是物理世界的人在数字世界的对等物，甚至多数情况下大家将身份等同于应用系统的账号。这不难理解，毕竟在传统的信息系统和网络世界中，人、机是主要的参与实体，机器大多可以通过机器名、网络地址等进行标识，而为了实现记账和访问控制等功能，人也需要一个标识，那就自然而然的为每一个人在系统中创建一个账号，并将这个账号等同于数字身份。&lt;/p&gt;    &lt;p&gt;随着如今IT技术的飞速发展，这个狭义的身份范畴已经跟不上时代了，至少包括如下两个方面：&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;1. 身份的实体范畴不仅仅是人&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;在万物互联的时代，物已经成为了重要的参与实体，其基数已经远远超出了人。因此，仅仅为人创建身份是远远不够的，正如Gartner所建议的，需要建立全面的“实体”身份空间，这些“实体”包括：人、服务、设备等等。通过全面的身份化，实现对网络参与的各个实体在统一的框架下进行全生命周期管理。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;2. 身份不等同于账号&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;虽然在一个单一的业务系统内，身份和账号存在某种一对一的关系，但是，身份并不等同于账号。一个身份在不同的业务系统内存在不同的账号，身份是唯一的，账号不是唯一的。随着云计算、移动计算的发展，应用越来越碎片化，一个实体的人/数字化的身份对应的账号越来越多，理解身份和账号的差异至关重要。&lt;/p&gt;    &lt;p&gt;简单下个定义：身份是物理世界的人/物/系统等实体在数字世界的唯一标识，是物理世界的实体在数字世界的对等物。&lt;/p&gt;    &lt;p&gt;事实上，在现代身份治理框架下，核心逻辑之一就是关注身份、账号、权限三个平面及其映射关系：为物理世界的人/物创建数字身份并关联对应的身份生命周期管理流程、梳理关联各业务系统账号和身份的属主关系、控制各个账号的权限分派实现基础授权。如下图所示：&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;另外，为了实现闭环的全面身份化治理，需要部署智能身份分析系统，对当前系统的权限、策略、角色进行智能分析，发现潜在的策略违规并触发工作流引擎进行自动、或人工干预的策略调整，实现治理闭环。&lt;/p&gt;    &lt;p&gt;如上，在零信任安全语境下，身份是为访问控制服务的。因此，需要对参与访问控制的各主体、客体进行全面的身份化，包括：用户、设备、应用和接口等都需要具备唯一的数字身份。&lt;/p&gt;    &lt;p&gt;Evan Gilman最新的研究方向就是工作负载的身份化，其目的就是为了基于零信任理念，解决工作负载之间的访问控制问题，建立零信任数据中心网络，是全面身份化在数据中心网络场景的创新实践。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;零信任数据中心网络的工作负载身份化实践&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;接下来整理分享Evan关于零信任数据中心网络的工作负载身份化研究的最新成果。&lt;/p&gt;    &lt;p&gt;Evan指出解决零信任网络信任问题最重要的机制就是认证，而认证的基础是通信双方的身份标识。随着数据中心的建立，进程与进程之间通信同样需要认证，而现今使用广泛的标识(IP地址)，并不适用于进程与进程之间的通信，如：Kubernets为每个进程指派一个IP地址，但是多个软件服务可能共享同一个IP地址。同时，基于IP地址的标识机制还存在访问控制列表的规模过大、潜在的IP地址伪造等问题。&lt;/p&gt;    &lt;p&gt;要实现进程与进程之前的安全通信，需要更细粒度的标识，需要构建工作负载特有的身份标识体系。目前，不同的软件平台对与工作负载标识的方法不同，相互之间不能兼容，且没有一个具有互操作性、能完美的与客户系统兼容的标识。如果能提供一个统一的工作负载标识框架是极具意义的，SPIFFE通用安全身份框架正是这样的框架，也是目前Evan的研究重点，除此之外，Evan还致力于基于SPIFFE的参考实现SPIRE开源项目的研发和推动。&lt;/p&gt;    &lt;p&gt;SPIFFE(Secure Product Identity Framework For Everyone，通用安全身份框架)提供了统一的工作负载身份解决方案。SPIFFE主要包括三部分内容：SPIFFE ID规范、SVID身份标识文档标准、API规范及约束，下面简单介绍：&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;统一工作负载身份标识SPIFFE ID&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;SPIFFE ID是一串形如URI的字符串，主要由两部分组成：信任域和工作负载路径。信任域和系统的信任根有关，是运行SPIFFE框架的组织、机构环境，也可以理解为工作负载身份的颁发者。工作负载路径可以标识工作负载提供的软件服务、标识服务拥有者，但更多情况下，它只是一个模糊的字符串，不会包含任何上层结构信息，但是可以通过该字符串查询有关工作负载的元数据，如地理位置、逻辑系统分区和服务等。&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;SVID（SPIFFE Validation Identity Document, SPIFFE身份标识文档）&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;SPIFFE SVID是对SPIFFE ID编码后的一种可加密认证文件,是工作负载向远端系统证明自己身份的文件，主要由三部分组成：SPIFFE ID、公钥和有效签名。许多文件格式都可以满足SVID的要求，但考虑到易用性和广泛性，SPIFFE SVID目前仅采用了X.509加密认证文件格式。&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;工作负载身份化API&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;定义了与工作负载通信的标准（本地）接口，为工作负载颁发及获取SVID明确了接口规范和参考流程。SVID和工作负载API的标准化统一了工作负载身份的交互接口，将工作负载与具体运行平台解耦，为系统结构的异构化化发展起到了推动作用。&lt;/p&gt;    &lt;p&gt;最后，简单的介绍一下开源项目SPIRE(SPIFFE 运行环境)，主要由两部分组成，SPIRE服务器和SPIRE代理。SPIRE服务器主要提供三种服务：身份映射、节点认证和SVID的颁发。SPIRE代理的主要职责是提供工作负载认证和工作负载API接口。&lt;/p&gt;    &lt;p&gt;在实际环境中，SPIRE的启动和加载过程也很简单，通过启动SPIRE服务器、启动SPIRE代理、工作负载获取SVID简单的三个步骤，即可建立从SPIRE服务器到SPIRE代理的工作负载信任链，工作负载获得能够适配各种平台的SVID，进而实现工作负载间的认证。&lt;/p&gt;    &lt;p&gt;SPIFFE及其参考实现SPIRE是全面身份化在数据中心网络的全新实践，其出发点是构建一套标准、开放、统一的零信任数据中心网络的身份标识体系，虽然要达成这一目标颇具挑战，但是业界在构建零信任安全架构的过程中，仍然可以从这项研究成果中得到启发，在各种场景切合实际，实现能落地的全面身份化方案。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;结语&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;零信任安全的本质是以身份为中心进行动态访问控制，全面身份化是实现零信任安全架构的前提和基石，基于全面身份化，为零信任网络的人、设备、应用、系统等物理实体建立统一的数字身份标识和治理流程，并进一步的构筑动态访问控制体系，将安全边界延伸至身份实体，实现安全架构的关口前移。&lt;/p&gt;    &lt;p&gt;文章来源：360身份安全实验室(360 ESG Identity Security &lt;/p&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60423-%E6%B7%B1%E5%BA%A6-%E4%BF%A1%E4%BB%BB-%E8%BA%AB%E4%BB%BD</guid>
      <pubDate>Sat, 07 Mar 2020 12:15:34 CST</pubDate>
    </item>
    <item>
      <title>Google做了6个超好玩的应用 但目的却是让你放下手机</title>
      <link>https://itindex.net/detail/60113-google-%E5%BA%94%E7%94%A8-%E7%9B%AE%E7%9A%84</link>
      <description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;随着越来越多的人“沉迷”手机，厂商也开始关注这方面的健康问题。苹果在 iOS 12 中推出了“屏幕使用时间”，用户可以查看并管理自己使用应用的频率。Google 也在 Android P 中新增了“数字健康”功能，还规定搭载 Android P、Android 10 的新设备出厂自带。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;最近，Google 发起了一个新的“ 数字健康实验”项目，用 6 个有趣好玩的应用来帮你远离手机。这些创意看起来有些天马行空，但更大的意义是启发开发者，呼吁更多人来关注数字健康。&lt;/p&gt; &lt;p&gt;他们到底想出了哪些“鬼点子”？下面就一起来看一下吧。&lt;/p&gt; &lt;p&gt;Unlock Clock 解锁计数器&lt;/p&gt; &lt;p&gt;第一个是动态壁纸，下载后可以在壁纸设置中找到，或者配合 Google 的 Wallpapers 应用来使用。它的作用是在你每次打开手机时进行计数，就像翻页时钟一样。比起每周看统计数据时后悔跺脚，不如将事实直接展示在你面前。&lt;/p&gt; &lt;p&gt;  &lt;a href="https://static.cnbetacdn.com/article/2019/1027/07cd3791233518d.jpg"&gt;   &lt;img src="https://static.cnbetacdn.com/thumb/article/2019/1027/07cd3791233518d.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Post Box 通知收纳盒&lt;/p&gt; &lt;p&gt;第二个应用叫 Post Box，它会把你手机上的通知统一收纳起来，只在固定时间查看。一天最多可以看 4 次，设定好时间，就再也不用担心各种弹窗广告影响你的注意力。Post Box 的设计做得也很美观，各个应用会以色块的方式排列，点进去只有最基本的文字信息，高效、省时。&lt;/p&gt; &lt;p&gt;  &lt;a href="https://static.cnbetacdn.com/article/2019/1027/18d2cd176014106.jpg"&gt;   &lt;img src="https://static.cnbetacdn.com/thumb/article/2019/1027/18d2cd176014106.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;We Flip 都别玩手机&lt;/p&gt; &lt;p&gt;第三个应用很有意思，它适用于聚餐还有会议场景。在这种情况下，大家默认是不应该玩手机的，活动开始时可以将所有人的状态调整为开启，期间只要有一个人没有经受住诱惑，切换到了其它界面，本次活动就自动结束，该扣工资、还是让他结账...... 大家就可以自行定夺了。（需要科学上网）&lt;/p&gt; &lt;p&gt;  &lt;a href="https://static.cnbetacdn.com/article/2019/1027/44f36718d37882a.jpg"&gt;   &lt;img src="https://static.cnbetacdn.com/thumb/article/2019/1027/44f36718d37882a.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Paper Phone 纸片手机&lt;/p&gt; &lt;p&gt;第四个应用也很独特，前面的几个应用都是让你尽量减少手机的使用，而 Paper Phone 则是让你彻底扔掉手机。当然，生活中有很多地方是离不开手机的，Paper Phone 的作用就是把你今天要用到的内容，在纸上打印出来。它支持导出联系人、地图、备忘、日程等信息，将这张纸折成方块的形状，它就是你今天所需要的“手机”。&lt;/p&gt; &lt;p&gt;  &lt;a href="https://static.cnbetacdn.com/article/2019/1027/076003c9cf1be73.png"&gt;   &lt;img src="https://static.cnbetacdn.com/thumb/article/2019/1027/076003c9cf1be73.png"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Desert Island 沙漠孤岛&lt;/p&gt; &lt;p&gt;第五个应用是一个启动器，它的理念有点类似之前的 Light Phone，只在手机上保留必要的功能。不过在 Desert Island 的选择要更多一些，你最多可以将 7 个应用常驻在桌面，其他应用需要点击右上角才能打开。使用一天之后，你会获得一份统计数据，查看最经常使用的应用是哪些，然后在第二天调整常驻列表。&lt;/p&gt; &lt;p&gt;  &lt;a href="https://static.cnbetacdn.com/article/2019/1027/7ffb69e36b82ec6.jpg"&gt;   &lt;img src="https://static.cnbetacdn.com/thumb/article/2019/1027/7ffb69e36b82ec6.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Morph 场景启动器&lt;/p&gt; &lt;p&gt;手机最影响效率的一点，就是人们总是控制不住自己的手，上班时打游戏摸鱼、开车时回微信......Morph 的作用就是让你在正确的时间使用正确的应用。你可以按照场景选择需要的 App，设定开启的时间段，比如工作时只用办公工具，回家后可以玩一些游戏。&lt;/p&gt; &lt;p&gt;  &lt;a href="https://static.cnbetacdn.com/article/2019/1027/7bcefb1b1ad31fd.jpg"&gt;   &lt;img src="https://static.cnbetacdn.com/thumb/article/2019/1027/7bcefb1b1ad31fd.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Google 推出的这几个数字健康应用，有一些还是很实用的，比如 Post Box、We Flip。有的脑洞很大，不过实用性不高，Google 的实际目的其实是启发开发者，让更多人来制作数字健康应用。&lt;/p&gt; &lt;p&gt;对于这件事，国产厂商也很重视，主流的几个手机品牌都加入了类似的管理功能。当然，数字健康是否真的有用，最终还是要看每个人的自觉性，工具只能是个辅助。&lt;/p&gt;  &lt;p&gt;  &lt;a href="https://m.cnbeta.com/comment/903921.htm"&gt;查看评论&lt;/a&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60113-google-%E5%BA%94%E7%94%A8-%E7%9B%AE%E7%9A%84</guid>
      <pubDate>Sun, 27 Oct 2019 22:06:00 CST</pubDate>
    </item>
    <item>
      <title>南方电网提出向数字化转型，建设数字南网_手机搜狐网</title>
      <link>https://itindex.net/detail/60069-%E5%8D%97%E6%96%B9%E7%94%B5%E7%BD%91-%E6%95%B0%E5%AD%97%E5%8C%96-%E8%BD%AC%E5%9E%8B</link>
      <description>&lt;div&gt;    &lt;p&gt;当前，云计算、大数据、人工智能、物联网等技术的应用已将公司引至第四次工业革命的入口，通过“全要素、全业务、全流程”的数字化转型，将电网生产、管理、运营等能力进行有效集成并实现数字化、智慧化，是公司向智能电网运营商、能源产业价值链整合商、能源生态系统服务商转型的重要支撑。&lt;/p&gt;    &lt;p&gt;那么，公司数字化转型的思路是什么？《方案》提出实施“4321”建设方案，即建设电网管理平台、客户服务平台、调度运行平台、企业级运营管控平台四大业务平台，建设南网云平台、数字电网和物联网三大基础平台，实现与国家工业互联网、数字政府及粤港澳大湾区利益相关方的两个对接，建设完善公司统一的数据中心，最终实现“电网状态全感知、企业管理全在线、运营数据全管控、客户服务全新体验、能源发展合作共赢”的数字南网。&lt;/p&gt;    &lt;p&gt;其中，四大业务平台的具体实施路径是，运用电网管理平台和调度运行平台支持智能电网建设、运行和管控；运用电网管理平台、客户服务平台、调度运行平台支持能源价值链整合和能源生态服务；运用电网管理平台和企业级运营管控平台支持公司管理和决策。三大基础平台是运用南网云平台，支撑公司四大业务平台建设和运行；运用数字电网，支撑数字运营和数字能源生态；运用公司全域物联网，实现公司全域数据的有效采集、传输、存储。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;构建四大业务平台 打造新一代数字化基础平台&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;四大业务平台具体怎么建？&lt;/p&gt;    &lt;p&gt;《方案》提出，建设公司统一的电网管理平台，基于南网云平台，以现有系统的逐步云化、微服务化改造为基础，实现数据驱动的智能电网规划、建设、运营全生命周期管理，实现资产实物管理和价值管理的统一，整合电网规划、设计、施工、设备供应上下游企业资源，构建合作生态。同时，将持续优化完善企业级信息系统。&lt;/p&gt;    &lt;p&gt;建设公司客户服务平台。基于南网云平台，在逐步云化、微服务改造公司营销管理系统、财务管理系统等系统基础上，整合公司互联网服务，建设统一的客户服务平台。与南方区域统一电力交易系统实现业务互联和数据共享，实现公司与政府、发电企业、新能源企业、用电客户、供应商和合作伙伴的互联，实现数据驱动的市场营销业务和客户服务，逐步覆盖产业链金融服务、综合能源服务、电动汽车运营、电子商务等业务。同时，研究成立统一的互联网平台运营公司，整合公司“互联网+”业务，研究构建“互联网+”商业模式，打造能源经济合作新业态。&lt;/p&gt;    &lt;p&gt;完善公司调度运行系统，构建支撑电网调度和现货市场运营两大业务融合的调度运行平台，实现大电网自主巡航、电力市场有序运转、新能源高效吸纳、系统资源最优利用。为确保网络安全，调度运行平台在生产控制大区相对独立运行，向公司数据中心提供电网实时运行数据。&lt;/p&gt;    &lt;p&gt;完善公司企业级运营管控平台，开展企业级运营管控平台和各专业运营管控系统的对接融合，提高对公司整体运营监控能力和指标管控能力。&lt;/p&gt;    &lt;p&gt;当前，引领数字化转型的一个重要标志是基于云平台的互联网、人工智能、大数据、物联网等新技术的深度应用。为进一步夯实公司数字化转型的技术支撑，《方案》提出，要建设公司新一代数字化基础平台，即建设统一的南网云平台、数字电网和全域物联网。&lt;/p&gt;    &lt;p&gt;电网的生产运行高度依赖网络和信息化，对公司而言，网络安全就是公司安全、电网安全。《方案》特别强调要保障网络安全，加强数字化转型进程中的网络安全风险防控，提升新一代数字化业务平台网络安全防护能力，加强数据资产和公民个人信息的安全保护，加强互联网及物联网的安全防护，提高网络安全态势感知与应急处置能力，开展防范新业务应用安全风险的技术攻关。&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60069-%E5%8D%97%E6%96%B9%E7%94%B5%E7%BD%91-%E6%95%B0%E5%AD%97%E5%8C%96-%E8%BD%AC%E5%9E%8B</guid>
      <pubDate>Sat, 05 Oct 2019 15:52:58 CST</pubDate>
    </item>
    <item>
      <title>最近手机价格全线暴跌真的只是因为5G要来了吗？</title>
      <link>https://itindex.net/detail/59936-%E6%9C%80%E8%BF%91-%E6%89%8B%E6%9C%BA-%E4%BB%B7%E6%A0%BC</link>
      <description>&lt;p&gt;
 &lt;/p&gt;
 &lt;div&gt;  &lt;a href="http://album.sina.com.cn/pic/001mkIWWzy7w4Nl0b3U4e" target="_blank"&gt;   &lt;img height="366" src="http://s15.sinaimg.cn/mw690/001mkIWWzy7w4Nl0b3U4e&amp;690" width="490"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;
 &lt;p&gt;
等等党，是一群数量颇大的消费群体。他们的消费习性是绝不买刚上市的新品，而是一直等。等到他们认为产品的价格已经跌无可跌，或者性价比十足的时候再出手。不得不说，与早买早享受的尝鲜消费群体相比，等等党代表了一种更为理智的消费理念。而针对近段时间的手机产品，戏称自己“永不为奴”的等等党大获全胜！这是因为，高中低档的手机近来价格全线暴跌。&lt;/p&gt;
 &lt;p&gt;
不管是华为、OPPO、vovo，还是小米、魅族等，都没能逃离旗下手机价格垂直降落，甚至惨遭“腰斩”的命运。这究竟是为什么呢？从大方向上来看，这与5G手机即将到来有一定关系。但更深层次地去扒一扒，却发现并没有那么简单——手机价格的暴跌是有N个理由的。接下来，不妨让我们看看手机暴跌的情况和背后的原因。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;降降降！手机价格断崖式下跌&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;
价格暴跌的血雨腥风，席卷整个手机圈。&lt;/p&gt;
 &lt;p&gt;
如果你现在想买手机，那么等等党可以口若悬河地推荐多款价格大跳水的热门手机。iPhone XS Max
64GB版已经从首发上市时的9599元跌到6699元，苹果完全不保值。在高端旗舰档位上，华为P30 Pro直降500元，OPPO Find
X直降1000元。首发价格高达3799元起步的荣耀Magic
2，如今仅仅2299元起步，暴跌1500元。&lt;/p&gt;
 &lt;p&gt;
在中高端档位上，刚刚上市仅2个多月的红米K20
Pro直降300元，且支持六期免息。小米9 也不遑多让，价格跌了400元。在中端价位上，此前销量爆棚、价格超稳的红米Note 7系列也迎来200元的跌幅，成为降价潮的又一“牺牲品”。而主打性价比的realme
X也没能逃过降价的命运，使足劲儿以降价博关注。售价在千元以下的低端机，红米7、魅族X8等价格也都有不同程度的下跌。&lt;/p&gt;
 &lt;p&gt;
可以看到，当下手机价格正呈现断崖式下能保持价格不动的手机，可谓“万中无一”。跌态势。这股降价风潮席卷了几乎每一家手机厂商，热门机型几乎无一幸免。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;5G&lt;/strong&gt;  &lt;strong&gt;只是引子，引发心理恐慌&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;
事实上，手机圈的这股降价风潮来得颇为诡异。手机降价原本是很正常的事，毕竟每款手机都有其周期性，会根据上市后的阶段不同调整相应价格。但像这次降价波及范围之广、覆盖范围之大，却是前所未有。而从手机进化角度看，5G时代开启的确带来了一定影响。&lt;/p&gt;
 &lt;p&gt;
就在前段时间，数款5G手机上市引来了广泛关注。比如一个星期的时间内，“5G手机”在天猫的搜索量就整整增长27倍。5G手机强劲的宣传势头，很容易让人误解——接下来就是5G手机的制霸时代。但事实上，在5G网络尚未全面商用、5G手机价格居高不下的情况下，绝大多数消费者对5G手机只是持有观望情绪。&lt;/p&gt;
 &lt;p align="center"&gt;  &lt;a href="http://album.sina.com.cn/pic/001mkIWWzy7w4NmaUhB13" target="_blank"&gt;   &lt;img height="290" src="http://s4.sinaimg.cn/mw690/001mkIWWzy7w4NmaUhB13&amp;690" width="490"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;br /&gt;&lt;/p&gt;
 &lt;p&gt;
比如已经正式开售的中兴Axon 10 Pro 5G版手机，目前在京东上仅仅有70多个评价。在苏宁易购上，更是只有2个评价。这样的销售情况，可谓惨不忍睹。这也从侧面反映出，5G手机远远没有形成真正的冲击波。5G手机的出现，更多地是引来消费者和手机厂商的“心里恐慌”。&lt;/p&gt;
 &lt;p&gt;
既然现在购买5G手机不划算，那么消费者自然就不去购买。但为了等待明年以更好的价格购买5G手机，他们持币观望的情绪更为强烈，换新动力严重不足。在这样的态势下，手机厂商自然要降价求生存，以持续降价来驱动消费者的购买欲。走量、清仓以迎接5G时代的到来，成为近段时间手机厂商的核心工作之一。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;手机销量下滑成定局，上游产业链日子不好过&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;
手机降价的另一个理由，是目前大环境实在过于低迷。IDC发布的最新报告显示，2019年第二季度中国智能手机市场出货量约9790万台，同比下降5.4%。今年上半年整体出货量约1.8亿台，相比去年同期下滑6.1%。同时，除了华为逆势增长外，其他手机厂商的出货量都呈现不同程度的下滑。愈发疲软的大环境，让手机厂商之间的竞争尤为激烈。降价，就是对抗的直接结果。每家手机厂商，都尝试以愈来愈低的价格来抢占消费者的心智。&lt;/p&gt;
 &lt;p align="center"&gt;  &lt;a href="http://album.sina.com.cn/pic/001mkIWWzy7w4NnmrLXa9" target="_blank"&gt;   &lt;img height="354" src="http://s10.sinaimg.cn/mw690/001mkIWWzy7w4NnmrLXa9&amp;690" width="490"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;br /&gt;&lt;/p&gt;
 &lt;p&gt;
此外，手机行业上游产业链的日子也不好过，众多元器件、零件的价格在走低。以三星为例，其发布的2019年第二季度财报显示，净利润为44亿美元，同比暴跌53%。按照三星的解释，利润暴跌的原因主要在于内存市场疲软、价格下滑。&lt;/p&gt;
 &lt;p&gt;
据半导体研究中心DRAMeXchange此前发布的调查报告显示，2019年第一季度NAND闪存市场均价季度跌幅度从原先估计的10%，提高至20%，第二季报价跌幅降至15%。如果在今年旺季仍无足够需求，NAND闪存的均价跌幅将可能扩大至50%。而包括闪存在内的元器件价格下跌，也让手机的成本价格降低，手机厂商自然有底气去大打价格战。&lt;/p&gt;
 &lt;p&gt;
整体来看，手机价格全线暴跌是由多方面因素共同造成的。这主要是因为手机行业已经形成一个成熟体系，每一个节点出现动荡都会牵一发而动全身。当负面因素凑在一起时，手机价格暴跌也就理所应当了。（科技新发现
康斯坦丁/文）&lt;/p&gt; &lt;br /&gt; &lt;img src="http://simg.sinajs.cn/blog7style/images/special/1265.gif"&gt;&lt;/img&gt; &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>商业财经</category>
      <guid isPermaLink="true">https://itindex.net/detail/59936-%E6%9C%80%E8%BF%91-%E6%89%8B%E6%9C%BA-%E4%BB%B7%E6%A0%BC</guid>
      <pubDate>Fri, 09 Aug 2019 07:06:18 CST</pubDate>
    </item>
    <item>
      <title>mac地址imsi码imei码在手机定位中的作用_152*****908@sina.cn_新浪博客</title>
      <link>https://itindex.net/detail/59837-mac-%E5%9C%B0%E5%9D%80-imsi</link>
      <description>&lt;div&gt;  &lt;div&gt;一、MAC地址的定义&lt;/div&gt;  &lt;div&gt;MAC（Medium/Media Access Control）地址，意译为媒体访问控制，或称为物理地址、硬件地址，用来定义网络设备的位置。在互联网中，每一个网络终端都有一个MAC地址，而每一个网络节点设备都有一个专属于他的IP地址。网卡的物理地址通常是网卡生产厂商烧入网卡的EPROM，它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的设备的地址。也就是说在网络底层的物理传输过程中，是通过物理地址来识别网络设备的，MAC地址就如同我们身份证上的身份号码一样，是全球唯一的。移动互联网是传统互联网的扩展，同样遵从互联网的OSI模型结构，而智能手机除作为GSM通信网络终端外，也是移动互联网的终端设备，同样具有一个唯一的MAC地址。&lt;/div&gt;  &lt;div&gt;   &lt;a href="http://album.sina.com.cn/pic/001O8Eu1zy7iKKxVdrDed" target="_blank"&gt;    &lt;img alt="mac&amp;#22320;&amp;#22336;imsi&amp;#30721;imei&amp;#30721;&amp;#22312;&amp;#25163;&amp;#26426;&amp;#23450;&amp;#20301;&amp;#20013;&amp;#30340;&amp;#20316;&amp;#29992;" src="http://s14.sinaimg.cn/mw690/001O8Eu1zy7iKKxVdrDed&amp;690" title="mac&amp;#22320;&amp;#22336;imsi&amp;#30721;imei&amp;#30721;&amp;#22312;&amp;#25163;&amp;#26426;&amp;#23450;&amp;#20301;&amp;#20013;&amp;#30340;&amp;#20316;&amp;#29992;"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;br /&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;   &lt;br /&gt;&lt;/div&gt;一、MAC地址   &lt;div&gt;   &lt;div&gt;    &lt;strong&gt;固定的MAC地址与变化的IP地址相关联，形成手机移动轨迹。&lt;/strong&gt;&lt;/div&gt;   &lt;div&gt;移动互联网中数据的传送依靠将ip地址映射到MAC地址上来完成。MAC地址作为手机的身份标识符是固定不变的，但与其成对出现的IP地址却随着手机在互联网中所连接的节点不同而变化。在移动网络环境中，手机从一个节点范围移动到另一个节点范围，经纬坐标已知的各个节点的IP地址不断与手机固定不变的MAC地址相关联，就形成了手机在地里坐标系中的移动轨迹&lt;/div&gt;   &lt;div&gt;二、imsi码&lt;/div&gt;   &lt;div&gt;    &lt;strong&gt;基站通过广播imsi码与手机取得联系&lt;/strong&gt;&lt;/div&gt;   &lt;div&gt;当手机开机的时候，会将手机和手机卡的一些信息上传给基站，其中包括IMSI码、IMEI码和MAC码。附近的几个基站根据信号的强弱可以判断手机所在位置。因为基站本身是带GPS模块的，所以就可以对手机进行定位。正常情况下基站通过广播IMSI码与手机取得联系，IMSI码就是基站对手机定位身份的标识。但实际上通过基站对手机进行定位并不只靠IMSI码，也依靠手机与基站之间的信号，也就是说这个手机只是开机就可以定位手机的位置。因为手机定时会和基站进行联系，联系信号中就包含手机的标识信息&lt;/div&gt;   &lt;div&gt;三、imei码&lt;/div&gt;   &lt;div&gt;    &lt;strong&gt;imei码  手机运营商可以通过imei码分辨用户设备，追踪用户地理位置&lt;/strong&gt;&lt;/div&gt;   &lt;div&gt;IMEI码是手机鉴别的主要依据，由他可以看出是原厂正品手机，还是水改机或翻新机，但他在手机识别和跟踪方面的作用也不容小觑。手机运营商通过IMEI码分辨用户设备，追踪用户地理位置，记录用户拨打电话、发送短信、上网等行为。当手机被盗的时候，如知道IMEI码，可以通过手机运营商进行手机锁定。即：获知手机被盗之后所用的电话号码，终止手机的通话功能，获知手机的方位。公安和安全部门可以根据特定人员手机的IMEI码，无论其更换了什么手机号，通过基站定位后，使用无线电测向车和单兵测向设备定位，精度足够到具体哪个房间&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59837-mac-%E5%9C%B0%E5%9D%80-imsi</guid>
      <pubDate>Tue, 16 Jul 2019 09:29:14 CST</pubDate>
    </item>
    <item>
      <title>智能手机是新的“人民的鸦片”？</title>
      <link>https://itindex.net/detail/59830-%E6%99%BA%E8%83%BD%E6%89%8B%E6%9C%BA-%E4%BA%BA%E6%B0%91-%E9%B8%A6%E7%89%87</link>
      <description>马克思曾说过，宗教是人民的鸦片。数千年来，人类的社会组织是基于信仰。科学无神论的兴起并没有削弱宗教。事实上宗教在世界各地呈上升趋势。如马克吐温所言，有关上帝死亡的报道是夸大其词。但宗教确实面临的一个强大的新竞争对手，它有着相似的功能，正吸引着我们的注意力。它叫互联网。在昔日的圣地，宗教就是你呼吸的空气，你饮用的水；而互联网以及它的载体智能手机就是我们的空气和水，网络空间既无处不在又无处可寻。古代的教徒集会变成我们在消息应用里各个私有群组。虽然这种现代集会仪式感较弱，没有多少真实世界的联系，但目的一致，那就是团结和通过祈祷表达虔诚之情。在很多事情上，你都能看到类似宗教的狂热。看看我们的青少年，看看社交媒体，智能手机 &lt;a href="https://www.bbc.co.uk/news/entertainment-arts-48923485" target="_blank"&gt;难道不是新的人民的鸦片&lt;/a&gt;？ &lt;p&gt;  &lt;img height="120" src="https://img.solidot.org//0/446/liiLIZF8Uh6yM.jpg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;div&gt;
  &lt;a href="http://feeds.feedburner.com/~ff/solidot?a=7mGcIqmET8k:iGxmKH5dxo0:yIl2AUoC8zA"&gt;   &lt;img border="0" src="http://feeds.feedburner.com/~ff/solidot?d=yIl2AUoC8zA"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;a href="http://feeds.feedburner.com/~ff/solidot?a=7mGcIqmET8k:iGxmKH5dxo0:7Q72WNTAKBA"&gt;   &lt;img border="0" src="http://feeds.feedburner.com/~ff/solidot?d=7Q72WNTAKBA"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59830-%E6%99%BA%E8%83%BD%E6%89%8B%E6%9C%BA-%E4%BA%BA%E6%B0%91-%E9%B8%A6%E7%89%87</guid>
      <pubDate>Sat, 13 Jul 2019 22:24:59 CST</pubDate>
    </item>
    <item>
      <title>在Android手机上使用腾讯的ncnn实现图像分类 - 夜雨飘零 - CSDN博客</title>
      <link>https://itindex.net/detail/59737-android-%E6%89%8B%E6%9C%BA-%E8%85%BE%E8%AE%AF</link>
      <description>&lt;div&gt;  &lt;em&gt;前言&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;在之前笔者有介绍过《在Android设备上使用PaddleMobile实现图像分类》，使用的框架是百度开源的PaddleMobile。在本章中，笔者将会介绍使用腾讯的开源手机深度学习框架ncnn来实现在Android手机实现图像分类，这个框架开源时间比较长，相对稳定很多。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;ncnn的GitHub地址：https://github.com/Tencent/ncnn&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;使用Ubuntu编译ncnn库&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1、首先要下载和解压NDK。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;wget https://dl.google.com/android/repository/android-ndk-r17b-linux-x86_64.zip&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;unzip android-ndk-r17b-linux-x86_64.zip&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2、设置NDK环境变量，目录是NDK的解压目录。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;export NDK_ROOT=&amp;quot;/home/test/paddlepaddle/android-ndk-r17b&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;设置好之后，可以使用以下的命令查看配置情况。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;root@test:/home/test/paddlepaddle# echo $NDK_ROOT&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;/home/test/paddlepaddle/android-ndk-r17b&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3、安装cmake，需要安装较高版本的，笔者的cmake版本是3.11.2。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;下载cmake源码&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;wget https://cmake.org/files/v3.11/cmake-3.11.2.tar.gz&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;解压cmake源码&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;tar -zxvf cmake-3.11.2.tar.gz&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;进入到cmake源码根目录，并执行bootstrap。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cd cmake-3.11.2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;./bootstrap&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;最后执行以下两条命令开始安装cmake。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;make&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;make install&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;安装完成之后，可以使用cmake --version是否安装成功。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;root@test:/home/test/paddlepaddle# cmake --version&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cmake version 3.11.2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;CMake suite maintained and supported by Kitware (kitware.com/cmake).&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4、克隆ncnn源码。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;git clone https://github.com/Tencent/ncnn.git&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5、编译源码。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 进入到ncnn源码根目录下&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cd ncnn&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 创建一个新的文件夹&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;mkdir -p build-android-armv7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 进入到该文件夹中&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cd build-android-armv7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 执行编译命令&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    -DANDROID_ABI=&amp;quot;armeabi-v7a&amp;quot; -DANDROID_ARM_NEON=ON \&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    -DANDROID_PLATFORM=android-14 ..&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 这里笔者使用4个行程并行编译&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;make -j4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;make install&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6、编译完成，会在build-android-armv7目录下生成一个install目录，我们编译得到的文件都在该文件夹下：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;include 调用ncnn所需的头文件，该文件夹会存放在Android项目的src/main/cpp目录下；&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;lib 编译得到的ncnn库libncnn.a，之后会存放在Android项目的src/main/jniLibs/armeabi-v7a/libncnn.a&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;转换预测模型&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1、克隆Caffe源码。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;git clone https://github.com/BVLC/caffe.git&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2、编译Caffe源码。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 切换到Caffe目录&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cd caffe&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 在当前目录执行cmake&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cmake .&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 使用4个线程编译&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;make -j4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;make install&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3、升级Caffe模型。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 把需要转换的模型复制到caffe/tools，并切入到该目录&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cd tools&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 升级Caffe模型&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;./upgrade_net_proto_text mobilenet_v2_deploy.prototxt mobilenet_v2_deploy_new.prototxt&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;./upgrade_net_proto_binary mobilenet_v2.caffemodel mobilenet_v2_new.caffemodel&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4、检查模型配置文件，因为只能一张一张图片预测，所以输入要设置为dim: 1。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;name: &amp;quot;MOBILENET_V2&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;layer {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;  name: &amp;quot;input&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;  type: &amp;quot;Input&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;  top: &amp;quot;data&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;  input_param {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    shape {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;      dim: 1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;      dim: 3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;      dim: 224&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;      dim: 224&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;  }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;}&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5、切换到ncnn的根目录，就是我们上一部分克隆的ncnn源码。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cd ncnn/&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6、在根目录下编译ncnn源码。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;mkdir -p build&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cd build&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cmake ..&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;make -j4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;make install&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7、把新的Caffe模型转换成NCNN模型。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 经过上一步，会生产一个tools，我们进入到以下目录&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cd tools/caffe/&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 把已经升级的网络定义文件和权重文件复制到当目录，并执行以下命令&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;./caffe2ncnn mobilenet_v2_deploy_new.prototxt mobilenet_v2_new.caffemodel mobilenet_v2.param mobilenet_v2.bin&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8、对象模型参数进行加密，这样就算别人反编译我们的apk也用不了我们的模型文件。把上一步获得的mobilenet_v2.param、mobilenet_v2.bin复制到该目录的上一个目录，也就是tools目录。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 切换到上一个目录&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cd ../&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# 执行命令之后会生成mobilenet_v2.param、mobilenet_v2.id.h、mobilenet_v2.mem.h&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;./ncnn2mem mobilenet_v2.param mobilenet_v2.bin mobilenet_v2.id.h mobilenet_v2.mem.h&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;经过上面的步骤，得到的文件中，以下文件时需要的：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;mobilenet_v2.param.bin 网络的模型参数；&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;mobilenet_v2.bin 网络的权重；&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;mobilenet_v2.id.h 在预测图片的时候使用到。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;开发Android项目&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;我们在Android Studio上创建一个NCNN1的项目，别忘了选择C++支持。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;其他的可以直接默认就可以了，在这里要注意选择C++11支持。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;在main目录下创建assets目录，并复制以下目录到该目录：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;mobilenet_v2.param.bin 上一步获取网络的模型参数；&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;mobilenet_v2.bin 上一步获取网络的权重；&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;synset.txt label对应的名称，下载地址：https://github.com/shicai/MobileNet-Caffe/blob/master/synset.txt。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;在cpp目录下复制在使用Ubuntu编译NCNN库部分编译得到的include文件夹，包括里面的C++头文件。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;把mobilenet_v2.id.h复制到cpp目录下。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;在main目录下创建jniLibs/armeabi-v7a/目录，并把使用Ubuntu编译NCNN库部分编译得到的libncnn.a复制到该目录。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;在cpp目录下创建一个C++文件，并编写以下代码，这段代码是用于加载模型和预测图片的：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;#include &amp;lt;android/bitmap.h&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;#include &amp;lt;android/log.h&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;#include &amp;lt;jni.h&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;#include &amp;lt;string&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;#include &amp;lt;vector&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;// ncnn&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;#include &amp;quot;include/net.h&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;#include &amp;quot;mobilenet_v2.id.h&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;#include &amp;lt;sys/time.h&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;#include &amp;lt;unistd.h&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;static ncnn::UnlockedPoolAllocator g_blob_pool_allocator;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;static ncnn::PoolAllocator g_workspace_pool_allocator;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;static ncnn::Mat ncnn_param;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;static ncnn::Mat ncnn_bin;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;static ncnn::Net ncnn_net;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;extern &amp;quot;C&amp;quot; {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;// public native boolean Init(byte[] param, byte[] bin, byte[] words);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;JNIEXPORT jboolean JNICALL&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;Java_com_example_ncnn1_NcnnJni_Init(JNIEnv *env, jobject thiz, jbyteArray param, jbyteArray bin) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // init param&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int len = env-&amp;gt;GetArrayLength(param);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        ncnn_param.create(len, (size_t) 1u);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        env-&amp;gt;GetByteArrayRegion(param, 0, len, (jbyte *) ncnn_param);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int ret = ncnn_net.load_param((const unsigned char *) ncnn_param);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        __android_log_print(ANDROID_LOG_DEBUG, &amp;quot;NcnnJni&amp;quot;, &amp;quot;load_param %d %d&amp;quot;, ret, len);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // init bin&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int len = env-&amp;gt;GetArrayLength(bin);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        ncnn_bin.create(len, (size_t) 1u);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        env-&amp;gt;GetByteArrayRegion(bin, 0, len, (jbyte *) ncnn_bin);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int ret = ncnn_net.load_model((const unsigned char *) ncnn_bin);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        __android_log_print(ANDROID_LOG_DEBUG, &amp;quot;NcnnJni&amp;quot;, &amp;quot;load_model %d %d&amp;quot;, ret, len);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    ncnn::Option opt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    opt.lightmode = true;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    opt.num_threads = 4;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    opt.blob_allocator = &amp;amp;g_blob_pool_allocator;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    opt.workspace_allocator = &amp;amp;g_workspace_pool_allocator;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    ncnn::set_default_option(opt);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    return JNI_TRUE;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;}&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;// public native String Detect(Bitmap bitmap);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;JNIEXPORT jfloatArray JNICALL Java_com_example_ncnn1_NcnnJni_Detect(JNIEnv* env, jobject thiz, jobject bitmap)&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;{&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // ncnn from bitmap&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    ncnn::Mat in;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        AndroidBitmapInfo info;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        AndroidBitmap_getInfo(env, bitmap, &amp;amp;info);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int width = info.width;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int height = info.height;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        if (info.format != ANDROID_BITMAP_FORMAT_RGBA_8888)&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            return NULL;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        void* indata;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        AndroidBitmap_lockPixels(env, bitmap, &amp;amp;indata);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        // 把像素转换成data，并指定通道顺序&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        in = ncnn::Mat::from_pixels((const unsigned char*)indata, ncnn::Mat::PIXEL_RGBA2BGR, width, height);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        AndroidBitmap_unlockPixels(env, bitmap);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // ncnn_net&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    std::vector&amp;lt;float&amp;gt; cls_scores;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        // 减去均值和乘上比例&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        const float mean_vals[3] = {103.94f, 116.78f, 123.68f};&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        const float scale[3] = {0.017f, 0.017f, 0.017f};&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        in.substract_mean_normalize(mean_vals, scale);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        ncnn::Extractor ex = ncnn_net.create_extractor();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        // 如果时不加密是使用ex.input(&amp;quot;data&amp;quot;, in);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        ex.input(mobilenet_v2_param_id::BLOB_data, in);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        ncnn::Mat out;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        // 如果时不加密是使用ex.extract(&amp;quot;prob&amp;quot;, out);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        ex.extract(mobilenet_v2_param_id::BLOB_prob, out);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int output_size = out.w;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        jfloat *output[output_size];&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        for (int j = 0; j &amp;lt; out.w; j++) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            output[j] = &amp;amp;out[j];&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        jfloatArray jOutputData = env-&amp;gt;NewFloatArray(output_size);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        if (jOutputData == nullptr) return nullptr;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        env-&amp;gt;SetFloatArrayRegion(jOutputData, 0, output_size,&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                                 reinterpret_cast&amp;lt;const jfloat *&amp;gt;(*output));  // copy&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        return jOutputData;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;}&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;}&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;15&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;16&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;17&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;18&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;19&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;20&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;22&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;23&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;24&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;25&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;26&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;27&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;29&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;30&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;31&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;32&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;33&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;34&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;35&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;36&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;37&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;38&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;39&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;40&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;41&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;42&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;43&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;44&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;45&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;46&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;47&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;48&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;49&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;50&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;51&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;52&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;53&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;54&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;55&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;56&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;57&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;58&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;59&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;60&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;61&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;62&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;63&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;64&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;65&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;66&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;67&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;68&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;69&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;70&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;71&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;72&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;73&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;74&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;75&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;76&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;77&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;78&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;79&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;80&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;81&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;82&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;83&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;84&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;85&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;86&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;87&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;88&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;89&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;90&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;91&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;92&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;93&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;94&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;95&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;96&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;97&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;98&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;99&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;100&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;101&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;102&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;103&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;104&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;105&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;106&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;15&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;16&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;17&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;18&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;19&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;20&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;22&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;23&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;24&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;25&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;26&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;27&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;29&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;30&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;31&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;32&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;33&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;34&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;35&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;36&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;37&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;38&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;39&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;40&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;41&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;42&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;43&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;44&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;45&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;46&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;47&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;48&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;49&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;50&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;51&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;52&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;53&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;54&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;55&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;56&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;57&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;58&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;59&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;60&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;61&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;62&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;63&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;64&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;65&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;66&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;67&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;68&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;69&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;70&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;71&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;72&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;73&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;74&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;75&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;76&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;77&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;78&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;79&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;80&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;81&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;82&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;83&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;84&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;85&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;86&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;87&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;88&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;89&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;90&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;91&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;92&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;93&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;94&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;95&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;96&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;97&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;98&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;99&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;100&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;101&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;102&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;103&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;104&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;105&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;106&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;在项目包com.example.ncnn1下，修改MainActivity.java中的代码，修改如下：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;package com.example.ncnn1;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.Manifest;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.app.Activity;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.content.Intent;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.content.pm.PackageManager;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.content.res.AssetManager;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.graphics.Bitmap;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.graphics.BitmapFactory;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.net.Uri;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.os.Bundle;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.support.annotation.NonNull;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.support.annotation.Nullable;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.support.v4.app.ActivityCompat;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.support.v4.content.ContextCompat;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.text.method.ScrollingMovementMethod;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.util.Log;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.view.View;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.widget.Button;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.widget.ImageView;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.widget.TextView;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.widget.Toast;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import com.bumptech.glide.Glide;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import com.bumptech.glide.load.engine.DiskCacheStrategy;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import com.bumptech.glide.request.RequestOptions;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import java.io.BufferedReader;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import java.io.FileNotFoundException;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import java.io.IOException;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import java.io.InputStream;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import java.io.InputStreamReader;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import java.util.ArrayList;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import java.util.Arrays;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import java.util.List;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;public class MainActivity extends Activity {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private static final String TAG = MainActivity.class.getName();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private static final int USE_PHOTO = 1001;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private String camera_image_path;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private ImageView show_image;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private TextView result_text;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private boolean load_result = false;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private int[] ddims = {1, 3, 224, 224};&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private int model_index = 1;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private List&amp;lt;String&amp;gt; resultLabel = new ArrayList&amp;lt;&amp;gt;();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private NcnnJni squeezencnn = new NcnnJni();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    @Override&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    public void onCreate(Bundle savedInstanceState) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        super.onCreate(savedInstanceState);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        setContentView(R.layout.activity_main);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        try {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            initSqueezeNcnn();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        } catch (IOException e) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            Log.e(&amp;quot;MainActivity&amp;quot;, &amp;quot;initSqueezeNcnn error&amp;quot;);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        init_view();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        readCacheLabelFromLocalFile();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private void initSqueezeNcnn() throws IOException {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        byte[] param = null;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        byte[] bin = null;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            InputStream assetsInputStream = getAssets().open(&amp;quot;mobilenet_v2.param.bin&amp;quot;);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            int available = assetsInputStream.available();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            param = new byte[available];&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            int byteCode = assetsInputStream.read(param);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            assetsInputStream.close();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            InputStream assetsInputStream = getAssets().open(&amp;quot;mobilenet_v2.bin&amp;quot;);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            int available = assetsInputStream.available();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            bin = new byte[available];&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            int byteCode = assetsInputStream.read(bin);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            assetsInputStream.close();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        load_result = squeezencnn.Init(param, bin);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        Log.d(&amp;quot;load model&amp;quot;, &amp;quot;result:&amp;quot; + load_result);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // initialize view&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private void init_view() {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        request_permissions();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        show_image = (ImageView) findViewById(R.id.show_image);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        result_text = (TextView) findViewById(R.id.result_text);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        result_text.setMovementMethod(ScrollingMovementMethod.getInstance());&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        Button use_photo = (Button) findViewById(R.id.use_photo);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        // use photo click&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        use_photo.setOnClickListener(new View.OnClickListener() {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            @Override&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            public void onClick(View view) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                if (!load_result) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    Toast.makeText(MainActivity.this, &amp;quot;never load model&amp;quot;, Toast.LENGTH_SHORT).show();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    return;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                PhotoUtil.use_photo(MainActivity.this, USE_PHOTO);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        });&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;	// load label&amp;apos;s name&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private void readCacheLabelFromLocalFile() {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        try {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            AssetManager assetManager = getApplicationContext().getAssets();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            BufferedReader reader = new BufferedReader(new InputStreamReader(assetManager.open(&amp;quot;synset.txt&amp;quot;)));&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            String readLine = null;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            while ((readLine = reader.readLine()) != null) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                resultLabel.add(readLine);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            reader.close();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        } catch (Exception e) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            Log.e(&amp;quot;labelCache&amp;quot;, &amp;quot;error &amp;quot; + e);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    @Override&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        String image_path;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        RequestOptions options = new RequestOptions().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        if (resultCode == Activity.RESULT_OK) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            switch (requestCode) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                case USE_PHOTO:&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    if (data == null) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                        Log.w(TAG, &amp;quot;user photo data is null&amp;quot;);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                        return;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    Uri image_uri = data.getData();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    Glide.with(MainActivity.this).load(image_uri).apply(options).into(show_image);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    // get image path from uri&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    image_path = PhotoUtil.get_path_from_URI(MainActivity.this, image_uri);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    // predict image&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    predict_image(image_path);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    break;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    //  predict image&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private void predict_image(String image_path) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        // picture to float array&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        Bitmap bmp = PhotoUtil.getScaleBitmap(image_path);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        Bitmap rgba = bmp.copy(Bitmap.Config.ARGB_8888, true);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        // resize to 227x227&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        Bitmap input_bmp = Bitmap.createScaledBitmap(rgba, ddims[2], ddims[3], false);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        try {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            // Data format conversion takes too long&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            // Log.d(&amp;quot;inputData&amp;quot;, Arrays.toString(inputData));&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            long start = System.currentTimeMillis();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            // get predict result&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            float[] result = squeezencnn.Detect(input_bmp);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            long end = System.currentTimeMillis();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            Log.d(TAG, &amp;quot;origin predict result:&amp;quot; + Arrays.toString(result));&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            long time = end - start;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            Log.d(&amp;quot;result length&amp;quot;, String.valueOf(result.length));&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            // show predict result and time&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            int r = get_max_result(result);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            String show_text = &amp;quot;result：&amp;quot; + r + &amp;quot;\nname：&amp;quot; + resultLabel.get(r) + &amp;quot;\nprobability：&amp;quot; + result[r] + &amp;quot;\ntime：&amp;quot; + time + &amp;quot;ms&amp;quot;;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            result_text.setText(show_text);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        } catch (Exception e) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            e.printStackTrace();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // get max probability label&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private int get_max_result(float[] result) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        float probability = result[0];&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int r = 0;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        for (int i = 0; i &amp;lt; result.length; i++) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            if (probability &amp;lt; result[i]) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                probability = result[i];&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                r = i;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        return r;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // request permissions&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    private void request_permissions() {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        List&amp;lt;String&amp;gt; permissionList = new ArrayList&amp;lt;&amp;gt;();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            permissionList.add(Manifest.permission.CAMERA);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            permissionList.add(Manifest.permission.READ_EXTERNAL_STORAGE);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        // if list is not empty will request permissions&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        if (!permissionList.isEmpty()) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            ActivityCompat.requestPermissions(this, permissionList.toArray(new String[permissionList.size()]), 1);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    @Override&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        super.onRequestPermissionsResult(requestCode, permissions, grantResults);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        switch (requestCode) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            case 1:&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                if (grantResults.length &amp;gt; 0) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    for (int i = 0; i &amp;lt; grantResults.length; i++) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                        int grantResult = grantResults[i];&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                        if (grantResult == PackageManager.PERMISSION_DENIED) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                            String s = permissions[i];&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                            Toast.makeText(this, s + &amp;quot; permission was denied&amp;quot;, Toast.LENGTH_SHORT).show();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                break;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;}&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;15&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;16&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;17&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;18&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;19&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;20&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;22&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;23&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;24&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;25&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;26&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;27&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;29&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;30&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;31&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;32&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;33&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;34&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;35&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;36&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;37&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;38&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;39&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;40&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;41&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;42&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;43&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;44&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;45&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;46&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;47&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;48&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;49&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;50&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;51&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;52&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;53&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;54&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;55&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;56&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;57&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;58&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;59&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;60&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;61&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;62&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;63&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;64&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;65&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;66&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;67&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;68&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;69&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;70&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;71&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;72&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;73&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;74&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;75&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;76&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;77&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;78&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;79&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;80&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;81&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;82&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;83&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;84&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;85&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;86&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;87&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;88&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;89&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;90&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;91&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;92&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;93&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;94&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;95&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;96&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;97&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;98&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;99&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;100&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;101&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;102&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;103&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;104&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;105&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;106&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;107&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;108&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;109&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;110&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;111&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;112&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;113&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;114&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;115&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;116&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;117&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;118&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;119&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;120&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;121&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;122&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;123&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;124&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;125&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;126&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;127&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;128&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;129&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;130&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;131&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;132&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;133&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;134&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;135&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;136&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;137&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;138&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;139&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;140&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;141&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;142&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;143&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;144&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;145&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;146&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;147&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;148&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;149&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;150&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;151&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;152&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;153&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;154&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;155&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;156&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;157&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;158&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;159&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;160&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;161&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;162&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;163&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;164&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;165&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;166&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;167&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;168&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;169&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;170&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;171&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;172&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;173&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;174&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;175&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;176&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;177&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;178&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;179&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;180&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;181&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;182&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;183&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;184&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;185&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;186&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;187&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;188&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;189&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;190&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;191&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;192&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;193&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;194&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;195&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;196&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;197&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;198&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;199&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;200&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;201&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;202&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;203&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;204&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;205&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;206&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;207&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;208&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;209&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;210&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;211&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;212&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;213&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;214&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;215&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;216&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;217&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;218&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;219&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;220&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;221&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;222&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;223&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;224&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;225&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;226&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;15&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;16&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;17&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;18&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;19&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;20&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;22&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;23&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;24&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;25&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;26&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;27&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;29&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;30&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;31&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;32&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;33&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;34&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;35&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;36&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;37&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;38&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;39&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;40&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;41&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;42&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;43&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;44&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;45&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;46&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;47&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;48&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;49&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;50&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;51&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;52&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;53&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;54&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;55&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;56&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;57&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;58&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;59&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;60&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;61&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;62&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;63&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;64&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;65&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;66&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;67&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;68&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;69&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;70&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;71&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;72&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;73&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;74&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;75&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;76&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;77&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;78&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;79&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;80&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;81&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;82&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;83&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;84&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;85&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;86&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;87&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;88&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;89&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;90&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;91&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;92&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;93&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;94&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;95&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;96&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;97&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;98&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;99&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;100&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;101&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;102&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;103&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;104&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;105&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;106&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;107&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;108&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;109&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;110&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;111&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;112&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;113&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;114&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;115&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;116&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;117&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;118&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;119&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;120&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;121&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;122&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;123&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;124&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;125&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;126&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;127&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;128&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;129&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;130&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;131&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;132&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;133&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;134&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;135&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;136&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;137&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;138&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;139&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;140&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;141&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;142&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;143&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;144&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;145&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;146&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;147&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;148&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;149&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;150&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;151&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;152&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;153&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;154&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;155&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;156&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;157&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;158&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;159&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;160&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;161&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;162&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;163&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;164&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;165&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;166&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;167&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;168&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;169&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;170&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;171&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;172&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;173&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;174&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;175&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;176&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;177&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;178&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;179&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;180&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;181&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;182&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;183&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;184&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;185&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;186&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;187&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;188&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;189&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;190&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;191&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;192&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;193&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;194&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;195&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;196&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;197&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;198&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;199&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;200&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;201&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;202&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;203&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;204&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;205&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;206&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;207&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;208&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;209&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;210&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;211&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;212&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;213&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;214&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;215&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;216&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;217&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;218&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;219&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;220&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;221&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;222&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;223&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;224&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;225&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;226&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;同样在项目的包com.example.ncnn1下，创建一个NcnnJni.java类，用于提供JNI接口，代码如下：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;package com.example.ncnn1;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.graphics.Bitmap;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;public class NcnnJni&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;{&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    public native boolean Init(byte[] param, byte[] bin);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    public native float[] Detect(Bitmap bitmap);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    static {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        System.loadLibrary(&amp;quot;ncnn_jni&amp;quot;);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;}&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;还是在项目的包com.example.ncnn1下，创建一个PhotoUtil.java类，这个是图片的工具类，代码如下：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;package com.example.ncnn1;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.app.Activity;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.content.Context;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.content.Intent;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.database.Cursor;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.graphics.Bitmap;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.graphics.BitmapFactory;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.net.Uri;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import android.provider.MediaStore;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;import java.nio.FloatBuffer;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;public class PhotoUtil {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // get picture in photo&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    public static void use_photo(Activity activity, int requestCode) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        Intent intent = new Intent(Intent.ACTION_PICK);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        intent.setType(&amp;quot;image/*&amp;quot;);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        activity.startActivityForResult(intent, requestCode);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // get photo from Uri&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    public static String get_path_from_URI(Context context, Uri uri) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        String result;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        if (cursor == null) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            result = uri.getPath();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        } else {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            cursor.moveToFirst();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            result = cursor.getString(idx);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            cursor.close();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        return result;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    // compress picture&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    public static Bitmap getScaleBitmap(String filePath) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        BitmapFactory.Options opt = new BitmapFactory.Options();&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        opt.inJustDecodeBounds = true;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        BitmapFactory.decodeFile(filePath, opt);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int bmpWidth = opt.outWidth;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int bmpHeight = opt.outHeight;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        int maxSize = 500;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        // compress picture with inSampleSize&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        opt.inSampleSize = 1;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        while (true) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            if (bmpWidth / opt.inSampleSize &amp;lt; maxSize || bmpHeight / opt.inSampleSize &amp;lt; maxSize) {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                break;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            opt.inSampleSize *= 2;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        opt.inJustDecodeBounds = false;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        return BitmapFactory.decodeFile(filePath, opt);&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;}&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;15&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;16&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;17&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;18&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;19&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;20&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;22&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;23&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;24&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;25&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;26&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;27&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;29&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;30&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;31&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;32&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;33&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;34&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;35&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;36&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;37&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;38&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;39&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;40&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;41&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;42&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;43&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;44&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;45&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;46&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;47&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;48&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;49&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;50&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;51&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;52&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;53&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;54&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;55&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;56&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;57&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;58&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;59&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;15&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;16&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;17&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;18&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;19&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;20&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;22&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;23&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;24&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;25&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;26&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;27&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;29&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;30&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;31&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;32&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;33&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;34&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;35&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;36&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;37&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;38&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;39&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;40&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;41&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;42&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;43&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;44&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;45&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;46&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;47&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;48&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;49&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;50&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;51&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;52&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;53&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;54&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;55&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;56&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;57&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;58&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;59&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;修改启动页面的布局，修改如下：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;&amp;lt;RelativeLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    xmlns:app=&amp;quot;http://schemas.android.com/apk/res-auto&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    xmlns:tools=&amp;quot;http://schemas.android.com/tools&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    android:layout_width=&amp;quot;match_parent&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    android:layout_height=&amp;quot;match_parent&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    tools:context=&amp;quot;.MainActivity&amp;quot;&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    &amp;lt;LinearLayout&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:id=&amp;quot;@+id/btn_ll&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_alignParentBottom=&amp;quot;true&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:orientation=&amp;quot;horizontal&amp;quot;&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        &amp;lt;Button&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            android:id=&amp;quot;@+id/use_photo&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            android:layout_weight=&amp;quot;1&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            android:layout_width=&amp;quot;0dp&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            android:layout_height=&amp;quot;wrap_content&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            android:text=&amp;quot;相册&amp;quot; /&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    &amp;lt;/LinearLayout&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    &amp;lt;TextView&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_above=&amp;quot;@id/btn_ll&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:id=&amp;quot;@+id/result_text&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:textSize=&amp;quot;16sp&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:hint=&amp;quot;预测结果会在这里显示&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_height=&amp;quot;100dp&amp;quot; /&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    &amp;lt;ImageView&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_alignParentTop=&amp;quot;true&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_above=&amp;quot;@id/result_text&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:id=&amp;quot;@+id/show_image&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_width=&amp;quot;match_parent&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        android:layout_height=&amp;quot;match_parent&amp;quot; /&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;&amp;lt;/RelativeLayout&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;15&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;16&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;17&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;18&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;19&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;20&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;22&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;23&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;24&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;25&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;26&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;27&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;29&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;30&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;31&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;32&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;33&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;34&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;35&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;36&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;37&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;38&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;39&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;40&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;修改APP目录下的CMakeLists.txt文件，修改如下：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# For more information about using CMake with Android Studio, read the&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# documentation: https://d.android.com/studio/projects/add-native-code.html&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# Sets the minimum version of CMake required to build the native library.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;cmake_minimum_required(VERSION 3.4.1)&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# Creates and names a library, sets it as either STATIC&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# or SHARED, and provides the relative paths to its source code.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# You can define multiple libraries, and CMake builds them for you.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# Gradle automatically packages shared libraries with your APK.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;set(ncnn_lib ${CMAKE_SOURCE_DIR}/src/main/jniLibs/armeabi-v7a/libncnn.a)&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;add_library (ncnn_lib STATIC IMPORTED)&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;set_target_properties(ncnn_lib PROPERTIES IMPORTED_LOCATION ${ncnn_lib})&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;add_library( # Sets the name of the library.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;             ncnn_jni&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;             # Sets the library as a shared library.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;             SHARED&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;             # Provides a relative path to your source file(s).&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;             src/main/cpp/ncnn_jni.cpp )&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# Searches for a specified prebuilt library and stores the path as a&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# variable. Because CMake includes system libraries in the search path by&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# default, you only need to specify the name of the public NDK library&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# you want to add. CMake verifies that the library exists before&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# completing its build.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;find_library( # Sets the name of the path variable.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;              log-lib&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;              # Specifies the name of the NDK library that&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;              # you want CMake to locate.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;              log )&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# Specifies libraries CMake should link to your target library. You&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# can link multiple libraries, such as libraries you define in this&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;# build script, prebuilt third-party libraries, or system libraries.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;target_link_libraries( # Specifies the target library.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                       ncnn_jni&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                       ncnn_lib&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                       jnigraphics&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                       # Links the target library to the log library&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                       # included in the NDK.&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                       ${log-lib} )&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;15&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;16&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;17&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;18&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;19&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;20&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;22&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;23&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;24&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;25&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;26&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;27&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;29&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;30&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;31&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;32&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;33&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;34&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;35&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;36&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;37&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;38&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;39&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;40&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;41&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;42&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;43&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;44&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;45&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;46&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;47&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;48&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;49&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;50&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;51&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;修改APP目录下的build.gradle文件，修改如下：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;apply plugin: &amp;apos;com.android.application&amp;apos;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;android {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    compileSdkVersion 28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    defaultConfig {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        applicationId &amp;quot;com.example.ncnn1&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        minSdkVersion 21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        targetSdkVersion 28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        versionCode 1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        versionName &amp;quot;1.0&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        testInstrumentationRunner &amp;quot;android.support.test.runner.AndroidJUnitRunner&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        externalNativeBuild {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            cmake {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                cppFlags &amp;quot;-std=c++11 -fopenmp&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;                abiFilters &amp;quot;armeabi-v7a&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    buildTypes {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        release {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            minifyEnabled false&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            proguardFiles getDefaultProguardFile(&amp;apos;proguard-android.txt&amp;apos;), &amp;apos;proguard-rules.pro&amp;apos;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    externalNativeBuild {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        cmake {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            path &amp;quot;CMakeLists.txt&amp;quot;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    sourceSets {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        main {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            jniLibs.srcDirs = [&amp;quot;src/main/jniLibs&amp;quot;]&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;            jni.srcDirs = [&amp;apos;src/cpp&amp;apos;]&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;        }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    }&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;}&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;dependencies {&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    implementation fileTree(dir: &amp;apos;libs&amp;apos;, include: [&amp;apos;*.jar&amp;apos;])&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    implementation &amp;apos;com.android.support:appcompat-v7:28.0.0-rc02&amp;apos;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    implementation &amp;apos;com.android.support.constraint:constraint-layout:1.1.3&amp;apos;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    testImplementation &amp;apos;junit:junit:4.12&amp;apos;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    implementation &amp;apos;com.github.bumptech.glide:glide:4.3.1&amp;apos;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    androidTestImplementation &amp;apos;com.android.support.test:runner:1.0.2&amp;apos;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;    androidTestImplementation &amp;apos;com.android.support.test.espresso:espresso-core:3.0.2&amp;apos;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;}&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;3&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;4&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;5&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;6&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;7&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;8&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;9&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;10&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;11&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;12&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;13&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;14&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;15&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;16&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;17&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;18&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;19&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;20&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;21&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;22&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;23&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;24&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;25&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;26&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;27&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;28&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;29&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;30&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;31&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;32&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;33&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;34&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;35&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;36&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;37&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;38&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;39&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;40&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;41&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;42&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;43&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;44&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;45&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;46&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;47&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;最后别忘了在配置文件中添加权限。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;&amp;lt;uses-permission android:name=&amp;quot;android.permission.READ_EXTERNAL_STORAGE&amp;quot;/&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;&amp;lt;uses-permission android:name=&amp;quot;android.permission.WRITE_EXTERNAL_STORAGE&amp;quot;/&amp;gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;1&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;2&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;最后的效果图如下：&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;代码传送门： 上面已经几乎包括所有的代码了，为了读者方便直接使用，可以在这里下载项目源代码。&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;   &lt;br /&gt;&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;参考资料&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;https://github.com/BVLC/caffe&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;https://github.com/Tencent/ncnn/wiki/how-to-use-ncnn-with-alexnet&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;https://github.com/Tencent/ncnn/wiki/how-to-build&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;https://github.com/Tencent/ncnn/tree/master/examples/squeezencnn&lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;--------------------- &lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;作者：夜雨飘零1 &lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;来源：CSDN &lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;原文：https://blog.csdn.net/qq_33200967/article/details/82421089 &lt;/em&gt;&lt;/div&gt; &lt;div&gt;  &lt;em&gt;版权声明：本文为博主原创文章，转载请附上博文链接！&lt;/em&gt;&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59737-android-%E6%89%8B%E6%9C%BA-%E8%85%BE%E8%AE%AF</guid>
      <pubDate>Mon, 24 Jun 2019 22:05:23 CST</pubDate>
    </item>
    <item>
      <title>高通如何勒索手机行业二十年</title>
      <link>https://itindex.net/detail/59659-%E9%AB%98%E9%80%9A-%E5%8B%92%E7%B4%A2-%E6%89%8B%E6%9C%BA</link>
      <description>2005 年，苹果联络高通，考虑将其生产的调制解调器芯片用于第一代 iPhone。结果高通发回了一封不同寻常的信函，要求苹果先签署专利授权协议它才会考虑向苹果供应芯片。苹果负责采购的副总裁 Tony Blevins 称，在他从业二十年里从未见过这样的信。绝大多数供应商都渴望与新客户谈论潜在的交易，对于苹果这样的大客户尤其如此。但高通不像其它供应商，它在蜂窝芯片市场享有支配地位，这给了它很多杠杆，而高通并不害怕利用这些杠杆。上月底，加州法官  Lucy Koh  &lt;a href="https://www.courtlistener.com/recap/gov.uscourts.cand.306945/gov.uscourts.cand.306945.1490.0.pdf"&gt;判决&lt;/a&gt;高通的授权策略违反了美国反垄断法。该公司与智能手机制造商签署的结构化合同让其它芯片制造商几乎不可能动摇它的支配地位。专利专家 Charles Duan 称，高通对某些手机芯片拥有垄断权， &lt;a href="https://arstechnica.com/tech-policy/2019/05/how-qualcomm-shook-down-the-cell-phone-industry-for-almost-20-years/"&gt;它利用垄断权收取了过高的费用&lt;/a&gt;，除了芯片高通还要求客户购买专利授权并对专利授权收取高额费用。 &lt;p&gt;  &lt;img height="120" src="https://img.solidot.org//0/446/liiLIZF8Uh6yM.jpg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;div&gt;
  &lt;a href="http://feeds.feedburner.com/~ff/solidot?a=xm_PUqjqJ3s:h6rAOWWv1Gk:yIl2AUoC8zA"&gt;   &lt;img border="0" src="http://feeds.feedburner.com/~ff/solidot?d=yIl2AUoC8zA"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;a href="http://feeds.feedburner.com/~ff/solidot?a=xm_PUqjqJ3s:h6rAOWWv1Gk:7Q72WNTAKBA"&gt;   &lt;img border="0" src="http://feeds.feedburner.com/~ff/solidot?d=7Q72WNTAKBA"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59659-%E9%AB%98%E9%80%9A-%E5%8B%92%E7%B4%A2-%E6%89%8B%E6%9C%BA</guid>
      <pubDate>Mon, 03 Jun 2019 20:29:00 CST</pubDate>
    </item>
    <item>
      <title>关于手机App的Https抓包</title>
      <link>https://itindex.net/detail/59651-%E6%89%8B%E6%9C%BA-app-https</link>
      <description>&lt;p&gt;我喜欢用   &lt;a href="https://mitmproxy.org/" rel="noopener noreferrer" target="_blank"&gt;Mitmproxy&lt;/a&gt; 来处理手机 App 抓包之类的工作，本来用它来抓 Https 包是很容易的一件事，只要设置好代理，浏览 mitm.it 按提示安装证书即可，可是当 Android 版本升级到 7 以后，此方法就失效了，为什么呢？因为新版 Android 缺省情况下只信任系统级证书，而不再信任用户级证书，问题详细描述可以参考：  &lt;a href="https://testerhome.com/topics/17746" rel="noopener noreferrer" target="_blank"&gt;听说安卓微信 7.0 不能抓 https?&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;普通的解决方法有很多，比如说用低版本的 Android 手机，或者干脆换个苹果手机。不过那些治标不治本的方法并不是本文关注的重点，本文我们主要聊聊如何通过 root 来解决问题，但是 root 本身是有风险的，所以下面有请重量级嘉宾  &lt;a href="https://mumu.163.com/" rel="noopener noreferrer" target="_blank"&gt;网易 MuMu&lt;/a&gt; 闪亮登场！它是一个有 root 权限的全功能 Android 模拟器。&lt;/p&gt;
 &lt;div&gt;  &lt;a href="https://blog.huoding.com/wp-content/uploads/2019/05/mumu.png"&gt;   &lt;img alt="mumu" height="1464" src="https://blog.huoding.com/wp-content/uploads/2019/05/mumu.png" width="2052"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;p&gt;mumu&lt;/p&gt;&lt;/div&gt;
 &lt;p&gt;网易 MuMu 使用起来很简单，不过你需要注意实际抓包的时候，你需要设置模拟器的网络连接走相应的代理，设置的方法是找到对应的网络连接「长按」即可：&lt;/p&gt;
 &lt;div&gt;  &lt;a href="https://blog.huoding.com/wp-content/uploads/2019/05/wlan.png"&gt;   &lt;img alt="&amp;#32593;&amp;#32476;&amp;#36830;&amp;#25509;" height="1464" src="https://blog.huoding.com/wp-content/uploads/2019/05/wlan.png" width="2052"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;p&gt;网络连接&lt;/p&gt;&lt;/div&gt;
 &lt;p&gt;因为我是用 Mitmproxy 来抓包的，所以要安装的也是 Mitmproxy 的证书。下面看看如何把 Mitmproxy 证书安装到网易 MuMu 里，记得安装相关工具，以 Mac 操作系统为例：&lt;/p&gt;
 &lt;pre&gt;shell&amp;gt; brew install mitmproxy
shell&amp;gt; brew install Caskroom/cask/android-platform-tools&lt;/pre&gt;
 &lt;p&gt;安装好工具之后，别忘了启动网易 MuMu，然后通过 android-platform-tools 中的 adb 命令来连接它，只需要简单执行「adb shell」即可，如果遇到连不上的情况，可以参考  &lt;a href="http://mumu.163.com/2017/12/19/25241_730476.html" rel="noopener noreferrer" target="_blank"&gt;文档&lt;/a&gt;。连接成功后，你可以在「/system/etc/security/cacerts/」目录看到现有的系统级证书：&lt;/p&gt;
 &lt;div&gt;  &lt;a href="https://blog.huoding.com/wp-content/uploads/2019/05/cacerts.png"&gt;   &lt;img alt="&amp;#35777;&amp;#20070;" height="818" src="https://blog.huoding.com/wp-content/uploads/2019/05/cacerts.png" width="1078"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;p&gt;证书&lt;/p&gt;&lt;/div&gt;
 &lt;p&gt;换句话说，我们只要把 Mitmproxy 证书安装到这里即可。不过这些证书的文件名都是啥意思，实际上他们就是证书文件的散列值，那 Mitmproxy 证书在哪？如何计算它的散列值？其实当我们安装好 Mitmproxy 的时候，相应的证书就已经保存在「~/.mitmproxy」目录里了，下面看看如何计算证书的散列值：&lt;/p&gt;
 &lt;pre&gt;shell&amp;gt; openssl x509 \
    -subject_hash_old \
    -inform PEM \
    -in ~/.mitmproxy/mitmproxy-ca-cert.pem | head -1

c8750f0d&lt;/pre&gt;
 &lt;p&gt;接下来我们把 Mitmproxy 证书推送到模拟器系统证书所在目录：&lt;/p&gt;
 &lt;pre&gt;shell&amp;gt; adb push \
    ~/.mitmproxy/mitmproxy-ca-cert.pem \
    /system/etc/security/cacerts/c8750f0d.0&lt;/pre&gt;
 &lt;p&gt;最后在模拟器「设置 / 安全 / 信任的凭据 / 系统」里就能看到 Mitmproxy 证书了：&lt;/p&gt;
 &lt;div&gt;  &lt;a href="https://blog.huoding.com/wp-content/uploads/2019/05/systemcacert.png"&gt;   &lt;img alt="&amp;#31995;&amp;#32479;&amp;#35777;&amp;#20070;" height="1464" src="https://blog.huoding.com/wp-content/uploads/2019/05/systemcacert.png" width="2052"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;p&gt;系统证书&lt;/p&gt;&lt;/div&gt;
 &lt;p&gt;通过 root 安装系统证书可以解决大部分 Https 抓包问题，为什么是大部分？还有哪些特殊情况不能处理？答案是「  &lt;a href="https://xz.aliyun.com/t/2440" rel="noopener noreferrer" target="_blank"&gt;SSL Pinning&lt;/a&gt;」，它是为了应对中间人攻击而出现的一种技术，简单点说，就是证书被打包到 App 里，每次请求都会验证证书一致性。如此一来，虽然我们可以安装系统级证书，但是当 App 验证证书一致性的时候就失败了，如何突破此限制呢？答案很简单，你不是要验证一致性么，我统统返回 OK 不就行了！&lt;/p&gt;
 &lt;p&gt;为了达到 hack 的目的，我们需要安装   &lt;a href="https://www.apkmirror.com/apk/rovo89/xposed-installer/" rel="noopener noreferrer" target="_blank"&gt;Xposed&lt;/a&gt; 和   &lt;a href="https://github.com/Fuzion24/JustTrustMe" rel="noopener noreferrer" target="_blank"&gt;JustTrustMe&lt;/a&gt;，其中 Xposed 是一个 hack 框架，JustTrustMe 是一个插件。  &lt;a href="https://bbs.pediy.com/thread-226435.htm" rel="noopener noreferrer" target="_blank"&gt;安装&lt;/a&gt;过程并不复杂，唯一需要说明的是，在安装 Xposed 之前，最好在网易 MuMu 中关闭兼容模式，路径「设置 / 应用兼容性 / 兼容模式」。&lt;/p&gt;
 &lt;div&gt;  &lt;a href="https://blog.huoding.com/wp-content/uploads/2019/05/xposed.png"&gt;   &lt;img alt="Xposed" height="1464" src="https://blog.huoding.com/wp-content/uploads/2019/05/xposed.png" width="2052"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;p&gt;Xposed&lt;/p&gt;&lt;/div&gt;
 &lt;div&gt;  &lt;a href="https://blog.huoding.com/wp-content/uploads/2019/05/justtrustme.png"&gt;   &lt;img alt="JustTrustMe" height="1464" src="https://blog.huoding.com/wp-content/uploads/2019/05/justtrustme.png" width="2052"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;p&gt;JustTrustMe&lt;/p&gt;&lt;/div&gt;
 &lt;p&gt;如果你认认真真从头看到尾，那么恭喜你，关于手机 App 的 Https 抓包，你已经是专家了，最后你摸着自己的良心扪心自问一下：是不是应该给作者一个大大的红包！&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>Technical Https</category>
      <guid isPermaLink="true">https://itindex.net/detail/59651-%E6%89%8B%E6%9C%BA-app-https</guid>
      <pubDate>Fri, 31 May 2019 16:14:34 CST</pubDate>
    </item>
    <item>
      <title>苹果为什么一直没有正面绞杀国产手机？</title>
      <link>https://itindex.net/detail/59620-%E8%8B%B9%E6%9E%9C-%E6%B2%A1%E6%9C%89-%E7%BB%9E%E6%9D%80</link>
      <description>&lt;p&gt;
 &lt;/p&gt;
 &lt;div&gt;  &lt;a href="http://album.sina.com.cn/pic/001mkIWWzy7u3B1hPKtb5" target="_blank"&gt;   &lt;img height="281" src="http://s6.sinaimg.cn/mw690/001mkIWWzy7u3B1hPKtb5&amp;690" width="490"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;
 &lt;br /&gt;
 &lt;p&gt;
众所周知，乔布斯发明了专利大战，他们和三星缠斗了七年，最终以后者赔偿10.9亿美金而告终。平心而论，如此罚款对于苹果和三星来说，都只是一块苍蝇腿式的“小肉”，但专利大战的长期意义在于：让全世界都开始尊重知识产权，从而鼓励越来越多的企业投入专利研发，从这个角度来讲，苹果和三星通过自己的影响力，来增强大家“尊重专利”的意识，也算是做了一件大善事。当然，商人的本性就是追逐利益，他们发动专利战的直接目的就是打压竞争对手的成长，从而独霸手机市场，但显然，如此手段不会让一个品牌消亡，只能在一定程度上起到抑制作用，况且，苹果也要面对专利的麻烦，他们和高通的官司，惊天动地，摧枯拉朽，甚至牵连到富士康、和硕等代工商的运营。苹果强硬的态度让人折服，但兜兜转转之后，他们还是要和高通和解，支付50亿美元，来购买其相关专利。本次和解，再次加深全球人民之于“知识产权”的认知，以至于人人自危！&lt;/p&gt;
 &lt;p&gt;
中国是山寨大国，长期以来，竟然以此沾沾自喜，但却在无意识中，违反知识产权的相关法律，如果仅在国内发展，管理者尚可以睁一只眼闭一只眼，以相对默契的方式来处理，但显然，如今的智能手机产业，早已成为一种世界生意，我们要从国外进口零部件，同时，试图在海外销售，这些都会触犯苹果的“底线”，正面绞杀之，并非不可能。&lt;/p&gt;
 &lt;p&gt;
  &lt;strong&gt;夹缝求生，苹果为什么没有正面绞杀国产机？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;
在三星和苹果激战正酣的时候，最恐惧的可能就是中国手机了，虽然我们不愿意承认，但不得不说，中国手机自诞生之日起，就持续地向iPhone致敬：小米的设计师在试产的时候，会提供好几种方案，雷军总会选择同iPhone最相似的一款，随后的新闻发布会上，雷布斯会穿着高领T恤、牛仔裤，模仿着帮主的口吻，同粉丝亲切交流，还像模像样地搞起饥饿营销来，加之，自2010年起，全世界的智能手机，都更像是一块精美的板砖，任何手机的样子都很容易被理解成“模仿iPhone”,在之后崛起的制造商中，如Vivo、OPPO、一加手机等等，都有着非常浓重的iPhone印记，有网友调侃道：如果去掉logo,我们基本分不清楚哪个是iPhone，哪个是国产，有些手机简直就是iPhone的亲儿子和亲孙子。&lt;/p&gt;
 &lt;p&gt;
按照苹果对三星的诉讼，中国手机一定会中招，但过去十年，苹果却一直没有正面绞杀国产手机，最重要的原因在于，两者根本不是一个重量级的对手。&lt;/p&gt;
 &lt;p&gt;
如果苹果贸然出手，首先会分散自己的精力，毕竟，模仿和专利这事儿牵扯的东西太多，好像中国的婆媳关系，剪不断、理还乱。虽然中国手机背地里模仿iPhone,但总也不会懒到完全抄袭，他们会在腰线、天线、色泽或者其他方面做一些微创新，最大限度地避免归类到抄袭范畴，而且中国手机也有很多原创和首创，被苹果追随采用，比如HTC的金属边框、华为的双摄像头等等，这些都可以拿来反制苹果，换句话说，苹果在专利战方面，虽然占绝对优势，但要想轻松拿下对手也要花一番力气，正如美国篮球队肯定能打败中国队，但也要付出40分钟的汗流浃背，此外，中国手机一直固守在低端，也仅仅在国内、印度和非洲等第三世界销售，对于苹果的销售战略影响不大，所以，苹果不正面绞杀国产机，不是不能，而是没有必要，况且，苹果的品牌和小米、Vivo也不对等，赢了官司是应该的，一旦陷入僵持，还会不可避免地把竞争对手捧红，综上，苹果在前些年是懒得动手。&lt;/p&gt;
 &lt;p&gt;
此外，还有一个阴谋论，可以解释苹果手下留情。众所周知，市场培育需要过程，也需要投入大量成本，Android阵营作为苹果的对手，又在很大程度上帮助iPhone成长，正是廉价的Android手机让很多底层消费者抛弃了诺基亚，进入智能手机领域，而一段时间之后，Android手机变得卡顿，消费者就开始琢磨着换一部iPhone手机，渐渐地成为果粉，可以说，苹果放任国产手机发展，也是希望他们替自己做市场培育，等韭菜成熟之后，他们再通过降低价格以及专利手段遏制对手，正如微软当年放任盗版Windows流行，等大家都上道了再来起诉，如此操作在很大程度上，助推了Windows的正版销量！&lt;/p&gt;
 &lt;p&gt;
  &lt;strong&gt;躺着挣钱，专利流氓是正义人士吗？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;
如前文所述，过去十年，苹果是懒得搭理中国手机，毕竟，不是一个档次的手机，但随着苹果转型服务业的策略日益推进，他们越来越看中市场占有率，毕竟,苹果只能把Apple music/Apple pay/Apple movie销售给iPhone用户，这意味他们非常有可能大范围地杀入低端市场，事实上，去年苹果全面降低手机价格，明年又考虑推出春季机型，产业链人士又透露出，苹果已增加旧产品的订单，一切的迹象都表明，苹果未来势必会抛弃纯粹的高端路线，转而专注于iPhone的市场占有率，中国手机将会面临真正的考验。&lt;/p&gt;
 &lt;p&gt;
好在，经过十几年的发展，中国手机再不是吴下阿蒙，最优秀的应该是华为，他们不仅有很高的品牌识别度，在英国、法国、韩国都有着不错的业绩，而且长期积累下大量的通信专利，如果苹果真要打专利战，华为应该是也不落下风，况且，他们有几款手机是可以用来抵挡子弹的，至于，小米、Vivo/OPPO等中国手机，生存弹性比较大，在零部件供应、制造成本上都有着非常大的进步，中国手机生产线上的自动化设备、新技术应用已经不输给日益臃肿的苹果生产线，苹果要蚕食低端市场也绝非轻而易举的事儿。&lt;/p&gt;
 &lt;p&gt;
相信在不久的将来，中国手机和苹果势必会有一些正面对决，虽然整体上会落下风，但不得不说，这对于中国手机不是坏事儿，专利战的成果除了得到罚款之外，更重要的是，提醒每一个手机制造商要尊重知识产权，诸如高通之流，躺着就能收取专利费，虽然让人很不舒服，但不得不说，人家实力摆在那里，有资格躺着赚钱，总之，大范围且频繁的专利战，有助于中国手机尽快变得头脑清醒，用高技术含量去世界舞台上竞争。（科技新发现
康斯坦丁/文）&lt;/p&gt; &lt;br /&gt; &lt;img src="http://simg.sinajs.cn/blog7style/images/special/1265.gif"&gt;&lt;/img&gt; &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>商业财经</category>
      <guid isPermaLink="true">https://itindex.net/detail/59620-%E8%8B%B9%E6%9E%9C-%E6%B2%A1%E6%9C%89-%E7%BB%9E%E6%9D%80</guid>
      <pubDate>Wed, 22 May 2019 19:45:41 CST</pubDate>
    </item>
    <item>
      <title>玩机不知从何下手，不妨收下这份通用「刷机」指南</title>
      <link>https://itindex.net/detail/59614-%E9%80%9A%E7%94%A8-%E5%88%B7%E6%9C%BA</link>
      <description>&lt;div&gt;  &lt;h3&gt;   &lt;strong&gt;Matrix 精选&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;   &lt;a href="https://sspai.com/matrix"&gt;Matrix&lt;/a&gt; 是少数派的写作社区，我们主张分享真实的产品体验，有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章，展示来自用户的最真实的体验和观点。&lt;/p&gt;  &lt;p&gt;文章代表作者个人观点，少数派仅对标题和排版略作修改。&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;hr&gt;&lt;/hr&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;2018 年我第一次接触刷机，初出茅庐的我为我的小米平板 1 刷上了系统 Lineage OS 15.1，并写下了    &lt;a href="https://www.jianshu.com/p/e288b9811e37"&gt;使用 Mac 为小米平板刷 lineage OS&lt;/a&gt;。彼时自己对于刷机这个过程颇为生疏，只是小心翼翼的按照教程一步一步操作，生怕有一丝一毫不一致的地方，而其背后每一步骤的原因却无从得知，故有意撰此文。一方面让准备刷机的人多一个教程可以参考，另一方面藉此机会充实自己，了解一些 Android 开发知识，也算是满足自己的好奇心罢。&lt;/p&gt;  &lt;p&gt;出于知识内容所限，本文仅讨论线刷模式，不讨论卡刷模式。   &lt;br /&gt;&lt;/p&gt;
  &lt;h2&gt;配置 Android SDK 的环境变量&lt;/h2&gt;
  &lt;p&gt;SDK 的全称叫做软件开发工具包 (Software Development Kit) ，Android SDK 里面包含安卓软件的开发工具，这些开发工具均在 SDK 的安装目录下，拥有它们我们才能对 Android 中的软件进行安装、卸载等相关操作。当我们在终端输入指令要求启动某个工具或应用程序时，系统会优先在当下的目录中进行查找，如果没有则会在系统 Path 指定的路径下进行查找；而我们配置环境变量的这个过程，就是把 SDK 的安装目录记录在系统 Path 的指定路径中，让我们在终端能够直接使用 SDK 中的开发工具。该过程也叫做配置 ADB (Android Debug Bridge) 环境变量。&lt;/p&gt;
  &lt;h3&gt;Mac 系统下的环境变量配置&lt;/h3&gt;
  &lt;p&gt;参见：   &lt;a href="https://sspai.com/post/38535"&gt;使用 Mac 为 Android 手机刷原生系统&lt;/a&gt;&lt;/p&gt;
  &lt;h3&gt;Windows 系统下的环境变量配置&lt;/h3&gt;
  &lt;p&gt;Windows 系统下由于其系统特点，目前（我知道的）有三种方案，将在以下展开，三种方法均适用于 Windows 10 系统，其他系统可能有些出入，读者可部分参考。&lt;/p&gt;
  &lt;h4&gt;方案一：配置环境变量&lt;/h4&gt;
  &lt;p&gt;参见：   &lt;a href="https://jingyan.baidu.com/article/295430f180cd520c7e00509e.html"&gt;win10 如何配置 Android 开发环境变量&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;该方案和 Mac 系统下环境变量配置的原理一致，都是对系统进行操作。虽看起来步骤多，好处就在于一劳永逸，一次配置「终身」受用，除非你重装了系统，个人优先推荐该方法。&lt;/p&gt;
  &lt;h4&gt;方案二：快速安装与使用 ADB&lt;/h4&gt;
  &lt;p&gt;1 将 platform-tools 数据包解压，进入解压后的文件夹，按住 Shift 键的同时在空白处单击鼠标右键，选择「在此处打开命令窗口」（在 Win 10 创意者更新中被改为「在此处打开Powershell窗口」）；   &lt;br /&gt;2 输入    &lt;code&gt;adb version&lt;/code&gt; 检测环境变量配置是否完成；   &lt;br /&gt;这个方案相当偷懒，其实这个步骤并没有实现系统的环境变量配置，只是提供了一个临时的环境，但是无论如何这个方法是最方便的，而且对于新手而言非常友好。&lt;/p&gt;
  &lt;h4&gt;方案二：直接访问 SDK 目录&lt;/h4&gt;
  &lt;p&gt;1 将 platform-tools 放在一个接近硬盘根目录如 C:\adb 这样的地方便于访问，这时我们需要访问的目录为 C:\adb\platform-tools；   &lt;br /&gt;2 在运行命令窗口中输入    &lt;code&gt;cmd&lt;/code&gt; 打开命令符窗口，并按下回车执行；   &lt;br /&gt;3 输入    &lt;code&gt;cd adb\platform-tools&lt;/code&gt; ，并按下回车执行，进入目录；   &lt;br /&gt;4 输入    &lt;code&gt;adb version&lt;/code&gt; 检测环境变量配置是否完成。   &lt;br /&gt;该方案和方案一比较像，都是偏向于临时解决环境配置问题，但是都没有实现系统的环境变量配置，因此每次使用时都要重新访问一次 SDK 的所在目录。&lt;/p&gt;
  &lt;p&gt;该方案看似简单、容易操作，但弊端明显，只有你在进入该目录的情况下，才符合「环境变量已配置」的条件，不建议没有代码基础的人操作。&lt;/p&gt;
  &lt;h2&gt;解锁 Bootloader&lt;/h2&gt;
  &lt;p&gt;一般而言，每个 Android 设备都会有 Fastboot / Bootloader 模式，它是负责引导操作系统内核启动的引导程序，只有在该模式是无锁的情况下，我们才能自由的 root 我们的设备、自定义或安装一个更加好用的第三方 ROM 固件，否则很容易损伤设备。   &lt;br /&gt;与封闭的 iOS 系统不同， Android 系统是开源的，因而相应的各大厂商所开发的 Fastboot / Bootloader 模式也各有不同。尽管系统是开源的，但是各厂商为了对自己的设备有着更多的支配权，多数情况下都会对其 Fastboot / Bootloader 模式上锁。这就是为什么我们在刷机教程里经常看到 「Bootloader 解锁」这一步了。&lt;/p&gt;
  &lt;h3&gt;Bootloader 解锁通用步骤&lt;/h3&gt;
  &lt;ol&gt;
   &lt;li&gt;打开「开发者选项」，不同设备打开的方式不同，请读者根据自己设备机型自行百度一下；&lt;/li&gt;
   &lt;li&gt;先后打开「USB 调试」与「启用 OEM 解锁」（没有「启用 OEM 解锁」选项的设备则不用理会），该过程需要满足网络流（ke）畅（xue）；&lt;/li&gt;
   &lt;li&gt;进入 Bootloader 界面等候；&lt;/li&gt;
   &lt;li&gt;打开 Terminal / CMD ，输入 Bootloader 解锁指令，并按下回车执行；如果你的设备为 Android 5.0 及以下，则解锁指令为     &lt;code&gt;fastboot oem unlock&lt;/code&gt; ；如果你的设备为 Android 6.0 及以上，则解锁指令为     &lt;code&gt;fastboot flashing unlock&lt;/code&gt;；&lt;/li&gt;
   &lt;li&gt;在设备端此时会弹出 Bootloader 解锁的确认界面，使用音量键移动关标选择确认，按下电源键开始解锁；&lt;/li&gt;
   &lt;li&gt;解锁后设备会被清除数据并重新启动，待设备开机后检查「USB 调试」选项；&lt;/li&gt;
   &lt;li&gt;重新进入 Bootloader 界面等候；&lt;/li&gt;
&lt;/ol&gt;
  &lt;h3&gt;注意事项&lt;/h3&gt;
  &lt;ol&gt;
   &lt;li&gt;解锁 Fastboot / Bootloader 模式后，可能会使保修相关服务失效；&lt;/li&gt;
   &lt;li&gt;解锁 Bootloader 的过程中，可能会还原设备一切资料，切记在此前做好资料备份工作；&lt;/li&gt;
   &lt;li&gt;解锁 Bootloader 的过程中，有一定损坏设备的风险；&lt;/li&gt;
   &lt;li&gt;该 Bootloader 解锁方式大体上对于 Android 设备通用，但是鉴于各厂商 Android 设备差异实在太大，建议如果有官方解锁通道就先去申请官方解锁，没有解锁通道再尝试该方法。当然对于从来没有放开 Bootloader 解锁权限的品牌（可自行百度），还是该放弃放弃吧。&lt;/li&gt;
&lt;/ol&gt;
  &lt;h2&gt;刷入第三方 Recovery&lt;/h2&gt;
  &lt;p&gt;设备一般都会自带一个官方初始的一个 Recovery ，其作用主要用于恢复出厂设置与OTA安装/升级，但是由于官方 Recovery 不能识别第三方 ROM ，而第三方 Recovery 却可以，所以我们一般在刷机之前都会先刷入第三方 Recovery 。   &lt;br /&gt;目前比较推荐的第三方 Recovery 是    &lt;a href="https://twrp.me/"&gt;TWRP&lt;/a&gt;，该项目是一个社区开源项目，挂载在    &lt;a href="https://github.com/omnirom/android_bootable_recovery/"&gt;GitHub&lt;/a&gt; 上。也许你会发现之前也有人推荐过    &lt;a href="http://www.clockworkmod.com/"&gt;CWM&lt;/a&gt; ，很遗憾的是，该项目已于2014年停止了维护，如果你用的设备型号比较老的话，可能会用到它。&lt;/p&gt;

  &lt;h3&gt;刷入第三方 Recovery 的通用步骤&lt;/h3&gt;
  &lt;ol&gt;
   &lt;li&gt;准备好设备匹配的第三方 Recovery 版本，后缀为.img；&lt;/li&gt;
   &lt;li&gt;重启手机至 bootloader 模式，电脑端运行 Terminal/CMD；&lt;/li&gt;
   &lt;li&gt;输入     &lt;code&gt;cd 你的第三方 Recovery 文件路径&lt;/code&gt; ，并按下回车执行，以此来定向第三方 Recovery 的文件位置，接着输入 fastboot boot xxx.img（xxx 为具体的文件名），并按下回车执行，此时 Recovery 已经刷入，手机会重启至 Recovery 相应界面。&lt;/li&gt;
&lt;/ol&gt;
  &lt;h3&gt;注意事项&lt;/h3&gt;
  &lt;ol&gt;
   &lt;li&gt;该过程中需要定向 Recovery 的位置，故而如果你在 Windows 系统下的环境变量配置时用的是方案三，在这里会比较麻烦，解决方法是把你的第三方 Recovery 文件放在 platform-tools 目录下，让两个目录一致。&lt;/li&gt;
&lt;/ol&gt;
  &lt;h2&gt;类原生 Android 系统 ROM 推荐&lt;/h2&gt;
  &lt;h3&gt;   &lt;a href="https://lineageos.org/"&gt;Lineage OS&lt;/a&gt;&lt;/h3&gt;
  &lt;p&gt;Lineage OS 是 Android 的最大售后市场分销，以前称为 CyanogenMod。2016年开源项目 CyanogenMod 被宣布停止，被复刻为 Lineage OS ，由原团队 CyanogenMod 继续开发，源代码于    &lt;a href="https://github.com/lineageos"&gt;GitHub&lt;/a&gt; 可用。&lt;/p&gt;
  &lt;h3&gt;   &lt;a href="https://resurrectionremix.com/"&gt;Resurrection Remix OS&lt;/a&gt;&lt;/h3&gt;
  &lt;p&gt;Resurrection Remix OS 基于 LineageOS 15.1，包含大量附加功能和定制选项。因为它提供了许多功能，所以成为了 Android 设备最受欢迎的自定义ROM，源代码于    &lt;a href="https://github.com/ResurrectionRemix"&gt;GitHub&lt;/a&gt; 可用.&lt;/p&gt;  &lt;img alt="" src="https://cdn.sspai.com/2019/05/17/97042f2f489bdb2914c9e7cce8c950d5.png"&gt;&lt;/img&gt;Resurrection Remix OS
  &lt;h3&gt;   &lt;a href="https://crdroid.net/"&gt;crDroid&lt;/a&gt;&lt;/h3&gt;
  &lt;p&gt;crDroid 基于 Lineage OS，在此基础上附加其他性能调整和额外功能，源代码于    &lt;a href="https://github.com/crdroidandroid"&gt;GitHub&lt;/a&gt; 可用。&lt;/p&gt;  &lt;img alt="" src="https://cdn.sspai.com/2019/05/17/3094f65f176edf8e78e4e4e4de341a00.png"&gt;&lt;/img&gt;crDroid
  &lt;h3&gt;   &lt;a href="https://download.pixelexperience.org/"&gt;Pixel Experience&lt;/a&gt;&lt;/h3&gt;
  &lt;p&gt;Pixel Experience 基于 Android 开源项目 (   &lt;a href="https://source.android.com/"&gt;AOSP&lt;/a&gt;) 与 Code Aurora 项目（   &lt;a href="https://www.codeaurora.org/"&gt;CAF&lt;/a&gt;）开发，由于 Pixel Experience 中包含谷歌全家桶，故而相比与其他 ROM 包来说要大些，源代码于    &lt;a href="https://github.com/PixelExperience"&gt;GitHub&lt;/a&gt; 中可用。&lt;/p&gt;
  &lt;h3&gt;   &lt;a href="http://www.paranoidandroid.co/"&gt;Paranoid Android&lt;/a&gt;&lt;/h3&gt;
  &lt;p&gt;Paranoid Android 的制作团队就是 Oxygen OS 的制作团队，该制作团队的核心成员被 Oneplus 聘请，为 Oneplus 做 ROM 开发，源代码于    &lt;a href="https://github.com/AOSPA"&gt;GitHub&lt;/a&gt; 中可用。&lt;/p&gt;
  &lt;h3&gt;   &lt;a href="https://www.aospextended.com/"&gt;AOSPEXTENDED ROM&lt;/a&gt;&lt;/h3&gt;
  &lt;p&gt;AOSPEXTENDED ROM 基于 Android 开源项目 (   &lt;a href="https://source.android.com/"&gt;AOSP&lt;/a&gt;) 开发，它提供了各种自定义特性和底层主题引擎，源代码于    &lt;a href="https://github.com/AospExtended"&gt;GitHub&lt;/a&gt; 中可用。&lt;/p&gt;  &lt;img alt="" src="https://cdn.sspai.com/2019/05/17/2495838ad5befbad338eb77cff8e22e2.png"&gt;&lt;/img&gt;
  &lt;h3&gt;   &lt;a href="https://xosp.org/"&gt;XOSP&lt;/a&gt;&lt;/h3&gt;
  &lt;p&gt;XOSP 是基于    &lt;a href="https://www.cyanogenmods.org/cm13-cyanogenmod-13-marshmallow-rom-device-list-downloads-update-guide/"&gt;CyanogenMod 13&lt;/a&gt; 的 ROM ，混合了很多 Xperia 的特性，带来不一样的感受。因为是 Xperia +    &lt;a href="https://source.android.com/"&gt;AOSP&lt;/a&gt; 的混合体，因此命名为XOSP。&lt;/p&gt;
  &lt;h3&gt;   &lt;a href="https://www.mokeedev.com/"&gt;魔趣 ROM&lt;/a&gt;&lt;/h3&gt;
  &lt;p&gt;魔趣 ROM 基于 Android 开源项目 (   &lt;a href="https://source.android.com/"&gt;AOSP&lt;/a&gt;) 开发，Slogan 是「可能是中国最好的安卓开源系统」，源代码于    &lt;a href="https://github.com/MoKee"&gt;GitHub&lt;/a&gt; 可用。&lt;/p&gt;
  &lt;h2&gt;总结&lt;/h2&gt;
  &lt;p&gt;这些是我这些天各种查资料总结到的，由于个人能力与知识水平所限，会存在一些不足之处。如前辈们发现文中有错漏的问题，诚求各位不吝赐教。&lt;/p&gt;
  &lt;h2&gt;附录&lt;/h2&gt;
  &lt;h3&gt;常用 ADB 命令&lt;/h3&gt;
  &lt;table&gt;

   &lt;tr&gt;
    &lt;th&gt;代码&lt;/th&gt;
    &lt;th&gt;含义&lt;/th&gt;
&lt;/tr&gt;


   &lt;tr&gt;
    &lt;td&gt;adb reboot bootloader&lt;/td&gt;
    &lt;td&gt;在 bootloader 模式下重启&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;adb push&lt;/td&gt;
    &lt;td&gt;将文件从本地系统复制到 Android 手机的位置&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;adb pull&lt;/td&gt;
    &lt;td&gt;将文件从 Android 复制到您的系统&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;adb devices&lt;/td&gt;
    &lt;td&gt;显示所有连接的 adb 兼容设备&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;adb backup&lt;/td&gt;
    &lt;td&gt;备份 Android 设备&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;adb install&lt;/td&gt;
    &lt;td&gt;将应用程序从系统的 apk 文件位置安装到 Android 设备上&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;adb reboot&lt;/td&gt;
    &lt;td&gt;在正常模式下重新启动 Android 手机&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;adb connect&lt;/td&gt;
    &lt;td&gt;通过 WiFi 网络使用adb命令&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;adb shell screencap&lt;/td&gt;
    &lt;td&gt;获取设备的屏幕截图&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
  &lt;h3&gt;常用 Fastboot 命令&lt;/h3&gt;
  &lt;table&gt;

   &lt;tr&gt;
    &lt;th&gt;代码&lt;/th&gt;
    &lt;th&gt;含义&lt;/th&gt;
&lt;/tr&gt;


   &lt;tr&gt;
    &lt;td&gt;fastboot devices&lt;/td&gt;
    &lt;td&gt;显示连接的 Android 设备的序列号&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;fastboot oem unlock&lt;/td&gt;
    &lt;td&gt;解开 bootloader 锁（Android 5.0 及以下）&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;fastboot oem lock&lt;/td&gt;
    &lt;td&gt;恢复 bootloader 锁（Android 5.0 及以下）&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;fastboot flashing unlock&lt;/td&gt;
    &lt;td&gt;解开 bootloader 锁（Android 6.0 及以上）&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;fastboot flashing lock&lt;/td&gt;
    &lt;td&gt;恢复 bootloader 锁&lt;/td&gt;
&lt;/tr&gt;
   &lt;tr&gt;
    &lt;td&gt;fastboot flash recovery (filename)&lt;/td&gt;
    &lt;td&gt;在 bootloader 模式中向设备刷入文件&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
  &lt;h4&gt;   &lt;strong&gt;关联阅读：&lt;/strong&gt;&lt;/h4&gt;
  &lt;ul&gt;   &lt;li&gt;    &lt;a href="https://sspai.com/post/43338"&gt;Android 玩机终极指南&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;strong&gt;参考链接&lt;/strong&gt;

  &lt;ul&gt;   &lt;li&gt;    &lt;a href="https://www.cnblogs.com/zoupeiyang/p/4034517.html"&gt;五步搞定 Android 开发环境部署——非常详细的 Android 开发环境搭建教程&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;    &lt;a href="https://www.xda-developers.com/quickly-install-adb/"&gt;How to quickly install and use ADB&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;    &lt;a href="http://www.it4nextgen.com/android-sdk-platform-tools-adb-fastboot/"&gt;What are Android SDK Platform Tools &amp;amp; How to Use ADB and Fastboot&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;    &lt;a href="http://bbs.xiaomi.cn/t-21200023-5-o1#comment_top"&gt;一贴解决几乎一切刷机问题！adb 和 fastboot 命令简易教程！&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;    &lt;a href="http://www.miui.com/thread-10947082-1-1.html"&gt;[教程] 采用神盾内核的lineageOS 14.1/ 15.1（更新至1103/1112）刷机教程
&lt;/a&gt;    &lt;a href="http://bbs.xiaomi.cn/t-4413759"&gt;刷机常用知识 - 小米社区官方论坛&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;    &lt;a href="https://www.jianshu.com/p/d960a6f517d8"&gt;Android Fastboot 与 Recovery 和刷机&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
  &lt;div&gt;​&lt;/div&gt;&lt;/div&gt; &lt;p&gt;  &lt;br /&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59614-%E9%80%9A%E7%94%A8-%E5%88%B7%E6%9C%BA</guid>
      <pubDate>Tue, 21 May 2019 16:00:23 CST</pubDate>
    </item>
    <item>
      <title>苹果手机有哪些地方是国产手机无法超越，或者说依旧没有赶上的？ - 知乎</title>
      <link>https://itindex.net/detail/59517-%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA-%E5%9C%B0%E6%96%B9-%E5%9B%BD%E4%BA%A7</link>
      <description>&lt;div&gt;    &lt;h2&gt;      &lt;strong&gt;对隐私的极端重视，甚至到了偏执的地步。&lt;/strong&gt;&lt;/h2&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;输入法：&lt;/p&gt;    &lt;ol&gt;      &lt;li&gt;iOS 自带输入法没有云预测和云备份功能，用户输入的内容不会被上传网络。&lt;/li&gt;      &lt;li&gt;默认不允许第三方输入法上传用户输入的任何内容。如用户须开启云预测这种实时监控用户输入内容的功能，须在输入法设置打开“允许完全访问”开关，iOS 会弹窗警示你输入的任何内容都会被上传开发商，包括信用卡号或家庭住址。&lt;/li&gt;      &lt;li&gt;用户在网页或应用的密码框输入，一般会强制切换自带输入法（除非某些应用自带安全键盘，例如银行等）&lt;/li&gt;&lt;/ol&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;短信：&lt;/p&gt;    &lt;ol&gt;      &lt;li&gt;iOS 没有自带的短信骚扰拦截功能，默认任何短信内容不会外传给第三方。&lt;/li&gt;      &lt;li&gt;iOS 提供了短信过滤器的功能，允许将不在通讯录的短信发送给第三方进行分析过滤。此功能默认关闭，如用户打开 iOS 会弹窗警示你的短信内容可能含个人隐私信息，确认是否开启。&lt;/li&gt;      &lt;li&gt;iOS 的短信不对任何第三方应用开放接口。（除了上述的短信过滤器功能）&lt;/li&gt;      &lt;li&gt;在输入短信验证码时，除苹果自带应用， iOS 均不会自动粘贴到输入框，须通过“点击自带输入法拦位上的短信验证码”这个动作进行授权粘贴。&lt;/li&gt;&lt;/ol&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;通话：&lt;/p&gt;    &lt;ol&gt;      &lt;li&gt;iOS 的通话和通话记录不对任何第三方应用开放接口。（想想很多安卓应用那个不给就不让用的“电话”权限）&lt;/li&gt;      &lt;li&gt;由于美国法律法规， iOS 不允许通话录音，任何通话录音的应用不允许上架，通话时无法使用视频、录像或录音等功能，防止外放录音。（但不做本地化适配，连坐全球所有版本的 iPhone 都不能通话录音这种事情……）&lt;/li&gt;      &lt;li&gt;iOS 本身不自带通话骚扰拦截功能，但可以通过读取第三方应用的数据库，对来电进行匹配标记快递外卖、骚扰、诈骗等标签，让用户自行判断，此功能不涉及隐私信息的外传。&lt;/li&gt;&lt;/ol&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;其他：&lt;/p&gt;    &lt;ol&gt;      &lt;li&gt;任何第三方应用无法读取 iPhone 的 IMEI 码。（设备唯一识别码，还是想想那个“电话”权限）&lt;/li&gt;      &lt;li&gt;iPhone 不会向未连接的 WiFi 发送真实 mac 地址。（有效防范今年 315 提到的探针盒子）&lt;/li&gt;      &lt;li&gt;iMessage 和 Facetime 采用端到端加密技术，理论上连苹果都不能看到你的对话内容。（各位应该有过这头刚聊完，那头朋友圈出现相关广告的经历吧？或者陆家嘴视频无法发送的情况。）&lt;/li&gt;      &lt;li&gt;新安装的应用所有权限默认关闭，须用户允许才能开启，同时不存在不给权限不让用的情况。 iOS 新装应用一般起手式：是否允许通知、是否允许使用网络（国行 iPhone 专属）；安卓新装应用一般起手式：是否允许电话权限、是否允许存储权限，通知权限默认开启。&lt;/li&gt;&lt;/ol&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;安全和便利是跷跷板的两头，很多人抱怨 iOS 功能少不便利，苹果对隐私近乎偏执的重视是其主要原因。&lt;/p&gt;    &lt;hr&gt;&lt;/hr&gt;    &lt;p&gt;放个苹果的隐私广告吧：&lt;/p&gt;    &lt;blockquote&gt;“If privacy matters in your life. It should matter to the phone your life is on. ”&lt;/blockquote&gt;    &lt;a href="https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/1092881240499322880" target="_blank"&gt;      &lt;img src="https://pic1.zhimg.com/v2-a13e7317161a3613a559e5c146c63c15.png"&gt;&lt;/img&gt;https://www.zhihu.com/video/1092881240499322880&lt;/a&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59517-%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA-%E5%9C%B0%E6%96%B9-%E5%9B%BD%E4%BA%A7</guid>
      <pubDate>Sat, 27 Apr 2019 08:27:04 CST</pubDate>
    </item>
    <item>
      <title>手机 APP 应该选用哪个加密算法 - 兼吐槽 TEA</title>
      <link>https://itindex.net/detail/59404-%E6%89%8B%E6%9C%BA-app-%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95</link>
      <description>&lt;p&gt;  &lt;strong&gt;标签：&lt;/strong&gt;    &lt;a href="https://blogread.cn/it/tags.php?tag=TEA" target="_blank"&gt;TEA&lt;/a&gt;    &lt;a href="https://blogread.cn/it/tags.php?tag=%E5%8A%A0%E5%AF%86" target="_blank"&gt;加密&lt;/a&gt;&lt;/p&gt; &lt;p&gt;    很多 APP 产品都有通信加密的需求，一部分出于市场的要求，比如苹果对于“ATS”的强制性规定，一部分出于自身安全的考虑，比如对账号和密码的保护。这些需求大部分都可以用简单的 HTTP -&amp;gt; HTTPS 升级来搞定，而且几乎不用付出什么成本（除加解密的计算开支外），例如使用我之前文章介绍到的   &lt;a href="http://www.blogread.cn/articles/free-https-cert-startssl-to-letsencrypt.html"&gt;Let&amp;apos;s Encrypt 免费证书&lt;/a&gt;。&lt;/p&gt; &lt;p&gt;    但还有一类特殊的需求，HTTPS 解决不了，也就是  &lt;strong&gt;防协议分析的需求&lt;/strong&gt;。很多 APP 开发者应该知道，只要在手机里安装一个代理 CA 证书，就可以实现中间人攻击，通过代理软件抓到 HTTPS 包的明文内容。虽然这样的攻击很难在公开网络上进行，但对自己的手机进行抓包分析，作为 APP 和服务端通信的调试手段是被广泛使用的。&lt;/p&gt; &lt;p&gt;      &lt;strong&gt;协议分析能做什么呢？可以猜想到一定的 APP 内部逻辑，可以对产品数据进行作弊攻击。&lt;/strong&gt;举个例子：你的 APP 通过某个渠道进行推广，为了统计渠道安装、注册或者日活，你往往会在 APP 中埋一个点，当 APP 启动时，发送一些信息到服务器。如果这个协议被破解了，渠道商根本不需要真正进行推广，只需要构造一些假消息发送到你的服务器就行了。仅看数据你可能会以为这个渠道推广效果特别好，其实只是骗局而已。&lt;/p&gt; &lt;p&gt;    这类情况下，就要求  &lt;strong&gt;对敏感协议内容进行额外的数据保护&lt;/strong&gt;。最常用的做法，就是对协议内容进行一次额外的加密，为了性能，往往选用对称加密算法。那么问题来了，手机 APP 开发时，应该选用哪个加密算法？&lt;/p&gt; &lt;p&gt;    关于这个选型，  &lt;strong&gt;国内互联网圈有个怪现状&lt;/strong&gt;值得谈一下，那就是   &lt;strong&gt;   &lt;a href="https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm"&gt;TEA 算法&lt;/a&gt;&lt;/strong&gt;。因为该算法在腾讯有着广泛的应用，因而被很多客户端开发人员推崇。典型推荐理由往往是：“TEA加密算法不但比较  &lt;strong&gt;简单&lt;/strong&gt;，而且有  &lt;strong&gt;很强的抗差分分析能力&lt;/strong&gt;，加密  &lt;strong&gt;速度也比较快&lt;/strong&gt;，还可以根据需求  &lt;strong&gt;设置加密轮数来增加加密强度&lt;/strong&gt;”。  &lt;strong&gt;这是真的吗&lt;/strong&gt;？算法安全性可以直接看维基百科上 TEA 算法的介绍，我的理解是不够安全。但其实大部分用户也不那么地在乎它的安全强度，那么性能呢？加密速度真的很快吗？&lt;/p&gt; &lt;p&gt;    这就要从历史的角度去看了。作为曾经手撸过 “  &lt;a href="http://www.blogread.cn/articles/differential-cryptanalytic-attack-of-3-round-des.html"&gt;DES 差分密码攻击&lt;/a&gt;”  代码的程序员，表示 TEA 算法的确足够简单。在 QQ 诞生的那个年代，TEA 在计算上的确有着不小的优势。但 QQ 已经 18 岁了啊同学们，18 年来中国发生了多大的变化，世界发生了多大的变化啊！&lt;/p&gt; &lt;p&gt;    2008 年，Intel 就发布了 x86 的   &lt;a href="https://en.wikipedia.org/wiki/AES_instruction_set"&gt;AES 指令集扩展&lt;/a&gt;，近几年的服务器 CPU 应该都支持，不相信你  &lt;br /&gt;   &lt;code&gt;grep aes /proc/cpuinfo&lt;/code&gt; 就能看到 ；2011 年 ARM 也在   &lt;a href="https://www.arm.com/files/downloads/ARMv8_Architecture.pdf"&gt;ARMv8 架构下直接提供了 AES 和 SHA-1/SHA-256 指令&lt;/a&gt; 。这意味着什么？意味着  &lt;strong&gt;服务端和客户端在硬件上直接支持 AES&lt;/strong&gt;，意味着原来 N 条汇编指令只需要一条 AES 指令就完成了。其实也意味着，  &lt;strong&gt;在绝大多数情况下 AES 才应该是你的首选&lt;/strong&gt;。&lt;/p&gt; &lt;p&gt;    口说无凭，咱们可以看一下测试数据，x86 服务器 CPU 测试可以直接看   &lt;a href="https://www.cryptopp.com/benchmarks.html"&gt;Crypto++ 的 benchmark&lt;/a&gt; 。可以看到 AES/CTR (128-bit key) 与 TEA/CTR (128-bit key) 的加密速度比是：4499 MB/s 比 72 MB/s，62 倍的差异！这就是硬件实现的威力。&lt;/p&gt; &lt;p&gt;    ARM 手机 CPU 加密算法的 Benchmark，我没有找到。但为了更有说服力，  &lt;strong&gt;我自己实现了两个测试 APP&lt;/strong&gt;，一个 Android 版，一个 iOS 版。写技术文章多不容易啊，写博客之前先写三个晚上代码，泪目！！！代码在   &lt;a href="https://github.com/solrex/cipher-speed"&gt;https://github.com/solrex/cipher-speed&lt;/a&gt; ，  &lt;strong&gt;Android 版可以直接在    &lt;a href="https://github.com/solrex/cipher-speed/releases"&gt;Release&lt;/a&gt; 里扫码安装&lt;/strong&gt;。&lt;/p&gt; &lt;p&gt;    首先介绍一下目前的旗舰 CPU，骁龙 835 (MSM8998) 的表现，测试机型是小米 6：&lt;/p&gt; &lt;pre&gt;# Speed Test of 10MB Data Enc/Decryption #
# AES: 
* [AES/CBC/PKCS5Padding] ENC: 1146.9 KB/ms
* [AES/CBC/PKCS5Padding] DEC: 692.4 KB/ms
* [AES/CBC/NoPadding] ENC: 1118.8 KB/ms
* [AES/CBC/NoPadding] DEC: 1343.5 KB/ms
* [AES/ECB/PKCS5Padding] ENC: 990.4 KB/ms
* [AES/ECB/PKCS5Padding] DEC: 703.2 KB/ms
* [AES/ECB/NoPadding] ENC: 973.4 KB/ms
* [AES/ECB/NoPadding] DEC: 988.9 KB/ms
* [AES/GCM/NOPADDING] ENC: 13.9 KB/ms
* [AES/GCM/NOPADDING] DEC: 14.7 KB/ms
# DES: 
* [DES/CBC/PKCS5Padding] ENC: 20.1 KB/ms
* [DES/CBC/PKCS5Padding] DEC: 20.7 KB/ms
* [DES/CBC/NoPadding] ENC: 21.3 KB/ms
* [DES/CBC/NoPadding] DEC: 21.6 KB/ms
* [DES/ECB/PKCS5Padding] ENC: 26.3 KB/ms
* [DES/ECB/PKCS5Padding] DEC: 26.2 KB/ms
* [DES/ECB/NoPadding] ENC: 25.9 KB/ms
* [DES/ECB/NoPadding] DEC: 26.8 KB/ms
# 3DES: 
* [DESede/CBC/PKCS5Padding] ENC: 23.6 KB/ms
* [DESede/CBC/PKCS5Padding] DEC: 23.2 KB/ms
* [DESede/CBC/NoPadding] ENC: 23.6 KB/ms
* [DESede/CBC/NoPadding] DEC: 23.5 KB/ms
* [DESede/ECB/PKCS5Padding] ENC: 8.5 KB/ms
* [DESede/ECB/PKCS5Padding] DEC: 8.5 KB/ms
* [DESede/ECB/NoPadding] ENC: 8.5 KB/ms
* [DESede/ECB/NoPadding] DEC: 8.6 KB/ms
# TEA: 
* [TEA] ENC: 16.0 KB/ms
* [TEA] DEC: 18.1 KB/ms&lt;/pre&gt; &lt;p&gt;    可以看到，TEA:AES=16:990，这是多少倍？我都懒得算了。然后是 2 年前的中低端 CPU，联发科 Helio P10 (MT6755)，测试机型是魅蓝 Note 3：&lt;/p&gt; &lt;pre&gt;# Speed Test of 10MB Data Enc/Decryption #
# AES: 
* [AES/CBC/PKCS5Padding] ENC: 358.8 KB/ms
* [AES/CBC/PKCS5Padding] DEC: 267.9 KB/ms
* [AES/CBC/NoPadding] ENC: 438.8 KB/ms
* [AES/CBC/NoPadding] DEC: 515.0 KB/ms
* [AES/ECB/PKCS5Padding] ENC: 310.6 KB/ms
* [AES/ECB/PKCS5Padding] DEC: 222.1 KB/ms
* [AES/ECB/NoPadding] ENC: 312.4 KB/ms
* [AES/ECB/NoPadding] DEC: 319.5 KB/ms
* [AES/GCM/NOPADDING] ENC: 5.1 KB/ms
* [AES/GCM/NOPADDING] DEC: 5.7 KB/ms
# DES: 
* [DES/CBC/PKCS5Padding] ENC: 7.5 KB/ms
* [DES/CBC/PKCS5Padding] DEC: 7.7 KB/ms
* [DES/CBC/NoPadding] ENC: 7.7 KB/ms
* [DES/CBC/NoPadding] DEC: 7.8 KB/ms
* [DES/ECB/PKCS5Padding] ENC: 9.3 KB/ms
* [DES/ECB/PKCS5Padding] DEC: 9.2 KB/ms
* [DES/ECB/NoPadding] ENC: 9.3 KB/ms
* [DES/ECB/NoPadding] DEC: 9.5 KB/ms
# 3DES: 
* [DESede/CBC/PKCS5Padding] ENC: 12.5 KB/ms
* [DESede/CBC/PKCS5Padding] DEC: 12.3 KB/ms
* [DESede/CBC/NoPadding] ENC: 12.3 KB/ms
* [DESede/CBC/NoPadding] DEC: 12.5 KB/ms
* [DESede/ECB/PKCS5Padding] ENC: 3.1 KB/ms
* [DESede/ECB/PKCS5Padding] DEC: 3.1 KB/ms
* [DESede/ECB/NoPadding] ENC: 3.1 KB/ms
* [DESede/ECB/NoPadding] DEC: 3.1 KB/ms
# TEA: 
* [TEA] ENC: 6.2 KB/ms
* [TEA] DEC: 8.0 KB/ms&lt;/pre&gt; &lt;p&gt;    然后是 3 年前的旗舰 CPU，Apple A8，测试机型是 iPhone6。别问我为啥不用今年的苹果旗舰 CPU...&lt;/p&gt; &lt;pre&gt;# Speed Test of 10MB Data Enc/Decryption #
# AES
* [AES/CBC/PKC7Padding] ENC: 76.0 KB/ms
* [AES/CBC/PKC7Padding] DEC: 111.3 KB/ms
* [AES/CBC/NoPadding] ENC: 138.2 KB/ms
* [AES/CBC/NoPadding] DEC: 450.7 KB/ms
* [AES/ECB/PKC7Padding] ENC: 305.6 KB/ms
* [AES/ECB/PKC7Padding] DEC: 735.9 KB/ms
* [AES/ECB/NoPadding] ENC: 330.0 KB/ms
* [AES/ECB/NoPadding] DEC: 673.6 KB/ms
# DES
* [DES/CBC/PKC7Padding] ENC: 23.1 KB/ms
* [DES/CBC/PKC7Padding] DEC: 24.5 KB/ms
* [DES/CBCPadding] ENC: 23.1 KB/ms
* [DES/CBCPadding] DEC: 22.8 KB/ms
* [DES/ECB/PKC7Padding] ENC: 19.4 KB/ms
* [DES/ECB/PKC7Padding] DEC: 20.8 KB/ms
* [DES/ECBPadding] ENC: 22.2 KB/ms
* [DES/ECBPadding] DEC: 22.2 KB/ms
# 3DES
* [3DES/CBC/PKC7Padding] ENC: 9.7 KB/ms
* [3DES/CBC/PKC7Padding] DEC: 9.8 KB/ms
* [3DES/CBC/NoPadding] ENC: 9.8 KB/ms
* [3DES/CBC/NoPadding] DEC: 9.8 KB/ms
* [3DES/ECB/PKC7Padding] ENC: 9.4 KB/ms
* [3DES/ECB/PKC7Padding] DEC: 9.1 KB/ms
* [3DES/ECB/NoPadding] ENC: 9.2 KB/ms
* [3DES/ECB/NoPadding] DEC: 9.4 KB/ms
# TEA
* [TEA] ENC: 10.9 KB/ms
* [TEA] DEC: 11.1 KB/ms&lt;/pre&gt; &lt;p&gt;    关于 Apple A8 的测试多说两句。我上面的 AES 性能，离 GeekBench 发布的 A8 AES Single Core 还有不少差距，不知道是不是测试方法差异导致。但总的来说，不影响结论，那就是   &lt;strong&gt;TEA 跟 AES 差距巨大&lt;/strong&gt;。&lt;/p&gt; &lt;p&gt;    看到这里，可能大部分人心里已经做出选择了。即使还没做出选择的读者，我想你也可以考虑看看我的代码实现是否存在问题。不过最后还是  &lt;strong&gt;回答一下开头提出的问题&lt;/strong&gt;吧：&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;   &lt;p&gt;如果你使用平台语言来实现对称加密，也就是 Android 上用 Java，iOS 上用 OC 或者 Swift，    &lt;strong&gt;AES 是不二选择&lt;/strong&gt;。这样能充分利用硬件提供的能力，安全性+性能肯定是最优，不要再想其他选项了。&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;如果你使用 Native 语言来实现对称加密，在 Android 上使用 JNI 调用 C 编译的代码，的确不少人认为原生指令更难逆向。可能要在 ARM 架构上做个取舍，是取悦 v8 用户，还是取悦 v7 以下的用户，这可能影响到选型。不过我认为     &lt;strong&gt;AES 依然是一个好的选项&lt;/strong&gt;，起码在服务器端，你肯定会节省成本。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
				 &lt;p&gt;  &lt;strong&gt;您可能还对下面的文章感兴趣：&lt;/strong&gt;&lt;/p&gt;
				 &lt;p&gt;&lt;/p&gt; &lt;ol&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=7698" target="_blank"&gt;Burpsuite插件开发之RSA加解密&lt;/a&gt; [2016-02-11 22:37:04]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=7623" target="_blank"&gt;文档安全加密系统的实现方式&lt;/a&gt; [2016-02-06 11:19:22]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=6853" target="_blank"&gt;公钥私钥加密解密数字证书数字签名详解&lt;/a&gt; [2014-04-21 12:44:29]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=6434" target="_blank"&gt;Perl 程序源码怎么加密&lt;/a&gt; [2013-05-28 22:20:58]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=6127" target="_blank"&gt;网址加密(URL加密)（RC4、PHP、密钥长度可变）&lt;/a&gt; [2012-12-21 13:38:39]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=6095" target="_blank"&gt;跨越千年的RSA算法&lt;/a&gt; [2012-12-16 23:46:00]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=5297" target="_blank"&gt;加密服务学习笔记&lt;/a&gt; [2012-05-08 00:07:39]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=4330" target="_blank"&gt;Oracle Transparent Data Encryption - 透明数据加密&lt;/a&gt; [2011-09-14 13:58:49]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=3771" target="_blank"&gt;在浏览器中加密Cookie&lt;/a&gt; [2011-06-02 23:44:09]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=3248" target="_blank"&gt;如何“加密”你的email地址&lt;/a&gt; [2011-02-13 22:51:37]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=3207" target="_blank"&gt;Padding Oracle Attack实例分析&lt;/a&gt; [2011-02-10 22:33:42]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=2698" target="_blank"&gt;加密你的shell&lt;/a&gt; [2010-11-14 21:05:30]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=1588" target="_blank"&gt;具有时效性的PHP字符串加密解密函数&lt;/a&gt; [2010-05-22 13:04:30]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=1297" target="_blank"&gt;代理的加密部分&lt;/a&gt; [2010-04-01 08:51:34]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=1248" target="_blank"&gt;使用bcompiler对PHP文件进行加密&lt;/a&gt; [2010-03-26 14:21:55]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=658" target="_blank"&gt;使用系统命令实现文件的压缩与加密&lt;/a&gt; [2009-11-19 22:41:24]&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://blogread.cn/it/article.php?id=179" target="_blank"&gt;可逆的加密方法(Mcrypt Encryption Functions)&lt;/a&gt; [2009-10-16 12:06:43]&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;/p&gt; &lt;img alt="" height="1" src="http://feeds.feedburner.com/~r/blogreadIT/~4/s-Z8Q-zfpwA" width="1"&gt;&lt;/img&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>安全</category>
      <guid isPermaLink="true">https://itindex.net/detail/59404-%E6%89%8B%E6%9C%BA-app-%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95</guid>
      <pubDate>Wed, 27 Mar 2019 21:16:21 CST</pubDate>
    </item>
    <item>
      <title>手机AI芯片大盘点，谁最强？</title>
      <link>https://itindex.net/detail/59329-%E6%89%8B%E6%9C%BA-ai-%E8%8A%AF%E7%89%87</link>
      <description>&lt;section data-mpa-powered-by="yiban.io"&gt;&lt;section&gt;&lt;section&gt;&lt;section&gt;&lt;section&gt;&lt;section&gt;&lt;section&gt;&lt;p&gt;为了改善电脑系统在资料处理上的效能，科学家将主意打到了人类的&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;上。这个念头并不是神来一笔，而是观察到人类的脑神经在处理视觉、听觉和语言方面，有非常卓越的表现。&lt;/p&gt;&lt;p&gt;这种参考人类&lt;mark data-type=technologies data-id=b5cce590-1c61-4d22-8e75-fe74128079c3&gt;神经元&lt;/mark&gt;结构所产生的资料处理程序，被称为「类&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;」或者「人工&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;（Artificial Neural Network，ANN）」，它就是一种模仿生物&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;结构和功能的数学模型的演算法。&lt;/p&gt;&lt;p&gt;ANN技术其实已问世超过50年，且不断的进行改良和突破，例如卷积类&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;（Convolutional Neural Networks，CNN）就是相当著名的一支，由于它的结构简单易用，因此发展迅速，并被广泛的运用在大型图像的处理上。&lt;/p&gt;&lt;p&gt;到了近几年，随着芯片技术的突破和&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;应用的崛起，让&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;技术又进一步受到重视。目前主要的推力则是&lt;mark data-type=technologies data-id=1a0e9c5e-6502-4cd7-8683-6b5ca6c48be2&gt;机器学习&lt;/mark&gt;（Machine Learning），它是&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;的基础所在，而&lt;mark data-type=technologies data-id=1a0e9c5e-6502-4cd7-8683-6b5ca6c48be2&gt;机器学习&lt;/mark&gt;的核心是基于&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;的多层资料处理技术的「深度&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;（Deep Neural Network）」，也因此，想办法来提升&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;资料处理的效能，就成了目前各家终端产品设计的突破点。&lt;/p&gt;&lt;p&gt;而眼前，最火热的战场，就是智能型手机。&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;strong&gt;&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;智能手机的新卖点&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;运算有多项优势，包含平行处理、内容定址记忆、容错特性、能处理一般演算法难以胜任的问题等，因此很适合运用在经常需要处理非常复杂的任务的应用上，而手机就是一个这样的产品。&lt;/p&gt;&lt;p&gt;智能手机是当代人们每天都要随身的电子装置，它不仅时时要能连线上网，而且经常会同时开启多个App软件，影像和语音的处理更是家常便饭。而随着&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;功能的导入，更让手机功能的优化与执行变得复杂，此时，&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;技术就成了最好的解决方案之一。&lt;/p&gt;&lt;p&gt;由于&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;技术具有自我学习的能力，能学习使用者的操作特性，并设定出一个最佳的输入和输出的路径。因此一旦学习完成之后，后续的各项操作皆能相对以往的软件程序快上不少，对于使用者体验有大幅的改善。&lt;/p&gt;&lt;p&gt;目前主要的手机处理芯片供应商也已经在其解决方案中，加入了&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;处理器的技术。&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;苹果Bionic处理器加入&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;引擎&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;苹果的iPhone就是最著名的产品。苹果在2017年的iPhone A11 Bionic处理器上首度加入了&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;处理引擎（Neural Engine）的技术。根据苹果的资料，这个&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;引擎是一个双核的设计，每秒运算次数最高可达6000亿次，能大幅提升&lt;mark data-type=technologies data-id=1a0e9c5e-6502-4cd7-8683-6b5ca6c48be2&gt;机器学习&lt;/mark&gt;的效能。&lt;/p&gt;&lt;p&gt;&lt;img data-ratio="0.61" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/ghsnibD4zwPuVrmGWTRouz9yXWibQL4fqQ7Fib6QV1CHyJezbO8edPteGUOUuwEXNrO0BgqvoveArqn3icldf47toQ/640?wx_fmt=png" data-type="png" data-w="600" src="https://image.jiqizhixin.com/uploads/editor/31ec79b3-8437-46e7-8628-ae766a669e5b/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;图一: 苹果最新的A12处理器，&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;引擎的核心数已达8个。（source: Apple）&lt;/p&gt;&lt;p&gt;而实际的使用情形也证实苹果所言不假，&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;处理技术的的确确让&lt;mark data-type=technologies data-id=1a0e9c5e-6502-4cd7-8683-6b5ca6c48be2&gt;机器学习&lt;/mark&gt;有了脱胎换骨的表现。也因此，苹果最新一代的处理器A12更进一步增强了&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;处理单元的性能，更正确的说，是增加了4倍。&lt;/p&gt;&lt;p&gt;在硬件设计上，苹果的&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;引擎是透过一块FPGA区域来达成，因此在&lt;mark data-type=technologies data-id=1a0e9c5e-6502-4cd7-8683-6b5ca6c48be2&gt;机器学习&lt;/mark&gt;性能上有很强的自定义能力。而在最新使用7纳米制程的A12处理器上，&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;引擎的核心数已达8个（A11是双核），且每秒可进行5万亿次运算（约8.33倍），至于执行Core ML的速度则是上一代的9倍，但功耗却只有前代的十分之一。&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img data-ratio="0.705" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/ghsnibD4zwPuVrmGWTRouz9yXWibQL4fqQlS0cWMlV9YiaB4OibUKdoiaUF0srax74fUXdB9I5A32mEiaia9LL58B5KeQ/640?wx_fmt=png" data-type="png" data-w="600" src="https://image.jiqizhixin.com/uploads/editor/f905bd12-d14c-477a-ab3d-5af60088f5af/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;图二: 各家芯片商的&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;运算技术比较。&lt;/p&gt;&lt;p&gt;也因为如此，采用A12处理器的iPhone学习能力惊人，除了能快速甚至即时的运行各项应用程式外，更能够迅速的辨认模式并做出预测，且不断的进行改良，堪称是当代最聪明的智能型手机。也由于新的处理器，iPhone在智能语音和影像辨识的能力有了绝伦的表现。&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;骁龙NPE技术以DSP突破运算性能&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;技术的优势明显，各家手机处理器芯片商当然也就陆续投入相关的技术研发，&lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;（Qualcomm）就是其中一个。旗下的骁龙（Snapdragon）处理器就已经搭载了&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;处理引擎（Neural Processing Engine; NPE）技术。&lt;/p&gt;&lt;p&gt;&lt;img data-ratio="0.5616666666666666" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/ghsnibD4zwPuVrmGWTRouz9yXWibQL4fqQa9EBWJ6eInRI9xoIlJzWsnBHScM03wIsyzaH8pIo5n23QjPSuGCX9w/640?wx_fmt=png" data-type="png" data-w="600" src="https://image.jiqizhixin.com/uploads/editor/2a967e0a-569c-4336-824b-1958b8c8ed6a/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;图三: &lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;Hexagon DSP&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;执行性能，相比在CPU上执行，能快出5至8倍。（source: &lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;）&lt;/p&gt;&lt;p&gt;根据&lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;的资料，骁龙的NPE是一种整合了多种软硬件的元件，用来加速终端装置上（on-device）的AI功能，以改善使用者的体验，但原则上，&lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;的NPE是以软件为中心（software-centric）的解决方案。&lt;/p&gt;&lt;p&gt;而在软件架构上，&lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;的NPE是属于开放的架构，能支援多种&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;的框架，包含Tensorflow、Caffe、Caffe2和ONNX，此外，&lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;也开发了自有的Hexagon Neural Network（NN）函式库，让开发者可以让其AI演算法在骁龙处理器里的Hexagon DSP上执行。&lt;/p&gt;&lt;p&gt;而在最新一代的骁龙处理器855上，NPE已经发展到了第四代，其效能已较第三代有3倍的成长，可对影像、影音、AR/VR与游戏等智能功能进一步优化。只不过&lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;并没有具体的说明其NPE的技术细节，硬件的架构也不得而知，也没有解释为何是在DSP上运行。但依据&lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;自己的说法，&lt;mark data-type=institutions data-id=3b40147e-e5d0-491f-b0c5-190b82aa7788&gt;高通&lt;/mark&gt;的Hexagon DSP 的&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;执行性能，相比在CPU上执行，能快出5至8倍。&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;联发科曦力处理器加入NeuroPilot与APU技术&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;台湾的联发科技（MediaTek）当然也看到了&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;在行动装置上的应用商机，自2018年初起，就推出了NeuroPilot的技术，并将之首次运用在其手机处理平台曦力P60上。&lt;/p&gt;&lt;p&gt;根据联发科的说法，NeuroPilot是基于他们的核心监控与调节技术CorePilot的进阶版。CorePilot在2014年就已经被开发出来，其主要作用就是动态监控手机多核处理器的每个核心的工作负载量，并加调节和分配，以提高手机运行的性能并降低电耗。&lt;/p&gt;&lt;p&gt;到了&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;时代，联发科也顺势推出了APU技术，并运用在CorePilot所积累的异构运算经验，推出了NeuroPilot平台，作为CPU、GPU和APU间的运作协调，以提升整体的AI运算效能。&lt;/p&gt;&lt;p&gt;NeuroPilot平台约可分为三个层级，顶层是各种APP应用程式；中间层为程序编写和异构运算（软件层）；最底层是各种硬件处理器。而其中最关键的就是中间的软件层。&lt;/p&gt;&lt;p&gt;联发科指出，中间层主要由演算法软件构成，包括各种软件的API、&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;运行（NN Runtime）、异构运行（Heterogeneous Runtime）。简单来说，就是所谓的&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;的运行架构（AI framewrok），以及&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;的演算法。&lt;/p&gt;&lt;p&gt;而联发科的NeuroPilot也是属于开放式的架构，支援目前市面上主流的AI framework，包含&lt;mark data-type=technologies data-id=58170354-4618-4a25-a2fe-c4ed169f2177&gt;TensorFlow&lt;/mark&gt;、TF Lite、Caffe、Caffe2、Amazon MXNet、Sony NNabla和ONNX等。联发科也提供NeuroPilot SDK，其包含Google&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;API（Android NN API）和联发科NeuroPilot扩充元件。&lt;/p&gt;&lt;p&gt;&lt;img data-ratio="0.635" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/ghsnibD4zwPuVrmGWTRouz9yXWibQL4fqQVIl7AzhtIpsCx7KFG9W3sSrUQVlY842rBeK9MwUUq6Lic5YxPoBG3mA/640?wx_fmt=png" data-type="png" data-w="600" src="https://image.jiqizhixin.com/uploads/editor/755aa137-bf11-4f79-b145-b9b4a92e2281/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;图四: NeuroPilot平台可分为三个层级，中间层为程序编写和异构运算，是最关键的一层。（source: 联发科）&lt;/p&gt;&lt;p&gt;而在硬件方面，除了原本的CPU、GPU外，则是增加了新的&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;处理器APU，用来提高&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;应用和&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;处理的校能。在最新一款的旗舰处理器P90上，联发科的APU已升级至2.0版本，比前一代快上四倍，算力达1127GMACs（电脑定点处理能力的量）。&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;中国海思携手&lt;mark data-type=institutions data-id=9dcd5943-3120-4910-9c86-e7259a164965&gt;寒武纪&lt;/mark&gt;主攻NPU技术&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;中国&lt;mark data-type=institutions data-id=48d62db6-3e47-4e93-8b9d-b1283a7ea419&gt;华为&lt;/mark&gt;旗下的海思半导体（HiSilicon），是手机处理器市场一家快速崛起的IC设计公司，目前屡屡在技术上有领先业界表现。该公司在2017年九月就率先发表了一款采用10纳米制程的智能手机处理器－麒麟（Kirin）970，该处理器是产界首款具有&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;神经处理元件（NPU）的手机处理芯片。&lt;/p&gt;&lt;p&gt;海思的NPU同样是属于AI应用程式的加速处理单元，也就是针对&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;演算法的处理，特别专注于卷积&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;（CNN）的应用。根据海思的说法，在相簿模式中，Kirin 970的NPU每秒能处理2,000张照片的处理；若没有NPU介入，单以处理器运算只能处理约100张而已。&lt;/p&gt;&lt;p&gt;&lt;img data-ratio="0.695" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/ghsnibD4zwPuVrmGWTRouz9yXWibQL4fqQwKDmtczYom3JnDQqxKPMTUyvvuHot4ibHzVtn3mhs9muvVH7iasJkzXw/640?wx_fmt=png" data-type="png" data-w="600" src="https://image.jiqizhixin.com/uploads/editor/c1b575e6-c70f-4131-b507-d17b429a061e/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;图五: 最新一代的Kirin 980处理器，其NPU核心数已增加至两个。（source: 海思）&lt;/p&gt;&lt;p&gt;据了解，Kirin 970的NPU，是由中国的芯片IP商&lt;mark data-type=institutions data-id=9dcd5943-3120-4910-9c86-e7259a164965&gt;寒武纪&lt;/mark&gt;（Cambri0con）所提供，并由海思与&lt;mark data-type=institutions data-id=9dcd5943-3120-4910-9c86-e7259a164965&gt;寒武纪&lt;/mark&gt;共同合作进行优化的一个模组。&lt;/p&gt;&lt;p&gt;而最新一代的Kirin 980处理器，其NPU核心数已增加至两个。根据&lt;mark data-type=institutions data-id=48d62db6-3e47-4e93-8b9d-b1283a7ea419&gt;华为&lt;/mark&gt;的资料，双核NPU的性能可达到每分钟处理4,500张图像，较前一代提升了120%的辨识速度。可以快速执行&lt;mark data-type=technologies data-id=3ff3ab31-7595-48d8-905a-baddfecc22be&gt;人脸识别&lt;/mark&gt;，物体侦测与辨识，&lt;mark data-type=technologies data-id=c4e02f84-c5e7-4427-a530-31258211b9cb&gt;物体识别&lt;/mark&gt;，影像分割和智能辨识等&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;的应用。&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;strong&gt;AI需求成形处理器IP商也加入战场&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;由于&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;的性能卓越，因此除了IC设计商积极投入研发外，处理器IP供应商自然也开始跨入此一领域，包含前段所提到的中国&lt;mark data-type=institutions data-id=9dcd5943-3120-4910-9c86-e7259a164965&gt;寒武纪&lt;/mark&gt;之外，以色列的IP商CEVA也开始提供具备&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;技术的IP方案。&lt;/p&gt;&lt;p&gt;CEVA近期所发表的WhisPro就是一款基于&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;技术的智能语音辨识方案，它采用了可扩展递回&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;（Recurrent Neural Network）技术，可同时辨识多个触发片语，能运用在智能手机、智能音箱、蓝牙耳机和其他语音设备中。&lt;/p&gt;&lt;p&gt;然而有趣的是，虽然神经处器技术的势头已经窜起，但处理器IP的龙头Arm却是动作缓慢，到目前为止，仍未提供任何的&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;解决方案。虽然Arm也看好&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;的应用市场，但就是迟迟未把具体的产品曝光。&lt;/p&gt;&lt;p&gt;而依据Arm的时程，最快今年第一季才会推出具备&lt;mark data-type=technologies data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;功能的AI处理器－Arm ML CPU。根据Arm的说明，Arm ML处理器也会是一个系列产品，提供多种规格给不同的应用产品，性能范围是1至4 TOP/s，可满足不同的产品需求，包含智能手机、智能手机、智能家居和汽车等。&lt;/p&gt;&lt;p&gt;Arm指出，其ML处理器主要有三个部分，一个是MAC引擎，主要是执行卷积云&lt;mark data-type=technologies data-id=72b0bcc0-d8f9-4edd-919f-fa7c2560388c&gt;神经网络&lt;/mark&gt;的运算；第二是可程式的运算引擎，可以支援未来新的运算元和网络；第三是资料管理，用来降低AI运算的功耗。&lt;/p&gt;&lt;p&gt;虽然推出的时间晚了，但Arm仍是自信满满，由于其处理器的生态系十分庞大且完整，要后来居上也可能是易如反掌。&lt;/p&gt;&lt;p&gt;「我们已经看到&lt;mark data-type=technologies data-id=1a0e9c5e-6502-4cd7-8683-6b5ca6c48be2&gt;机器学习&lt;/mark&gt;技术正在成熟，市场需求也正在不断增加，我们认为现在是进入市场的最佳时机。」Arm&lt;mark data-type=technologies data-id=1a0e9c5e-6502-4cd7-8683-6b5ca6c48be2&gt;机器学习&lt;/mark&gt;副总裁Dennis Laudick说。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59329-%E6%89%8B%E6%9C%BA-ai-%E8%8A%AF%E7%89%87</guid>
      <pubDate>Tue, 05 Mar 2019 11:15:48 CST</pubDate>
    </item>
    <item>
      <title>公共安全部门的摄像头每天都拍到了什么？答案令人吃惊_手机凤凰网</title>
      <link>https://itindex.net/detail/59187-%E5%85%AC%E5%85%B1%E5%AE%89%E5%85%A8-%E9%83%A8%E9%97%A8-%E6%91%84%E5%83%8F%E5%A4%B4</link>
      <description>&lt;div&gt;    &lt;div&gt;&lt;/div&gt;    &lt;p&gt;原标题:公安部门的摄像头每天都拍到了什么？答案令人大吃一惊！&lt;/p&gt;    &lt;blockquote&gt;      &lt;p&gt;当公安视频监控遇上人工智能，将会给我们未来的公共安全带来哪些深刻变化？        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;说起公安的视频摄像头，可能大家脑海里首先浮现的是路口违章抓拍。但现在，        &lt;strong&gt;当人工智能、大数据、物联网和数字高清视频监控深度结合，或许将会开启另一扇智慧城市的大门。&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;本文转载自微信公众号“钛禾产业观察”（ID：Taifangwu），原文发于2018年10月23日，标题为《如果你认为公安的摄像头只能拍违章，那就太天真了！》，不代表瞭望智库观点。&lt;/p&gt;      &lt;p&gt;10月18日，中电科集团在中国·南京智慧公共安全高峰论坛上发布了其最新的研究成果。中国电子科学院创新中心公安业务负责人林晖在现场做了《人工智能在公安视频大数据分析领域的前沿应用》专题报告。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;从中电科的报告中，我们可以读到很多有趣的信息：&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;          &lt;strong&gt;再也不怕“人挤人”了&lt;/strong&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;简单点说，        &lt;strong&gt;一个路口的实时流量如何，人群密度、甚至人群的行走速度等，云端都能掌握得一清二楚。&lt;/strong&gt;如果一个点位过于拥堵，那警察叔叔就会赶来维持秩序了。避免再次出现像上海外滩那样的踩踏事件。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;这个技术叫做        &lt;strong&gt;“视频点位人流量分析”&lt;/strong&gt;，基于深度学习和计算机视觉技术，可以实时统计监控视频中的经过人数及拥挤情况。也可以针对人员密集场所的监管需求，构建群体聚集分析模型，智能判断出某区域是否有拥挤堵塞、异常聚集等行为。&lt;/p&gt;      &lt;p&gt;视频点位人流量分析技术&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;          &lt;strong&gt;不要以为没人站岗，就可以偷偷溜进敏感区域&lt;/strong&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;         &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;如果你哪天不小心误入了禁区地带，即使没有人站岗，摄像头也是能认识你的！摄像头甚至能识别你东张西望、拍照等动作。所以不要以为没人盯着你，就可以拿着手机到处乱拍，其实你的一举一动早已被警察叔叔掌握得一清二楚。&lt;/p&gt;      &lt;p&gt;这就是最新的        &lt;strong&gt;“禁入区域异常入侵预警&lt;/strong&gt;        &lt;strong&gt;”技术&lt;/strong&gt;。识别系统通过深度学习人体特征和动作，能够自动发现、标记出人员的位置，        &lt;strong&gt;当有人员异常入侵重点禁入区域时，以及异常行为时，系统可以发出自动预警。&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;        &lt;img src="http://e0.ifengimg.com/04/2019/0104/33D7875B3BC95AE9D77E954B68DECB8E43B9D19F_size3413_w480_h257.gif"&gt;&lt;/img&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;禁入区域异常入侵预警技术&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;          &lt;strong&gt;以后在公共场合打架，可能摄像头就“自动报警”了&lt;/strong&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;要是再遇到“古惑仔”街头打架，不用怕！哪怕没有正义路人上前制止，可能摄像头也会直接报警了。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;“人员异常行为智能预警&lt;/strong&gt;        &lt;strong&gt;”系统&lt;/strong&gt;        &lt;strong&gt;，&lt;/strong&gt;        &lt;strong&gt;可以&lt;/strong&gt;        &lt;strong&gt;通过构建行为运动分析模型和行人姿态分析模型，智能分析判断出行人是否有快速运动、打架斗殴等异常个体和群体行为，及时向后台发出预警信息。&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;        &lt;img src="http://e0.ifengimg.com/04/2019/0104/CC2D4739710795EA7B8B3223B467C499D525196D_size2019_w480_h261.gif"&gt;&lt;/img&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;人员异常行为智能预警技术&lt;/p&gt;      &lt;p&gt;         &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;4&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;          &lt;strong&gt;在没人的地方遇险，向摄像头挥手也能求救！&lt;/strong&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;如果在没人的地方遇到侵害，四周无人相助之时，或许只需要向摄像头拼命挥手，便会触发自动报警求救。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;最新的        &lt;strong&gt;“剧烈挥手求救识别”&lt;/strong&gt;        &lt;strong&gt;技术&lt;/strong&gt;，是利用深度学习人体姿态识别技术，精准识别人员向摄像头的剧烈挥手动作，        &lt;strong&gt;当人员遇到不法侵害向摄像头剧烈挥手时，可以实时预警提醒后台人员。&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;        &lt;img src="http://e0.ifengimg.com/09/2019/0104/863BC018121D1D73D6D82F491E4A7143E246AF8D_size2029_w480_h225.gif"&gt;&lt;/img&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt; 剧烈挥手求救识别技术&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;5&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;          &lt;strong&gt;找到一个人会像搜索一条信息那样容易&lt;/strong&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;摄像头连网，加上        &lt;strong&gt;“外观线索识别技术”&lt;/strong&gt;，在茫茫人海中搜索一个人可以像百度查找一篇新闻那样容易。有了这个技术，可以跟踪犯罪嫌疑人到天涯海角，让不法分子再也无处遁形！而对于一些焦急寻找走失儿童的父母亲，或许将是一大福音。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;这套“行人搜索系统”的原理是，        &lt;strong&gt;利用某一监控下的行人图像，可以在其它不同场景、不同光线、不同视角下的视频中准确搜索出该行人，并勾勒出其行动轨迹，搜索准确率可以达到90%。&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;        &lt;img src="http://e0.ifengimg.com/06/2019/0104/E8E7A26A50F9BCFB1778489E6AD16A9B92D2C23C_size77_w993_h638.jpeg"&gt;&lt;/img&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;外观线索识别技术&lt;/p&gt;      &lt;p&gt;这套系统更厉害的地方在于，还可以进行更高级的“人员结构化智能分析”，通过图片处理性能达到20张/秒、视频处理性能最高达40路1080P的结构化服务器，能准确识别人脸、衣服颜色、出行姿态等等信息。        &lt;strong&gt;将所有行人变成一个流动的“大数据库”，便于警方实现人员属性预警和人员属性搜索，进行更高层次的分析决策。&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;        &lt;img src="http://e0.ifengimg.com/07/2019/0104/1185D1002F4D5F06298D383758B290FA3120E906_size50_w809_h361.jpeg"&gt;&lt;/img&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt; 人员结构化智能分析技术&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;6&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;          &lt;strong&gt;携带敏感物体，也会被及时发现&lt;/strong&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;         &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;如果你带了敏感物体，可能不需要安检仪，也会被摄像头发现！&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;这套        &lt;strong&gt;“携带物体识别技术”&lt;/strong&gt;主要针对某些特定场所的安全监管需求，打造深度学习携带物体识别系统，        &lt;strong&gt;当有人携带敏感物体时，系统会及时预警。&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt; 携带物体识别技术&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;7&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;          &lt;strong&gt;网络主播可以有效监管了&lt;/strong&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;如果网络主播再做一些“不雅”的动作，想侥幸不被管理员发现，以后可能就难了。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt; 这套技术叫做        &lt;strong&gt;“网络直播敏感信息监测系统”&lt;/strong&gt;，基于深度学习图像识别技术，        &lt;strong&gt;可以智能识别直播中的疑似敏感信息，节省超过90%的审核人力。&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;        &lt;img src="http://e0.ifengimg.com/07/2019/0104/202E3732D952C35618E3A0FF1B17A70CF8517333_size65_w887_h423.jpeg"&gt;&lt;/img&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt; 网络直播敏感信息监测系统&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;如果你认为以上技术还不够刷新你的世界观，那么下面这个厉害了！&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;8&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;          &lt;strong&gt;摄像头就可以测谎&lt;/strong&gt;&lt;/strong&gt;        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;如果在警察的审讯过程中，犯罪嫌疑人说谎怎么办？不要紧，也能用人工智能来解决！&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;这套系统学名叫        &lt;strong&gt;“审讯场景的无感知情绪监&lt;/strong&gt;        &lt;strong&gt;测分析”&lt;/strong&gt;。顾名思义，不用上测谎仪，审讯室的摄像头就能搞得定！&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;这套“无感知情绪监测分析系统”，主要面向审讯场景，结合视频图像处理、并行计算、深度学习等技术，采用非接触的生理信号采集、微表情识别方法，保证了无感知的实现，进而建立量化情绪模型，实现情绪监控和分析。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;是不是很复杂？没关系。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;简单的说，就是在被审讯的过程中，犯罪嫌疑人的一个小动作、一个细微表情、一些眼神的漂移，即使逃得过警察叔叔的眼睛，也逃不过警察叔叔背后的摄像头。&lt;/strong&gt;要知道，被人工智能武装的摄像头，甚至能无感知测出你的动态心率！&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;        &lt;img src="http://e0.ifengimg.com/05/2019/0104/BA92FF80871D535ED256F5D242FDCF7417FD0D27_size49_w887_h477.jpeg"&gt;&lt;/img&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;非接触式心率检测技术&lt;/p&gt;      &lt;p&gt;所以，千万别对警察叔叔撒谎！！        &lt;br /&gt;&lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;背景链接：&lt;/strong&gt;        &lt;br /&gt;        &lt;strong&gt;黑科技的背后——视频监控步入深海区，创新技术推动千亿市场&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;数字高清视频逐步取代模拟视频，拉动的不仅仅是前端设备的更新换代，更是拉动了背后物联网、人工智能、大数据和云计算的千亿级大市场。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;近年来，得益于平安城市和智慧城市的打造，国内安防产业始终保持高增长。据中商产业研究院统计，2018年国内安防市场规模将达到7452亿元，2020年预计将接近1万亿元，年增长率保持两位数的高位增长，遥遥领先全球其他国家和地区。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;        &lt;strong&gt;视频监控是智慧安防系统的重要组成部分，也是前端数据采集的关键入口。&lt;/strong&gt;2014-2016年期间，视频监控在安防产品应用中的比例分别为47.06%、48.33%和50.63%。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;根据中商产业研究院的报告，2010-2016年期间，我国视频监控市场规模从242亿元增长到962亿元，年均复合增长率达25.86%。预计2018年市场规模将达到1192亿元，同比增长达12%。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;而公安部门，无疑是推动这一需求背后最大的力量。&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;对于不熟悉公安业务的同学，钛主编在此简单向大家简单解读一下：&lt;/p&gt;      &lt;p&gt; &lt;/p&gt;      &lt;p&gt;从顶层设计来说，公安部门的强烈愿望是：在全国各地建设一张立体化的社会治安防控体系网。而这张网的要求是：&lt;/p&gt;      &lt;blockquote&gt;        &lt;p&gt;          &lt;strong&gt;联网共享&lt;/strong&gt;&lt;/p&gt;        &lt;p&gt;          &lt;strong&gt;拥抱大数据            &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;        &lt;p&gt;          &lt;strong&gt;实现预测、预警、预防。&lt;/strong&gt;&lt;/p&gt;        &lt;p&gt;以此驱动公安业务升级。&lt;/p&gt;        &lt;p&gt; &lt;/p&gt;        &lt;p&gt;做公安视频业务的人，都熟悉两个重要的文件——“996政策”和“620讲话”。&lt;/p&gt;        &lt;p&gt; &lt;/p&gt;        &lt;p&gt;“996政策”即《关于加强公共安全视频监控建设联网应用工作的若干意见》，政策提出到2020年，          &lt;strong&gt;基本实现全预覆盖、全网共享、全时可用、全程可控。&lt;/strong&gt;&lt;/p&gt;        &lt;p&gt; &lt;/p&gt;        &lt;p&gt;“620讲话”即全国公安科技信息化工作会议上的重要指示，通过讲话我们可以解析出，未来公安信息化应该具备三大能力——          &lt;strong&gt;实现万物互联互通的数字化“天网”、对海量数据拥有超级运算能力的“天算”，和具有超级智能控制能力的“天智”。&lt;/strong&gt;&lt;/p&gt;        &lt;p&gt; &lt;/p&gt;        &lt;p&gt;目前正在紧张推进的“雪亮工程”，正是这两大政策的落地延伸。&lt;/p&gt;        &lt;p&gt; &lt;/p&gt;        &lt;p&gt;对于公安部门来说，如今他们正经历着一场前所未有的“智慧化变革”，而这场变革的目标是：&lt;/p&gt;        &lt;blockquote&gt;          &lt;p&gt;从事后被动处置向事前主动预防转变，增强犯罪预见性、主动出击&lt;/p&gt;          &lt;p&gt;让警力下沉，形成最强作战反应机制&lt;/p&gt;          &lt;p&gt;更快破大案、更多破小案、更好控发案&lt;/p&gt;          &lt;p&gt; &lt;/p&gt;          &lt;p&gt;本次中国·南京智慧公共安全高峰论坛上，也发布了《南京智慧警务总体技术设计》白皮书，提出了以新技术作为“土地”；以公安信息栅格网为“树根”，前端采集数据；以警务大数据中心为“树干”，提供服务支撑能力；“树干上”长成5个“树枝”——情指平台、警综平台、办公平台、基层及专业警种智慧应用、安全保密运维管理及集成验证的智慧警务树总体规划蓝图。&lt;/p&gt;          &lt;p&gt; &lt;/p&gt;          &lt;p&gt;由此看来，智慧安防可不是单纯布局视频监控摄像头那么简单的事情！由海量摄像头组成的神经网络，和由“数据云”组成的智慧大脑，将成为我们未来公共安全的视觉中枢。&lt;/p&gt;          &lt;p&gt;可以预见的是，这又将是一个全世界未有的超级工程。而相信我们的生活，也将随着这张“智慧网络”的完善，变得越来越安全。&lt;/p&gt;          &lt;p&gt;（图片来源：中国电子科学研究院）&lt;/p&gt;          &lt;p&gt;            &lt;br /&gt;&lt;/p&gt;          &lt;p&gt;            &lt;br /&gt;            &lt;a href="http://i.ifeng.com?srctag=article_logo"&gt;              &lt;img src="http://p2.ifengimg.com/a/2016/0810/204c433878d5cf9size1_w16_h16.png"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59187-%E5%85%AC%E5%85%B1%E5%AE%89%E5%85%A8-%E9%83%A8%E9%97%A8-%E6%91%84%E5%83%8F%E5%A4%B4</guid>
      <pubDate>Mon, 07 Jan 2019 09:53:34 CST</pubDate>
    </item>
    <item>
      <title>中国移动科普：手机里的身份证照片应果断删除</title>
      <link>https://itindex.net/detail/59178-%E4%B8%AD%E5%9B%BD%E7%A7%BB%E5%8A%A8-%E7%A7%91%E6%99%AE-%E6%89%8B%E6%9C%BA</link>
      <description>&lt;div&gt;  &lt;p&gt;一个手机号、一台能上网的智能手机，仅靠这两样，在当下的社会生活中就能办成各种各样的事情，包括一些敏感的、数额不小的金融活动。1月4日，中国移动10086官方微博发布科普一张图，   &lt;strong&gt;提醒手机里存有身份证等个人隐私照片的朋友，果断删除，以免留下后患。&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;官方引述的例子是，李某打开存有赵先生身份证照片的手机相册后，利用这个不起眼的疏漏修改了失主的支付宝账号，刷走余额2000余元，甚至连花呗、借呗也没放过进行透支购物，最后还把手机折现千元，给对方造成了不小的损失。&lt;/p&gt;  &lt;p&gt;86君另外提醒，除了身份证，账户密码、手机验证码、Apple ID/密码、各类单据、定位信息、各类证件复印件（书写进攻xx使用等）等类似的隐私信息都要留心保护好，以策万全。&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://static.cnbetacdn.com/article/2019/01/7567b45b6ed2e3a.jpg" target="_blank"&gt;    &lt;img src="https://rdimg.com/proxy/https://static.cnbetacdn.com/article/2019/01/7567b45b6ed2e3a.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59178-%E4%B8%AD%E5%9B%BD%E7%A7%BB%E5%8A%A8-%E7%A7%91%E6%99%AE-%E6%89%8B%E6%9C%BA</guid>
      <pubDate>Fri, 04 Jan 2019 19:40:48 CST</pubDate>
    </item>
    <item>
      <title>如何用手机控制空调 ——简单实用的智能家居教程 - 知乎</title>
      <link>https://itindex.net/detail/59172-%E6%89%8B%E6%9C%BA-%E6%8E%A7%E5%88%B6-%E7%A9%BA%E8%B0%83</link>
      <description>&lt;div&gt;    &lt;p&gt;【首发少数派：      &lt;a href="http://link.zhihu.com/?target=https%3A//sspai.com/post/42414" rel="nofollow noreferrer" target="_blank"&gt;如何用手机控制空调 ——简单实用的智能家居教程&lt;/a&gt;】&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;我家有三个单体空调，型号比较老，每次要在各自的控制面板上调节开关和温度，也没有定时控温功能。如果想实现远程操控（比如在手机上），最简单的方案就是      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//nest.com/thermostats/" rel="nofollow noreferrer" target="_blank"&gt;Nest Thermostat&lt;/a&gt;&lt;/u&gt;。然而抠门如我一看每个售价$169，三个要五百多美元，便萌生自己改装的念头。&lt;/p&gt;    &lt;p&gt;可行吗？根据电路常识推测，空调各部分工作应该是由相应 IO（Input / Output）的高低电位触发，那么只要找到控制面板所连结的 IO，就可以取而代之。换个角度，即使空调结构是黑盒子，既然 Nest Thermostat 能用于大部分空调型号，这说明：1，空调的 API（操控界面）是高度统一的；2，只要能模拟 Nest 的行为，就可以实现从空调 API 到 Nest API 的转换；3，网上一定有许多通用的 DIY 开源项目。&lt;/p&gt;    &lt;p&gt;在这个课题上，我花了一半时间找合适的开源项目。你需要综合评价：对方解决的问题是否和你一致，交互界面你是否喜欢，配件是否经济实惠，软硬件系统是否强健，是否有后续开放性，可否融合到更广的智能家居平台等等。由于是第一次改装家电，后两个因素暂时不考虑。因为我手头有多余的树莓派 Zero，在定制的 Linux 系统下可以轻松安装 Web App，通过 ssh 编程也极为简便，于是就以 thermostat + raspberry pi + web 为关键词搜索，最终选中了      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//gitlab.com/madbrenner/PyStat" rel="nofollow noreferrer" target="_blank"&gt;这个方案&lt;/a&gt;&lt;/u&gt;：PyStat。&lt;/p&gt;    &lt;p&gt;PyStat 的用户界面是一个网页：&lt;/p&gt;    &lt;img src="data:image/svg+xml;utf8,&lt;svg%20xmlns='http://www.w3.org/2000/svg'%20width='2880'%20height='1800'&gt;&lt;/svg&gt;" width="2880"&gt;&lt;/img&gt;    &lt;p&gt;用户界面非常直观：第一行显示室温和目标温度。第二行的三个圆圈表明相应部件是否工作。比如，在制热时，制热和风扇同时工作，所以第1、3个圆圈是亮的，中间代表制冷的不亮。第三行的三个方块是用户选择的工作模块，最多可选一个。注意无论选制冷还是制热，风扇始终是工作的。第四行是温度选择。选好模式和温度后点击 Submit Changes 即可传送指令。最下方是由      &lt;a href="http://link.zhihu.com/?target=http%3A//darksky.net/" rel="nofollow noreferrer" target="_blank"&gt;Weather&lt;/a&gt;API 提供的天气预报。&lt;/p&gt;    &lt;p&gt;因为是 Web App ，就可以在家里任何浏览器上操作，比如手机和 Tablet 上：&lt;/p&gt;    &lt;img src="data:image/svg+xml;utf8,&lt;svg%20xmlns='http://www.w3.org/2000/svg'%20width='3264'%20height='2448'&gt;&lt;/svg&gt;" width="3264"&gt;&lt;/img&gt;    &lt;p&gt;（打折时淘的 Fire Tablet 重获生机，可以嵌到墙里）&lt;/p&gt;    &lt;p&gt;因为是内网页面，你只能在联入家里 Wifi 的设备上操控，即不能在回家路上事先打开空调——这是这个方案的缺点之一。我会在以后的系统智能家居方案中探索这个需求。&lt;/p&gt;    &lt;p&gt;如果你喜欢这个界面，就可以下载      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//github.com/zhaozhichen/PyStat" rel="nofollow noreferrer" target="_blank"&gt;代码库&lt;/a&gt;&lt;/u&gt;，撸起袖子干了：&lt;/p&gt;    &lt;h2&gt;购买配件&lt;/h2&gt;    &lt;p&gt;      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//www.adafruit.com/product/3400" rel="nofollow noreferrer" target="_blank"&gt;树莓派 Zero W&lt;/a&gt;&lt;/u&gt;$10 + shipping&lt;/p&gt;    &lt;p&gt;      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//www.amazon.com/SanDisk%25C2%25AE-microSDHCTM-8GB-Memory-Card/dp/B0012Y2LLE/ref%3Dsr_1_7" rel="nofollow noreferrer" target="_blank"&gt;Micro SD 卡&lt;/a&gt;&lt;/u&gt;（至少8G） $8&lt;/p&gt;    &lt;p&gt;      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//www.amazon.com/JBtek-Channel-Module-Arduino-Raspberry/dp/B00KTEN3TM/ref%3Dpd_sim_147_1%3F_encoding%3DUTF8%26pd_rd_i%3DB00KTEN3TM%26pd_rd_r%3DX99987A0S5D0V42PQC8X%26pd_rd_w%3D33kg6%26pd_rd_wg%3DgXzy2%26psc%3D1%26refRID%3DX99987A0S5D0V42PQC8X" rel="nofollow noreferrer" target="_blank"&gt;4 Channel Relay&lt;/a&gt;&lt;/u&gt;$7&lt;/p&gt;    &lt;p&gt;      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//www.amazon.com/SUNKEE-DS18B20-Temperature-Sensor-DS18B20DS18B20/dp/B008HODWBU/ref%3Dsr_1_3%3Fs%3Delectronics%26ie%3DUTF8%26qid%3D1512935037%26sr%3D1-3%26keywords%3DDS18B20" rel="nofollow noreferrer" target="_blank"&gt;DS18B20温度探头&lt;/a&gt;&lt;/u&gt;$6&lt;/p&gt;    &lt;p&gt;一个4.7k~10k欧姆的电阻&lt;/p&gt;    &lt;p&gt;导线若干、Micro USB 充电线一根&lt;/p&gt;    &lt;p&gt;总价：$31+。除了树莓派以外的配件在 AliExpress 上买便宜得多，只是要等2-3周。&lt;/p&gt;    &lt;p&gt;此外，你可能还需要用于测试的 LED 灯若干、面包版、电焊工具、micro HDMI 线、micro USB hub、USB 鼠标键盘等辅助配件，以上都不算在耗材里。&lt;/p&gt;    &lt;h2&gt;预备树莓派&lt;/h2&gt;    &lt;p&gt;1，在树莓派上安装 Rasbian 系统，      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//www.raspberrypi.org/documentation/installation/installing-images/README.md" rel="nofollow noreferrer" target="_blank"&gt;参考这里&lt;/a&gt;&lt;/u&gt;。建议安装      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//downloads.raspberrypi.org/raspbian_latest" rel="nofollow noreferrer" target="_blank"&gt;这个&lt;/a&gt;&lt;/u&gt;带图形桌面的版本。&lt;/p&gt;    &lt;p&gt;2，通过 Micro HDMI 连显示器，在图形界面里连上家里的 Wifi。&lt;/p&gt;    &lt;p&gt;3，如果选择 ssh 联入，记得在 raspi-config 设置里 enable ssh。&lt;/p&gt;    &lt;p&gt;4，下载代码：      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//github.com/zhaozhichen/PyStat" rel="nofollow noreferrer" target="_blank"&gt;https://github.com/zhaozhichen/PyStat&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;    &lt;h2&gt;设置温度探头&lt;/h2&gt;    &lt;p&gt;我先扯开一点，讲一下空调是怎么控制温度的。&lt;/p&gt;    &lt;p&gt;纠正一个许多人都有的错误印象：（以制热为例）温度调得越高，空调功率越大，室温升温越快。事实上，对大部分普通空调，制热制冷功率是恒定的，和所调温度无关。比如室温是10度，制热目标温度设为20度，在制热过程中室温逐渐升高，当到达目标温度加容错值（比如2度），也就是22度时，空调停止工作。此后，室温逐渐回落，当落到目标温度减去容错值，也就是18度时，制热再次开启，如此往复保证室温在设定温度周围（18～22度）震荡。所以，设定温度高低只能决定最终稳定的室温，而不能改变初始升温的速度。&lt;/p&gt;    &lt;p&gt;说这个原理，是因为我们要在程序里复现以上逻辑，也就是说除了控制制热／制冷／风扇的输出信号，我们还需要测量室温的输入信号。&lt;/p&gt;    &lt;p&gt;温度是模拟量。不同于 Arduino，树莓派只支持数字输入，于是需要 DS18B20 这样的 1-Wire 设备将模拟信号转换为脉冲数字信号，然后解码为模拟量，保存在 /sys/bus/w1/devices 中。请参考      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing/hardware" rel="nofollow noreferrer" target="_blank"&gt;这个&lt;/a&gt;&lt;/u&gt;      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing/ds18b20" rel="nofollow noreferrer" target="_blank"&gt;教程&lt;/a&gt;&lt;/u&gt;，并将你的温度探头序列号复制到      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//github.com/zhaozhichen/PyStat/blob/master/TemperatureReader.py%23L17" rel="nofollow noreferrer" target="_blank"&gt;这里&lt;/a&gt;&lt;/u&gt;。注意：我们用4号接口。&lt;/p&gt;    &lt;h2&gt;安装 Web App&lt;/h2&gt;    &lt;p&gt;我自己不会做网站，尤其不懂前端，对 LAMP 结构的 web server 敬而远之。直到发现基于 python 的 flask，三行代码写 Hello World，真是找到了救命稻草，一见钟情。Flask 的 web server 教程请      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//projects.raspberrypi.org/en/projects/python-web-server-with-flask" rel="nofollow noreferrer" target="_blank"&gt;参考这里&lt;/a&gt;&lt;/u&gt;。&lt;/p&gt;    &lt;p&gt;这个系统的主代码是 ThermostatMain.py，初次运行时开启三个线程，分别是 ：&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;ThermostatService&lt;/li&gt;      &lt;ul&gt;        &lt;li&gt;从 current.set 读取指令（模式：制热／制冷／风扇，目标温度）；&lt;/li&gt;        &lt;li&gt;通过温度探头读取室温；&lt;/li&gt;        &lt;li&gt;通过 GPIO 输出制热／制冷／风扇的开关。&lt;/li&gt;&lt;/ul&gt;      &lt;li&gt;ThermostatWeb&lt;/li&gt;      &lt;ul&gt;        &lt;li&gt;web server，通过温度探头读取室温显示在网页上；&lt;/li&gt;        &lt;li&gt;（可选）从指定的天气信息服务商 API 读取所在地气候、天气预报等信息。推荐          &lt;a href="http://link.zhihu.com/?target=http%3A//darksky.net/" rel="nofollow noreferrer" target="_blank"&gt;Weather&lt;/a&gt;提供的 API；&lt;/li&gt;        &lt;li&gt;将用户在网页上做的指令保存于 current.set。&lt;/li&gt;&lt;/ul&gt;      &lt;li&gt;ThermostatScheduler&lt;/li&gt;      &lt;ul&gt;        &lt;li&gt;定时开关，这个没有用户界面，我也没有用上。&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;    &lt;p&gt;然后循环运行以下任务：&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;记录室温、指令、天气情况等信息，通过 sqlite3 保存到数据库中；&lt;/li&gt;      &lt;li&gt;检测各进程，及时报错。&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;运行主程序：&lt;/p&gt;    &lt;div&gt;      &lt;pre&gt;        &lt;code&gt;$ Python3 ThermostatMain.py&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;p&gt;然后在其他设备上访问：192.168.X.X:5000（填写树莓派的 IP 地址），应该可以看到用户界面。&lt;/p&gt;    &lt;p&gt;这是 web app 的单元测试（unit test）。&lt;/p&gt;    &lt;h2&gt;树莓派电路&lt;/h2&gt;    &lt;p&gt;如果你没有在树莓派上用过 python 的 GPIO 库，可以参考      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//makezine.com/projects/tutorial-raspberry-pi-gpio-pins-and-python/" rel="nofollow noreferrer" target="_blank"&gt;这个教程&lt;/a&gt;&lt;/u&gt;。我们用的树莓派的 GPIO 针脚排布在      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md" rel="nofollow noreferrer" target="_blank"&gt;这里&lt;/a&gt;&lt;/u&gt;，此外可以在      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//pinout.xyz/" rel="nofollow noreferrer" target="_blank"&gt;这里&lt;/a&gt;&lt;/u&gt;看到更详细的参数。我们用到了4个接口，除了用于前文提到的用于温度探头的4号口，其他三个输出口分别是：&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;制热开关：17&lt;/li&gt;      &lt;li&gt;制冷开关：27&lt;/li&gt;      &lt;li&gt;风扇开关：22&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;除此之外，还需要用到3.3伏电位和地线（ground）。所以，焊接后的电路如下（温度探头的焊接方式在前文提到的      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing/hardware" rel="nofollow noreferrer" target="_blank"&gt;教程&lt;/a&gt;&lt;/u&gt;里）：&lt;/p&gt;    &lt;img src="data:image/svg+xml;utf8,&lt;svg%20xmlns='http://www.w3.org/2000/svg'%20width='3264'%20height='2448'&gt;&lt;/svg&gt;" width="3264"&gt;&lt;/img&gt;    &lt;p&gt;（由于我用的是树莓派 Zero，不带 Wifi 功能，所以需要外接 USB Wifi 模块。如果你买的是我推荐的树莓派 Zero W，就可以忽略这个模块。）&lt;/p&gt;    &lt;p&gt;在接空调之前，建议用 LED 灯模拟空调，检测制热／制冷／风扇在网页提供的指令下是否工作正常。比如，在17口和地线之间串联进一个 LED 灯加一个大于1k的电阻（防止 LED 灯电流过载而烧毁），如果空调应该处于制热模式，灯应该亮。&lt;/p&gt;    &lt;p&gt;这是树莓派的单元测试。&lt;/p&gt;    &lt;p&gt;注意：由于我们用到的 Relay 的开关和树莓派 GPIO 的输出是相反的，所以你在用 LED 灯测试时需要在      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//github.com/zhaozhichen/PyStat/blob/master/RaspberryPiManager.py%23L7" rel="nofollow noreferrer" target="_blank"&gt;这里&lt;/a&gt;&lt;/u&gt;将输出指令掉转过来。）&lt;/p&gt;    &lt;h2&gt;空调电路&lt;/h2&gt;    &lt;p&gt;尽量获得空调的手册（至少是比较接近的型号），了解遥控模式的使用方式。比如，这个是和我家空调型号比较接近的控制板布局（摘自      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=http%3A//islandaire.com/pdf/units/EZSeriesGSmanual.pdf" rel="nofollow noreferrer" target="_blank"&gt;手册&lt;/a&gt;&lt;/u&gt;）：&lt;/p&gt;    &lt;img src="data:image/svg+xml;utf8,&lt;svg%20xmlns='http://www.w3.org/2000/svg'%20width='781'%20height='867'&gt;&lt;/svg&gt;" width="781"&gt;&lt;/img&gt;    &lt;p&gt;注意 C、E、F 区。E 区中的 Remote 必须调至 ON，这意味着你将通过 C 区针脚操控空调，同时也意味着你放弃了控制面板的操作权。C 区的针脚布局如下：&lt;/p&gt;    &lt;img src="data:image/svg+xml;utf8,&lt;svg%20xmlns='http://www.w3.org/2000/svg'%20width='611'%20height='761'&gt;&lt;/svg&gt;" width="611"&gt;&lt;/img&gt;    &lt;p&gt;每个空调的布局不尽相同，但一般都至少含有 R、G、W、Y、C 五个接口。含义如下：&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;R：24伏高电位&lt;/li&gt;      &lt;li&gt;C：地线 Ground&lt;/li&gt;      &lt;li&gt;G：风扇&lt;/li&gt;      &lt;li&gt;W：制热&lt;/li&gt;      &lt;li&gt;Y：制冷&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;当 W 和 R 相连，W 就获得了高电位，制热模式开启。风扇和制冷同理。&lt;/p&gt;    &lt;p&gt;这种通用接口称为 Thermostats C Wire，可以参考      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//smartthermostatguide.com/thermostat-c-wire-explained/" rel="nofollow noreferrer" target="_blank"&gt;这篇介绍&lt;/a&gt;&lt;/u&gt;。&lt;/p&gt;    &lt;p&gt;在连入空调前，建议你先测试遥控模式下针脚是否工作正常。拿一根导线，将 R 和 G 连上，应该可以触发风扇工作。如果不行，将空调电源拔掉再接上试试。&lt;/p&gt;    &lt;p&gt;这是空调遥控模块的单元测试。&lt;/p&gt;    &lt;p&gt;注意，我们在树莓派上也连出五根线，分别对应以上五个接口。但是，树莓派的电位是3.3伏，而空调面板使用24伏，不能直接对接，需要用转换电压的 Relay，电路示意图如下（摘自      &lt;u&gt;        &lt;a href="http://link.zhihu.com/?target=https%3A//github.com/Willseph/RaspberryPiThermostat" rel="nofollow noreferrer" target="_blank"&gt;这里&lt;/a&gt;&lt;/u&gt;）：&lt;/p&gt;    &lt;img src="data:image/svg+xml;utf8,&lt;svg%20xmlns='http://www.w3.org/2000/svg'%20width='587'%20height='443'&gt;&lt;/svg&gt;" width="587"&gt;&lt;/img&gt;    &lt;p&gt;（空调地线不用接，因为它们最终连到同一个 Ground：地面——字面意思，非冷笑话。）&lt;/p&gt;    &lt;p&gt;实物图（我用的是8通道 Relay，其实只用了其中三个通道）：&lt;/p&gt;    &lt;img src="data:image/svg+xml;utf8,&lt;svg%20xmlns='http://www.w3.org/2000/svg'%20width='3264'%20height='2448'&gt;&lt;/svg&gt;" width="3264"&gt;&lt;/img&gt;    &lt;p&gt;最后，连入空调电路：&lt;/p&gt;    &lt;img src="data:image/svg+xml;utf8,&lt;svg%20xmlns='http://www.w3.org/2000/svg'%20width='3264'%20height='2448'&gt;&lt;/svg&gt;" width="3264"&gt;&lt;/img&gt;    &lt;p&gt;最后运行主程序，进行端到端成品测试（End to end test）。&lt;/p&gt;    &lt;p&gt;祝你成功！&lt;/p&gt;    &lt;h2&gt;后续&lt;/h2&gt;    &lt;p&gt;1，设置静态IP：&lt;/p&gt;    &lt;div&gt;      &lt;pre&gt;        &lt;code&gt;sudo vi /etc/dhcpcd.conf&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;p&gt;加上（第二行自选IP）：&lt;/p&gt;    &lt;div&gt;      &lt;pre&gt;        &lt;code&gt;interface wlan0
static ip_address=192.168.X.X/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;2，开机启动程序：&lt;/p&gt;    &lt;div&gt;      &lt;pre&gt;        &lt;code&gt;sudo crontab -e&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;p&gt;加上：&lt;/p&gt;    &lt;div&gt;      &lt;pre&gt;        &lt;code&gt;@reboot sh /home/pi/PyStat/launch.sh &amp;gt;/home/pi/logs/cronlog 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;3，我在做这个的过程中发现一个很棒的全栈方案，是下一个探索方向：&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;NodeMcu：客户端硬件；&lt;/li&gt;      &lt;li&gt;MQTT：通讯协议；&lt;/li&gt;      &lt;li&gt;Home Assistant：服务端控制平台。&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59172-%E6%89%8B%E6%9C%BA-%E6%8E%A7%E5%88%B6-%E7%A9%BA%E8%B0%83</guid>
      <pubDate>Fri, 04 Jan 2019 12:45:24 CST</pubDate>
    </item>
    <item>
      <title>预算不到2000元，该买什么手机？</title>
      <link>https://itindex.net/detail/59163-%E9%A2%84%E7%AE%97-%E6%89%8B%E6%9C%BA</link>
      <description>&lt;p&gt;真是没想到，2018就这样悄然过去了。&lt;/p&gt;
 &lt;p&gt;一年又一年，走得那么快，每次又走得那么急，你甚至都来不及拉住尾巴，它就已经变成朋友圈每一条略显做作的新年祝福，向你袭来。而元旦一过，就意味着农历新年也已经匆匆赶来，在即将到来的新年季里，你是不是已经做好让七大姑八大姨“指点江山”的准备呢？&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="rawpixel-445788-unsplash" height="444" src="https://file.evolife.cn/2019/01/rawpixel-445788-unsplash-666x444.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;对于已经年近30的我们来说，这只是每一年重复上演的喜剧；但那些刚刚踏入社会一年的大学生们，似乎还没有做好万全的准备来应对这一切。一年来你空空的钱包、毫无存在感的社会关系以及仍然形单影只的状态，每一点都足够让敏锐的亲戚们万分感兴趣，他们都已经等不及要摆起人生导师的姿态，来告诫你下一年“应该要怎么过！”&lt;/p&gt;
 &lt;p&gt;是的，每一部悲剧电影都会这么上演，而现实生活只能比电影更戏剧化。这往往会比你买不起的那只包包，或是去不起的那座南方小岛更容易令你心生恐惧。&lt;/p&gt;
 &lt;p&gt;但，哪怕是这样，我们仍然要认真过好每一天鸭！毕竟在即将到来的2019，依旧有春天落下的片片桃花、夏天吹过的凉爽晚风、秋天红了的一树枫叶以及冬天暖意正浓的城市街景，正是这些美好令我们能尽力地活着，侥幸地让自己在浩瀚的世界里虽渺小，但却不卑微地成为独一无二的存在！&lt;/p&gt;
 &lt;p&gt;在近期推出的智能手机里，也一定有那样一部，花费不高但又功能齐全，充满个性的新品，能满足你需求的同时，又能让年底不富裕的钱包增加更多负担！&lt;/p&gt;
 &lt;p&gt;有时候想一想，给自己添置一些新品，或许就已经是活下去最大的动力了！&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="steve-daniel-1220076-unsplash" height="444" src="https://file.evolife.cn/2019/01/steve-daniel-1220076-unsplash-666x444.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; &lt;h2&gt;诺基亚X7&lt;/h2&gt; &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;京东售价：1699元起&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;还记得在大学时情窦初开的深夜短信吗？还记得和好友分隔两地但却永远谈不完的蜜语吗？还记得想家时播出的一通通电话吗？这些都是人生中最好的回忆，而它们或许都与诺基亚有关。&lt;/p&gt;
 &lt;p&gt;因此，即便诺基亚已经不再是当年那个高不可攀的芬兰巨人，即便在同一价位仍然有许多功能相当、品牌溢价更高的产品存在，我们仍然会在心底给诺基亚的新品留有一席之地。这也是推荐诺基亚X7的原因之一。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="DSCF1098" height="444" src="https://file.evolife.cn/2018/10/DSCF1098-666x444.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;当然更为重要的是，诺基亚X7确实有超高的性价比，在1500元档位上，它搭载了准旗舰级的高通骁龙710处理器以及颇为主流的刘海全面屏设计，足够出色的LCD屏幕分辨率达到了FHD+级别，支持DCI-P3标准并覆盖有96%的NTSC色域。毫无疑问，这些硬件配置都足够在日常提供足够的动力，反正它已经能应付Android平台大大小小的游戏和应用需求。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="DSCF1123" height="444" src="https://file.evolife.cn/2018/10/DSCF1123-666x444.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;更为重要的是，买诺基亚X7还提供了卡尔蔡司认证的镜头模组，搭载1/2.55英寸索尼IMX363感光元件，这些都能让你在弱光下得到更好的照片质量。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="DSCF1111" height="444" src="https://file.evolife.cn/2018/10/DSCF1111-666x444.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; &lt;h2&gt;OPPO K1&lt;/h2&gt; &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;京东售价：1599元起&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;OPPO这两年的成长就像是前几年国潮们在国际时装周的昂首阔步，凭借一系列出色的旗舰新品，它已经摆脱了外界的固有偏见，成为了当之无愧的一线手机品牌。而在今年，除去顶尖的OPPO Find系列以及R系列外，OPPO K1也是一款受人瞩目的入门新品。&lt;/p&gt;
 &lt;p&gt;如果你预算不多，但却又想要体验新鲜的屏下指纹功能，那么OPPO K1或许会是你最好的选择——毕竟当前它仍然是售价最为低廉的屏下指纹功能手机。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="ULU35LiaHeIHg5CFEMgRf5jThQQNYdZW1COEC8AD2NYaN1539763113524" height="435" src="https://file.evolife.cn/2019/01/ULU35LiaHeIHg5CFEMgRf5jThQQNYdZW1COEC8AD2NYaN1539763113524.jpg" width="640"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;事实上OPPO K1的大多设计融合了OPPO R15和OPPO R17的元素，比如它具备更为时髦的水滴屏幕，正面依旧是高屏占比的设计；但机身背后却延续了R15的渐变风格，蓝紫色渐变显得多彩且不单调。&lt;/p&gt;
 &lt;p&gt;核心配置方面，OPPO K1具备高通骁龙660处理器，它距离高通骁龙710而言性能或许不算突出，但经过了一年多的优化，这颗SoC也已经能够流畅运行当下大多主流游戏和应用，至少当前它不会成为你使用手机时最大的瓶颈。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="1669b9d0f0864d6abada85cf580c839f" height="374" src="https://file.evolife.cn/2019/01/1669b9d0f0864d6abada85cf580c839f-666x374.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; &lt;h2&gt;vivo Z3&lt;/h2&gt; &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;京东售价：1598元起&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;和OPPO K1一样，vivo的品牌也大有崛起之势，近几年成功的产品比比皆是。而vivo Z系列正是vivo针对电商平台推出的全新系列，经过了Z1、Z1i以及Z3i的成功积累后，全新的vivo Z3显得更是诚意十足，如果你预算不多但又希望有一台品质出众、性能表现卓越的新品，那么vivo Z3无疑是一个不错的选择。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="QQ&amp;#25130;&amp;#22270;20181017111717" height="433" src="https://file.evolife.cn/2018/10/QQ&amp;#25130;&amp;#22270;20181017111717-666x433.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;作为最大的卖点，vivo Z3搭载了一颗性能卓越的高通骁龙710处理器，这意味着应对大多数游戏和任务时，Z3会比前代产品更游刃有余。同时，vivo Z3也和OPPO K1一样，选择了一块主流用户会喜欢的水滴显示屏，高屏占比的设计沿用了vivo X23的元素，或许不算特别惊艳，但足够经得起长时间的考验。&lt;/p&gt;
 &lt;p&gt;不过vivo Z3分为不同的硬件平台，它们售价各不相同。最基础的4GB+64GB版本配备了高通骁龙660处理器，而从6GB + 64GB版本开始，采用的才是高通骁龙710处理器，对于想要购买的用户而言，千万不要搞错这一点哦。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="QQ&amp;#25130;&amp;#22270;20181017111634" height="388" src="https://file.evolife.cn/2018/10/QQ&amp;#25130;&amp;#22270;20181017111634-666x388.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; &lt;h2&gt;小米Play&lt;/h2&gt; &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;京东售价：1099元起&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;枯藤老树昏鸦，Wifi冰箱沙发——这就是年轻人夏天的写照，虽然多少显得有些夸张，但对于普通人而言，一条无时无刻可用的告诉网络的确是连接现代社会的重要纽带，离了它哪怕只有一分一秒，可能都让人感到窒息。&lt;/p&gt;
 &lt;p&gt;小米Play的营销策略无疑其中的“套路”——随机配送了一张小米自家的手机卡，白送一年无限流量套餐。这意味着买了它之后，你无需再忍受公共免费Wifi的低速和拥挤，随时随地都可以享受到4G LTE网络的便捷。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="QQ&amp;#25130;&amp;#22270;20181224182845" height="424" src="https://file.evolife.cn/2018/12/QQ&amp;#25130;&amp;#22270;20181224182845-666x424.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;剔除这一点外，小米Play能为人称道的特点并不算多，它采用了一块5.84英寸19:9比例FHD+分辨率显示屏，核心硬件采用了12nm搭载的联发科Helio P35处理器，其采用了八核心Cortex-A53，最高主频为2.3GHz。小米承诺，Helio P35能够实现CPU以及GPU双Turbo动态加速，它的整体性能将会超越高通骁龙625平台。此外，小米Play也将采用1200万像素+200万像素AI双摄像头以及800万像素前置摄像头；3000mAh容量电池。&lt;/p&gt;
 &lt;p&gt;因此，相较于其他竞品来说，小米Play能让人心动的似乎只有那一句——“一年流量免费用，手机就像不要钱”。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="QQ&amp;#25130;&amp;#22270;20181224182809" height="458" src="https://file.evolife.cn/2018/12/QQ&amp;#25130;&amp;#22270;20181224182809-666x458.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; &lt;h2&gt;联想Z5s&lt;/h2&gt; &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;京东售价：1398元起&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;虽然联想碰瓷式的营销手法令人感觉不适，但不得不承认的是，相较往年而言，2018下半年开始联想的产品的确有着足够的竞争力。比如在2018年底推出的Z5s，就彻底将“性价比”做到了极致——它是当前售价最为便宜的高通骁龙710平台的手机。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="P1360107" height="445" src="https://file.evolife.cn/2018/12/P1360107-666x445.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;从各方面来看，联想Z5s都是一台追求“主流”的手机，和前文介绍的四台产品一样，它也选择了异形切割屏幕，整体屏占比达到了92.6%；同时，联想也选择了星空灰、酞晶蓝、珊瑚橙，而瑚橙正好是今年潘通的流行色。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="P1360062" height="445" src="https://file.evolife.cn/2018/12/P1360062-666x445.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;同时，Z5s也是联想手机首款搭载三摄像头的产品，它采用了1600万像素的主摄像头、800万像素的无损变焦摄像头以及500万像素的虚化摄像头，三摄像头的组合能实现2x无损变焦以及更好的虚化效果。&lt;/p&gt;
 &lt;p&gt;最令人不能拒绝的或许是联想Z5s的售价，只要1398元起售的价格让一切所谓的“缺点”都变得无足轻重，毕竟近期你再也找不到一台配置与它相同，但售价比它更过硬的新品了。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="P1360039" height="445" src="https://file.evolife.cn/2018/12/P1360039-666x445.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; &lt;h2&gt;魅族16X&lt;/h2&gt; &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;京东售价：1798元起&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;在2000元以下，魅族16X的高品质毋庸置疑，它没有像主流的产品那样拥抱异形切割屏幕，而是固执的选择了一块对称式的AMOLED显示屏，这也意味着魅族16X不会让任何处女座抓狂。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="DSCF0277" height="444" src="https://file.evolife.cn/2018/09/DSCF0277-666x444.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;更为重要的是，魅族16X几乎沿用了魅族16th的所有优点，比如屏下指纹传感器、IMX380感光元件以及小型化的前置传感器阵列，这一切的一切只为让手机在满足轻薄的同时，又不会背离普通人的使用习惯。魅族16X在核心处理器上选择了高通骁龙710平台，这是一个明智之选，毕竟在2000元档位，这已经是你能买到性能最强的产品。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="DSCF0268" height="444" src="https://file.evolife.cn/2018/09/DSCF0268-666x444.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;在刚刚上市时，魅族16X售价超过2000元，但在近期魅族进行了价格调整，现在只要1798元起就能够购买到这一系列，毫无疑问这一举措也令魅族16X的性价比显得更为突出。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="DSCF0274" height="444" src="https://file.evolife.cn/2018/09/DSCF0274-666x444.jpg" width="666"&gt;&lt;/img&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59163-%E9%A2%84%E7%AE%97-%E6%89%8B%E6%9C%BA</guid>
      <pubDate>Wed, 02 Jan 2019 15:50:28 CST</pubDate>
    </item>
  </channel>
</rss>

