自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中级面试题记录(四)

被@Compoment修饰的类将会被纳入到IOC容器中可以。

2023-10-25 09:31:07 312

原创 Java中级面试题记录(三)

本次出去面试遇到的一些问题

2023-09-05 20:10:08 517 1

原创 Java中级面试题记录(二)

线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。尾递归,顾名思义递归方法的调用放在了方法的尾巴上,调用递归方法是 本次方法已经结束了,栈中对应的栈帧已经消失了,可以有效地避免栈的溢出问题覆盖索引是select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖。

2023-03-24 15:50:23 731 1

原创 一篇文章教你如何在项目中正确使用@DateTimeFormat注解和@JsonFormat注解

项目中大家肯定都遇到过前端传时间参数给后端,最常见的时间格式为(如:2022-10-26)或者就是带上的时间格式比如(2022-10-26 16:18:49),我们数据库一般都是使用(也就是带时分秒的时间格式),那么我们一般是如何处理时间格式的呢?,然后再进行转换处理(此方法简单并且可以很方便的分辨出参数是否有误,但需要来回转换,因此比较繁琐,而且代码显得臃肿,因此我们该方式)

2022-10-27 10:59:31 3160

原创 MySQL优化之表分区

MySQL优化是我们必须掌握的内容之一,因此表分区我们也是需要掌握的!

2022-10-10 10:47:52 1336

原创 ​JAVA设计模式(十一)——访问者模式

访问者模式介绍及案例演示

2022-08-29 11:41:59 199

原创 ​JAVA设计模式(十)——装饰模式

下图为所有设计模式,带标记为重点掌握以及工作中常用到的:装饰模式属于结构型模式之一,其作用是向一个现有的对象添加新的功能,同时又不改变其结构,有点我们Spring中AOP的意思。注意事项:装饰模式作用是扩展一个类,因此是可以代替继承的。......

2022-08-29 11:24:48 382

原创 SpringBoot的数据库连接池

开发web项目,我们肯定会和数据库打交道,因此就会涉及到数据库链接的问题。在以前我们开发传统的SSM结构的项目时进行数据库链接都是通过JDBC进行数据链接,我们每和数据库打一次交道都需要先获取一次链接,操作完后再关闭链接,这样子效率很低,因此就出现了连接池,用于高效创建并合理分配数据库链接,数据库连接池跟线程池其实也一样的道理。说到连接池就不得不说到持久层的框架。......

2022-08-18 10:13:30 14944

原创 Springboot整合常见日志框架

SpringBoot对常见日志框架的整合

2022-08-17 17:30:16 7333

原创 修改项目框架名称工具类

此为工具类,可快速修改项目名称和项目中的文件内容,将需要修改的内容改为自己想要的内容,如将gmis改为gsnm

2022-08-15 10:24:07 253

原创 最简单的linux环境需要安装工具包

有时我们工作中会用到linux,比如我之前就遇到过,自己通过虚拟机安装了一个centos7的虚拟机,而且我安装的是最简单版本的,简单到连ifconfig命令和代码补全的命令都没有,然后网上找了一圈找了好一会儿才找到,再次记录一下这些命令,避免以后再找,命令都是通过yum工具进行安装的。...

2022-06-16 09:39:31 494

原创 windows环境下tomcat实现日志切割

前言  当我们在遇到一些老的SSM框架的项目时,我们通常会借助tomcat来启动服务。如果项目并没有做日志处理,但是生产环境有时候又需要进行日志排查,这时候就有点犯难了。  其实windos环境下我们启动tomcat服务无非就是通过窗口命令行和服务进程的方式启动,但是这2种启动方式对我们排查日志都不是很方便,因此我们通常会将我们自己的输出日志输出到我们自己指定的文件中,便于后续排查问题。存在的问题  tomcat可以将日志输出到指定的文件中,不过还有一个问题就是,日志内容会一直输出到该文件中,随着时

2022-05-20 10:26:05 2223 6

原创 win10如何同时安装并使用多个版本的jdk

前言作为开发人员,安装并使用jdk是基本功,相信也难不倒大家的,但是如果说同一台电脑同时安装2个版本的jdk该如何实现呢。最近工作中就遇到了这个问题,本身我们开发的项目是使用64位jdk8,但是由于我开发蓝牙充值宝模块时,底层的卡库服务是需要独立运行的并且需要使用jdk32位。这就有点犯难了,因为2个项目都必须同时启动起来,网上找了一些文章参考了一下感觉解决的都不完美!网传办法网络上的办法都是,先安装好一个版本的jdk后,并配置好该jdk的环境变量,然后再安装另一个版本的jdk并进行环境变量配置。然后

2022-04-15 09:46:51 5856

原创 内网穿透之NATAPP

前言之前我已经介绍过内网穿透的工具Ngrok了,为什么现在又一篇介绍内网穿透的呢,主要问题是前段时间工作用到内网穿透时,当时用ngrok去进行内网穿透,结果出现不稳地的现象,导致我瞬间不想用了,后来网上找到一款新的好用的内网穿透工具,特此分享给大家。当前Ngrok也还是可以使用的哟,毕竟技多不压身嘛NATAPP安装使用官网地址: https://natapp.cn/文件下载大家可以到官网去直接下载即可,下载速度还是很快的。而且NATAPP官方还非常友好的把操作文档都写好了,让我们可以快速地实现

2022-04-14 11:00:56 393

原创 docker安装常用组件

以下可以直接运行执行命令,会自动下载相关版本的镜像文件,如果下载速度太慢,则需要配置镜像加速,请参考:https://blog.csdn.net/lingerlan510/article/details/116448894我docker安装组件一般都是将配置文件挂载到外面,我的存放位置为:/opt/docker/xxx(xxx为组件名称),安装组件前请先创建好/opt/docker文件夹安装MySQL搜索镜像docker search mysql拉取镜像docker pull mysql查

2022-02-16 10:05:00 1014

原创 ​JAVA设计模式(九)——适配器模式

下图为所有设计模式,带标记为重点掌握以及工作中常用到的:  适配器模式属于结构型模式之一,顾名思义,肯定会存在一个适配器的类去进行适配。比如我们以前的笔记本电脑如果要读取我们手机的内存卡,直接读取是不可以的。如果要读取的话我们需要准备一个读卡器,将内存卡装入到读卡器中,然后将读卡器插入到电脑,这样子才可以完成内存卡的读取。其中读卡器就充当着我们所说的适配器这个角色,适配器模式是作为两个不兼容的接口之间的桥梁模式名称优点缺点应用场景适配器模式1、可以让任何两个没有关联的类一起运

2022-01-23 14:20:47 500

原创 ​JAVA设计模式(八)——代理模式

下图为所有设计模式,带标记为重点掌握以及工作中常用到的:  代理模式是属于结构型模式之一,其作用是为其他对象提供一种代理以控制对这个对象的访问。说到代理这个词语,大家可能就会觉得熟悉一些,我们熟知的代理有反向代理和正向代理等,只要理解到代理这个词语的含义,代理模式就可以很好的理解。模式名称优点缺点应用场景代理模式1、职责清晰。 2、高扩展性。 3、智能化。1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要

2022-01-22 11:21:05 471

原创 ​JAVA设计模式(七)——模板模式

下图为所有设计模式,带标记为重点掌握以及工作中常用到的:  模板模式是行为型设计模式之一,其定义是一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。通俗的讲就是模板方法中定义好了执行步骤,但是每个步骤没有具体的实现,需要子类去实现。模式名称优点缺点使用场景模板模式1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。3、行为由父类控制,子类实现。每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得

2022-01-22 10:14:37 582

原创 ​JAVA设计模式(六)——策略模式

下图为所有设计模式,带标记为重点掌握以及工作中常用到的:  策略模式是行为型设计模式之一,其作用是让一个类的行为或其算法可以在运行时更改,该模式也算是我比较熟悉的模式之一了,因为之前项目中有幸遇到大佬用过,让后学习了一下,后面会讲述策略模式我在项目中的实战使用场景。模式名称优点缺点应用场景策略模式1、算法可以自由切换。2、避免使用多重条件判断。 3、扩展性良好1、策略类会增多。 2、所有策略类都需要对外暴露。1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,

2022-01-20 09:59:25 3031 4

原创 JAVA设计模式(五)——抽象工厂模式

下图为所有设计模式,带标记为重点掌握以及工作中常用到的:   抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,其具体步骤如下:  ①将多个工厂类抽象出一个抽象类  ②每个工厂类继承该抽象类  ③创建一个工厂创造器/生成器类,通过传入类型去获取对应工厂方法,再通过获取出的工厂类获取实列对象。抽象工厂模式对应类图如下:抽象工厂代码实现1.创建2个接口

2022-01-19 16:15:51 487

原创 IDEA中git的使用(项目初始化、分支创建、合并等)

前言  做为一个开发人员,对于代码管理工具大家肯定不会陌生,我们国内常用的代码管理工具有gitlub、gitee、coding等等,至于github属于国际性的,网站有些卡,但是资源丰富。我们公司项目目前使用的是自己服务器搭建的gitlub(毕竟源码放在别人的服务器上还是不放心的),但是我本人自己练手的项目代码一般存放在gitee上。虽然工具不同,但都是使用git进行操作,因此用起来其实也大同小异。  尤其git的分支操作在稍微大点的项目中肯定是会遇到的,一般至少都会有2个分支,一个dev测试分支,一个

2022-01-18 16:15:59 2182

原创 线程池在项目中的实际使用

前言  大家为了面试肯定都学习过多线程,多线程也逐渐变成了面试重点内容(本文不讲解线程池的相关知识,只展示线程池项目整合案列),但是线程池在项目中的具体使用及整合大家可能没有接触过,网上也可能找不到合适的案列,下面我把我们之前项目中我们老大整合的线程池的案列分享出来供大家使用。线程池1.线程池的选择  JDK工具中一共给我们提供了多种线程池,包含固定长度的线程池、单线程线程池、以及可扩容的线程池等。但是这些线程池在我们实际工作的项目中都不实用的,那么有的童鞋要问了,为什么JDK提供的线程池还不实用呢

2022-01-06 14:16:38 9174 2

原创 JAVA利用反射清除实体类对应字段

前言  为什么我会记录这篇文章呢,因为我看到项目中有大佬这么写的,我觉得挺不错所以记录下来,以后也可以如此使用。该方法通过**反射**来实现并且封装成单独的方法,以便于所有的实体类都可以便捷的使用。使用场景  该工具类适用于某些接口中一些参数不需要需要设置为null,通常我们都是在代码中调用对应字段的set方法显示的去进行设置为null。而该工具类则是通过反射来进行设置,凡是标注了对应注解的字段都会进行清空工具类1.自定义忽略字段注解IgnoreField@Target(ElementType.

2022-01-04 14:53:12 6187 1

原创 工作流-Activiti7-基础讲解

Activiti7一、工作流介绍1.1 概念  工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。1.2 工作流系统  一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流的功能是什么?就是对系统的业务流程进行自动化管理,所以工作流是建立在业务流程的基础上,所以一个软件的系统核心根本上还是系统的业务流程,工作流只是协助进

2021-12-16 14:58:28 5918 2

原创 SpringCache整合Redis实现项目缓存解决方案

前言  说实话,在写这一篇文章之前我一直没有搞懂一个问题。明明我们项目中使用最多的缓存技术就是Redis,用Redis就完全就可以搞定缓存的问题了,为什么还有一个SpringCache,以及SpringCache和Redis之间的区别。一、 为什么要使用缓存缓存是将数据直接存入内容中,读取效率比数据库的更高缓存可以有效地降低数据库压力,为数据库减轻负担二、 常见的缓存中间件Redis、Memcached、Guava、Caffeine,其中Redis和Memcached使用的较多,各自也有不同

2021-12-14 09:35:15 16142 9

原创 分布式锁详解及实现案例

前言随着互联网的发展,人们网上购物已然成为常态,特别是双十一和618等大型的购物节(呸,还不是那些女人搞出来的),网站的并发数量也急剧上升,因此我们后台的框架也逐渐从以前的单机版升级到现在的分布式集群。这一切的演变最终目的都是为了提升系统性能,给用户带来更好的购物体验。在曾今的单机环境下多线程的并发抢夺资源的情况我们用Synchronized和ReentrantLock都可以完美的解决,但是由于现在的环境是同一个服务有多个节点,当同一个服务的多个节点同时操作某一个公共资源时我们又该如何去解决这个问题呢?这

2021-12-13 15:34:52 717

原创 如何用IDEA实现伪集群效果

前言我们开发阶段,一般都是同一个服务在开发工具只能启动一个服务,有时候我们想再本地测试下集群效果,比如测试分布式锁,以及负载均衡等等,我们不可能像线上一样打成好几个服务然后再去测试,这样子效率就很低了,无意间看到老师的一个操作,就能轻松解决我们的问题。下面来跟大家说明一下。实操1.我们先正常启动我们的服务2.复制第一个服务的配置3.修改配置名称,便于区分,建议可以将端口添加到后边,然后配置新服务端口 --server.port=XXXX4.保存并启动我们新增加的配置即可踩坑点注意:

2021-11-30 10:50:09 7212 2

原创 java计算两个时间年月日时分秒差值工具类

前言该工具类为自己项目中所写,可以拿来即用,若工具类名称与项目中工具类名称冲突,可自行修改,该工具类主要用于解决计算两个LocalDataTime的时间差值,并直接返回时间差对应的年月日时分秒。工具类package com.cdqckj.gmis.common.utils;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;import java.time.temporal.ChronoUnit;i

2021-11-05 10:55:40 876 1

原创 Java实现微信支付之Native模式

前言微信支付以前就听说过,身边的同事也有弄过,但是自己因为没有遇到相关业务因此也没有去研究过。最近工作上可能会遇到微信支付因此也进行了些许研究,只是做到了接口掉通而已,并没有太深入,对微信支付已经很熟悉的同学请绕道走。微信支付你需要了解内容1.微信支付常用支付模式JSAPI支付JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。APP支付APP支付是指商户通过在移动端应用APP中集成开放SDK调起微信支付模块来完成支付。目前微信支付支持手机系

2021-10-21 15:56:34 1133 1

原创 Java中Stream流的相关使用案列

前言该案例是自己根据网上相关资料整理的一些项目中可能会用到的Stream流的操作相关内容,项目中我会慢慢养成这种习惯的,可以很大程度的提高开发效率代码import java.util.*;import java.util.function.Function;import java.util.stream.Collectors;import java.util.stream.Stream;/** * 用于演示java8中Stream流的相关内容 * 注意: * ①Stream操作符中与C

2021-05-17 09:29:53 289 1

原创 Springboot+Jenkins+gitLab实现代码提交自动打包部署

前言本人作为一个后端开发对这个没有研究的太深入,只是实现了SpringBoot项目的提交自动打包发布的成功,运维大佬勿喷哈。过去发布项目由开发人员自己用开发工具打包成jar包或war包,然后将jar包复制到服务器,war包则用tomcat去发布,jar包则用java -jar xxx.jar的方式去运行高级的发布项目开发人员只需要将代码编写好,然后提交代码到远程代码管理仓库即可(码云、github、gitlab),然后Jenkins工具会自动触发编译,打包发布等操作,大大的简化了开发人员的工作,本

2021-05-12 10:57:25 2491 5

原创 Linux系统中如何将jar包封装成服务

前言我们发布项目一般用java -jar的方式去启动,这样其实很麻烦,而且还有窗口一直打开着,感觉很麻烦。因此我们可以把项目的jar包打包成一个对应的service服务,通过服务后台的方式去启动项目准备工作一台Linux服务器(我用的Centos7)一个打包好的可以运行的jar包服务封装登录服务器并切换到对应目录cd /etc/systemd/systemspringboot_demo为将要设置的服务名称,可根据当前项目名称来设置哟vi springboot_demo.service

2021-05-12 09:57:06 1893

原创 如何自己搭建一个Maven私服

前言搭建mavne的私服的好处很多,但是很多初中级程序员都没有亲身搭建过,下来我我来带着大家搭建一个maven私服。本次私服搭建我采用的是Nexus3进行搭建,Nexus3有Linux版本和Windos版本,但是作为一个程序员,我不推荐大家使用Windows。准备材料:待打包的Maven项目、待测试的Maven项目、Linux服务器(Centos7)、Docker不会Docker的朋友,请参考:https://blog.csdn.net/lingerlan510/article/details/116

2021-05-07 16:40:19 2022 5

原创 docker安装及详解

前言学习Docker内容之前必备内容:Linux服务器,阿里云账号(可以是虚拟机也可以是云服务器,若要将本地镜像推送到阿里云则需要云服务器),若您还不是很了解Linux的常用命令,请先学习Linux内容哟!!! OK,不废话了直接进入主题,本次讲解的Docker内容为基础内容,至于高级内容敬请期待哈,我也还在学习中。提示:本文中我使用的是Centos7系统,若是其他版本系统可能会存在差异,请自行百度只能用在 64 位的操作系统上,Windos系统也可安装Docker但是不推荐安装一、Dock

2021-05-06 17:59:01 1360 4

原创 主键策略之雪花算法详解

前言雪花算法大家多多少少肯定都有听说过,并且大家肯定都知道它能提供一个全局的唯一ID,但是更详细的内容大家肯定也没有了解太多,下面就由我带着大家来了解了解雪花算法出现的来由和雪花算法的一些特性以及如何使用等等。

2021-04-29 15:48:00 5400 11

原创 MySQL事务相关详解(一篇足够了)

前言说到MySQL那么一定逃不过事务的相关知识,网上有很多文章都有介绍事务相关知识,但是个人感觉都比较散乱,下面记录一下自己的所学和感悟,做一个小结。推荐博文:https://blog.csdn.net/ks2356/article/details/115257688小知识MySQL数据库中常用的存储引擎为InnoDB和MyISAM,而MyISAM不支持事务,故此我们说的事务都是指的InnoDB存储引擎中1.什么是事务事务(Transaction),一般是指要做的或所做的事情。在计算机

2021-04-26 10:17:33 802

原创 Java中级面试题记录(一)

真实面试题记录基础模块擅长什么技术?框架模块我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全新的 KaTeX数学公式 语法;增加了支持甘特图的mermaid语法1 功能;增加了 多屏幕编辑 M

2021-03-25 20:16:34 1077

原创 JAVA将图片写入到Excel文件中工具类

前言    此方法是利用了poi读取excel然后将其写入到excel指定单元格位置处,并且图片在excle中是处于悬浮状态的,图片最终展示的大小为指定单元格的大小导入poi相关jar包: <dependency> <groupId>org.apache.poi</groupId> <......

2021-01-19 16:53:00 1804

原创 JAVA用poi实现多个excel的Sheet合并

前言 项目中遇到需求,需要将多个excel的sheet合并到一个excel里面。网上看了一下文章,但是很多都是断章取义,不是代码不全,就是jar包版本不同一,为此自己解决这个问题后,把解决方案记录下来,供后来的童鞋参考:第一步:导入poi相关jar包 <dependency> <groupId>org.apache.poi</gr......

2020-09-22 11:08:00 5631 4

原创 JAVA设计模式(四)——建造者模式

  建造者模式也是属于创建型模式之一,其作用是使用多个简单的对象一步一步构建成一个复杂的对象,它提供了一种创建对象的最佳方式。模式名称  优点 缺点应用场景建造者模式1、建造者独立,易扩展。2、便于控制细节风险。1、产品必须有共同点,范围有限制。2、如内部变化复杂,会有很多的建造类。1.生成的对象很复杂,构造方法参数多,且部分是可选的2.需要生成的对象内部属......

2020-09-15 11:06:00 104

空空如也

空空如也

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

TA关注的人

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