- 博客(90)
- 收藏
- 关注
原创 设计模式总结
一、单例模式该模式的特点是类加载时没有生成单例,只有当第一次调用 getlnstance 方法时才去创建这个单例。单例模式有如下特点:单例类只有一个实例对象; 该单例对象必须由单例类自行创建; 单例类对外提供一个访问该单例的全局访问点代码如下:1、懒汉式public class Person{ private static volatile Person instance = null; private Person(){}; //私有的空参构造器,避免外部调用
2021-07-06 18:30:36
217
原创 Jmeter基本使用--03组件执行顺序
一、Jmeter中的控件1、sampler采样器:用来发送请求2、计时器3、前置处理器(pre-processors)和后置处理器(post-processors):在采样器存在的情况下才是有效的,可以拿到响应中的一些结果4、Jmeter中的断言:用来判断响应的结果是否正确5、Jmeter中的Controller:控制脚本的结构,while循环,if Controller,etc6、Jmeter中的Listener:查看结果树,可以添加多个7、配置原件二、组件的作用域Listener:不
2020-06-26 18:29:21
277
1
原创 Jmeter基本使用02
一、Test Plan (测试计划)Name:名字,随便填就好Comments:描述,随便填就好User Defined Variable:用户定义变量,可以定义一些变量,方便使用二、线程组Thread:线程组
2020-05-31 16:28:09
216
原创 gerrit使用
前提条件是电脑上安装了git安装git教程可自行百度安装好了git之后,在开始菜单里打开git bash如下图所示,说明git安装成功了STEP1:生成SSH KEY并添加到远程仓库账号中依次执行以下命令:1.1 将邮箱替换成你自己的邮箱$ ssh-keygen -t rsa -b 4096 -C "wangliyuan@lixiang.com"1.2>Generating public/private rsa key pair.1.3 提示您“Enter a file in
2020-05-26 11:00:03
1691
原创 git基本指令
初始化一个git项目:(1)新建一个空目录(2)git init添加文件:(1)git add 文件名1 文件名2(2)git commit -m “描述”查看git提交记录:git log回退到上一个版本:git reset --hard HEAD^ (HEAD是上一个版本,HEAD^是上上一个版本)查看git的每一次命令:git refloggit工作区和暂存区的关系:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多
2020-05-26 08:54:18
119
原创 Airtest基本使用
一、Airtest相关介绍Airtest一共给我们提供了两个库,分别是Airtest和Poco库,这两个库都是Python的第三方库,所以这两个库都是基于Python语言编写的。因此,在做UI自动化时,可以根据需要自由的引入其它的Python第三方库。也可以这两种库同时使用。二、Airtest和Poco的区别Airtest框架基于图像识别,写脚本的时候直接拖动我们需要对比的图像进入即刻,比较适合做一些简单的界面识别操作。Poco框架则是基于UI控件搜索,写脚本时是完全基于UI控件的,可以做一些更复杂
2020-05-22 18:04:15
817
原创 jmeter入门01
一、Jmeter特点(1)开源趋势(2)性能测试工具(LoadRunner VS Jmeter)(3)Jmeter自身的特点a.开源、轻量级、更适合自动化和持续集成b.学习难度大c.资料少、全英文二、性能测试工具的选型原则一般来说,我们在选择工具时一般遵循以下几个原则:成本a.学习成本b.工具成本通信协议 (非常关键)a.标准协议b.自由协议生命力a.更新迭代速度b.长期维护c.社区人数跨平台官网:https://jmeter.apache.org/i
2020-05-19 22:17:34
141
原创 Postman基本使用
接口测试基本流程1. 获取接口信息 通过接口文档或抓包来获取接口的基本调用方式和返回2. 接口测试用例设计 根据获取到的接口信息,按照接口测试用例设计方法,设计 参数和预期返回结果3. 接口发包 使用工具或者编程向接口传递参数4. 返回信息验证 获取接口返回结果,进行解析和验证Postman测试的四大要素URL方法Header信息...
2020-04-06 17:29:01
130
原创 swift
swift中用let定义常量,定义之后不可以修改swift中用var定义变量,定义之后不可修改在使用当中,建议先定义常量,如果需要修改再定义为变量let a: Int = 10 //本质上保存的是一个内存地址//创建一个常量对象let view : UIView = UIView(); //创建对象//可以修改view的属性view.backgroundColor = UIC...
2020-02-24 13:37:38
145
原创 移动端热门跨平台方案对比
WEEX:WEEX是由阿里巴巴研发的一套移动平台技术框架,最初是为了解决移动开发过程中频繁发版和多端研发的问题而开发的,使用WEEX提供的跨平台技术,开发者可以很方便地使用web技术来构建具有可扩展性的原生性能体验的应用,并支持在Android,iOS,和WEB等多平台上 部署。具体来说,当在项目中集成WeexSDK之后,就可以使用JS和主流前端框架来开发移动应用。同时,WEEX框架的结构是解...
2020-02-24 10:29:03
1037
原创 UITabBarViewController的基本使用
UITabBarController的基本使用初始化UITabBarController设置UIWindow的rootViewController为UITabBarController根据具体情况,通过addChildViewController方法添加对应个数的子控制器UITabBarViewController添加子控制器的方法//添加单个子控制器-(void)addChildVi...
2020-02-22 18:17:05
537
原创 通知机制
通知的发布:通知中心:NSNotificationCenter每一个应用程序都有一个通知中心对象,程序一启动就会有一个通知中心对象。专门负责不同对象之间的消息传递一个完整的通知一般包含3个属性-(NSString *)name; //通知的名称-(id)object; //通知的发布者-(NSDictionary *)userInfo; //通知发...
2020-02-20 15:28:10
170
原创 父子控制器
多控制器管理UINavigationControllerUITabBarController父子控制器模仿上述两种控制器-(IBAction)clickScoiety:(id)sender{ /*1.控制器每次都创建2.控制器的view每次都加上去,点一下添加一次3.控制器的view不能处理业务逻辑,控制器是局部变量这里为什么view在,viewController却不...
2020-02-18 16:57:44
187
原创 super,class,superClass区别
-(void)test{ //获取当前方法调用者的类 NSLog(@"%@",[self class]); //当前方法调用者的父类 NSLog(@"%@",[self superclass]); //super:是一个编译指示器,就是给编译器看的,不是一个指针 //只要编译器看到这个标志,就会让当前对象去调用父类的方法,本质还是当前对象在调...
2020-02-18 13:21:36
1481
原创 runtime
一、什么是RunTime?RunTime简称运行时,OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的就是消息机制。对于C语言来说,函数的调用在编译的时候回决定调用哪个函数。对于OC来说,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。事实证明:在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要生命...
2020-02-17 16:28:17
104
原创 常见关键字使用
nullable:作用:可能为空,提示属性可能为空,为了迎合swift(强语言)好处:提高代码规范,减少沟通成本用法:可用于修饰属性,参数和返回值语法:@property(nonatomic,strong,nullable) NSString *name语法2:@property(nonatomic,strong) NSString * _Nullable name语法2:@prope...
2020-02-17 11:37:25
171
原创 HTTPS请求
需要设置代理//这个方法如果是http的请求并不会被调用,只有是https的请求才会调用- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionH...
2020-02-16 17:51:49
262
原创 AFNetworking使用
AFN基本使用GET请求:-(void)get1{ // 1.创建AFHTTPSessionManager管理者 // AFHTTPSessionManager内部是基于NSURLSession实现的 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // 2.发送请求 N...
2020-02-16 16:22:18
1552
原创 UIWebView使用
什么是UIWebView?UIWebView是iOS内置的浏览器控制常用方法@property(weak,nonatomic) IBOutlet UIWebView *webView;-(void)viewDidLoad{ [super viewDidLoad]; }-(void)test{ //加载网页 [self.webView loadRequest...
2020-02-16 14:12:09
273
原创 NSURLSession
一.为什么要使用NSURLSession来替换NSURLConnection1.在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作。2.NSURLSession的优势:NSURLSession支持http2.0协议处理下载任务的时候可以直接把数据下载到磁盘中支持后台下载和上传同一...
2020-02-16 13:12:19
144
原创 NSURLConnection
iOS中发送HTTP请求的方案1.苹果原生NSURLConnection:用法简单,最古老最经典的一种方案(坑比较多)NSURLSession:功能比NSURLConnection更加强大,苹果目前笔记推荐使用的技术(2013年推出)CFNetwork:纯C语言2.第三方框架ASIHttpRequest:早已停止更新AFNetworking:简单易用,提供了基本够用的常用功能,维护和...
2020-02-15 23:22:20
2113
原创 Runloop
Runloop是什么运行循环基本作用:保持程序的持续运行处理App中的各种事件(比如触摸事件,定时器事件,Selector事件)节省CPU资源,提高程序性能,该做事时做事,该休息时休息在UIApplicationMain中开启一个Runloop,其实Runloop就是一个死循环这个默认启动的Runloop是根主线程相关的。<Foundation框架>CFRunloop...
2020-02-15 11:28:09
82
原创 位移枚举
枚举写法1:typedef enum{ EAST, SOURTH;}LOCATION枚举写法2:可以定义类型typedef NS_ENUM(NSInteger,NSInteger){ UP, TOP,};枚举写法3:位移枚举typedef NS_OPTION(NSInteger,NSInteger){ UP = 1 <<0 //左移1...
2020-02-14 15:54:54
244
原创 NSCache的使用
本篇文章首先会详细讲解NSCache的基本使用,NSCache是Foundation框架提供的缓存类的实现,使用方式类似于可变字典,由于NSMutableDictionary的存在,很多人在实现缓存时都会使用可变字典,但NSCache在实现缓存功能时比可变字典更方便,最重要的是它是线程安全的,而NSMutableDictionary不是线程安全的,在多线程环境下使用NSCache是更好的选择。接着...
2020-02-14 15:30:51
471
原创 单例模式
作用:可以保证在程序运行过程中,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并节约了系统资源ARC模式下实现单例模式//关键在于只分配一块存储空间@implementation Personstatic Person *_instance;+(instancetype)allocWithZone:(struct _NSZone *)zone{ @sy...
2020-02-13 13:59:31
115
原创 多线程在iOS开发中的应用
什么是主线程?一个iOS程序运行之后,会默认开启一个线程,这个线程就叫做“主线程”或“UI线程”主线程的主要作用:显示/刷新UI界面处理UI事件(比如点击事件,滚动事件,拖拽事件等)主线程的使用注意:别将耗时操作放到主线程中耗时操作会卡住主线程,如果将耗时操作放到主线程上,那么只能等耗时操作执行完了之后,才会响应事件。正确的做法:开启一个子线程,将耗时操作放在子线程(后台线程,非...
2020-02-11 20:53:36
232
原创 线程和进程
进程:什么是进程?进程是指在系统中正在运行的一个应用程序比如同时打开迅雷,Xcode,系统就会分别启动2个进程一个应用程序可以对应多个进程线程什么是线程?1个进程要想执行任务,必须得有线程(每一个进程至少要有1个线程)1个进程(程序)的所有任务都在线程中执行比如使用酷狗播放音乐,使用迅雷下载电影,都需要在线程中执行线程的串行1个线程中任务的执行是串行的如果要在1个线程中执行...
2020-02-11 14:57:04
355
原创 控制器View的生命周期
1. viewDidLoad当loadView将view载入内存中,会进一步调用viewDidLoad方法来进行进一步设置。此时,视图层次已经放到内存中,通常,我们对于各种初始化数据的载入,初始设定、修改约束、移除视图等很多操作都可以这个方法中实现。视图层次(view hierachy):因为每个视图都有自己的子视图,这个视图层次其实也可以理解为一颗树状的数据结构。而树的根节点,也就是根视图...
2020-02-11 11:17:26
111
原创 多控制器开发UINavigationController
多控制开发一个iOS的app很少只由一个控制器组成,除非这个app及其简单当app中有多个控制器的时候,我们就要对这些控制器进行管理有多个view时,可以用一个大的view去管理1个或者多个小view控制器也是如此,用1个控制器去管理其它多个控制器比如,用1个控制器A去管理3个控制器B,C,D,那么控制器A就称为控制器B,C,D的父控制器,控制器B,C,D就称为控制器A的子控制器为了...
2020-02-11 10:33:29
148
原创 通过storyboard加载控制器
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[UIWindow alloc] init]; UIStoryBoard *storyboard = [UIStoryBoard storyb...
2020-02-10 17:21:19
120
原创 UIPickView的基本使用
UIPickView的基本使用//UIPickView和TableView一样,想要展示数据也要设置数据源和代理//设置数据源self.pickView.dataSource = self;//设置代理self.pickView.delegate = self;//遵守数据源,代理协议:@interface ViewController ()<UIPickerViewDa...
2020-02-10 17:20:55
326
原创 控制器如何加载view
控制器如何加载View///> app 启动完成 程序准备开始运行 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[UIWindow alloc] init]; UIV...
2020-02-10 16:32:21
111
原创 UIWindow
UIWindow是什么?UIWindow是一种特殊的UIView,通常在一个app中至少有一个UIWindowiOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了。一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow也就是说,没有UIWindow,完全看不...
2020-02-10 15:03:25
163
原创 UIApplication
什么是UIApplication?UIApplication对象时应用程序的象征一个应用程序只有一个UIApplication对象,而且是单例的。通过[UIApplication sharedApplication]可以获得这个单例对象一个iOS程序启动后创建的第一个对象就是UIApplication对象利用UIApplication对象,能进行一些应用级别的操作UIApplicati...
2020-02-10 10:34:19
132
原创 UITableView的基本使用
UITableView基本使用展示多组数据#import "ViewController.h"@interface ViewController () <UITableViewDataSource>@property (nonatomic, weak) IBOutlet UITableView *tableView;@end@implementation ViewContr...
2020-02-08 18:48:45
190
原创 Autoresizing,Autolayout
Autoresizing,Autolayout,size class之间的关系1.Autoresizing和Autolayout两者之间不兼容,若想使用Autoresizing就不能使用Autolayout2.若想使用size class就必须支持AutolayoutAutoresizing在代码中的使用子控件相对于父控件的变化UIView *redView = [[UIView all...
2020-02-04 18:11:36
151
原创 常见控件的事件监听方式
1.代理UIScrollView,UITextField等控件使用代理的方法监听事件//简化代码UIScrollView *scrollView = [[UIScrollView alloc] init];//首先控制器应该遵守UIScrollViewDelegate协议scrollView.delegate = self; //设置scrollView的代理2.addTarg...
2020-01-31 16:54:56
334
原创 UIScrollView
UIScrollView的基本使用将需要显示的内容添加到UIScrollView中设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺寸,也就是告诉它滚动的范围//ViewController.m#import "ViewController.h"@interface ViewController ()//连线@property (non...
2020-01-31 16:04:11
209
原创 xib基本使用
Xib和storyBorad区别和共同点共同点:1.都用来描述软件界面2.都用Interface Builder工具来编译3.本质都是转换成代码去创建控件不同点:1.Xib是轻量级的,用来描述局部的UI界面2.Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系加载Xib//ViewController.h@interface ViewC...
2020-01-17 14:57:38
302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人