自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【mybatis和mybatis-plus】源码分析

官方提供了几个拦截器,我们可以在最前面先添加我们自己的拦截器,在执行的时候会最高优先级执行,如果是作为根模块来封装,可以通过责任链模式来构造一个我们自己的拦截器链,业务项目继承封装的接口即可/*** 查询拦截* @return*//*** 修改拦截* @return*/return 0;

2023-09-20 10:38:04 681

原创 Jenkins结合Gitlab,实现镜像构建及推送

需要修改credentialsId为自己的gitlab凭证、以及推送到镜像仓库的凭证。下面脚本的/home/jenkins目录,需要指定为宿主机的挂载目录。将jenkins生成的webhook地址复制到gitlab中。需要修改url为项目实际gitlab地址。

2023-09-19 18:29:09 783

原创 【MaxKey对接一】对接gitlab的oauth登录

MaxKey对接Gitlab过程

2023-08-17 11:15:43 1915

原创 【spring事务】源码分析

springboot 事务源码

2023-04-27 15:52:34 494

原创 HopeHomi脚手架(五)远程调用Feign与Sentinel

FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar当启动类自动扫描构造beanDefinition的时候,进行beanDefinition注册。

2023-04-24 14:10:47 431

原创 参考nacos配置中心机制,实现前后端业务长轮询功能

参考nacos配置中心,实现前后端长轮询功能

2023-04-23 13:50:31 394

原创 【nacos配置中心】源码部分解析

自定义读取配置,可以配置默认的 xxx.yaml启动时装载。

2023-04-18 23:53:06 414

原创 HopeHomi脚手架(四)redis、redisson模块

redis.yaml。

2023-04-17 18:12:47 322

原创 【八】springboot启动源码 - finishRefresh

从IOC获取LifecycleProcessor设置到applicationContext中,如果从IOC中获取不到会创建DefaultLifecycleProcessor并注册到IOC中。调用DefaultLifecycleProcessor的startBeans方法。调用DefaultLifecycleProcessor的onRefresh方法。执行WebServerStartStopLifecycle的start方法。

2023-04-14 11:51:02 243

原创 【九】springboot启动源码 - refreshContext结束后

钩子函数,默认实现为空。

2023-04-14 11:10:39 403

原创 【springboot】ApplicationListener用法及源码

当执行listener.onApplicationEvent时候,这里的Listener是通过适配器模式,创建的ApplicationListenerMethodAdapter对象。在这里判断event是否是被注册到IOC的Listener监听的对象,返回符合要求的Listener,这里匹配到两个,一个我们自定义,一个spring默认。内部字段有我们自定义的Listener的beanName,method为监听的自定义方法。event为传递事件。获取到监听事件控制器,执行事件处理。

2023-04-12 17:20:02 504

原创 【springboot】@Import的用法,与@ImportAutoConfiguration的区别

Import的value值,可以是配置类。

2023-03-24 14:22:46 536

原创 【一】springboot启动源码 - invokeBeanFactoryPostProcessors - (下)

这里用来回调BeanDefinitionRegistryPostProcessors实现类的postProcessBeanFactory方法(该方法属于postProcessBeanFactory接口)遍历所有配置类,并通过cglib进行动态代理, enhancer.enhance(configClass, this.beanClassLoader);创建完代理类,将代理类设置为当前配置类的beanDefinition的beanClass。通过配置环境变量,可以保留cglib创建类的class文件。

2023-03-24 00:06:23 124

原创 【七】springboot启动源码 - finishBeanFactoryInitialization

第252行,transformedBeanName(name),用于返回真实beanName,如果是beanName以&开头(表示factoryBean),去掉&并返回。preInstantiateSingletons方法,遍历beanDefinitionNames,通过mergedBeanDefinitions来获取每一个RootBeanDefinition,并判断他是否是factorybean,如果不是,调用getBean()方法。进入getMergedLocalBeanDefinition方法。

2023-03-23 23:08:26 257

原创 【六】springboot启动源码 - registerListeners

当SpringApplication开始调用run方法,在创建context之后的prepareContext方法中,会将SpringApplication的listeners设置到contextapplicationListeners中。补充说明一下,这里的listeners是基于spring SPI查询到的key为org.springframework.boot.SpringApplicationRunListener的实现类。获取到类名后,通过构造器对这些类进行实例化。

2023-03-23 00:29:09 149

原创 【五】springboot启动源码 - onRefresh

它是通过加载org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,装载ServetWeb的自动配置类ServletWebServerFactoryAutoConfiguration。但是在bdMap中,之前通过自动装配,已经添加了org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration。

2023-03-22 18:10:40 375

原创 【四】springboot启动源码 - initApplicationEventMulticaster

代码也很简单,注册ApplicationEventMulticaster的默认实现类SimpleApplicationEventMulticaster到IOC容器。

2023-03-21 13:44:50 64

原创 【三】springboot启动源码 - initMessageSource

如果IOC容器找不到messageSource的bean,那么会向IOC容器注册一个MessageSource的默认实现类DelegatingMessageSource。这个步骤的代码量比较少。

2023-03-21 13:41:15 59

原创 【二】springboot启动源码 - registerBeanPostProcessors

通过上一步方法invokeBeanFactoryPostProcessors的理解,对于registerBeanPostProcessors,依然是通过PriorityOrdered、Ordered等来注册BeanPostProcessor到beanPostProcessors,为了后面根据顺序执行

2023-03-21 11:27:26 68

原创 【一】springboot启动源码 - invokeBeanFactoryPostProcessors - (上)

SpringApplication在构造方法时,就会读取META-INF/spring.factories的类,缓存到SpringFactoriesLoader中(这是Spring的SPI),注意这里的缓存不仅仅只有org.springframework.boot.autoconfigure.EnableAutoConfiguration,包括文件中所有key-value。以上只是prepareEnvironment方法的第341行逻辑,341行之后,还会添加一些propertySource,省略过程。

2023-03-17 10:12:08 414

原创 HopeHomi脚手架(三)通过项目启动环境变量,动态加载logback配置文件

有很简单的实现思路,直接在不同环境的application.yaml内容指定,但是这有一个问题,每个微服务都需要写重复配置文件。这里需要设置环境变量,在Spring初始化之前。logback才能正确获取到配置文件。2. 在目录下创建logback配置文件。

2023-03-15 17:11:35 139

原创 HopeHomi脚手架(二)扩展@PropertySource,实现自定义yaml文件加载

PropertySource注解可以读取*.properties文件,但是不能读取yaml文件内容,所以需要扩展。

2023-03-15 17:07:26 58

原创 HopeHomi脚手架(一)Springboot启动及SPI加载

HopeHomi脚手架

2023-03-15 16:53:36 73

原创 Springboot + Mybatis-plus读写分离

读写分离

2023-01-10 09:56:48 263

原创 APISIX插件开发

APISIX插件开发

2022-09-09 18:43:03 2500 1

原创 APISIX部署

apisix

2022-06-09 18:36:57 574 1

原创 JSON映射字段。可映射成对象或数组

因为项目对接了jira,jira api查询的数据太复杂且没有固定格式,所以写了一个简单的映射// 原始数据{ "expand": "projects", "projects": [ { "self": "http://10.50.10.100:30089/rest/api/2/project/10003", "id": "10003", "key": "GO", "name"

2022-03-29 18:20:38 3137

原创 代码生成,动态编译,动态注入spring,动态创建接口

简单思路项目启动,外挂lib目录遍历lib目录下所有jar包,写入base.txtjava源文件生成,将生成的所有文件写入source.txt(被依赖类在前面)执行命令javac -encoding utf-8 @source.txt @base.txt注入spring、mvc、mybatisbase.txtE:\lib\alipay-easysdk-2.1.0.jar;E:\lib\alipay-sdk-java-3.7.110.ALL.jar;E:\lib\amqp-client-5

2021-11-12 11:31:45 1234 3

原创 springboot整合truelicense,添加项目许可证书,支持动态扩展

使用方法生成publicCerts.keystore### license生成证书命令,JDK自带keytool工具 #生成:在当前目录下,生成一个名为privateKeys.keystore的密钥库,同时指定密钥库密码为public_password1234,第一个条目为privateKey,指定条目密码为private_password1234keytool -genkeypair -keysize 1024 -validity 1 -alias "privateKey" -keystor

2021-10-29 17:51:50 1501

原创 RabbitMq基础及死信队列使用

交换机模式fanoutfanout类型的Exchange路由规则非常简单,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中。directdirect类型的Exchange路由规则也很简单,它会把消息路由到那些binding key与routing key完全匹配的Queue中。topic前面讲到direct类型的Exchange路由规则是完全匹配binding key与routing key,但这种严格的匹配方式在很多情况下不能满足实际业务需求。topic类型的Exch

2021-03-02 11:38:15 240

原创 海康威视web结合Vue+Java

技术点前端iView + webVideoCtrl.js(有改动)后台Java基本功能实时预览动态配置NVR参数,获取NVR下的所有摄像头(支持多nvr同时预览),提供窗口配置功能,记录当前窗口所对应的的摄像头,下次进入页面可以手动载入录像回看回放功能支持进度拖拽设备管理提供NVR设备管理功能其他由于涉及到业务方面,其余功能页面就不展示了,有兴趣做海康威视web开发的可以一起讨论...

2020-07-24 16:59:04 2597 10

原创 Linux apache-ftpserver搭建

准备官网下载http://mina.apache.org/ftpserver-project/downloads.html步骤解压tar包修改配置文件1:apache-ftpserver-1.1.0/res/conf/users.propertiesftpserver.user.admin.userpassword=adminftpserver.user.admin.homedirectory=./res/homeftpserver.user.admin.enableflag=tru

2020-07-08 09:45:08 560

原创 BladeX相关

项目基础技术springcloudspringse curity oauth2spring boot starter整体权限框架基于spring security oauth2认证服务器: blade-auth,配置类资源服务器:需要认证的模块项目网关过滤,AuthFilter执行路径拦截和放行,基于jjwt读取token中的信息系统模块登录界面1. 验证码获取h...

2020-07-06 15:17:05 9757 4

原创 Linux systemd jar配置

路径jar包:/usr/jrdee/jdk/attack.jar启动脚本:/usr/jrdee/jdk/test-start.jar停止脚本:/usr/jrdee/jdk/test-stop.jarjava环境路径:/usr/jrdee/jdk/jdk1.8.0_221配置test-start.sh#!/bin/shexport JAVA_HOME=/usr/jrdee/jdk/jdk1.8.0_221export PATH=$JAVA_HOME/bin:$PATHnohup java

2020-07-06 15:15:38 276

原创 mysql 5.7免安装

下载好后解压缩,新建my.ini文件[mysql]# 设置mysql客户端默认字符集default-character-set=utf8[mysqld]#设置3306端口port = 3306# 设置mysql的安装目录basedir=D:\mysql5.7# 设置mysql数据库的数据的存放目录datadir=D:\mysql5.7\data# 允许最大连接数max_...

2020-06-02 15:32:52 104

原创 web安全

Oauth csrfhttps://www.jianshu.com/p/c7c8f51713b6

2020-05-22 14:49:00 64

原创 事务

脏读(Dirty reads):一个事务A读取到了另一个事务B还没有提交的数据,并在此基础上进行操作。如果B事务rollback,那么A事务所读取到的数据就是不正确的,会带来问题。不可重复读(Non-repeatable reads):在同一事务范围内读取两次相同的数据,所返回的结果不同。比如事务B第一次读数据后,事务A更新数据并commit,那么事务B第二次读取的数据就与第一次是不一样的。...

2020-04-27 15:20:59 143

原创 谈谈NIO的优劣

BIO传统socket编程,服务端代码如下public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(8888); System.out.println("启动服务器...."); while(true){ ...

2020-03-11 10:53:41 696

原创 单点登录keycloak整合LDAP(apacheDS)

apacheDS安装apacheDS服务器:Apacheds:http://directory.apache.org/apacheds/Apacheds directory studio:Apache Directory Studio 是一个 LDAP 的工具平台,用来连接到任何 LDAP 服务器并进行管理和开发工作。Apacheds directory studio:http://d...

2020-01-14 15:57:15 5443 2

原创 windows部署filebeat+logstash+ES

ESelasticsearch-6.5.3\plugins,放入analysis-ik中文分词插件运行bin/elasticsearch.bat,端口9200部署es head插件,端口9100logstashlogstash-6.5.3\config,新建conf文件myconfig.confinput { beats{ port => "5044" ...

2019-12-06 17:59:19 838

空空如也

空空如也

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

TA关注的人

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