自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(244)
  • 收藏
  • 关注

原创 案例分析:如何用设计模式优化性能9

就是对常用开发技巧进行的总结,它使得程序员之间交流问题,有了更专业、便捷的方式。比如,我们在《02|理论分析:性能优化有章可循,谈谈常用的切入点》中提到,I/O模块使用的是装饰器模式,你就能很容易想到I/O模块的代码组织方式。事实上,大多数设计模式并不能增加程序的性能,它只是代码的一种组织方式。本课时,我们将一一举例讲解和性能相关的几个设计模式,包括代理模式、单例模式、享元模式、原型模式等。

2025-01-19 17:56:40 1610 1

原创 Android静态代码扫描效率优化与实践3

FindBugs是一个静态分析工具,它检查类或者JAR文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2025-01-19 17:56:29 810 1

原创 百亿规模API网关服务Shepherd的设计与实现1

1.背景中国有句古话:“民以食为天”。对食物的分析和理解,特别是识别菜肴的食材,在健康管理、卡路里计算、烹饪艺术、食物搜索等领域具有重要意义。但是,算法技术尽管在目标检测[1]-[3]、通用场景理解[4][5]和跨模态检索[6]-[8]方面取得了很大进展,却没有在食物相关的场景中取得好的表现,尤其是对烹饪菜肴的相关场景。其核心原因是缺乏细粒度食材的基准,这已经成为该领域发展的瓶颈。以往的研究主要集中在食物层面的表征学习,如Food2K上的食物识别[9]-[12],UNIMIB2016上的食物检测

2025-01-19 17:56:12 529 1

原创 大前端:突破动态化容器的天花板15

最终我们获得了一个如上图的高性能、安全的动态化容器,可以以Wasm的方式支持原生级别的性能,也可以将JavaScript的前端工程的性能提升一截。从某个角度看,像是我们把RN用Rust重写了,添加了Wasm解释器的支持。但用熟悉WebView架构的视角看,也可以看作是一个WebEngineLite,只是试图绘制暂时用的系统UI。文章最后做一下回望和展望。回望:我们所做的所有架构和优化工作都可以概括为,区分本质复杂度和偶然复杂度,恰当的回应本质复杂度,降低偶然复杂度。动态化容器的本质复杂度是什么?

2025-01-19 17:55:52 974 1

原创 MYSQL如何设计可以动态扩容缩容的分库分表方案?面试题剖析8

这个是你必须面对的一个事儿,就是你已经弄好分库分表方案了,然后一堆库和表都建好了,基于分库分表中间件的代码开发啥的都好了,测试都ok了,数据能均匀分布到各个库和各个表里去,而且接着你还通过双写的方案咔嚓一下上了系统,已经直接基于分库分表方案在搞了。那么现在问题来了,你现在这些库和表又支撑不住了,要继续扩容咋办?这个可能就是说你的每个库的容量又快满了,或者是你的表数据量又太大了,也可能是你每个库的写并发太高了,你得继续扩容。这都是玩儿分库分表线上必须经历的事儿。

2025-01-19 17:55:28 1214 3

原创 超大规模数据库集群保稳系列:数据库攻防演练建设实践11

而随机无通知演练功能,就是希望建设这样的能力,可以在非特定时间、非特定集群、非特定场景进行故障演练,在一定程度上填补了故障演练的空白,也是故障演练平台向混沌工程演进的一个里程碑。第二部分是演练任务生成,有了演练计划后,我们按演练计划随机搭配生成演练任务并进行周知,和常规演练最大不同是我们不会周知演练的具体时间(会周知演练集群、场景),主要是为了模拟故障发生的随机性。第三部分是演练任务执行,它完全复用我们常规故障演练的功能,也可以在演练前取消、演练中终止,演练后可以自动恢复整个集群的拓扑。

2025-01-19 17:55:20 563 3

原创 Spark向量化计算在美团生产环境的实践4

i<num;++i){计算在CPU内完成,逻辑计算单元操作寄存器中的数据,算术运算的源操作数要先放置到CPU的寄存器中,哪怕简单的内存拷贝也需要过CPU寄存器。加载(Load),从内存加载2个源操作数(a[i]和b[i])到2个寄存器。计算(Compute),执行加法指令,作用于2个寄存器里的源操作数副本,结果产生到目标寄存器。存储(Store),将目标寄存器的数据存入(拷贝)到目标内存位置(c[i])。

2025-01-19 17:55:06 790 2

原创 案例分析:大对象复用的目标和注意点6

对于“”的优化。这里的“大对象”,是一个泛化概念,它可能存放在JVM中,也可能正在网络上传输,也可能存在于数据库中。那么为什么大对象会影响我们的应用性能呢?结合我们前面提到的缓存,以及对象的池化操作,加上对一些中间结果的保存,我们能够对大对象进行初步的提速。但这还远远不够,我们仅仅减少了对象的创建频率,但并没有改变对象“大”这个事实。本课时,将从JDK的一些知识点讲起,先来看几个面试频率比较高的;接下来,从数据的和出发,分别逐步看一下一些把对象变小,把操作聚焦的策略。

2025-01-19 17:54:48 1288 2

原创 案例研究:缓冲区技术如何优化代码执行速度29

SLF4J是Java里标准的日志记录库,它是一个允许你使用任何Java日志记录库的抽象适配层,最常用的实现是Logback,支持修改后自动reload,它比Java自带的JUL还要流行。这同样和生产者的缓冲区有关。这就是一个权衡的问题,缓冲区开得太大,会增加单次读写的时间,同时内存价格很高,不能无限制使用,缓冲流的默认缓冲区大小是8192字节,也就是8KB,算是一个比较折中的值。,它在记录日志时,使用了一个缓冲队列,当缓冲的内容达到一定的阈值时,才会把缓冲区的内容写到文件里。

2025-01-19 17:54:33 1757 3

原创 性能飞跃:缓冲区技术如何加速代码执行

SLF4J是Java里标准的日志记录库,它是一个允许你使用任何Java日志记录库的抽象适配层,最常用的实现是Logback,支持修改后自动reload,它比Java自带的JUL还要流行。这同样和生产者的缓冲区有关。这就是一个权衡的问题,缓冲区开得太大,会增加单次读写的时间,同时内存价格很高,不能无限制使用,缓冲流的默认缓冲区大小是8192字节,也就是8KB,算是一个比较折中的值。,它在记录日志时,使用了一个缓冲队列,当缓冲的内容达到一定的阈值时,才会把缓冲区的内容写到文件里。

2025-01-19 17:54:23 1541 1

原创 ThreadLocal部分核心源码回顾

不相等情况:不相等情况,以get(ThreadLocal2)为例计算下标为4,且4存在Entry,但key相等,这个时候则为往后迭代寻找key相等的元素,如果寻找过程中发现了有key=null的元素则回进行探测式清理操作。从散列表该下标开始往后查key相等的元素,如果找到则做清除操作,引用置为null,GC的时候key就会置为null,然后执行探测式清理处理。主要包含两种情况,一种是hash计算出下标,该下标对应的Entry.key和我们传入的key相等的情况,另外一种就是不相等的情况。

2025-01-19 17:54:15 1764 1

原创 Transformer大数据分布式因果推断在美团履约平台的探索与实践4

1.背景中国有句古话:“民以食为天”。对食物的分析和理解,特别是识别菜肴的食材,在健康管理、卡路里计算、烹饪艺术、食物搜索等领域具有重要意义。但是,算法技术尽管在目标检测[1]-[3]、通用场景理解[4][5]和跨模态检索[6]-[8]方面取得了很大进展,却没有在食物相关的场景中取得好的表现,尤其是对烹饪菜肴的相关场景。其核心原因是缺乏细粒度食材的基准,这已经成为该领域发展的瓶颈。以往的研究主要集中在食物层面的表征学习,如Food2K上的食物识别[9]-[12],UNIMIB2016上的食物检测

2025-01-19 17:54:03 1021 2

原创 SpringBoot 服务性能优化16

如果你的项目并发量比较高,想要修改最大线程数、最大连接数等配置信息,可以通过自定义Web容器的方式,代码如下所示。注意上面的代码,我们设置了它的协议为org.apache.coyote.http11.Http11Nio2Protocol,意思就是开启了Nio2。这个参数在Tomcat8.0之后才有,开启之后会增加一部分性能。对比如下(测试项目代码见):默认。

2025-01-19 17:51:51 591

原创 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:48:36 859 1

原创 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:48:33 793 4

原创 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:48:30 1031 1

原创 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:48:27 843

原创 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:48:24 691 2

原创 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:48:21 854 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 18:48:19 839 3

原创 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 18:48:16 778 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 18:48:13 957

原创 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 18:48:11 1019 4

原创 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:48:08 852 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 18:48:05 802 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 18:48:03 875 3

原创 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:48:00 1233 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 18:47:57 870 1

原创 Android静态代码扫描效率优化与实践1

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:56:34 857 3

原创 Android静态代码扫描效率优化与实践2

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:56:30 898 4

原创 Android静态代码扫描效率优化与实践4

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:56:24 627 3

原创 Android静态代码扫描效率优化与实践5

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:56:19 838 1

原创 Android静态代码扫描效率优化与实践6

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:56:15 961

原创 Android静态代码扫描效率优化与实践7

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:56:08 647 3

原创 Android静态代码扫描效率优化与实践8

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:56:05 786 2

原创 Android静态代码扫描效率优化与实践9

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:56:01 576

原创 Android静态代码扫描效率优化与实践10

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:55:58 855 1

原创 Android静态代码扫描效率优化与实践11

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:55:54 664

原创 Android静态代码扫描效率优化与实践12

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:55:50 819 4

原创 Android静态代码扫描效率优化与实践13

FindBugs是一个静态分析工具,它检查类或者JAR 文件,通过Apache的BCEL库来分析Class,将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式,目前的版本3.0.1内置了总计300多种缺陷,详细可参考官方文档。FindBugs作为一个扫描的工具集,可以非常灵活的集成在各种编译工具中。接下来,我们主要分析在Gradle中FindBugs的相关内容。

2024-12-22 15:55:46 806 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除