自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mybatis中Cursor的处理百万数据

MyBatis中的Cursor是一种用于处理大量数据查询的特殊类型。它允许我们在查询结果集中逐行获取数据,而不是一次性将所有数据加载到内存中。这对于处理大型数据集非常有用,可以减少内存消耗并提高查询性能。

2023-12-28 10:30:12 1299

原创 linux7安装redis

root@localhost redis-5.0.0]# cd ./src //进入到 redis-5.0.0/src 文件目录下。/usr/local/redis/ [root@localhost redis-5.0.0]# make //进行编译。//进入到/usr/local/redis-6.0.0/ 文件目录下 [root@localhost mnt]# cd。2.将redis的安装包上传到云服务器的/usr/local/目录中。redis是由c++编译的,

2023-12-20 15:48:05 494

原创 mybatis 源码分析七、SqlSessionFactoryBuilder的作用

这里面主要做的事情其实就是构建XMLConfigBuilder,利用XMLConfigBuilder 加载我们配置的xml文件读取配置内容。SqlSessionFactoryBuilder其实就是做了这样一个作用,他提供了一个路口,然后再使用XMLConfigBuilder对xml文件的解析,将我们具体的xml配置内容加载到Configuration配置文件中。解析全局配置文件,mybatis-conifg.xml,将我们的配置解析出来封装到mybatis全局配置类Configuration中。

2023-12-13 10:21:44 197

原创 mybatis 源码分析六、TypeHandlerRegistry和TypeHandler详解

TypeHandlerRegistry和TypeHandler在mybatis源码type包中,TypeHandler主要的作用是用做JdbcType 和 javaType的类型转换,就是我们常说的数据库类型和java中实体类型的转换。可以看做是正对TypeHandler的缓存,一次性将所有的TypeHandler进行了注册在我们需要使用的时候在重TypeHandlerRegistry注册器中获取。这样我们将我们自定义的TypeHandler注入到了我们的项目中。我们可以看一下执行的结果。

2023-12-06 17:04:38 352

原创 mybatis 源码分析五、TypeAliasRegistry详解

Mybatis通过TypeAliasRegistry对象实现对别名的封装,实现别名对应Java类型的校验,通常我们在配置xml编写sql 时,使用resultType定义返回类型时,基本类型等我们可以直接简化,但是我们自己定义的实体,在没有配置之前都是需要写类的全路径。接下来我们看一下mybatis给我们提供的别名注册器TypeAliasRegistry。通过源码我们可以发现,mybatis定义一下基本类型等数据给我们默认注册了别名。

2023-12-04 17:30:48 182

原创 mybatis 中 ObjectWrapperFactory的使用

对对象进行处理,我们看一下mybatis源码是如何匹配上具体的 ObjectWrapperFactory。下面就是获取到具体的ObjectWrapperFactory源码,其实也很简单根据我们在xml中节点配置就可以读取到注入进来了。ObjectWrapperFactory用于对对象进行包装后处理,在mybatis中用于对结果对象的处理。配置了以后得结果,下划线已经消失了,可以看出objectWrapperFactory配置已经生效了。,下面是我配置的自定义map,key去除下划线的处理。

2023-11-24 10:24:45 895

原创 ParameterizedType、GenericArrayType、TypeVariable中常用的方法

ParameterizedType 接口是 Java 中的一个类型接口,它用于表示带有泛型参数的类型,例如 List 或 Map<Integer, String> 等。getActualTypeArguments()方法,例如 List ,Map<String,Long> 获取的是<>里面的参数,getRawType()表示此类型的原始类型的 Type 例如 Map<String,Long> 获取到的是map原始对象。结果为,成功的获取到了的上边界 list。结果为 获取到了<>里面的参数。

2023-11-20 16:48:11 356

原创 ThreadLocal详解

我们看一下它的源码,如下,可以看到我们set值的时候是先获取的单前线程Thread,然后再getMap获取当前map对象,如果ThreadLocalMap为空则key则为当前线程,如果不为空则直接更新value,value为我们定义的值。所以在同一个threadLocal中只能保存一份变量的信息,因为他的key是相同的,接下来我们验证一下。ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。

2023-11-18 15:15:11 192

原创 MetaObjectHandler的作用

MetaObjectHandler的作用

2023-11-18 13:14:57 197

原创 Thread.currentThread().getStackTrace()的作用

Thread.currentThread().getStackTrace()的作用、示例

2023-11-12 17:43:23 1106

原创 spring aop的使用

spring aop中@Before、@After 、@AfterReturning、@AfterThrowing、@Around的使用

2023-11-10 15:25:21 121 1

原创 spring事件监听机制Event 详解

Spring的事件(Application Event)为Bean和Bean之间的消息同步提供了支持。什么事同步监听呢,举个列子就比如我们洗澡和烧水,同步的意思就是我们必须洗完澡才能进行烧水的,在spring事件发布中,就必须等我们的监听器监听完成代码才可以往下执行。Spring Event 的好处在于,通过事件的发布和监听机制,能够将不同业务之间的耦合度降到最低,这些业务之间并不是直接的调用关系,而是通过事件这种松耦合的方式进行交互,这样业务之间的耦合度就会变得更加灵活和可扩展。

2023-11-09 17:33:15 489 1

原创 mybatis 源码分析四、反射

其实添加get方法和添加set方法都是比较类似的一个操作,到现在mybatis的核心Reflector类就已经讲解完了。这个类的主要作用其实就是解析我们类的信息保存起来以便后续的使用。

2023-11-08 21:32:24 215 1

原创 TypeVariable、ParameterizedType、GenericArrayType的区别和作用

它们都是实现了type接口:其中TypeVariable:的作用代表的是泛型 ,不确定的类型我们常见的T、K、V等这种不确定的类型。ParameterizedType:的作用代表的是带有泛型参数的类型列如:Map<K,V>List这种类型。GenericArrayType :型数组,描述的是ParameterizedType类型以及TypeVariable类型数组,即形如:classA[][]、T[]

2023-11-06 16:05:56 477 1

原创 mybatis 源码分析三、日志框架的实现

Logger.getLogger 这个方法其实就是获取的Log4j里面的logger日志输出对象,像下面的那些debug,error这些日志输出的方法最终都是通过Log4j进行调用的。其实原理都是一样的,通过构造器去获取我们日志框架中的日志输出对象,然后再复制给类的成员变量,最终调用的方法都是调用的日志框架中的方法。这样就完成了对这个日志框架的适配,其他的实现类就由大家一起看了。通过看源码发现他采用了适配器的模式去整合的这些日志框架,首先它定义了一个Log接口,然后让这些日志框架实现这个接口来进行整合。

2023-11-04 11:33:00 133 1

原创 instanceof和isAssignableFrom的区别

的作用是判断子类形是否是父类形,一般用于判断子类是否继承某个类或者实现某个接口。:的作用是判断父类是否有这个子类,一般判断父类是否被这个类继承或者接口实现。可以很直观的看出两个的作用。

2023-11-04 10:14:04 67 1

原创 Logstash不同服务日志分索引收集

一般我们使用elk的时候,都是多个服务一起使用,那我们该怎么不同服务之间创建出不同的索引呢?我们就可以利用Logstash提供的多个input配置,type配置类型,根据监听的端口和type在es中创建不同的索引。一个是consumer另一个是product,目前的话就实现了不同服务之间日志文件不同的监听情况。下面是Logstash的打印的情况。

2023-10-27 15:51:49 405 3

原创 elk日志系统的搭建

ELK平台一般我们用来做日志系统。它是三个开源项目的首字母的总称。ELK主要是以这三个项目作为核心来搭建的日志处理系统。它们这个三个项目分别是Elasticsearch、Logstash 和 Kibana。EalsticSearch 搜索和分析的功能Logstach 搜集数据的功能,类似于flume(使用方法几乎跟flume一模一样),是日志收集系统Kibana 数据可视化(分析),可以用图表的方式来去展示,文不如表,表不如图,是数据可视化平台ELK日志处理的大概流程,主要是Logstach。

2023-10-27 14:58:34 281 1

原创 ApplicationContextAware接口的作用

当一个类实现了这个接口之后,这个类就可以方便的获得ApplicationContext对象(spring上下文),Spring发现某个Bean实现了ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContext(参数)方法,调用该方法时,会将容器本身ApplicationContext对象作为参数传递给该方法。

2023-10-25 15:08:12 40 1

原创 Jackson 中SimpleModule的作用

例如我们想将前端传过的时间类型yyyy-mm-dd的类型转成localdataTime。我们可以利用SimpleModule做一个全局的配置,正对时间类型的数据。前端只需要给我们yyyy-mm-dd ,后端根据自定义 SimpleModule 进行转换。可以看到成功的将yyyy-mm-dd类型的时间格式转换成为了我们需要的LocalDateTime类型。我们也可以转其他的类型例如Long类型的转成string类型。时间类型的已经成功转换成为了yyyy-mm-dd的类型。接下来我们定义两个接口测试一下看看。

2023-10-24 17:01:29 709

原创 javax.management.InstanceNotFoundException: org.springframework.boot:type=Admin,name=SpringApplicati

javax.management.InstanceNotFoundException: org.springframework.boot:type=Admin,name=SpringApplication 异常如何解决?

2023-10-24 14:34:30 1238

原创 mybatis源码分析 二、Resources以及ClassLoader的使用

这两个方法是resource的核心方法,可以看到返回值是不同的,一个是将文件的信息读取成流进行返回,另一个是返回的Properties对象。我们首先使用的就是Resources 类里面的**Resources.getResourceAsReader()**方法读取我们的全局配置文件mybatis-config.xml,接下来我带大家看看Resources 的源码。calssLoader是类加载器,calssLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确的运行了。

2023-10-24 10:24:36 98

原创 mybatis源码分析一、mybatis的执行流程

解析配置文件利用demo4j,并创建sqlsession会话对象,创建sqlsessionfaatoryBuilder类,使用demo4j解析配置文件,将解析的配置内容存放到configuration文件中去。创建配置类configuration(核心配置类) 存放myatis-config.xml核信配置信息,MapperdStatement映射配置类主要存放mapper.xml解析出来的配置信息。创建sqlsession接口以及实现类DefaultSqlSession,定义对数据库的crud操作。

2023-10-24 09:42:37 32

原创 springcloud openfeign+Nacos的实战

OpenFeign是springcloud在Feign的基础上支持了 SpringMVC 的注解,如@RequestMapping 等等。OpenFeign的 @FeignClient 可以解析SpringMVC 的 @RequestMapping 注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。(注:Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。

2023-10-18 17:02:37 976 1

原创 Type interface org.apache.ibatis.dao.UserMapper is not known to the MapperRegistry

parent其实就是我们的ClassLoader,这边就在递归获取下面的资源,可以看到他获取到了我们mapper文件下面所有的资源了,由于我的dao接口文件不在这个目录下以。导致了在knownMappers中获取不到具体的dao文件所以就发生了报错,所以这就是为什么配置mapper.xml和dao接口需要再同一个文件夹下面了。,通过读取我们配置的标签比如匹配到了mapper里面的配置的package属性就会走到。这个方法其实主要做的事情就是根据我们 标签读取这个包下面所有的文件。我们走进这个方法看看。

2023-10-18 15:48:58 271 1

原创 Unexpected exception during bean creation; nested exception is java.lang.IllegalStateException

问题原因:整合openFeign的时候下载。然后再重新跟新maven,问题解决。解决方法:在自己的项目目录中执行。依赖下载不下来maven报错。

2023-10-15 17:20:02 1456 1

原创 spring整合rabbitMq

直连交换机是一种带路由功能的交换机,一个队列会和一个交换机绑定,除此之外再绑定一个routing_key,当消息被发送的时候,需要指定一个binding_key,这个消息被送达交换机的时候,就会被这个交换机送到指定的队列里面去。其他的异常,则消息会被拒绝,且 requeue = true(如果此时只有一个消费者监听该队列,则有发生死循环的风险,多消费端也会造成资源的极大浪费,这个在开发过程中一定要避免的)。ttl队列里面的消息进入死信队列。常用的交换机有以下3种,一般我们是通过监听队列,从队列中获取消息。

2023-10-14 15:54:32 324

原创 IDEA maven plugin Cannot resolve symbol ‘xxx‘问题解决 *

【代码】IDEA maven plugin Cannot resolve symbol ‘xxx‘问题解决 *

2023-10-12 22:48:28 1053

原创 pom文件中的spring-boot-maven-plugin报错

pom文件中的spring-boot-maven-plugin报错

2023-10-12 22:41:41 274

空空如也

空空如也

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

TA关注的人

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