- 博客(256)
- 收藏
- 关注
原创 Spark向量化计算在美团生产环境的实践2
i<num;++i){计算在CPU内完成,逻辑计算单元操作寄存器中的数据,算术运算的源操作数要先放置到CPU的寄存器中,哪怕简单的内存拷贝也需要过CPU寄存器。加载(Load),从内存加载2个源操作数(a[i]和b[i])到2个寄存器。计算(Compute),执行加法指令,作用于2个寄存器里的源操作数副本,结果产生到目标寄存器。存储(Store),将目标寄存器的数据存入(拷贝)到目标内存位置(c[i])。
2025-01-19 17:43:35
594
原创 百亿规模API网关服务Shepherd的设计与实现5
1.背景中国有句古话:“民以食为天”。对食物的分析和理解,特别是识别菜肴的食材,在健康管理、卡路里计算、烹饪艺术、食物搜索等领域具有重要意义。但是,算法技术尽管在目标检测[1]-[3]、通用场景理解[4][5]和跨模态检索[6]-[8]方面取得了很大进展,却没有在食物相关的场景中取得好的表现,尤其是对烹饪菜肴的相关场景。其核心原因是缺乏细粒度食材的基准,这已经成为该领域发展的瓶颈。以往的研究主要集中在食物层面的表征学习,如Food2K上的食物识别[9]-[12],UNIMIB2016上的食物检测
2025-01-19 17:43:20
959
原创 Android 兼容 Java 8 语法特性的原理分析8
Java8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达(函数闭包)函数式接口(@FunctionalInterface)StreamAPI(通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2025-01-19 17:43:00
1199
原创 攻破工程级复杂缓存难题--企业实战23
本地缓存适用于频繁访问且少变更的数据,如API信息和业务基础信息,而双缓存方案则通过Tair和Squirrel的组合,实现主备缓存切换和高可用性。然而,缓存系统也面临着诸多挑战,如缓存穿透、缓存雪崩、缓存击穿和热点key问题。分布式缓存通过将数据存储在独立的缓存服务器上,并提供高效的访问接口,极大地提升了数据的访问速度和系统的伸缩性。如果你住的地方附近有便利的超市,随时可以买到新鲜的食物,且你目前的家庭成员不多,消耗量不大,那么大规模囤粮不仅占用储物空间,还可能造成浪费(因为食品有保质期)。
2025-01-19 17:42:32
1570
2
原创 超越常规:斐波那契数列的极速计算技术8
这是因为快速幂算法的时间复杂度为O(logn),在算法中只需进行logn次乘法运算。也就是说,数列的第三个数是前两个数的和,第四个数是第二个数和第三个数的和,以此类推。因此,空间复杂度为O(1),即常数级别的空间复杂度。基本思想是利用矩阵乘法的性质,将斐波那契数列的递推关系表示为矩阵形式,然后通过快速幂算法来快速计算矩阵的高次幂,从而得到斐波那契数列的第n项的值。矩阵解法结合快速幂的斐波那契数列算法具有优秀的时间复杂度O(logn)和空间复杂度O(1),适用于需要高效计算大数值斐波那契数列的场景。
2025-01-19 17:42:20
1737
2
原创 SpringBoot 服务性能优化15
如果你的项目并发量比较高,想要修改最大线程数、最大连接数等配置信息,可以通过自定义Web容器的方式,代码如下所示。注意上面的代码,我们设置了它的协议为org.apache.coyote.http11.Http11Nio2Protocol,意思就是开启了Nio2。这个参数在Tomcat8.0之后才有,开启之后会增加一部分性能。对比如下(测试项目代码见):默认。
2025-01-19 17:42:05
1585
原创 JMC让Java性能数据一目了然:从入门到精通
对于我们常用的HotSpot来说,有更强大的工具,那就是JMC。JMC集成了一个非常好用的功能:JFR(JavaFlightRecorder)。FlightRecorder源自飞机的黑盒子,是用来录制信息然后事后分析的。JFR功能是建在JVM内部的,不需要额外依赖,可以直接使用,它能够监测大量数据。比如,我们提到的锁竞争、延迟、阻塞等;甚至在JVM内部,比如SafePoint、JIT编译等,也能去分析。,下面介绍一下JMC的使用。
2025-01-19 17:41:45
2277
1
原创 Linux下跨语言调用C++实践4
为了达到业务方开箱即用的目的,综合考虑C++、Python、Java用户的使用习惯,我们设计了如下的协作结构:图1实现方案一节中提到Python/Java不能直接调用C++接口,要先对C++中对外提供的接口用C语言的形式进行封装。这里根本原因在于使用动态库中的接口前,需要根据函数名查找接口在内存中的地址,动态库中函数的寻址通过系统函数dlsym实现,dlsym是严格按照传入的函数名寻址。在C语言中,函数签名即为代码函数的名称,而在C++语言中,因为需要支持函数重载,可能会有多个同名函数。
2025-01-19 17:41:30
580
原创 Android 兼容 Java 8 语法特性的原理分析10
Java8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java8,从该版本起,Java开始支持函数式编程。特别是吸收了运行在JVM上的Scala、Groovy等动态脚本语言的特性之后,Java8在语言的表达力、简洁性两个方面有了很大的提高。Lambda表达(函数闭包)函数式接口(@FunctionalInterface)StreamAPI(通过流式调用支持map、filter等高阶函数)方法引用(使用::关键字将函数转化为对象)
2025-01-19 17:41:19
765
原创 大前端:突破动态化容器的天花板13
最终我们获得了一个如上图的高性能、安全的动态化容器,可以以Wasm的方式支持原生级别的性能,也可以将JavaScript的前端工程的性能提升一截。从某个角度看,像是我们把RN用Rust重写了,添加了Wasm解释器的支持。但用熟悉WebView架构的视角看,也可以看作是一个WebEngineLite,只是试图绘制暂时用的系统UI。文章最后做一下回望和展望。回望:我们所做的所有架构和优化工作都可以概括为,区分本质复杂度和偶然复杂度,恰当的回应本质复杂度,降低偶然复杂度。动态化容器的本质复杂度是什么?
2025-01-19 17:39:11
772
原创 Hadoop YARN:调度性能优化实践2
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:08:27
862
原创 Hadoop YARN:调度性能优化实践4
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:07:01
825
原创 Hadoop YARN:调度性能优化实践3
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:05:46
826
原创 Hadoop YARN:调度性能优化实践5
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:05:15
679
原创 Hadoop YARN:调度性能优化实践1
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:04:49
753
1
原创 Hadoop YARN:调度性能优化实践6
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:04:36
578
1
原创 Hadoop YARN:调度性能优化实践10
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:04:33
734
1
原创 Hadoop YARN:调度性能优化实践7
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:04:14
794
原创 Hadoop YARN:调度性能优化实践8
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:04:11
823
原创 Hadoop YARN:调度性能优化实践9
本文主要介绍了美团点评Hadoop YARN集群公平调度器的性能优化实践。做性能优化,首先要定义宏观的性能指标,从而能够评估系统的性能。定义压测需要观察的细粒度指标,才能清晰看到系统的瓶颈。工欲善其事,必先利其器。高效的压力测试工具是性能优化必备的利器。优化算法的思路主要有:降低算法时间复杂度;减少重复计算和不必要的计算;并行化。性能优化是永无止境的,要根据真实业务来合理预估业务压力,逐步开展性能优化的工作。代码上线需谨慎,做好防御方案。
2024-12-25 08:04:07
731
1
原创 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 18:05:28
1179
原创 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 18:05:25
1051
原创 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 18:05:22
632
原创 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 18:05:20
804
原创 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 18:05:17
560
原创 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 18:05:14
615
原创 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 18:05:03
559
原创 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 18:04:53
1064
原创 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 18:04:49
977
原创 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 18:04:47
675
原创 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 18:04:32
821
原创 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 18:04:29
1010
原创 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 18:04:28
607
原创 Android静态代码扫描效率优化与实践1
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:58:40
773
原创 Android静态代码扫描效率优化与实践2
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:58:37
744
原创 Android静态代码扫描效率优化与实践3
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:58:33
838
原创 Android静态代码扫描效率优化与实践4
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:58:30
863
1
原创 Android静态代码扫描效率优化与实践5
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:58:26
758
原创 Android静态代码扫描效率优化与实践6
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:58:22
600
1
原创 Android静态代码扫描效率优化与实践7
FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。
2024-12-22 14:58:19
651
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅