自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot自动配置及自定义starter

1、创建一个SpringBoot项目2、编写StarterDemo.java} }3、编写StarterConfig配置类} }4、在resource目录下创建一个META-INF文件夹并新建spring.factories文件........5、在另外的SpringBoot项目引入my-starter,并创建配置属性

2022-08-21 16:56:40 580 1

原创 java多线程的简单应用

操作系统运行一个程序时,会为其创建一个进程,线程是系统工作调度的最小单位,一个进程运行时可能会有一个或者多个线程在工作。线程拥有各自的计数器、堆栈和局部变量等属性,且能够访问共享的内存变量。...

2022-08-14 23:58:51 803

原创 微服务集成Seata分布式事务

Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。因为Seatas是SpringCloudAlibaba下面的一款开源分布式事务解决框架,所以按照SpringCloudAlibaba提供的毕业版本对应关系,减少不必要的问题。管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。表示开启全局事务,一旦有子事务失败,则全局事务回发起回滚,回滚所有子事务。维护全局和分支事务的状态,驱动全局事务提交或回滚。......

2022-07-15 14:40:28 946 1

原创 分布式事务场景及解决方案

1、单体服务多数据源,数据分部在不同的数据库实例,同时操作不同的数据库连接进行数据操作,跨数据库实例产生分布式事务。2、多服务访问同一个数据库,不同服务各自持有数据库连接实例,跨JVM进程,产生分布式事务。3、微服务场景下,多个服务拥有各自的数据库实例,通过服务间远程调用,操作数据库完成业务场景,产生分布式事务。阶段一:阶段二:2PC的升级版,把2PC的第一阶段拆分成两个阶段。整个过程:1、CanCommit阶段协调者向参与者发送Cancommit请求,询问是否可以提交事务,并等待参与者反

2022-07-14 17:33:18 1500

原创 了解一下事务的概念

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。要么全部执行,要么全部不执行。事务有4个特性,简称ACID。用注解的属性可以指定事务的传播机制。REQUIRED当前存在事务,则加入这个事务;当前不存事务,则新建一个事务;SUPPORTS当前存在事务,则加入这个事务;当前不存在事务,则以非事务的方式执行;MANDATORY当前存在事务,则加入这个事务;当前不存事务,则抛出异常;R

2022-07-04 12:45:16 1430

原创 k8s的CNI网络插件和配置文件kube-flannel.yml

安装命令:一般这个国外的网站没有梯子是访问不了的,下面是下载好kube-flannel.yml的内容,直接复制到yaml文件,执行:详细配置文件

2022-06-28 17:16:22 1059

原创 Docker安装、镜像与容器

docker是一门容器化技术。Docker 使用客户端-服务器架构。Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护程序使用 REST API,通过 UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。设置镜像仓库,提

2022-06-17 16:49:50 311

原创 Nginx实现Web服务器、反向代理、负载均衡

安装完成默认配置文件目录:/etc/nginx/nginx.conf开机自启配置文件nginx.conf 包括全局块、events块、http块。其中http块可以有多个server,server里面还可有多个location。web服务器创建文件夹/data/www并新建index.html,创建文件夹/data/images并上传bg.jpg修改nginx.conf配置文件,server监听8888端口,增加两个location。请求http:// ip:8888/

2022-06-15 16:32:29 359

原创 快速了解ActiveMQ和RocketMQ

JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。消息中间件一般都遵循JMS规范,如图:消息队列(Message Queue)也叫做消息中间件。生产者发送消息到消息队列,消费者则从队列中获取消息进行消费,达到异步、解耦、削峰。生产者发送消息有两种类型queue和topic。下载地址:https://activemq.apache.org/compone

2022-06-06 14:21:58 1130

原创 队列基本了解

什么是队列队列(Queue),设计用于在处理之前保存元素的集合。除了基本的Collection操作之外,队列还提供了额外的插入、提取和检查操作。这些方法中的每一个都以两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值( null或false ,具体取决于操作)。方法函数抛出异常返回false或null插入boolean add(e)boolean offer(e)消除E remove()E poll()检查E element()E peek()

2022-04-25 11:22:34 355

原创 常用List、Map及源码分析

ListArrayList本质是一个数组。/** * Default initial capacity. */private static final int DEFAULT_CAPACITY = 10;/** * Shared empty array instance used for empty instances. */private static final Object[] EMPTY_ELEMENTDATA = {};/** * Shared empty array

2022-04-25 11:20:03 123

原创 泛型的基本使用

泛型什么是泛型泛型的本质是类型参数化,解决不确定具体对象类型的问题。泛型可以定义在类、接口、方法中,编译器通过识别尖括号和尖括号内的字母来解析泛型。泛型符号T:代表type,表示某个类K:代表KeyV:代表ValueE:代表Element,用于集合中的元素K、V通常用于键值对元素。泛型类public interface List<E> extends Collection<E> { }public interface Map<K,V>

2022-04-25 11:18:46 96

原创 String类的基本使用

JDK1.5加入的新特性。java.lang包底下的类,被final所修饰,value也是被final修饰,本质是一个不可变的字符数组。public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[];}

2022-04-25 11:17:12 106

原创 java面向对象

封装类的属性和方法的具体实现对外隐藏,只通过对外暴露的方法进行属性的设置和修改,不能直接操作类的属性进行更改。public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name;

2022-04-25 11:15:07 61

原创 java基本类型

八大基本数据类型名称占用字节Bytes位数bits默认值byte1字节80short2字节160int4字节320long8字节640float4字节320.0Fdouble8字节640.0boolean-1falsechar2字节16‘\u0000’ 空字符1个字节 = 8bits自动类型转换规则:由小字节向大字节自动转换byte->short(char)->i

2022-04-25 11:13:22 435

原创 mybatis plus 分页查询 left join 子查询参数无法找到报错

问题mybatis plus版本:3.4.1SELECT*FROM aLEFT JOIN ( SELECT * FROM b WHERE #{condition} ) b...在自定义分页SQL中进行letf join语句查询报错,假如有3个#{}参数,一个在left join中,最终会报java.sql.SQLException: Parameter index out of range 实际参数有3个,在SQL中只找到2个#{}org.mybatis.spring.MyBatisS

2021-07-30 10:12:24 4783

原创 Springboot + vue前后端分离后台管理系统(十四) -- 源码

前言基本的小功能是能用了,所以打算把源码分享出来,如果要自己写业务功能可以在这基础上添加功能。基本功能用户管理角色管理菜单管理开发者工具使用说明后端:将代码导入idea或eclipse 然后下载maven依赖包resource/doc文件夹下有数据库初始化文件sample-admin.sql启动mysql、redis运行SampleAdminApplication.java前端:安装好node.js环境将项目导入vscode执行npm install 命令下载依赖

2021-07-20 09:22:56 696 6

原创 Springboot + vue前后端分离后台管理系统(十三) -- 访问权限控制

前言角色菜单可以控制侧边栏的显示,再细一点的粒度就是权限了,可以控制页面或接口是否可以访问。实现配置ShiroConfig.java 开启权限注解切点扫描@Configurationpublic class ShiroConfig { /** * 注入ShiroRealm,自定义的realm 后面的认证和授权全在这里编写 * @return */ @Bean public ShiroRealm shiroRealm() {

2021-07-20 09:22:10 627

原创 Springboot + vue前后端分离后台管理系统(十二) -- 动态角色菜单

前言后台管理系统是基于RBAC设计的,也就是说不同的角色应该拥有不同的资源访问权限,这篇就来实现这个功能实现方式一vue-admin-template 只提供了基础的vue后台管理框架,权限管理模块没有引入。vue-element-admin 相对完整的组件demo和权限模块。它的动态路由配置如下:前端配置完整的路由菜单请求后端api返回 用户拥有的菜单在前端过滤渲染呈现用户的菜单方式二由后端统一配置菜单,直接返回给前端渲染优缺点方式一:对于前后端分离多人协作开发比较友好,前

2021-07-20 09:21:10 3168 2

原创 Springboot + vue前后端分离后台管理系统(十一) -- 代码生成器调整

前言之前在集成mybatis plus的时候有稍微写了下代码生成器的用法,现在这边稍微调整和优化一下,让后面生成基本的接口代码更加的方便,减少工作量啊,偷懒果然是爽啊。实现模板支持mybatis plus的代码生成器是需要模板引擎的,默认使用的是velocity模板,项目里也已经引用了。<!-- 模板引擎 --><dependency> <groupId>org.apache.velocity</groupId> <artifactId&

2021-07-20 09:20:18 841

原创 Springboot + vue前后端分离后台管理系统(十) -- 登陆实现(二)

前言上一篇主要实现前端表单请求加密处理,后端解密的实现,这篇文章将结合shiro来完善登陆认证的流程。流程浏览器请求接口判断是否是登陆请求是登陆请求执行登陆,否则进行身份认证登陆成功生成token存进redis身份认证通过放行请求, 刷新redis里的token缓存时间认证失败则跳转登陆页重新进行登陆实现后端ShiroConfig.java配置@Configurationpublic class ShiroConfig { /** * 注入ShiroRea

2021-07-20 09:19:14 590

原创 Springboot + vue前后端分离后台管理系统(九) -- 登陆实现(一)

前言作为前后端分离登陆,这一部分只要是前端vue的登陆,在原先vue-admin-template的封装的登陆上面做改动。步骤实现RSA加密登陆密码肯定是不能明文暴露浏览器上,登陆表单提交的时候必须进行加密,这边采用RSA对称加密,生成私钥和公钥,登陆的密码公钥加密,后端再用私钥进行解密,然后进行登陆校验。安装依赖npm install jsencrypt --save新建rsa.js编写一个加密的方法import { JSEncrypt } from 'jsencrypt'exp

2021-07-20 09:18:01 1270

原创 Springboot + vue前后端分离后台管理系统(八) -- 引入Shiro

引入pom.xml<!--shiro--><dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.7.0</version></dependency>配置新增ShiroConfig.java 具体配置项后面再配@Con

2021-07-20 09:16:58 805

原创 SpringCloud Alibaba 引入Dubbo踩坑

前言在搭建springcloud alibaba的时候,引入Dubbo相关依赖,项目启动报错。版本信息依赖版本Spring Boot2.4.2Spring Cloud2020.0.0Spring Cloud Alibaba2021.1引入依赖<!-- Dubbo Spring Cloud Starter --><dependency> <groupId>com.alibaba.cloud</groupI

2021-07-07 14:08:53 2742

原创 Springboot + vue前后端分离后台管理系统(七) -- 引入JWT

什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。相关文章很多。。。参考:https://www.jianshu.com/p/576

2021-06-10 17:15:11 448

原创 解决Mybatis plus字段填充不覆盖原有值问题

问题项目自定义了MpMetaObjectHandler填充策略,对插入时间和更新时间自动填充。做业务的时候要求数据更新的时候更新时间需要同步到最新时间。问题就出现了: 自动填充策略不能填充已存在值的字段。原因查找Mybatis plus 指南,定位到问题。当要填充的值为null时,字段不给予填充。当要填充的字段已存在值的情况,不给予填充。撸一下源码看看:解决从源码中看到metaObject.getValue(fieldName)为null时才进行填充。从自定义填充策略的方法不难看

2021-06-10 17:09:24 2740 1

原创 springboot + vue前后端分离后台管理系统(五) -- 后台权限表结构设计

什么是RBACRBAC 是基于角色的访问控制(Role-Based Access Control )在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。参考:https://shuwoom.com/?p=3041这边管理系统只用最简单的RBAC0模型表设计sys_user表CREATE TABLE `sys_user` ( `i

2021-01-20 16:13:34 792 1

原创 springboot + vue前后端分离后台管理系统(四) -- 数据封装

前言前后端分离开发,经常用json数据格式进行交互,统一的响应数据格式,形成统一规范,可以大大方便前后端人员的开发。Response数据封装编码枚举类 ResultCode.javapublic enum ResResultCode { /** * 成功 */ SUCCESS(200, "ok"), /** * 请求错误 */ BAD_REQUEST(400, "请求参数错误"), /** * 未登录

2021-01-18 16:14:18 650

原创 springboot + vue前后端分离后台管理系统(三) -- 集成Knife4j

前言对于开发人员来说,在开发过程中得自测是不可避免得,像postman这种工具就对模拟http请求提供了便捷。还有就是接口文档也是令人头疼得事情,Swagger就很好得解决了这种事情。什么是Swagger?Simplify API development for users, teams, and enterprises with the Swagger open source and professional toolset. Find out how Swagger can help you d

2021-01-18 11:08:04 688 3

原创 springboot + vue前后端分离后台管理系统(二) -- 集成Mybatis Plus

前言很多人喜欢使用JPA的快捷开发,个人喜欢mybatis可以自己写sql。而mybaits plus可以很好的结合两者的有点,有基础的CRUD接口,还可以自定义mapper写sql,比较灵活。get it !准备工作既然要引入mybatis plus,那么久需要引入数据库相关依赖,还有一些工具包。这边还使用了lombok减少代码量,这个看情况引入,毕竟方便是方便,侵入性强一些,需要安装插件。然后开头先弄个mybatis plus代码生成器,毕竟自己手动建文件还是很累的。。。引入maven依赖完整

2021-01-15 13:48:27 813

原创 springboot + vue前后端分离后台管理系统(一) -- 项目搭建

前言工作有两三年,从来只会crud,今天开始整理一下,从零开始搭建一个简单的前后端后台管理系统技术选型springboot 2.0+vue 2.0项目搭建1、springboot项目搭建开发工具ideajdk1.8maven初始化项目创建一个sample-admin项目,加入Spring web 依赖。去掉多余的.mvn相关文件,把默认application.properties配置文件改成application.yml后缀(看个人喜好!),整个项目结构如下:配置默

2021-01-15 13:46:37 2174 1

原创 Spring Security 基本使用

一、Spring Security是什么?Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。

2021-01-07 15:16:11 2627 5

原创 Shiro基本使用

Shiro基本使用1、什么是ShiroShiro是Apache的java安全框架。Apache Shiro是一个功能强大、灵活的开源安全框架,可以清晰地处理身份验证、授权、企业会话管理和加密。官网地址:http://shiro.apache.org/2、基础功能以下是shiro的产品特性:Authentication:身份认证 / 登录,验证用户是不是拥有相应的身份Authorization:授权,验证已认证的用户有哪些角色和资源访问权限Session Management:会话管理

2020-12-30 16:16:34 1002

原创 IDEA创建springboot项目

IDEA创建springboot项目开发工具Intellij IDEA创建步骤File ->New -> Project…选择Spring InitializrProject SDK:选择要创建项目的依赖jdk版本点击Next点击NextDependencies:可以选择要引入pom.xml文件中的依赖。如web、mysql等Spring Boot版本:SNAPSHOT:快照版,表示开发版本,随时可能修改;M1:通常是M+数字,表示里程碑版本;Releas

2020-09-07 18:02:21 112

原创 eclipse创建springboot项目

eclipse创建springboot项目开发工具传统eclipse安装springboot插件就可以创建生成springboot项目sts(spring tools suite)集成springboot的eclipse开发工具步骤以STS3(spring tools suite 3)为例File->New->Springboot Starter Project点击Nextspringboot版本号说明SNAPSHOT:快照版,表示开发版本,随时可能修改;

2020-09-07 16:46:40 391

原创 Markdown常用语法学习

MarkdownMarkdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。Markdown 编写的文档可以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档。Markdown 编写的文档后缀为 .md, .markdown。标题方式一语法:#+空格+要写的内容#代表一级标题,##代表二级标题,###代表三级标题,以此类推到六级标题方式二语法:= 代表一级标题,- 代表二级标题这是一级标题==========这是二级标题------

2020-08-14 14:56:30 223

原创 用ng-repeat实现动态的ion-tab

楼主本人用ionic1开发公司的app,功能需求要动态的显示选项卡栏,所以很自然的想到了用ng-repeeat去循环获取后台数据。用ng-repeat动态显示数据是ok的,那么问题来了:    选项卡栏正选是可以正常显示ion-view里面的内容的。但是反着选则显示不出内容。楼主百度了许久得不到答案。后来灵光乍现,引起这个问题可能是因为ng-repeat后的ion-view相当于公用的。正选的时候...

2018-07-06 14:59:58 329

原创 Ionic3 项目搭建及打包

Ionic3 项目搭建及打包一、工具及环境1、node.js 搭建项目、运行项目2、JDK1.83、android sdk 安卓打包需要二、安装教程1、下载并安装node.jshttps://nodejs.org/en/查看node版本命令 : node -v2、安装淘宝镜像。可以用cnpm 代替 npm打开node.js的命令窗口npm install -g cnpm --registry=...

2018-06-12 16:55:32 1744

原创 关于angularjs输入框自动去掉首尾空格问题

ionic项目,遇到密码输入框前后输入空格都可以正确的识别密码。找了很多正则表达式,后来才知道angularjs默认会去掉前后的空白,所以在input框加上 ng-trim="false"就可以了。...

2018-04-19 15:06:35 4217 3

空空如也

空空如也

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

TA关注的人

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