Farlanki.

Farlanki.

如何提高Web的首屏展示速度
如何提高 Web 的首屏展示速度,是一个很常见的问题。下面就罗列一下… 预创建 WebView预创建 WebView 可能是其中最直观的一种。由于 WebView 初始化也是需要时间的,所以可以在空闲的时候将 WebView 预创建好,缓存起来。在有需要的时候将 WebView 拿出来就可以了。优化时间:WebView 创建耗时 预渲染预渲染依赖预创建实现。在预创建 WebView 之后,再进行 loadRequest 的操作。那么在需要的时候取得 WebView , 此时的 WebView 就已经是加载好的 WebView 了,比预创建更加彻底。优化时间:WebView 创建耗时 + ...
在深圳工作这几年
从 5 月的最后一个周五离开了深圳后,到现在已经一个多月了。最近一直有一个写一篇文章的想法,那就写一下在深圳的这几年吧。 开端17 年毕业的时候,我有幸拿到了某无人机厂商的 Offer,在 2017 年 7 月 15 日,来到了深圳。对深圳的第一个感觉是:高大上。2017 年到 2018 年年初,算是工作的一个开端,感谢宋大佬,皮皮,spy,老司机等对我的指导。在这半年里,我学会了需求开发的基本流程,并且完成了一些还算好玩的需求。 2018 年年中,我被调到另一个项目组。这个项目组是负责某教育机器人开发的,而软件团队的工作有点像开发一个游戏。组内的气氛十分融洽,大家都是喜欢玩游戏的同学,...
iOS 播放 H265 Elementary Stream
今天来看看iOS如何解码一个 H265 编码的 Elementary 视频裸流? 什么是 Elementary StreamH265编码有两种格式:Annex-B 和 HVCC 格式。HVCC 用于 MP4。Annex-B 又被称为 Elementary Stream 格式,是由编码器输出的原始基础码流。iOS 的硬件解码框架 VideoToolBox 只支持 HVCC 格式,所以,如果我们需要处理的是 Elementary Stream 格式的文件,应该首先将它转换成 HVCC,然后喂给苹果解码器。 处理 Elementary Stream 的基本流程处理 Elementary Str...
对 usbmuxd 的一点研究
USBMuxd当 iTunes 和 iPhone 连接时,它们之间会通过 USBMux 进行连接。USBMux 用于在 USB 协议上实现多路 TCP 连接。USBMuxd 能够实现 USB-TCP 协议的转换,将 USB 的端口映射到本机的 TCP 端(基于 Unix Domain Socket),将 USB 通信抽象为 TCP 通信。苹果的 iTunes , XCode 都使用了这个服务。 根据 iphonewiki.com 所说的,USBMuxd 程序存放在 Mac 系统下的 /System/Library/PrivateFrameworks/MobileDevice.framew...
在 Flutter 中使用多 Isolate
我们在编程的时候经常会用到多线程。多线程技术能让我们得以利用多核CPU的优势,能将一些繁重的任务交给别的线程运算。在 iOS 编程中,我们需要小心对待在主线程执行的耗时长的方法,因为一旦我们阻塞了主线程,应用的 UI 就会被卡住,这是一种十分不好的用户体验。在使用 flutter 的时候,其实也会有类似问题。那么,我们在使用 Flutter 的时候,又应该如何使用“多线程”呢? isolatedart 语言中的’多线程‘被称为 isolate。事实上,isolate 是一种不共享状态的多线程技术。dart语言设计 isolate 这种体系能避免线程竞争等情况的出现。也是因为 isolat...
使用 Flutter 构建第一个应用后的一点感想
最近我偶然接触到了 Flutter 。Flutter 能让移动应用开发者真正做到编写一次代码,而在 iOS 、 Android 两个平台上运行,并且能获得不亚于原生应用的性能。今天的移动应用开发已经越来越注重效率了,所以个人感觉这种技术的前景还是很好的。下面就来说说开发了第一个应用之后的一点看法。 关于构建UIhot reload开发 flutter 应用时,可以使用 hot reload 。 hot reload 能让我们在不重新编译的前提下看到修改代码后的效果,不得不说这样子的效率是极高的。 控件flutter 提供了很多种类的UI控件供开发者使用。基本上常见的UI控件都已经帮我们封...
Learn OpenGL第一章学习体会
前言今天是超强台风‘山竹’袭来的日子,我便安心的宅在家,看完了Learn OpenGL的第一章教程。在此写下一点理解。 环境搭建依照教程,我使用了 GLAD + GLFW,参考的是这篇文章.不同的是,我并没有将 GLAD 和 GLFW 库加入到系统的头文件目录中,而是直接拖进了工程.编译时,会出现头文件找不到的错误,这时候需要修改头文件的名称. VBOVBO 的全称是 vertex buffer object,使用 VBO 可以将顶点信息存储在 GPU 上. VBO 的生成方式如下: 1234567unsigned int VBO;//生成一个缓冲区名称glGenBuffers(1, &...
Method Swizzling
Method Swizzling 是一种能将方法的实现替换掉的技术,运用的是 Objective-C 的运行时方法实现的。其实现的具体思路是将方法的 imp 进行对调。 原理在 Objective-C 中,所有的方法都是动态绑定的。在 Objective-C 的类结构体中,维护着一张方法表(method list),记录着该类中所有方法的 sel 和 imp。在调用一个方法的时候,其实是通过 sel 寻找 对应的 imp,并调用imp。通过 Method Swizzling , 我们可以将两个方法的 imp 进行对调。 常规实现以下是摘抄自 NSHipster 的一段实现 123456...
迁移一波博客
之前的个人博客服务提供商貌似处于一种不太稳定的状态,于是博客的迁移也变成了一项必须完成的事项了。为了简单起见,选择了使用coding来托管Hexo博客框架,很方便就完成了博客的迁移。来了深圳已经一年多了,因为工作太忙的缘故,一直没有更新次博客。看到同学的Github和博客经营得有声有色,不安分的心又躁动了起来。希望能重新开始这个博客的更新吧。 = 、=   
Unix下关于套接字的一些细节
socket方法1int socket(int protofamily, int type, int protocol); sockfd是描述符。 socket函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字,而socket()用于创建一个socket描述符(socket descriptor),它唯一标识一个socket。这个socket描述字跟文件描述字一样,后续的操作都有用到它,把它作为参数,通过它来进行一些读写操作。 返回值: 套接字描述符 正如可以给fopen的传入不同参数值,以打开不同的文件。创建socket的时候,也可以指定不同的参数创建不同的...
avatar
Farlanki
一个多头
FRIENDS