首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【开源公告】微信自研APM利器Matrix正式开源

) 搜索不含 alpha 通道的 png 文件 搜索未经压缩的文件类型 检查是否包含多 ABI 版本的动态库 统计 APK 中包含的 R 类以及 R 类中的 field count 搜索冗余的文件 检查是否有多个动态库静态链接了...STL 搜索 APK 中包含的无用资源 搜索 APK 中包含的无用 assets 文件 搜索 APK 中未经裁剪的动态库 02 SQLite Lint SQLite Lint是一个 SQLite 使用质量的自动化检测工具...,犹如一个 SQLite 优化高手在开发或者测试过程中不厌其烦地、仔细地 review 你的 SQL 语句,是团队高质量 SQLite 实践中的一个有用工具。...SQLite Lint 当前支持的检测能力包括: 检测索引使用问题 检测冗余索引问题 检测 select * 问题 检测 Autoincrement 问题 检测建议使用 prepared statement...:除具备 APKAnalyzer 的功能外,还支持统计 APK 中包含的 R 类、检查是否有多个动态库静态链接了 STL 、搜索 APK 中包含的无用资源,以及支持自定义检查规则等 输出的检查结果更加详实

1.2K40

微信自研 APM 利器,Matrix 正式开源了

) 搜索不含 alpha 通道的 png 文件 搜索未经压缩的文件类型 检查是否包含多 ABI 版本的动态库 统计 APK 中包含的 R 类以及 R 类中的 field count 搜索冗余的文件 检查是否有多个动态库静态链接了...STL 搜索 APK 中包含的无用资源 搜索 APK 中包含的无用 assets 文件 搜索 APK 中未经裁剪的动态库 SQLite Lint SQLite Lint是一个 SQLite 使用质量的自动化检测工具...,犹如一个 SQLite 优化高手在开发或者测试过程中不厌其烦地、仔细地 review 你的 SQL 语句,是团队高质量 SQLite 实践中的一个有用工具。...SQLite Lint 当前支持的检测能力包括: 检测索引使用问题 检测冗余索引问题 检测 select * 问题 检测 Autoincrement 问题 检测建议使用 prepared statement...:除具备 APKAnalyzer 的功能外,还支持统计 APK 中包含的 R 类、检查是否有多个动态库静态链接了 STL 、搜索 APK 中包含的无用资源,以及支持自定义检查规则等 输出的检查结果更加详实

14.7K91
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    微信全文搜索耗时降94%?我们用了这种方案

    SQLite FTS3 和 FTS5 的大部分性能很接近,FTS5 索引的生成耗时比 FTS3 高一截,但这个有优化方法。...但是这样做有两个弊端,一个是业务层每做一个转换都需要对内容做一次遍历,引入冗余计算量。...3.1.2 避免冗余索引内容 FTS 索引表默认对表中的每一列的内容都建倒排索引,即便是数字内容也会按照文本来处理,这样会导致我们保存在 FTS 索引表中的非文本搜索内容也建了索引,进而增大索引文件的大小...FTS5 支持给索引表中的列添加 UNINDEXED 约束,这样 FTS5 就不会对这个列建索引了,所以给可搜索文本内容之外的所有列添加这个约束就可以避免冗余索引。...进度数据的使用方法如下: 无论业务数据是否保存成功、更新通知是否到达全文搜索模块、索引数据是否保存成功,这套索引更新逻辑都能保证保存成功的业务数据都能成功建到索引。

    3.6K62

    Matrix SQLiteLint -- SQLite 使用质量检测

    SQLite 在移动端开发中广泛使用,其使用质量直接影响到产品的体验。微信是个重度使用 SQLite 的应用,相关的质量检测也是质量监控体系中不可忽视的一部分。  ...解决这类问题,一般就是建立合适的索引。 4. 不足够的索引组合 这个主要指已经建立了索引,但索引组合的列并没有覆盖足够 where 子句的条件式中的列。...SQLiteLint 检测出这种问题,建议先关注该 sql 语句是否有性能问题,再决定是否建立一个更长的索引。举个例子: ?...二、检测冗余索引问题 SQLiteLint 会在应用启动后对所有的表检测一次是否存在冗余索引,并建议保留最大那个索引组合。...index1,index2 就冗余了。

    2.9K20

    百亿级性能

    如上,在4亿行中查询第1000页,耗时16毫秒。 对于高手来说,这个算不得什么,只要注意好索引就行。...这个“演示平台”建立于两年前,给两家领先物流企业递交了简历,其中一家因SQLite拒绝了,另一家给了数据架构师! 现在,每天1亿个快递包裹在路上,产生大量扫描数据。...前面SQLite单表4亿数据,共有两个索引,自增ID作为主键,另外有订单号索引。...明细表一定必须根据统计ID来查,由统计ID跟其它主要业务字段构成主索引。 合理查询 既然有了索引,那么大表的任意查询都必须命中索引(或者部分使用索引) 。...此时需要XCode的扩展属性 适当冗余。为了便于查询,可以适当冗余一些字段,但绝不能滥用。比如商家所在地区,如果查询用不到而只是分析时使用,就不需要保存商家ID以外还保存地区 只查询需要的字段。

    97120

    iOS微信全文搜索技术优化

    ,不保存冗余索引内容。...但是这样做有两个弊端,一个是业务层每做一个转换都需要对内容做一次遍历,引入冗余计算量,另一个是写入到索引中的内容是转变后的内容,那么搜索出来的结果也是转变后的,会和原文不一致,业务层做内容判断的时候容易出错...1.2 避免冗余索引内容 FTS索引表默认对表中的每一列的内容都建倒排索引,即便是数字内容也会按照文本来处理,这样会导致我们保存在FTS索引表中的非文本搜索内容也建了索引,进而增大索引文件的大小、索引更新的耗时和搜索的耗时...FTS5支持给索引表中的列添加UNINDEXED约束,这样FTS5就不会对这个列建索引了,所以给可搜索文本内容之外的所有列添加这个约束就可以避免冗余索引。...进度数据的使用方法如下: 无论业务数据是否保存成功、更新通知是否到达全文搜索模块、索引数据是否保存成功,这套索引更新逻辑都能保证保存成功的业务数据都能成功建到索引。

    2.5K60

    微信手机端的本地数据全文检索优化之路

    3.2 业务独立性 微信的核心业务是联系人和消息,而微信全文搜索无论是在建立索引、更新索引或者删除索引时,都需要处理大量数据。 为了使得全文搜索不影响微信的核心业务,采用如下的存储架构: ?...SQLite FTS官网上的例子,都是以单索引表的方式,每一列对应业务的某一个属性,当对应业务发生变化,需要修改索引表的结构。...图中的红色圈内的数字表示,此会话中,包含关键字“我”的聊天记录的个数,而会话的排序规则就是会话的活跃时间。...微信聊天记录的搜索有一下两个特点: 有统计属性; 数量非常多(单关键词命中最高可达到20万条)。...》 《架构之道:3个程序员成就微信朋友圈日均10亿发布量[有视频]》 《快速裂变:见证微信强大后台架构从0到1的演进历程(一)》 《快速裂变:见证微信强大后台架构从0到1的演进历程(二)》 《微信团队原创分享

    2.7K20

    Python与数据库的那些事

    物品:此表包含主键,物品名称和物品价格。 购买的项目:此表将包含订单号,日期和价格。它还将连接到“项目”和“客户”表中的主键。...执行速度还受数据库中是否存在索引的影响。索引非常重要,它可以快速搜索表并找到查询中指定列的匹配项。索引以增加插入时间和一些存储为代价对记录进行排序。可以组合多个列以创建单个索引。...想象一下,如果我们有八个嵌套顺序,那么在SQL中必须执行的连接数需要多少。但是现在,如果需要运行报告,提取有关该财务数据的信息并推断结论该怎么办?...id来检查名称是否在Redis中。...如果不是,则使用过期时间来设置名称,现在,如果面试官问这段代码是否有问题,回答应该是没有异常处理!数据库可能有很多问题,例如连接断开,因此永远要考虑异常捕捉。

    1.7K40

    谷歌Agent首次发现真实世界代码漏洞!抢救全球数亿设备,或挽回数十亿美元损失?

    之所以会有这次尝试,是因为今年早些时候,在DARPA的AIxCC活动中,亚特兰大团队在SQLite中发现了一个空指针取消引用的漏洞,这就给了谷歌研究者启发—— 是否可以使用SQLite进行测试,看看能否找到更严重的漏洞呢...方法架构 Naptime和Big Sleep项目的关键驱动因素,就是已经发现并修补的漏洞变种,仍在现实中不断被发现。...然而,该漏洞与虚拟表的查询计划有关,所以我们仍然需要一个虚拟表来触发此问题。 我将使用code_browser_source工具来检索SQLite中的内置虚拟表示例。...它们的索引是: - value: 0 - start: 1 - step: 2 - stop:3 要触发此漏洞,我们可以对ROWID施加一个约束,并对ROWID的约束使用iColumn = -1。...虽然SQLite AFL仓库中包含一个针对研究者提供给Big Sleep智能体的、相同CLI二进制文件的模糊测试配置,但似乎并未被广泛使用。 这个漏洞是否真的容易发现?

    5900

    微信全文搜索优化之路

    FTS5发布于2015年中。 存储架构 ---- 微信全文搜索在2014 年底上线,最初主要服务于联系人和聊天记录的业务搜索。...业务独立性 微信的核心业务是联系人和消息,而微信全文搜索无论是在建立索引、更新索引或者删除索引时,都需要处理大量数据,为了使得全文搜索不影响微信的核心业务,采用如下的存储架构: 独立DB、读写分离:微信全文搜索在整体架构上独立于主业务...SQLite FTS官网上的例子,都是以单索引表的方式,每一列对应业务的某一个属性,当对应业务发生变化,需要修改索引表的结构。...如图所示: 图中的红色圈内的数字表示,此会话中,包含关键字“我”的聊天记录的个数,而会话的排序规则就是会话的活跃时间。...微信聊天记录的搜索有一下两个特点: 有统计属性 数量非常多(单关键词命中最高可达到20万条) 从搜索流程图中可以看出,微信最初采用的方案是在Java层统计个数和排序,此方法在大数据的情况下不可取。

    1.8K20

    微信全文搜索优化之路

    FTS5发布于2015年中。 存储架构 微信全文搜索在2014 年底上线,最初主要服务于联系人和聊天记录的业务搜索。...业务独立性 微信的核心业务是联系人和消息,而微信全文搜索无论是在建立索引、更新索引或者删除索引时,都需要处理大量数据,为了使得全文搜索不影响微信的核心业务,采用如下的存储架构: 独立DB、读写分离:微信全文搜索在整体架构上独立于主业务...SQLite FTS官网上的例子,都是以单索引表的方式,每一列对应业务的某一个属性,当对应业务发生变化,需要修改索引表的结构。...如图所示: 图中的红色圈内的数字表示,此会话中,包含关键字“我”的聊天记录的个数,而会话的排序规则就是会话的活跃时间。...微信聊天记录的搜索有一下两个特点: 有统计属性 数量非常多(单关键词命中最高可达到20万条) 从搜索流程图中可以看出,微信最初采用的方案是在Java层统计个数和排序,此方法在大数据的情况下不可取。

    9.3K42

    移动客户端中高效使用 SQLite

    V3 版本发现出生日期与年龄两个字段有重复,冗余的数据会带来数据库体积的增加。希望 V3 数据库能够只保留出生日期字段。我们依然从 meta 读取数据库版本号信息。...针对 WHERE CLAUSE 中的列加了索引以后的情况。SQLite 在进行搜索的时候会先根据索引表i1找到对应的行,再根据 rowid 去原表中获取 b 列对应的数据。...这次 SQLite 选择了索引 i2 而非索引 i1,因为 a、b 列数据都在同一张表中,减少了一次根据行号去原表查询数据的操作。...从外存读取索引表的一个节点到内存,再在内存判断这个节点是否有对应的 key(或者判断节点是否需要合并或分裂)。而统计研究表明,外存中获取下一个节点的耗时比内存中各项操作的耗时多好几个数量级。...利用 Lambda 表达式简化从UI线程异步调用数据库接口 好的 App 架构,一定会为数据库单独安排一个线程。

    5.5K70

    谷歌内部项目:大模型AI智能体发现了代码漏洞

    机器之心报道 机器之心编辑部 开源数据库引擎 SQLite 有 bug,还是智能体检测出来的! 通常,软件开发团队会在软件发布之前发现软件中的漏洞,让攻击者没有破坏的余地。...Naptime 架构 研究团队认为:与开放式漏洞研究相比,变体分析任务更适合当前的 LLM。...现在,Big Sleep 智能体发现了第一个现实软件漏洞:SQLite 中可利用堆栈缓冲区下溢。...研究团队收集了 SQLite 存储库中最近的一些提交,手动删除了琐碎的和仅用于文档的更改,然后调整了 prompt,为智能体提供提交消息(commit message)和更改的差异,要求智能体检查当前存储库是否存在可能尚未修复的相关问题...简单来说,SQLite 这个漏洞是在索引类型字段 iColumn 中使用了特殊的 sentinel 值 -1: 7476: struct sqlite3_index_constraint { 7477

    6000

    分表分库(百亿级大数据存储)

    整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中,代表作有百亿级大数据实时计算项目。...不建议做视图union,那样会无穷无尽,业务逻辑还是放在代码中为好,数据库做好存储与基础计算。...订单表可以根据单号Crc16哈希分表,便于单行查找更新,作为宽表拥有各种明细字段,同时还可以基于订单时间建立一套时间序列表,作为冗余,只存储单号等必要字段。...至于是否需要分库,主要由存储空间以及性能要求决定。 分表与分区对比 还有一个很常见的问题,为什么使用分表而不是分区?...分区除了能建立子索引外,还可以建立全局索引,而分表不能建立全局索引; 分区能跨区查询,但非常非常慢,一不小心就扫描所有分区; 分表架构,很容易做成分库,支持轻易扩展到多台服务器上去,分区只能要求数据库服务器更强更大

    1.1K30

    吃透这篇微服务数据架构,数据分类存储特性,关系数据库你就行了

    在微服务架构下,对于数据一致性的处理,强一致性的事务管理机制不一定是适合的解决方案,之前单体架构下强一致性的事务模式在微服务架构中可能会带来一系列性能损失和数据一致性问题与挑战。...微服务架构有很多不同的设计考量,它强调去中心化的数据治理,更强调每个微服务都拥有自己独立的数据存储,而不同服务在数据共享方面需要采取一定的策略和补偿方式来保证数据的一致性。...● 复合键:复合键(组合键)将多列作为一个索引键,一般用于复合索引。 ● 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列值进行排序的一种结构,类似图书的目录。...● SQLite:轻量级数据库,主要应用在移动平台。...适合OLTP事务型的业务数据类型,保持数据的一致性是中心化数据库架构的最大优势。 ● 易于维护:丰富的完整性(指实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率。

    46820

    微信团队分享:微信移动端的全文检索多音字问题解决方案

    另外:微信团队在另一个文章《微信手机端的本地数据全文检索优化之路》 中,分享了更为详细的全文检索优化思路,建议有兴趣的开发者可以深入的看看。...众所周知,汉语博大精深,常用的汉字有20777个,而词语(包括成语)的汉字个数为2到16个,同一个汉字在不同词语中读音有可能不一样。...在SQLite FTS5中,一个词语可以通过一个DocId和一个TermOffset来定位,所以当两个词语拥有同一个DocId和TermOffset时,就可以说这两个词语为同义词了,也就有了如下的索引方案...考虑到最后一个拼音为前缀搜索,所以,在列举拼音组合时,前面都需要考虑符合完整的拼音,最后一个可以只考虑是否是某个拼音的前缀。...》  《架构之道:3个程序员成就微信朋友圈日均10亿发布量[有视频]》  《快速裂变:见证微信强大后台架构从0到1的演进历程(一)》 《快速裂变:见证微信强大后台架构从0到1的演进历程(二)》

    6.2K33

    微信为什么使用 SQLite 保存聊天记录?

    SQLite 号称是部署和使用最广泛的数据库引擎。我认为这很有可能,因为 SQLite 没有版权的限制。无论何时,只要开发者想使用 SQL 在文件中存储结构化的数据,SQLite 应是首选方案。...也就是使用语句: WHERE c  FALSE    OR c IS NULL 这种形式的语句更长并且有一些冗余语句(c被使用了两次)。...此示例很好地总结了filter子句的作用:它是聚合函数的后缀,可以在进行聚合之前根据特定条件,过滤掉相应的行。pivot技术是filter子句最常见的用例。...这是一个特有的SQL扩展,即它不是标准SQL的一部分,因此在下面的矩阵中是灰色的。但是,SQLite遵守与PostgreSQL相同的语法来实现此功能0。该标准提供了对merge语句的支持。...从普通开发到架构师、再到合伙人。一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你能坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。

    1.9K10

    蓝牙项目开发流程

    dex文件的反编译-dex2jar和jd-gui Android动态加载学习总结(一):类加载器 有demo Android 使用Ant打渠道包 3,使用的架构 *****  从友盟微社区看...android使用onActivityResult能否在其他非activity类获取 我想请问下,onActivityResult是否只能在activity中才能接受到其他activity返回的数据...(确定取消对话框、单选对话框、多选对话框)实例代码_Android_脚本之家 53集合减操作:查询数据库中重发的血糖是否发全,缺少哪一个。...,这两个对象是否指向同一堆内存?...- CSDN.NET java中long 72、当一个发射器的数据有几千条时查询会比较慢 方案1:使用索引 SQLite 索引 - SQLite教程 在SQLite中使用索引优化查询速度

    3.5K100
    领券