docs: APM、多句柄数据上报SDK、软件测试小结

This commit is contained in:
杭城小刘
2020-11-19 03:18:27 +08:00
parent 37f218379d
commit 145dcb4d48
17 changed files with 10302 additions and 44 deletions

View File

@@ -1004,7 +1004,7 @@ CF_EXPORT CFRunLoopRef _CFRunLoopGet0(_CFThreadRef t) {
}
```
![Mach Port Test Demo](./../assets/2020-08-13-MachPortTest.png)
![Mach Port Test Demo](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-08-13-MachPortTest.png)
可以看到 main.m 中,还没有 return 的时候当前 RunLoop 的内部结构中存在一个 **wakeup port** 的端口。查看 RunLoop 源代码 **wakeup port** 就是 mach port 的一种。
@@ -1096,7 +1096,7 @@ CF_EXPORT CFRunLoopRef _CFRunLoopGet0(_CFThreadRef t) {
7. RunLoop lifecycle
![RunLoop lifecycle](./../assets/2020-08-13-RunLoopLifeCycle.png)
![RunLoop lifecycle](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-08-13-RunLoopLifeCycle.png)
休眠时 RunLoop 被 mach_msg 阻塞,等到消息到来,可以是手动给 RunLoop 的 wakeUpPort 发消息 mach_msg或者是 timer、Source1。然后继续走到 RunLoop run不断循环

View File

@@ -24,19 +24,19 @@
#endif
```
- 对于你的某个 SDK你在为某个方法、某个类、某个宏定义命名的时候需要注意选择合适的前缀
比如。你的某个项目是在做监控SDK 的名字叫做 Prism-Client。那么你的类名称、类方法名称、宏定义、分类名称、分类方法名称等都需要合适且统一的前缀一般选取 `前3个字母组合`。当前的项目叫做 `PCT`。类前面加 PCT类里面的方法不加前缀。分类名称加前缀 PCT分类里面的方法前面加前缀小写的 pct
比如。你的某个项目是在做监控SDK 的名字叫做 Hermes-Client。那么你的类名称、类方法名称、宏定义、分类名称、分类方法名称等都需要合适且统一的前缀一般选取 `前3个字母组合`。当前的项目叫做 `HCT`。类前面加 HCT类里面的方法不加前缀。分类名称加前缀 HCT分类里面的方法前面加前缀小写的 HCT
普通类的方法不加前缀是因为普通类已经通过类名的唯一性确定了方法的唯一。
分类里面方法加前缀是因为分类的方法在工程里面这个类都可以访问。所以要在方法前面区分
```Objective-C
// 安全的数据获取方法
#ifndef PCT_SAFE_STRING
#define PCT_SAFE_STRING(x) (x) != nil ? (x) : @""
#ifndef HCT_SAFE_STRING
#define HCT_SAFE_STRING(x) (x) != nil ? (x) : @""
#endif
NSData+PCTAES.h
- (NSData *)pct_AES128EncryptWithKey:(NSString *)key gIv:(NSString *)Iv;
NSData+HCTAES.h
- (NSData *)hct_AES128EncryptWithKey:(NSString *)key gIv:(NSString *)Iv;
PCTRequestFactory.h
HCTRequestFactory.h
+ (void)fetchUploadConfigurationWithRequestURL:(NSString *)requestUrlString
params:(NSDictionary *)params
success:(void (^)(PRCConfigurationModel*model))success
@@ -60,11 +60,11 @@
- 内联函数的定义须在调用之前
- Objective-C 中内联函数用 NS_INLINE ,等价于 static inline。且内联函数的命名需要注意在该模块内的内联函数需要加前缀。
```Objective-C
NS_INLINE NSString * PCTGetTableNameFromType(PCTLogTableType type){
if (type == PCTLogTableTypeMeta) {
NS_INLINE NSString * HCTGetTableNameFromType(HCTLogTableType type){
if (type == HCTLogTableTypeMeta) {
return PRC_LOG_TABLE_META;
}
if (type == PCTLogTableTypePayload) {
if (type == HCTLogTableTypePayload) {
return PRC_LOG_TABLE_PAYLOAD;
}
return @"";
@@ -94,6 +94,6 @@
NSLog(@"%zd", [AFNetworkReachabilityManager sharedManager].networkReachabilityStatus);
}
```
之前在做一个类 `PCTRequestFactory` 用来管理网络相关的逻辑。需要判断网络状态,我们都知道 AFNetWorking 第一次判断网络状态得到的是 AFNetworkReachabilityStatusUnknown。而我的逻辑需要 SDK 启动的时候判断网络状态,然后去上报数据。所以刚开始 AFNetworkReachabilityStatusUnknown 显然不能上报 Crash 数据,所以想着是将第一次的网络状态获取放到 **load** 方法里。这样是没问题的,可以拿到网络状态,但是我们知道 load 是类加载的时候调用的,打开 Xcode 看到 Build Phases 里面 `Link BiBinary With Libraries` 这个里面的库的顺序决定了里面的类加载顺序。我们知道 Pod 的原理是在 Podfile 里面描述的 pod 库依赖,然后会按照字典序(首字母排序去)引入,所以 AFNetWorking 这个肯定早,所以会成功的。但是万一是人工手动去引入或者修改库的位置,则在 PCTRequestFactory 里面的 load 方法执行的时候不一定可以保证 AFNetworkReachabilityManager 已经加载好。所以将 load 逻辑移动到 init 里面。
之前在做一个类 `HCTRequestFactory` 用来管理网络相关的逻辑。需要判断网络状态,我们都知道 AFNetWorking 第一次判断网络状态得到的是 AFNetworkReachabilityStatusUnknown。而我的逻辑需要 SDK 启动的时候判断网络状态,然后去上报数据。所以刚开始 AFNetworkReachabilityStatusUnknown 显然不能上报 Crash 数据,所以想着是将第一次的网络状态获取放到 **load** 方法里。这样是没问题的,可以拿到网络状态,但是我们知道 load 是类加载的时候调用的,打开 Xcode 看到 Build Phases 里面 `Link BiBinary With Libraries` 这个里面的库的顺序决定了里面的类加载顺序。我们知道 Pod 的原理是在 Podfile 里面描述的 pod 库依赖,然后会按照字典序(首字母排序去)引入,所以 AFNetWorking 这个肯定早,所以会成功的。但是万一是人工手动去引入或者修改库的位置,则在 HCTRequestFactory 里面的 load 方法执行的时候不一定可以保证 AFNetworkReachabilityManager 已经加载好。所以将 load 逻辑移动到 init 里面。
另外load 方法一般只做和本类有关系的逻辑,比如 hook 方法。

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
## 图片显示流程
![image-20200813130942777](./../assets/2020-08-13-ImageRenderProcess.png)
![image-20200813130942777](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-08-13-ImageRenderProcess.png)
```objective-c
UIImage *image = [UIImage imageNamed:@"test"];
@@ -19,7 +19,7 @@ _imageView.image = image;
## YYImage 源码
![image-20200813131944130](./../assets/2020-08-13-YYImageClassLevel.png)
![image-20200813131944130](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-08-13-YYImageClassLevel.png)
很多框架使用锁都是 pthread_mutex_lock分析原因

1
Chapter1 - iOS/1.93.md Normal file
View File

@@ -0,0 +1 @@
# flutter 新功能引导

View File

@@ -96,3 +96,4 @@
* [90、YYImage 框架原理,探索图片高效加载原理](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1%20-%20iOS/1.90.md)
* [91、二进制重排](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1%20-%20iOS/1.91.md)
* [92、flutter 无痕埋点](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1%20-%20iOS/1.92.md)
* [93、flutter 新功能引导](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1%20-%20iOS/1.93.md)

View File

@@ -2,7 +2,7 @@
[jQuery 1.9](http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/)发布。
![jQuery](./../assets/2020-06-23-Jquery.png)
![jQuery](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-06-23-Jquery.png)
这是2.0版之前的最后一个新版本有很多新功能其中一个就是支持Source Map。
@@ -42,13 +42,13 @@ JavaScript脚本正变得越来越复杂。大部分源码尤其是各种函
有了它,出错的时候,除错工具将直接显示原始代码,而不是转换后的代码。这无疑给开发者带来了很大方便。
![jQuery Mapping](./../assets/2020-06-23-JquerySourceMap.png)
![jQuery Mapping](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-06-23-JquerySourceMap.png)
Chrome 浏览器支持这个功能。在 Developer Tools 的 Setting 设置中,确认选中 "Enable source maps"。
![设置页](./../assets/2020-06-21-ChromeSourceMapEnableSwitch.png)
![设置页](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-06-21-ChromeSourceMapEnableSwitch.png)
![i开启 sourceMap](./../assets/2020-06-21-ChromeSourceMapENable.png)
![i开启 sourceMap](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-06-21-ChromeSourceMapENable.png)
@@ -168,11 +168,11 @@ mappings:"AAAAA,BBBBB;CCCCC"
VLQ 编码是变长的。如果(整)数值在-15到+15之间含两个端点用一个字符表示超出这个范围就需要用多个字符表示。它规定每个字符使用6个两进制位正好可以借用 [Base 64](http://en.wikipedia.org/wiki/Base_64) 编码的字符表。
![VLA](./../assets/2020-06-23-VLAMapping.png)
![VLA](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-06-23-VLAMapping.png)
在这6个位中左边的第一位最高位表示是否"连续"continuation。如果是1代表这个位后面的6个位也属于同一个数如果是0表示该数值到这6个位结束。
![VLQ特殊位](./../assets/2020-06-03-VLQSymbol.png)
![VLQ特殊位](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-06-03-VLQSymbol.png)
这6个位中的右边最后一位最低位的含义取决于这6个位是否是某个数值的VLQ编码的第一个字符。如果是的这个位代表"符号"sign0为正1为负Source map的符号固定为0如果不是这个位没有特殊含义被算作数值的一部分。

View File

@@ -10,7 +10,7 @@
先看一张 CFA 证书的图片,是我家 Simba 的证书。
![CFA-Certificate](./../assets/CFA-Certificate.png)
![CFA-Certificate](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/CFA-Certificate.png)
不难发现 CFA 证书就像我们日常的身份证一样,虽然没有猫的照片,但猫咪的其他信息一应俱全,花色精细到色号,父母和主人的信息也都在上面。具体每个字段的意思我已经在图上打好圈圈了,每个圆圈的信息都是一个独立的信息点。
@@ -103,7 +103,7 @@ RAGDOOL
2. 访问 [CFA 官网](https://ecat.cfa.org/public/hermanonline.aspx),在 Registration Code 的地方输入证书编号
![示意图](./../assets/CFAWebsite.png)
![示意图](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/CFAWebsite.png)
3. 点击 “Show Report” 按钮,查看 “**Grand Scoring show records for**" 右边的猫咪信息是否匹配。

View File

@@ -10,11 +10,11 @@
先说一下个人赞成生骨肉喂养。
![多种肉](./../assets/Rawmeat1.jpg)
![多种肉](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Rawmeat1.jpg)
![三文鱼](./../assets/Rawmeat2.JPG)
![三文鱼](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Rawmeat2.JPG)
![全牛肉](./../assets/Rawmeat3.jpg)
![全牛肉](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Rawmeat3.jpg)
群里面经常看到讨论生骨肉的话题,哎呀猫猫这么小,能不能给喂肉吃啊,是不是等半岁/一岁等等各种神奇的时间节点后再喂比较好呢,也不知道这个时间节点从哪来的。
@@ -215,7 +215,7 @@ emmmmmmmmmm对于这个说法无力吐槽是否主食主要看搭配配比
6. 可选)一口不粘锅
7. 一个砧板
![猫饭工具](./../assets/CatsFoodTools.jpeg)
![猫饭工具](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/CatsFoodTools.jpeg)
@@ -263,7 +263,7 @@ emmmmmmmmmm对于这个说法无力吐槽是否主食主要看搭配配比
菜谱的拟定可以复杂异常,也可以用逻辑简单思考得出结果:猫野外怎么吃我们怎么模仿其比例。大原则永远不变新鲜的食材符合肉类、骨骼、内脏比例83710足够多样的动物种类就靠鸡鸭万万不可
![生骨肉](./../assets/rawMeat-recipe.jpeg)
![生骨肉](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/rawMeat-recipe.jpeg)

View File

@@ -20,13 +20,13 @@
**Simba中文名叫辛巴大家应该看过狮子王希望像狮子王一样成为一个勇敢、坚强、健康的猫。**
![Simba](./../assets/Simba.png)
![Simba](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Simba.png)
![Simba](./../assets/Simba2.png)
![Simba](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Simba2.png)
![Simba](./../assets/Simba3.jpg)
![Simba](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Simba3.jpg)
![Simba](./../assets/Simba4.jpg)
![Simba](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Simba4.jpg)
@@ -34,15 +34,15 @@
![Bella](./../assets/Bella2.jpg)
![Bella](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Bella2.jpg)
![Bella](./../assets/Bella3.jpg)
![Bella](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Bella3.jpg)
![Bella](./../assets/Bella1.jpg)
![Bella](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Bella1.jpg)
![Bella](./../assets/Bella4.jpg)
![Bella](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/Bella4.jpg)
@@ -50,15 +50,15 @@
**碎星,眼眸中的光芒星星点点,好似撒下的一把星。正好和“遂心”同音,是对毛孩子的美好祈愿**
![碎星](./../assets/SuperStar1.jpg)
![碎星](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/SuperStar1.jpg)
![碎星](./../assets/SuperStar2.jpg)
![碎星](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/SuperStar2.jpg)
![碎星](./../assets/SuperStar3.jpg)
![碎星](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/SuperStar3.jpg)
![碎星](./../assets/SuperStar4.jpg)
![碎星](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/SuperStar4.jpg)

View File

@@ -8,7 +8,7 @@
技术点: iOS、Web 前端、后端、Hybrid、Node 的应用、爬虫、反爬虫、后端、数据库、算法等领域。
偶尔记录自学经济学遇到的概念或者有趣的生活现象解读
后面的2个小章节主要记录自学经济学遇和养布偶猫的一些心得和经验
@@ -20,4 +20,6 @@
## 反馈
定期更新博文如果在查看文章的时候发现了问题可以提出 issue。95年小双鱼关注大前端领域有事情可以通过[微博](http://weibo.com/u/3194053975)联系)
定期更新博文如果在查看文章的时候发现了问题可以提出 issue。
关注大前端领域,喜欢乒乓球、布偶猫,杭州的小伙伴可以约乒乓球或者交流养猫心得
有事情可以通过[微博](http://weibo.com/u/3194053975)联系

View File

@@ -95,6 +95,7 @@
* [90、YYImage 框架原理,探索图片高效加载原理](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1%20-%20iOS/1.90.md)
* [91、二进制重排](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1%20-%20iOS/1.91.md)
* [92、flutter 无痕埋点](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1%20-%20iOS/1.92.md)
* [93、flutter 新功能引导](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1%20-%20iOS/1.93.md)
* [Chapter2 - Web FrontEnd](https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter2%20-%20Web%20FrontEnd/chapter2.md)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 57 KiB