Using the Microsoft Graph API to get Office 365 data in your mobile appsUsing the Microsoft Graph API to get Office 365 data in your mobile apps Alex Ziskind Technical Director @digitalix www.nuvious.com Hi, I’m Alex From + 750 Million 50 Million per month Problems0 码力 | 15 页 | 7.00 MB | 1 年前3
JVM 内存模型0 码力 | 1 页 | 48.42 KB | 1 年前3
NativeScript 101with plugins oDebugging JavaScript Why are we here? How did NativeScript come to be? Swift/Obj-C Java .NET We ❤ Web. But… We need: • Better offline support • Access to all device APIs • Home screen APIs API Wrapper API Wrapper Plugin s Plugin s API Wrapper API Wrapper API Wrapper API Wrapper • Plugins created with JS/TypeScript • Angular Support (or not ?) • 100% Day 0 API Access Access • Everything Runs on UI Thread* • Plugins created with native code • React Support • API Access via Native Modules • UI Thread vs JS Thread • Angular/Vue/Vanilla vs React • Progress vs Facebook0 码力 | 90 页 | 40.11 MB | 1 年前3
Rust分布式账务系统 - 胡宇可演化性:业务逻辑与底层 API 解耦,当业务发生改变 时,底层 API 不用改变 分布式账务系统 设计理念 - Rust 是我们可靠的基石 分布式账务系统 存算分离 API 解耦 读写分离 层级账号 Rust ● 事务层与账户层分 离 ● 独立水平扩展 ● CQRS ● Event Sourcing ● 针对读场景,写场 景分别优化 ● 稳定的底层 API ● 灵活的顶层 API ● 树状结构 聚合查询 ● 正确性:内存安全,线程安全 ● 可靠性: Raft 共识算法 raft-rs ● 高性能:关键路径无锁单线程 顶层架构 ● Gateway 路由层 ○ 业务 API 到底层 API 的翻 译 ○ 产生转账计划 ● Marker 事务层 ○ 使用业务 id 进行路由 ○ 执行转账计划 ○ 分发账户变动请求 ● Auticuro 账户层 ○ 使用账户 id 对于核心领域系统,追求极致性能,使用 Rust Airwallex 业界 共识 厉兵秣马 - 人才培养 Rust 的吸引力 ● 更加容易吸引对技术有追求的人才 Rust 学习曲线 ● Java 背景, C++ 背景的同事 ● 学习《 rust 程序设计》 ● 1-3 月可以熟练转型使用 Rust Rust 与原有技术栈的融合 ● Kotlin : 偏业务,适合快速迭代 ● Rust0 码力 | 27 页 | 12.60 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器小彭老师说“我在拉答辩。”那么同学认为这个答辩指的是答辩(物理),小彭老师在上厕所。 而不会认为小彭老师在制作三体动画。 • 所以这位同学是人类思维,相当于 Python 的精分 API 。而如果另一个同学是硬核的计算 机思维,相当于 C++ 的一视同仁 API ,他会以为小彭老师真的在吃答辩。 • 这是通常来说,不过万一小彭老师真的这么重口味在吃答辩呢?要怎么传达这个信息? C++ 一视同仁的接口就能处理这种罕见的情况,不过 自动创建零值,而是能抛出异常的 at 函数。 C++ 和 Python 用法对比 C++ 和 Python 用法对比(运算符重载展开成普通函数后) 简单粗暴的 Java 用法 • 与 Python 和 C++ 不同, Java 放弃了花里胡哨的运算符重载,索性都采用成员函数 get put 来表示,非常明确。主要是为了把 get 和 put 作为接口函数,可以对应多个具体 实现。 错误示范0 码力 | 90 页 | 8.76 MB | 1 年前3
Making Libraries Consumable for Non-C++ Developersand Interface Generator (SWIG) – 1996 JVM – Java Native Interface (JNI) – 1997 .NET – Platform Invoke (P/Invoke), COM interop, C++/CLI – 2002, 2005 JVM – Java Native Access (JNA) – 2007 Go – cgo – permit with a Garbage Collector (GC). 1. Handles – Level of indirection. • Usually requires a “platform” API to use the memory. • .NET has GCHandle. • JVM, through JNI, exposes most memory as a handle – jobject0 码力 | 29 页 | 1.21 MB | 6 月前3
C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针除了指针需要随系统位数变化之外,数组的长度也是需要随系统位数变化的。 • 如果 64 位系统上 size_t 还是 uint32_t ,那就无法表示超过 4GB 大小的数组了。 • 今日乳 ja 笑话: java 的字符串常量不能超过 65535 个字符,因为他们是用 uint16_t 表示字符串长 度。 • 因此对于表示”长度”、”大小”的用途,可以用 size_t 这个直观的名字,他和 uintptr_t 都采用的小端字节序。 非主流的硬件架构如 PowerPC , MIPS 才用大端字节序。 贴近底层的语言,比如 C/C++/Fortran 会采用当前硬件架构的字节序,比如在 x86 上就会变成小端字节序。 Java 这种虚拟机语言会采用大端字节序,因此在小端字节序的硬件上会比较低效,需要额外的字节序转换工作。 为了统一,互联网标准规定,协议包头中传输的数据类型(但凡是多个字节组成的)必须是大端字节序。 假如 实际把数据写入到你分配的数组。这样就不需要让 func 负责 malloc ,对调用者自由度更 高。 • 例子: clGetPlatformIDs , glGetProgramInfo 等专业 API 函数刻在 DNA 里的调用方法 。 错误典型:返回栈上数组的地址 • 看右边这个例子,这是我在一份看起来很 专业的 CFD 代码里看到的,真的泵不住 了。 • int a[1024] 是一个定长数组,是在栈上分0 码力 | 128 页 | 2.95 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串里 开洞。但“移动语义”这个概念在旧 cpp 里没有,所以这个是真正必要的语言本身的改动。 • 而 java 就是在语言层面,直接在 jvm 里引入了引用计数,宣称“一切皆对象”,虽然方便了 富连网业务中常见的面向对象编程范式,但也妨碍了 java 进军数据处理,高性能计算等领域 。 java 第八帝国 cpp 第十一共和国 chrono 和 complex 也定义了一些 literials 字符串 <--> 数字 第 4 章 java 经典操作:字符串 + 数字 = 字符串 • 在 java 中,你甚至可以直接把字符串和数字相加,例如: • “you have ” + 42 + “ yuan” 会得到 “ you have 42 yuan” 。 • 他实际上是先把 42 变成 “ 42” ,再把三个字符串相加的,也就是说 java 编 译器会偷偷把他转换成:“ you have0 码力 | 162 页 | 40.20 MB | 1 年前3
陈东 - 利用Rust重塑移动应用开发-230618interface that allows Java to interact with code written in another language. Motivation for JNI is code reusability and performance. WIth JNI, you can reuse existing/legacy code with Java (mostly C/C++). binding Rust code into Android application. - Use the crate rifgen, flapigen to generate the java interface for rust code. - Wrap the whole rust code as an independent android library RCC_IOS0 码力 | 22 页 | 2.10 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理C++ 除了用于初始化的构造函数( constructor ) 还包括了用于销毁的解构函数( destructor ) 离开 {} 作用域自动释放 手动释放 RAII :避免犯错误 与 Java , Python 等垃圾回收语言不同, C++ 的 解构函数是显式的,离开作用域自动销毁,毫不含 糊(有好处也有坏处,对高性能计算而言利大于 弊) 如果没有解构函数,则每个带有返回的分 支都要手动释放所有之前的资源 为什么很多面向对象语言,比如 Java ,都没有构造函数全家桶这些概念? • 因为他们的业务需求大多是:打开数据库,增删改查学生数据,打开一个窗口,写入一个 文件,正则匹配是不是电邮地址,应答 HTTP 请求等。 • 这些业务往往都是在和资源打交道,从而基本都是刚刚说的要删除拷贝函数的那一类,解 决这种需求,几乎总是在用 shared_ptr的模式,于是 Java 和 Python 0 码力 | 96 页 | 16.28 MB | 1 年前3
共 36 条
- 1
- 2
- 3
- 4













