- 博客(246)
- 收藏
- 关注
原创 分布式因果推断在美团履约平台的探索与实践11
经过两年持续迭代,我们实现的分布式因果推断工具包已经发展成集模型训练、评估、去偏、Serving于一身的综合型因果工具包。我们内部为这个项目命名为CausalOnSpark,简称COS。目前这个项目也已经全部集成到图灵机器学习平台中。将来有机会我们会再次为大家分享美团履约技术团队在分布式因果推断领域的探索和实践经验。分布式因果推断在美团履约平台的探索与实践-美团技术团队提升分布式系统响应速度:分布式系统远程调用性能提升之道-优快云博客。
2025-01-19 17:36:45
637
原创 AutoConsis:UI内容一致性智能检测15
在流程上,对于每一个UI目标区域,AutoConsis利用OCR提取所有可识别的字符,随后将分词的结果与CoT示例进行拼合构成Prompt,最后从LLM(AutoConsis的实验部分调用GPT-3.5-Turbo完成)的输出中获取一致性检验所需的关键信息。以下介绍工具的设计过程。对于营销会场页而言,如UI区域识别流程图所示:我们将一个会场页的UI截图送入识别模型,并提供一个商品卡片和对应的文本描述作为检索词,该多模态模型会根据检索词从经UI组件分析处理过的会场页中筛选出近似的商品卡片。
2025-01-19 17:36:29
572
1
原创 百亿规模API网关服务Shepherd的设计与实现3
1.背景中国有句古话:“民以食为天”。对食物的分析和理解,特别是识别菜肴的食材,在健康管理、卡路里计算、烹饪艺术、食物搜索等领域具有重要意义。但是,算法技术尽管在目标检测[1]-[3]、通用场景理解[4][5]和跨模态检索[6]-[8]方面取得了很大进展,却没有在食物相关的场景中取得好的表现,尤其是对烹饪菜肴的相关场景。其核心原因是缺乏细粒度食材的基准,这已经成为该领域发展的瓶颈。以往的研究主要集中在食物层面的表征学习,如Food2K上的食物识别[9]-[12],UNIMIB2016上的食物检测
2025-01-19 17:36:12
608
2
原创 Android静态代码扫描效率优化与实践6
FindBugs是一个静态分析工具,它检查类或者JAR文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2025-01-19 17:35:51
847
原创 无处不在的缓存,高并发系统的法宝7
堆内缓存最常用的有FIFO、LRU、LFU这三种算法。FIFO这是一种先进先出的模式。如果缓存容量满了,将会移除最先加入的元素。这种缓存实现方式简单,但符合先进先出的队列模式场景的功能不多,应用场景较少。LRULRU是最近最少使用的意思,当缓存容量达到上限,它会优先移除那些最久未被使用的数据,LRU是目前最常用的缓存算法,稍后我们会使用Java的API简单实现一个。LFULFU是最近最不常用的意思。相对于LRU的时间维度,LFU增加了访问次数的维度。如果缓存满的时候,将。
2025-01-19 17:35:30
1466
1
原创 性能优化---结果集优化
除了书写要简单一些,一个重要的原因就是它的体积变小了,传输效率和解析效率变高了,像Google的Protobuf,体积就更小了一些。虽然可读性降低,但在一些高并发场景下(如RPC),能够显著提高效率,这是典型的对结果集的优化。数据从服务器传输到客户端,需要分发多份,这个数据量是急剧膨胀的,每减少一小部分存储,都会有比较大的传输性能和成本提升。像Nginx,一般都会开启GZIP压缩,使得传输的内容保持紧凑。我们要吸取缓冲区的经验,尽量减少网络连接的交互,采用批量处理的方式,增加处理速度。
2025-01-19 17:35:14
1005
1
原创 复用优化:缓冲(Buffer)+缓存(Cache)
由于这些对象的创建和销毁成本都比较大,我们在使用之后,也会将这部分对象暂时存储,下次用的时候,就不用再走一遍耗时的初始化操作了。上面的描述是编码逻辑上的优化,对于数据存取来说,有同样的复用情况。无论是在生活中还是编码中,重复的事情一直在发生,如果没有复用,工作和生活就会比较累。在写代码的时候,你会发现有很多重复的代码可以提取出来,做成公共的方法。这样,在下次用的时候,就不用再费劲写一遍了。注意这两个词的区别,它们的意义是完全不同的,很多同学很容易搞混,在这里简单地介绍一下。
2025-01-19 17:34:58
1129
1
原创 零拷贝---零拷贝---零拷贝14
零拷贝有多种模式,我们用sendfile来举例。如下图所示,在内核的支持下,零拷贝少了一个步骤,那就是内核缓存向用户空间的拷贝,这样既节省了内存,也节省了CPU的调度时间,让效率更高。硬盘上的数据,在发往网络之前,需要经过多次缓冲区的拷贝,以及用户空间和内核空间的多次切换。如果能减少一些拷贝的过程,效率就能提升,所以零拷贝应运而生。是一种非常重要的性能优化手段,比如常见的Kafka、Nginx等,就使用了这种技术。我们来看一下有无零拷贝之间的区别。没有采取零拷贝手段的图。采取了零拷贝手段的图。
2025-01-19 17:34:42
949
3
原创 SpringBoot 服务性能优化
如果你的项目并发量比较高,想要修改最大线程数、最大连接数等配置信息,可以通过自定义Web容器的方式,代码如下所示。注意上面的代码,我们设置了它的协议为org.apache.coyote.http11.Http11Nio2Protocol,意思就是开启了Nio2。这个参数在Tomcat8.0之后才有,开启之后会增加一部分性能。对比如下(测试项目代码见):默认。
2025-01-19 17:32:23
711
原创 大前端:突破动态化容器的天花板15
最终我们获得了一个如上图的高性能、安全的动态化容器,可以以Wasm的方式支持原生级别的性能,也可以将JavaScript的前端工程的性能提升一截。从某个角度看,像是我们把RN用Rust重写了,添加了Wasm解释器的支持。但用熟悉WebView架构的视角看,也可以看作是一个WebEngineLite,只是试图绘制暂时用的系统UI。文章最后做一下回望和展望。回望:我们所做的所有架构和优化工作都可以概括为,区分本质复杂度和偶然复杂度,恰当的回应本质复杂度,降低偶然复杂度。动态化容器的本质复杂度是什么?
2025-01-19 17:32:10
761
2
原创 Android 兼容 Java 8 语法特性的原理分析1
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:41:09
1149
原创 Android 兼容 Java 8 语法特性的原理分析2
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:41:06
553
3
原创 Android 兼容 Java 8 语法特性的原理分析3
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:41:03
943
原创 Android 兼容 Java 8 语法特性的原理分析4
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:41:00
876
2
原创 Android 兼容 Java 8 语法特性的原理分析5
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:58
948
原创 Android 兼容 Java 8 语法特性的原理分析6
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:55
803
1
原创 Android 兼容 Java 8 语法特性的原理分析7
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:51
741
2
原创 Android 兼容 Java 8 语法特性的原理分析8
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:48
565
1
原创 Android 兼容 Java 8 语法特性的原理分析9
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:46
666
1
原创 Android 兼容 Java 8 语法特性的原理分析10
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:43
663
1
原创 Android 兼容 Java 8 语法特性的原理分析11
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:40
1087
1
原创 Android 兼容 Java 8 语法特性的原理分析12
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:37
971
2
原创 Android 兼容 Java 8 语法特性的原理分析13
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:35
618
1
原创 Android 兼容 Java 8 语法特性的原理分析14
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:32
945
1
原创 Android 兼容 Java 8 语法特性的原理分析15
Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java 8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达 (函数闭包)函数式接口 (@FunctionalInterface)Stream API (通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2024-12-24 17:40:30
594
原创 Android静态代码扫描效率优化与实践1
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:37:20
593
1
原创 Android静态代码扫描效率优化与实践2
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:37:17
1005
1
原创 Android静态代码扫描效率优化与实践3
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:37:13
953
1
原创 Android静态代码扫描效率优化与实践4
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:37:09
532
2
原创 Android静态代码扫描效率优化与实践5
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:37:06
905
1
原创 Android静态代码扫描效率优化与实践7
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:36:59
600
2
原创 Android静态代码扫描效率优化与实践8
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:36:55
1008
2
原创 Android静态代码扫描效率优化与实践9
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:36:51
674
1
原创 Android静态代码扫描效率优化与实践10
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:36:48
910
原创 Android静态代码扫描效率优化与实践11
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:36:44
675
原创 Android静态代码扫描效率优化与实践12
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:36:40
807
2
原创 Android静态代码扫描效率优化与实践13
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:36:37
973
原创 Android静态代码扫描效率优化与实践14
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:36:33
985
原创 Android静态代码扫描效率优化与实践15
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:36:28
734
2
原创 Linux下跨语言调用C++实践1
为了达到业务方开箱即用的目的,综合考虑C++、Python、Java用户的使用习惯,我们设计了如下的协作结构:图 1实现方案一节中提到Python/Java不能直接调用C++接口,要先对C++中对外提供的接口用C语言的形式进行封装。这里根本原因在于使用动态库中的接口前,需要根据函数名查找接口在内存中的地址,动态库中函数的寻址通过系统函数dlsym实现,dlsym是严格按照传入的函数名寻址。在C语言中,函数签名即为代码函数的名称,而在C++语言中,因为需要支持函数重载,可能会有多个同名函数。
2024-12-20 22:07:50
742
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人