自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 事务的隔离级别和传播行为

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL、C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。事务隔离级别定义了在

2021-03-16 17:37:25 407

原创 SpringCloud整合Nacos(作为注册中心,配置中心)

SpringCloud整合Nacos(作为注册中心,配置中心)1.什么是NacosNacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。2.Nacos 下载地址https://github.com/alibaba/nacos/releases下载解压后进入bin文件夹(目录:nacos-server-1.0.1\nacos\bin),直接双击执行startup.cmd文件,启动成功如下图:地址 localhost:8848/nacos 默认账户密

2021-03-15 13:37:40 546 1

原创 Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.HateoasConfiguration req

解决Springboot整个Swagger时报Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.HateoasConfiguration req错误springboot项目整合swagger要注意两者的版本,springboot项目的版本低,相应的swagger版本不能太高,反之亦然,避免项目报错,我的springboot版本为2.2.2,swagger版本为2.2.2,项目启动就会报如下错误:(这个问

2021-03-15 13:19:14 906

原创 java ThreadLocal详解(面试常问)

ThreadLocal详解在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,提问的方式有很多种,可能是循序渐进也可能是就像我的题目那样,因此只有理解透彻了,不管怎么问,都能游刃有余。接下来我们分步来剖析ThreadLocal1.什么是ThreadLocal从名字我们就可以看到ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己

2021-02-19 16:28:15 722

原创 java设计模式之观察者模式

java设计模式之观察者模式在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例子还有很多,例如,股票价格与股民、微信公众号与微信用户、气象局的天气预报与听众、小偷与警察等。在软件世界也是这样,例如,Excel 中的数据与折线图、饼状图、柱状图之间的关系;MVC 模式中的模型与视图的关系;事件模型中的事件源与事件处理者

2021-02-19 11:23:54 152

原创 java设计模式之责任链模式

java设计模式之责任链模式在现实生活中,一个事件需要经过多个对象处理是很常见的场景。例如,采购审批流程、请假流程等。公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据需要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这无疑增加了难度。在计算机软硬件中也有相关例子,如总线网中数据报传送,每台计算机根据目标地址是否同自己的地址相同来决定是否接收;还有异常处理中,处理程序根据异常的类型决定自己是否处理该异常;还有 Str

2021-02-10 15:48:11 766

原创 java 设计模式之桥接模式,策略模式

java 设计模式之桥接模式,策略模式1.引出设计模式相信大家都玩过王者荣耀这款游戏。我们知道现在大概有五十多个英雄且各自技能及背景故事被动都不一样而且还带着召唤师技能比如实现,惩戒,弱化等。每一个英雄其实就算是一个策略,实现冲向类‘英雄’,并且每个英雄互不干扰。对于召唤师技能又可以和英雄组合进入游戏里操作使用。那让我们来看看一个匹配模式的简略流程来感受设计模式。2. 策略模式2.1 策略模式的定义与特点策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相

2021-02-08 16:45:44 427

原创 java设计模式之享元模式

java设计模式之享元模式在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。1. 享元模式的定义与特点享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过

2021-02-07 16:37:15 135

原创 Reacto线程模型,基于Netty的弹幕系统案例

Reacto线程模型,基于Netty的弹幕系统案例1. 开门见山相信大家都看过多多少少的直播,这里我们只拿出弹幕系统来模拟一下。1.1 弹幕系统特点1.实时性:你发大家收,毫秒之差,你这边发了一个弹幕,其他用户会在毫秒间看到你的弹幕飘过2.并发性:一人直播,万人叭叭,比如主播发了一个“火力全开” ,发弹幕抽奖的活动,突然间上万的人要去各种刷弹幕,也要保证不崩掉,数据也要在。3.大数据量:那比如有人来晚了,主播的消息被顶到很远,你还想翻翻。1.2 架构模型1.3 实现方案标题已经说了,我们

2021-02-04 16:29:35 187

原创 java设计模式之单例模式

java设计模式之单例模式1.单例模式的定义与特点单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。在计算机系统中,还有 Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务、应用程序的日志对象、数据库的连接池、网站的计数器、Web 应用的配置对象、应用程序中的

2021-01-26 16:52:35 87

原创 mybatis-plus自动填充字段

mybatis-plus自动填充字段1. 引入mybatis-plus 依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version></dependency>2.配置字段在表对应的实体类中需要自动

2021-01-26 10:18:04 1829

原创 java设计模式之代理模式

ava设计模式之代理模式1.定义1.1什么是代理模式定义: 为其他对象提供一种代理以控制对这个对象的访问个人觉得定义算是很抽象的形容,所以就从生活出发,来透彻的理解代理模式案例:小明住在一家很好的公寓里,公寓规定了只有早上7点到八点,晚上6点到7点可以倒垃圾,但是小明早上起不来,下班晚又赶不上倒垃圾的时间。但是呢,不差钱的小明找了个人有偿帮自己倒垃圾。这就是代理模式,小明倒垃圾的行为被代倒垃圾的人完全替代。1.2什么是静态代理静态代理是指预先确定了代理与被代理者的关系,例如小明的代到垃圾

2021-01-21 18:07:30 101

原创 Get,Post,Put,Delete,Petch请求区别

Get,Post,Put,Delete,Petch请求区别1.GET一般的我们使用GET请求,来做一些查询操作。不会对数据库进行修改是安全的。但是GET请求会将参数暴露在URL,所以又不是安全的,同时会限制URL的大小2.POSTPOST请求是属于提交数据,是对数据库进行增删改的操作相比GET,它不会将参数暴露在URL,而是放置在Body中,同时不会限制URL的大小相对来说安全。3.PUTput请求与post一样都会改变服务器的数据,但是put的侧重点在于对于数据的修改操作,但是post侧重于

2021-01-21 14:03:58 470

原创 java高级特性之泛型,实战进阶

java高级特性之泛型,实战进阶继续之前一篇泛型的基础思想概念来说,本文介绍一下进阶实战,来封装一个服务端响应类这个东西有什么用呢?如果说自己是全栈工程师的话可能自己能搞定就不说了,正常来说一个大型项目,不仅仅是前后端分离还有就是很多人合作,如果不限定返回的结过,可能每个接口返回的样式千奇百怪。比如你返回了用户信息,他返回来了个错误msg等。对于前段来说,需要很多的判断,影响整个项目的可扩展性和效率比如这样:// 获取用户信息,正确返回{ "username": "jiarupc",

2021-01-20 10:51:24 201

原创 java泛型详解(一篇让你透明白!)

java泛型详解1.介绍泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数。比如void set(String s),String就是一个具体类型的形参,应用泛型的话。 此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(

2021-01-19 11:58:27 1438 3

原创 详解计算机组原之校验码(奇偶校验,CRC校验,海明码校验)

详解计算机组原之校验码(奇偶校验,CRC校验,海明码校验)校验码码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成了另一个编码。在两个编码中,从A码到B码转换所需要的的位数成为码距,如A:00要转换为B:11,码距为2.一般来说,码距越大,越利于纠错和检错奇偶校验码:在编码中增加一位校验位来使编码中1的个数位奇数(奇校验)或者偶数(偶校验),从而使码距变为2。举个例子:01101 位我们当前的编码,采用奇校验就是在最后补一位,因为现在是奇数个1所以要补0,即011010。此时发给接

2021-01-18 18:06:58 5695 1

原创 左连接,右连接,内连接,全连接的区别及使用

左连接,右连接,内连接,全连接的区别及使用众所周知,我们在写sql时经常会用到多表查询数据,这就是涉及到连接的问题包括,左连接,右连接,内连接,全外连接。定义:左连接 (left join):返回包括左表的所有记录和右表中连接字段相等的记录右连接(right join):返回包括右表的所有记录和左表中连接字段相等的记录等值连接或者叫内连接(inner join):只返回两表相连相等的行全外连接(full join):返回左右表中所有的记录和左右表中连接字段相等的记录。只说概念还不够清晰举个例子

2021-01-15 17:09:35 22820 3

原创 SpringBoot手写starter 超详细

SpringBoot手写starter相信大家在公司做项目时经常会使用到公司自己封装的依赖,里面就包括一些starter。可以用于制成通用方法以及框架等方便维护以及后续开发。所以研究了一下如何自己去写。先小试牛刀(在一个maven项目下快速两个创建springboot项目,一个用来写starter,一个用来测试。至于为什么这样建是因为,写完的starter需要打包然后配置下maven私库才能跨项目使用,所以现在同一个工程里做)首先创建完的项目就是这样子。stater的命名是有规范的,像官方的就是把自

2021-01-13 17:18:41 6322 7

原创 Springboot添加事务回滚

Springboot添加事务回滚在java开发中经常会遇到这种类似这种情况,批量插入数据的时候,有一条除了问题导致程序终止但是之前的都已经插入。对于已经出了问题的程序。之前插入的数据难保其正确性,所以当出了问题一定要回滚当前操作。再或者就是修改,删除等。springboot 提供了一个注解@Transactional@Transactional 实现原理:1) 事务开始时,通过AOP机制,生成一个代理connection对象,并将其放入 DataSource 实例的某个与 DataSourceT

2021-01-13 11:36:52 3420

原创 聊聊DTO,VO,PO的意义与他们之间的转换

@Mapper 只有在接口加上这个注解, MapStruct 才会去实现该接口 @Mapper 里有个 componentModel 属性,主要是指定实现类的类型,一般用到两个 default:默认,可以通过 Mappers.getMapper(Class) 方式获取实例对象 spring:在接口的实现类上自动添加注解 @Component,可通过 @Autowired 方式注入@Mapping:属性映射,若源对象属性与目标对象名字一致,会自动映射对应属性 source:源

2021-01-13 10:39:03 3449 1

原创 java 对两张表进行数据同步

java对sqlserver两张表进行同步操作功能描述在大型项目中,我们经常会用到读写分离技术来进行优化,及一张主表仅用来查询。一张附表用来增删改。我们现在要做的功能就是当附表数据变动后,要同步更新主表。这里使用的就是sqlserver的 MERGE 来进行操作。该关键词就是合并Update和insert使用,直接上代码sql语句:MERGE A表 AS a USING ( SELECT x.id, x.field_2, x.field_3,x.field_4 FROM B表 x )//查询有用的

2021-01-06 17:39:53 4877

原创 小白都能拿捏的SpringBoot光速搭建

小白都可以的SpringBoot项目搭建过程环境准备(java,maven,IDEA)项目搭建结束语环境准备(java,maven,IDEA)这部分环节过于简单,不做显示,可以参考度娘java环境配置:(https://jingyan.baidu.com/article/0202781175839b1bcc9ce529.html)maven环境配置:(https://jingyan.baidu.com/article/2f9b480ddc1c5d41cb6cc217.html)IDEA破解版:(h

2021-01-05 18:06:36 75

原创 java开启多线程同时查询数据库(线程池+redis缓存优化)

java多线程查询数据库(线程池)需求介绍:调用接口后一个页面要展示两个列表,而且数据量很大。分析:如果按原始方法进行两次查询再将结果返回当然也是可以的。但是查询时间就是两个查询的和,数据量很小的话推荐此方法。但如果数据量很大,正常情况下SELECT * 的时间很长,而且还是两张表,整体的接口执行时间就很慢,很影响用户体验。所以我们必须进行优化,所以想到用多线程来进行查询,同时开启两个线程来查询数据库,最后时间就很快了。再加上整个列表会进行分页,大数据量的情况下会有很多页数据。由于后面的数据很少会去

2021-01-05 18:04:38 8474

原创 多数据源的创建与切换(单例)

项目需求背景最近做项目的时候碰到一个需求还蛮不错的分享一下。简化版:根据输入的数据源信息(url,driverClassName,username,password)来连接新数据源,同时获取该数据源下所有的数据库名字。这里采用的是dynamic动态数据库完成直接上代码<!-- 动态数据库 --> <dependency> <groupId>com.baomidou</groupId>

2021-01-04 18:42:56 343

原创 JPA,Hibernate,mybatis,mybatis plus,Querydsl,JDBC五种数据库框架使用感受

JPA,Hibernate,mybatis,mybatis plus,Querydsl,JDBC五种数据库框架使用感受感受对比JPA,Hibernatejdbcmybatis,mybatis plusQuerydsl结束语感受对比JPA,HibernateJPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。那么Hibernate是如何实现与JPA 的这种关系的呢?Hibernate主要是通过三个组件来实现的,及hibernate-annotation、

2020-12-28 12:03:11 3202 3

空空如也

空空如也

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

TA关注的人

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