自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2234)
  • 收藏
  • 关注

转载 架构师必备:技术债务的识别、管理与解决之道

在开发开始之前,需求往往没有得到充分的定义,导致开发在设计之前就草草开始。这种方式看似可以节省时间,但由于需求在开发过程中不断变化,往往需要后期大量返工,增加了技术债务。

2024-09-18 00:02:20 412

转载 在线支付-实践经验

两阶段提交(Two-phase Commit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真正执行事务。第一阶段(prepare):即所有的参与者RM准备执行事务并锁住需要的资源。参与者ready时,向TM报告已准备就绪。第二阶段 (commit/rollback):当事务管理者(TM)确认所有参与者(RM)都ready后,向所有参与者发送commit命令。

2024-09-14 00:44:08 182

转载 在线支付-交易类型

用户通过支付平台进行商品或服务购买的交易过程。作为钱包支付能力“充转提”的一部分,转账是指用户将资金从一个账户转移到另一个账户。转账成功后,转出账户的余额会减少,转入账户的余额会增加。退款是指商户将资金返还给用户。退款成功后,商户的账户余额会减少,用户的账户余额会增加。代扣也叫作代收,是由用户授权、商户主动发起,对用户指定账户进行扣款的一种支付交易业务。代扣成功后,商户的账户余额会增加,用户的账户余额会减少。代扣常用在“订阅”类型的业务,是业务获得稳定收入的重要交易类型。

2024-09-13 23:36:34 42

转载 防御式编程(Defensive Programming)

防御式编程是一种安全的编程思想,本质上是要求开发人员对代码和线上环境报以辩证的态度和敬畏之心。它通过以下途径,从而来提升系统健壮性:提高工程质量——减少bug和问题;提高源码可读性—— 源码应该变得可读且可理解,并且能经受code review;让软件能通过预期的行为来处理不可预期的用户操作。作为一名优秀的开发者,不能将希望完全寄托于测试,而是在设计、开发阶段,对系统的异常和边界有充分的认知和考量,这是防御式编程带给我们的思考。

2024-09-13 23:14:05 181

转载 浅谈API网关

前言随着微服务架构的流行,API网关逐渐进入人们的视野,并且越来越受到欢迎。在微服务体系架构中,我们将应用程序划分为多个低耦合的服务。每个服务都具有特定的功能,并交给不同的团队维护。尽管微服务具有许多优势,比如程序易于开发、维护和部署,将大团队拆分成小团队利于敏捷实践落地等,但是也带来一些问题,最为直观的就是由于接口过于繁杂,客户端难以快速、安全地访问到所需的信息。那么如何解决呢?这种情况下,我们就需要本文所分享的API 网关(API Gataway)。

2024-09-13 22:31:33 341

原创 内部类的作用及应用场景

Java内部类(也称为嵌套类)是定义在另一个类(外部类)内部的类。它们具有多种作用,以下是。

2024-09-03 22:24:33 272

转载 Java内部类全解析:提升你的编程技巧

Java 内部类是定义在另一个类中的类。它们可以访问外部类的成员,包括私有成员,而无需外部类实例。内部类主要用于处理那些与外部类紧密耦合的任务,它们可以封装复杂性并创建更加可读和维护的代码。静态内部类是一个被 static修饰符修饰的内部类,也被称作静态嵌套类。在Java中,它是嵌套在外围类中的一个静态成员类。静态内部类与外围类的实例无关,因此它可以像其他静态成员一样,没有外围类对象时被加载和访问。成员内部类也称为非静态内部类,它是最常用的一种内部类。在外部类的成员位置定义,没有使用static关键字修饰。

2024-09-03 22:16:07 116

原创 Java项目中classpath类路径

classpath指的是类路径,也就是编译之后的target文件夹下的WEB-INF/class文件夹,下面这篇文章主要给大家介绍了关于Java项目中classpath类路径是什么的相关资料,需要的朋友可以参考下classpath类路径在 Spring Boot 中既指程序在打包前的/java/目录加上/resource目录,也指程序在打包后生成的/classes/目录。两者实际上指的是同一个目录,里面包含的文件内容一模一样。classpath 指的就是 classes目录。

2024-08-18 22:53:33 417

转载 进程、线程、协程

线程的创建或销毁的代价比进程小且上下文切换的速度比进程快,需要频繁创建、销毁或大量计算时应优先选用线程线程在CPU上的使用效率更高,需要多核分布时优先选用线程,需要多机分布时优先选用进程线程的安全性、稳定性没有进程好,需要更稳定安全时优先使用进程。

2024-08-14 15:19:32 33

转载 IntelliJ IDEA Mac 常用快捷键

本文快捷键设置基于macOS(Keymap->macOS)

2024-06-04 16:10:35 183

转载 Mac中idea快捷键(Keymap->macOS)

参考链接:https://blog.csdn.net/weixin_43882788/article/details/122137242。官方文档:jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard_Mac.pdf。参考链接:https://www.cnblogs.com/name-lizonglin/p/13298209.html。配置:本文快捷键设置基于macOS(Keymap->macOS)Pro(13英寸,M2,2022年)

2024-06-04 15:57:28 174

原创 ==和equals的区别

2024-05-11 00:45:05 172

转载 Mysql中in和exists的区别 & not in、not exists、left join的相互转换

在oracle中,int中数据集的大小超过1000会报错;在mysql中,超过1000不会报错,但也是有数据量限制的,应该是4mb,但不建议数据集超过1000,因为in是可以走索引的,但in中数据量过大索引就会失效1selectfromwhereselectfromwhere1selectfromwherenotselectfromwhereexist + not exists 是全量数据,这点与in不同。

2024-05-11 00:20:06 108

转载 debug(调试)技巧简单介绍

选中一个线程:

2024-05-11 00:07:31 61

转载 MySQL数据库(binlog,redolog,undolog)

如果redo log写失败了,而binlog写成功了。那假设内存的数据还没来得及落磁盘,机器宕机,那主从服务器的数据就不一致了(从服务器通过binlog得到最新的数据,而主服务器由于redo log没有记载,没法恢复数据),所以如果redo log写失败了,那我们就认为这次事务有问题,回滚,不再写binlog。如果redo log写成功了,而binlog写失败了,主从将无法同步,所以我们还是会对这次的事务进行回滚操作,将无效的binlog给删除(因为binlog会影响从库的数据,所以需要做删除操作)。

2024-04-25 00:47:21 77

转载 大厂基本功 | MySQL 三大日志 ( binlog、redo log 和 undo log ) 的作用

MySQL日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志binlog(归档日志)和事务日志redo log(重做日志)和undo log(回滚日志)。今天就来聊聊redo log(重做日志)、binlog(归档日志)、两阶段提交、undo log(回滚日志)。MySQL InnoDB 引擎使用redo log(重做日志)保证事务的持久性,使用undo log(回滚日志)来保证事务的原子性。MySQL数据库的数据备份、主备、主主、主从都离不开。

2024-04-25 00:45:08 54

转载 事务的ACID

ACID 是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)的缩写,它们分别描述了事务的四个基本特性。事务的 ACID 属性是确保数据库操作可靠性的关键。每个属性都有其重要性和实现机制。在设计和开发数据库应用时,了解和正确应用这些属性是至关重要的。

2024-04-24 23:03:36 60

转载 常见API网关总结分析

有一些特性Kong默认是缺失的,如API级别的超时、重试、fallback策略、缓存、API聚合、ABTest等,这些需要开发者自己定制和扩展。Kong是一个可扩展的,开源的API层,运行在RESTful前端,可通过插件扩展(认证、安全、流量控制、分析&监控、转换、日志)。常见的API网关有SpringGateway、Zuul、Kong、apisix等,基于nginx平台的网关有:KONG、APIUmbrella、apisix, 自研的网关有:apigee、StrongLoop、Zuul、Tyk。

2023-11-08 04:30:37 3633

转载 API网关之Kong网关简介

那么,Kong是一个什么东东呢?它是一个开源的API网关,或者你可以认为它是一个针对API的一个管理工具。你可以在那些上游service之上,额外去实现一些功能。Kong是开源的,所以你可以在Github找到它,你现在就可以下载使用。Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。

2023-11-08 04:18:10 3668

转载 4层负载均衡和7层负载均衡,有什么区别

常见的负载均衡方式有几种,比如DNS,这是最简单的负载均衡的方式,一般用于实现地理级别的负载均衡。不同地域的用户通过DNS解析可以返回不同的IP地址,这种方式负载均衡最简单,但是扩展性太差,控制权在域名服务商。所以,4层负载均衡和7层负载均衡的区别在于他们所操作的网络层次不同。4层负载均衡工作在传输层,可以根据端口号IP地址进行负载均衡,但无法识别应用层的协议。作为网络层和传输层的模式,也被称作为4层负载均衡,通过对数据包的IP地址和端口进行修改,来达到负载均衡的效果。4层负载均衡和7层负载均衡有何不同?

2023-11-08 04:12:36 3488

转载 并行和并发哪个好?并行和并发的概念和区别

并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行一个操作,多个操作快速切换执行)。2.跨多线程的并行工作可以更好的利用系统的资源。

2023-11-08 04:10:53 260

转载 通俗易懂地理解并发和并行的区别

并发和并行的区别,相信很多初出茅庐的程序员都会被问到这个问题吧,这两个概念极容易混淆。今天,我们就来通俗地聊聊并发和并行的区别。

2023-11-08 04:04:24 1145

转载 多线程就一定能提高处理速度吗?

当程序偏计算型的时候,盲目启动大量线程来并发,并不能提高处理速度,反而会降低处理速度。因为在多个线程进行切换执行的时候会带会一定的开销。其中有 上下文切换开销,CPU调度线程的开销,线程创建和消亡的开销等。从输入结果来看,线程1K,10K的时候,多线程并没有打来处理效率的提升,反而下降了。上下文切换的开销,主要是来自于当线程切换时保存上一个线程现场和载入下一个线程现场的操作。使用多线程来提高程序处理速度,其本质是提高对CPU的利用率。使用空循环来模拟计算性任务,看下在不同数量的线程,程序的表现。

2023-11-08 04:02:46 373

转载 吃透 MQ 的本质

这篇文章从 MQ 一发一存一消费这个本质出发,讲解了消息模型的演进过程,这是 MQ 最核心的理论基础。基于此,大家也能更容易理解 MQ 的各种新名词以及应用场景。最后通过回答:如何设计一个 MQ?目的是让大家对 MQ 的核心组件和技术难点有一个清晰的认识。另外,带着这个问题的答案再去学习 Kafka、RocketMQ 等具体的消息中间件时,也会更有侧重点。

2023-11-08 03:59:44 79

转载 从0到1搭建车企数字化营销中台:客户数据平台

广义的CDP是一个营销系统,它统一企业来自营销或其他渠道的客户数据,以实现客户建模、优化客户体验的目标。狭义的CDP是整合来自多个不同来源的数据,为客户洞察和交互提供数据支持。

2023-11-05 20:06:55 493

转载 OneID:实现全域链接、标签萃取、立体画像的数据应用服务

加密),缺少一句过渡。在动态识别算法之前,建设自动化数据接入框架,一方面ID所涉及的数据源业务的变更频繁,关系对接入需要不断调整,如某业务日志中的Mobile-MAC关系对需要添加,同时删除此日志中的MAC-UserID的关系等等,另外一方面因计算量实在太大影响数据产出时效,不是所有的ID和ID的识别都是支持的,因此需要有一个配置化的方式来记录哪些ID需要接入,哪些ID和ID之间需要识别服务。当时,作为数据服务团队一员,老板是甘云锋(风剑),按当时“用数据”的阶段定义,阿里巴巴正处于向3.0转变的过程,

2023-11-05 20:00:36 1346

转载 数据中台OneID:详解ID-Mapping!

相同设备,不同账号间切换相同用户,不同渠道下账号不相同,如微信小程序和APP同个用户,在不同的设备商登录ID-Mapping是大数据分析中非常基本但又关键的环节,ID-Mapping通俗的说就是把几份不同来源的数据,通过各种技术手段识别为同一个对象或主题,例如同一台设备(直接),同一个用户(间接),同一家企业(间接)等等,可以形象地理解为用户画像的“拼图”过程。

2023-11-05 19:56:03 1077

转载 数据库设计三大范式(简单易懂)

比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成为一个数据库表的字段就行,但是如果系统经常访问“地址”属性中的“城市”部分,那么一定要把“地址”这个属性重新拆分为省份、城市、详细地址等多个部分来进行存储,这样对地址中某一个部分操作的时候将非常方便,这样设计才算满足数据库的第一范式。这里产生一个问题:这个表中是以订单编号和商品编号作为联合主键,这样在该表中商品名称、单位、商品价格等信息不与该表的主键相关,而仅仅是与商品的编号相关,所以在这里违反了第二范式的设计原则。

2023-11-05 19:51:07 108

转载 数据库设计的三大范式

3nf举例子:已经有课程表(课程编号、课程名称、课程时长)现在学生信息表也要有课程的信息,也想要有课程名称,但是根据第三范式是不允许直接在学生信息表出现课程名称(非主键),可以通过主键的课程编号间接拥有课程名称。数据库设计的三大范式。

2023-11-05 19:49:34 62

转载 实现数据库中加密字段的模糊检索思路

如果输入01234 大于4位的号码,先将其分组,0123,1234,并将分组后的字符串分别加密,然后拼接在一起,做为sql语句的条件 like %smphone%不可以或不建议了,以目前4位分组来说,不能少于3位号码进行搜索了,分组太多,效率过低。诸如,把数据库数据先解密为明文在对比数据检索,或者把数据返给前端,让前端做数据对比与检索,都不是一个好的解决思路,结合具体业务细节上考虑的更多。可以的,如果输入3位号码,可以在后面+1位,分别为0-9,分为10组,进行检索。以此类推,实现对手机号的模糊检索。

2023-11-05 19:22:51 272

转载 有状态服务和无状态服务

这类服务在网易蜂巢云平台创建后,借助k8s内部的负载均衡,当访问该服务的请求到达服务一端后,负载均衡会随机找到一个实例来完成该请求的响应(目前为轮询)。这类服务的实例可能会因为一些原因停止或者重新创建(如扩容时),这时,这些停止的实例里的所有信息(除日志和监控数据外)都将丢失(重启容器即会丢失)。是指该服务的实例可以将一部分数据随时进行备份,并且在创建一个新的有状态服务时,可以通过备份恢复这些数据,以达到数据持久化的目的。有状态服务只能有一个实例,因此不支持“自动服务容量调节”。

2023-11-05 19:21:33 121

转载 Elasticsearch 有什么特点及应用场景?还有倒排索引,你有了解么

Elasticsearch 是分布式搜索和分析引擎。Elasticsearch 为所有类型的数据提供近实时(near real-time)的搜索和分析。网站搜索ELK 日志采集,存储,分析地理信息系统分析ES是一个分布式文档存储,存储的数据都是序列化为 JSON documents。使用倒排索引存储数据,倒排索引比较适合全文本搜索。基于搜索引擎库,可以存储,检索文档及元数据。支持 JSON 样式的查询语言 —— Query DSL,也支持 SQL 样式的查询。集群部署,易于扩展。

2023-11-05 19:18:58 82

原创 Skywalking 集群安装

Skywalking 集群安装_skywalking集群搭建-CSDN博客

2023-11-05 19:14:59 100

原创 kafka:生产者发送消息的分区策略

自定义分区策略 跟DefaultPartitioner实现方式一样。1、创建一个类,实现Partitioner接口。2、重写 partitioner中的方法,partitioner()方法的参数说明:参数1:topic参数2:key值参数3:key值字节数组参数4:value数据参数5:value数据的字节数组参数6:集群对象3、在 partitioner() 方法中编写自定义分区逻辑,返回分区编号。4、在生产者配置信息中进行配置自定义分区:=配置类全路径@Component。

2023-11-05 19:13:56 1105

原创 「RocketMQ技术专题」帮你梳理RocketMQ/Kafka的选择理由及二者PK

https://www.toutiao.com/article/7029921239707795976/?log_from=60a4a26619dc7_1699107228726

2023-11-05 19:11:49 61

原创 kafka系列综述

https://www.cnblogs.com/xyqlrjm/p/14938673.html?log_from=433bd6c5241a2_1699107215470

2023-11-05 19:11:11 54

原创 分布式定时任务调度框架选型

分布式定时任务调度框架选型-腾讯云开发者社区-腾讯云

2023-11-05 19:09:00 121

原创 分布式链路追踪原理详解及SkyWalking、Zipkin介绍

分布式链路追踪原理详解及SkyWalking、Zipkin介绍-腾讯云开发者社区-腾讯云

2023-11-05 19:08:04 54

原创 厉害!40 张图看懂分布式追踪系统原理及实践

https://www.toutiao.com/article/6871252505724977678/?log_from=1263c3b4dd6a_1699107151787

2023-11-05 19:07:16 57

转载 什么是分布式锁?为什么要用分布式锁?

前面普通锁的使用堆内存中的变量的方式肯定不适用了。普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个的顺序执行,否则会出现并发问题。我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美的运行,毫无Bug!在单机多线程的java程序中,我们可以使用堆内存中的变量作为标志,因为多线程是共享堆内存的,堆内存中的变量对于各个线程都是可见的。

2023-11-04 22:40:48 87

Java8 新特性.rar

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

2020-03-29

空空如也

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

TA关注的人

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