- 博客(689)
- 资源 (25)
- 收藏
- 关注
原创 0基础学习Elasticsearch-使用Java操作ES
建议通篇阅读再回头来跟着敲代码建议先阅读Java连接ES云以及如何使用CA证书连接ES鉴权连接对Java连接ES有哪几种方法有个认知ES 8版本后建议使用Java客户端,本篇采用该客户端内部采用了。
2024-06-02 09:58:13
1150
原创 0基础学习Elasticsearch-Quick start
建议读者先通篇阅读搭建ES的步骤,再回头仔细跟着敲命令搭建通过官网的Quick start快速上手实操ES查询,使用了Docker部署ES和Kibana,Kibana充当提供控制台的角色,ES充当数据库的角色可以通过2种方式发送请求:HTTP REST API;CURL命令,本质也是HTTPES中有索引概念,索引中含有多个document,document是由一些JSON Object构成的添加document有2个接口:添加单个documentPOST {索引名}/_doc;
2024-06-01 16:51:30
1226
原创 电商项目之有趣的支付签名算法
这次遇到一种比较有趣的签名算法,笔者认为是基于第(2)的变种,渠道方要求针对请求参数中的字段,如果该字段是对象类型,那么该字段里面的字段也要按字典升序排序进行拼接,相当于是递归字典升序,困难度有一点提升。遍历队列的每一元素,元素从队头出队,再遍历元素中的字段是否是对象类型或者数组类型,使用一个容器存起来,要按字典。(2)针对请求参数中的字段(仅针对第一层的字段,不需要针对字段里面的字段,即不需要递归),进行字典升序排序,用格式。入队,每一次从队头遍历,那么每一次遍历都是升序遍历。,存完后使用头插法入队。
2024-05-25 21:06:09
506
原创 电商项目之Web实时消息推送(附源码)
文章参考自Web 实时消息推送的 7 种实现方案针对一些比较重要的方式,我都会尽量敲出一份完整的demo代码,享受其中的编程乐趣。在SSE方式中,笔者延申思考,将他应用于电商支付的场景中,给出了比较合理的解决方案,但并未在生产环境中验证,仍待考证。消息推送是指服务端将消息推送给客户端。常见的场景有:有人关注公众号,公众号推送消息给关注者;站内消息通知;未读邮件数量;监控告警数量等等。
2023-11-30 22:00:51
910
原创 Java初级到中级:技术提升的策略与方法
本篇内容倾向从方法论的角度去介绍如何提升,基本不涉及代码,不涉及具体要学习哪些技术栈。方法论是从高级开发(称得上是资深级别的开发,技术牛、业务强,用技术支撑业务)那里得来的,笔者基于此调整为适合自己的方法论,希望对大家有帮助,同时也希望大家给出更佳的建议。笔者从事跨境电商领域,所以本文可能会涉及电商场景偏多,且都是生产环境,日活量有十万级别,页面浏览量有百万级别。电商场景复杂,应该算是能覆盖市面上很多的技术。
2023-09-24 22:53:53
359
2
原创 技术广度必备——高并发设计之分布式锁的实现方式
本文参考过的文章有分布式锁的几种实现方式方式大致分为3种:基于磁盘存储的关系型数据库MySQL;基于内存的数据库Redis;基于Zookeeper。
2023-08-14 22:21:45
280
原创 SpringBoot基于Zookeeper实现分布式锁
参考自SpringBoot集成Curator实现Zookeeper基本操作Zookeeper入门本篇的代码笔者有自己运行过,需要注意组件的版本号是否兼容,否则会有比较多的坑。
2023-08-14 12:10:28
2234
原创 Docker搭建zookeeper
为快速搭建zk,此处使用docker搭建,读者需要掌握一定的linux操作命令以及docker命令本文参考自docker搭建Zookeeper集群搭建,笔者会给出搭建过程中踩坑的解决方法或注意点笔者在虚拟机的CentOS上搭建zk。
2023-08-06 17:23:45
1265
原创 代码优化之函数式编程的实践
业务中经常使用Http调用接口,由于网络抖动,时常会出现调用失败、连接超时、读取超时、远程服务器关闭连接等情况。因此会在使用HTTP调接口的地方加上重试逻辑。这就导致了很多业务逻辑代码都有重试逻辑,代码不够简洁,可重用性也不高。因此需要进一步优化代码,将重试逻辑抽成一个工具类(静态方法)。的那行代码(业务逻辑的代码,需要重试的代码)以及一些HTTP响应实体类,其余代码基本都是公用逻辑,所以可以将公用逻辑抽取到工具方法里面,会变的标记。所在的代码以及响应实体类交给静态方法的入参以及函数式编程实现。
2023-08-06 13:28:44
204
原创 电商高并发设计之SpringBoot整合Redis实现布隆过滤器
本篇的代码都是参考SpringBoot+Redis布隆过滤器防恶意流量击穿缓存的正确姿势,可以先看看该篇文章。本篇的行文思路分别由以下几个模块构成:布隆过滤器原理、使用场景、基础中间件搭建、如何实现布隆过滤器阅读本篇前,需要知道布隆过滤器的原理、简单的Docker知识,阅读起来能更加高效。效果:上面代码中,可以看见底层使用的是redis的bitmap,120w数据存在Redis仅需8M。查询一次仅需几十毫秒。优点:空间效率高;;查询时间快;支持高并发。缺点:存在一定的误判率;
2023-08-02 17:44:19
1248
原创 电商项目之海量操作日志的实现
本文阐述的是企业级电商解决方案,非自学项目或者八股文或者小demo,解决方案中的任何细节都是站在企业级开发的角度去思考的。解决方案都会尽量从可读性、易用性、高扩展性、统一管理性去考虑。操作日志讲述的是在B端的任何操作都需要持久化起来,非C端。
2023-05-18 22:48:46
775
原创 SpringBoot实现导出Excel功能
本篇着重阐述后端怎么实现,前端实现的部分只会粗略阐述。该实现方案是经过生产环境考验的,不是那些拿来练手的小demo。本文阐述的方案可以借鉴用来做毕设或者加到自己玩的项目中去。
2023-04-22 23:08:06
6838
8
原创 Redis过期键的删除策略
项目中用到Redis,得了解下Redis过期键的删除策略,他是否能做到实时删除的?参考自《Redis的设计与实现》这个PDF电子书。采用惰性删除+定期删除。
2023-03-26 21:08:24
466
原创 电商项目之Feign与Dubbo技术选型
笔者阐述的都是真实案例场景,不是八股文或者面试题。如果作为后端开发技术人员,怎么独立思考去做决策呢?怎么做技术选型,要考虑什么东西?今天来理顺并总结一下。dubbo协议追求的是数据量小,小则快,协议的设计也符合dubbo框框架的理念,适用与内部服务之间的数据交互。既然dubbo协议适用于服务之间的互相调用。spring cloud的feign内部为什么使用http协议呢?大概是架构的需要,例如服务A是java写的,服务B是python写的。这个时候dubbo协议就跑不通了。只能用http这种标准协议来交互。
2023-02-21 21:59:47
1849
原创 电商项目之电子账户的收单模式
本篇文章适合具有支付场景的业务知识或者对电商支付有兴趣的小伙伴。关于电商项目是如何对接信用卡的,可以看看笔者写的电商系统对接支付渠道的解决方案PayPal可以类比成国内的支付宝,他有一个电子账户,可以存余额,也可以关联银行卡。而信用卡本质就是银行卡,是一张卡。可以理解成卖家是怎么收到款的。每种收单模式都有不同的实现方式。
2023-02-16 22:15:07
776
原创 面试必备——MySQL解决幻读的底层实现原理
本篇的理论知识偏多会略显枯燥,但这也是解决电商项目高并发的关键理论知识笔者旨在将MVCC以及锁这些知识串通起来,使得更加系统,同时也理顺自己混乱的思绪。建议先阅读笔者写的InnoDB锁和事务模型之锁MySQL锁之InnoDB锁实战面试必备——MySQL的MVCC实现原理,简单阅读了解个大概即可由于写写并发操作的场景下会涉及间隙锁,因此在这里简要介绍间隙锁,下文也会提到它。InnoDB支持3种行锁如下,详情可以见InnoDB锁和事务模型之锁行锁(Record Lock):锁是直接加在索引。
2023-02-06 23:23:03
425
原创 电商项目之Mailgun邮件退信率升高
本文阐述的是笔者遇到的真实案例,非八股文或者自己玩玩的小demo。本文适合对电商业务感兴趣的小伙伴本文将着重以整体解决方案叙述作为一名Java开发者应该如何去处理生产级别的故障,不会手把手教你写代码,更多的是偏向于方法论、思考、技术设计落地。
2023-02-01 22:02:09
887
原创 SpringBoot整合LUA脚本实现过期时间原子性操作
本篇仅从最简单的实现方式去介绍,可以以此参考来实现自己想要的LUA脚本功能本篇使用的是伪代码,不需要过于纠结变量如何初始化等。
2023-02-01 21:59:33
1129
原创 电商项目之同一笔单多次收款成功
本篇为笔者遇到的真实案例发生生产级别的问题,先不要慌,要从业务角度、技术角度思考什么场景会导致该问题发生?有解决方法吗?运用任何数据去分析排查并结合现有情况给出解决方案。处理问题的方法论见电商项目之处理生产级别问题的方法论。
2023-01-24 22:05:30
1765
原创 电商项目之处理生产级别问题的方法论
本篇博客仅供笔者总结使用,如有不正确的地方请指出笔者从事电商业务,时时刻刻都会有人在生产环境下单支付,笔者总结的方法论适合这样一种生产场景一切都是以项目组利益为核心,才有了上面提到的方法论,一切决定以及做法都是由项目组利益出发。保持这样的想法,自然就能深入体会为什么要这样做。要时常与业务部门沟通,和领导多沟通,态度保持积极,要有主人翁意识,这样的话,在很多事情上可操作的空间会很大。
2023-01-20 09:55:41
157
原创 电商项目之如何迁移千万级别的数据表
此博客非面试题,而是真实遇到的场景,如果没接触过这种场景,还真不知道要怎么搞。因为生产环境正在使用着这张千万级的表,不能简单地认为操作navicat将数据导出然后再导入。稍有不慎,就会导致生产级别的故障。
2023-01-14 17:42:44
704
原创 电商项目之域名解析中的a记录cName记录mx记录
本博客阐述的都是电商生产环境上发生的真实场景,不是那种八股文或者自学的小demoA 记录:设置域名到 IP 的映射CNAME 记录:设置域名到域名的映射MX 记录:设置邮件服务器的映射。
2023-01-10 23:13:03
377
原创 搭建MinIO容器
如果使用的是云服务器,不建议关闭防火墙。如果没有关闭防火墙,那么启动docker容器的时候,需要在防火墙添加容器端口,否则无法访问。玩一个前后端的项目,需要用到对象存储器,于是使用开源的MinIO。期间以Docker方式搭建遇到某些坑,此处仅以博客的方式记录下来。此处笔者采用网上在线安装的方式,几条命令就可以搞定了。密码:minio123。服务器IP:9000。
2022-11-27 22:10:34
1864
原创 二次阅读Nacos源码——Nacos自动服务注册架构设计原理
客户端启动后,会发布一个WebServerInitializedEvent。spring cloud的服务发现组件会监听该事件,底层会调用将客户端注册到Nacos服务端的逻辑。底层实际是封装好一个客户端实例的数据发送HTTP请求给Nacos服务端:如果当前Nacos服务端没有当前要注册的服务,则创建一个服务。存储服务的容器是,他的分别是,第一个key对应的value是类型。1.1 创建完服务后会把服务放入容器。1.2 健康检查 。启动一个带延迟事件的调度循环执行(线程池的应用),每5000毫秒检查客户
2022-10-27 17:34:28
1697
原创 线程池基本知识
本篇博客旨在对线程池的各个参数有一个基本的全局了解,基本不涉及案例demo代码。不必背诵这些知识点,有不懂之处需要上下文反复阅读,反复思考。本文描述线程池是JDK1.8中提供的类。本文基本都是从Java线程池实现原理及其在美团业务中的实践搬来的,有需要了解更详细的信息可以直接看它。
2022-09-24 17:07:22
628
原创 ab站的应用场景
本文都是笔者在生产环境的真实案例的总结本篇基本不涉及代码,仅从产品层面做阐述与总结,为提供解决方案引入一个思路A站通常是卖商家的商品 ,B站只是为了做给支付渠道看的。即买家在A站浏览商品并购买,然后支付的时候,电商系统会使用B站的信息去收款并把这些信息发给渠道方。卖家使用一个绑定到一个站点(A站)。收款的时候却是使用这个B站。
2022-09-22 08:53:56
449
1
原创 电商项目之百万级别的临时订单数据补偿解决方案
买家再次访问保存的地址时,弹出无法找到该笔订单的商品信息。原因是订单是在A站产生的,商品也是属于A站的。当域名绑到B站后,再次访问域名,就会解析到B站,而B站是没有订单上的商品ID的,因此无法找到该笔订单的商品信息。造成上面的原因是因为结算页的临时订单信息表是没有存储站点主键ID,导致加载结算页仍会继续去寻找订单上的商品。根据结算页对应的token去寻找结算页的临时订单信息表,找到。,暂且不用管他,因为这个已经是笔者实现了的解决方案,已完成数据补偿。,更加轻量,也不会影响生产环境的主业务。
2022-09-18 13:48:51
696
原创 电商系统对接支付渠道的解决方案
本篇文章会涉及到部分代码,不管是产品人员还是开发者都无需过多关注代码,只需关注整个解决方案是如何实现即可。本篇文章仅陈述出笔者在企业级开发中接触到的解决方案,不代表是行业标准,但是技术实现基本大同小异。笔者只参与过信用卡的对接,本文的解决方案基本围绕信用卡对接做例子。不管是银行卡对接、信用卡对接、电子钱包对接,前后端交互流程基本大同小异。考虑到以产品岗位和开发者的角度去做总结,笔者将先以业务解决方案给出方法论,然后再给出技术实现细节阐述对接过程中的核心要素。
2022-09-14 22:15:04
2607
原创 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
40861
39
原创 0基础了解电商系统如何对接支付渠道
文章目录1 问题背景1 问题背景临时被拉去做支付了,对电商的支付业务是0基础。经过多位开发大佬的指导,终于把需求做完了。现自我整理下并总结下做支付过程中的知识。阅读对象是支付0基础的小伙伴。......
2022-06-26 22:39:20
700
原创 面试必备——synchronized底层原理的基础知识
文章目录1 问题背景2 前言3 研究synchronized底层原理为什么要了解Java对象头?1 问题背景利用下班时间花了半个月研究完volatile关键字,详情见面试必备——说说你对volatile关键字的理解,因为其不保证原子性,可以用synchronized保证。因此来研究synchronized的底层原理。参考自:子路系列:java高并发编程原理、源码分析2 前言本篇博文参考自b站的子路老师,他讲的视频都挺好(无论是spring源码、nacos服务注册、还是并发),与网上普罗大
2022-06-09 23:20:45
241
1
nacos自动服务注册.jpg
2021-01-08
nacos服务注册流程调用.jpg
2021-01-08
SSM整合实例——显示所有员工信息列表.zip
2020-02-13
MyBatis分页插件.zip
2020-02-12
使用MyBatis实现基本的CRUD操作.zip
2020-02-10
MyBatis helloworld Mapper接口开发.zip
2020-02-10
使用SpringMVC的文件上传功能.zip
2020-02-08
使用SpringMVC的ModelAndView.zip
2020-02-07
使用Springmvc创建一个HelloWorld.zip
2020-02-02
使用XML方式配置AOP.zip
2020-02-01
用newProxyInstance方式和getProxyClass方式动态代理.zip
2020-01-31
使用注解自动装配需要组件扫描.zip
2020-01-30
Spring使用XML方式进行自动装配.zip
2020-01-30
引用外部文件配置C3P0连接池.zip
2020-01-29
配置C3P0连接池.zip
2020-01-29
FactoryBean.zip
2020-01-28
spring中的list、map.zip
2020-01-28
字面量、空值、引用其他Bean.zip
2020-01-28
通过spring获取Bean.zip
2020-01-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人