0

撸个Spring Boot中的starter,解密自动化配置

starter背景Spring Boot目前已经变成了后端开发者必备技能之一,其中一个主要原因是Spring Boot中有个非常重要的机制(starter机制)。starter能够抛弃以前繁杂的配置,将其统一集成进starter,使用的时候只需要在maven中引入对应的starter依赖即可,Spring Boot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,以及各种配置信息的烦恼。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。Spring Boot提供了针对日常企业应用研发各种场景的spring...

阅读全文>>

0

Spring Boot搭建 ELK,这才是正确看日志的方式

在看大型网站的中间件技术,对于Elasticsearch有点兴趣,所以将配置流程记录了一下。为什么要用ELK“ELK实际上是三个工具,Elastricsearch + LogStash + Kibana,通过ELK,用来收集日志还有进行日志分析,最后通过可视化UI进行展示。一开始业务量比较小的时候,通过简单的SLF4J+Logger在服务器打印日志,通过grep进行简单查询,但是随着业务量增加,数据量也会不断增加,所以使用ELK可以进行大数量的日志收集和分析”简单画了一下架构图在环境配置中,主要介绍Mac和linux配置,windows系统大致相同,当然,前提是大家都安装了JDK1.8及以上版...

阅读全文>>

0

使用Debezium、Postgres和Kafka进行数据实时采集(CDC)

1. 背景一直在完善自己的微服务架构,其中包含分布式工作流服务的建设,目前采用的是Camunda工作流引擎。使用Camunda工作流,就会涉及到工作流引擎的用户体系如何与现有用户体系集成的问题(Flowable、Activity也类似)。现有设计中,工作流定位偏重于企业内部流程的流转,因此系统中设计了单位、部门、人员以及人事归属与Camunda工作流用户体系对应。功能设计完成,就面临另外一个问题,如何解决现有人事体系数据如何【`实时`】同步至Camunda工作流引擎中。如果现有体系数据与工作流数据在同一个库中,相对比较好解决。而微服务架构中,不同服务的数据通常存放在不同数据库中,那么就需要进行...

阅读全文>>

0

MyBatisPlus集成

1-5 MyBatisPlus集成  接下来我们完成一个品牌的CRUD操作、我们会集成MyBatisPlus来实现。1、MyBatis Plus介绍  MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis Plus特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条...

阅读全文>>

0

为第三方HTTP协议依赖增加Hystrix保护你的系统

为第三方HTTP协议依赖增加Hystrix保护你的系统前言后端开发的很多同学应该都有过调用第三方HTTP协议服务的经验。比如调用百度查询经纬度编码信息、调用豆瓣查询时下热门电影、调用7牛云存储接口上传文件等;以及公司内部其他小组开放的服务接口。常见开发模式是我们按照服务提供方定义的接口文档进行接口调用开发。在java中常见的HTTP客户端库有:java中常见的HTTP客户端库你的第三方依赖挂了怎么办?系统并发很高的情况下,我们依赖的第三方服务挂了,调用HTTP协议接口超时线程阻塞一直得不到释放,系统的线程资源很快被耗尽,导致整个系统不可用。试想一下如果业务系统中我们依赖的第三方服务只是一个增强...

阅读全文>>

1

基于netty的构建一个群聊系统

要求1.群聊系统可以实现服务器端和客户端之间的数据简单通讯(非阻塞)2.通过系统可以实现多人群聊3.服务器端:可以监控用户上线,离线,并实现消息转发功能4.客户端:通过channel可以无阻塞发送消息给其它所有用户,同时可以接受到其它用户发送的消息(由服务端转发得到)代码实现(服务端) import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.*; import java.util.Iterator; pub...

阅读全文>>

1

Spring Boot 极简集成 Shiro

1. 前言Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理。Shiro有三大核心组件:Subject:即当前用户,在权限管理的应用程序里往往需要知道谁能够操作什么,谁拥有操作该程序的权利,shiro中则需要通过Subject来提供基础的当前用户信息,Subject 不仅仅代表某个用户,与当前应用交互的任何东西都是Subject,如网络爬虫等。所有的Subject都要绑定到SecurityManager上,与Subject的交互实际上是被转换为与SecurityManager的交互。SecurityManager:即所有Subject的管理者...

阅读全文>>

4

MiniDao1.7.1 版本发布,轻量级Java持久化框架

项目介绍MiniDao 是一款轻量级JAVA持久层框架,基于 SpringJdbc + Freemarker 实现,具备Mybatis一样的SQL分离和逻辑标签能力。Minidao产生的初衷是为了解决Hibernate项目,在复杂SQL具备Mybatis一样的灵活能力,同时支持事务同步。当前版本:v1.7.1 | 2021-03-29源码下载https://github.com/zhangdaiscott/MiniDaohttps://gitee.com/jeecg/minidao升级日志升级spring版本到5.2.10.RELEASE升级freemarker版本到2.3.30提供代码生成器...

阅读全文>>

2

ConcurrentSkipListMap原理

跳表为了引出 ConcurrentSkipListMap,先带着大家简单理解一下跳表。对于一个单链表,即使链表是有序的,如果我们想要在其中查找某个数据,也只能从头到尾遍历链表,这样效率自然就会很低。跳表就不一样了。跳表是一种可以用来快速查找的数据结构,有点类似于平衡树。它们都可以对元素进行快速的查找。但一个重要的区别是:对平衡树的插入和删除往往很可能导致平衡树进行一次全局的调整。而对跳表的插入和删除只需要对整个数据结构的局部进行操作即可。这样带来的好处是:在高并发的情况下,你会需要一个全局锁来保证整个平衡树的线程安全。而对于跳表,你只需要部分锁即可。这样,在高并发环境下,你就可以拥有更好的性能...

阅读全文>>

1

ruoyi前后端分离框架增加只通过用户名认证获取token

背景:最近选型使用ruoyi的前后端分离框架进行研发,除了管理系统部分还有小程序部分功能,需要提供api给小程序部分,而小程序使用openid关联用户名,这样希望提供只根据用户名能够获取token进行后续后台服务接口的访问需求,具体改造如下:增加5个关键类和一个测试类 修改一个config类,具体如下:拦截特殊验证的拦截器类package com.ruoyi.framework.config.q; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Http...

阅读全文>>