公司:京东
京东是中国最大的电子商务公司之一,成立于1998年。公司提供在线零售、物流配送、支付服务等一系列互联网服务。京东市场规模庞大,是中国最大的网络零售商之一。随着国内电子商务市场的不断发展和技术的不断提升,京东已经成为中国互联网行业的领导者之一。
给祖传系统做了点 GC调优,暂停时间降低了 90%
公司某规则引擎系统,在每次发版启动会手动预热,预热完成当流量切进来之后会偶发的出现一次长达1-2秒的Young GC(流量并不大,并且LB下的每个节点都会出现该情况)。
在这次长暂停之后,每一次的年轻代GC暂停时间又都恢复在20-100ms以内。
2秒虽然看起来不算长吧,但规则引擎每次执行也才几毫秒,这谁能忍?而且这玩意一旦超时,出单可能也跟着超时失败!
主动写入流对@ResponseBody注解的影响
文章总结了一个问题回溯的过程,并提出了一些建议。作者建议在配置环境参数时,要确保预发布和线上环境同时配置,以避免遗漏。另外,作者提出了一个最佳方案,即在代码中主动写入流来解除@ResponseBody的作用,这样可以在发生异常时得到明显的报错提示,同时可以正常实现功能。
MCube动态化与原生工程结合最佳实践
作者通过研究和尝试选择了MCube的动态化方案来解决业务需求量大、分端开发和发版更新成本高的问题。MCube方案成熟、接入成本低,具有丰富的原子组件和完善的组件市场。作者团队在接入过程中遇到兼容性问题,但MCube团队积极解决,沟通愉快。作者总结了单楼层动态化改造的经验,包括数据封装和视图封装。通用楼层具备解析模块和模板ID的能力,可以调用MCube实现动态化。作者还提到了全页面动态化改造的目标和挑战,需要重新定义下发的数据结构以实现楼层顺序和分楼层动态化控制。
localhost工具:本地代码的远程之路
在日常的开发过程中,本地代码远程调试一直是最理想的开发状态。本文通过介绍京东集团内开发的一个轻量简单的小工具”localhost”,从多角度的方案思考,到原理介绍,到最终的方案落地,在开发阶段发现问题,解决问题。
正态分布在客观指标度量模型中的应用
本文将结合生产系统客观指标度量项目的实践经验,介绍正态分布函数在客观指标度量模型中的应用方法。
TypeScript 前端工程最佳实践
本文介绍了在前端业务开发中使用TypeScript的基本用法和常用知识点。作者提到了TypeScript的类型系统复杂,但可以帮助开发人员编写更好、更安全的代码。文章还介绍了一款VSCode插件——Paste JSON as Code,可以自动生成接口类型定义的TypeScript代码,提高开发效率。总结完毕。
如何做好架构设计,架构设计有章可循吗?
三个阶段、四个要素、三个步骤、五个视图、一个贯穿环节教你如何做好架构设计。
前端性能优化实践
性能优化是前端开发工作中很重要的一环,本文从性能优化核心指标、页面加载解析、性能优化方案、具体实践操作这四个方面完成五项实践。
手把手教你如何扩展(破解)mybatisplus的sql生成
MyBatis Plus是一个功能强大的代码生成框架,提供了常用的CRUD方法的定义。通过继承BaseMapper类,可以轻松使用这些方法。此外,MyBatis Plus还支持扩展常用的CRUD方法,并添加了新的SQL查询方法。特别是在分表操作方面,通过继承GyhBaseMapper类,使用updateById方法时会自动进行分库分表的判断,提高了查询效率。GyhSqlInjector类和UpdateByIdWithSharding对象的注入也为项目提供了更多的灵活性和扩展性。
用黄金圈模型解构品牌建设的基本逻辑
作为用研同学,经常接到品牌研究的相关需求,其中“品牌”是一个大家经常谈论,但是每个人的理解可能又各不相同的概念和工具,到底应该如何了解品牌?品牌的沟通有没有什么基本法则可以依循?我们又该如何评估一个品牌是否发挥预期的功能?
Java表达式引擎选型调研分析
该项目组调研了多种表达式引擎,包括AviatorScript、MVEL、OGNL、SpEL、QLExpress、JEXL、JUEL和Janino。这些引擎具有不同的特性和适用场景。AviatorScript和SpEL支持集合、数组和字符串匹配的操作符;MVEL和OGNL用于获取和设置Java对象属性;QLExpress是阿里的动态脚本引擎解析工具;JEXL和JUEL是实现表达式语言的工具;Janino是一个快速的Java编译器兼表达式引擎。通过引入这些引擎,可以提高系统的灵活性和响应能力。
iOS APP包分析工具
APPAnalyze是一款用于分析iOS ipa包的脚本工具。它通过扫描二进制库获取信息,提供自动化的质量流程和数据化平台。工具可以识别重复的资源文件和未使用的类属性。用户可以通过工具提供的HTML文件展示包体积数据和待修复问题的详细信息。此外,工具还提供了JSON数据,可用于搭建自己的数据平台。用户可以根据这些数据进行包体积优化和查看不同APP版本的对比。工具还提供了可选的修复方式,如移除重复资源文件和删除未使用的类属性,以帮助优化包体积。
前端常用设计模式初探
本文介绍了代理模式的两个应用场景。首先是通过代理模式实现图片预加载,在预加载图片完成后,再将请求交给真正的图片对象。其次是通过代理函数收集一段时间内的请求,一次性发送给服务器,减轻服务器的压力。这两个例子展示了代理模式的作用,符合开放-封闭原则。
ASM字节码操作类库:打开java语言世界通往字节码世界的大门
授人以鱼不如授人以渔,应用asm的文章有很多,简单demo的也很多,那么ASM都具备哪些能力呢?如何去学习编写ASM代码呢?什么样的情景需要用到ASM呢?
浅谈埋点及其质量保障
本文简单阐述,埋点的定义、作用以及如何使用;并介绍埋点不同角度及角色的质量保障方式;详细描述目前埋点沉淀的各种验证场景的case。
SpringBoot 项目优雅实现读写分离
读写分离是一种常见的数据库优化策略,通过将读操作和写操作分配给不同的数据库实例来提高系统性能。实现读写分离主要通过动态数据源功能实现,动态数据源可以在运行时动态切换数据库连接。配置主数据库和从数据库的连接信息,创建主从数据源配置类,创建动态路由数据源,创建动态数据源配置类,使用ThreadLocal存储当前线程的数据源类型,创建自定义注解标记主和从数据源,创建切面类拦截数据库操作并根据注解切换数据源,使用连接池并集成mybatis来实现进阶的读写分离。在写入操作时,可以通过mybatis的拦截器强制切换到主库。