RxJava doOnNext 歪打正着
来到了快手,代码是真滴乱。RxJava 到处甩,然后又炫技式的使用,冗余各种复杂逻辑,且有些地方使用并不规范,只不过没有出问题。配合自制 MVPs 架构,又秀了一波依赖注入,全是注解,导致我刚看代码时,完全凌乱了,重点是没有任何文档,对新人极不友好,且我认为,代码不应该这样写。
来到了快手,代码是真滴乱。RxJava 到处甩,然后又炫技式的使用,冗余各种复杂逻辑,且有些地方使用并不规范,只不过没有出问题。配合自制 MVPs 架构,又秀了一波依赖注入,全是注解,导致我刚看代码时,完全凌乱了,重点是没有任何文档,对新人极不友好,且我认为,代码不应该这样写。
如今写了很多门语言之后越来越有感触,事件驱动的设计离不开各种异步调用。比如 Android 中主线程如今已经不允许发送网络请求等等,这时候都需要一些异步回调。而在前端也是如此,但是前端8成以上的工程师能做的原理性的东西很少。
首先 JsCore 改不了吧?水平有限!其次,CSS 的解析改不了吧?写各种 loader,各种插件已经很牛逼了,我感觉那些 webpack 相关的东西,至今我也不是很懂,只是会用。所以大部分人都关注在业务开发上。
而客户端的工程师还有很多其他的事情研究,比如热更新啊、性能优化啊等等。
我觉得没有好坏之分,但是前端在代码架构上或者一些设计上我觉得更优秀,客户端相比很落后。比如双向绑定,redux 等思想。再比如这个 promise,虽然客户端也有可以处理这种事情的东西,比如 RxJava、RxAndroid 等等,但是感觉没这么直接,RxJava 也要不停 subscribeOn、observeOn 等等,或者你说你写个 compose,但是还是那样,不直观不直接。
这几天想重新研究研究一些 Android Framework 相关的东西,看到了 WindowManagerService(WMS),产生了一些疑问。
很多人说是,WMS 的代理对象,可是目前我看的 android-28 的源码,发现并不是这样。
跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
第一次跟前端H5对接,结果请求不通,交流才知道,他们先发一个 OPTIONS 请求,然后再发送真实请求,而我这边后台只对 GET 请求做了处理
说出来不怕丢人,我还真的不知道有 OPTIONS 请求,复习一下相关知识
需要上传一张图片到我们的对象存储服务器,对方给了接口协议。
需使用 post 请求,Content-Type 为 multipart/form-data
且 key = filecontent,value 就是文件内容
没错,前端天才终于涉及了真正的前端h5页面!
需求是优化一个两年前别人写的播放器!
可是坑死我了···
play
加载并播放音频或重新播放暂停的的音频pause
暂停处于播放状态的音频文件waiting
无法直接播放,加载canplay
缓冲至目前可播放状态play
play()和autoplay播放时timeupdate
播放时间变化ended
播放结束一个友好的用户交互
最近在搞 weex 工程,然后想要把我们开发的所有 weex 相关的东西集成到一个工程里面,然后可以实现组件的复用,打 bundle 的时候又需要分开编译
简而言之,就是支持多个工程分别打包,单个 vue 分别编译
虚拟内存
是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
hello.h
#ifndef HELLO
#define HELLO
int fn_c(int x_local);
#endif
hello.c
/* 这是一个存在于程序别处的某个全局变量的声明 */
extern int z_global;
/* 这是一个函数的定义,函数参数可以认为是局部变量 */
int fn_c(int x_local)
{
return (z_global + x_local);
}
hello_main.c
#include"hello.h"
#include<stdio.h>
int z_global = 1;
int main(int argc, char *argv[])
{
printf("%d", fn_c(10));
return 0;
}