用 AI 解锁技术调研的新姿势
1. 前言在日常开发中,为了保证技术方案的质量,一般会在撰写前进行调研。如果先前没有相关领域的知识储备,笔者的调研方式一般是先通过搜索引擎进行关键字查询,然后再基于搜索的结果进行发散。这样调研的结果受关键字抽象程度和搜索引擎排名影响较大,可能会存在偏差导致调研不充分。刚好大模型风靡有一段时间了,就想如果AI能自动检索资料并进行内容总结,岂不美哉。避免重复造轮子,先在网上检索了一下,发现刚好有一个工
记录一次RPC服务有损上线的分析过程
1. 问题背景某应用在启动完提供JSF服务后,短时间内出现了大量的空指针异常。分析日志,发现是服务依赖的藏经阁配置数据未加载完成导致。即所谓的有损上线或者是直接发布,当应用启动时,service还没加载完,就开始对外提供服务,导致失败调用。关键代码如下数据的初始化加载是通过实现CommandLineRunner接口完成的@Componentpublic class LoadSy
日志框架简介-Slf4j+Logback入门实践
前言随着互联网和大数据的迅猛发展,分布式日志系统和日志分析系统已广泛应用,几乎所有应用程序都使用各种日志框架记录程序运行信息。因此,作为工程师,了解主流的日志记录框架非常重要。虽然应用程序的运行结果不受日志的有无影响,但没有日志的应用程序是不完整的,甚至可以说是有缺陷的。优秀的日志系统可以记录操作轨迹、监控系统运行状态和解决系统故障。Java 日志框架进化史早期 Java 日志框架没有制定统一的标
源码补丁神器—patch-package
一、背景vue项目中使用 vue-pdf 第三方插件预览pdf,书写业务代码完美运行,pdf文件内容正常预览无问题。后期需求有变,业务需求增加电子签章功能。这个时候pdf文件的内容可以显示出来,但是公司的电子签章无法显示。这令人沮丧,因为已经编写了许多特定于此依赖项的代码,如果替换依赖库,这些代码很可能会被浪费。更重要的是其已经在生产环境运行。在不更改依赖库进行大改动的前提下,先查找问题所在。经查
京东云原生安全产品重磅发布
“安全产品那么多,我怎么知道防住了?”“大家都说自己是云原生的,我看都是换汤不换药”在与客户沟通云原生安全方案的时候,经常会遇到这样的吐槽。越来越的客户已经开始了云原生化的技术架构改造,也意识到了云原生安全的重要性。但是面对还未像传统安全一样形成格局的云原生安全市场,鱼龙混杂,客户往往花掉了很多的时间成本,采购成本,但是没有得到自己想要的安全结果,慢慢对云
HVV蓝队视角的技战法分析
1.HVV行动简介HVV行动是国家应对网络安全问题所做的重要布局之一。从2016年开始,随着我国对网络安全的重视,演习规模不断扩大,越来越多的单位都加入到HVV行动中,网络安全对抗演练越来越贴近实际情况,各机构对待网络安全需求也从被动构建,升级为业务保障刚需,而2023年的国家HVV目前已经结束。HVV一般分为红蓝两队,也称为红蓝对抗,红队为攻击队,蓝队为防守队。刚开始,蓝队会有初始分值,一旦被攻
防御性编程:让系统坚不可摧
1. 引言面对复杂多变的运行环境、不可预测的用户输入以及潜在的编程错误,如何确保软件在遭遇异常情况时依然能够稳定运行,是每位开发者必须面对的挑战。防御性编程(Defensive Programming)正是为解决这一问题而生的一种编程范式,它强调在编程过程中预见并防范潜在的错误和异常情况,从而增强软件的健壮性和稳定性。作为一种细致、谨慎的编程方法,通过提前考虑并防范可能出现的错误,从而有效减少软件
一文了解MySQL索引机制
接触MySQL数据库的小伙伴一定避不开索引,索引的出现是为了提高数据查询的效率,就像书的目录一样。某一个SQL查询比较慢,你第一时间想到的就是“给某个字段加个索引吧”,那么索引是什么?是如何工作的呢?一起静下心来,耐心看完这篇文章吧,干货不啰嗦,相信你一定会有所收获。一、索引模型模型也就是数据结构,常见的三种模型分别是哈希表、有序数组和搜索树。了解MySQL的朋友已经知道,现在MySQL默认使用的
Java CompletableFuture 异步超时实现探索
简介JDK 8 中 CompletableFuture 没有超时中断任务的能力。现有做法强依赖任务自身的超时实现。本文提出一种异步超时实现方案,解决上述问题。前言JDK 8 是一次重大的版本升级,新增了非常多的特性,其中之一便是 CompletableFuture。自此从 JDK 层面真正意义上的支持了基于事件的异步编程范式,弥补了 Future 的缺陷。在我们的日常优化中,最常用手段便是多线程并
微前端父子应用及兄弟应用间组件或方法共享方案
背景我们的很多web应用在持续迭代中功能越来越复杂,参与的人员、团队不断增多,导致项目出现难以维护的问题,这种情况PC端尤其常见,微前端为我们提供了一种高效管理复杂应用的方案。但是在使用微前端的过程中,通常会有一些公共方法或公共组件,本文将对如何实现父子应用以及兄弟应用之间进行方法及组件共享提出几种解决方案以及其各自优缺点及适用场景模块联邦(Module Federation)webpack5引入
京东百万级调度系统(Buffalo)架构解密
一、调度系统简介Buffalo调度是一款京东自主研发的分布式DAG作业调度系统。为京东的数据开发工程师、算法工程师、数据分析师等用户提供了离线作业的编排&调试、监控运维、DAG调度等系统能力,致力于打造行业领先的稳定高效、产品简洁高体验、任务监控全面、资源容器化、系统能力开放化的ETL调度系统。在京东调度系统核心面临的挑战有以下几个:1.业务复杂带来的依赖关系复杂:复杂的数据链路,使得部分
系统整容纪:慢SQL之秘籍,离不可替代型人才更近一步
本文通过介绍在实际工作中慢SQL治理的经历,来使得读者受到一定的启发,从而迸发出星星点光,扩展出自己独有的思路,进而减少系统中的慢SQL,提升用户的体验,甚至能将一些不可预知的高风险扼杀在摇篮里。分享工作中的点点滴滴,贯彻千里之行,始于足下,最终以微不足道的量变引起化蝶的质变精神。以自己为例拒绝在舒适的中央区域安逸的躺着,以便在不知不觉中被社会所淘汰,也不盲目的直接跃迁进困哪区域,在受挫的同时又跌
系统整容纪:揭秘Java编程之美:掌握这些编码规范,让你的代码一跃成为行业典范
分享工作中的点点滴滴,贯彻千里之行,始于足下,最终以微不足道的量变引起化蝶的质变精神。以自己为例拒绝在舒适的中央区域安逸的躺着,以便在不知不觉中被社会所淘汰,也不盲目的直接跃迁进困哪区域,在受挫的同时又跌回原有的舒适区域内,造成这样一个浑浑噩噩的让人无法进步的循环怪圈内,保持在舒适边缘的拉伸区,既跳出了舒适区又具有一定的挑战性,使得自己在保持快速进步的同时还能够渐渐树立起自信心,可谓是一举多得,系
从C端到B端:我的前端技术进阶之路
个人经历大家好,我叫付小波,2017年加入京东,现担任全渠道生态部前端架构师。我负责过ToC和ToB多个业务,近几年主要专注于B端应用开发。以下是我的主要经历:- 2017年:负责主站虚拟交易业务研发,搭建虚拟交易类小程序;- 2019年:从C端转向B端系统,负责万家系统;- 2021年:作为前端主负责人,主导线下系统重构;- 2022年:作为前端研发一号位,从0到1搭建B商城三个端;- 2023
广告在线模型系统负载均衡策略实践
一、背景简介1.1、现状•实际生产环境中,复杂业务系统对分布式服务集群架构的依赖。•服务集群异质化节点的容器化部署,机器性能超卖现象不可避免、性能不均情况时有发生。•服务集群各硬件组件出错率不可避免[1],上层业务相关的应用软件系统需考虑容错设计。•大促流量分布变化难以准确预见,系统服务稳定性与机器资源成本之间需进行妥善权衡。1.2、问题•集群内负载不均,整体资源利用率低。•单节点过载容易触
《软件设计哲学》:新“代码整洁之道”
工作三年以来一直对写出设计优雅且可读性较好的代码抱有执念,最初接触到的关于代码整洁和软件设计的书是《代码整洁之道》,这本书大概在我入职半年时读完,并在很长的一段时间内将其中谈到的“每个方法只做一件事”、“方法长度最多不要超过 5 行”和“优秀的代码都是自解释的,很少会有注释”等等观点奉为圭臬,但是由于其成书较早,其中的一些观点显然已经不再使用当前业务开发环境了。就拿前两点来说,看上去能让每
如何手搓一个自定义的RPC(远程过程调用框架)
1、RPC(远程过程调用概述)远程过程调用(RPC, Remote Procedure Call)是一种通过网络从远程计算机程序上请求服务,而无需了解网络细节的通信技术。在分布式系统中,RPC是一种常用的技术,能够简化客户端与服务器之间的交互。本文将介绍如何基于Netty(网络编程框架)实现一个自定义的简单的RPC框架。首先简单介绍一下RPC 主要特点:1.1、RPC远程过程调用的主要特点•透明性
使用ChatGPT解决开发问题
数据库问题案例1这段 SQL 查询语句是用于获取最近更新的前 10 个销售订单 sales_order 关联的交付信息 sales_order_delivery_info。SELECT * FROM ( SELECT * FROM sales_order a WHERE trans_type 订单交易类型 AND a
Monaco Editor使用时右键功能菜单汉化
背景某天产品要求在项目的某个页面添加一个代码编辑器,包含编辑器常见的功能。看完需求,想到了强大的Monaco Editor。按照官方文档进行配置开发,就在自己觉得大功告成之际,右击编辑框,发现功能菜单是英文状态,然后就开启了我的右键功能菜单汉化之路。问题剖析在Monaco Editor的整个使用配置过程中,我没有添加关于本地语言的配置,所以目前使用的应该是默认配置。所以目前解决问题的思路是:查看官
面向移动应用的产品开发:从终端、运营、服务到场景体验
一、引言2008年,全球移动终端接入互联网的用户数超过使用桌面电脑接入互联网的用户数(国际电信联盟统计数据),标志着人类正式进入移动互联网时代。重要推动因素是2007年苹果公司发布的第一代iPhone开启了智能手机大量上市的浪潮,以iPhone为代表的智能手机不仅具有革命性的触屏设计和简单直观的操作界面,更提供了一个软件应用的生态系统,为开发者提供了一个平台,使其可以结合手机硬件和操作系统软件,充