iOS对AFNetworking的二次封装
AFNetworking是一个很好用的网络请求的第三方库,它的很多方法已经封装的很好了,但是做项目的时候,总是有情况需要对网络进行统一处理,比如缓存策略,重复请求管理功能,这些AFN都没有提供直接的方法,比如每次请求回来,都可能存在异常,我们肯定不能在每个请求里都加判断,所以就基于AFNetworking之上做一层封装,向业务层更加友好
首先建一个子类,继承自AFNetworking中的AFHTTPSessionManager类,这个类主要用来处理网络请求
因为真个程序中只需要存在一个AFHTTPSessionManager的子类SPHTTPManager,所以将SP
然后我们需要根据自身需求封装一些工程需要的功能,比如一般都需要用到的post和get请求,我们需要在请求成功的时候对返回的数据进行一些处理,失败的时候对错误信息进行统一处理,所以我们就需要在方法中加入相应的程序
1.post方法
2.get方法
实现子div水平居中显示
2018-12-13 dingshangchao CSS样式表
实现子div水平居中显示,实现图示效果Android 录音详解(四)—— 录音添加背景音乐
2018-12-10 liuyingcong 安卓开发
K歌类 APP 都是在录音的基础上与伴奏音乐合并,组成一首曲目:
今天就讲一讲把 mp3 格式的背景音乐解码,与录音合并,并最终输出 mp3 格式的文件。注意是实时的哦,即边录音边解码边合成,录音结束即合并结束:
关闭WPS热点及广告的方法
WPS可以兼容微软Office多种格式文档,可以免费使用,但其推广广告和热点功能让人很烦,其实WPS是可以关闭广告和热点推送的 ...thinkphp5.1的门面模式(Facade)
thinkphp5.1的门面模式(Facade)docker基本命令
2018-12-7 dingshangchao 服务器
docker pull 获取imagedocker build 创建image
docker images 列出images
docker run 运行container
docker ps 列举当前运行的container
docker ps -a 列举所有的container
docker rm 删除container
docker rmi 删除image
docker cp 在host和container之间拷贝文件
docker commit 保存改动为新的image
php上传大文件时需要修改配置
2018-12-7 dingshangchao php开发
php.ini中,意义如英文名
1. upload_max_filesize
2. memory_limit
3. post_max_size
4. max_execution_time
iOS预编译文件设置以及常用宏记录
创建一个iOS工程的时候,为了方便,我们一般会设置大量的宏,宏我们一般会写在一个.pch文件中,然后我们需要将.pch文件的路径在工程中设置一下,以达到预编译的作用
方法一:
在Finder中找到pch文件后,直接拖到这里:Build Settings ->Apple LLVM7.0 - Language -> Prefix Header。这样设置的话,就将pch文件的位置固定了,如果将工程换个位置,就找不到pch文件了
方法二:
在Finder中找到pch文件后,直接拖到这里,别停下,还没有结束,将前面的内容删除,只留下pch名字,还有上一层的名字,然后在最前面加上$(SRCROOT),然后就结束了
例子:$(SRCROOT)/ruanjian/PrefixHeader.pch
这样的好处就是,不管你把工程移动到哪里,都可以找到pch文件
下面是一些工程中常用的宏整理:
1.屏幕宽度 #define SPScreen_W [UIScreen mainScreen].bounds.size.width
2.屏幕高度 #define SPScreen_H [UIScreen mainScreen].bounds.size.height
3.导航栏高度 #define TOP_H (SPScreen_H == 812.0?44.0f:20.0f)
4.颜色RGB #define SPRGBColor(R,G,B,A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
5.控件位置 #define SPFrame(X,Y,W,H) CGRectMake(X,Y,W,H)
6.参照元素底部位置 #define SPGetMaxY(view) CGRectMaxY(view.frame)
7.参照元素宽度位置 #define SPGetMaxX(view.frame)
8.参照元素宽 #define SPGetWidth(view) view.frame.size.width
9.参照元素高 #define SPGetHeight(view) view.frame.size.height
10.点位置 #define SPPoint(X,y) CGPointMake(X,Y)
11.AppDelegate单例 #define SPAppDelegate ((AppDelegate*)[UIApplication sharedApplication].delegate)
12.NSUserDefaults存储数据 #define SPSetDefaults(value,key) [[NSUserDefaults standardUserDefaults] setObject:value forKey:key]
13.NSUserDefaults读取数据 #define SPReadDefaults(key) [[NSUserDefaults standardUserDefaults] objectForKey:key]
14.沙盒地址 #define SPDefaultPath NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDOmainMask,YES)[0]
15.block弱引用 #define SPSelf __weak typeof(self) weakSelf = self
16.字体大小设置 #define SPFont(n) [UIFont systemFontOfSize:n]
vue组件之间的参数传递
vue组件之间的参数传递是vue的重点之一。主要分为:标签: vue组件
Android 录音详解(三)—— 音频解码
2018-12-5 liuyingcong 安卓开发
想要转换音频格式(如 mp3格式转 wav格式)或者添加背景音乐,都需要解码声音文件,今天就来讲一讲解码的实现:
幸运的是 Android SDK 中提供了解码的 API,它就是 MediaCodec,也就是音频解码器,我们用它实现 mp3格式音频的解码:
标签: Android 音频解码 MediaCodec