RICHIE


  • 首页

  • 归档

  • 分类

  • 标签

GCD QUEUE

发表于 2018-05-24 | 分类于 原创

同步串行队列、异步串行队列和同步并行队列都只创建一个线程,而异步并行队列则创建多个线程。

阅读全文 »

iOS 知识点整理

发表于 2018-05-23 | 分类于 原创

iOS App 安全

本地数据安全

  • 对于主动存储在app内的重要的、有价值的、涉及隐私的信息需要加密处理,增加攻击者破解难度。
  • 对于一些非主动的存储行为如网络缓存,涉及重要信息,做到用完即删。
  • Sqlite敏感数据要么对数据加密(优:使用简单,无需三方库支持;缺:每次存储都有加密解密过程,增加APP资源消耗),要么对整库加密(优:对数据库整体操作,减少资源消耗。缺:需要使用第三库),如SQLCipher
  • KeyChain数据的读取。Keychain是一个拥有有限访问权限的SQLite数据库(AES256加密),可以为多种应用程序或网络服务存储少量的敏感数据(如用户名、密码、加密密钥等)。可以在越狱的设备上使用keychain_dumper来解密。
  • 剪切板的缓存要及时清理

网络请求使用https,防止http劫持或使用httpdns

尽量使用WKWebView代替UIWebView

加大反编译的难度

  • 字符串加密
  • 类名方法名混淆
  • 反调试

防止抓包

  • 判断是否设置了代理
  • 数据加密

断点续传怎么实现?需要设置什么?

所谓断点续传,就是要从文件已经下载的地方开始继续下载。所以在客户端/浏览器传给Web服务器的时候要多加一条信息–从哪里开始。下面是用自己编的一个”浏览器”来传递请求信息给Web服务器,要求从2000070字节开始。

GET /down.zip HTTP/1.1
User-Agent: NetFox
RANGE: bytes=2000070-
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

仔细看一下就会发现多了一行RANGE: bytes=2000070-这一行的意思就是告诉服务器down.zip这个文件从2000070字节开始传,前面的字节不用传了。服务器收到这个请求以后,返回的信息如下:

206
Content-Length=106786028
Content-Range=bytes 2000070-106786027/106786028
Date=Mon, 30 Apr 2001 12:55:20 GMT
ETag=W/"02ca57e173c11:95b"
Content-Type=application/octet-stream
Server=Microsoft-IIS/5.0
Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT

和前面服务器返回的信息比较一下,就会发现增加了一行:Content-Range=bytes 2000070-106786027/106786028返回的代码也改为206了,而不再是200了。

阅读全文 »

iOS App启动过程

发表于 2018-05-17 | 分类于 原创

Mach-O


阅读全文 »

iOS SnapKit源码解析

发表于 2018-05-09 | 分类于 原创

iOS布局从Frame到Autosizing,再到Autolayout。Storyboard上使用Autolayout对于层级不深的页面来说比较方便,大大提升了开发速度,但App体积也会增加不少,用代码写Autolayout就不是那么方便了。如

阅读全文 »

Today Extension和3D Touch

发表于 2018-04-13 | 分类于 原创

Today Extension

1.点击文件,选择如下图


阅读全文 »

iOS app进入后台毛玻璃效果

发表于 2018-03-27 | 分类于 笔记

直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
func applicationDidBecomeActive(_ application: UIApplication) {
if let visualEffectView = self.visualEffectView {
UIView.animate(withDuration: 0.5, animations: {
visualEffectView.alpha = 0
}, completion: { (_) in
visualEffectView.removeFromSuperview()
})
}
}

weak var visualEffectView: UIVisualEffectView?
func applicationWillResignActive(_ application: UIApplication) {
let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
let visualEffectView = UIVisualEffectView(effect: blurEffect)
visualEffectView.alpha = 0
visualEffectView.frame = self.window?.frame ?? CGRect.zero
self.window?.addSubview(visualEffectView)
self.visualEffectView = visualEffectView
UIView.animate(withDuration: 0.5) {
visualEffectView.alpha = 1
}
}

MySQL创建数据库与创建用户以及授权

发表于 2018-03-27 | 分类于 笔记
  1. create schema [数据库名称] default character set utf8 collate utf8_general_ci;–创建数据库

      采用create schema和create database创建数据库的效果一样。
  2. create user ‘[用户名称]‘@’%’ identified by ‘[用户密码]’;–创建用户

      密码8位以上,包括:大写字母、小写字母、数字、特殊字符

      %:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘
  3. grant select,insert,update,delete,create on [数据库名称]. to [用户名称];–用户授权数据库
      
    代表整个数据库
  4. flush privileges ;–立即启用修改
  5. revoke all on . from tester;–取消用户所有数据库(表)的所有权限
  6. delete from mysql.user where user=’tester’;–删除用户
  7. drop database [schema名称|数据库名称];–删除数据库

macOS使用OpenSSL生成 RSA公钥与私钥

发表于 2018-03-27 | 分类于 笔记

macOS自带openssl环境,不用安装,直接使用openssl就可以


打开终端,进入到即将生成密钥文件的目录下,然后输入命令:

1
2
3
4
5
openssl
genrsa -out rsa_private_key.pem #2048生成私钥
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem #将私钥转换成PKCS8格式
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem #生成公钥
exit #退出

搭建memcached服务器

发表于 2018-03-27 | 分类于 笔记

安装 libevent

1
2
3
tar -zxvf libevent-2.1.8-stable.tar.gz
./configure --prefix=/usr/libevent
make && make install

安装 memcached

1
2
3
4
5
curl http://memcached.org/files/memcached-1.5.1.tar.gz -o memcached-1.5.1.tar.gz
tar -zxvf memcached-1.5.1.tar.gz
./configure --prefix=/usr/memcached --with-libevent=/usr/libevent
make && make install
./memcached -u root -d -p 11211

开放端口

1
2
3
firewall-cmd --zone=public --add-port=11211/tcp --permanent
firewall-cmd --zone=public --add-port=11211/udp --permanent
firewall-cmd --reload

搭建redis服务器

发表于 2018-03-27 | 分类于 笔记

安装 EPEL 源

1
2
3
yum install epel-release
yum -y install yum-utils
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional

安装C

1
yum install gcc

安装Redis

1
2
3
4
5
6
curl http://download.redis.io/releases/redis-4.0.1.tar.gz -o redis-4.0.1.tar.gz
tar xzf redis-4.0.1.tar.gz
cd redis-4.0.1
make MALLOC=libc

./redis-server ./redis.conf
阅读全文 »
123
Richie Zhang

Richie Zhang

23 日志
2 分类
5 标签
E-Mail
© 2018 — 2019 Richie Zhang