自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(196)
  • 资源 (1)
  • 收藏
  • 关注

原创 XXL-Job动态添加任务

前言最近项目中涉及到了定时任务相关需求,最终选择了分布式任务调度框架xxl-job,由于我们在使用xxl-job。这里对xxl-job 一些使用做一下简单介绍。实践xxl-job 主要分为一个展示web的独立服务,另外一个是我们项目引入xxl-job依赖,对定时任务做监听。这里不对xxl-job 部署独立服务做介绍,主要介绍如何引入xxl-job依赖进行创建定时任务。一、配置yml# 定时任务中心配置信息job: server: enabled: true # 校验令牌,和

2021-06-22 10:49:42 11411 4

原创 AOP源码解析

前言我之前在看源码都是局限于其中一步、两步没有一个整体观,我们在看源码的时候如果能在一个整体观去看,很多时候有些内容就豁然开朗了。介绍我们先看一下,整改spring容器启动这个流程,其中AOP 就在 初始化Bean后面由BeanPostProccessor 进行后置处理将Bean替换为AOP的代理类进行操作。如果我们认识到这一点那么我们就有两个需要重点关注:第一个是关于BeanPostProccessor 实现类对容器的注入。第二个是BeanPostProccessor 的实现类对Bean本身代

2021-06-17 14:56:01 1101 1

原创 spring源码框架解析

前言我们很多时候在阅读源码之前对源码的大体结构没有一个认识,导致在看源码的时候迷失在各个代码的细节里。这篇文章试着介绍一下spring源码的大体框架。让我们能在框架里面进一步认识spring源码。介绍IOC 和AOP 的关系说起spring源码我们都会想到AOP 和IOC ,IOC 实际上就是spring 构造一个容器,将各个bean 对象初始化到这个容器的过程。AOP 是IOC的构建容器中bean的一小步,这里主要介绍关于IOC构建容器和bean 中的过程。实例化和初始化在开始这个IOC 构

2021-06-10 15:36:12 427

原创 Api 接口统计工具类

前言我们遇到公司让统计接口,一个项目中接口很多不能真的一个一个统计吧,为了提高统计效率。写一个统计工具类。实践一、添加maven依赖 <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.9.11</version&

2021-05-11 18:29:07 1025 1

原创 视频截取第一帧

前言网上视频截取第一帧的案例还是比较多的,普遍的方法主要是使用ffmpeg 对其截取。在实践过程中,发现window 截取成功。但linux 环境中截取失败,对于失败原因这里将失败内容贴出来,供他人查看失败原因## A fatal error has been detected by the Java Runtime Environment:## SIGSEGV (0xb) at pc=0x000000000000d1f6, pid=14, tid=0x00007fe8b67e6b10##

2021-04-29 15:55:14 1055

原创 SpringBoot + Flowable的使用

前言我们在项目中需要使用到Flowable,鉴于之前对流程引擎并不是很了解,这里准备写一篇作为入门文章。实践这次例子是基于springboot + Flowable ,springboot 的版本是2.3.4.RELEASE,Flowable 的版本为6.3.01、依赖<!--flowable工作流依赖--> <dependency> <groupId>org.flowable</groupId>

2021-04-28 10:57:01 10788 2

原创 mybatis-plus 分页最大 500条问题解决(自定义查询条数)

前言在用mybatisplus分页查询时,设置了limit为10000,查询的总记录有2255条,但是查询出来的结果只有500条数据。实践一、问题原因我们可以在查询的时候当每页的数量大于默认限制数量的时候,PaginationInterceptor 会将这个拦截限制500 条。我们可以看到 pageSize 为0 或者 page 为null的时候,将不会添加分页参数。 if (null == page || page.getSize() < 0) { retur

2021-04-14 11:28:35 9960

原创 postgres 通过zhparser实现全文搜索功能

前言我们在工作中遇到一个字段存储jsonb 类型,并需要对这个字段进行全文索引。由于对postgres 一些字段类型不清楚,走了一些弯路这里讲解。实践一、postgres 和 zhparser 的安装前面两步postgres 的安装网上挺多资料,可以省略。zhparser 的安装网上资料比较杂乱,后续做一下补充。二、全文索引的实践2、1 jsonb 类型(1)表结构的初始化,插入初始化数据create table test2( id int, doc jsonb);--针对

2021-04-12 14:46:33 785

原创 数据库设计文档-快速输出字段

前言我们在写数据库文档时候,经常需要需要将表结构通过图标方式展示出来,每次定义了表结构、域字段如何快速将表结构贴出来。postgres1、需要展示表的字段SELECT a.attname AS 字段名称, d.description AS 说明, concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '\(.*\)')) as 字段类型, (case when a.attlen > 0 th

2021-03-22 13:55:07 482

原创 Sharding-JDBC+ Mybatis-Plus 实现分库分表

前言Sharding-jdbc是开源的数据库操作中间件;这篇文章主要通过Sharding-JDBC 和mybatis-plus 需要的配置文件和maven依赖。实践一、添加maven依赖。<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s

2021-03-14 22:17:27 1130

原创 Sharding-JDBC+ Mybatis-Plus 实现读写分离

前言Sharding-jdbc是开源的数据库操作中间件;这篇文章主要通过Sharding-JDBC 和mybatis-plus 需要的配置文件和maven依赖。实践一、添加maven依赖。<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s

2021-03-07 19:05:11 1341 1

原创 lambdaQueryWrapper多条件嵌套查询

前言我们在使用mybatisPlus 查询数据的时候,有时候可能会没法想直接使用mybatisPlus 的java语句进行查询。这里贴出一个例子供查询参考。实践queryWrapper.and(wq -> { if(!CollectionUtils.isEmpty(orgList)){ wq.or(wq0 -> wq0.in(PatrolPlan::getOrgId, orgList)); wq.or(

2021-03-05 16:12:45 14480 3

原创 go语言的快速入门

前言我们在学习go语言的时候,只知道go语言有点火,想快速了解一下go语言写一个hello word。这里简单介绍一下,我们怎么快速在编辑器上面写一个hello word。实践Windows上安装Go语言开发包一、下载安装大家可以在Go语言官网(https://golang.google.cn/dl/)下载 Windows 系统下的Go语言开发包,如下图所示。后面的内容就是点击msi文件下一步,下一步直到完成。二、配置环境变量在安装go语言开发包的时候,会默认创建GOPATH 这个环境变量

2021-02-21 23:55:11 316

原创 spring-security 实现单点登录

前言一、maven依赖二、application.yml 配置三、security 的配置对应文件四、对校验提供provider五、权限验证具体实现类六、token、用户具体实现类七、需要handler(成功、失败、禁止)类八、自定义异常类九、支撑vo十、工具类现在基本每个系统都有单点登录,基本稍微大一点公司都有自己搭建一套单点登录系统,其他所有项目直接接入。但有时候独立项目,需要自己实现一套登录系统,如果网上很多时候的代码很难拿来即用,每次自己全新构造一个又过于麻烦。我这里尝试弄一套登录系统,我们后续再

2021-02-16 16:08:37 4547 1

原创 工具类中引用Spring IOC容器对象的处理方案

前言我们在工具类中引入spring ioc容器中,在static 方法中使用需要使用。放在该ioc容器上面报Non-static field ‘jedisCluster’ cannot be referenced from a static context 这种错误。这个是因为spring 初始化容器的速度,可能会慢于工具类报错的速度导致该方法调用失败。实践我们遇到这种问题,一般会有两种方案。第一个是将该对象作为方法调用传参使用。特别是当该工具类的使用普遍、方法比较多的情况显得很麻烦。第二种、通过调用

2021-02-13 14:40:51 681

原创 父线程变量需要传递到子线程使用一种方式InheritableThreadLocal和TransmittableThreadLocal

前言ThreadLocal是相对于每一个线程自己使用的本地变量,有这样的一种需求:父线程生成的变量需要传递到子线程中进行使用。需要使用新的InheritableThreadLocal类来实现,但InheritableThreadLocal的使用利用Thread 的初始化。我们经常在使用线程的时候,都是使用线程池的方式这个时候就需要TransmittableThreadLocal登场来解决。实践一、InheritableThreadLocal使用public class LocalThreadUti

2021-02-10 22:56:17 686 1

原创 SpringBoot整合WebSocket实现前后端互推消息(服务器能能够引用spring IOC对象)

前言我们在项目中可能会遇到这样的场景,平台接收到的信息实时发布给所有的用户,其实就是后端主动向前端广播消息。这样的场景可以让前端轮询实现,但是要达到接近实时获取信息的效果就需要前端短周期的轮询,HTTP请求包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源,周期越短服务器压力越大,如果用户量太大的话就杯具了。所以小编就想到了WebSocket和长轮询都是比较合适实现方式。这里将webSocket进行代码演示。实践一、引入maven依赖 <!-- h

2021-01-17 23:41:08 445

原创 PostgreSql 数据库的使用

前言PostgreSql 开始使用之后,有一些语法和mysql有一些差别,这里希望做一些记录来供大家参考。PostgreSql 的使用一、创建表CREATE TABLE "public"."event_log" ( "id" int8 NOT NULL, "source_id" int8, "creater_id" int8, "source_model" varchar(64) COLLATE "pg_catalog"."default", "event_type" varch

2021-01-12 21:09:37 556 1

原创 easyexcel 自定义导出格式

前言easyexcel 由于其比poi更为简单api和更高性能的情况下,easyexcel 但格式下载不符合要求。比如下载格式设置自定义下拉框,对字体进行设置,对部分列进行隐藏的个性化需求。实践一、引入maven依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>

2021-01-11 15:02:48 5857 3

原创 创建一个代码生成工具

前言我们在很多一些项目中主要涉及到一些针对表的增删改查的项目,如何简化针对项目进行减少重复工作的开发很有必要。谷歌为我们提供了一套代码生成jar包。这里通过mysql来进行示范。实践先看一下整个项目的目录结构1、引入需要进行代码生成的jar,这里由于我们通过mysql来进行示范,所以需要引入mysql-connector-java 包,如果是其他数据库根据数据库种类来进行切换。 <properties> <java.version>1.8</j

2021-01-09 00:12:00 380

原创 树形结构表设计的思考

前言我们在实际设计树形表设计中,经常会遇到上级名称拼接下级名称共同构成一个完整的名称这种情况。知道下级id,获取从上级开始到该id的完整链路。这个需要我们去思考这种树形结构如何去设计。如果设计比较好的情况下能够减少,查询数据库的次数和从数据库中抓取的数据量。表的设计我们这里用行政空间的表设计来进行举例DROP TABLE IF EXISTS `sys_region`;CREATE TABLE `sys_region` ( `id` bigint(20) NOT NULL DEFAULT '0

2020-12-31 15:37:38 234

原创 MybatisPlus的使用

MybatisPlus项目使用前言实例前言Mybatis-Plus是一个Mybatis的增强工具,它在Mybatis的基础上做了增强,却不做改变。我们在使用Mybatis-Plus之后既可以使用Mybatis-Plus的特有功能,又能够正常使用Mybatis的原生功能。我们在项目使用mybatisplus能够减少比较大的工作量。实例一、引入maven依赖 <dependency> <groupId>org.springframework.boot&l

2020-12-28 19:38:57 297

原创 fiddler抓包教程

前言fiddler 是目前非常常用抓包工具,了解和使用fiddler 进行抓包实践,是在开发过程经常使用到的开发工具。教程一、fiddler的下载fiddler下载链接:https://www.telerik.com/download/fiddler/fiddler4这个fiddler的下载需要翻墙故在这里提供一份百度网盘的分享链接。https://pan.baidu.com/s/1GGW2XQIPDlsRd-gvcbfxvg提取码:519a二、fiddler的使用安装完成将Fiddler

2020-12-23 00:31:40 13570 2

原创 枚举最佳实践

前言我们在原来是使用枚举的时候,前后约定一个固定编码状态,如果后续状态码发生改变,前后端都会去改动。我们在想是否能通过一种方式,就交由后端维护一条编码减少维护难度。实践我们主要是想通过一个接口的方式将所有我们需要告知前端枚举全部返回,这篇博客主要是通过这种方案将这种方式将这个数据能够简单返回。1、这里先贴出需要返回对象@Data@AllArgsConstructorpublic class EnumResponse { /** * 枚举id(可以使字符串类型,也有可能是数值类

2020-12-06 13:01:19 479

原创 Vue入门(四)LocalStorage的使用

前言这个系列是vue入门系列,在讲解的时候主要以例子,展示一些vue内容的基本用法。在vue项目中使用LocalStorage 的场景非常多,这里用一个小例子展示LocalStorage的使用。案例一、LocalStorage 的作用对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionStoragesessionStorage(临时存储) :为每一个数据源维持一个存储区域,在浏览器打开期间存在

2020-11-27 21:08:59 5645

原创 问题定位切面和日志上打印请求唯一log标识

前言这篇博客主要是针对我们前期部分接口不稳定和有部分接口需要大量业务沟通接口,针对请求参数和返回参数进行打印。部分接口调用逻辑链过长,不易分析添加同一个请求的参数添加唯一标识,防止并发比较大情况,找不到同一请求接口的上下文信息。日志打印1、构建一个注解用于放置在需要打印接口上面@Documented@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Inheritedpublic @interface LogAnnot

2020-11-25 23:54:23 549

原创 Vue入门(三)之脚手架环境准备和安装

前言前面两篇文章以vue一些语法进行一些演示,但我们实际开发中还是基于Vue-cli脚手架创建。这篇文章主要以脚手架在使用需要用到的一些软件的安装,和脚手架的的搭建进行介绍。环境准备一、Node.js 的安装1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/2、选安装目录进行安装默认即可安装完成检查PATH环境变量是否设置了node.js的路径。3、测试在命令提示符下输入命令node ‐v二、NPM 的安装1、自动安装NPMn

2020-11-15 18:03:04 853

原创 Vue入门(二)之组件介绍

前言前端web开发最流行的工具库之一,但之前有过学习之后。一直没有怎么使用,很多东西已经忘记,这里对之前学过一点内容做一下回顾,也可当做入门小案例。上一篇文章主要介绍vue一些常用事件、生命周期的介绍,这一篇主要围绕组件来进行介绍。案例一、全局组件全局组件申明之后,就可以直接使用,无需在components中引入组件内容。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"&g

2020-11-15 10:35:40 173

原创 Vue入门(一)之常用事件、生命周期

前言前端web开发最流行的工具库之一,但之前有过学习之后。一直没有怎么使用,很多东西已经忘记,这里对之前学过一点内容做一下回顾,也可当做入门小案例。案例一、入门小demo<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0

2020-11-08 10:34:42 409

原创 HBase单机安装(加Hadoop单机安装教程)

准备hadoop下载地址http://archive.apache.org/dist/hadoop/common/hbase下载地址http://archive.apache.org/dist/hbase/需要注意hbase和hadoop的版本兼容问题,具体可参考https://blog.csdn.net/renzhewudi77/article/details/83826779注意一个非常重要的点,即使是单节点,也是需要配置SSH密钥才能保证hadoop正常启动。jdk 需要提前安装,这里不

2020-10-07 22:24:20 541

原创 Spring Cloud Alibaba 入门实践

前言SpringCloudAlibaba实际上对我们的SpringCloud2.x和1.x实现拓展组件功能,相当于对SpringCloud 一代中的一些组件做了一些替代和补充。SpringCloud一代SpringCloudAlibaba注册中心Eurekanacos消息中间件默认三方rabbitmqRocketMq分布式事务解决方案第三方替代方案:2pcSeata分布式配置中心SpringCloudConfignacos熔断降级Hystr

2020-10-07 00:39:29 494 2

原创 ElasticSearch 使用java代码 查询

准备(一)加maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <dependency>

2020-10-04 15:03:13 1664

原创 ElasticSearch 使用java代码,实现批量新增、修改、构建索引 Api操作

前言ElasticSearch 这里的测试是使用,借助elasticsearch-head 插件和 Elasticsearch IK分词器插件。如果测试可以参考 https://blog.csdn.net/fajing_feiyue/article/details/108901751 来进行安装测试。API 操作样例(一) 添加maven依赖 <dependency> <groupId>org.springframework.boot</gro

2020-10-03 18:31:05 3738 1

原创 Elasticsearch 单机版linux 安装

一、安装准备工作安装参考文档:ELK官网:https://www.elastic.co/ELK官网文档:https://www.elastic.co/guide/index.htmlELK中文手册:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.htmlELK中文社区:https://elasticsearch.cn/ELK-API :https://www.elastic.co/guide/en/elastic

2020-10-02 15:46:46 209

原创 dubbo源码之服务调用过程

前言前面有介绍服务暴露和服务引入两个流程,而这两个流程就是为了服务的调用。由前面两篇可以知道我们具体调用信息已经被封装到invoker 里面。今天主要是介绍dubbo在调用服务的时候,如何获取到封装好invoker,对服务进行调用。这篇文章和前面三篇一样,基于dubbo 2.7.1、 zookeeper为注册中心、采用dubbo 协议。调用流程-消费端源码分析由前面服务引入可以知道调用接口,是dubbo controller 进行属性赋值的时候注入代理对象。可以看到注入代理是来自InvokerI

2020-09-26 22:35:29 265

原创 git 创建远程分支、删除远程分支、回滚代码

创建远程分支1、查看目前存在的远程分支git branch -r2、先检出需要先切换为需要拉分支的代码(这里因为需要从master分支拉代码)git checkout master3、新建一个本地分支 dev_20200920git checkout -b dev_202009204、查看分支状态git branch星号(*)表示当前所在分支。现在的状态是成功创建的新的分支并且已经切换到新分支上。5、推送对应本地分支到远程分支(git push origin 本地分支名:远程分支名)g

2020-09-20 22:09:03 586

原创 dubbo源码之服务引用

这个是dubbo 调用的流程图,这篇文件主要要介绍第二步中的服务订阅和第四步代理类的封装过程,这次使用的源码为2.7.1服务引用大致流程Provider将自己的服务暴露出来,注册到注册中心, Consumer从注册中心得知 Provider 的信息,然后自己封装一个调用类对Provider 实现调用。这次使用的源码为2.7.1,采用注解方式引入。dubbo入门服务引用大致流程通过前面文章可以看到,我们这次是采用注解方式引入。因此在初始化引入对应接口类进行属性赋值的时候,会将服务引入。这一部分.

2020-09-20 17:56:35 350

原创 dubbo源码之服务暴露

Dubbo 作为rpc 封装的典型框架,我们其实要了解一个rpc调用大致过程,dubbo可以作为一个比较好学习资料。这个是dubbo 调用的流程图,这篇文件主要要介绍第一步中的服务暴露过程,这次使用的源码为2.7.1服务暴露过程我们在看源码的时候需要一个入口,dubbo的入口可以从ServiceBean 开始public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, D

2020-09-13 21:47:41 242

原创 Dubbo 介绍及入门实战

前言在java项目中,很多更加大型的项目其实已经采用springCloud 了。很多中小型项目其实我们很多项目并不需要这么多模块,将项目拆分为过多的模块,dubbo仍然有适合自己一些场景。在自己从头搭建一套项目的时候,有时候没有一套dubbo 模板导致刚刚搭建的时候就耗费挺多时间。这里将一套模板springboot + dubbo 模板贴出来,提高从头搭建项目的速率。Dubbo 简单介绍dubbo调用的整体的流程:首先服务提供者 Provider 启动然后向注册中心注册自己所能提供的服务。服务消

2020-09-13 16:49:16 318

原创 Hbase java入门实践

Hbase术语介绍在Hbase中,有一些术语需要提前了解。如下:Table:Hbase的table由多个行组成Row:一个行在Hbase中由一个或多个有值的列组成。Row按照字母进行排序,因此行健的设计非常重要。RowKey:行键,可理解成MySQL中的主键列。Column:列,可理解成MySQL列。Column Family:列簇在物理上包含了许多的列与列的值。可以理解成MySQL的垂直分区(将一张宽表,切分成几张不那么宽的表)。此机制引入的原因,是因为HBase相信,查询可能并不需

2020-08-23 22:21:25 296

所辖行政区对应的表和数据

我们很多时候都需要所辖行政区的查询的接口,我们大部分都有已经存在的接口供我们调用。

2020-12-30

空空如也

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

TA关注的人

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