- 授权协议: BSD
- 开发语言: Java
- 操作系统: 跨平台
- 软件首页: https://tehleo.github.io/junion/
- 软件文档: https://github.com/TehLeo/junion/blob/master/README.md
- 官方下载: https://github.com/TehLeo/junion/releases
软件介绍
JUnion 用于为 Java 编程语言提供结构类型。
功能特性
结构类型
自动对齐数据
手动对齐数据
创建结构类型的数组
64 位可寻址数组
修改原生 DirectByteBuffers
检查数组下标
嵌套结构
结构引用
空引用检查
数组切割
泛型
栈分配
查看更多特性介绍 https://tehleo.github.io/junion/features.html
当创建 int 数组时,我们有两个主要选项:
int[] intArray = new int[1000]; Integer[] intBoxedArray = new Integer[1000];
那么,intArray, intBoxedArray 需要多少个字节才能存储 1000 个 int 数据?结果如下 ——
intArray 4016 bytes 4*1000 + ~16(around 16 bytes for array header) intBoxedArray 20016 bytes (4 + ~12 + ~4)*1000 + ~16 (具体数据取决于 VM)
可以看到,后者几乎是前者的 5 倍,因此我们应该偏向于选择使用原始数组 (primitive arrays)。
考虑这样一个问题
class Point { float x,y;}
Point[] arr = new Point[500];arr 占用了 14016 个字节,而数据包含了 500 个 points,每个 points 有两个浮点数,因此 4000 个字节应该足够了。
但如果 Point 是一个结构类型(struct),arr 大约只占用 4000 个字节。
使用 JUnion,可以通过 @Struct 注解标记一个类来做到这一点!
创建 struct Vec3:
@Struct
public class Vec3 {
public float x,y,z;
}然后,你可以将其用作:
//Create a new struct array Vec3[] arr = Vec3[10]; arr[5].x = 10; Vec3 v = arr[5]; ... // ByteBuffer a = ByteBuffer.allocateDirect(10*Mem.sizeOf(Vec3.class)) .order(ByteOrder.nativeOrder()); //Modify Direct Native Bytebuffer as it were a struct Vec3 arr = Mem.wrap(a); arr[5].x = 10; ...
性能测试
共鸣:内容运营方法论
舒扬 / 机械工业出版社 / 2017-5-8 / 59.00
近5年来网络信息量增长了近10倍,信息极度过剩。移动互联网以碎片化、强黏度以及惊人的覆盖率给传统的商业环境带来了巨大的影响,向陈旧的广告、公关、媒体行业展开了深度的冲击。 传统的以渠道为中心的传播思想几近失效,优秀内容成为了各行业最稀缺的资产,这是时代赋予内容生产者的巨大机会。本书作者在多年经验和大量案例研究的基础上,总结出了移动互联网时代的内容运营方法论——共鸣,它将告诉我们如何收获核心粉......一起来看看 《共鸣:内容运营方法论》 这本书的介绍吧!
