
springboot
文章平均质量分 93
springboot
阿啄debugIT
0、精通java,及常用设计模式,熟练编写shell脚本,掌握python、scala、golang的编写;
1、精通Spring Cloud等微服务架构,掌握SpringBoot、batis等后端技术,kafka、redis、es等中间件的整合开发;
2、熟悉掌握mysql、pg等关系数据的原理及调优,及NoSQL数据的存储和查询;
3、熟悉CDH各个组件,及精通离线、实时等计算技术;
4、掌握java多线程高并发编程,及整合shiro、redis、fastdfs、MQ、netty等开发;
5、熟悉K8S集群管理Docker容器,及理解掌握openstack原理和操作。
展开
-
理解springboot那些注册与回调、监控与统计等命名规范,就可以读懂70%的springboot源代码
再理解springboot那些注册与回调、监控与统计等命名规范,就可以读懂70%的springboot源代码,Spring Boot是Spring提供的一个快速开发工具包,让程序员能更方便、更快速的开发Spring+Spring MVC应用,简化了配置(约定了默认配置),整合了一系列的解决方案(starter机制)、redis、mongodb、es,可以开箱即用。原创 2023-10-25 00:56:06 · 361 阅读 · 0 评论 -
理解springboot那些约定俗成的框架类名、全局context等命名规范,就可以读懂一半springboot的源代码
理解了springboot那些约定俗成的Java类命名规范,就很容易读懂springboot的源代码,熟悉了大致的spring框架类命名,及spring全局上下文的命名规律和含义,那我们再次去看spring源码,不就游刃有余……可能,还需要掌握spring注册与回调,spring监控与统计,spring解析与处理,spring工具或异步……才能出神入化,下偏见!原创 2023-10-24 02:07:33 · 522 阅读 · 0 评论 -
Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配
Spring Boot 自动装配定义原创 2021-09-02 16:17:27 · 507 阅读 · 0 评论 -
Spring @Enable模块装配的注解及编程实现方式,及包括“注解方式”,“编程方式”的自定义模块装配方式
Spring @Enable模块装配原创 2021-07-28 21:09:14 · 529 阅读 · 0 评论 -
Spring框架开发底层的@Component 通用组件模式、@Service 服务模式、@Configuration 配置模式等注解装配技术详解
Spring模式注解装配(Stereotype Annotations)模式注解定义一种用于声明在应用中扮演“组件”角色的注解。常用模式注解整理如 Spring 中的 @Repository 是用于扮演仓储角色的模式注解,用来管理和存储某种领域对象。还有如@Component 是通用组件模式、@Service 是服务模式、@Configuration 是配置模式等。Spring注解 场景说明 起始版本 @Componnt 通用组件模式注解 2.5原创 2021-07-24 22:22:26 · 1774 阅读 · 7 评论 -
springboot的服务端Restful风格 API接口,在不同场景下,设置不同的请求及传参方式的设计,及其他异常场景解决方案
@RequestMapping(value = "/get/{id}/{userId}", method = RequestMethod.GET) public Result getMemberShip(@PathVariable("id") int id,@PathVariable("userId") int userId) {假如id为非必需参数//可以指定多个匹配路径@RequestMapping(value = {"/get/{userId}", "/get/{id}/{us.原创 2021-07-17 12:21:25 · 979 阅读 · 3 评论 -
详细比较StringRedisTemplate和RedisTemplate的区别及使用方法,及解决融合使用方法
前言感觉StringRedisTemplate和RedisTemplate非常的相识,到底有什么区别和联系呢?点开idea,打开其依赖关系,可以看出只需使用maven依赖包spring-boot-starter-data-redis,然后在service中注入StringRedisTemplate或者RedisTemplate即可使用。从下图StringRedisTemplate继承了RedisTemplate,所以两者对Redis的操作方法具有相同之处实验软件:RedisDesktopMa原创 2021-03-09 18:50:52 · 10455 阅读 · 0 评论 -
debug古老的Spring的XML配置代码,来看spring现在spring注解代码,及springaop、Advisor、Pointcut、Advice 和 Aspect之间的关系
前言Spring家族发展越来越大,估计10年内,还有很多人可以靠spring吃饭,spring之所以这么强大,集成IOC 容器和 AOP ,及Spring AOP依赖于 IOC 容器来管理,强大的向后兼容性。本博客通过该git进行debug,尝试梳理spring的IOC 容器和 AOP ,https://gitee.com/cosmosLearn/spring-aop-learning.gitAOP 术语Advice、Advisor、Pointcut、Aspect、Joinpoint 等..原创 2020-12-07 23:14:16 · 695 阅读 · 0 评论 -
spring中JAVA配置和注解配置能否全面代替XML配置?
前言Spring Boot是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。spring Boot采用约定大约配置的方式,大量的减少了配置文件的使用,而大量采用JAVA配置和注解配置。是否有了注解配置,我们就可以完全摒除原来 XML 配置的方式呢?注解配置不一定在先天上优于 XML 配置。如果 Bean 的依赖关系是固定的,(如 Service 使用了哪几个 D原创 2020-12-06 20:56:09 · 855 阅读 · 0 评论 -
使用Java层面的工具定位问题及使用系统层面的工具定位堆外内存,排查Spring Boot引起的“堆外内存泄漏”的经验总结
背景为了更好地实现对项目的管理,我们将组内一个项目,迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是-XX:MetaspaceSize=256M-XX:MaxMetaspaceSize=256M-XX:+AlwaysPreTouch-XX:ReservedCodeCacheSize=128m-XX:InitialCod原创 2020-10-04 23:01:44 · 283 阅读 · 0 评论 -
Spring Cloud Contract 提供验证服务(Verifier)和对契约内容Mock服务(Stub Runner),进行契约测试
一、简介Spring Cloud Contract就是基于消费者驱动契约(Consumer-driven contracts,简称CDC)的测试工具。消费者驱动契约,是指从消费者业务实现的角度出发,驱动出契约,再基于契约,对提供者验证的一种测试方式。二、准备工作1、springboot 项目加入相关依赖 <dependency> <group...原创 2019-12-25 15:36:44 · 396 阅读 · 0 评论 -
spring boot配置pom及assembly分离lib和resources及执行jar一起整合到tar.gz包,便于部署,及修改配置资源
前言由于项目中,要求配置太多,又涉及Java调用python等,要根据实际生产环境进行配置,不能像以前直接打个可执行jar完事,故考虑配置pom及assembly分离lib和resources及执行jar,便于部署,及修改配置资源。网上有很多参考资料,鱼龙混杂,反复配置修改,最终成功!工作目录修改pom.xml在pom.xml中,修改build配置项,根据自己的项目实际情况,进行适当修改!<build> <plugins> <plugin&原创 2020-05-31 14:06:18 · 1653 阅读 · 4 评论 -
baomidou.mybatisplus对查询结果进行分页
在springboot中,要使用baomidou.mybatisplus对查询结果进行分页的逻辑过程maven依赖<!--mybatis--><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</a...原创 2020-02-27 17:30:07 · 6383 阅读 · 1 评论 -
自定义ResponseResult在controller响应信息主体和自定义全局及局部异常中的实现
前言:在controller及hanlder的消息返回给客户端的json对象信息,一般是自定义的,输出格式是json格式!自定义详细编号HttpEnum/** * <b><code>HttpEnum</code></b> * <p> * Description * </p> * <b>Cre...原创 2020-02-27 16:20:51 · 4409 阅读 · 8 评论 -
webSocket与redis结合,和客户端交互及统计在线人数的实现
前提实现对客户端的在线统计,及与客户端的交互和接受redis的消息设置spring上下文import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.Applicatio...原创 2020-02-27 15:20:52 · 1745 阅读 · 6 评论 -
在springboot引入redis及redis的工具类的运用
1、在maven中,添加依赖<!--reids--><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.3</version></dependency&g...原创 2020-02-27 10:58:41 · 1026 阅读 · 2 评论 -
用自定义Key生成策略解决SpringBoot 启用了ehcache缓存后不能正确的返回数据的问题
前言今天在项目启用了ehcache缓存,但是某些方法使用缓存后不能正确的返回数据,抛出了类型转换异常,找了一番资料后发现是缓存的key生成策略问题,在此将此问题及解决办法记录一下。spring cache缓存的keyspring cache缓存的key默认是通过KeyGenerator生成的,其默认生成策略如下: 如果方法没有参数,则使用0作为key。 如果只有一个...原创 2020-02-21 00:12:56 · 750 阅读 · 0 评论 -
编写Dockerfile打包镜像需要注意的地方
1、使用官方仓库认证过的基础镜像在打包镜像时候,使用的基础镜像,不要随便使用一个私人仓库的镜像。尽量使用官方仓库认证过的基础镜像,不然在打包自己项目镜像时候,很难打包成功。2、写上jdk中java二进制的绝对路径构建有java环境变量的镜像,在使用命令 java -jar XXXX.jar 运行某一个jar包时,若报错找不到java的二进制文件,可以尝试将写上jdk中java二进制...原创 2020-02-17 01:24:16 · 775 阅读 · 0 评论 -
springboot后端实现防御xSRF攻击的策略,及session token防御机制代码分析
前言csrf/xsrf(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。攻击者将会盗用你的身份,以你的名义发送恶意请求产生csrf攻击需要有两个步骤登陆受信网站A,并且在本地生产对应的cookie 在不登出A的情况下,访问危险网站Bcsrf攻击是源...原创 2020-02-10 22:03:37 · 755 阅读 · 0 评论 -
springboot嵌入DFA算法对敏感词进行过滤,由测试版,过度到镶嵌版的过程
前言一个算法的诞生,是先在测试版,进行反复测试,再过度到项目的镶嵌使用,每一步都蕴含着技术和挑战!对于DFA算法对敏感词进行过滤,先进行测试版测试,然后镶嵌项目中进行实现!测试版代码目录镶嵌版代码目录算法的讲解由于Lucene本身作为本地索引,敏感词增加后需要触发更新索引,并且这里本着轻量原则不想引入更多的库,所以放弃Lucene,选定DFA算法来进行敏感词过滤。核...原创 2020-02-10 12:16:42 · 1031 阅读 · 1 评论 -
利用mybatisPlus生成crud代码,解决常用的crud重复工作
前提开发目的:解决常用的代码crud重复工作。采取方案:利用mybatisPlus生成crud代码(包含controller,service,serviceImpl,mapper,mapperxml代码)。采用技术:springboot2.1.1+mybatisPlus3.0.6+swagger2.5.0+Lombok1.18.4+postgresql等。具体细节:第一步:首先...原创 2020-02-03 05:08:03 · 2952 阅读 · 1 评论 -
SpringBoot + Ehcache之自定义Key生成策略
问题在项目启用了ehcache缓存,但是某些方法使用缓存后不能正确的返回数据,抛出了类型转换异常,找了一番资料后发现是缓存的key生成策略问题,在此将此问题及解决办法记录一下。spring cache缓存的key默认策略spring cache缓存的key默认是通过KeyGenerator生成的,其默认生成策略如下:如果方法没有参数,则使用0作为key。 如果只有一个参数的话则使...原创 2020-02-03 04:50:28 · 1143 阅读 · 0 评论 -
SpringBoot2.1.1整合Kafka实现消息生产和消息消费
采用技术springboot2.1.1+mybatisPlus3.0.6+swagger2.5.0+Lombok1.18.4+postgresql+maven等,利用Kafka实现消息生产和消息消费(定时产生消息,通过consumer消费并写入到pg数据库)。搭建kafka服务器1.配置好jdk环境2.下载并解压zookeeper到指定目录,找到解压后目录中conf文件夹中zoo_sam...原创 2020-02-03 04:39:25 · 2941 阅读 · 0 评论 -
Springboot整合ActiveMQ消息中间件,消除高并发访问高峰,加快网站的响应速度
消息中间件的比较消息中间件的选择有很多,如 RabbitMQ (可参考博客:Spring Boot使用 RabbitMQ),zeromq等,他们之间的差异如下图,实际中应该根据自己的业务需求选择合适的消息中间件: ActiveMQ RabbitMQ RocketMq ZeroMQ 关注度 高 高 中 中 成熟度 成熟...原创 2020-01-22 13:27:43 · 4755 阅读 · 0 评论 -
docker下部署java-web项目(基于springboot)
当前docker技术很受欢迎,对于快速部署来说 docker比起传统部署方式 有绝对的优势。作为一个java 后端开发人员docker技术是必不可少的需要掌握的技能。该blog主要简单介绍一下如何使用docker部署springboot项目。(linux环境:centos6.5,jkd1.8)一、前提条件:1.可以运行jar包的环境(springboot项目推荐jdk1.8以上)...原创 2019-12-26 00:38:22 · 964 阅读 · 0 评论 -
springboot利用ThreadPoolTaskExecutor多线程批量插入百万级数据
开发目的:提高百万级数据插入效率。采取方案:利用ThreadPoolTaskExecutor多线程批量插入。采用技术:springboot2.1.1+mybatisPlus3.0.6+swagger2.5.0+Lombok1.18.4+postgresql+ThreadPoolTaskExecutor等。具体细节:第一步:application-dev.properties添加...原创 2019-12-25 12:22:52 · 26889 阅读 · 46 评论 -
springboot在MyBatis中使用Postgres生成随机数作为ID的多种方法
首先回答一个问题,如果把ID随机生成的方式放在后端代码里,是否更方便?不过我这里考虑一个需求场景,假设我需要准备一个配置表的数据有很多,另外还需要配置一个中间表用于关联两个配置表的关系。如果配置表的主键是在后端生成的,那我不得不做一个导入数据的功能把配置表导入进去,涉及的前后端工作也会不少。但如果是通过随机数生成,那我只需要插入其他值,主键ID由其默认值的函数生成就可以了。方案一...原创 2019-12-21 11:22:02 · 1173 阅读 · 0 评论 -
springboot 集成 jwt实现api的token认证机制
JWT原理JWT是Auth0提出的通过对JSON进行加密签名来实现授权验证的方案,编码之后的JWT看起来是这样的一串字符:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4...原创 2019-11-28 11:00:41 · 1729 阅读 · 3 评论 -
Spring Boot使用 RabbitMQ基本用法与高级用法
RabbitMQ 介绍AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ 是一个开源的 AMQP 实现,服务...原创 2019-11-27 16:37:44 · 590 阅读 · 0 评论