自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(249)
  • 资源 (5)
  • 收藏
  • 关注

原创 git解决本地分支合并test分支冲突的问题

一、博客背景本篇博客仅作为工作记录使用,记录自己解决问题的过程,同样,本篇博客中介绍的方法不适合所有的人解决冲突。二、分支介绍master分支test分支dev-wuzhu分支(自己开发的分支)dev-xiali分支(同事开发的分支)分支使用前提:我现在所在的公司的发布流程是,先将自己的分支合并到test上,如果test分支发布且测试没问题后,合并到master分支发布生产环境,且不允许将test分支往自己的分支上合并,因为这样会存在将在test分支上,尚未测试通过的分支合并到本

2021-07-16 17:50:15 118

原创 利用hutool解析excel内容转换为实体,实体属性为空

一、博客前提工作中有遇到一个需求,客户提供需要插入数据库的原始数据的excel表格,我去解析表格,将数据插入数据库。当时立马就想到了用hutool的工具类,直接将excel表格nei'r

2021-06-08 20:53:46 512 4

原创 spring boot项目使用threadlocal存储用户信息实现数据权限控制

一、博客背景 项目是前后端分离的spring boot项目,前端将标识用户信息的code存储在cookie中,当实现从cookie中获取到code值后,再查询数据库获取数据用户信息后,如何将用户信息一层一层的往下传递?有人可能将用户信息存储到HttpServletRequest请求中,后续需要用到用户信息的时候,再从HttpServletRequest中获取。如果在dao层需要用户信息,还需要将HttpServletRequest一层一层传递,或者说在controller中获取到用户信息一层一层传..

2021-05-26 17:48:47 331

原创 spring boot项目使用@ControllerAdvice做全局异常处理

一、博客背景在项目中有遇到一个需求,对于项目中的特殊异常信息信息需要做一个处理,统一返回到前端。二、代码统一异常处理类import com.tp.common.constant.CommonConstant;import com.tp.common.exception.BusinessException;import com.tp.common.exception.TokenException;import com.tp.common.model.Resp;import com.t

2021-05-26 10:18:57 54

原创 方法里基本类型参数,方法内部改变不会修改方法外部的值

话不多说,直接上代码一、代码 @org.junit.Test public void test7(){ int a= 3; add(a); System.out.println(a); List<String> list = new ArrayList<>(); list.add("c"); addList(list); System.out.pr

2021-05-21 17:00:27 106

原创 jvm知识体系学习

本篇博客作为笔记记录学习使用一、类加载器、类加载机制、双亲委派模型等知识什么是类的加载类的生命周期类加载器类的加载双亲委派模型自定义类加载器详情查看:https://mp.weixin.qq.com/s?__biz=MzI4NDY5Mjc1Mg==&mid=2247483934&idx=1&sn=41c46eceb2add54b7cde9eeb01412a90&chksm=ebf6da61dc81537721d36aadb5d20613b044

2021-03-16 16:46:02 105

原创 Socket编程

本篇博客仅作为一个笔记使用一,网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户

2021-03-15 10:37:18 85

原创 mysql如何不依赖数据库客户端将一个表中的数据迁移到令一个数据库中

本次操作只需执行两句sql,分比为mysqldump -u root -p mytest(自己替换数据库名)tb_sent(自己替换表名)> D:/yourtabledata.sql(你需要存储的sql地址)mysql -u root -p safe(自己替换需要导入数据的数据库名)< D:/yourtabledata.sql(前面导出的sql文件存储地址)操作细节,请看下面的步骤一、导出数据打开命令行输入以下sql:表格中需要替换的数据库名和表名...

2021-02-04 20:23:07 42 1

原创 spring boot项目中mybatis plus多数据库支持

一、博客背景当你的项目需要兼容多种数据库,当你在mapper接口中定义一个方法时,你的xml中需要有一个id为你的方法名的标签实现语句,但是在一个xml中id只能唯一,但是你又需要兼容多个数据库,这时你要怎么处理。有两种方法可以处理1.在mapper中定义多个方法,分别对应不同的数据库,xml针对不同的方法写sql,这样就不会存在id冲突的情况了2.在mapper文件中定义一个方法,xml中使用多个id相同的sql语句,且用databaseId标识,这样同样可以解决上面的问题,下面就来讲解具

2021-02-01 16:35:07 849

原创 ConcurrentHashMap源码查看

一、博客背景因hashmap不是线程安全的,在多线程下插入会有死锁的问题,所以ConcurrentHashMap就出现来替代了,ConcurrentHashMap在java7和java8中数据结构有了变化,我们本篇博客会根据我们目录中的提到的问题一起交叉查看jvav7和java8的源码,查看之前可以自己先想想问题的答案。篇幅较多,请耐心看完,java7的版本号为1.7.0_04,java8的版本号为1.8.0_162二、常见问题CurrentHashMap的实现原理 CurrentHashMa

2021-01-21 20:51:40 109

原创 break 通过自定义标签跳到指定位置

实现比较简单,但是不常用,所以本篇博客作为一个笔记使用,因代码简单,直接粘贴代码和运行结果public class Tets { public static void main(String[] args) { b:for(;;){ System.out.println("bbbbbbbbbbbbbbbbbbbbbb"); a: for(;;){ int i =0; for

2021-01-21 09:56:48 311 3

原创 数据结构之树

一、什么是树树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树结构示意如下图二、树的相关属性结点:使用树结构存储的每一个数据元素都被称为“结点”。孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点;结点的

2021-01-19 15:15:06 66

原创 TreeMap源码查看

一、构造函数// 自定义的比较器,用于给TreeMap的元素排序private final Comparator<? super K> comparator;// 红黑树的根节点private transient Entry<K,V> root;// 节点数目private transient int size = 0;// TreeMap结构的修改次数,用于fail-fast机制private transient int modCount = 0;// 无参

2021-01-18 21:14:43 49 1

原创 set集合类源码查看

一、博客背景set接口下有两个主要常用地的实现子类hashset、linkedhashset和treeset,今天我们就一起来查看学习下二、hashset1.构造函数private transient HashMap<E,Object> map;private static final Object PRESENT = new Object();public HashSet() { map = new HashMap<>();}public Hash

2021-01-18 18:08:28 47 1

原创 LinkedHashMap源码查看

一、背景 LinkedHashMap是基层HashMap的一个子类,所以很多方法都是用的HashMap的方法,尚未了结HashMap的同学可以去看下我的上一篇博客,在本篇博客中涉及到HashMap的源码方法就不不粘贴了,同样本篇会讲解下java7.和java8的代码java7的版本号为1.7.0_04,java8的版本号为1.8.0_162二、问题LinkedHashMap的数据结构三、构造函数1.java7//循环链表的头结点private transient Ent..

2021-01-18 17:04:08 28

原创 HashMap源码查看

一、博客背景hashmap在java7和java8中数据结构有了变化,我们本篇博客会根据我们目录中的提到的问题一起交叉查看jvav7和java8的源码,篇幅较多,请耐心看完,java7的版本号为1.7.0_04,java8的版本号为1.8.0_162二、常见问题HashMap的底层原理是什么? 为什么JDK 7使用数组+链表?JDK8中为什么要使用红黑树? hashmap底层是如何put的 hashmap底层是如何实现get的 hashmap如何扩容

2021-01-14 17:57:26 287

原创 List集合类源码查看

一、博客背景list接口下有两个主要常用地的实现子类ArrayList和LinkedList,今天我们就一起来查看学习下,使用的jdk版本为1.7.0_04二、ArrayList在查看源码之前我们思考一下下面的问题,然后带着问题去学习 ArrayList底层实现原理 ArrayList的默认容量大小? ArrayList的插入或删除一定慢吗? ArrayList底层就是数组,访问速度本身就比较快,为什么还要实现RandomAccess接口? Arra

2021-01-13 19:40:47 138

原创 java集合框架大览

一、为什么需要java集合类框架 在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所以的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,java5还在j..

2021-01-12 17:27:20 58

原创 java多线程基本知识

一、什么是进程,什么是线程,进程和线程的区别进程是资源调度和分配的基本单位。是在系统中正在运行的一个应用程序线程是CPU调度和分配的基本单位。将一个进程划分为若干个独立的执行流,每一个执行流均称为一个线程。二、java中多线程的实现方式继承 Thread 类public class NewThreadName extends Thread{ @Override public void run(){ //线程的执行代码在这里 }}实现

2021-01-06 16:43:38 33

原创 Executor框架

本文的博客仅仅作为笔记记录使用,转载别人优秀的博客https://blog.csdn.net/tongdanping/article/details/79604637

2021-01-06 09:47:05 29

原创 http等网络协议和webservice soket

一、每一层分别有什么协议二、TCP/IP协议TCP/IP 是 Internet 所用的协议,它是一个协议栈,由一系列小而专的协议组成,可分为三个层次:网络层,传输层和应用层网络层:IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议传输层:TCP协议与UDP协议;应用层:FTP、HTTP、TELNET、SMTP、DNS等协议三、HTTP HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TC..

2020-12-29 17:04:39 137

原创 springboot控制是否注册redis

一、博客背景最近项目中有使用到redis做缓存队列,但是还提供了其他的缓存方式,所以redis需要做成可配置的,所以在这里记录下项目中的配置情况。二、代码将redis的所有相关文件放在一个application-redis.properties配置文件中,当需要使用该配置的时候在application.properties中的配置项中加上spring.profiles.active=redis################### Redis配置#####################

2020-12-21 16:22:11 107

原创 spring boot项目配置阿里数据源兼容多种数据库

一、博客背景最近在做的一个项目需要用到阿里数据源和四种数据库,分别为mysql,oracle,db2,sql server数据库,项目中的阿里数据源需要兼容4套数据库,且只写一个总的配置文件,而不是mysql对应一套,oracle对应一套二、代码展示application.properties#datasource数据源的配置信息spring.profiles.active=datasource##数据库配置#数据库类型(1.oracle,2.sqlServer,3.mysql,4.

2020-12-15 17:00:03 244

原创 springboot项目自动加载配置文件中的配置到map中

一、博客前提本篇博客做为自己使用@ConfigurationProperties注解的功能笔记本篇博客展示的功能就是spring boot项目启动后,自动将配置文件中的配置项加载到一个map中去二、代码展示java配置文件@Configuration@ConfigurationProperties(prefix="spring")public class MyDataSourceConfig { private Map<String, String> datas

2020-12-15 15:46:48 728

原创 数据库查询当前时间操作,分页查询

一、本文背景项目中有使用mysql,db2,sql server,oracle四种数据库,有进行时间的对比,和获取当前的时间,在本文总结一下这四种数据库不同的sql写法二、获取当前时间1.mysql获取当前时间2.db2获取当前时间3.sql server获取当前时间select GETDATE();4.oracle获取当前时间三、java传入字符串与数据库时间对比表中的FIX_BEGINTIME 为TIMESTAMP类型1.mysql字符串转时间对比2.db2字

2020-12-11 09:59:38 280

原创 设计模式之访问者模式

1、问题引入  今天我们看的是访问者模式【Visitor Pattern】,我们理解访问者模式这个名称可能会有利于我们理解其核心代码块。我们看这么个例子:我去朋友家做客,那么朋友属于主人,我则属于访问者。这时刚好朋友在炒菜,却没得酱油了。如果朋友下去买酱油将会很麻烦而且会影响炒菜。这时就到我这个访问者出马了。一溜烟的出去打着酱油就回来了。简单理解的来说就是,访问者在主人原来的基础上帮助主人去完成主人不方便或者完不成的东西。访问者模式介绍一、来由  在软件系统开发中,我们经常会遇见一些层次结.

2020-11-27 09:37:24 40

原创 设计模式之模板模式

一、定义模板模式又名模板方法模式,父类定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。例如,一个互联网产品开发过程中,有需求调研,原型输出,代码开发,测试,结项怎么几部分,所以我们可以将这几大步骤放到父类中定义,但是具体如何调研,如何开发,测试则是可以放到子类实现。二、优缺点优点1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。缺点每一个不同的实现都需要一个子类来.

2020-11-25 16:01:51 73 1

原创 设计模式之状态模式

一、模式引入生活中对象的状态概念无处不在,例如你拨打一个人手机的时候,有停机,欠费,关机,正在通话中,接通这几种状态,对于不停的状态你肯定有不同的处理方式,例如停机了,你可能以后永远不再拨打这个号码了,欠费和关机可能过一段时间再打,正在通话中可能过个几分钟就会打过去。又如公交车有开门,关门,运行,停车等状态,只有开门才能上车和下车,关门和运行状态的就坐好,停车了就下车在软件开发过程中,应用程序中的部分对象可能会根据不同的状态做出不同的行为。二、定义当一个对象的内在状态改变时允许改变其行为

2020-11-25 11:01:57 34

原创 java设计模式之策略模式

一、问题引入 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。而我们通常编程的时候,将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来进行选择。但是这样就引出一个问题,假如我需要要增加一种新的算法,需要修改封装算法类的源代码;更换算法,也需要修改客户端调用代码。有什么方法可以实现新增的,更换的时候不对原有代码做改动呢。如何让算法和对象分开来,使得算法可以独立于使用...

2020-11-24 11:31:02 45

原创 java设计模式之空对象模式

一、问题引入在我们日常的编码过程中,我们经常会写出类似如下代码Object object = map.get(index);if(object != null){ //调用test方法 object.test() }从上面的代码我们可以看到,我们获取到一个object对象时,需要先对它进行空判断,然后在对object对象进行操作,如果不尽兴判空操作,直接对object对象,有可能会报空指针异常。二、问题解决为了解决上面的问题,假如我们客户端不想做.

2020-11-21 10:14:15 59

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

一、定义定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。可以看到中介模式主要是用来封装交互的。二、主要解决对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。也就是将网状结构改为星状结构三、模式举例qq群,五八找房平台等房屋中介四、优缺点1、优点 降低了对象之间的耦合性,使得对象易于独立地被复用。 将对象间的...

2020-11-20 10:51:28 58

原创 设计模式之迭代器模式

一、定义提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。二、主要解决遍历整合对象三、应用实例JAVA 中的 iterator。四、组成结构迭代器(Iterator):迭代器定义访问和遍历元素的接口。 具体迭代器(ConcreteIterator):具体迭代器实现迭代器接口,对该聚合遍历时跟踪当前位置。 抽象集合(Aggregate):聚合定义创建相应迭代器iterator()方法对象的接口。类比容器类接口Collection,List,Set 具体集合

2020-11-18 15:17:38 51

原创 设计模式之命令模式

一、定义将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志。以及支持可撤销的操作。简单说就是将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通。二、主要解决在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。三、包含角色Command(抽象命令类):抽象出命令对象,可以根据不同的命令类型。写

2020-11-17 16:54:00 68 2

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

一、概念 责任链,顾名思义,就是用来处理相关事务责任的一条执行链,执行链上有多个节点,每个节点都有机会(条件匹配)处理请求事务,如果某个节点处理完了就可以根据实际业务需求传递给下一个节点继续处理或者返回处理完毕。简单的说就是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。二、使用场景有多个对象可以处理同一个请求,具体哪个对象处理该请求待运行时刻再确定。 在不明确指定接受者的情况下,向..

2020-11-16 16:12:31 45

原创 设计模式之代理模式

一、定义在代理模式(Proxy Pattern)中,创建一个类代表另一个类的功能,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.二、意图为其他对象提供一种代理以控制对这个对象的访问。侧重点为控制三、优缺点优点:1、职责清晰。 2、高扩展性。 3、智能化。缺点:1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外..

2020-11-06 17:51:02 65

原创 设计模式之享元模式,组合模式,过滤器模式,原型模式,解释器模式,中介者模式

一、享元模式1、定义享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。2、解决问题在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。3、应用实例JAVA 中的 String,如果有则返回,如果没有则创建一个字符串保存在字符串缓存池里面。数据库的数据池。4、优点

2020-11-06 15:18:36 78

原创 设计模式之外观模式

一、什么是外观模式你家里有各种电器的开关,照明灯开关,家电开关什么的,你平常用用哪个电器就去打开哪个电器的开关。但是你家里也有一个电源总开关,可以控制这些家电的开关使用,这个总共开关便可以理解为这些家电系统的外观模式设计。二、定义外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。外观模式的目的不是给予子系统添加新的功能接口,而是为了让外部减少与子系统内多个

2020-11-06 13:59:18 97 4

原创 设计模式之装饰器模式

一、定义 装饰器模式属于结构型模式,在不改变原有对象的基础上将功能附加到对象,相比继承可以更加灵活地扩展原有对象的功能。简单来说创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能二、角色Component,抽象构件  Component是一个接口或者抽象类,是定义我们最核心的对象,也可以说是最原始的对象ConcreteComponent,具体构件,或者基础构件  ConcreteComponent是最核心、最原始、最基本的接口或抽象类Comp..

2020-11-05 18:16:37 69 1

原创 设计模式之桥接模式

一、定义桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。二、核心桥接模式 的核心在于 解耦抽象和实现。注:此处的 抽象 并不是指 抽象类 或 接口 这种高层概念,实现 也不是 继承 或 接口实现 。抽象 与 实现 其实指的是两种独立变化的维度。其中,抽象 包含 实现,因此,一个 抽象 类的变化可能涉及到多种维度的变化导致的。三、优缺点1、优点抽象和实现分离:这是 桥接

2020-11-04 16:11:43 78

原创 设计模式之适配器模式

一、定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 例如我们在给手机充电时,连接到插座上的那个,它的学名就称之为”适配器”。我们国家提供的是220v的电,我们手机充电需要的却只需要5v二、角色目标角色(target):这是客户锁期待的接口。目标可以是具体的或抽象的类,也可以是接口适配者角色(adaptee):已有接口,但是和客户器期待的接口不兼容,需要适配的类或适配者类适配器角色(adapter)...

2020-11-03 14:53:17 57

spring boot整合shiro实现url请求过滤

本demo为Spring boot整合shiro,以mybatis plus做dao层交互数据,实现了读取数据库用户数据实现用户登录,权限认证,读取数据库中用户对应的url请求,实现请求的过滤。自定义了relam和过滤器来实现这些功能

2020-07-13

shior2.zip

本案例是基于springboot+mybatis plus作为基础框架,整合shiro安全框架做的登录,权限认证案例,其中包含了如何自定义relam,shiro如何读取数据库实现权限认证

2020-07-08

Elasticsearch6.22和kibana6.22 windows版本启动包

Elasticsearch6.22和kibana6.22 版本启动包

2020-10-12

springboot-security.rar

spring boot项目配置spring security,然后通过读取数据库用户以实现权限认证,通过数据库中用户对象配置权限实现页面拦截,即哪个页面所有用户都可以反问,哪些页面只有哪些特定用户可以访问

2020-06-04

spring cloud study demo.zip

本案例中包含为一套基础spring cloud的学习demo,其中包含了eureka服务中心的搭建,eureka服务注册和发现,ribbon的服务调用,feign的服务调用,zuul网关的实现,spring cloud config配置中心和配置客户端的搭建,spring cloud的消息总线,spring cloud hystrix断路器,断路器监控,断路器聚合监控等服务

2020-07-30

空空如也

空空如也

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

TA关注的人 TA的粉丝

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