硬核干货
文章平均质量分 90
京东云技术团队
京东云技术团队官方账号,传递技术最佳实践&技术创新。
展开
-
为啥不建议用BeanUtils.copyProperties拷贝数据 | 京东云技术团队
在实际的业务开发中,我们经常会碰到VO、BO、PO、DTO等对象属性之间的赋值,当属性较多的时候我们使用get,set的方式进行赋值的工作量相对较大,因此很多人会选择使用spring提供的拷贝工具BeanUtils的copyProperties方法完成对象之间属性的拷贝。通过这种方式可以很大程度上降低我们手动编写对象属性赋值代码的工作量,既然它那么方便为什么还不建议使用呢?下面是我整理的BeanUtils.copyProperties数据拷贝一些常见的坑。原创 2023-12-22 10:21:16 · 1841 阅读 · 0 评论 -
使用 Taro 开发鸿蒙原生应用 —— 当 Taro 遇到纯血鸿蒙 | 京东云技术团队
是不是有种突然结束,戛然而止的感觉?哈哈哈,本文是 「Taro 适配鸿蒙 ArkTS」系列文章的第一篇,算是先导预告片,在后续我们会陆续释出其他文章,例如详解 Taro 适配鸿蒙 ArkTS 原理、Taro 开发 ArkTS 应用最佳实践、Taro 性能优化利器-半编译技术介绍等等,向社区介绍 Taro 的最新成果。原创 2023-12-13 11:10:09 · 1289 阅读 · 0 评论 -
小小的日志,大大的坑 | 京东云技术团队
在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索。绝大多数人都认可日志的重要性,但是又有哪些场景可能导致性能问题?今天就让我们来聊聊Java日志性能那些事。原创 2023-12-12 11:57:59 · 372 阅读 · 1 评论 -
Nacos 配置中心源码 | 京东物流技术团队
在引入配置中心 maven 依赖的 jar 文件中找到,在该配置文件找到 NacosConfigBootstrapConfiguration 配置类,该类是 nacos 配置中心的入口类,类中注册了三个 bean。:属性配置类,对应配置文件中 spring.cloud.nacos.config 前缀的属性。:管理 NacosConfigProperties 和 ConfigService。:加载配置中心配置信息。原创 2023-12-11 11:28:51 · 385 阅读 · 0 评论 -
拓扑排序实现循环依赖判断 | 京东云技术团队
本文方案脱离Spring Bean的管理,通过算法实现的方式,完成对象循环依赖的判断,涉及的知识点包括:邻接矩阵图、拓扑排序、循环依赖。本文会着重讲解技术实现,具体算法原理不再复述原创 2023-12-11 11:27:29 · 448 阅读 · 0 评论 -
Flink State 状态原理解析 | 京东物流技术团队
State 用于记录 Flink 应用在运行过程中,算子的中间计算结果或者元数据信息。运行中的 Flink 应用如果需要上次计算结果进行处理的,则需要使用状态存储中间计算结果。如 Join、窗口聚合场景。Flink 应用运行中会保存状态信息到 State 对象实例中,State 对象实例通过 StateBackend 实现将相关数据存储到 FS 文件系统或者 RocksDB 数据库中。在Flink应用运行过程中,通过 checkpoint 快照定期地保存状态数据。原创 2023-12-06 12:32:36 · 636 阅读 · 0 评论 -
扫盲Kafka?看这一篇就够了! | 京东云技术团队
如何处理所有Replica都不工作?Controller leader:当broker启动的时候,都会创建KafkaController对象,但是集群中只能有一个leader对外提供服务,这些每个节点上的KafkaController会在指定的zookeeper路径下创建临时节点,只有第一个成功创建的节点的KafkaController才可以成为leader,其余的都是follower。而粘性会保证跟上一次的尽量一致,只是将新的需要分配的分区,均匀的分配到现有可用的消费者中即可,这样就减少了上下文的切换。原创 2023-12-06 11:48:20 · 409 阅读 · 0 评论 -
SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel | 京东云技术团队
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。https://github.com/alibaba/Sentinel/wiki/Sentinel-核心类解析/*** 1.未配置流控规则 1000次请求没有间隔发起请求,应该在1秒中完成09:44:33* @return*/原创 2023-11-30 11:22:08 · 835 阅读 · 0 评论 -
前端常用设计模式初探 | 京东云技术团队
设计模式一直是程序员谈论的“高端”话题之一,总有一种敬而远之的心态。在了解后才知道在将函数作为一等对象的语言中,有许多需要利用对象多态性的设计模式,比如单例模式、 策略模式等,这些模式的结构与传统面向对象语言的结构大相径庭,实际上已经融入到了语言之中,我们可能经常使用它们,只是不知道它们的名字而已。原创 2023-11-29 11:45:00 · 443 阅读 · 0 评论 -
Batrix企业能力库之物流交易域能力建设实践 | 京东物流技术团队
本文重点为大家介绍交易域如何使用Batrix框架沉淀能力原创 2023-11-29 11:43:14 · 317 阅读 · 0 评论 -
UData+StarRocks在京东物流的实践 | 京东物流技术团队
联邦查询可以很好的解决这个问题,使用统一的查询引擎屏蔽了不同olap的引擎的专有DSL,大大提升了开发效率和学习成本,同时可以用ONE SQL方式整合来自不同数据源的指标形成新的指标,从而提高了指标的复用性。改造后,我们在数据存储层引入了StarRocks,StarRocks提供了极速的单表和多表查询能力,同时以StarRocks为基础我们打造了统一查询引擎,统一查询引擎根据京东的业务特点增加数据源和聚合下推等功能,UData在统一查询引擎的基础上统一了数据分析和数据服务功能。原创 2023-11-28 11:47:01 · 481 阅读 · 0 评论 -
TS版LangChain实战:基于文档的增强检索(RAG) | 京东云技术团队
围绕以上设计原则,LangChain解决了现在开发人工智能应用的一些切实痛点。另外作为一个胶水层框架,极大地提高了开发效率,它的作用可以类比于jquery在前端开发中的角色,使得开发者可以更专注于创新和优化产品功能。原创 2023-11-28 11:45:45 · 1213 阅读 · 0 评论 -
Jayway JsonPath-提取JSON文档内容的Java DSL | 京东物流技术团队
JsonPath是一种能够提取部分JSON文档属性、对象、数组的语法,支持条件过滤、数学运算、字符串处理等功能。JsonPath与JSON文档就像 XPath 表达式与 XML 文档结合使用一样。原创 2023-11-27 10:41:32 · 820 阅读 · 0 评论 -
【代码可视化实践】代码变更影响分析 | 京东云技术团队
越早评估出改动的影响面将更容易把风险扼杀在摇篮里,以更小的成本避免事故的发生。本文提供了一种"代码变更影响分析"功能的粗粒度实现方案,综合运用了Git、源码分析、可视化图表等技术。不过针对愈发复杂的业务现状,文中描述的功能还比较初级,还需要按场景进行针对性的增强和细化,从而真正做到对开发者有帮助。原创 2023-11-24 10:26:05 · 805 阅读 · 1 评论 -
ASM字节码操作类库(打开java语言世界通往字节码世界的大门) | 京东云技术团队
授人以鱼不如授人以渔,应用asm的文章有很多,简单demo的也很多,那么ASM都具备哪些能力呢?如何去学习编写ASM代码呢?什么样的情景需要用到ASM呢?让我们带着这些问题阅读这篇文章吧。原创 2023-11-22 11:16:11 · 1232 阅读 · 0 评论 -
高效开发与设计:提效Spring应用的运行效率和生产力 | 京东云技术团队
线上的业务 jar 包基本上普遍比较庞大,动不动一个 jar 包几百 M,启动时间在10分钟级,拖慢了我们在故障时快速扩容的响应、以及本地开发调试效率。于是做了一些分析,看看 Spring 程序启动慢到底慢在哪里,如何去优化,目前的效果是大部分大型应用启动时间可以缩短 70%~80%。原创 2023-11-20 11:13:21 · 491 阅读 · 0 评论 -
你真的了解@Async吗? | 京东云技术团队
开发中会碰到一些耗时较长或者不需要立即得到执行结果的逻辑,比如消息推送、商品同步等都可以使用异步方法,这时我们可以用到@Async。但是直接使用 @Async 会有风险,当我们没有指定线程池时,他会默认使用其Spring自带的 SimpleAsyncTaskExecutor 线程池,会不断的创建线程,当并发大的时候会严重影响性能。所以可以将异步指定线程池使用原创 2023-11-17 11:25:40 · 375 阅读 · 0 评论 -
深入跨域 - 从初识到入门 | 京东物流技术团队
跨域这两个字就像一块狗皮膏药一样黏在每一个前端开发者身上,无论你在工作上或者面试中无可避免会遇到这个问题。如果在网上搜索跨域问题,会出现许许多多方案,这些方案有好有坏,但是对于阐述跨域的原理和在什么情况下需要用什么方案,缺少系统性的说明。大家在工作中可能因为大佬们已经配置好了,不会产生跨域,但是作为一个前端的开发人员,面对跨域的问题,还是需要从原理上去理解跨域的原因,在不同的情况中,我们该如何去处理。原创 2023-11-15 11:15:14 · 243 阅读 · 0 评论 -
【万字长文】前端性能优化实践 | 京东云技术团队
从一个假死页面引发的思考: 作为前端开发,除了要攻克页面难点,也要有更深的自我目标,性能优化是自我提升中很重要的一环; 在前端开发中,会偶遇到页面假死的现象, 是因为当js有大量计算时,会造成 UI 阻塞,出现界面卡顿、掉帧等情况,严重时会出现页面卡死的情况;原创 2023-11-14 11:20:57 · 485 阅读 · 0 评论 -
JDK11升级JDK17最全实践干货来了 | 京东云技术团队
从JDK11到JDK17,到底带来了哪些特性呢?亚毫秒级的ZGC效果到底怎么样呢?值得我们升级吗?而且升级过程会遇到哪些问题呢?带着这些问题,本篇文章将带来完整的JDK11升级JDK17最全实践。原创 2023-11-14 10:53:43 · 971 阅读 · 0 评论 -
Java表达式引擎选型调研分析 | 京东云技术团队
首先,规则引擎有一定的学习成本,即使开发人员使用也需要进行专门的学习,更何况没有任何编程背景的业务人员,其次,其实现的复杂度也高,如果业务规则复杂,规则制定者对规则引擎内部隐藏的程序流程不了解,很可能会得到意想不到的结果,最后,有些规则引擎还存在性能瓶颈。如果对规则引擎和表达式引擎都不熟悉,抽离的业务规则又需要由开发人员来制定,那么**相比之下表达式引擎就要容易上手的多,其语法更接近Java,而且有些表达式引擎还会将表达式编译成字节码,在执行速度和资源利用方面可能就更有优势。由于底层实现不同,分为两组。原创 2023-11-13 12:01:12 · 793 阅读 · 0 评论 -
SpringBoot 项目优雅实现读写分离 | 京东云技术团队
当使用Spring Boot开发数据库应用时,读写分离是一种常见的优化策略。读写分离将读操作和写操作分别分配给不同的数据库实例,以提高系统的吞吐量和性能。原创 2023-11-13 11:41:38 · 515 阅读 · 0 评论 -
手把手教你如何扩展(破解)mybatisplus的sql生成 | 京东云技术团队
众所周知,提供了强大的代码生成能力,他默认生成的常用的CRUD方法(例如插入、更新、删除、查询等)的定义,能够帮助我们节省很多体力劳动。他的BaseMapper中定义了这些常用的CRUD方法,我们在使用时,继承这个BaseMapper类就默认拥有了这些能力。如果我们的业务中,需要类似的通用Sql时,该如何实现呢?是每个Mapper中都定义一遍类似的Sql吗?显然这是最笨的一种方法。此时我们可以借助这个成熟框架,来实现我们想要的通用Sql。原创 2023-11-10 11:09:37 · 443 阅读 · 0 评论 -
线上SQL超时场景分析-MySQL超时之间隙锁 | 京东物流技术团队
之前遇到过一个由MySQL间隙锁引发线上sql执行超时的场景,记录一下。原创 2023-11-10 10:49:11 · 363 阅读 · 0 评论 -
你还在为SFTP连接超时而困惑么? | 京东云技术团队
在最近的项目联调过程中,发现在连接上游侧SFTP时总是需要等待大约10s+的时间才会出现密码输入界面,这种长时间的等待直接导致的调用文件接口时连接sftp超时问题。于是决定自己针对该问题进行一下排查,查询了相关资料,并逐个试验了一下网上提供的解决方案,然后在文章中详细记录问题的排查及分析过程,并将收集到的一些常见的SFTP的超时原因及解决方案进行了整理如下。原创 2023-11-09 10:46:07 · 778 阅读 · 0 评论 -
一个java文件的JVM之旅 | 京东物流技术团队
我是小C同学编写得一个java文件,如何实现我的功能呢?需要去JVM(Java Virtual Machine)这个地方旅行。原创 2023-11-07 18:11:59 · 630 阅读 · 0 评论 -
完蛋!我被 Out of Memory 包围了! | 京东云技术团队
是极致魅惑、洒脱自由的?是知性柔情、温婉大气的?是纯真无邪、活泼可爱的Metaspace?如果以上不是你的菜,那还有……刁蛮任性,无迹可寻的CodeCache!性感火辣、心思细腻的高贵冷艳,独爱你一人的OOM Killer!总有一款,能让你钟情!BUG 选择权,现在交由你手!原创 2023-11-07 18:10:32 · 253 阅读 · 0 评论 -
线上JAVA应用平稳运行一段时间后出现JVM崩溃问题 | 京东云技术团队
系统是一个定时任务系统,需要定时执行业务代码,业务代码主要是访问MYSQL数据库和缓存进行操作,该开始启动,系统日志一切正常,但是运行一段时间到凌晨后,系统就自动崩溃了,java进程没有了,只留下了程序崩溃日志原创 2023-11-06 11:29:27 · 894 阅读 · 0 评论 -
你的停机真的优雅么?第二弹来袭 | 京东云技术团队
最近在一些核心应用上线重启的时候又出现了业务订单数据不一致的情况,通过排查定位发现还是因为停机不够优雅,罪魁祸首是定时任务执行时间过长,在上线重启的过程中定时任务没有执行完成而被强行kill,详细分析及处理方案如下。原创 2023-11-06 11:07:58 · 398 阅读 · 0 评论 -
jar包的精细化运营,Java模块化简介 | 京东云技术团队
早在Java7的时候就被提出,但由于其复杂性,不断跳票,直到Java9才有,那么Java模块化到底是什么,在实际开发中又有什么用呢?原创 2023-11-03 11:37:24 · 858 阅读 · 0 评论 -
同城售后系统退款业务重构心得 | 京东云技术团队
对软件内部结构的一种调整,目的是在不改变软件观察行为的的前提下提高其可理解性、降低其修改成本;原创 2023-11-02 11:12:19 · 948 阅读 · 0 评论 -
当我们在谈论构造函数注入的时候我们在谈论什么 | 京东物流技术团队
在本文中,我们将更深入地探讨为何构造函数注入被认为是最佳实践,并将通过详细的Java代码示例来阐明其优点。同时,我们将研究如何将构造函数注入与面向对象的设计理念相结合,特别是如何确保封装、单一责任、不变性和依赖倒置原则得以遵循。原创 2023-11-01 11:37:50 · 180 阅读 · 0 评论 -
为什么idea建议使用“+”拼接字符串 | 京东云技术团队
大家普遍认知中,字符串拼接要使用StringBuilder,那为什么idea会建议你是用“+”呢,那到底StringBuilder 和 “+”有什么具体区别呢,我们一起来探究一下。原创 2023-11-01 11:27:33 · 227 阅读 · 0 评论 -
Kafka基本原理、生产问题总结及性能优化实践 | 京东云技术团队
Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等原创 2023-11-01 11:12:11 · 1326 阅读 · 0 评论 -
Java模块化应用实践之精简JRE | 京东云技术团队
Java9及以后的版本引入了模块化特性,实际实践了一段时间之后发现“真香!”现在把“利用Java模块化精简JRE”的方法和经验分享给大家。原创 2023-10-31 11:29:45 · 637 阅读 · 0 评论 -
记一次老商家端应用内存突然飚高原因分析 | 京东物流技术团队
回过头来咱们再分析以下这个功能,通过系统日志及监控,发现该功能商家日常使用较少,并且大部分商家的保质期商品较少,极少数会存在有非常多保质期商品数据的情况。但是一旦出现这样的问题就会很致命,所以在导出功能设计之初我们就应该考虑到将来任何可能出现的情况,并做好提前的预防。另外就是要做功能的限制,例如导出次数、导出数据量的限制功能来保障商家体验及系统的安全稳定。另外再说一下,对导出功能的理解,对于商家而已,导出需求是正常的。但是过多大批量数据的一起导出无论对哪个系统来说都是非常危险的一个功能。原创 2023-10-31 11:05:46 · 203 阅读 · 0 评论 -
京东科技埋点数据治理和平台建设实践 | 京东云技术团队
本文核心内容聚焦为什么要埋点治理、埋点治理的方法论和实践、奇点一站式埋点管理平台的建设和创新功能。读者可以从全局角度深入了解埋点、埋点治理的整体思路和实践方法,落地的埋点工具和创新功能都有较高的实用参考价值。原创 2023-10-30 11:48:49 · 1173 阅读 · 0 评论 -
浅析SpringBoot加载配置的6种方式 | 京东云技术团队
只要在变量上加注解 @Value(“${env.var1}”)就可以了,@Value 注解会自动将配置文件中的env.var1属性值注入到var1字段中。在需要使用自定义配置文件的类上添加 @PropertySources 注解,注解 value属性中指定自定义配置文件的路径,可以指定多个路径,用逗号隔开。可以通过 @Value 注解或 Environment.getProperty() 方法来获取其中定义的属性值。在需要使用var1、var2属性值的地方,将 MyConf 对象注入到依赖对象中即可。原创 2023-10-30 11:32:42 · 194 阅读 · 0 评论 -
Hutool中那些常用的工具类和实用方法 | 京东云技术团队
Hutool它是一个Java工具集类库,包含了很多静态方法的封装:流处理、时间日期处理、正则处理、加解密处理、文件处理、集合处理等,可以说是项目中几乎所有XxxxUtil的替代品,它可以使你更多的关注代码逻辑,优雅的写出高效代码,避免“复制粘贴,改改再战”。原创 2023-10-27 11:31:27 · 1587 阅读 · 0 评论 -
带着问题去分析:Spring Bean 生命周期 | 京东物流技术团队
举例:这里假设A依赖B,B又依赖A,此时B正在获取A提前暴露的引用,如果这时将A本身的地址引用返回给B,那么B里面就会保存A原始的地址引用,当B创建完成后,程序返回去创建A时,结果A在初始化的流程(initializingBean)中发生了动态代理,那么这时Spring容器中实际使用的是A的动态代理对象,而B却持有了原始A的引用,那么这时容器中就会存在A原始的引用以及A的动态代理的引用,从而产生歧义,这就是为什么需要提前去判断是否需要创建动态代理的原因,__原创 2023-10-26 11:04:43 · 227 阅读 · 0 评论