- 博客(44)
- 资源 (21)
- 收藏
- 关注
原创 JAVA 分布式锁的5种实现方式
就是先select …每次更新修改,都会自增加一,然后去更新余额时,把查出来的那个版本号,带上条件去更新,如果是上次那个版本号,就更新,如果不是,表示别人并发修改过了,就继续重试。创建一个临时节点,获取当前父节点下的子节点,如果是为最小的节点,则表示获取锁成功,否则获取锁失败,阻塞等待,则监听上一个节点。多个jvm集群的定时任务,在触发的时候,获取分布式锁,如果能够获取到分布式锁的jvm,就能够执行定时任务,没有获取到的就不能执行定时任务。当我们定时任务服务集群的情况下,有可能会同时重复执行定时任务,
2025-08-08 15:57:23
979
原创 一文搞懂HashMap1.7、HashMap1.8的底层是如何实现的
摘要:本文深入探讨了HashMap相关技术要点,包括:1)equals与==的区别,String和包装类的特殊处理;2)重写equals必须重写hashcode的原因及哈希碰撞原理;3)HashMap与Hashtable的线程安全差异;4)JDK1.7(数组+链表)与1.8(数组+链表+红黑树)的底层实现差异;5)ConcurrentHashMap的分段锁优化;6)核心参数如加载因子0.75的作用;7)ArrayList与Vector的扩容机制对比;8)HashSet基于HashMap的实现原理。
2025-08-08 15:20:59
1143
原创 SpringMvc的原理深度剖析及源码解读
文章主要讲解了SpringServletContainerInitializer类初始化的过程。拦截器与过滤器区别及应用场景。DispatcherServlet处理流程。控制器初始化涉及文件解析器、本地化解析器等组件配置。适配器模式支持多种handler类型,包括Controller继承、HTTP请求和注解方式。异步实现可通过@Async注解或Callable类,需在配置类中开启异步支持。
2025-08-07 15:29:44
816
原创 Redis缓存数据库深度剖析
Redis是一个高性能的键值对数据库,支持多种数据类型和数据结构,它采用持久化机制(RDB和AOF)保障数据安全,支持主从复制、哨兵模式和集群部署以实现高可用。Redis的高效性源于内存存储、IO多路复用和跳跃表等优化。文章还对比了Redis与Ehcache、Memcached的区别,分析了缓存穿透、击穿和雪崩三大问题的解决方案,并详细介绍了Redis的淘汰策略、主从复制原理、哨兵机制和Cluster分片集群设计。此外,还探讨了Redis与MySQL数据一致性的实现方案。
2025-08-07 15:04:35
943
原创 分布式事务Seata、LCN的原理深度剖析
分布式事务解决方案综述 本文系统介绍了分布式事务的产生背景及解决方案。主要内容包括: 分布式事务产生原因:多数据源、RPC调用异常等情况导致数据不一致 常见解决方案框架:JTA+Atomikos、MQ最终一致性、RocketMQ事务消息、LCN模式、Seata等 CAP与BASE理论:分析了分布式系统设计中的一致性、可用性和分区容错性权衡 LCN实现原理:通过事务分组ID和代理数据源实现事务协调,但存在死锁风险 Seata架构设计:采用TC/TM/RM三组件模式,通过undo_log逆向SQL实现回滚,但可
2025-08-06 16:18:26
1322
原创 java 拦截器实现动态数据国际化多语言切换
2、在代码中维护一个语言前缀列表,使用时将其转换为小写,用于后面过滤带有语言前缀的字段,使用HttpServletRequest获取到请求头中的语言前缀language,将其从语言前缀列表中移除,再将body转换为JsonNode,递归调用自定义的方法responseDataParseAndRemove()进行字段移除和重组。所以想到通过拦截器的方式,在查询底层数据的时候,不需要关心语言类型,查询返回时,拦截器中对接口返回的数据进行国际化的处理,从而实现动态数据国际化的处理。
2025-08-06 14:47:58
291
原创 达梦、mysql数据库 金额小写转大写
sql查询时,需要将数据库的金额转换成大写,然后输出到前端进行展示。比如:3000.12 转换后 叁仟元壹角贰分。
2025-07-21 17:57:35
338
原创 Linux Centos 环境下搭建RocketMq集群(双主双从)
worker2中配置两个文件:broker-a.properties、broker-b-s.properties。worker3中配置两个文件:broker-b.properties、broker-a-s.properties。启动顺序为:先启动3台服务器的nameserver,再启动worker2和worker3中的broker.worker1 只需要启动nameserver即可。
2024-06-15 15:51:13
1177
1
原创 RocketMq多环境自动隔离
这要就可以在类初始化前,把监听器类的topic/group/tag等修改成自己想要的,然后实例化的时候用的就是改后值。通过环境配置进行自动隔离,比如dev、test、pre、prod等不同环境只需要简单配置一个选项,所有的消息将被自动隔离,这样各个环境共用一套rocketmq服务即可,不需要分环境搭建,无论开发、测试都非常简便,整个公司可以共用一套。当多个环境使用同一套rocketmq的服务的时候,如果不对环境进行隔离,将会导致消息被错误的环境消费,因此可以采用两种方式进行隔离。
2024-06-15 15:28:38
1856
原创 Windows环境下搭建RocketMq集群(双主双从)
broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a。#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a。#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a。
2024-06-11 10:29:04
1578
3
原创 IDEA启动项目报java.lang.OutOfMemoryError: GC overhead limit exceeded
idea编译项目时报j ava.lang.OutOfMemoryError: GC overhead limit exceeded错误,教你两步搞定!点击 apply 和 ok,然后重新编译项目,轻松搞定!
2024-06-07 16:02:25
3779
2
原创 史上最全Git操作指南 (Git 常用操作命令、Idea中Git的使用 、Git图形工具TortoiseGit的使用)
一、Git的工作流程相关说明:版本库:.git隐藏文件夹就是版本库,存储了很多配置信息、日志文件和文件版本信息工作区:包含.git文件夹的目录就是工作目录,主要用于存放开发的代码暂存区:.git文件夹有很多文件,其中有一个index文件就是暂存区,也叫做stage,暂存区是一个临时保存修改文件的地方。基本流程: 1、从远程仓库中克隆代码到本地仓库 2、从本地仓库中checkout代码然后进行代码修改 3、将代码提交到本地的暂存区 4、从暂存区提交到本地仓库 5、将...
2020-08-01 21:20:44
504
原创 第十课 SpringBoot 多数据源解决分布式事务(jta + atomikos)
SpringBoot 多数据源解决分布式事务主要通过jta + atomikos来生成全局事物管理器,来管理每一个datasource的数据源。 话不多说,直接看操作:(1)引入jta +atomikos相关依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-...
2020-06-24 16:36:54
684
原创 SpringCloud 学习笔记11--SpringCloud Nginx +Zuul网关集群和集成Swagger管理微服务接口
摘自:蚂蚁课堂:http://www.mayikt.com/course/video/24241、搭建Nginx+Zuul实现高性能网关 Zginx + Zuul (多个网关),实现一主一备或者轮询。在微服务中,所有服务请求都会统一请求到Zuul网关上。原理:客户端发送请求,统一到nginx上,再使用nginx实现反响代理和负载均衡,采用轮询算法转发到网关上,最后由网关再次进...
2020-02-11 16:04:14
760
原创 SpringCloud 学习笔记10--SpringCloud 微服务Zuul网关平台介绍及环境搭建
摘自:蚂蚁课堂:http://www.mayikt.com/course/video/24141、微服务网关平台设计思想及作用 1、接口产生背景:在面向服务架构和微服务背景和rpc远程调用下产生,目的是为了解耦。 2、接口分类: (1)开放接口:其他机构合作伙伴进行调用(必须在外网访问)需要通过appid+appsecret生成accesstoken...
2020-02-11 16:03:34
428
翻译 SpringCloud 学习笔记9--SpringCloud 分布式配置中心
摘自:蚂蚁课堂学习视频:http://www.mayikt.com/course/video/23991、分布式配置中心设计思想 (1)为什么要使用分布式配置中心? 产生背景:传统的如果生产环境配置文件,需要发生改变,则需要重新打war,重新读取配置信息到jvm中。 (2)分布式配置中心 在微服务当中使用同一个服...
2020-02-11 16:03:04
306
原创 SpringCloud 学习笔记8--SpringCloud 之 Hystrix服务保护框架( 服务降级、熔断、限流)
摘自:蚂蚁课堂学习视频:http://www.mayikt.com/course/video/2392一、微服务高可用技术 大型复杂的分布式系统中,高可用相关的技术架构非常重要。它中有一个非常重要的环节,就是如何将分布式系统中的各个服务打造成高可用的服务,从而以应对分布式系统环境中的各种各样的问题,避免整个分布式系统被某个服务的故障给拖垮。 比如:服务间的调用超时、...
2020-02-11 16:02:02
416
翻译 SpringCloud 学习笔记7--SpringCloud 声明式Feign客户端调用工具、服务雪崩效应
摘自:蚂蚁课堂学习视频:http://www.mayikt.com/course/video/23901、SpringCloud中支持两种客户端调用工具: RestTemplate基本上不用的, Feign客户端工具应用比较多,它是一个声明式的http客户端调用工具,采用接口 + 注解方式实现,易读性比较强。 最大的优势:2、代码实现(基于Eureka注册中心)代...
2020-02-11 15:59:03
290
原创 SpringCloud 学习笔记6--Ribbon与Nginx的区别
一、Ribbon与Nginx的区别1、Nginx是服务器端负载均衡。 Nginx是客户端所有请求统一交给Nginx,由Nginx进行实现负载均衡请求转发,属于服务器端负载均衡,即请求由 Nginx服务器端进行转发。2、Ribbon是客户端负载均衡。 Rib...
2020-02-11 15:57:45
855
原创 SpringCloud 学习笔记5--SpringCloud 搭建Consul注册中心
八、Consul注册中心环境搭建 1、Consul简介 Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用go语言开发。它具有很多优点,包括:基于 raft协议,比较简洁;支持健康检查,同时支持http和dns协议,支持跨数据中心的WAN集群,,提供图形界面跨平台,支持 lin...
2020-02-11 15:56:21
345
原创 SpringCloud 学习笔记4--SpringCloud 搭建Zookeeper
七、SpringCloud 搭建Zookeeper注册中心 1、本地启动zookeeper(进入zk的bin目录下 执行 ./zkServer.sh start命令) 2、打开zookeeper的图形化视图工具 zookeeper图像化客户端工具的下载地址:https://issues.apache.org/jira/secure/attachme...
2020-02-11 15:55:37
295
原创 SpringCloud 学习笔记3--高可用Eureka注册中心
1、搭建高可用Eureka注册中心(客户端调用Eureka集群) Eureka高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组相互注册的服务注册中心,从而实现服务清单的相互同步,达到高可用效果。即在properties或yml文件中配置: ##是否需要将自己注册给自己的注册中心(集群的时候是需要为true) ...
2020-02-11 15:55:15
185
原创 SpringCloud 学习笔记2--服务注册与发现、@LoadBalanced实现负载均衡、纯手写Ribbon实现本地负载均衡
一、SpringCloud简介 是基于SpringBoot基础之上开发的微服务框架,SpringCloud是一套目前非常完整的微服务解决方案框架,其内容包含服务治理、注册中心、配置管理、断路器、智能路由、微代理、控制总线、全局锁、分布式会话等。 SpringCloud包含众多的子项目: 1)SpringCloud config 分布式配置中心。...
2020-02-11 15:54:48
821
原创 SpringCloud 学习笔记1--网站架构演变过程
SpringCloud 中文文档:https://www.springcloud.cc/spring-cloud-dalston.htm1、网站架构演变过程:传统架构(单点应用)—> 分布式架构(以项目进行拆分)—> SOA架构(面向服务架构)—> 微服务架构(1)传统架构其实就是SSH架构或者SSM架构,属于单点应用,把整个业务模块都会在一个项目中进行开发, ...
2020-02-11 15:54:23
286
转载 Java 详解 JVM工作原理及流程
说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解...
2019-02-21 11:18:02
260
原创 关于apache 或 nginx 配置vue的路由、代理和跨域问题
关于用vue开发的微信公众号相关功能,部署到服务器上,服务端需要做的一些事情: 华华 的开发服务器使用的nginx来做负载均衡和代理,生产服务器用的apache来做代理,所以就遇到了关于配置路由和代理的问题啦。 vue配置路由 可参考:https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%...
2018-08-29 17:32:34
6048
原创 第九课 从零开始学Spring boot 之 (文件上传)
一、单文件上传 1、在pom.xml加入相应依赖<!-- thmleaf模板依赖. --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymele...
2018-05-10 16:31:40
325
原创 第八课 从零开始学Spring boot 之 (启动banner日志修改)
对于使用过Spring Boot的开发者来说,程序启动的时候输出的由字符组成的Spring符号并不陌生。这个是Spring Boot为自己设计的Banner:1. . ____ _ __ _ _ 2. /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ 3. ( ( )\___ | '_ | '_| | '_ ...
2018-05-10 14:41:48
323
原创 第七课 从零开始学Spring boot 之 (自定义配置文件资源获取,扫描指定包下的文件)
1、自定义配置文件资源获取 spring boot使用application.properties默认了很多配置。但需要自己添加一些配置的时候,我们应该怎么做呢。 (1)、继续在application.ppoperties中添加gh.username=gonghgh.password=123456 定义配置类:package com.gongh.config;import org....
2018-05-03 16:07:49
4382
原创 第六课 从零开始学Spring boot 之 (过滤器Filter、监听器Listener、拦截器HandlerInterceptor)
过滤器(Filter)和监听器(Listener)的注册方法和Servlet 一样,不清楚的可以查看上一篇文章。本文将直接使用@WebFilter和@WebListener的方式,完成一个Filter 和一个 Listener;使用注解。@ServletComponentScan//这个就是扫描相应的Servlet包; 过滤器属于Servlet范畴的API,与...
2018-05-03 10:14:47
365
原创 第五课 从零开始学Spring boot 之 (JSP 和 Servlet)
一、JSP相关配置JSP (Spring Boot官方不推荐,STS创建的项目会在src/main/resources 下有个templates 目录,这里就是让我们放模版文件的,然后并没有生成诸如 SpringMVC 中的webapp目录)1、在pom.xml文件添加依赖; <!-- tomcat 的支持.--> <dependency> ...
2018-05-02 17:45:50
416
原创 第四课 从零开始学Spring boot 之 (适用Druid和监控配置)
1、Druid简单介绍,具体看官网; Druid是Java中目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,并且能够提供强大的监控和扩展功能,包括很多维度的统计和分析功能。包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是...
2018-05-02 15:02:00
234
原创 第三课 从零开始学Spring boot 之 (Mysql + Hibernate JPA 反向工程)
一、反向生成数据库 什么是JPA呢?JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。http://baike.baidu.com/link?url=LdqIXvzTr0RDjY2yoRdpogDdzaZ_L-DrIOpLLzK1z38quk6nf2ACoXEf3pWKTElHACS...
2018-04-28 17:02:32
1381
1
原创 七、申请阿里云服务器及搭建Java开发环境教程 -- 安装nginx(7)
注:云服务器开发环境如下 (CentOS + JDK1.7 + Mysql + ZooKeeper + Redis + Nginx + maven中央库Nexus)三、linux 下安装Nginx (本文采用手动安装,并非yum安装)1.下载nginx包下载地址:http://nginx.org/en/download.html选择相应版本进行下载,如图所示:然后把下载的 .tar.gz 文...
2018-03-13 11:32:06
472
原创 六、申请阿里云服务器及搭建Java开发环境教程 -- maven私服Nexus(6)
注:云服务器开发环境如下 (CentOS + JDK1.7 + Mysql + ZooKeeper + Redis + Nginx + maven中央库Nexus)三、linux 下安装Nexus (本文采用手动安装,并非yum安装)1.下载nexus Nexus官网下载地址:http://www.sonatype.org/nexus/go/第1步:使用wget命令下载 wget 想要下载n...
2018-03-12 17:23:17
929
原创 五、申请阿里云服务器及搭建Java开发环境教程 -- 安装ZooKeeper(5)
注:云服务器开发环境如下 (CentOS + JDK1.7 + Mysql + ZooKeeper + Redis + Nginx + maven中央库Nexus)三、linux 下安装Zookeeper (本文采用手动安装,并非yum安装)1、创建 /usr/local/services/zookeeper 文件夹:mkdir -p /usr/local/services/zookeep...
2018-03-12 16:42:46
403
原创 四、申请阿里云服务器及搭建Java开发环境教程 -- 安装redis(4)
注:云服务器开发环境如下 (CentOS + JDK1.7 + Mysql + ZooKeeper + Redis + Nginx + maven中央库Nexus)四、linux 下安装Redis(本文采用手动安装,并非yum安装)1、下载Redis3.2.8安装包?1wget -C https://download.redis.io/releases/redis-3.2.8.tar.g...
2018-03-12 16:33:15
379
原创 三、申请阿里云服务器及搭建Java开发环境教程 -- 安装mysql(3)
注:云服务器开发环境如下 (CentOS + JDK1.7 + Mysql + ZooKeeper + Redis + Nginx + maven中央库Nexus)三、linux 下安装Mysql (本文采用手动安装,并非yum安装)1、下载安装包 mysql-5.6.39-linux-glibc2.5-x86_64.tar.gz (1)、进入官网下载 下载地址 : https...
2018-03-12 12:04:33
537
原创 二、申请阿里云服务器及搭建Java开发环境教程 -- 安装jdk(2)
注:云服务器开发环境如下 (CentOS + JDK1.7 + Mysql + ZooKeeper + Redis + Nginx + maven中央库Nexus)二、linux下安装jdk1.7 (本文采用手动安装,并非yum安装) 1、下载jdk1.7 方法一:进入jdk下载官网,选择对应的linux 版本 *.tar.gz 格式的jdk 方法二:连接系统命令窗口,通过...
2018-03-12 11:47:07
748
原创 一、申请阿里云服务器及搭建Java开发环境教程 -- 购买阿里云服务器(1)
注:云服务器开发环境如下 (CentOS + JDK1.7 + Mysql + ZooKeeper + Redis + Nginx + maven中央库Nexus)一、购买阿里云服务器 1、百度搜索阿里云官网或地址栏输入 https://www.aliyun.com 进入阿里云官网,登录或注册进入,如下图:2、进入购买页面,选择自定义购买,选择自己需要购买的服务器(选择地域、具体型号的...
2018-03-06 22:24:38
6697
1
ssh框架所有jar包及jar包的作用
2013-08-16
struts2+spring+hibernate 人力资源系统管理
2013-08-20
struts2必备jar包(完整版),导入便可使用
2013-08-07
struts2必备包 + 各种数据库驱动包 完整版
2013-08-07
Sring+hibernate+struts2+easyui基本权限管理框架
2013-08-13
struts2 + spring + hibernate + easyui Demo 示例源码
2013-08-13
jquery、easyui学习汇总
2013-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅