自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CAT

机会总留给有准备的人!

  • 博客(150)
  • 资源 (1)
  • 收藏
  • 关注

原创 【设计模式】11.创建型模式-简单工厂模式(Simple Factory)

在工厂模式的大类中,具体有三个小的子类模式,包含简单工厂模式、工厂方法模式、抽象工厂模式。其中简单工厂模式并没有放到23种设计模式中,但是对于理解另外两种设计模式有重要作用。这篇文章中,主要介绍一下简单工厂模式:一、描述  简单工厂模式有一个具体的工厂类,可以生成多个不同的产品。  该模式的使用场景为:如果用户需要使用一个产品,首先要创建这个产品,之后再使用该产品。但是用户并不关心产品的构...

2022-06-13 09:52:00 157

原创 【设计模式】9.创建型模式-单例模式(Singleton)

一、描述:  某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。二、特点:  1.单例类只有一个实例对象  2.该单例对象必须由单例类自行创建  3.单例类对外提供一个访问该单例的全局访问点。三、优点:  1.单例模式可以保证内存里只有一个实例,减少了内存的开销。  2.可以避免对自愿的多重占用。  3.单例模式设置全局访问点,可以优化和共...

2022-06-07 10:22:00 153

原创 【设计模式】8.设计模式原则-合成复用原则

一、原则:  要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。二、和继承复用的区别  合成复用和继承复用在类的关系有差别,一个是继承,一个是组合关系。我认为在实际使用时,可以根据业务场景来区别使用,这样不会很乱。  继承复用的优缺点:    优点:    1.使用比较方便,可以直接调用父类的属性以及公共方法,不需要额外再建立父类的对象,直接建...

2022-06-07 10:21:00 503

原创 【设计模式】6.设计模式原则-接口隔离原则

一、原则:  一个类对另一个类的依赖应该建立在最小的接口上。要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。二、作用:  1.将臃肿庞大的接口分解为多个粒度小的接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。  2.接口隔离提高系统的内聚性,减少了对外交互,降低了系统的耦合性。  3.如果接口的粒度大小定义合理,能够保证系统的稳定性;...

2022-06-02 10:46:00 204

原创 【设计模式】7.设计模式原则-迪米特法则

一、原则:  如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。二、作用:  1.降低了类之间的耦合度,提高了模块的相对独立性  2.由于亲和度降低,从而提高了类的可复用性和系统的扩展性。  3.过渡使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性,使模块之间的通信效率降低。所以,在采用...

2022-06-02 10:46:00 238

原创 【设计模式】4.设计模式原则-单一职责原则

一、原则:  规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。二、作用:  1.降低类的复杂度。一个类只负责一项职责,其逻辑肯定要比负责多想职责简单得多。  2.提高类的可读性。复杂性降低,自然其可读性会提高  3.提高系统的可维护。  4.变更引起的风险降低。变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。三、实现:  1....

2022-06-01 11:28:00 262

原创 【设计模式】5.设计模式原则-依赖倒置原则

一、原则:  高层模块不应该依赖低层模块,两者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。面向接口编程,不要面向实现编程。二、作用:  1.可以降低类间的耦合性  2.可以提高系统的稳定性  3.减少并行并发引起的风险  4.提高代码的可读性和可维护性三、实现:  1.通过面向接口的编程来降低类间的耦合  2.每个类尽量提供接口或抽象类,或者两者都具备  3.变量...

2022-05-30 15:28:00 124

原创 【设计模式】10.创建型模式-原型模式(Prototype)

一、描述:  将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。二、特点:  用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。三、优点:  (1)Java自带的原型模式基于内存二进制流的复制,在性能上比直接new一个对象更加优秀。  (2)可...

2022-05-24 19:05:00 143

原创 【设计模式】3.设计模式原则-里式替换原则

一、原则:  继承必须确保超类所拥有的性质在子类中仍然成立。子类可以扩展父类的功能,但不能改变父类原有的功能。子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。二、作用:  1.里式替换原则是实现开闭原则的重要方式之一。  2.它克服了继承中重写父类造成的可复用性变差的缺点。  3.它是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性...

2022-05-23 16:19:00 126

原创 【设计模式】2.设计模式原则-开闭原则

一、原则:  软件实体应当对扩展开放,对修改关闭。当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。二、软件实体包含哪些?  1.项目中划分出的模块  2.类与接口  3.方法三、作用:  1.对软件测试的影响。软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试代码仍然能够正常运行。  2....

2022-05-23 15:28:00 149

原创 【设计模式】1.设计模式介绍

设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。可复用性,可维护性,可读性,健壮性,安全性1995年,GoF(Gang of Four,四人帮)合作出版《设计模式:可复用面向对象软件设计的基础》一书,共收录了23种设计模式,从此树立了软件设计模式领域的里程碑,人称【GoF设计模式...

2022-05-12 11:45:00 141

原创 6.Excel表格多单元合并

需要动态生成如下的表头,涉及到横向、纵向单元格合并,效果图:使用的是SXSSFWorkbook,可用于数据量很大的情景,会将数据放在硬盘上,防止堆内存溢出代码如下:import lombok.extern.slf4j.Slf4j;import org.apache.poi.ss.usermodel.*;import org.apache.poi.ss.util.CellRa...

2022-05-12 11:12:00 1686

原创 5.堆内存溢出以及导出Excel表格超时问题解决(性能优化心得)

业务场景是主要是查询或者导出某家分销商一个月内产生的退票退款订单数据。由于涉及到机密数据,因此不便展示效果图。只记录一下遇到的两个经典的问题以及解决思路以供参考。出现的问题:因为测试环境测试不出生产环境的问题,生产环境订单量较大,我看了一下订单加在一起有三千多万条,因此部署到生产环境之后导出功能出现了两个问题,一个是内存溢出,另一个是导出超时。思路:因为导出的数据格式和查询的数据格式相同...

2022-05-12 11:07:00 887

原创 4.log4j2实现日志脱敏

日志脱敏日志基础研究脑图日志基础框架图主要参考资料:  源码分析: https://www.cnblogs.com/xiaoxi666/p/11426259.html https://cloud.tencent.com/d...

2022-04-11 16:21:00 801

原创 3.使用注解实现记录接口日志

功能如下:要求平台登录用户记录操作日志,记录增删改以及接口类型。思路是在需要记录的地方添加注解,之后再用aop监听此注解,将数据记录到数据表中。具体如下:建立自定义注解://在方法中生效@Target({ElementType.METHOD})//在运行过程中生效@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @in...

2022-03-16 11:29:00 516

原创 2.记@NotEmpty不生效问题解决

  问题:Controller层添加@NotEmpty或者@NotNull不生效,像下面这样:1 @ApiOperation(value = "测试")2 @GetMapping("/test")3 public String test(@NotEmpty(message = "desc不能为空") String name,4 ...

2022-03-04 10:24:00 842

原创 1.跨项目文件流转发功能实现

需求:文件流从当前项目转发到另外一个项目。思路:需要拦截请求中的文件流,组装之后转发到另外一个项目中。效果:具体步骤如下:1.首先读取文件的接口api接口,接收文件:package com.zxy.demo.api;import com.zxy.demo.service.FileService;import lombok.extern.slf4j.Slf4j;impo...

2022-03-03 18:59:00 601

转载 2021-09-06 @NotNull, @NotEmpty和@NotBlank之间的区别是什么?

简述三者区别@NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。 @NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。 @NotBlank://String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0。 注解的定义(在version 4.1中):

2021-09-06 11:12:20 222

原创 windows10系统下kafka+zookeeper安装启动步骤

1.首先电脑上要安装好jdk,并且配置好jdk环境变量等。我的是jdk1.82.下载zookeeper以及kafka安装包zookeeper:http://zookeeper.apache.org/releases.html(apache-zookeeper-3.5.5-bin.tar.gz )kafka:http://kafka.apache.org/downloads.html(kafka_2.11-2.1.1.tgz)3.安装zookeeper:(1)解压,D:\software.

2021-05-21 14:34:37 629

原创 Java中级软件工程师面试心得

已经一个多月没有写文章了,这些天,我先辞职,之后在家带孩子,准备面试相关资料,然后上周开始投简历、找工作,面了两天选择了一家中型互联网公司,经历了不到一个月的时间。相较于之前甲方提需求乙方做内容的工作,我的内心其实更想挑战做自己的产品,虽然客户群体不定,但是不是更有挑战,每天都有新的感觉吗?嗯。。。这十分符合我射手座的喜新厌旧的性格和之前面试初级时的心态和方法不一样,这次我准备了不止一个月,其实从去年我就开始在刻意准备,随着工作越来越长的时间,我越来越发觉知识的重要性,知识就像一个无底洞,永远会挖掘到更

2021-04-24 23:55:37 483

转载 SQL注入分析及解决办法

作者:Jewel链接:https://zhuanlan.zhihu.com/p/35723803来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章由 Jewel591 创作,引用请注明来源,感谢配合一、Sql注入简介Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。二、Web 程序三层架构三层架构(3-tier architect.

2021-04-17 09:40:51 1017

转载 重写equals和hashcode分析

原文链接:https://blog.csdn.net/fenglibing/article/details/8905007以下是关于HashCode的官方文档定义:hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。hashCode 的常规协定是:在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。..

2021-04-12 09:27:22 182

原创 HashMap多线程不安全原因分析

在之前准备面试题时,遇到过分析为什么HashMap线程不安全,答案是resize()可能会造成死循环,今天就分析一下resize()这个方法,我主要是靠分析源码解析,如有错误,欢迎指正!resize()代码: final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; int oldCap = (oldTab == null) ? 0 : oldTab.length;

2021-03-16 10:21:57 1372 1

转载 Java中高级面试题整理

一.基础知识:1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet);2)HashMap的底层实现,之后会问ConcurrentHashMap的底层实现;3)如何实现HashMap顺序存储:可以参考LinkedHashMap的底层实现;4)HashTable和ConcurrentHashMap的区别;5)String,StringBuffer和StringBuilder的区别;6)Object的方法有

2021-03-09 14:13:47 291

原创 StringBuffer的append()源码分析以及适用场景

在牛客网上做了一道题:答案是StringBuffer以及String。String不用说,是字符串常量类。但是StringBuffer是常量类,用了这么多年我还是才知道,今天研究一下StringBuffer类。首先,我是带着以下几个问题研究的:(1)StringBuffer 使用final修饰,为什么可以拼接字符串,改变内容?(2)为什么打印StringBuffer对象打印的是拼接后的值,而不是StringBuffer对象?(3)使用StringBuffer 的优势在哪里?什么情况下使用

2021-03-09 11:26:18 2477

转载 GC 可达性分析中哪些算是GC ROOTS?

首先那肯定还得是看看概念了,在JVM中,什么可以作为GC Root呢?虚拟机栈(栈帧中的本地变量表)中引用的对象。   方法区中类静态属性引用的对象。 方法区中常量引用的对象。 本地方法栈中JNI(即一般说的Native方法)引用的对象。class v { b,c}class b{ d}class d{ c}class c{ b}1. fun(...){2. v a = new A;3. a.b = new B;4. a.c = new C;5.

2021-03-04 16:36:34 533 1

转载 Java-类加载机制

通过灵活定义classloader的加载机制,我们可以完成很多事情,例如解决类冲突问题,实现热加载以及热部署,甚至可以实现jar包的加密保护。本篇回答从classloader的原理解析讲起,详细解读一下背景和实际使用场景。什么是classloaderclassloader顾名思义,即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。了解java的类加载机制,可以快速解决运行时

2021-03-03 08:39:32 231

原创 java值传递和引用传递

在牛客网上做题,做错了一道关于值传递和引用传递的问题,如下:class Value{ public int i=15;}public class Test{ public static void main(String argv[]){ Test t=new Test( ); t.first( ); }public void first( ){ int i=5; Value v=new Value( ); v.i=

2021-03-01 17:13:38 259

转载 栈和栈帧

堆栈(stack)又称为栈或堆叠,是计算机科学里最重要且最基础的数据结构之一,它按照FILO(First In Last Out,后进先出)的原则存储数据。栈的相关概念:栈顶和栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。 压栈:栈的插入操作,叫做进栈,也称压栈、入栈。 弹栈:栈的删除操作,也叫做出栈。下面是栈的示意图,从图中可以清楚的看到,不管是插入数据还是删除数据,都是在栈顶进行的,还有就是FILO原则,可以看到,如果你想取出B的值,那么你必须先要将B的上面的C取出,要取出C的值

2021-02-27 16:19:28 1152

原创 MySQL-索引

MySQL数据库的索引

2021-02-27 14:51:45 192

原创 i++ + i等于多少?关于i++以及++i的分析

https://blog.csdn.net/android_cai_niao/article/details/106027313

2021-02-27 09:15:25 1998

原创 a == MESSAGE以及(b+c)== MESSAGE研究

在牛客网回顾以前的错题,有一道题再次出现问题,因此在这里分析一下这道题以及背后的原理private static final String MESSAGE = "taobao";public static void main(String [] args){ String b = "tao"; String c = "bao"; System.out.println(a == MESSAGE); System.out.println((b+c) == MESSAGE);}https:

2021-02-26 13:10:17 425

转载 dubbo是什么

在了解dubbo前我们需要先了解一下它产生的背景。一、产生的背景随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。下面我们用一个图来具体说明架构和开发框架的演进过程。1. 单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。2. 垂直应用架构当访问量逐渐增大,单一应用增加机器带来.

2021-02-26 09:12:50 311

原创 算法-合并排序

上周分析了排序算法,这周分析合并排序算法。思想合并排序也是分治算法中的一种思想,将一组数组从中分成两组,再将两组各自从中分成四组,依次循环分组,直到每组只剩下单独的只包含一个数字的数组。之后再将各个数组依次按照大小排序合并成一组,就成为了有序的数组。画图分析先展示分组,以长度为9的数组为例:[9,5,2,7,12,4,3,1,11]先拆分数据:1.取中间下标mid = (0+8)/2 = 4,因此分为两个数组:下标0~4,5~8两组。2.分0~4下标的数组,mid=(0+

2021-02-05 15:07:42 1397 1

原创 算法-快速排序

最近在学习算法,算法主要有回溯法,贪心法,动态规划法,分治法等。其中分治法又有二分查找,合并排序,快速排序等算法,今天学了一个比较重要的算法:快速排序。整理一下学习内容,如下:题目:给出一个数组:[10,8,5,4,2,1,3,6,7],...

2021-01-30 16:07:33 280 2

原创 MySQL -乐观锁与悲观锁

乐观锁与悲观锁是数据库的一种思想,和其他的排它锁,共享锁之类的不是一类含义。在并发的情况下,采用乐观锁或者悲观锁可以防止数据问题。悲观锁定义悲观锁:乐观锁

2021-01-23 15:15:43 394 5

转载 mysql四大排名函数(row_number、rank、dense_rank、ntile)使用简介

有如下表1.row_numberrow_number在排名时序号 连续 不重复,即使遇到表中的两个3时亦如此执行select row_number() OVER(order by e.salary desc) as row_num , e.salaryfrom employee e结果如图注意:在使用row_number实现分页时需要特别注意一点,over子句中的order by 要与Sql排序记录中的order by 保持一致,否则得到的序号可能不是连续的例如:执行select row

2021-01-21 10:16:17 1473

原创 MySQL事务隔离级别

MySQL的事务隔离级别分为4种读未提交读已提交可重复读可串行化

2021-01-18 10:14:19 414

原创 使用两台电脑模拟Eureka,访问不通。设置McAfee(迈克菲)防火墙问题解决

Eureka是Spring Cloud五大组件之一作用:实现服务治理(服务注册与发现)简介:Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。由两个组件组成:Eureka服务端和Eureka客户端。Eureka服务端用作服务注册中心。支持集群部署。Eureka客户端是一个java客户端,用来处理服务注册与发现。在应用启动时,Eureka客户端向服务端注册自己的服务信息,同时将服务端的服务信息缓存到本地。客户端会和服务端周期性的进行心

2021-01-11 14:23:13 1531

原创 2020年结尾总结

今天是2020年阳历的最后一天,真巧,还是我的生日,遗憾的是这年的计划没有完成,理想总是完美的,虽然考虑到自己可能写不完,但是到年底最后一天还是有些不甘。明年的任务除了明年的计划还需要补上今年的任务。 周总理的一句真理:书籍是人类进步的阶梯,同样,学习永无止境!希望看到文章的你今年的总结十分圆满,明年的计划仍旧动力十足。...

2020-12-31 08:58:42 433

查找含相同字母的单词(Java)

查找含相同字母的单词(Java)

2020-12-23

空空如也

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

TA关注的人

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