- 博客(70)
- 资源 (1)
- 收藏
- 关注
原创 【RocketMQ】源码详解:ACK消息、消息重试、消费进度管理
消息消费失败,发送ack消息:org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService#sendMessageBack。入口: org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService#sendMessageBack。消息消费失败的情况下,会发送ack消息给broker, 发送的内容包括topic、偏移量、msgId等。
2023-04-02 15:34:24
1262
原创 【RocketMQ】源码详解:消息拉取、消息消费流程、Push模式长轮询
通过这个处理器处理拉取消息的请求,调用org.apache.rocketmq.store.DefaultMessageStore#getMessage来拉取消息,先去consumequeue查询消息在commitlog中的偏移量和大小,再根据此偏移量和消息长度查询真正的消息内容。而拉取一次再次放入的前提是,pullRequestQueue中有请求,那么第一次拉取消息请求就是在重平衡时添加进去的,而重平衡服务在消费者启动时会进行一次唤醒,所以第一次放入拉取消息请求是在消费者启动时。
2023-03-27 11:05:51
1176
原创 【RocketMQ】源码详解:消费者启动、消费者负载均衡Rebalance
在rocketmq中, 一个queue只能被一个消费者消费, 但是 一个消费者可以消费多个queue . 而且在程序运行过程中,可能会启动新的消费者以增加消费能力, 这就需要给新的消费者分配queue, 或者有消费者关闭, 其负责的queue就要交给其他消费者消费, 这就涉及到多个queue与消费者之间的负载均衡问题. 在rocketmq中由RebalanceService提供此服务. 其提供了多种负载均衡策略: 平均分配、环形平均策略、一致性哈希策略等。
2023-03-20 21:05:02
805
1
原创 【RocketMQ】源码详解:Broker端消息重放ReputMessageService(构建consumequeue)
【RocketMQ】源码详解:Broker端消息重放ReputMessageService(构建consumequeue)
2023-03-12 16:23:21
486
原创 【Java多线程JUC入门详解】AQS原理详解
AbstractQuenedSynchronizer抽象的队列式同步器 , 在java.util.concurrent.locks包下
2023-01-05 10:15:07
467
原创 【Java多线程JUC入门详解】Atomic原子类、LongAdder源码详解
原子类就是利用CAS机制,实现原子操作的一些类基本类型原子类(AtomicInteger、AtomicBoolean、AtomicLong)(2). 数组类型原子类 (AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray)引用类型原子类 (AtomicReference、AtomicStampedReference、AtomicMarkableReference)
2022-11-21 09:44:44
428
原创 【Java多线程JUC入门详解】CAS、乐观锁、Unsafe类
CAS是乐观锁的一种实现。CAS的全称为Compare-And-Swap ,它是一条CPU并发原语,比较工作内存值(预期值)和主物理内存的共享值是否相同,相同则执行规定操作,否则继续比较直到主内存和工作内存的值一致为止。这个过程是原子的(AtomicInteger类主要利用CAS+volatile和native方法来保证原子操作,从而避免synchronized的高开销,执行效率大为提升)
2022-11-01 10:30:36
326
原创 【Java多线程JUC入门详解03】JMM Java内存模型、先行发生原则 Happens-Before 、内存屏障、volatile详解
JMM(Java内存模型Java Memory Model,简称JMM)本身是一种**抽象的概念** 并不真实存在,它描述的是一组规则或规范通过规范定制了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。
2022-10-10 16:19:49
437
原创 【ElasticSearch 01】elasticsearch入门详解
概述es是一个基于Lucene的搜索引擎。对于初学者来说,可以将其看作一款NoSQL。es一般可以用作项目中的搜索、检索模块,提供关键词检索、条件过滤、聚合等功能。es在单独使用时,可以实现的功能有比如:淘宝、京东等的商品搜索,根据品牌、分类的商品过滤,根据价格等的排序。数据聚合则是可以统计如:某一价格段的商品的销量,等类似的数据。es中的数据是以文档(docment)为单位保存的,可以看作是数据库中的一行数据。文档保存在类型(type)中,可以看作是数据库中的表。而存储以上这些的称为索引(index
2021-06-07 17:31:02
471
原创 Springboot循环依赖问题: Bean with name ‘xxxxService‘ has been injected into other beans
Error creating bean with name 'xxxxService': Bean with name 'xxxxService' has been injected into other beans [.....] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final
2021-03-05 09:08:36
10218
6
原创 MYSQL 服务无法启动 服务没有报告任何错误 请键入 NET HELPMSG 3534 以获得更多的帮助。
通过查询使用如下方法:bin目录下执行 mysqld -remove mysqld -install:未解决输入mysqld --initialize重新初始化data。 发现遇到:mysqld: [ERROR] Found option without preceding group in config file D:\mysql-8.0.22-winx64\my.ini at line 1.mysqld: [ERROR] Fatal error in defaults handl
2020-12-28 14:25:18
453
1
原创 MySQL 1040 错误 Too many connections 引发的一系列错误
MySQL 1040 错误解决办法:更改my.ini文件中的最大连接数。my.ini在mysql的安装目录下。[client]# 设置mysql客户端默认字符集default-character-set=utf8 [mysqld]# 设置3306端口port = 3306# 设置mysql的安装目录basedir=D:\\mysql-8.0.22-winx64# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错# datadi
2020-12-28 14:17:07
164
原创 Java8新特性 之 函数式接口、Lambda表达式
函数式接口函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。在Java8之前,Java中就已经有了一些函数式接口:java.lang.Runnablejava.util.concurrent.Callablejava.security.PrivilegedActionjava.util.Comparatorjava.io.FileFilterjava.nio.file.PathMatcherjava.lang.reflec
2020-12-21 15:51:34
154
1
原创 Redis五大数据类型,及其底层数据结构实现原理
五大基本数据结构redis存储的都是 key:value格式的数据,key为字符串格式,value有5种String:字符串:sds动态字符串hash:map格式:数组+链表list:linklist(允许重复):3.2之前是ziplist linkdelist,之后是quicklistset:集合类型(不允许重复:intset或hashtablesortedset:有序集合:zset或ziplist。zset使用字典+跳表实现String底层是通过SDS简单动态字符串实现的struc
2020-11-25 15:03:23
430
原创 Redis数据结构SortedSet底层原理详解
概述一些常用命令:存储:zadd key score value获取:zrange key start end获取:同时获取分数:zrange key start end with score删除:zrem key value存储的时候我们可以发现,是有一个score(分数)的,这个就是用来排序的字段。实现先说结论,SortedSet底层,根据配置会在不同的时候选用两种不同的数据结构zset,或ziplist进行存储:首先,我们来看几个参数:zset-max-ziplist-entrie
2020-10-31 00:56:33
4155
原创 Java集合原理详解
注:本篇博客不讨论集合的使用,仅是基于我最近复习时对其部分原理的理解的分享(比如扩容的原理、底层的数据结构等,但我的理解也比较浅显,适用于初学者或仅知道如何使用集合想快速了解其原理的朋友)如有错误,望指出!文章目录集合的结构Collection接口ListArrayListLinkedListVectorSetHashSetTreeSetMap接口HashMapTreeMap集合的结构我们通常常用的集合有三种,List、Set、Map,不过实际上,他们三个并不是平级的接口List和Set继承自Co
2020-10-23 21:11:07
274
原创 No beans of ‘RedisConnectionFactory‘ type found.
在编写redis配置类的时候,在cacheManager传入RedisConnectionFactory的时候报错,大概就是spring没有给你自动注入这个对象。最终解决方法是@ResourceRedisConnectionFactory redisConnectionFactory;增加一个变量,使用resource注解注入,不使用方法参数的redisConnectionFactory,最终运行成功。PS:今天想要复现此错误的时候,把Resource注入的对象注解掉后发现,又可以了,不知道啥
2020-10-09 09:29:00
14159
14
原创 错误:java.lang.IllegalArgumentExcept:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required
先说结论:博主是因为手动向maven仓库中添加jar包的时候,有错误,把错误的依赖的文件夹删除即解决。今天向阿里云vod中上传视频的时候,有一个jar包阿里没有开源,需要手动引入,我在向maven中添加jar包的时候,jar包的名字打错了,导致文件夹的名字和jar包的名字不匹配,然后晚上的时候,一开始有一个模块都启动起来的,再启动其他模块,就报这个错误,然后把启动起来的模块停止再重启,也不行了,所以我认为肯定不是代码的问题,经过查找,看到有人说可能是jdk的jar包问题,我也动过jdk就想到了我动过mav
2020-10-04 20:33:58
1503
原创 springboot整合shiro,实现登录、退出、权限授权等
文章目录Shiro 概述Demo依赖springboot配置Dao层service层ShiroConfigRealmcontroller层前端页面index页面登录页面Shiro 概述Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。更多理论知识,可以去他人博客查阅,这里博主直接贴代码,里面有一些注释,希望会对你有帮助。Demo依赖&
2020-09-16 10:23:29
1488
原创 【Java多线程JUC入门详解02】:读写锁、阻塞队列、线程池、CountDownLatch、CyclicBarrier、Semaphore
CountDownLatch减法计数器package org.example.count;import java.util.concurrent.CountDownLatch;/** * @Author: sshdg * @Date: 2020/9/6 8:24 */public class CountDownLatchTest { public static void main(String[] args) throws InterruptedException {
2020-09-10 22:31:28
443
原创 【Java多线程JUC入门详解01】:Lock锁、集合的线程安全问题、生产者消费者问题
JUC: java.util .concurrent工具包的简称:本篇即为此工具类的入门使用博客公平锁:先来后到非公平锁:会根据运行时间、级别进行分配synchronized锁package org.example;/** * @author sshdg */public class SynchronizedDemo { public static void main(String[] args) { SaleTicket saleTicket = new Sale
2020-09-10 22:29:08
190
原创 SpringBoot+Mybatis实现的个人博客系统
博主刚刚学习完springboot等框架,因此此博客系统可能会有一些问题或者不完善,供大家学习交流使用gitee码云地址:https://gitee.com/sshdg/blog其中,前端使用的是李仁密教程中的样式:地址技术栈SpringBoot, Mybatis, PageHelper, Mysql, commonmarkThymeleaf, jQuery, editmd实现功能前台展示:分页查询、博客查询、根据分类查看博客、评论、归档后台管理:管理员登录、保存至草稿、发布博客、增删查改分
2020-09-03 11:57:03
1524
4
原创 Vue Element Ui + Springboot前后端分离 CRUD(增删查改)、分页查询 Demo
目录技术栈后端:前端:后端开发过程后端代码pom.xmlapplication.propertiesStudentController.javaStudentServiceImpl.javaStudentMapper.javaStudentMapper.xmlStudent.java前端开发过程前端代码src\components\HelloWorld.vuesrc\views\Home.vuesrc\App.vuesrc\main.jsvue.config.js最近两天刚刚学习完Springboot,决
2020-08-19 16:11:48
1662
2
原创 【Springboot 03】拦截器、logback、Thymeleaf
目录拦截器拦截器类配置文件类控制器类打jar包发布日志logbackThymeleaf关闭缓存简单使用标准表达式路径表达式循环条件判断内联文本文本内联JavaScript内联运算符Thymeleaf模板表达式基本对象拦截器拦截器类1、创建拦截器类,实现HandlerInterceptor接口package com.wm.interceptor;import com.wm.model.User;import org.springframework.web.servlet.HandlerInter
2020-08-19 14:35:16
304
原创 【Springboot 02】RESTFul风格接口、集成redis、集成dubbo
目录SpringMVC注解`@RestController``@GetMapping`RESTFul风格接口概述实现集成Redis依赖配置使用集成dubbo安装zookeeper创建接口工程接口类提供者依赖:配置文件:实现接口类:springboot启动类:消费者依赖:配置文件:调用服务层springboot启动类运行集成ssm-redis-dubbo搭建接口工程提供者依赖springboot配置文件插件dao接口mapper文件sercice实现类springboot启动类消费者依赖插件配置文件contr
2020-08-19 14:31:35
1305
原创 【Springboot 01】配置文件properties yaml、集成Mybatis、Mybatis逆向工程
入门概述springboot项目打包的是jar包,因此它集成了tomcat,springboot项目有一个入口类,启动其中的main方法即可启动项目。所有代码必须写在入口类Application.java的同级或下级目录。springboot的maven pom文件的依赖中没有版本号,是因为其父工程代为管理依赖版本号。启动SpringBoot项目1、创建项目:选择依赖Web2、在Application.java所在目录下创建controller包,编写controller类package
2020-08-19 14:26:13
680
原创 SSM框架整合开发入门详解
SSM框架整合开发依赖\插件 <dependencies> <!--单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope>
2020-08-12 14:43:28
201
原创 【SpringMVC02】返回值ModelAndView、ajax请求返回json、全局异常处理、拦截器
目录控制器方法返回值ModelAndViewStringvoidObject静态资源处理使用``使用``转发重定向转发重定向异常处理拦截器多个拦截器控制器方法返回值ModelAndView参照目录:“SpringMVC入门–使用” 中的代码String相当于ModelAndView中的View部分。 @RequestMapping(value = "/returnString.do") public String receiveObject(){ return "o
2020-08-12 14:33:28
2267
原创 【SpringMVC01】入门、基本使用;接受请求参数
目录SpringMVC入门概述使用注解开发value属性method属性方法参数逐个接受请求参数字符过滤器`@RequestParam`以对象接受参数SpringMVC入门概述基于spring的框架,实际上是spring的一个模块,专门做web开发的。相当于servlet的一个升级。Spring是一个对象容器,通过iocS管理对象,使用<bean>, 注解创建对象。springMVC就是一个Spring。SpringMVC能够创建对象,放入到SpringMVC容器中,不过放的是控制器对
2020-08-12 14:28:31
403
原创 【Spring03】Spring集成Mybatis的使用、Spring事务处理、web中使用Spring
目录集成MyBatis概述使用使用配置文件连接数据库spring事务处理概述使用说明事务隔离级别事务超时时间事务的传播行为提交、回滚事务的时机注解`@Transactional `实现事务Transactional 注解的属性aspectJ AOP管理事务web应用中使用spring集成MyBatis概述将两个框架集成在一起用到的技术是:IOC因为ioc能够创建对象,可以把mybatis框架中的对象交给spring统一创建,存放在spring中,开发人员则只需从spring中获取对象。MyBati
2020-08-07 10:52:08
137
原创 mysql数据库errorCode 1045, state 28000
create connection SQLException, url: jdbc:mysql://localhost:3306/spring, errorCode 1045, state 28000java.sql.SQLException: Access denied for user ‘sshdg’@‘localhost’ (using password: YES)数据库1045错误,是密码或者用户名错误。我这里的原因是发现,使用了spring,配置文件中的username不能叫usernam
2020-08-06 15:38:14
31267
5
原创 【Spring02】Aop面向切面编程入门详解:切入点表达式、注解
目录Aop面向切面编程概述aspectJ切面的执行时间切面的位置(切入点表达式使用JoinPoint:连接点参数注解@Before@AfterReturning@Around@AfterThrowing@AfterAop面向切面编程概述底层是采用动态代理模式实现的。采用了两种代理:JDK的动态代理,CGLIB的动态代理。AOP其实就是动态代理的一种规范化实现。Aspect:切面:给目标类增加的方法,一般称为切面。一般都是非业务方法,可以独立使用。常见的有:日志,事务,统计信息,参数检查,权限验证。
2020-08-05 19:02:57
1771
原创 【Spring01】入门:IOC控制反转详解(XML和注解方式)
目录IoC 控制反转概述创建对象查看容器中对象的信息给对象赋值XML方式set注入简单类型引用类型构造注入自动注入引用类型ByNameByType多个配置文件注解方式@Component@Value@Autowired@Resource两种方式的比较IoC 控制反转概述控制反转,是一个概念,一种思想。就是将对象的创建、赋值、管理,交给代码之外的容器来实现。控制:创建对象、对象的属性赋值、对象之间关系的管理。反转:把原来开发人员创建对象、对象的属性赋值…的权限,转移给代码之外的容器实现。正转:由
2020-08-05 19:00:19
815
原创 【MyBatis03】resultType、resultMap、模糊查询、动态SQL、数据分页、配置文件连接数据库
目录MyBatis返回类型resultType简单参数MapresultMap概述使用模糊查询在java语句中传入like的内容在mapper文件中拼接like的内容动态SQL概述ifwherefor each循环简单参数循环实体类属性sql代码片段总结使用数据库配置文件数据分页MyBatis返回类型resultTypesql语句执行完后,数据封装的java对象此对象类型是任意的,需要是该对象所属类的全限定名<select id="selectUsers" resultType="org.e
2020-08-02 10:45:39
464
spring-jdbc-5.2.7.RELEASE.jar;JdbcTemplate
2020-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人