Prototype 摘抄自 Pro.Objective-C.Design.Patterns.for.iOS

Back in the old days when printing wasn’t common, people used to use some sort of wooden stamps (later they became rubber stamps) to print some commonly used graphics and text on paper. Many ye...

发布于 iOS

Wi-Fi定位原理

Wi-Fi能够对用户进行定位。因为在Android、iOS和Windows Phone这些手机操作系统中内置了位置服务,由于每一个Wi-Fi热点都有一个独一无二的Mac地址,智能手机开启Wi-Fi后就会自动扫描附近热点并上传其位置信息,这样就建立了一个庞大的热点位置数据库。这个数据库是对用户进行定位的关键。如果你的智能手机连接上了某个Wi-Fi热点,那么就可以调用数据库中附近所有热点的地理位置信息,而服务器会参考每个热点的信号强弱计算出设备的大致地理位置.下面就一起来看看手机是如何通过wifi定位的? 一、Wi-Fi定位的原理 具体来说,Wi-Fi能够定位,原理是这样的: 1、每一个无线AP(路由器)都有一个全球唯一的MAC地址,并且一般来说无线AP在一段时间内不会移动; 2、设备在开启Wi-Fi的情况下,即可扫描并收集周围的AP信号,无论是否加密,是否已连接,甚至信号强度不足以显示在无线信号列表中,都可以获取到AP广播出来的MAC地址; 3、设备将这些能够标示AP的数据发送到位置服务器,服务器检索出每一个AP的地理位置,并结合每个信号的强弱程度,计算出设备的地理位置并返回到用户设备; 4、位置服务商要不断更新、补充自己的数据库,以保证数据的准确性。 二、位置服务数据库的搭建 数据库中的数据主要来自于两个方面,一是用户提交的数据。Android手机用户在开启“使用无线网络定位”时会提示是否允许使用Google的定位服务,如果允许,用户的位置信息就被谷歌收集到。iPhone则会自动收集Wi-Fi的MAC地址、GPS位置信息、运营商基站编码等,并发送给苹果公司的服务器。 同时谷歌、Skyhook两家位置服务提供商也在主动搜集Wi-Fi等热点的位置信息。Google的街景拍摄车有一个重要的功能就是采集沿途的无线信号,并打上通过GPS定位出的坐标回传至服务器。Skyhook在美国及欧洲一些国家也是直接开着信号采集车采集AP和基站的信号数据。 三、如何防止被定位? 最直接的办法是关掉手机系统中的位置服务选项,以避免他人看到你的位置信息。 如果要杜绝位置服务商获取数据,难度就会比较高。用户需要不连接任何Wi-Fi热点,并且不使用相关的位置服务。也可以使用某些工具。例如谷歌曾发布一款选择退出工具,让无线路由器用户有效阻止谷歌搜集他们的数据。  

发布于 计算机科普级别

Objective-C限定词 (摘抄自Objective-C程序设计第六版)

long如果直接把限定词long放在int声明之前,那么所声明的整型变量在某些计算机上具有扩展的值域。一个long int声明的例子为:      long int factorial;      这条语句将变量factorial声明为long的整型变量,也就是长整型。就象float和double变量一样,long变量的具体精度是由具体的计算机系统决定的。 在许多系统上,int与long i...

发布于 iOS

内部排序和外部排序

外排序外排序(External sorting)是指能够处理极大量数据的排序算法。通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是一种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到一个临时文件,依此进行,将待排序数据组织为多个有序的临时文件。尔后在归并阶段将这些临时文件组合为一个大的有序文件,也即排序结果...

发布于 计算机科普级别

哈希排序

第一部分:Top K 算法详解问题描述百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。) 请你统计最热门的10个查询串,要求使用的内存不能超过1G。 必备知识: 什么...

发布于 计算机科普级别

加密安全大补药

Base64 编码 Base 64 编码后的结果能够反算,非常不安全。 用 base64 编码之后,结果会变大,增加了约 1/3。 用 base64 编码的结果有非常明显的特点,末尾有 = 。 对称算法 算法公开、计算量小、加密速度快、加密效率高,可以对大数据进行加密。 双方使用相同钥匙,安全性得不到保证。秘钥的安全性非常重要,普遍采用的方法是使用 RSA 的加密算...

发布于 计算机科普级别

关于Runtime的两个用处

iOS开发人员都知道Runtine是比较底层的东西,平时用得少,但是一旦用起来,威力是巨大的,常常有四两拨千斤的用处。 Runtime是什么 运行时刻是指一个程序在运行(或者在被执行)的状态。也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻。在一些编程语言中,把某些可以重用的程序或者实例打包或者重建成为“运行库”。这些实例可以在它们运行的时候被连接或者被任何程序调用...

发布于 iOS

查缺补漏 2017.04.11

C++与多态性与虚函数多态与非多态的实质区别就是函数地址是早绑定还是晚绑定。如果函数的调用,在编译器编译期间就可以确定函数的调用地址,并生产代码,是静态的,就是说地址是早绑定的。而如果函数调用的地址不能在编译器期间确定,需要在运行时才确定,这就属于晚绑定。那么多态的作用是什么呢,封装可以使得代码模块化,继承可以扩展已存在的代码,他们的目的都是为了代码重用。而多态的目的则是为了接口重用。也就是...

发布于 计算机科普级别

node.js express框架笔记(1)

请求和响应Express 应用使用回调函数的参数: request 和 response 对象来处理请求和响应的数据。 app.get('/', function (req, res) { // -- }) request 和 response 对象的具体介绍: Request 对象 - request 对象表示 HTTP 请求,包含了请求查询字符串,参数,内容,HTTP 头部等属性。...

发布于 JavaScript

Python命名规则(转)

模块名:小写字母,单词之间用_分割参考Python:logging 包名:小写字母,单词之间用_分割参考python:logging 类名:单词首字母大写参考:python class LogRecord(object): 普通变量:小写字母,单词之间用_分割参考:exc_info 实例变量:以_开头,小写字母,单词之间用_分割参考:_exc_info以一个下划线开头的标识符(_xxx),不...

发布于 Python
411

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @shyiuanchen 创建,使用 Stellar 作为主题。