架构师

其他

干货 | 常见的API接口漏洞总结

来绕过多因素身份验证。MFAfalse测试业务逻辑缺陷可能具有挑战性,因为每个业务都是独一无二的。自动扫描程序将很难检测到这些问题,因为这些缺陷是API预期用途的一部分。您必须了解业务和
2023年4月30日
其他

SpringBoot 调用外部接口的三种方式

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?1、简介SpringBoot不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求,
2023年4月18日
其他

解析ChatGPT背后的工作原理

模型输出进行打分,这代表这些输出对于人类来说可取程度有多大。这强有力地反映了选定的人类标注者的具体偏好以及他们同意遵循的共同准则。最后,这个过程将从数据中得到模仿人类偏好的系统。它的工作原理是:选择
2023年2月6日
其他

谈谈ChatGPT 背后的核心技术论文

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?缘起输入几个简单的关键词,AI能帮你生成一篇短篇小说甚至是专业论文。作为上知天文下知地理对话语言模型,最近大火的ChatGPT在邮件撰写、视频脚本、文本翻译、代码编写等任务上强大表现,让埃隆·马斯克都声称感受到了AI的“危险”。最近大火的ChatGPT的计算逻辑来自于一个算法名字叫Transformer。它来源于2017年的一篇科研论文《Attention
2023年2月5日
其他

算法工程师深度解构ChatGPT技术

Gradient算法对步长十分敏感,但是又难以选择合适的步长。在训练过程中新旧策略的的变化差异如果过大则不利于学习。而PPO提出了新的目标函数可以在多个训练步骤实现小批量的更新,解决了Policy
2022年12月20日
其他

为什么ChatGPT这么强?—— 一文读懂ChatGPT原理!

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享前言最近一周多的时间,只要不是生活在火星,喜欢技术的同学一定都被OpenAI的ChatGPT给刷屏了。ChatGPT与以往的公开提供服务的对话机器人相比,性能有了显著的提高。它可以相对可靠地提供一些日常对话、知识获取的功能,也可以它根据人类提供的需求帮忙写文档、写代码,甚至可以修改文本中的各类错误或者代码中的Bug。我相信很多非AI圈的同学肯定会有一种“为什么AI突然变得这么强?“的感受。这篇文章的目的也是为了回答这个问题。在开始之前,我觉得有必要先表达一下我自己的看法:NLP技术发生跨越式发展的标志并不是ChatGPT本身,而应该是2017年-2018年间相继被提出的Transforme1r[1]和GPT[2]。ChatGPT是Transformer和GPT等相关技术发展的集大成者。总体来说,ChatGPT的性能卓越的主要原因可以概括为三点:使用的机器学习模型表达能力强。训练所使用的数据量巨大。训练方法的先进性。我们接下来将会针对这三点进行探讨。机器学习模型在步入正题之前,我们可以先梳理一下NLP发展的历史。基于文法的模型这个阶段,大家处理自然语言的主要思路就是利用语言学家的智慧尝试总结出一套自然语言文法,并编写出基于规则的处理算法进行自然语言处理。这个方法是不是乍听起来还行?其实我们熟悉的编译器也是通过这种方法将高级语言编译成机器语言的。可惜的是,自然语言是极其复杂的,基本上不太可能编写出一个完备的语法来处理所有的情况,所以这套方法一般只能处理自然语言一个子集,距离通用的自然语言处理还是差很远。基于统计的模型在这个阶段,大家开始尝试通过对大量已存在的自然语言文本(我们称之为语料库)进行统计,来试图得到一个基于统计的语言模型。比如通过统计,肯定可以确定“吃”后面接“饭”的概率肯定高于接其他词如“牛”的概率,即P(饭|吃)>P(牛|吃)。虽然这个阶段有很多模型被使用,但是本质上,都是对语料库中的语料进行统计,并得出一个概率模型。一般来说,用途不同,概率模型也不一样。不过,为了行文方便,我们接下来统一以最常见的语言模型为例,即建模“一个上下文后面接某一个词的概率“。刚才说的一个词后面接另一个词的概率其实就是一元语言模型。模型的表达能力在这里,我们很适合插播一下模型表达能力这个概念。模型表达能力简单来说就是模型建模数据的能力,比如上文中的一元语言模型就无法建模“牛吃草”和“我吃饭”的区别,因为它建模的本质统计一个词后面跟另一个词的概率,在计算是选“草”还是选“饭”的时候,是根据“吃”这个词来的,而“牛”和“我”这个上下文对于一元语言模型已经丢失。你用再多的数据让一元语言模型学习,它也学不到这个牛跟草的关系。模型参数数量有人说,既然如此,为啥我们不基于更多的上下文来计算下一个词的概率,而仅仅基于前一个词呢?OK,这个其实就是所谓的n元语言模型。总体来说,n越大,模型参数越多,表达能力越强。当然训练模型所需要的数据量越大(显然嘛,因为需要统计的概率的数量变多了)。模型结构然而,模型表达能力还有另一个制约因素,那就是模型本身的结构。对于基于统计的n元语言模型来说,它只是简单地统计一个词出现在一些词后面的概率,并不理解其中的各类文法、词法关系,那它还是无法建模一些复杂的语句。比如,“我白天一直在打游戏”和“我在天黑之前一直在玩游戏“两者语义很相似,但是基于统计的模型却无法理解两者的相似性。因此,就算你把海量的数据喂给基于统计的模型,它也不可能学到ChatGPT这种程度。基于神经网络的模型上文提到,统计语言模型的主要缺点是无法理解语言的深层次结构。曾有一段时间,科学家们尝试将基于文法的模型和基于统计的模型相结合。不过很快,风头就被神经网络抢了过去。RNN
2022年12月13日
其他

从技术原理上看,ChatGPT会取代搜索引擎吗?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?作为智能对话系统,ChatGPT最近两天爆火,都火出技术圈了,网上到处都在转ChatGPT相关的内容和测试例子,效果确实很震撼。我记得上一次能引起如此轰动的AI技术,NLP领域是GPT
2022年12月6日
其他

分布式 ID 生成方案总结整理

|+-------------+--------------+------+-----+-------------------+-----------------------------+|
2022年12月5日
其他

软件架构的23个基本原则

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?软件体系架构基于一组适用于各种软件系统的基本原则,有经验的架构师知道这些原则,并且能够在软件产品的正确位置实现特定的原则。下面我们快速浏览一下架构师日常遵循的基本原则。1.
2022年12月4日
其他

如何设计一个优惠券系统

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享背景部门为一个租房房源平台,为各个商家提供房源发布&C端曝光获客的功能,现在要构建一个优惠券系统,用于各个节假日节点进行商家营销活动。形式主要以商家在B端参与活动,对房源绑定优惠券,将租赁价格进行优惠,来在C端吸引用户进行租房。1.
2022年11月29日
其他

如何成为更好的软件架构师?

Architect)软件架构是系统的基本组织构成,这种组织主要体现在其组件、组件之间的关系、组件与环境之间的关系,以及决定系统设计与演化的原则。(来源:Wikipedia:
2022年11月27日
其他

架构设计:为什么说复用是邪恶的?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享在系统设计和写代码的过程中,我经常会听到「复用」这个词,以「复用」为目的来设计技术,业务,组织架构。例如:抽象出一个类,函数,UI
2022年11月20日
其他

高并发架构都要考虑哪些方面?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享从个人博客开始相信很多朋友都搭建过个人博客之类的后端系统,这类系统的架构非常简单:首先购买一台云服务器,并在上面安装
2022年11月14日
自由知乎 自由微博
其他

Web3.0、区块链和韭菜

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享最近在偶然在博客平台上看到这篇文章,读了一遍,比较欣赏作者的写作方式和对
2022年11月13日
其他

讲讲 Redis 缓存更新一致性

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享当执行写操作后,需要保证从缓存读取到的数据与数据库中持久化的数据是一致的,因此需要对缓存进行更新。因为涉及到数据库和缓存两步操作,难以保证更新的原子性。在设计更新策略时,我们需要考虑多个方面的问题:对系统吞吐量的影响:比如更新缓存策略产生的数据库负载小于删除缓存策略的负载并发安全性:并发读写时某些异常操作顺序可能造成数据不一致,如缓存中长期保存过时数据更新失败的影响:若某个操作失败,如何对业务影响降到最小检测和修复故障的难度:
2022年11月12日
其他

工作中如何体现一个人的技术深度?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享看到一个讨论帖,原文如下:平时的工作如何体现一个人的技术深度?平时工作中很多时候需求细而碎的,如何在工作中积累技术深度?又如何体现一个人的技术深度?思考:做需求与做需求的差异再回答问题之前,我想先抛开「技术深度」这次词,讲讲做需求这件事,说说我对做需求的理解。每一个程序员都是从刚毕业做需求开始,为什么有的人逐渐成为大牛,主导大型技术项目或走向团队管理岗位,而有的人一直还在做需求。我觉得这里面的差异在于:每一个对做需求这件事的理解有所不同。这里面的差异在于,你是抱着一种什么样的心态去完成这个需求,是把这个需求做到极致,还是只是当做任务完成这个需求,达到产品想要的功能就行。这两个表面上看似差不多其实相差极大,差异在于,你有没有站在更高的角度,希望这件事做到完美。从需求角度有没有思考产品设计当中的缺陷,能不能反向为产品设计提供建议,从技术角度能不能做到高质量高兼容性无bug,以及下次再有类似的需求能不能快速高效率的迭代。用一句话来描述就是,能不能跳出自己是一个程序员是一个被动执行人的角色,而是将自己当做产品当做技术负责人的心态去做这件事。业务需求该怎么做知易行难。如果一开始做不到,那就先着眼小事:关注细节,从需求开始的需求评审、编写技术方案文档、设计文档、到开发的代码注释、结构设计,保证高质量,完善无漏洞的代码逻辑,再到异常埋点、指标监控、线上可用性运维等等,认真对待一个需求的每一个环节。当你自认为已经做好整个流程的每一件小事之后,接下来可以通过深入细节,思考整个流程是否存在问题。做需求过程中沟通协作的有没有问题,流程规范的有没有问题,机制环节哪方面问题,代码公共基础能力的是否有缺失,开发过程中你所遇到的问题是不是一个通用问题,能不能抽象出一个公共库解决大家的问题,能不能制定一个SOP的解决方案流程,亦或是提炼出一个最佳实践在组内外分享经验。通过这些一件件小事来锻炼自己解决问题的能力,以及更深层级的发现问题的能力。再通过不断的发现问题,思考问题出现的原因,拿出解决方案,最终落地解决了自己或组内或协作方的问题,锻炼自己的综合能力逐步慢慢成长。再说「技术深度」说了这么多,你可能会说,这跟我问的技术深度有什么关系?我想说:抛开业务需求谈技术深度都是耍流氓。举一个例子,数据可视化方面3D
2022年11月6日
其他

2万字,我们谈谈分布式事务

留的业务资源就再也没有人能够处理了,对于这种情况,我们就称为悬挂,即业务资源预留后没法继续处理。解决思路是如果二阶段执行完成,那一阶段就不能再继续执行。在执行一阶段事务时判断在该全局事务下,“分支
2022年11月5日
其他

分布式ID生成服务的技术原理和项目实战

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享ID在我们的开发工作和日常生活中使用的非常频繁,几乎只要是在开发就会天天打交道,它的应用场景十分广泛,比如:身份证号,下单生成的订单号,购买的联合会员商品的兑换券码。不同场景对ID生成服务的要求不同,以下我们逐个分析。全文6868字,预计阅读时间18分钟。GEEK
2022年11月2日
其他

性能优化的十种手段

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享最近看到一个关于性能优化的不错的文章。作者写了上中下三篇,由浅入深的写了关于性能优化的方方面面,并不仅仅局限于代码层面。我看了之后还是很有收获的,同时也惊叹于作者扎实的技术能力与思考能力。于是借花献佛,把作者的三篇整理合并之后分享给大家。希望你也能有所收获。上篇引言:取与舍
2022年11月1日
其他

喜马拉雅容器化实践

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享喜马的容器化历程伴随着公司的发展,并带有很深刻的喜马的烙印:以
2022年10月31日
其他

“复杂度不会消失,只会转移”,真的是这样吗?

写的时候可以完全忽略数据在磁盘上是怎么组织的,性能调优的时候绝对无法对你隐藏实际的数据分布在哪里。故障的时候,必须要掀起引擎盖。很多工程师乐衷于在故障总结里分享自己是如何找到
2022年10月30日
其他

架构设计-复杂度是不灭的

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享与复杂度的斗争是软件开发的一个永恒的主题,我一次又一次地看到它反复出现,并且不断在各个层面上看到有关的争论:到底应该在函数和方法中进行多少注释?理想的抽象是怎样的?一个框架何时开始拥有了「过多的魔法」?什么时候组织中有太多语言?我们试图摆脱复杂度,控制它,寻求简单性。我认为以这种思考方式来寻求问题的解决方案是错误的。因为复杂度必须存在于某个地方,是不灭的。Resilience
2022年10月29日
其他

多图深入理解 Redis

快照并将其发送到副本。在此传输之间,主实例会缓冲快照截止和当前偏移之间的所有中间更新指令,这样在快照同步完后,再将这些指令发送到副本实例。这样完成后,复制就可以正常继续。如果一个实例具有相同的复制
2022年10月28日
其他

为什么说MySQL单表行数不要超过2000w?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享目录背景实验单表数量限制表空间页的数据结构索引的数据结构单表建议值总结参考1
2022年10月27日
其他

JWT实现登陆认证及Token自动续期

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享技术选型区别认证流程优缺点安全性性能一次性无法废弃续签选择JWT或session功能实现Redis工具类业务实现过去这段时间主要负责了项目中的用户管理模块,用户管理模块会涉及到加密及认证流程,加密已经在前面的文章中介绍了,可以阅读用户管理模块:https://juejin.cn/post/6916150628955717646今天就来讲讲认证功能的技术选型及实现。技术上没啥难度当然也没啥挑战,但是对一个原先没写过认证功能的菜鸡甜来说也是一种锻炼吧技术选型要实现认证功能,很容易就会想到JWT或者session,但是两者有啥区别?各自的优缺点?应该Pick谁?夺命三连图片区别基于session和基于JWT的方式的主要区别就是用户的状态保存的位置,session是保存在服务端的,而JWT是保存在客户端的认证流程基于session的认证流程用户在浏览器中输入用户名和密码,服务器通过密码校验后生成一个session并保存到数据库服务器为用户生成一个sessionId,并将具有sesssionId的cookie放置在用户浏览器中,在后续的请求中都将带有这个cookie信息进行访问服务器获取cookie,通过获取cookie中的sessionId查找数据库判断当前请求是否有效基于JWT的认证流程用户在浏览器中输入用户名和密码,服务器通过密码校验后生成一个token并保存到数据库前端获取到token,存储到cookie或者local
2022年10月26日
其他

MyBatis 的执行流程分析

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享前言MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下:1、Mapper接口和映射文件是如何进行绑定的2、MyBatis中SQL语句的执行流程3、自定义MyBatis中的参数设置处理器typeHandler4、自定义MyBatis中结果集处理器typeHandlerPS:本文基于MyBatis3.5.5版本源码概要在MyBatis中,利用编程式进行数据查询,主要就是下面几行代码:SqlSession
2022年10月25日
其他

Redis分布式锁真的安全吗?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享今天我们来聊一聊Redis分布式锁。首先大家可以先思考一个简单的问题,为什么要使用分布式锁?普通的jvm锁为什么不可以?这个时候,大家肯定会吧啦吧啦想到一堆,例如java应用属于进程级,不同的ecs中部署相同的应用,他们之间相互独立。所以,在分布式系统中,当有多个客户端需要获取锁时,我们需要分布式锁。此时,锁是保存在一个共享存储系统中的,可以被多个客户端共享访问和获取。分布式锁(SET
2022年10月24日
其他

架构应该如何来理解?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享最近要多带一个架构团队做一个新版本,我写一些基本逻辑来给团队建第一层策略建模,以便我们后面的讨论有基础,由于这种问题是普适的,也不会涉及什么具体的保密问题,所以我公开来写。架构是一个充满了自由度的工作,是一个最不适合用过去的成功指导下一波策略设计的领域,无论你过去的领域和这个领域有多相像,你过去的成功经验都只能拿来参考,不适合用来拷贝。因为即使是完全相同的领域,时间已经不同了,行业生态,技术发展已经不同了,你面对的人不同了,业务的瓶颈已经不同了,生态的各个利益体的投资已经不同了,成熟的领域人员可能减少,当初的绩优股可能已经失败,你面对的是一个新的领域,我们做架构,永远不能被过去的“定义”,左右了我们的判断。所以,做新的架构设计,你可以参考过去的成功pattern,但你的分析,必须建立在现在的条件上,不能离开对现在问题的调查,直接打算使用过去的模式。这是我对我们进行产品战略设计的第一个建议。架构设计是一个非常微妙的设计领域,它是完全建立在形而上的逻辑上的,它是抽象的,非具象的。但这种抽象必须要以可以实施为底线,否则就沦为纸上谈兵了。所谓高以下为基,贵以贱为本。所以,我们不要出现“架构上我们应该如何如何,但我们现在人力不足啊”这样的思维角度,这是废话,架构就是建立在准备实施这个角度上的,你不能把架构设计和实施隔离,说一堆“我们要如何如何,只是某某条件不成熟。”这样的鬼话,如果某某条件不成熟,你就不该做出这个设计来浪费我们的时间。架构设计是实施团队的一部分,没有独立于实施的架构设计。架构设计90%的工作是辅助实施团队实施架构战略和挑战架构战略,不是实施之外的独立设计。把人分离出来是为了保证投入,不是为了让这个团队成为实施团队的竞争者。但反过来说,你不能说我们现在只有多少多少人,我们就做一个基于现在有多少人的方案,因为事情是变化的,在架构设计初期,给你很多的人,你也用不了,人力多了是个累赘,看在财报上每个月花出去的钱就让人害怕,但如果你的设计只是现在有多少人,那后面开始展开了,你根本就发展不了。没有准备,未来有可能给你补人你也接收不了。如果人力不是这样从小到多的一个变化过程,我们也不需要架构设计,架构设计必须可以响应这种人力,资源,市场等各方面的变化。所以,我们从一开始就做好了做这种多步的策略的打算,考虑整体目标的时候,要用整个市场域的机会作为我们发展的上限,在实施的时候,要考虑好怎么一步步增强投资者和市场的信心,从而可以有序扩大整个业务,不要用“我的架构没有错,错的是市场,错的是人力资源没给够人,错的是……”来给自己做理由。架构设计包括对这些“别人的错”的预判。架构设计和实施是和整个产品的所有其他力量(开发,销售,维护,财务,法务等等)融合在一起的,没有独立于这些开发力量的架构设计。这是第二个建议。但对于这个建议,我有个直接的工作技巧可以分享。当我们确切落笔写一个架构设计的时候,要考虑:以客户为目标,以工程为准绳。什么意思呢?就是说,你在架构设计的第一个部分,要明确说你打算卖一个什么样的东西到市场上去,你的客户打算买你的东西,这个决定的控制要素是什么?有这样一个标准在最前面,我们中间的所有变化,遇到的障碍,我们都知道往哪里绕。也知道我们绕完了,应该继续向什么方向走。而在你的架构设计的最后一段,你要把你的所有设计落实为“版本”和“项目”。所有的人力管理,都是以项目为基础的,因为项目有确切的目标和人力资源投入,而不是“小李你去帮帮他们”这种尽力而为的东西,架构策略一旦展开,所有人都会面对无限的要求,没有确切的资源分割,凡是长远的东西都会被忽略和放弃。所以,要把架构策略得以实施的希望建立在人力资源管理上,不要建立在“期望”,“正义”,“道德”,“道理”这些依赖上。所谓子非不辨也,老子忙起来谁都不认也。当然,我这里说的项目,是广义的项目,不一定是你流程中说的那个项目。而项目,要输出确切的版本,你有硬件,有软件,有插件,这些都是有版本的,不要说什么做一个my-wonderful-app,里面支持这特性,那特性的。你的软件上了市场,遇到一堆的客户,这些客户的要求都会不一样,你是用一个版本还是用多个版本去响应他们?产品是会有Bug的,是要有新特性开发的,修复Bug和增加新特性是会引入新的Bug的,所以,客户可能可以接纳升级你修复他的Bug的版本,可不一定肯接纳你发布的修复其他人问题的版本的。这样,你在市场上就会有很多版本,这是天然的,版本一多,开发,测试,维护,管理的成本会大幅上升,这是一个重要的工程控制要素。你用my-wonderful-app这一个概念来考虑你的设计,你实施的时候就会怎么搞怎么不正常,因为你以为你开发的是my-wonderful-app,其实你开发的是my-wonderful-app-v1、my-wonderful_app-v2、my-wonderful-app-v2.1、my-wounderful-app-v2.1-without-tso-llvm_v7_specific-edition……你对人力和项目的预判都是错误的,当然执行不下去了。所以,很多人其实不明白“开源交付”是个什么东西,开源交付其实是一种减少版本的方法,一个源代码树是可以编译出很多二进制版本的,我给你源代码,编译产生多个版本的的维护成本就是你的了,很多人以为交付源代码是对用户友好,是为行业做贡献——那得看客户是想当你的竞争对手,还是想解决他的问题了。(但即使你用“源代码交付”,如果是商业交付,你的测试还是需要落实到一组二进制版本上的,而且你必须很清楚,这些二进制版本都是会升级的,死版本支持的生态是死的生态)但无论如何,架构设计一个基本的要求,高以下为基,不要离开你的工程成本想得天花乱坠,只要涉及工程,什么美好想法都得给我从天上掉下来。第三个建议:调查和设计也是要结合起来的。架构设计初期,我们有无数的“未知”:竞争对手的战略是什么?客户的期望是什么?研究机构有什么新的突破?市场份额的预测是什么?国家政策的走向是什么?……如果你要调查完这些东西才做决定,你就永远都不用做了。所以,进行架构设计,要勇敢进行“猜”,“预判”,哪怕错了,你也要“猜”,因为这是架构设计工作的基础。你的决策要同时决策:使用猜这个结论和再调查一下,哪个投资收益比更低?然后就要去实施。我在这个专栏中经常强调“守弱”,其本质就是这个:架构本身就是一种猜,我们在猜的基础上执行,如果你非要维护面子,在执行的时候收到当时猜错了的反馈,你死要面子不肯调整,那这个架构执行就失败了。所以,做架构不能要面子,你眼中只能有产品的最后成功,到成功的时候,你坐在那里,旁边的人说什么,你都可以冷冷看着他,由他讲他的道理,你根本不用在乎。这样就要提到第四个建议了:你不要指望实施团队会很喜欢你,你做的所有事情,都是为了未来让他们“绕路”走,你的结论他们不会喜欢的。你可以用你所有的个人魅力去尽量soften这种冲突,你可以下去和他们一起分担开发调试的压力,让他们没有那么恨你,但你要知道,如果实施团队很舒服,你的架构设计肯定变成在旁边说胡话了,根本没有设计效果。所以,你决定来做架构了,就不要期望你有多nice。这是这个工作的特性,不能调和的。不要为了实施团队的一般抱怨就去改变你的设计去迎合,否则产品失败的时候,就没有人跟你抱怨了。吾之所以有大患者,为吾有身,及吾无身,何患之有?你应该多听实施团队的抱怨,但你要分清楚哪些是真正在反馈问题,哪些只是你战略实施的成本。最后一个建议:架构团队来自不同的领域,不要用“领域代表”看待自己。不要说我只是做芯片设计,我只是做安全的,我只是做内核的,我只是做数据库的。架构团队存在的目的,就是为了设计那些多个模块互相甩锅的Gap,然后所有模块和协同起来,达到最优的效率。你尽然进来架构组了,你就不是某个模块的“甩锅代表”,你就是整个产品。大部分投资者都是不懂技术的,就算他们来自技术背景,他们对你实施的这个技术也是外行,因为细节只是我们知道,否则他就不用你来做了,他自己做就好了。这些人决策的方式就是“多方确认”。如果架构组自己都达不成共识,各说各话,那怎么说服投资人(其实包括准备用你的客户),所以,架构组每个人都应该对整个架构策略都很熟悉。我不要求做芯片的人就会写程序,但我需要做芯片的人知道软件部分的构架要求,在解决方案中所处的地位。你不要告诉我你只懂UEFI,不懂Kernel是怎么做的,我需要你知道ACPI表那些信息是给Kernel的哪个模块看的,你不是在做实施,等着别人给要求,你是那个负责知道少给一张EINJ表,Kernel会不会起不来的人。推广起来说,作为一个产品的架构团队,你也不能只管“我的产品如何如何”,你必须从整个产业生态上开始设计。狼吃羊,羊吃草,你不能说你是狼,不管羊的死活。没有羊了,狼也死了。做架构设计的人,必须知道狼可以吃多少羊,吃到什么时候就要开始收手了。所以,对于一个产品的架构师,必须知道整个生态链是怎么运作的,要为了整个生态的平衡,不怕把自己部分自己的业务让给其他产品,其他企业,也不怕自己背上别人不肯实施的业务,这样你才会有掌控生态的力量。大概就是这样一些吧,再往下,就是具体业务怎么做的问题的。但当我们碰到困难的时候,不妨回头来看看我们的总体思路,也许觉得无路走的时候又发现有路了,觉得很顺利的时候,说不定就是危机的开始了。如喜欢本文,请点击右上角,把文章分享到朋友圈如有想了解学习的技术点,请留言给若飞安排分享往期推荐周边检索POI技术方案设计优化
2022年10月23日
其他

基于 Apache APISIX 的自动化运维平台

key:value,供后续使用。例如,当需要我们线上灰度发布时,就可以在用户的请求头中加入标志位,通过这些标志位,就可以控制这些请求转发哪些后端服务,从而实现灰度发布。当然我们也可以使用
2022年10月22日
其他

周边检索POI技术方案设计

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享生活必备技能——查找周边时光荏苒,我从2018年初到北京打工,到现在已经快5年了。期间经历了两家公司,也搬过几次家,在繁华的大都市里生活,我最大的感受就是:“查找周边”已经成为了每个人生活的必备技能了。“附近的共享单车”、“附近的美食”、“附近的核酸检测点”等等,无论你走到哪里,这些周边的POI都会成为你生活的一部分。还好有“百度地图”、“美团”、“支付宝”这些App,在我需要查找周边POI时,它们总能很好的帮助我。作为程序员,实现这些功能,让人们的生活方式变简单,心里总会有莫大的成就感,今天笔者就来跟大家分享一下“周边检索POI”的技术方案设计。1.
2022年10月21日
其他

优化 Nginx HTTPS 延迟 - 如何让Nginx提速 30%的?

Demo,如果感兴趣的话欢迎体验一下即时搜索,尝试一下搜索“无间道”或者“大话西游”体验一下速度和相关度:https://movies-demo.kalasearch.cn/对于每个请求只有
2022年10月20日
其他

浅谈缓存的理论与实践

浅谈缓冲区这篇博客中,我们介绍了“缓冲”的相关知识,本文将介绍“缓冲”的孪生兄弟“缓存”。和缓冲类似,缓存可能是软件中使用最多的优化技术了,比如:在最核心的
2022年10月19日
其他

Spring Boot 实现跨域的 5 种方式,看看哪种适合?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?一、为什么会出现跨域问题出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)二、什么是跨域当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域三、非同源限制无法读取非同源网页的
2022年10月18日
其他

总结如何画一手好的架构图

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享你是否被大厂展示的五花八门,花花绿绿的架构设计图所深深吸引,当我们想用几张图来介绍下业务系统,是不是对着画布不知从何下手?作为技术扛把子的筒子们是不是需要一张图来描述系统,让系统各个参与方都能看的明白?如果有这样的困惑,本文将介绍一些画图的方法论,让技术图纸更加清晰。架构的定义系统架构是概念的体现,是对物/信息的功能与形式元素之间的对应情况所做的分配,是对元素之间的关系以及元素同周边环境之间的关系所做的定义;架构就是对系统中的实体以及实体之间的关系所进行的抽象描述,是一系列的决策;架构是结构和愿景。在TOGAF企业架构理论中,
2022年10月16日
其他

ULID - 一种比UUID更好的方案

1))根据现有的随机数创建一个新的ULID。支持随机值类型有int,float,str,bytes,bytearray,memoryview,Randomness,和ULID。>>>
2022年10月15日
其他

面试官: 你的Mysql,有点东西 !

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享宝,让我们一起有点东西一、MYSQL索引的底层数据结构及算法我们经常在涉及到SQL优化的时候,总是会想到加索引。那索引究竟是个什么玩意儿?索引是帮助MYSQL高效获取数据,并且排好序的数据结构。我们知道MYSQL可以采用的是B+树和hash来维护索引的,hash这个结构并不常用,它虽然能够通过hash算法很快的路由到对应的数据,但是对于排序,hash就显得很鸡肋了。树形结构在一定程度上,都是采用的二分查找,所以查询的时间复杂度都很低。但随之而来又面临一系列的问题,比如树的退化,以及随着数据的不断增加,树的高度越来越高,磁盘IO的次数越来越多,导致性能越来越低,查询的时间越来越不可控打个比方:二叉树:在极端的情况下,二叉树会退化成链表,查询的时间复杂度也随之退化。且树的高度越来越高红黑树:它又叫二叉平衡树,虽然自旋和变色解决了退化成链表的问题,但在一定程度上,树的高度递增的问题还是没有得到解决B树:它相当于是二叉树的一个进化版本,变成了多叉树,那么单个结点存储的数据就变多了,随之树的高度也得到了控制,但是B树有一个特点,它的每个结点都存储了对应行的data,那么我们可以试想一下,这个索引的内存大小会特别大,而MYSQL的内存是有限的,我们单表在大多数情况下,都不止一两个索引,
2022年10月14日
其他

我面试的人成了我的领导,我该不该离职?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?相信一个工作多年的程序员,都有过面试别人的经历,假如你面试的人成功入职,并成为了你的领导,你该不该离职呢?一次面试有一次领导让我参加面试,被面的岗位是技术总监。不知道为什么,每次拉上我的时候,我都在想为什么要叫我,我能帮上什么忙?结果带我一起面试的同事说,你只负责技术相关的内容,和技术无关的你不用管。我说好,那和技术相关的管理方面的问题能不能问,对方说可以适当问一问。面试者再过两天就会来公司,人事把大伙召集起来说,你们各自把要问的问题写出来,我要统计一下发给老板。和之前的面试都不一样,正式很多,毕竟岗位比较高级。最后大家问题汇总差不多了,我看了其中一条很好奇,就对人事说,老板这里补充的内容不对,既要有管理能力,又要有技术攻关能力,这个人是JAVA背景,从技术栈来看应该不合适,因为我们用的是.NET技术栈。我的同事也表示赞同,说我们公司人员虽然只有30多一点,但是做大B的,大小事一堆,有产品部、开发部、技术部还有客户、老板、销售等,总监哪里有时间做技术攻关?我本来想坚持一下,但是想想之前参与过简历筛选的时候,大部分有总监或者架构经验的人员都是JAVA出身,如果一定要咬住.NET不现实,因为一个是人员少,第二是质量也偏低。后来想想也算了,反正老板不懂技术,想提就提吧,不影响底下的操作。和我一起参加面试的开发部主管私下跟我说:说实话,真的不想参加这种面试,每次都是被呼来唤去的当工具用,面试这么多次,一个合格的也没有,这次估计也没什么戏。我也有同感,因为这已经参加了不下8次。每次面试,搭档都会善意地提醒说,除了技术,你们其他都不用问。每次听到这句话,我都觉得很好笑。因为在非技术人眼中,会想当然觉得做技术的是宅男,除了技术什么都不懂。我暗暗下决心,技术这辈子只能算是我的业余爱好,一定要掌握读万卷书的本事。题外话我想岔开话题多说两句,我个人强烈建议:技术人要懂市场,懂商业,要广交友,要走出去,到客户心里去,不要排斥产品和有意义的社交。不要做技术做着做着,变成了别人心目中的工具人和手段人。反过来想,技术人要学产品,学商业,学财务,学管理,要有开放包容的心态。一花一世界,任何一个行业都是一个世界,但就难度来说,以上提到的技术周边的知识体系真的不如技术的门槛那么高,学出去属于降维打击,就是看自己的主管能动性强不强。技术人要有创业精神,而且只要自己不盲目自大,创业是有技术优势的,虽然这么说会勾起很多人的吐槽和谩骂,但是我还是想坚持这个观点。因为从概率的角度看,技术创业成功的大部分是技术背景的人,不管是雷军,张一鸣,王兴,李彦宏,刘强东,张朝阳,马化腾,华为就更不用说了,没有技术背景的是不能做高管的。马云这种成功案例是属于风口上的奇迹。这里不是替技术人说话,技术人给人感觉很木讷,是因为不愿意开放心态,扩大视野和维度给人产生的错觉。技术人要营养平衡,不能挑食。我在安踏遇到过两个很有意思的技术人,一个是CTO,每逢节假日,比如中秋尾牙什么的,就会上台表演跳舞,各自骚动作,一点不比邓超弱。另外一个是写PHP的同事,每天看到他就是想笑,除了天天开黄S笑话,就是拿着他那部长筒相机,到处拍风景照。一下班就去约女孩子打羽毛球。言归正传,总算面试完了,人事找我要面试文档。面试评估最后我给的综合评估是:架构理论能力不错,落地能力待进一步评估;技术攻坚能力一般,无法胜任,技术栈也不相同。为人平和,沟通逻辑清晰。如果是从技术攻坚来评估是不合适的,因为技术栈不同,对方用的JAVA,我们用的.NET,技术能力也一般。如果是从中小团队的技术流程管理来看,有一定的流程管理经验。你归新人管!过了大概两周时间,新人来报道了,老板开了一小会,问我说:你现在归谁管?我说是某某某,老板说,你现在归新来的总监管。我说好,反正都是为公司做事,有高人进来,互相学习是一件好事。但是,说实话,我还是咯噔一下,以自己的个性,我的年纪比新来的总监大2岁,如果有冲突,我可能无法接受一个年纪比我小的人对我指指点点。我虽然说好,但是我知道在该公司我已经没有上升的机会了。这事给我的触动是:我除了把眼前的事情做好,接下来就是思考未来的路要怎么走了。倒不是自己看重岗位,而是人员去留无常让我非常有幻灭感,没有公司能管你一辈子,你要成为自己的老板。我曾经在很小的公司呆过(4个开发1个老板),也曾在超大的公司呆过(上万人)公司也好,同事也罢和自己有限的生命相比,我们更应该关注内心的真实想法。我是谁,我想要什么,我放弃什么?我记得刚到公司前两年,为了第一个项目加班加点的往事,虽然时过境迁,但是过程确实很单纯,很充实,就是想要把事情做好。但是直觉告诉自己,没有这个必要,一点意义也没有,因为我不想再过看人脸色的打工的生活了。打工是一种体验,是为了混饭吃,人生短暂,为什么不去尝试一下一个里程呢?我感觉我和创业之间只隔着一层很薄的纱布,正在等待机会被捅破。有些人谈到创业会有后怕,经历过人生百态和世间的冷清冷暖,虽然没有皮糙肉厚,但是一点老茧还是有的。每一次的离开都是下一个里程碑的开始,昨天最好的成就是明天最低的要求。煽情一点说,希望在我离开这个世界的时候,我可以自豪地对自己说,我没有虚度年华,没有碌碌无为,我有在为自己的理想奋斗着。为什么要离职虽然还没决定离职,但是我还是会回想每一次离职的内心纠结。这次不犹豫了,干脆把离职的原因和离职信的模板都准备一下。相信很多程序员都有离职的经历,离职是很值得用心琢磨的事情。是为了更高的工资,还是为了更大的平台,或者为了离开负能量的领导,或者为了自己的梦想,为了美好的未来等等。离职是一个舍和得的过程,我记得每次离职我都会把利弊罗列成一张清单,左边写的是收获,右边写的是损失。我不知道大伙有没有被上级怒吼而伤过自尊心而想着要离职,我个人遇到过很多次,但是每次我都会继续忍耐下来,我会反思自己是不是做的不对,给公司造成损失,如果我的判断是对的,我是坚决不会离职的。如果是误解我也会看情况,如果是上级是一位正能量的人,我没有理由离开。否则的话,到了时间点,我也会离开的。我敏感吗,不敏感吗,敏感吗……我见过一个在安踏一起共事的公司,中间不顾经理的多次劝说,去了一家小公司,做外企的项目,工资翻了一番。我也见过有的同事和领导吵得不可开交,离职那天手续都没办,剩余的工资也不要了。还有的同事,工作勤勤恳恳,一直干到公司倒闭,干一家倒一家,倒一家干一家。更有同事因为疫情离职后,又回到公司,结果回来发现也并不尽如意,最后又离开了……见过离离合合,对人事部门来说是再普通不过,但是我们是什么时候变得麻木的呢?每一个离职的背后,其实都有值得深入反思的地方。我无法总结离职的理由,但是有几个原因我是不会离职的:1.一时看不惯领导,觉得领导不如自己。2.纯粹为了工资,不考虑个人成长。3.为了换一个可以躺平的平台。备份一下辞职信人虽在,但是不一定常在,手边库存一份辞职信很有必要。以下是我居家旅行常备的一份辞职信,如果你觉得得体,不妨拿去。尊敬的张总:很抱歉,由于个人方面的原因,我在此向你提出离职。1.离职后的交接:这次离职,我会把对公司的影响尽可能降到最低。1)系统文档:包括架构文档、日常周报、月报、规范文档目前都归档在文档系统。2)代码管理:目前所有代码都统一存在代码仓库系统。3)开发流程:目前团队基于腾讯的tapd系统进行开发,该系统包含需求池、迭代规划、故事墙、看板等开发模式的基础模块,是业内比较出名的开发流程管理规范系统。集团化的架构演化:截止这个月底,底层的技术支撑已经全部完成,等产品的PRD文档出来,就可以进行开发。4)物联网架构:整体骨架基本上已经搭建完成,后续同事可以根据设计图纸继续往下开发和完善。5)团队分工:团队前后端分离,职责分明,各司其职。后续产品设计好了,只要技术主管那边安排好任务和进度,基本上就可以直接开发。我这边的工作会全部交接给新的主管,新主管刚进来对整体架构和工作编排可能不熟悉,我这边一个月的交接加上后面有吴和王的协助,应该能顺利过渡过来。如果后面个别有不清楚的,我可以抽空过来协作一下。2.离职去向:我后续从事的是互联网相关的创业,和当前从事的行业没有任何关联。这次辞职,给您和公司带来的不便,请谅解,再次感谢!教训以上是一份时刻准备着的离职信,虽然是模拟的,我知道暂时用不上,但是未来呢?每一次入职都要为离职做准备,我不是鼓励离职,也不是鼓励打工一辈子,因为离职也可能是去创业。这里的准备是指为下一次成长打基础。比如在你离职那天,你的.NET技术更厉害了,你的VUE也精通了,或者你的管理能力得到了磨练,亦或者你呆着公司的三年,你分享了100篇博客,认识了十来个技术朋友,了解了创业的过程。说的通俗一点,就是在下一份简历里面,我们又有了哪些值得吹牛的内容。结尾最后,想借用苏轼的一首诗来总结一下:归去,也无风雨也无晴,不扯这些没用的了……如喜欢本文,请点击右上角,把文章分享到朋友圈如有想了解学习的技术点,请留言给若飞安排分享因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享·END·相关阅读:一张图看懂微服务架构路线基于Spring
2022年10月9日
其他

万字长文,九大方面归纳总结Redis

它就是为大数据统计而生。BitMap统计日活为了统计今日登录的用户数,我们建立了一个bitmap,每一位标识一个用户ID(假设是1-1亿,空间使用量1亿/8/1024/1024=11MB,
2022年10月8日
其他

Redis多线程架构的演进

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?Redis真的是单线程吗?网上有很多关于这个问题的讨论,得出的结论也几乎是一致的。本文在讨论这个问题之前,先定义好问题中“单线程”的概念边界:1.单线程指的是“核心网络模型”2.单线程指的是Redis整个服务端架构的设计对于边界1,那么答案是肯定的,在Redis
2022年9月19日
其他

谈谈Redis高可用之主从复制

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?之前总结过redis的持久化机制:深度剖析Redis持久化机制,持久化机制主要解决redis数据单机备份问题;redis的高可用需要考虑数据的多机备份,多机备份通过主从复制来实现,这是redis高可用的基石。本文将详细介绍redis主从复制的实现原理,在使用过程中应该注意的问题和相关配置。1.
2022年9月12日
其他

深度剖析Redis持久化机制

每隔1s执行一次fsync,这个1s的周期是可以配置的,这是数据安全性和性能之间的折中方案,在保证高性能的同时,尽量使数据少丢失。推荐在生产环境中使用。2.2
2022年8月30日
其他

Redis 内存淘汰机制详解

开头的策略是针对所有数据的,如果数据被选中了,即使过期时间没到,也会被删除。当然,如果它的过期时间到了但未被策略选中,同样会被删除。那么我们如何配置过期策略呢?命令行config
2022年8月23日
其他

浅谈缓冲的理论与实践

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?目录深入理解缓冲的本质文件读写流日志缓冲缓冲区优化思路同步操作异步操作Kafka缓冲区示例缓冲区的其他案例缓冲区的注意事项小结本文将详细介绍“缓冲”这个优化手段,之前在
2022年8月22日
其他

Java性能优化的七个方向

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享了解了优化目标后,那接下来应该从哪些方面入手呢?本文主要侧重于理论分析,我们从整体上看一下
2022年8月15日
其他

浅谈Java中的池化技术

true),进而导致正常服务也不能运行。面试题一般面试官会问:你会把超时参数设置成多大呢?我一般都会把最大等待时间,设置成接口可以忍受的最大延迟。比如,一个正常服务响应时间
2022年8月5日
其他

同一份数据,Redis为什么要存两次?

编码压缩列表在列表对象和哈希对象都有使用到,想详细了解的可以点击这里。https://blog.csdn.net/zwx900102/article/details/112651435ziplist
2022年7月30日
其他

Redis 如何实现库存扣减操作和防止被超卖?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享电商当项目经验已经非常普遍了,不管你是包装的还是真实的,起码要能讲清楚电商中常见的问题,比如库存的操作怎么防止商品被超卖。解决方案分析基于数据库单库存基于数据库多库存基于redis基于redis实现扣减库存的具体实现初始化库存回调函数(IStockCallback)扣减库存服务(StockService)调用在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等。解决方案使用mysql数据库,使用一个字段来存储库存,每次扣减库存去更新这个字段。还是使用数据库,但是将库存分层多份存到多条记录里面,扣减库存的时候路由一下,这样子增大了并发量,但是还是避免不了大量的去访问数据库来更新库存。将库存放到redis使用redis的incrby特性来扣减库存。分析在上面的第一种和第二种方式都是基于数据来扣减库存。基于数据库单库存第一种方式在所有请求都会在这里等待锁,获取锁有去扣减库存。在并发量不高的情况下可以使用,但是一旦并发量大了就会有大量请求阻塞在这里,导致请求超时,进而整个系统雪崩;而且会频繁的去访问数据库,大量占用数据库资源,所以在并发高的情况下这种方式不适用。基于数据库多库存第二种方式其实是第一种方式的优化版本,在一定程度上提高了并发量,但是在还是会大量的对数据库做更新操作大量占用数据库资源。基于数据库来实现扣减库存还存在的一些问题:用数据库扣减库存的方式,扣减库存的操作必须在一条语句中执行,不能先selec在update,这样在并发下会出现超扣的情况。如:update
2022年7月25日
其他

在线等:线上MySQL的自增id用尽怎么办?

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?MySQL的自增id都定义了初始值,然后不断加步长。虽然自然数没有上限,但定义了表示这个数的字节长度,计算机存储就有上限。比如,无符号整型(unsigned
2022年7月23日
其他

如何写好日志记录?

撰写日志的要求既然撰写日志是有需求,而且也能在未来帮助我们提高工作效率的事情,长远来看是非常有利的一件事情。因此我们应该在自己开发的程序中符合规范的撰写日志,在写日志时要注意以下的问题。1.2.1
2022年7月22日
其他

3 步完成 Spring Boot 的日志脱敏

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?在我们写代码的时候,会书写许多日志代码,但是有些敏感数据是需要进行安全脱敏处理的。对于日志脱敏的方式有很多,常见的有①使用conversionRule标签,继承MessageConverter②书写一个脱敏工具类,在打印日志的时候对特定特字段进行脱敏返回。两种方式各有优缺点:第一种方式需要修改代码,不符合开闭原则。第二种方式,需要在日志方法的参数进行脱敏,对原生日志有入侵行为。自定义脱敏组件(slf4j+logback)一个项目在书写了很多打印日志的代码,但是后面有了脱敏需求,如果我们去手动改动代码,会花费大量时间。如果引入本组件,完成配置即可轻松完成脱敏。(仅需三步可轻松配置)一、自定义脱敏组件
2022年7月19日