- 博客(30)
- 收藏
- 关注
原创 BigDecimal和DecimalFormat
文章目录前言一、BigDecimal1.1 概述1.2 常用构造函数1.3 常用方法1.4 BigDecimal比较大小二、DecimalFormat注意前言在些银行或商城项目业务中,需要数据的精度要求较高,而在Java中基本数据类型‘float’或者‘double’这些代表浮点型的数据类型在进行数据运输时结果并不会和我们预期的一致,因为其运算可能会发生精度丢失。在这样引用一个比较经典的案例:为什么会出现4.0-3.6=0.3999999999这种现象? double a = 4.0; do
2022-04-05 23:34:50
1175
原创 为什么springboot的jar可以直接运行?
目录1.Spring Boot特征2.为什么?3.原理1.Spring Boot特征在Spring Boot项目中的pom文件的常看到会说明一个插件‘spring-boot-maven-plugin’用于把程序打成一个可执行的jar包。但此jar包与一般的java项目jar有所不同,此jar包可以直接通过‘java -jar xxxx.jar’命令直接运行并部署。2.为什么?Spring Boot应用打包之后,生成的jar可以说为Fat jar(jar包中包含jar),包含了应用依赖的jar包和
2022-03-29 23:23:24
2457
1
原创 Spring aop 循环依赖 Is there an unresolvable circular reference?
问题描述在使用Spring通过注解方式实现AOP时报出循环依赖错误完整的报错信息:Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'logAspects': Requested bean is currently in creation: Is there an unresolvable circular reference? a
2022-03-20 00:11:02
1435
原创 RabbitMQ中间件
目录前言一 、MQ概述1.1 MQ优势1.1.1 应用解耦1.1.2 任务异步处理1.1.3 削峰填谷1.2 MQ劣势1.3 AMQP 和 JMS二、RabbitMQ1.1 基础架构1.2 三种主要模式1.2.1 简单模式1.2.2 工作队列模式1.2.3 订阅模式1.2.3.1 Publish/Subscribe发布与订阅模式 (Fanout广播模式)1.2.3.2 Routing路由模式(Direct 定向模式)1.2.3.2 Topics通配符模式1.3 Spring整合1.4 SpringBoot整
2022-02-20 18:46:12
1021
原创 JWT(JSON WEB Token)
1. 什么是JWT2. JWT的构成3. JJWT的介绍和使用3.1 创建TOKEN3.2 TOKEN解析3.3 设置TOKEN过期时间3.4 自定义claims1. 什么是JWTSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。2. JWT的构成一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。头部(Header)头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个.
2021-11-21 22:34:59
190
原创 SSO单点登录
1.什么是SSO2. 普通认证机制(Cookie-Session)2.1 Session认证机制为什么不适用于分布式架构?2.2. 同域名下的SSO3. 基于token的认证1.什么是SSO在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便。但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多次登录,而且每个系统的账号都不一样,这对于运营人员来说,很不方便。于是,就想到是不是可以在一个系统登录,其他系统就不用登录了.
2021-11-17 00:25:17
136
原创 位运算实际运用
前言:1.位运算1.1 & 按位与1.2 << 左位移2.二进制运算业务逻辑分析前言:日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法。今天在翻看公司业务代码时发现一个功能模块中有运用到很多的二进制位运算来进行业务操作,心中不禁惊叹,牛人啊!后来经过领导的指点,自己也开始了解其中逻辑,特写下此文,记录并分享。1.位运算&:按位与。|:按位或。~:按位非。^:按位异或。<<:左位移运算符。>>:右位移运算.
2021-11-12 00:25:14
747
原创 SpringCloudGateway网关
1、基础简述1.1 什么是SpringCloudGateway?1.2 Gateway加入后的架构1.3 核心概念2、入门案例2.1 引入依赖2.2 编写启动类2.3 application配置文件3、面向服务的路由3.1 通过服务名称获取4 路由前缀4.1 添加前缀4.2 去除前缀5、过滤器5.1 简介5.2 配置全局默认过滤器5.3 执行生命周期5.4 使用场景6、自定义过滤器6.1 自定义局部过滤器6.2 自定义全局过滤器7、Gateway跨域配置1、基础简述1.1 什么是SpringCloud.
2021-07-10 17:35:21
190
原创 Hystrix服务熔断
1、简介1.1 什么是Hystrix?1.2 服务雪崩2、线程隔离&服务降级2.1 原理2.2 案例1) 引入依赖2) 开启熔断3) 编写降级逻辑4) 默认的fallback5) 超时设置3、服务熔断3.1 熔断原理3.2 案例1、简介1.1 什么是Hystrix?Hystrix是一个应用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时,异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整个体系服务失败,避免级联故障,以提高分布式系.
2021-07-08 18:22:12
4455
2
原创 Lua语言
1、Lua简介1.1 Lua是什么1.2 特性1.3 应用场景2、Lua的安装3、入门程序4、Lua的基础语法4.1 注释4.2 定义变量4.3 Lua中的数据类型4.4 流程控制4.5 循环4.6 函数4.7 表4.8 模块1、Lua简介1.1 Lua是什么Lua [1] 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University ofRio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Cele.
2021-05-29 22:56:59
2851
原创 OpenFeign服务接口调用
1、简介1.1 为什么要使用Feign1.2 OpenFeign是什么1.3 Feign和OpenFeign两者区别2、入门案例3、负载均衡1、简介1.1 为什么要使用Feign调用微服务访问两种方法微服务名字 【ribbon】接口和注解 【feign】在我们Ribbon的负载均衡功能时,大大简化了远程调用时的代码:String baseUrl = "http://user-service/user/";User user = this.restTemplate.getForObj.
2021-05-05 13:34:27
310
原创 Ribbon负载均衡
1、Ribbon1.1 Ribbon使用场景1.2 什么是Ribbon2、入门案例3、Ribbon原理3.1 负载均衡策略1、Ribbon1.1 Ribbon使用场景在Eureka篇的案例中,我们启动了一个user-service,然后通过DiscoveryClient来获取服务实例信息,然后获取ip和端口来访问。但是实际环境中,我们往往会开启很多个user-service的集群。此时我们获取的服务列表中就会有多个,到底该访问哪一个呢?一般这种情况下我们就需要编写负载均衡算法,在多个实例列表中进.
2021-05-03 16:59:12
155
转载 Eureka服务注册与发现
1、Eureka简介1.1 问题分析1.2 什么是Eureka1.3 Eureka做什么?2、Eureka基本架构2.1 工作原理图解析3、入门案例3.1 编写EurekaServer3.2 服务注册3.3 服务发现3.4 入门案例架构详解4、Eureka集群4.1 搭建高可用的EurekaServer5、Eureka配置详解5.1 Eureka客户端工程5.1.1 服务地址使用IP方式5.1.2 续约5.1.3 获取服务地址的频率5.2 Eureka服务端工程5.2.1 失效剔除5.2.2 自我保护5..
2021-05-03 16:14:51
222
原创 Git实战篇
1、idea集成Git1.1 idea配置Git客户端1.2 idea中下载gitee插件1.3 添加账户信息1.4 本地项目上传到服务器1.5 服务器项目下载到本地2、企业开发基础操作2.1 在dev分支下编写代码并提交2.2 从dev中开出个人分支编写3、后话1、idea集成Git1.1 idea配置Git客户端File — Settings—Version Control — Git关联Git安装目录下的bin/git.exe执行文件(这个就是git的客户端指令,类似svn.exe)注意:目.
2021-04-23 00:07:37
146
原创 Git基础篇
Git是目前企业开发中必不可少的技术1、版本控制2、版本控制分类2.1 本地版本控制2.2 集中版本控制(SVN)2.3 分布式版本控制(Git)3、版本控制工具3.1 Visual Source Safe(简称VSS)3.2 Concurrent Version System(简称CVS)3.3 SVN3.4 Git3.5 Git 与 SVN 区别1、版本控制如果在开发团队中没有使用版本控制,多个开发人员共同负责同一个软件或文档的开发,每个人在各自的电脑上有整个软件文档的备份,并对之实施编程开发,在分
2021-04-20 23:35:26
108
原创 MyBatis-Plus条件构造器之or
前言:实习入职也有两星期了,一直在熟悉业务以及做一些逻辑性不强的接口优化任务。今天在做接口优化时需要添加上一个字段以备后续版本迭代时可用其查找数据,因为业务层中大部分是用的Mybatis-Plus做数据的查询,自然我也就只能跟着他的方式进行更改了。而Mybatis-Plus我在学校时学过,但一直没有用于在开发中,也只有停留在“学过”的尴尬阶段。正文:条件构造器:接口方法的参数中,会出现各种 Wrapper,比如 queryWrapper、updateWrapper 等。Wrapper的作用就是用
2021-03-31 22:36:55
1778
原创 Docker入门
1、Docker概述1.1Docker为什么会出现1.2 Docker概念2、Docker安装3、Docker架构3.1 基本组成4、Docker命令4.1 进程相关的命令4.2 镜像相关命令4.3 容器相关命令5、Docker容器的数据卷5.1 数据卷概念及作用5.2数据卷配置1、Docker概述1.1Docker为什么会出现一款产品,开发和上线两套环境,应用环境配置费时费力,而且容易出问题,尤其对于机器学习和深度学习的库更是如此,很可能存在版本问题、底层依赖冲突问题所以发布项目时,不只是一套代.
2021-03-01 16:07:03
145
原创 SpringBoot整合MybatisPlus基础教程
Mybatis plus概念使用Mybatis时,大的问题是,要写大量的重复SQL语句在xml文件中,除了特殊的业务逻辑SQL语句之外,还有大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。这大量增 加了程序员的负担。避免重复书写CRUD映射的框架有两个通用mybatis(tk mybatis)mybatis plus,通能更加强大依赖 <dependency> <groupId>com.baom
2021-02-08 17:42:09
154
原创 SpringBoot整合tkMybatis基础教程
通用mapper概念使用Mybatis时,大的问题是,要写大量的重复SQL语句在xml文件中,除了特殊的业务逻辑SQL语句之外,还有大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。这大量增 加了程序员的负担。避免重复书写CRUD映射的框架有两个通用mybatis(tk mybatis)mybatis plus,通能更加强大依赖通用Mapper的作者也为自己的插件编写了启动器,我们直接引入即 <!-- 添加了tkmybatis的启动
2021-02-07 21:53:10
684
2
原创 Linux入门
文章目录1、入门概述1.1 Linux简介1.2 Linux发行版2、目录结构3、常用基本命令3.1 目录管理3.2 基本属性3.3 文件内容查看3.4 Vim编辑器3.5 账号管理3.6 用户组管理3.7 磁盘管理3.8 进程管理1、入门概述1.1 Linux简介Linux 内核初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的,于1991年10月5日首次发布。Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可
2021-02-01 12:09:56
142
原创 SQL优化
SQL查的快才是真的快!1、工具1.1 慢查询1.2 EXPLAIN2、索引优化2.1 适当建立索引2.2 合理使用索引2.2.1 不要再列上使用函数和进行运算2.2.2 隐式转换可能影响索引失效2.2.3 like语句可能导致的索引失效2.2.4 多个单列索引并不是最佳选择,可使用复合索引2.2.5 尽可能的达成索引覆盖3、SQL语句优化1、工具在理理解了MySQL中的索引类型及了解了索引的原理理之后,我们就要知道索引是为了提高检索性能。那么如何更好的合理使用索引,并且对一些执行较慢的sql进行优化
2021-01-13 16:57:50
167
原创 MySQL进阶-索引
MySQL索引1、什么是索引?2、索引的分类2.1 主键索引2.2 唯一索引2.3 普通索引2.4 全文索引2.5 组合索引3、索引的原理与B+Tree3.1 哈希索引3.2 了解数据结构3.2.1 顺序查找3.2.2 二叉树(二分查找)3.2.3 AVL树(平衡二叉树)3.2.4 红黑树3.2.5 B-Tree(B树)3.2.6 B+Tree(B加树)4、聚簇索引和非聚簇索引MyISAM和InnoDB的区别1、什么是索引?在说明索引定义前,引入一个案例:先假设有一张表,表的数据有10W条数据,其中有
2021-01-10 22:44:44
176
原创 MySQL驱动程序下载(保姆级别)
下载步骤:第一步:进入MySQL官网,并选择DOWNLOADS第二步:拉到末尾,选择MySQL社区下载第三步:这里有各种语言的MySQL连接器,如果是Java则选择J第四步:如果是下载驱动jar包,直接选择“无关平台”选项即可(最新版本)想下载以前版本的驱动jar包第五步:点击下载后,可以不用登录,直接进行下载第六步:下载完成解压后打开文件夹正常使用即可...
2021-01-10 13:31:41
497
原创 MySQL—事务(Transaction)详解
MySQL事务概述概念事务的语法事务的ACID特性1. 原子性(Atomicity)2. 一致性(Consistency)3. 隔离性(Isolation)4. 持久性(Duration)事务隔离级别事务并发引起的问题事务概述概念事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行行逻辑单元;是一个最小的不可分割的工作单元,能保证一个业务的完整性;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。事务的语法start transac
2021-01-07 15:32:33
440
原创 设计模式的六大设计原则
这里写目录标题1. 开闭原则1.1 开闭原则:Open Closed Principle,OCP1.2 开闭原则的作用2. 单一责任原则2.1 单一职责原则:Single responsibility principle,SRP2.2单一职责原则的优点1. 开闭原则1.1 开闭原则:Open Closed Principle,OCP开闭原则的定义:开闭原则由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software
2020-12-22 23:13:06
216
1
原创 JSON
这里写目录标题JSON格式对象格式数组格式Java与JSONGson将对象转换成JSON字符串将JSON字符串转换成对象FastJSON将对象转换成JSON字符串将JSON字符串转换成对象JSON格式JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。对象格式 /** 一本
2020-12-18 23:27:11
168
2
原创 JavaSE_多线程
这里写目录标题1、基本概念(重点)1.1 进程和线程1.2 同步与异步1.3 并发与并行2、 线程的创建2.1 基础Thread类2.2 实现Runnable接口2.3 实现Callable接口3、线程的六种状态NEWRUNNABLEBLOCKEDWAITINGTIMED_WAITINGTERMINATED线程状态关系图4 、线程的调度5、常用方法5.1 线程休眠(sleep)5.2 线程让步(yield)5.3 线程插队(join)5.4 中断标记(interrupt)6、多线程同步6.1 synchro
2020-12-15 23:14:16
164
原创 JavaSE_集合
集合类集合概述Collection接口List接口ArrayListVectorLinkedListSet接口HashSetTreeSetMap接口HashMapHashtableTreeMapIterator接口集合概述1、类集设置的目的(重点)对象数组有那些问题?普通的对象数组的最大问题在于数组中的元素个数是固定的,不能动态的扩充大小,所以最早的时候可以通过链表实现一个动态对象数组。但是这样做毕竟太复杂了,所以在 Java 中为了方便用户操作各个数据结构, 所以引入了类集的概念,有时候就可以把集合
2020-12-12 18:27:46
176
原创 Java常用工具类库 (JDK11)
目录java.util.Objectsjava.lang.Mathjava.util.Arraysjava.math.BigDecimaljava.util.Datejava.text.DateFormatjava.util.Calendarjava.lang.SystemStringjava.util.ObjectsObjects是在JDK1.7开始引入的一个工具类。此类包含static实用程序方法,用于操作对象或在操作前检查某些条件。变量和类型方法描述static bo
2020-12-09 18:56:47
577
原创 Java泛型
泛型前言:在面向对象编程语言中,多态算是一种泛化机制。例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性。此外,如果将方法参数声明为接口,将会更加灵活。概述:泛型,即参数化类型,也就是说所操作的数据类型被指定为一个参数。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定 义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。作用:1、 提高代码复用率2、 泛型中的类
2020-12-08 16:24:51
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人