2015-05-01 码农明明桑
近日,我们的应用,在编译的时候不幸的遇到这个错误 Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 这才让我意识到原来我们的程序中,方法数已经超过了65536。在之前,已经知道了android系统的java虚拟机dalvik在执行java程序时,使用原生类型short来索引dex文件中的方法,因此方法数就呗限制在65536了。之前我一直以为,这个数量已经很大了,不会达到上限,结果今天就达到了。 不过这个东西呢,我们也是很容易的进行解决的,因为,就在去年不久前,google官方提供了多dex 继续阅读 »
2016-06-09 ruki
xmake提供了自定义打包、安装、运行脚本,可以更加灵活的针对个人实际需求来操作xmake 这里用一个例子详细说明下,比如有个需求,我需要自动编译、安装、运行android app工程,并且能够支持jni 可以进行如下操作 首先创建个基于ant的android app工程,目录结构如下: 继续阅读 »
2016-10-28 ruki
简介 Benchbox是一个基准测试包,基于tbox和xmake,里面包含许多针对第三方库功能的性能基准测试和对比,可以很方便的扩展测试用例和模块。 目前内置:各大开源协程库性能基准测试,后续还会陆续增加各种开源库模块的分析测试 测试报告仅供参考,测试代码或者结果上如有问题,可以提交issues 编译 请先安装: xmake 然后运行: bash $ xmake 协程切换测试报告(2个协程) Run bash $ xmake coroutine -n switch Macosx (x86_64) tbox: 10000000 switches in 205 ms, 4 继续阅读 »
2016-04-29 zzyhappyzzy
堆栈 栈用于静态内存分配,堆用于动态内存分配,它们都存储在内存RAM里。 栈 栈上面的变量一般编译时就分配好了(如函数临时变量等)。栈遵循LIFO(后进先出),非常方便管理。 栈的内存分配一般由系统管理,开发者无需关心。 读取栈上的变量速度很快。 当一个方法function被调用时,它会被push进栈中,该方法中的参数和局部变量存储在栈中,当方法执行完后,该方法pop出来,相应的栈空间被释放。 堆 堆上的变量,一般在程序运行期分配。 读取堆上数据速度较慢。 堆上的元素能够在任何时候被读取,开发者也能够在任何时候申请堆内存空间并且释放申请的空间,所以管理堆上的变量比较复杂。 通常我们说的内存管理实际上是指堆内存管理。 堆的大小 继续阅读 »
2016-07-16 ruki
xmake默认在编译完程序后,可以通过以下命令运行指定目标程序: bash $xmake run [target] [arguments] ... 并且在linux/macosx下面,目前已经支持关联调试器,去直接调试指定目标了,只需要加上-d/--debug参数选项: bash $xmake run -d [target] [arguments] ... 默认情况下,xmake在macosx下用的是lldb,在linux下用的是gdb,调试器xmake会在配置的时候去自动检测,如果需要指定调试器路径,可以手动去配置它: bash $xmake f --debugger=/usr/bin/gdb 继续阅读 »
2018-05-24 Piasy
分析完应用上层的视频采集、渲染、编码之后,原本我是打算把完整的 WebRTC 带到 Flutter 的世界里,形成 FlutterRTC 的,但后来仔细想想,这件事没多大意思,做出来了也不能产生多大价值,所以我决定调头深入底层。 本篇算是真正深入底层的第一篇,让我们深究一下之前没有深究的话题:视频数据 native 层之旅,以及 WebRTC 对视频数据的处理。最近对 iOS 上层的分析也不算白费,毕竟在 iOS 平台深入底层,无论是编译还是调试都更方便。 继续阅读 »
2018-01-20 YongHao Hu
DNS
记得大学里有计算机网络这门课程,我找过著名的两本的国外教材,分别从自底向上,由上到下两个角度来诠释网络是如何连接的。冗长的介绍接线器,光缆,吓得我粗略的一略而过,结果自然是『万花丛中过,片叶不沾身』。 而后,我的编程生涯里,似乎也没有被网络所困扰。不懂得各种原理,似乎用框架,查查 stackoverflow,Google 挖个遍,也可以 6666. 不做底层的咸鱼,怎么会需要原理呢,我学的什么编译链接,session,segment,,内存管理也不过是镜中花,水里月。 继续阅读 »
2007-08-24 Jamling
J2EE的配置真不是个东西!它也确实不是个什么东西!Java的诞生让我想到的lichking的诞生,有了lichking,于是就有了荒芜之地。J2EE既然这是片荒芜之地的产物,那么要建立一个企业级的应用-一支强大的UD军队,非得要有黑暗城堡-JDK不可。 说到JDK的配置我就一肚子的火,记得刚学习Java的时候,写了书上的一个叫做你好世界的程序,然后在CMD下面 bash javac HelloWord.java 结果。。。 我大骂Java真不是个东西。后来才知道,这个你好世界的程序要拿到java的bin目录下面,才能编译,才能 sh Java HelloWord 才能看见世界!后来老师说在CMD下面敲个 bash 继续阅读 »
2016-08-02 ruki
什么是选项的绑定呢? 例如我想在命令行中配置一个smallest的参数:xmake f --smallest=y 这个时候,需要同时禁用多个其他的选项开关,来禁止编译多个模块,就是这个需求,相当于一个选项 与其他 多个选项之间 是有联动效应的。。 那如何实现呢,可以通过下面两个api来实现: add_bindings: 添加正向绑定 add_rbindings: 添加反向绑定 继续阅读 »
2016-01-21 Brian Li
注解解析,包含基本语法,注解元素,快捷方式和JDK1.8注解增强的说明 基本语法 注解定义看起来很像接口的定义。事实上,与其他任何接口一样,注解也将会编译成class文件。 @Target(ElementType.Method) @Retention(RetentionPolicy.RUNTIME) public @interface Test {} 继续阅读 »