自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2351)
  • 资源 (1)
  • 收藏
  • 关注

原创 你不是 leader,怎么推动事情走下去?

你不是指挥官,但你是facilitator —— 促动者,让人听你不是因为你大,而是你有组织力。有时候你不说话,事情就真没人记得了。不是你说了算,但你提的方案有道理,大家就会照你说的做。为了不耽误进度,我先拟了一个初步下一步,欢迎补充修改。不是甩锅,而是聪明地引入该出现的人,顺带洗清责任。提前提醒一下,如果要推进,可能需要领导的决策。你作为这方面的专家,是不是可以牵头一下这块?这边我草拟了一个初步方案,欢迎大家补充建议。我只是想帮大家对齐一下,方便推进下一步。我把这个加进我们的进度表,方便持续关注。

2025-06-26 00:16:36 522

转载 服务端高并发分布式架构演进之路

1. 概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径2. 基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍:分布式 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署

2021-05-25 17:47:54 462

转载 警惕软件复杂度困局

简介:对于大型的软件系统如互联网分布式应用或企业级软件,为何我们常常会陷入复杂度陷阱?如何识别复杂度增长的因素?在代码开发以及演进的过程中需要遵循哪些原则?本文将分享阿里研究员谷朴关于软件复杂度的思考:什么是复杂度、复杂度是如何产生的以及解决的思路。较长,同学们可收藏后再看。写在前面软件设计和实现的本质是工程师相互通过“写作”来交流一些包含丰富细节的抽象概念并且不断迭代过程。另外,如果你的代码生存期一般不超过6个月,本文用处不大。一 软件架构的核心挑战是快速增长的复杂性越是...

2021-05-19 18:17:58 666

转载 常见代码重构技巧,非常实用

关于重构为什么要重构项目在不断演进过程中,代码不停地在堆砌。如果没有人为代码的质量负责,代码总是会往越来越混乱的方向演进。当混乱到一定程度之后,量变引起质变,项目的维护成本已经高过重新开发一套新代码的成本,想要再去重构,已经没有人能做到了。造成这样的原因往往有以下几点:编码之前缺乏有效的设计 成本上的考虑,在原功能堆砌式编程 缺乏有效代码质量监督机制对于此类问题,业界已有有很好的解决思路:通过持续不断的重构将代码中的“坏味道”清除掉。什么是重构重构一书的作者Martin..

2021-05-13 10:01:52 1026

转载 JAVA线上故障排查全套路

线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。一、CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用js

2020-09-22 17:45:24 474

转载 图解+代码|常见限流算法以及限流在单机分布式场景下的思考

大家好,我是 yes。今天来说说限流的相关内容,包括常见的限流算法、单机限流场景、分布式限流场景以及一些常见限流组件。当然在介绍限流算法和具体场景之前我们先得明确什么是限流,为什么要限流?。任何技术都要搞清它的来源,技术的产生来自痛点,明确痛点我们才能抓住关键对症下药。限流是什么?首先来解释下什么是限流?在日常生活中限流很常见,例如去有些景区玩,每天售卖的门票数是有限的,例如 2000 张,即每天最多只有 2000 个人能进去游玩。题外话:我之前看到个新闻,最不想卖门票的景区“

2020-09-22 13:06:08 584

转载 springboot实现定时任务,异步操作,统一结果返回,全局异常处理,拦截器及事务处理

本文都是springboot的常用和实用功能,话不多说开始吧定时任务1.启动类开启注解@EnableScheduling //开启基于注解的定时任务@MapperScan("com.pdzx.dao")@SpringBootApplicationpublic class VideoApplication { public static void main(String[] args) { SpringApplication.run(VideoApplicatio

2020-08-26 20:22:41 1958

原创 聊聊微服务架构及分布式事务解决方案

分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的最好办法其实就是不考虑分布式事务,将一个大的业务进行拆分,整个大的业务流程,转化成若干个小的业务流程,然后通过设计补偿流程从而考虑最终一致性。什么是事务事务(Transaction)及其ACID属性事务是由一组SQL语句组成的逻...

2020-04-21 22:34:45 651

转载 Java线程池实现原理及其在美团业务中的实践

随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。本文开篇简述线程池概念和用途,接着结合线程池的源码,帮助读者领略线程池的设计思路,最后回归实践,通过案例讲述使用线程...

2020-04-03 14:58:43 701

转载 Synchronized 和 Lock 锁在JVM中的实现原理以及代码解析

一、深入JVM锁机制:synchronizedsynrhronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。其应用层的语义是可以把任何一个非null对象作为"锁",当synchronized作用在方法上时,锁住的便是对象实例(this);当作用在静态方法时锁住的便是对象对应的Class实例,因为Class数据存在于永久带,因此静态方法锁相当于该类的一个全局锁...

2020-04-01 16:00:25 581

转载 一文带你理解Java中Lock的实现原理

当多个线程需要访问某个公共资源的时候,我们知道需要通过加锁来保证资源的访问不会出问题。java提供了两种方式来加锁,一种是关键字:synchronized,一种是concurrent包下的lock锁。synchronized是java底层支持的,而concurrent包则是jdk实现。关于synchronized的原理可以阅读再有人问你synchronized是什么,就把这篇文章发给他。在这里...

2020-04-01 15:04:40 929

转载 业务复杂=if else?刚来的大神竟然用策略 工厂彻底干掉了他们!

对于业务开发来说,业务逻辑的复杂是必然的,随着业务发展,需求只会越来越复杂,为了考虑到各种各样的情况,代码中不可避免的会出现很多if-else。一旦代码中if-else过多,就会大大的影响其可读性和可维护性。首先可读性,不言而喻,过多的if-else代码和嵌套,会使阅读代码的人很难理解到底是什么意思。尤其是那些没有注释的代码。其次是可维护性,因为if-else特别多,想要新加一个分...

2019-10-24 13:41:06 889

转载 Mac免费软件下载网站推荐(全免费)

​​​​​一、Appstorrent二、Xclient三、麦氪派四、Cmacked五、MacTorrents六、佛系软件七、马可波罗八、潘多拉盒子其他。

2025-07-16 01:02:49 47

转载 如何设计一个支付系统

支付系统在电商交易平台中发挥着至关重要的作用,涵盖了支付处理、安全性保障、支付方式管理、订单管理与结算、交易记录和报告、退款与售后支持等方面。一个高效、安全、可靠的支付系统对于电商企业的顺利运营和用户体验至关重要。二、支付系统的健壮性和稳定性至关重要。对于一个复杂的系统来说,监控是必不可少的。监控可以分为多个层面,包括业务监控(核心交易流程)、渠道监控(支付渠道的可用性和性能)、商户监控(商户交易状况)和账户监控(用户账户变动等)。这些监控措施可以及早发现问题,减少潜在的风险,架构设计是一个动态的过程。

2025-06-27 21:29:53 49

转载 为什么 Nginx 和 HTTP 中都有 keep-alive ,一文带你了解 TCP 连接复用

它们的共同点是都涉及到连接复用的概念,但应用场景不同,一个是客户端与服务器之间,另一个是代理服务器与上游服务器之间。

2025-06-27 21:17:20 46

转载 优秀架构师必须掌握的10大架构思维:从技术到战略的全面拆解

思维类型关键问题工具/方法抽象思维核心问题是什么?DDD、UML系统思维组件如何相互作用?系统动力学、链路追踪演进思维如何支持未来变化?分阶段迁移、防腐层折中思维优先级是什么?决策矩阵、SWOT分析。

2025-06-26 00:54:34 39

转载 优秀的技术Leader,一定要有体系

情境领导是一种领导模式,它的目的是帮助下属发展自我,使其能针对特定的目标或任务,经过时间的积累,达到最佳的工作成效。有体系的管理者,做事情有目标、有策略、有方法,总能够在关键时刻做对选择,带领团队不断取得成功,他自己的职业生涯获得了快速发展,下属自然愿意追随他,因为跟着这样的领导,升职加薪也会比别人快。因此,在工作当中保持积极的情绪,全情投入工作当中,建立与团队成员的和谐关系,在工作中找到意义,并且获得成就感,这就是一个人获得持续幸福的关键。当保健因素存在的时候,人们的不满只是降低,但是不会带来满足感。

2025-06-26 00:47:55 18

转载 从代码复杂度入手,如何写出高质量的代码

保持函数短小精悍(≤ 20 行)。单一职责原则(一个函数只做一件事)。减少嵌套层级(≤ 3 层)。使用设计模式(策略、状态机、责任链等)。借助工具自动化检测(SonarQube、Lizard)

2025-06-26 00:33:01 34

转载 AI概念解析:从入门到精通的36个关键术语指南

随着AI的普及和快速发展,越来越多的人开始关注AI,但是深奥晦涩的专业术语,让很多人望而却步,甚至对于人们应用AI产生了一定困难。因此,社区决定对AI领域的热点概念和专业术语进行解读,并配备相应图表以便于大家更形象的理解。我们将从七大方面进行深度解读,方便大家能够更好的进入该领域学习和应用。

2025-06-26 00:23:17 71

转载 架构设计技巧——代码与架构复用

复用有多种形式,它可以分为技术复用和业务复用两大类。技术复用包括代码复用和技术组件复用;业务复用包括业务实体复用、业务流程复用和产品复用。从复用的程度来看,从高到低,我们可以依次划分为产品复用 > 业务流程复用 > 业务实体复用 > 组件复用 > 代码复用。

2025-06-26 00:08:36 11

转载 从员工到主管升级4个能力

2025-06-25 23:53:26 8

转载 项目终于用上了 Spring 状态机,太优雅了!

状态模式在生活场景中也是比较常见的。比如我们平时网购的订单状态变化,还有平时坐电梯,电梯状态的变化。在软件开发过程中,对于某一项的操作,可能存在不同的情况。通常处理多情况问题最直接的办法就是使用if...else或者switch...case条件语句进行判断。这种做法对于复杂状态的判断天然存在弊端:判断条件语句过于臃肿,可读性较差,不具备扩展性,维度难度也很大。

2025-06-25 23:49:21 10

原创 跨语言系统之间集成问题

原理:如果确实没有可用的客户端库,且 HTTP API 的使用不够方便,可以在应用中自定义开发一个适配层。这个适配层负责与 Nacos 等中间件进行通信,将中间件的功能封装成适合当前语言使用的接口。示例:在 Go 语言中,如果需要与一个没有官方 Go 客户端的服务治理中间件集成,可以开发一个模块,在模块中实现与中间件的网络通信逻辑,解析中间件返回的数据格式,并将其转换为 Go 语言中的数据结构,提供给其他业务模块使用。这样,即使没有原生支持,也能通过自定义适配层实现与服务治理中间件的集成。

2025-06-09 13:22:53 544

原创 jvm gc问题总结

JVM 频繁 Minor GC 的原因和解决方案如下:以下是一些 JVM 频繁 Minor GC 的常见具体案例:JVM 频繁 Full GC 的原因和解决方案如下:以下是一些 JVM 频繁 Full GC 的常见具体案例:

2025-06-09 12:59:38 525

转载 Mysql是如何存储一行记录

Mysql是我们平时用的比较多的数据存储工具,那么当执行insert向Mysql中插入一条数据的时候,Mysql是如何存储这条的数据的呢?下面我们来聊聊这个话题。

2025-06-03 18:46:30 86

转载 Kafka如何处理消息积压(4大解决方案)

Kafka 消息堆积(Message Backlog),指的是在 Kafka 系统中,生产者生产的消息数量超过了消费者已经成功消费的消息数量,导致 Broker 中存在大量尚未被消费的消息。简单来说,想象一个传送带(Kafka Topic),生产者不断地将物品(消息)放到传送带上,而消费者则从传送带上取走物品进行处理。当传送带上的物品越积越多,消费者来不及处理时,就发生了消息堆积。Kafka 消息堆积的根本原因在于生产速度超过了消费速度,比如:1.生产者速度过快。

2025-06-03 18:40:06 263

转载 新来的小伙伴上来就搞 JVM 调优,还将接口吞吐量提高了 22.5%,被狠狠夸了!

小伙伴也可以这样算下自己的服务可用性,非 STW GC 时间应该达到 99.99% 才是健康的,不然还是有优化空间的,又学到了偷偷进步的方法。在 IO 交互型应用(例如互联网服务接口)中,大多数对象都是存活极短时间,在使用了分代收集的情况下(例如 CMS),Old 的大小应当为活跃对象(Full GC 后存活的)的 2~3 倍左右,考虑到浮动垃圾问题最好在 3 倍左右,剩下的都可以分给 Young 区,这样可以减少过早晋升带来的 GC 频繁 和 Full GC 问题。

2025-06-03 18:34:50 33

转载 人心惶惶:pod“内存使用率”一直99%告警,JVM竟然还在运行

本文提供一个真实的特殊生产案例,接下来带你 “云排查”。

2025-06-03 18:29:11 73

转载 MySQL MVCC快照机制的简易模型

MVCC的快照机制可以简化成的模型来理解。查询的功能是:根据时间点,查询到指定时间点之前的数据,而不会看到该时间点之后的变更(提交)。事务的四个隔离级别中,与快照有关的有两个:RC(Read Committed)和RR(Repeatable Read)。• RC级别下:每次快照读创建一个快照(时间点)。• RR级别下:第一次查询创建快照(时间点)。图中需要注意的点:• 时间点是以commit为分界的,也就是说,每个commit会出现一个新的数据版本。

2025-06-03 15:14:42 18

转载 如何有效提升研发质量(供参考)

关于研发质量相关,《建设系统化的研发管理流程》中第四部分“质量链”的内容也建议阅读。总结下我的完整思路:团队与团队之间的差异很大的,万金油形式的方案固然可行,但早晚要走到深水区去解决本质问题,不如早早下定决心去啃硬骨头没有调查就没有发言权,需要从结果指标(事故)来反向找团队中的病症所在分析问题不能只看表面,要用好5W2H更深层的分析,要有更多关联性的思考,努力做到举一反三。

2025-06-03 15:09:19 60

原创 长期熬夜,身体受损怎么办?看这篇就够了

2025-06-03 15:01:45 104

转载 架构设计技巧—代码与架构复用

复用有多种形式,它可以分为技术复用和业务复用两大类。技术复用包括代码复用和技术组件复用;业务复用包括业务实体复用、业务流程复用和产品复用。从复用的程度来看,从高到低,我们可以依次划分为产品复用 > 业务流程复用 > 业务实体复用 > 组件复用 > 代码复用。

2025-06-03 14:57:25 40

转载 架构设计技巧-容量

一方面是为了保证公司的正常运营和业务增长,及时地提供足够的容量,来满足未来所需。另一方面,也是希望空闲的容量越少越好,因为每一台空闲的服务器,都消耗公司的运营成本。现代的互联网服务规模的扩展,主要是用“水平扩展”而不是“垂直扩展”(通过增加服务器的数量和网络的带宽来提供更多的容量,而不是通过升级服务器)。相对于垂直扩展,水平扩展的优点显而易见,就是成本相对较低、调整容易、扩展性好。在确保系统可靠性的同时,尽可能地减少资源的投入 系统设计整体至少考虑应对5到10倍或近1到3年系统规模增长,要保障后续通过

2025-06-03 14:51:43 36

转载 RocketMQ之消息丢失的场景以及解决方案

但在消息消费时,路由信息仅返回 4,在具体拉取消息时,就只会消费 0、1、2、3 这 4 个队列中的消息,而 4、5、6、7 队列中的消息则完全不会被消费。需要注意的是,如果同时缩容写队列和读队列,可能会导致部分消息未被消费,因为写队列中可能还有消息,但读队列已被缩容,此时写队列中的消息将永远无法被消费到。在系统中部署一套消息零丢失方案,旨在无论何种场景下都能确保消息传输的绝对可靠性,这听起来无疑颇具吸引力,而这也正是该方案的一大显著优势——它能保障系统数据的准确无误,杜绝消息丢失情况的发生。

2025-06-03 14:40:30 168

转载 DataGrip基本使用

当我们想在数据库创建一个表时,右击这个数据库,点击新建,点击表。鼠标右击mysql,点击新建,点击架构。如果想设置字段,鼠标右击列,点击新建,输入完后点击确定。如果想修改表,鼠标右击然后点击修改就会出现修改页面。然后输入自己的用户名和密码,第一次要下载驱动文件。然后点击应用,再点击确定,那么这个连接就建立好了。然后点击测试连接,出现这样的界面就说明成功了。然后点击+号,点击数据源,点击mysql。然后输入自己的项目名称,点击确定。进入到主页,点击新建项目。那么这个表就创建成功了。然后输入数据库的名字。

2025-05-21 00:37:06 277

转载 用户画像:怎么做才有意义

用户画像是用户增长、数据分析、用户运营、产品设计、市场研究、广告投放、智能定价等永远绕不开的话题。当然,尤其有两个地方关于用户画像及其泛滥,一个是在数据分析师的招聘JD里,另外一个是数据服务和营销咨询类的公司里,本文就从一个数据分析师的角度,集中梳理一下用户画像有关的底层逻辑和实践方法论。Again,讲清楚这个问题最重要,因为现实中有太多的用户画像是为了做而做,往往是老板“觉得”要干,产品、运营、数据等一众部门花了大量的人力和财力,但最后成果往往在墙角吃灰,例如下面这个例子。

2025-04-22 20:15:49 201

原创 架构师如何避免从入门到忘记

本文介绍了架构师在学习过程中常见的困境以及应对方法,并详细阐述了海绵学习法、Play学习法和Teach学习法的原理、技巧和应用场景。实践是学习过程中非常重要的环节,通过亲身实践,能够更深入地理解和掌握所学知识,提高学习内容的留存率。教是最好的学,通过教授他人,能够更深入地理解和巩固所学知识,提高学习内容的留存率。海绵学习法强调时间的“挤”出来,就像海绵里的水一样,只要愿意挤,总是有的。学习是一个飞轮效应的过程,积累越多,学得越快。贵在坚持,遵循二十英里法则,避免突击学习,保持学习的连续性。

2025-04-22 20:04:04 614

转载 销售运营中的生成式人工智能:发展现状、典型用例与未来展望

在销售领域,生成式人工智能能够帮助销售团队克服诸多挑战。此外,随着客户对个性化体验的需求不断攀升,通用的推广方式逐渐失去效果,生成式人工智能为销售团队提供了打造超个性化沟通的工具,使他们能够预测客户需求,并在竞争对手之前提供解决方案。通过周密的规划和遵循最佳实践,销售团队能够充分发挥生成式人工智能的潜力,提高生产力,增强客户互动,实现长期增长。潜在客户资格评分代理会根据参与度和数据自动对潜在客户进行评分,并结合人工反馈进行调整,优先筛选出高价值潜在客户,让销售团队能够专注于有意义的互动,促进更好的转化。

2025-04-22 19:59:59 114

转载 复杂的事情简单化,简单的事情标准化,标准的事情流程化,流程的事情自动化

复杂的事情简单化,简单的事情标准化,标准的事情流程化,流程的事情自动化。好几年前听到了这句话,觉得特别有道理,然后就一直有道理了好多年。直到去年公司做转盘项目,老大一直要标准化,才真正理解“标准化一直觉得这句话只对企业管理者适用,实践下来,发现这句话适用于所有人。

2025-04-22 19:57:30 222

转载 一文搞懂:信息化,数字化,智能化是三种不同的概念

信息化相对来说是最基础的。它强调的是通过硬件设施(计算机)和信息技术(在线平台),将企业在生产经营过程中产生的业务信息在电子端记录、储存和管理,常见的有办公自动化系统、企业资源计划(ERP)系统等。信息化的核心是“信息的流通与共享”,让不同部门、不同岗位清楚地了解到:“业务状态是怎样的”,“流程走到了哪一步”等。这样一来,信息孤岛减少了,企业人员更能做出有利于生产要素组合优化的决策,增强应变能力。

2025-04-22 19:52:48 227

Java8 新特性.rar

Java8新特性,包含代码实例与技术文档。

2020-03-29

空空如也

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

TA关注的人

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