React Native
https://juejin.im/post/5a6460f8f265da3e4f0a446d React Native for Android 原理分析与实践:实现原理
https://www.cnblogs.com/android-blogs/p/5623481.html 其实没那么复杂!探究react-native通信机制
Native与JS之间调用方式,Bridge。
在jsi.h中Runtime抽象类,申明了JS执行已经与Native互调的接口。在iOS和Android中分别实现。iOS的JSCRuntime,直接调用iOS系统提供JavaScriptCore框架。Android则额外引入jsc.so包提供,JavaScriptCore的功能。
Native和JS两端都保存模块、方法数据的注册表。
通道优化,JS调用Naitve,先push到MessageQueue,等Native有调用时,顺带批量返回(如果5毫秒内,没有Native调用事件,则主动flush queue)。
JS代码执行,Native与JS消息通信等都是通过该Bridge进行。
Swift
Pods
iOS 动态库和静态库的的区别 动态库的隔离与静态库的吸附问题以及解决方法 https://blog.csdn.net/clovejq/article/details/71107796
Thunk程序的实现原理以及在iOS中的应用 https://juejin.im/post/5c5281e0e51d45517334dd34
Chameleon原理详解:其它跨多端统一框架都是假的?https://mp.weixin.qq.com/s/F8ernZ57jseKNJgwGopNxg
iOS Mach-O
- 深入剖析iOS动态链接库 https://www.jianshu.com/p/1de663f64c05
/**
* Created by BeeHive.
* Copyright (c) 2016, Alibaba, Inc. All rights reserved.
*
* This source code is licensed under the GNU GENERAL PUBLIC LICENSE.
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
*/
#import "BHAnnotation.h"
#import "BHCommon.h"
#include <mach-o/getsect.h>
#include <mach-o/loader.h>
#include <mach-o/dyld.h>
#include <dlfcn.h>
#import <objc/runtime.h>
#import <objc/message.h>
#include <mach-o/ldsyms.h>
NSArray<NSString *>* BHReadConfiguration(char *sectionName,const struct mach_header *mhp);
static void dyld_callback(const struct mach_header *mhp, intptr_t vmaddr_slide)
{
NSArray *mods = BHReadConfiguration(BeehiveModSectName, mhp);
for (NSString *modName in mods) {
Class cls;
if (modName) {
cls = NSClassFromString(modName);
if (cls) {
[[BHModuleManager sharedManager] registerDynamicModule:cls];
}
}
}
//register services
NSArray<NSString *> *services = BHReadConfiguration(BeehiveServiceSectName,mhp);
for (NSString *map in services) {
NSData *jsonData = [map dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
id json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
if (!error) {
if ([json isKindOfClass:[NSDictionary class]] && [json allKeys].count) {
NSString *protocol = [json allKeys][0];
NSString *clsName = [json allValues][0];
if (protocol && clsName) {
[[BHServiceManager sharedManager] registerService:NSProtocolFromString(protocol) implClass:NSClassFromString(clsName)];
}
}
}
}
}
__attribute__((constructor))
void initProphet() {
_dyld_register_func_for_add_image(dyld_callback);
}
NSArray<NSString *>* BHReadConfiguration(char *sectionName,const struct mach_header *mhp)
{
NSMutableArray *configs = [NSMutableArray array];
unsigned long size = 0;
#ifndef __LP64__
uintptr_t *memory = (uintptr_t*)getsectiondata(mhp, SEG_DATA, sectionName, &size);
#else
const struct mach_header_64 *mhp64 = (const struct mach_header_64 *)mhp;
uintptr_t *memory = (uintptr_t*)getsectiondata(mhp64, SEG_DATA, sectionName, &size);
#endif
unsigned long counter = size/sizeof(void*);
for(int idx = 0; idx < counter; ++idx){
char *string = (char*)memory[idx];
NSString *str = [NSString stringWithUTF8String:string];
if(!str)continue;
BHLog(@"config = %@", str);
if(str) [configs addObject:str];
}
return configs;
}
@implementation BHAnnotation
@end
__attribute__((constructor)) void before_main() {
printf("--- %s\n", __func__);
}
__attribute__((destructor)) void after_main() {
printf("--- %s\n", __func__);
}
HTTP2
HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事 http://www.alloyteam.com/2016/07/httphttp2-0spdyhttps-reading-this-is-enough/
HTTP/2 新特性总结 https://www.jianshu.com/p/67c541a421f9
- http2能带来如下这些收益:
1、多路复用、多个HTTP可以在同个TCP连接上同时发送。
2、优先级
3、header压缩
4、Server Push
美团2018技术合集 阅读笔记
mpvue
https://tech.meituan.com/2018/03/11/mt-mpvue-development-framework.html
- 使用vue.js开发小程序
- 原理:增加一个中间层,将小程序的生命周期、事件、数据同步等桥接到vue对象。
Flutter
https://tech.meituan.com/2018/08/09/waimai-flutter-practice.html
- 全新思路的跨平台的移动客户端UI方案。
- 不同于Weex或ReactNative将JS数据代理到Native UI库做渲染,Flutter直接使用更加底层的图形渲染接口,从更底层去接管消息事件,在此基础上,封装跨平台的UI库。
- 对于UI层来说,这样的跨平台更彻底,一致性更强。
- 核心引擎+Widget库
Picasso 大众点评自研的Native动态化方案
https://tech.meituan.com/2018/06/21/picasso-the-future.html
- 对比
Hybrid WebView
Weex、RN、Flutter
基本原理
DSL(TypeScript)-》 PModel -〉 iOS、Android、H5、小程序渲染引擎 -》 UIDSL
核心SDK + 适配层 + 脚手架
开发流程
VSCode + 插件
- 发布流程
Picasso文件 -〉JS Bundle -》 部署服务器 -〉Picasso执行环境(iOS、Android、H5、小程序)-》渲染引擎
美团客户端响应式框架Easy React
https://tech.meituan.com/2018/07/19/react-programming-framework-easyreact-opensource.html
- 对比ReactiveCocoa、ReactiveX
- 基于Objective-C
- EasyMVVM
Logan:美团点评的开源移动端基础日志库 - 美团技术团队
https://tech.meituan.com/2018/10/11/logan-open-source.html
MCI:移动持续集成在大众点评的实践
https://tech.meituan.com/2018/07/12/mci.html
美团外卖Android Crash治理之路
https://tech.meituan.com/2018/06/14/waimai-android-crash.html
运营平台
- 运营、平台管理、前端开发
- 同一个运营位,多维度内容的展示。
- 运营效果
监控系统
HTTP服务治理框架
开发笔记
微服务
“ The Art of Scalability ”一书描述了一种 三维可伸缩性模型 (AKF Scale Cube),其中三个轴分别代表了不同类型的缩放:
X:水平复制和克隆;-> (Docker,容器)
Y:功能分解和分割(微服务);
Z:水平数据分区(分片)。
微服务架构设计
vue
https://juejin.im/post/5c488a3cf265da615705cc2a?utm_source=tuicool&utm_medium=referral
社交
Tumblr、Pinterest……一个个想创造新模式的应用都失败了,它们改变了什么又为何没落? | 好奇心商业史
https://www.qdaily.com/articles/60688.html?utm_source=tuicool&utm_medium=referral
三个软件可能要被整合到一起:WhatsApp、Instagram和Facebook Messenger
https://www.qdaily.com/articles/60669.html
数据垄断和信息孤岛,是如何驯化我们的?
https://www.huxiu.com/article/282751.html?utm_source=tuicool&utm_medium=referral
Copyright © 2015 Powered by MWeb, Theme used GitHub CSS.