公司:挚文
挚文集团于2011年成立,2014年12月11日在美国纳斯达克交易所挂牌上市(NASDAQ: MOMO),拥有陌陌、探探等多款手机应用,以及电影制作发行、节目制作等多元业务。 “挚文”这一中文名称代表了公司的人文理想:营造一种诚挚的企业文化氛围。 同时“挚”又包含“执手”之意,意味着人与人的连接,与使命愿景相呼应。
字节码增强技术在java中的应用
我们都知道java是一门解释型语言,大致执行过程如下图所示,首先需要将.java文件编译成字节码文件,然后再通过jvm解释执行,最终运行在对应的操作系统上。这也是java号称一次编译,到处运行的关键。同时我们也能看到,其中的关键是java通过遵循jvm规范而编译出来的字节码文件,它是实际被解释执行的逻辑。
探探用户微服务高并发高可用缓存架构
在探探后端的微服务体系中,User服务作为一个业务基础服务,承担了用户的基本信息、扩展资料、用户状态等核心数据的存储、更新和查询工作,特点是访问流量大,稳定性要求高,其中,缓存机制发挥了非常重要的作用,因此,这里分享一下User服务的缓存架构和相关变迁。
基于业务规模和维护成本的考虑,目前,与其它大多数微服务一样,User服务及其依赖的数据库、缓存等中间件都是只部署一套服务,未按业务场景或单元化的方式做进一步的拆分,因此,下面主要针对单套服务内部的缓存介绍。
数据库路径选择理论与PostgreSQL实现
数据库将SQL解析成一棵语法树后,就需要将语法树转换成查询树,然而查询树的每一个节点或者节点之间的连接都会有一种或者多种实现算法,而需要从中挑选出最优的节点组合。
路径表示单个表的访问方式(顺序访问、索引访问、点查)、两个表的连接方式(嵌套连接、归并连接、hash连接)以及多个表的连接顺序。 那么优化器需要枚举出所有的路径,从中挑选代价最低的路径来执行。
查询树上有的节点是可以直接进行优化的,如过滤、投影等,在查询树底部先将不需要的数据过滤掉,以减少数据量往查询树上层的传递以及操作的成本,这种优化是显而易见的,是基于经验的,我们称为启发式规则优化。 然而,有的优化是无法直接进行的,例如,A JOIN B,JOIN顺序A JOIN B 或者 B JOIN A都会输出正确的查询树结果,哪种顺序成本最低呢,这就需要基于统计数据来进行估算,找出代价最小的顺序,这种优化我们称之为基于成本的优化。
Lua强语言的设计与实现
MLN是一款基于Lua的跨平台框架,伴随着使用范围的不断扩大,我们充分体会到跨平台框架给项目开发带来的灵活性和便捷性。但由于Lua语言是一种动态解释的轻量级语言,他自身的语法和语义都比较简单,也不支持面向对象,因此在使用MLN开发项目时,会遇到一些Lua语言本身的限制,比如不支持类型检查,不支持类和继承,不支持泛型,不支持重载等等,这些限制会给开发带来一些困难。尽管我们可以通过一些技巧来解决这些问题,比如通过元表来实现类和继承,通过闭包来实现泛型,通过函数指针来实现重载等等,但是这些技巧都有一些不可避免的限制,也给代码开发产生了许多麻烦,所以我们需要一种更加强大的方式来解决这些问题。
因此我们设计出一套基于Lua的强语言,他的语法接近于现代的Kotlin语言,支持类型检查,类和继承,泛型,重载等特性,并在Lua强语言的基础上,重新设计MLN的项目结构,提供对应的语言开发插件,从而让开发者能够更加专注于业务逻辑的开发,而不是在繁琐的代码实现上浪费太多的精力。在设计过程中,我们还考虑到了和旧项目的兼容问题,提供与Lua进行混合编译的能力,从而让开发者可以在不改动旧项目的情况下,逐步迁移项目到Lua强语言的实现上。
本文章会介绍Lua强语言的设计思路和编译器的具体实现,希望能够给大家带来一些启发。
陌陌向量检索引擎工程实践
全球每天产生的数据中,有80%是非结构化数据,常见的非结构化数据包括语音、图片、视频和语言文字等。通过深度学习等技术训练得到的模型对非结构化数据进行特征提取,将非结构化数据转换成一个多维的向量,这个过程称作Embedding。多维向量本质上是对非结构化数据在高位空间的映射,而向量检索就是对这些生成的向量进行检索,从中找到最相似的若干个向量。
非结构化检索本质是向量检索技术,其主要的应用领域如人脸识别、推荐系统、图片搜索、视频指纹、语音处理、自然语言处理、文件搜索等。随着AI技术的广泛应用,以及数据规模的不断增长,向量检索也逐渐成了AI技术链路中不可或缺的一环,更是对传统搜索技术的补充,并且具备多模态搜索的能力。
lua覆盖率测试概述
随着lua在公司各业务中落地范围的逐步扩大,我们对lua项目的质量要求与标准也在不断提高,为此,我们提供了应用于黑盒测试阶段的lua结构化测试方法,在业务测试的过程中,通过代码覆盖率技术收集代码的执行数据来完成qa测试过程与代码测试质量的量化。但在过去两年多的业务演进中,接入方的工程类型、结构、业务特性呈现出越来越多的多样化发展,导致lua覆盖率工具接入的兼容成为急需解决的问题,因此需要我们做进一步兼容与升级。
使用 Instruments 定位内存峰值
iPhone6/6p 在发布动态时选择特别多张大尺寸的图片(如网络下载的长图)时,会出现闪退的现象。
iOS 系统会根据设备硬件条件为每个App设定了一个内存使用上限,若App申请的内存超高该限制则会crash,也就是我们常说的OOM (Out Of Memory)。在6和6p手机上该限制的值为650M,当用户发送9张大图时,处理+上传图片时App占用内存会达到650M,触发了OOM崩溃。
陌陌逆地理编码算法改造
当输入地址而返回坐标时,即将地址信息转换成其所在的对应经纬度坐标,这个过程叫地理编码;反过来,当输入的是点坐标而返回的是一个地址描述,这个过程叫做逆地理编码。
- «
- 1
- »