自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android_la的博客

研究nacos、redis、设计模式、并发等前沿技术。搭建了自己的博客https://zilianggan.gitee.io/

  • 博客(685)
  • 资源 (25)
  • 收藏
  • 关注

原创 电商项目之Web实时消息推送(附源码)

文章参考自Web 实时消息推送的 7 种实现方案针对一些比较重要的方式,我都会尽量敲出一份完整的demo代码,享受其中的编程乐趣。在SSE方式中,笔者延申思考,将他应用于电商支付的场景中,给出了比较合理的解决方案,但并未在生产环境中验证,仍待考证。消息推送是指服务端将消息推送给客户端。常见的场景有:有人关注公众号,公众号推送消息给关注者;站内消息通知;未读邮件数量;监控告警数量等等。

2023-11-30 22:00:51 760

原创 电商项目之Java8函数式接口落地实践

本文的代码中,可能有些类型没有给出代码,不需要纠结,主要了解函数式接口怎么应用即可。

2023-11-09 23:56:40 253

原创 电商项目之如何扣减库存

本文旨在阐述生产环境如何在高并发的场景下可靠地扣减库存,有其他解决方案的伙伴可以在评论中分享出来。

2023-10-08 21:56:01 985

原创 Java初级到中级:技术提升的策略与方法

本篇内容倾向从方法论的角度去介绍如何提升,基本不涉及代码,不涉及具体要学习哪些技术栈。方法论是从高级开发(称得上是资深级别的开发,技术牛、业务强,用技术支撑业务)那里得来的,笔者基于此调整为适合自己的方法论,希望对大家有帮助,同时也希望大家给出更佳的建议。笔者从事跨境电商领域,所以本文可能会涉及电商场景偏多,且都是生产环境,日活量有十万级别,页面浏览量有百万级别。电商场景复杂,应该算是能覆盖市面上很多的技术。

2023-09-24 22:53:53 220 2

原创 技术广度必备——高并发设计之分布式锁的实现方式

本文参考过的文章有分布式锁的几种实现方式方式大致分为3种:基于磁盘存储的关系型数据库MySQL;基于内存的数据库Redis;基于Zookeeper。

2023-08-14 22:21:45 181

原创 SpringBoot基于Zookeeper实现分布式锁

参考自SpringBoot集成Curator实现Zookeeper基本操作Zookeeper入门本篇的代码笔者有自己运行过,需要注意组件的版本号是否兼容,否则会有比较多的坑。

2023-08-14 12:10:28 2153

原创 Docker搭建zookeeper

为快速搭建zk,此处使用docker搭建,读者需要掌握一定的linux操作命令以及docker命令本文参考自docker搭建Zookeeper集群搭建,笔者会给出搭建过程中踩坑的解决方法或注意点笔者在虚拟机的CentOS上搭建zk。

2023-08-06 17:23:45 1215

原创 代码优化之函数式编程的实践

业务中经常使用Http调用接口,由于网络抖动,时常会出现调用失败、连接超时、读取超时、远程服务器关闭连接等情况。因此会在使用HTTP调接口的地方加上重试逻辑。这就导致了很多业务逻辑代码都有重试逻辑,代码不够简洁,可重用性也不高。因此需要进一步优化代码,将重试逻辑抽成一个工具类(静态方法)。的那行代码(业务逻辑的代码,需要重试的代码)以及一些HTTP响应实体类,其余代码基本都是公用逻辑,所以可以将公用逻辑抽取到工具方法里面,会变的标记。所在的代码以及响应实体类交给静态方法的入参以及函数式编程实现。

2023-08-06 13:28:44 139

原创 电商高并发设计之SpringBoot整合Redis实现布隆过滤器

本篇的代码都是参考SpringBoot+Redis布隆过滤器防恶意流量击穿缓存的正确姿势,可以先看看该篇文章。本篇的行文思路分别由以下几个模块构成:布隆过滤器原理、使用场景、基础中间件搭建、如何实现布隆过滤器阅读本篇前,需要知道布隆过滤器的原理、简单的Docker知识,阅读起来能更加高效。效果:上面代码中,可以看见底层使用的是redis的bitmap,120w数据存在Redis仅需8M。查询一次仅需几十毫秒。优点:空间效率高;;查询时间快;支持高并发。缺点:存在一定的误判率;

2023-08-02 17:44:19 811

原创 电商项目之海量操作日志的实现

本文阐述的是企业级电商解决方案,非自学项目或者八股文或者小demo,解决方案中的任何细节都是站在企业级开发的角度去思考的。解决方案都会尽量从可读性、易用性、高扩展性、统一管理性去考虑。操作日志讲述的是在B端的任何操作都需要持久化起来,非C端。

2023-05-18 22:48:46 571 1

原创 SpringBoot实现导出Excel功能

本篇着重阐述后端怎么实现,前端实现的部分只会粗略阐述。该实现方案是经过生产环境考验的,不是那些拿来练手的小demo。本文阐述的方案可以借鉴用来做毕设或者加到自己玩的项目中去。

2023-04-22 23:08:06 6440 8

原创 电商项目之Redis实现限制接口调用次数

本方案是笔者自己想出来的,还未经过生产环境的考验,如有不正确的地方欢迎在评论区中指出。

2023-03-30 23:17:37 519

原创 Redis过期键的删除策略

项目中用到Redis,得了解下Redis过期键的删除策略,他是否能做到实时删除的?参考自《Redis的设计与实现》这个PDF电子书。采用惰性删除+定期删除。

2023-03-26 21:08:24 386

原创 电商项目之Feign与Dubbo技术选型

笔者阐述的都是真实案例场景,不是八股文或者面试题。如果作为后端开发技术人员,怎么独立思考去做决策呢?怎么做技术选型,要考虑什么东西?今天来理顺并总结一下。dubbo协议追求的是数据量小,小则快,协议的设计也符合dubbo框框架的理念,适用与内部服务之间的数据交互。既然dubbo协议适用于服务之间的互相调用。spring cloud的feign内部为什么使用http协议呢?大概是架构的需要,例如服务A是java写的,服务B是python写的。这个时候dubbo协议就跑不通了。只能用http这种标准协议来交互。

2023-02-21 21:59:47 1431

原创 电商项目之电子账户的收单模式

本篇文章适合具有支付场景的业务知识或者对电商支付有兴趣的小伙伴。关于电商项目是如何对接信用卡的,可以看看笔者写的电商系统对接支付渠道的解决方案PayPal可以类比成国内的支付宝,他有一个电子账户,可以存余额,也可以关联银行卡。而信用卡本质就是银行卡,是一张卡。可以理解成卖家是怎么收到款的。每种收单模式都有不同的实现方式。

2023-02-16 22:15:07 574

原创 面试必备——MySQL解决幻读的底层实现原理

本篇的理论知识偏多会略显枯燥,但这也是解决电商项目高并发的关键理论知识笔者旨在将MVCC以及锁这些知识串通起来,使得更加系统,同时也理顺自己混乱的思绪。建议先阅读笔者写的InnoDB锁和事务模型之锁MySQL锁之InnoDB锁实战面试必备——MySQL的MVCC实现原理,简单阅读了解个大概即可由于写写并发操作的场景下会涉及间隙锁,因此在这里简要介绍间隙锁,下文也会提到它。InnoDB支持3种行锁如下,详情可以见InnoDB锁和事务模型之锁行锁(Record Lock):锁是直接加在索引。

2023-02-06 23:23:03 333

原创 电商项目之Mailgun邮件退信率升高

本文阐述的是笔者遇到的真实案例,非八股文或者自己玩玩的小demo。本文适合对电商业务感兴趣的小伙伴本文将着重以整体解决方案叙述作为一名Java开发者应该如何去处理生产级别的故障,不会手把手教你写代码,更多的是偏向于方法论、思考、技术设计落地。

2023-02-01 22:02:09 702

原创 SpringBoot整合LUA脚本实现过期时间原子性操作

本篇仅从最简单的实现方式去介绍,可以以此参考来实现自己想要的LUA脚本功能本篇使用的是伪代码,不需要过于纠结变量如何初始化等。

2023-02-01 21:59:33 901

原创 电商项目之同一笔单多次收款成功

本篇为笔者遇到的真实案例发生生产级别的问题,先不要慌,要从业务角度、技术角度思考什么场景会导致该问题发生?有解决方法吗?运用任何数据去分析排查并结合现有情况给出解决方案。处理问题的方法论见电商项目之处理生产级别问题的方法论。

2023-01-24 22:05:30 1587

原创 电商项目之处理生产级别问题的方法论

本篇博客仅供笔者总结使用,如有不正确的地方请指出笔者从事电商业务,时时刻刻都会有人在生产环境下单支付,笔者总结的方法论适合这样一种生产场景一切都是以项目组利益为核心,才有了上面提到的方法论,一切决定以及做法都是由项目组利益出发。保持这样的想法,自然就能深入体会为什么要这样做。要时常与业务部门沟通,和领导多沟通,态度保持积极,要有主人翁意识,这样的话,在很多事情上可操作的空间会很大。

2023-01-20 09:55:41 125

原创 电商项目之如何迁移千万级别的数据表

此博客非面试题,而是真实遇到的场景,如果没接触过这种场景,还真不知道要怎么搞。因为生产环境正在使用着这张千万级的表,不能简单地认为操作navicat将数据导出然后再导入。稍有不慎,就会导致生产级别的故障。

2023-01-14 17:42:44 627

原创 电商项目之域名解析中的a记录cName记录mx记录

本博客阐述的都是电商生产环境上发生的真实场景,不是那种八股文或者自学的小demoA 记录:设置域名到 IP 的映射CNAME 记录:设置域名到域名的映射MX 记录:设置邮件服务器的映射。

2023-01-10 23:13:03 332

原创 电商之收单系统的webhook推送重试机制

本博客讲述的是生产环境真实遇到的场景,不是那种八股文或者小打小闹的demo。

2022-12-16 16:13:17 790

原创 SpringBoot整合MinIO

springboot整合minio

2022-12-05 14:20:34 1813

原创 搭建MinIO容器

如果使用的是云服务器,不建议关闭防火墙。如果没有关闭防火墙,那么启动docker容器的时候,需要在防火墙添加容器端口,否则无法访问。玩一个前后端的项目,需要用到对象存储器,于是使用开源的MinIO。期间以Docker方式搭建遇到某些坑,此处仅以博客的方式记录下来。此处笔者采用网上在线安装的方式,几条命令就可以搞定了。密码:minio123。服务器IP:9000。

2022-11-27 22:10:34 1756

原创 电商项目亿级数据量之深度分页解决方案

实战!聊聊如何解决MySQL深分页问题中阐述的解决方案,笔者确实在企业级项目中看到有运用。

2022-11-01 17:33:19 281

原创 解决并发请求的幂等操作解决方案

解决幂等操作有很多种,本篇博客着重详细讲解简易版本的解决方案。

2022-11-01 16:31:46 900

原创 二次阅读Nacos源码——Nacos自动服务注册架构设计原理

客户端启动后,会发布一个WebServerInitializedEvent。spring cloud的服务发现组件会监听该事件,底层会调用将客户端注册到Nacos服务端的逻辑。底层实际是封装好一个客户端实例的数据发送HTTP请求给Nacos服务端:如果当前Nacos服务端没有当前要注册的服务,则创建一个服务。存储服务的容器是,他的分别是,第一个key对应的value是类型。1.1 创建完服务后会把服务放入容器。1.2 健康检查 。启动一个带延迟事件的调度循环执行(线程池的应用),每5000毫秒检查客户

2022-10-27 17:34:28 1608

原创 线程池基本知识

本篇博客旨在对线程池的各个参数有一个基本的全局了解,基本不涉及案例demo代码。不必背诵这些知识点,有不懂之处需要上下文反复阅读,反复思考。本文描述线程池是JDK1.8中提供的类。本文基本都是从Java线程池实现原理及其在美团业务中的实践搬来的,有需要了解更详细的信息可以直接看它。

2022-09-24 17:07:22 565

原创 ab站的应用场景

本文都是笔者在生产环境的真实案例的总结本篇基本不涉及代码,仅从产品层面做阐述与总结,为提供解决方案引入一个思路A站通常是卖商家的商品 ,B站只是为了做给支付渠道看的。即买家在A站浏览商品并购买,然后支付的时候,电商系统会使用B站的信息去收款并把这些信息发给渠道方。卖家使用一个绑定到一个站点(A站)。收款的时候却是使用这个B站。

2022-09-22 08:53:56 347 1

原创 电商项目之百万级别的临时订单数据补偿解决方案

买家再次访问保存的地址时,弹出无法找到该笔订单的商品信息。原因是订单是在A站产生的,商品也是属于A站的。当域名绑到B站后,再次访问域名,就会解析到B站,而B站是没有订单上的商品ID的,因此无法找到该笔订单的商品信息。造成上面的原因是因为结算页的临时订单信息表是没有存储站点主键ID,导致加载结算页仍会继续去寻找订单上的商品。根据结算页对应的token去寻找结算页的临时订单信息表,找到。,暂且不用管他,因为这个已经是笔者实现了的解决方案,已完成数据补偿。,更加轻量,也不会影响生产环境的主业务。

2022-09-18 13:48:51 591

原创 电商系统对接支付渠道的解决方案

本篇文章会涉及到部分代码,不管是产品人员还是开发者都无需过多关注代码,只需关注整个解决方案是如何实现即可。本篇文章仅陈述出笔者在企业级开发中接触到的解决方案,不代表是行业标准,但是技术实现基本大同小异。笔者只参与过信用卡的对接,本文的解决方案基本围绕信用卡对接做例子。不管是银行卡对接、信用卡对接、电子钱包对接,前后端交互流程基本大同小异。考虑到以产品岗位和开发者的角度去做总结,笔者将先以业务解决方案给出方法论,然后再给出技术实现细节阐述对接过程中的核心要素。

2022-09-14 22:15:04 2001

原创 CentOS安装CMake

CentOS安装CMake

2022-07-02 17:27:46 4458 3

原创 MinGW-w64下载文件失败the file has been downloaded incorrectly

因为文件资源是托管在sourceforge上面的,因此在线安装器需要从该网站上下载文件。99%都是网络不好导致下载失败,有能力者可以科学上网解决。没办法科学上网的同学可以使用下面的解决方案,很简单。版本这里根据各自的电脑选择,我的电脑是64位,所以选择x86_64;电脑是windows系统,所以选择 win32;seh是先进的异常处理模式技术,支持64位操作系统。其他硬件情况可以参考MinGW-w64安装教程——著名C/C++编译器GCC的Windows版本。.........

2022-06-29 22:52:35 38452 39

原创 0基础了解电商系统如何对接支付渠道

文章目录1 问题背景1 问题背景临时被拉去做支付了,对电商的支付业务是0基础。经过多位开发大佬的指导,终于把需求做完了。现自我整理下并总结下做支付过程中的知识。阅读对象是支付0基础的小伙伴。......

2022-06-26 22:39:20 488

原创 面试必备——synchronized底层原理的基础知识

文章目录1 问题背景2 前言3 研究synchronized底层原理为什么要了解Java对象头?1 问题背景利用下班时间花了半个月研究完volatile关键字,详情见面试必备——说说你对volatile关键字的理解,因为其不保证原子性,可以用synchronized保证。因此来研究synchronized的底层原理。参考自:子路系列:java高并发编程原理、源码分析2 前言本篇博文参考自b站的子路老师,他讲的视频都挺好(无论是spring源码、nacos服务注册、还是并发),与网上普罗大

2022-06-09 23:20:45 195 1

原创 对象转map导致@JSONField无效

文章目录1 问题背景2 问题原因3 解决方案1 问题背景对接支付渠道发起支付的时候,请求参数严格区分下划线格式,笔者使用了@JSONField,但发参数给对方后,对方却反馈没接收到参数或参数值不能为null。2 问题原因原因时是笔者的公司对RestTemplate.postForString()做了一层封装。导致用表单传输参数时会将对象转成一个map类型,转的过程中没有对@JSONField(name = "xx_xx")做处理。3 解决方案@JSONField是阿里fastjson对.

2022-05-29 14:52:11 932

原创 用正则表达式剔除文本中的html标签

文章目录1 问题背景2 思路3 解决方案4 解释1 问题背景对接支付渠道的发起支付的接口的时候,要求传商品长描述,而商品长描述有很多html网页标签,比如<h1></h1>、<p></p>等。需要将这些标签剔除掉,只传纯文本。2 思路用正则表达式,把这些标签都匹配上,然后用空字符串替换掉。3 解决方案代码如下:public class Processor { private static final String REG_.

2022-05-28 23:01:29 750

原创 毕业一年我与Java的故事

1 自我介绍还有一个月就毕业一年了,从2020年7月开始暑期实习,辗转换了好几份工作,到今天2022年5月24日为止,满打满算有工作1年半了。科班出身,基础不扎实。2 为什么选择Java科班出身,在大学里面基本都会知道前端、后端这两个出路。对前端没兴趣,又从大一开始没打算考研,就决定选择走后端的路线了。身边的人(师兄师姐们)都说Java好找工作,并且自己对Java有那么一点兴趣,也就选了Java了。其实现在看来,Java真的太卷了,门槛低,看看视频随便都能转行来Java。再者,大厂更需要的是那.

2022-05-24 22:20:56 1334

原创 面试必备——说说你对多线程编程的理解

1 问题背景很多招聘岗位的要求中都列出了了解多线程编程, 甚至是熟悉多线程编程,笔者也常常对这个词感到很疑惑。今天从系统整体架构的角度以及自己在工作中遇到的疑惑阐述什么是多线程编程。参考自:《大型网站架构》的作者李智慧写的程序运行原理:程序是如何运行又是如何崩溃的?,该篇文章需要有极客时间的VIP账号才能阅读。大家可以百度搜搜有没有资源下载。2 前言笔者从事Java开发,因此本篇将以Java开发的一些列技术栈讲解。其中可能会涉及到略多的JVM知识,大家不必纠结个别不懂的细节,先从整体上阅读

2022-05-17 13:52:57 534

nacos自动服务注册.jpg

nacos自动服务注册nacos自动服务注册nacos自动服务注册nacos自动服务注册nacos自动服务注册nacos自动服务注册nacos自动服务注册nacos自动服务注册nacos自动服务注册

2021-01-08

nacos服务注册流程调用.jpg

nacos服务注册流程调用nacos服务注册流程调用nacos服务注册流程调用nacos服务注册流程调用nacos服务注册流程调用nacos服务注册流程调用nacos服务注册流程调用nacos服务注册流程调用nacos服务注册流程调用

2021-01-08

3+日志规范.doc

log日志规范l

2020-11-23

MySQL高级180402笔记 .html

MySQL高级部分,学习索引优化建模建表分布式处理,MySQL高级部分,学习索引优化建模建表分布式处理

2020-04-07

SSM整合实例——显示所有员工信息列表.zip

本博客有零基础入门MyBatis,欢迎关注本博客 本博客有零基础入门MyBatis,欢迎关注本博客 本博客有零基础入门MyBatis,欢迎关注本博客

2020-02-13

MyBatis分页插件.zip

本博客有零基础入门MyBatis,欢迎关注本博客 本博客有零基础入门MyBatis,欢迎关注本博客 本博客有零基础入门MyBatis,欢迎关注本博客

2020-02-12

MyBatis整合第三方缓存.zip

本博客有零基础入门MyBatis,有兴趣可关注

2020-02-12

MyBatis自定义映射 级联属性操作.zip

本博客有零基础入门MyBaits,欢迎关注

2020-02-11

支持主键自增的数据库获取主键值.zip

欢迎关注本博客,谢谢大家

2020-02-11

使用MyBatis实现基本的CRUD操作.zip

本博客有零基础入门MyBatis,欢迎关注 本博客有零基础入门MyBatis,欢迎关注 本博客有零基础入门MyBatis,欢迎关注

2020-02-10

MyBatis helloworld Mapper接口开发.zip

本博客有零基础入门MyBatis,欢迎关注本博客。 本博客有零基础入门MyBatis,欢迎关注本博客。 本博客有零基础入门MyBatis,欢迎关注本博客。

2020-02-10

MyBatis的helloworld(不使用Mapper接口实现MyBatis查询数据库).zip

本博客有零基础入门MyBatis,欢迎关注本博客。

2020-02-10

使用SpringMVC的文件上传功能.zip

本博客https://blog.csdn.net/qq_40634846由零基础入门Spring,有兴趣的同学可关注本博客

2020-02-08

使用SpringMVC的ModelAndView.zip

本博客https://blog.csdn.net/qq_40634846有零基础入门SpringMVC,有兴趣的朋友可关注本博客

2020-02-07

使用Springmvc创建一个HelloWorld.zip

本博客https://blog.csdn.net/qq_40634846有零基础入门Spring,有兴趣的可关注本博客。希望对大家有帮助

2020-02-02

使用XML方式配置AOP.zip

本博客https://blog.csdn.net/qq_40634846有零基础入门Spring,有兴趣可关注本博客,希望对大家有用

2020-02-01

用newProxyInstance方式和getProxyClass方式动态代理.zip

本博客https://blog.csdn.net/qq_40634846有零基础入门Spring,有兴趣的伙伴可以关注本博客。希望对大家有用

2020-01-31

使用注解自动装配需要组件扫描.zip

本博客https://blog.csdn.net/qq_40634846有零基础入门Spring,有兴趣可关注本博客。希望对大家有帮助

2020-01-30

Spring使用XML方式进行自动装配.zip

Spring使用XML方式进行自动装配本博客https://blog.csdn.net/qq_40634846有零基础入门Spring。有兴趣可关注本博客,希望对大家有用

2020-01-30

引用外部文件配置C3P0连接池.zip

引用外部属性文件配置C3P0连接池。本博客https://blog.csdn.net/qq_40634846有从零基础入门spring,有兴趣可关注本博客。希望对大家有用

2020-01-29

配置C3P0连接池.zip

使用spring管理的方式,用XML文件配置C3P0连接池。本博客https://blog.csdn.net/qq_40634846有从零基础入门的Spring,有兴趣的小伙伴可关注本博客。希望对大家有帮助

2020-01-29

FactoryBean.zip

介绍工厂Bean,欢迎关注本人博客:https://blog.csdn.net/qq_40634846,里面有循序渐进的零基础入门spring,希望对大家有帮助哈哈

2020-01-28

spring中的list、map.zip

在配置Bean对象时,有时候它的成员变量是一个list集合或者是一个map,对于list和map有另外的语法。有兴趣可关注本博客:https://blog.csdn.net/qq_40634846,有循序渐进的spring,零基础入门。

2020-01-28

字面量、空值、引用其他Bean.zip

讲述使用spring管理Bean对象,引用自定义类型的对象,本博客https://blog.csdn.net/qq_40634846有循序渐进的spring从零基础入门。希望对大家有用,有兴趣可关注本博客

2020-01-28

通过spring获取Bean.zip

零基础入门spring,通过spring获取Bean。我博客https://blog.csdn.net/qq_40634846的Spring专栏里面有循序渐进的spring文章,有兴趣可以关注本博客,希望对大家有用。

2020-01-28

空空如也

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

TA关注的人

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