自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)

转载 Java-IO流

目录1、流的概念和作用1.2、Java IO所采用的模型1.3、IO流的分类1.4、IO流特性1.5、IO流常用到的五类一接口1.6、Java IO流对象1.6.1、输入字节流InputStream1.6.2、输出字节流OutputStream1.6.3、字符输入流Reader1.6.4、字符输出流Writer1.6.5、字节流和字符流使用情况:(重要)1.7、字符流与字节流转换1.8、字节流和字符流的区别(重点)1.9、System类对IO的支持​

2020-08-13 20:34:03 38

原创 敏捷核心思维-Scrum流程

敏捷核心思维 价值驱动关注高优先级目标,要事第一关注用户痛点和业务价值优先交付高价值的需求敏捷关注持续交付可见的正确结果适应变化找到正确的方向,交付正确的成果自组织团队目标驱动,共享责任 Scrum流程实践 Scrum四大支柱价值驱动的交付自组织团队增量交付迭代交付3个角色Product OwnerScrum MasterDevelopment Team3个工件产品Backlog冲刺Backlog产品增量5..

2020-05-11 22:17:18 90

转载 大话项目管理工具之Jira篇

言上一篇文章谈的是知识管理工具 —— Confluence,它来自澳大利亚Atlassian 公司。很凑巧的是,今天要介绍的 JIRA 也是来自 Atlassian 公司的。但他不再是知识管理工具了,而是项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。背景在谈 JIRA 之前,就不得不说说敏捷开发了。正式由于项目是基于敏捷开发进行的,因此才引入了 JIRA 这款适合于敏捷开发的项目管理工具。当然,这里不会大篇章的介绍敏捷开发,之.

2020-05-09 09:00:32 85

原创 SpringBoot2.0实战(18)整合SpringSecurity前后端分离JSON交互
原力计划

在前端的文章中,我们实现了使用 SpringSecurity 实现登录鉴权,并使用数据库存储用户信息,实现登录鉴权SpringBoot2.0实战(16)整合SpringSecurity之最简登录方法鉴权SpringBoot2.0实战(17)整合SpringSecurity基于数据库登录鉴权登录页都是使用 SpringSecurity 提供的默认登录,入参为username及password,前端通过 form 表单提交请求,后台使用request.getParameter()获取填写数...

2020-05-08 20:59:05 179

原创 SpringBoot2.0实战(17)整合SpringSecurity基于数据库登录鉴权
原力计划

通过前一篇文章整合SpringSecurity之最简登录及方法鉴权,我们已经可以简单地使用 SpringSecurity 对应用实现登录鉴权,但是问题在于,用户信息或者是在配置文件中,或者是在代码中写死,应用启动后被加载至内存,这并不符合实际的生产需要,在实际的生产应用中,我们需要使用数据库对用户及角色信息进行持久化,在执行登录操作时,从数据库中获取用户信息。目标整合 SpringSec...

2020-04-29 20:49:32 249

原创 SpringBoot2.0实战(16)整合SpringSecurity之最简登录方法鉴权
原力计划

目标整合 SpringSecurity 实现最简登陆鉴权及方法鉴权,大致理解 SpringSecurity 的功用。操作步骤添加依赖编码Controller 层添加一个最简单的测试接口启动类可以看到,除了在 pom 文件加了一个 spring-boot-starter-security 依赖,其它跟创建最简 springBoot 应用...

2020-04-27 22:32:15 136

原创 SpringBoot2.0实战(15)整合Redis之集成缓存SpringDataCache

相关知识常用 Spring Cache 缓存注解@CacheConfig 在类上设置当前缓存的一些公共设置,比如缓存名称。 @Cacheable 作用在方法上,表明该方法的结果可以缓存,如果缓存存在,则目标方法不会被调用,直接从缓存中获取,如果缓存不存在,则执行方法体,并将结果存入缓存。 @CacheEvice 作用在方法上,删除缓存项或者清空缓存。 @CachePut 作用在方法上...

2020-04-26 21:38:48 43

原创 SpringBoot2.0实战(14)整合Redis之实现分布式锁
原力计划

相关知识分布式锁分布式锁是控制分布式系统之间同步访问共享资源的一种方式,在分布式系统中,如果不同的应用之间共享一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。互斥性。在分布式环境下,同一时间只有一个客户端能持有锁。 具备锁失效机制,防止死锁。例如锁的持有者在持有锁期间崩溃而没有主动解锁,锁需要在规定时间后自动失效,以...

2020-04-26 11:00:57 100

原创 SpringBoot2.0实战(13)整合Redis之初体验Lettuce

相关知识Redis 简介Redis 是一个开源的,基于内存中的,高性能的数据存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如:string、hashes、lists、sets、sortedSets等。Redis 内置了复制(replication)、LUA脚本(Lua scripting)、事务(transactions)、磁盘持久化(persi...

2020-04-23 22:55:23 137

原创 SpringBoot2.0实战(13)整合RabbitMQ之实现延迟队列、消息重试

相关知识什么是延迟队列队列中的消息在等待指定时间后,消费者才能够进行消费。应用场景商城系统,下单后半个小时未付款,自动取消订单实现方式RabbitMQ 本身没有直接支持延迟队列功能,但是通过控制消息的生存时间及死信队列,可以模拟出延迟队列的效果。RabbitMQ 控制消息的生存时间有两种方法:设置队列属性(x-message-ttl),队列中所有消息都有相同的过期时...

2020-04-14 21:58:24 139

原创 SpringBoot2.0实战(12)整合RabbitMQ之死信队列

相关知识什么是死信队列“死信”是RabbitMQ中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况:消息被否定确认,使用 channel.basicNack 或 channel.basicReject ,并且此时requeue 属性被设置为false。 消息在队列的存活时间超过设置的TTL时间。 消息队列的消息数量已经超过最大队列长度。那么该消息将成为“死信”,“死...

2020-04-13 19:15:53 202

原创 SpringBoot2.0实战(11)整合RabbitMQ之ACK消息确认
原力计划

相关知识交换器direct:一对一 fanout:一对多 topic:模式匹配目标整合 Spring boot 提供的 spring-boot-starter-amqp,实现消息发送、消息消费、确认准备工作安装RabbitMQ请自行根据windows或者Linux进行安装操作步骤添加依赖添加后的整体依赖如下配置编码(消息发送方)定义 E...

2020-04-13 18:42:40 174

转载 面试官必问的8道volatile关键字命题,你答对了吗?

在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(JMM),Java并发编程的一些特性都牵扯出来,深入地话还可以考察JVM底层实现以及操作系统的相关知识。目录一、面试官: Java并发这块了解的怎么样?说说你对volatile关键字的理解二、面试官: 能不能详细说下什么...

2020-04-07 16:13:00 47

原创 SpringBoot2.0实战(10)整合fluent-validator优雅业务校验
原力计划

相关知识FluentValidator是一个工具类库,使用流式(Fluent Interface)调用风格让校验跑起来更优雅,代码更简洁,同时验证器(Validator)可以做到开闭原则,实现最大程度的复用。github地址:https://github.com/neoremind/fluent-validator中文使用手册:http://neoremind.com/2016/02/...

2020-04-06 21:42:12 146

原创 SpringBoot2.0实战(9)整合Mybatis-plus完成CURD
原力计划

相关知识Mybatis-plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。Mybatis-plus官网:https://mp.baomidou.com/特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CR...

2020-04-06 16:39:11 59

原创 SpringBoot2.0实战(8)整合Swagger2自动生成API文档

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。相关知识Swagger官网:https://swagger.io常用注解:@Api 用于类,表示标识这个类是swagger的资源@ApiOperation 用于方法,表示一个http请求的操作@ApiParam 用于方法,参数,字段说明,表示对参数的添加元数据(说明或...

2020-04-06 10:21:18 53

原创 SpringBoot2.0实战(7)整合MapStruct优雅地复制属性

在之前章节的例子中,我们在接收参数的时候都是使用的 User 类对象,这是一个 DO 对象,是用于与数据库进行交互的,而不是用于与前端业务进行交互的,所以需要创建一个 BO 业务对象用来与前端业务进行交互,保证数据隔离性及安全性。接收参数换成了 BO 对象,但数据入库使用的是 DO 对象,这中间就需要将 BO 对象的属性复制到 DO 对象,然后代码里就会出现大量的 do.set(bo.get(...

2020-04-05 20:25:10 563

原创 SpringBoot2.0实战(6)整合hibernate-validator进行参数校验

spring-boot-starter-web 项目中默认已经集成了 hibernate-validator相关知识@AssertTrue // 用于 boolean 字段,该字段只能为 true@AssertFalse // 用于 boolean 字段,该字段只能为 false@DecimalMax // 用于 Number 字段,只能小于或等于该值@DecimalMin ...

2020-04-03 21:02:48 179

原创 SpringBoot2.0实战(5)配置Filter过滤器

本章目标学会在 SpringBoot 项目中配置 Filter,实现对请求出入参的日志打印。操作步骤添加依赖引入 Spring Boot Starter 父工程引入 spring-boot-starter-web 的依赖编码编写 Filter实现对 application/json 请求的拦截,因为请求内容使用流,所以需要多一次封装...

2020-04-03 17:06:59 227

原创 SpringBoot2.0实战(4)配置拦截器

相关知识关于拦截器的相关知识可参考:https://jinnianshilongnian.iteye.com/blog/1670856本章目标学会在 SpringBoot 的项目中怎么配置拦截器操作步骤添加依赖引入 Spring Boot Starter 父工程引入 spring-boot-starter-web 的依赖编码编写拦截器...

2020-04-03 16:01:05 98

原创 SpringBoot2.0实战(3)SpringBoot单元测试

本章目标基于上一章,使用单元测试实现对增删查改接口的测试操作步骤添加依赖引入 spring-boot-starter-test 的依赖添加依赖后的整体 dependencies 如下所示编码测试用例编写在 src/test/java 源目录下编写测试用例代码分析@RunWith(SpringRunner.class) 指...

2020-04-03 15:16:08 52

原创 SpringBoot2.0实战(2)集成SpringBootJPA完成CURD

本章目标整合 SpringBootJPA,实现对 mysql 数据库表的增删查改操作。操作步骤初始化数据库在 mysql 的 test 库中创建表 user,脚本如下,其中主键设置为自动增长。添加依赖引入 Spring Boot Starter 父工程引入 `spring-boot-starter-web`、`spring-boot-starter-...

2020-04-02 20:59:43 281

原创 SpringBoot2.0实战(1)快速构建Web应用

本章目标使用 SpringBoot 完成一个简单的 Web 应用程序开发,初步体验 SpringBoot 快速、简洁的特性。操作步骤构建项目打开 Idea,依次选择 File -> New -> Module,打开 Module 面板。左侧栏选择 Maven,点击下一步。填写 groupId、artifactId、version,点击下一步。填写项目名,一般...

2020-04-02 19:58:52 93

转载 线程池

一. 线程池简介1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。2. 线程池的工作机制 2.1 在线程池的...

2020-04-02 10:24:44 19

转载 redis和mongodb各自的优缺点,怎么选择?

redis和mongodb各自的优缺点,怎么选择?Redis是神马?Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value非关系型数据库,并提供多种语言的API。redis是一个key-value存储系统。Redis是非关系型数据库的一种,经常用作缓存。和Memcached类似,它支持存储的value类型相对更多,包括string(字...

2020-04-02 09:58:44 120

转载 Springboot 整合RabbitMq

原文链接https://blog.csdn.net/qq_35387940/article/details/100514134我的githubd代码demo地址https://github.com/caiyuanzi-song/mq.git

2020-03-28 12:06:51 15

转载 DB读写分离情况下,如何解决缓存和数据库不一致性问题?

目录前言 为什么会导致不一致 方案一:后台缓存标记法 方案二:延迟消息 方案三:更新用户再次发起读请求前言在你知道如何更新缓存吗?如何保证缓存和数据库双写一致性?这篇文章中我们留了一个尾巴,就是在读写分离的情况下,缓存和数据库数据不一致怎么解决?推荐大家先去看一下你知道怎么解决DB读写分离,导致数据不一致问题吗?这篇文章,如何解决DB数据库的数据不一致问题。在缓存和数...

2020-03-25 18:09:17 303

转载 DB读写分离,解决数据不一致问题

目录前言 为什么产生数据不一致 方案一:利用数据库自身特性 方案二:不解决 方案三:客户端保存法 方案四:缓存标记法 方案五:本地缓存标记前言在互联网中大型项目中,读写分离应该是我们小伙伴经常听说的,这个主要解决大流量请求时,提高系统的吞吐量。因为绝大部分互联网产品都是读多写少,大部分都是读请求,很小部分是写请求。上图:1)一个主库负责写请求,更新数据...

2020-03-25 18:08:03 133

转载 缓存数据库更新策略

目录前言 先更新数据库,再更新缓存 先更新缓存,再更新数据库 先删除缓存,再更新数据库 先更新数据库,再删除缓存 删除缓存失败,导致不一致 读写分离,导致不一致前言在项目中缓存是经常用到的,为了减少和数据库的交互,小伙伴们利用缓存的思路如下:缓存设计思路我们小伙伴们有没有考虑到缓存更新的问题,小伙伴们肯定会说肯定用过啊,有数据更新时,把缓存清空掉就行了啊,下一次访...

2020-03-25 17:52:50 75

转载 MySQL索引

相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。因为索引是MySQL中比较重点的知识,相信很多人都有一定的了解,尤其是在面试中出现的频率特别高。楼主自认为自己对MySQL的索引相关知识有很多了解,而且因为最近在找工作面试,所以单独复习了很多关于索引的知识。但是,我还是图样图森破,直到我被阿里的面试官虐过之后我才知道,自己在索引方面的知识,只...

2020-03-25 11:06:49 19

转载 多线程

1、并发编程三要素?1)原子性原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。2)可见性可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。3)有序性有序性,即程序的执行顺序按照代码的先后顺序来执行。2、实现可见性的方法有哪些?synchronized或者Lock:保证同...

2020-03-25 10:34:13 27

转载 单例模式-多线程环境

转载https://www.cnblogs.com/wang1001/p/9584670.html

2020-03-11 16:06:17 35

转载 Mybaits SQL执行过程

初识 MyBatisMyBatis 是第一个支持自定义 SQL、存储过程和高级映射的类持久框架。MyBatis 消除了大部分 JDBC 的样板代码、手动设置参数以及检索结果。MyBatis 能够支持简单的 XML 和注解配置规则。使 Map 接口和 POJO 类映射到数据库字段和记录。MyBatis 的特点那么 MyBatis 具有什么特点呢?或许我们可以从如下几个方面来描述MyBat...

2020-03-01 10:54:22 119

原创 IDEA上传项目到github步骤详解

1、在idea上配置你的网站用户名和密码2、在idea上创建工程3、将此工程上传到github网站,IDEA会自动帮我们在github网站上创建仓库,仓库名就是你的项目名...

2020-02-26 10:54:56 51

原创 MySQL存储引擎

前言数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。存储引擎的选择不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:...

2020-02-22 18:06:44 90

转载 微服务如何处理事务

分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 两阶段提交方案/XA方案所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库...

2020-02-21 15:52:48 416

转载 class.forname和classloader区别

Java中class是如何加载到JVM中的:1.class加载到JVM中有三个步骤 装载:(loading)找到class对应的字节码文件。 连接:(linking)将对应的字节码文件读入到JVM中。初始化:(initializing)对class做相应的初始化动作。2.Java中两种加载class到JVM中的方式 2.1:Class.forName(“cla...

2020-02-20 15:25:17 64

转载 JVM整理

前言总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新。1.什么情况下会发生栈内存溢出。思路: 描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。我的答案:栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈...

2020-02-20 14:58:10 55

转载 EJB到底是什么

1.我们不禁要问,什么是"服务集群"?什么是"企业级开发"?既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务集群"和"企业级开发"吧!这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉广大程序员什么时候用EJB 什么时候不用。于是大家都产生一些联想,认为EJB"分布式运算"指得是"负载均衡"提高系统的运行效率。然而,估...

2020-02-18 15:11:08 51

原创 Redis

Redis定义Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。特点Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value...

2020-02-13 18:50:51 72

空空如也

空空如也

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