自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux系统下安装和配置redis(2021版)

前言:最近在阿里云市场中租用了一台ESC,学习和研发用途。操作系统版本为CentOS 7.9 64位,需要配置一些基础环境,其中就包括redis。在此记录下redis的安装和配置过程,方便自己和后来者。常识:redis是C语言编写的,因此它运行需要C环境,如果使用redis的服务器中没有C环境则需要安装; 从官网下载的redis压缩包(redis-*.*.*.tar.gz)可以简单看做是C项目代码,如果我们需要实际使用它需要经过安装和编译两个过程; redis.conf是redis的配置文件。虽

2021-05-14 16:40:30 5014 5

原创 Springboot应用中线程池配置教程(2021版)

前言:日常开发中我们常用ThreadPoolExecutor提供的线程池服务帮我们管理线程,在Springboot中更是提供了@Async注解来简化业务逻辑提交到线程池中执行的过程。由于Springboot中默认设置的corePoolSize=1和queyeCapacity=Integer.MAX_VALUE,相当于采用单线程处理所有任务,这就与多线程的目的背道而驰,所以这就要求我们在使用@Async注解时要配置线程池。本文就讲述下Springboot应用下的线程池配置。背景知识:Springboot中

2021-03-15 20:26:21 17376 18

原创 Springboot项目固化依赖的那点事

前言:在正式理解parent元素之前,假定你已经阅读maven的聚合和继承详解这篇博客,对maven继承的原理有一定理解。众所周知,如果使用maven构建Springboot应用,那么pom文件中一般都会指定如下配置来引入Springboot,本文重点来了解下spring-boot-starter-parent下重点有哪些内容,然后探讨下如果当前应用已存在parent的前提下如何改造项目依然使用springboot功能<parent> <groupId>org.springf

2021-01-24 20:27:50 1183 1

原创 springboot整合redis,推荐整合和使用案例(2021版)

背景:手下新人在初次使用springboot整合redis,大部分人习惯从网上检索到一份配置,然后不知其所以然的复制粘贴到项目中,网上搜索到的配置良莠不齐但又万变不离其宗。由于springboot最大化地简化了整合redis需要的配置,在用户只需要在配置文件(application.*)中配置少量参数就可以使用官方默认提供的RedisTemplate和StringRedisTemplate来操作redis。由于官方提供的*RedisTemplate提供的功能有限,难以针对java的复杂数据类型进行序列化,且

2021-01-05 20:09:34 32396 19

原创 基于SpringMVC+EasyPoi,采用Excel模板方式实现Excel在线预览和导出(2021版)

一、背景:某工厂需要查看指定年度的设备维护计划,一般需要把全年72个周,每个周做哪些维护工作排班排出以及工时统计出来,在正式生成维护工单之前,需要先确认下。维护计划大概是某一周要执行哪些维护项,大概长下面这个样子,根据客户提供的资料提取Excel模板。由于需要展示全年大约72周的排班信息(导致Excel列数较多),且维护项大约有几百项(导致Excel行数较多),综合意见,PC端提供在线预览(实现简单确认)和下载两个功能,来满足客户正式生成设备维护工单前,设备维护计划确认工作。二、思路:一般来

2021-01-03 14:45:17 2018 1

原创 Springboot项目部署到外部Tomcat

前言:用过Springboot的同学都知道,Springboot采用了约定大于配置的思想,提供了大量简化配置的操作,使得我们从繁重的SpringMVC项目配置中解脱出来,只需要在.properties或者.yml文件上给指定的参数配置适当参数值即可,然后Springboot会自动应用;个人认为Springboot的优势在于提供快速便捷的开发模式,比如快速开发服务接口,通过mvn打包成jar包,然后...

2019-04-26 18:25:40 5766 2

原创 ORACLE之NLS的那些事

not a valid month 无效的月份

2022-07-22 22:29:08 1802 1

原创 Linux发行版CentOS下Docker的安装和卸载

linux中安装docker的方式有几种,本文是基于docker仓库的安装前置须知:本文的服务器并非虚拟出来的服务器,而是在阿里云ESC上进行的下述操作,其中步骤1.2用到的docker镜像加速也是阿里云的产品服务; linux的内核和发行版本信息如下,可能会由于版本不同而导致操作有些不同,请知晓:好了,下面开始操作:1、Docker的安装1.1 配置docker阿里云镜像;由于默认的docker仓库地址是国外的,这就导致下载镜像时极为缓慢,需要配置国内仓库,本次使用的是阿里云docke

2021-05-30 22:17:46 270

原创 linux下基于源码软件安装的那些事

首先搞明白一点,基于源码的安装指的是利用厂商发布的Tarball来进行软件的安装

2021-05-29 22:59:16 545 4

原创 Linux下tomcat的服务器自启动配置

前言:Linux下随服务器开机自启动一般有两种方式:修改系统文件方式和作为系统服务自启动两种方式。两种都可以达到自启动目的,使用场景来说如果是学习或者研究用途,推荐前者,简单处理即可达成自启动效果。如果是稍微正式一点的环境,那么就后者,不解释!本文不比较两种方式的优略性,只单纯记录知识,请知晓!前置内容:确保您的linux服务器已安装和配置完JDK,本文DEMO中的JDK路径为:/usr/java/jdk1.8.0_291; 确保您的linux服务器已安装且可正常通过bin目录下的startup.

2021-05-21 12:34:03 1409 3

原创 Java正则之Unicode属性匹配的那些事

前言:最近项目中客户要求只保留文本中的字母部分,比如将处理文本 [ 文本你 好 呀, PL-g;'.*o,o 121“‘2ds->你好呀PLgoods ]。使用如下Java代码可以达成目的,但是对于\\PL+这种非常规的正则表达式比较陌生,那么如果延伸下需求,比如要去除文本中的数字符号、货币符号、标点符号以及控制字符等可能就无能为力,始终停留在知其然而不知其所以然的状态。本人通过查阅资料结合个人理解整理成本篇博客,目标是记录下这种正则的本质,提供一种新的方式或手段来达成文本处理目的;publ..

2021-04-11 15:38:52 1660 1

原创 IDEA中引入和启动TOMCAT的本质

在通过IDEA开发WEB应用时需要引入TOMCAT服务器,启动服务器后WEB应用能够正常访问,但这时你去TOMCAT安装目录下的webapps目录和conf/server.xml配置中没有找到关于当前应用的蛛丝马迹,难道引入了个寂寞?不是的,在上一篇《Tomcat映射虚拟目录的三种方式(2021版)》博客中,详细的描述了映射虚拟目录的三种方式。由于IDEA引入TOMCAT的情形不适用于映射虚拟目录的前两种方式,大概率属于第三种方式,本篇就深化下第三种映射虚拟目录的方式同时TOMCAT的本质。首先先来了解

2021-03-16 17:42:48 1005 1

原创 记一次从Sql Server中图片二进制流还原回图片的开发过程

背景:最近在客户现场做项目上线时,需要数据迁移工作。客户之前用的一个BS桌面应用,其中关于图片的存储全部以二进制流的方式写入到Sql Server数据库表中的某个字段中,如下图所示,由于新开发应用采用文件服务器存储图片、文档等,所以就需要将表中的二进制数据还原成图片保存到文件服务器中。棘手的是原BS应用并没有提供图片下载功能以及存储前图片的MIME类型或者文件后缀,这就要求在读取图片二进制流时需要根据内容判断属于哪种类型的图片文件;思路:首先观察一下上述图片,发现Sql Server Mana...

2021-03-14 09:41:27 1850 1

原创 Tomcat映射虚拟目录的三种方式(2021版)

前言:首先要弄明白什么是TOMCAT的虚拟目录:当WEB应用开发完毕后,如果想要对外发布就需要部署到服务器上面,服务器的主要功能就是需要监听端口、接收和解析访问请求并转发给相应的WEB应用进行处理。比如用户访问A应用(https://host:port/A)时,那么服务器就需要找到应用名A和WEB应用的映射关系,以便服务器能够正确地转发客户访问请求到WEB应用,这个应用名A就是一个虚拟目录,这个虚拟目录映射到WEB应用所在的目录;我们把将虚拟目录与WEB应用所在目录的映射过程称为虚拟目录的映射。一、TO

2021-03-13 20:59:00 4035

原创 基于IDEA搭建JavaWeb入门项目结构(2021版)

前言:对于很多从eclipse等IDE迁移到IDEA开发工具的小伙伴,对于如何在IDEA上创建JavaWeb入门项目结构不太了解。或者即使创建成功也能勉强使用也不知其所以然。针对于此,写该篇博客予以总结下;不足之处,请指正!首先需要清楚一件事情:开源和商用的服务器那么多,如果我们每个人按照自己的认知创建WEB应用目录,然后把该应用部署到不同的服务器上面,想让服务器能正常运行项目,显然是不现实的。也就是说肯定有个组织来规定规范的WEB应用目录结构,以便那么多服务器能正确解析WEB应用,这个规范WEB应用目

2021-03-13 10:02:50 6131 2

原创 JAR文件概述(2021版)

概述:JAR是英文Java Archive File的简写,翻译过来的意思是Java归档文件;归档一词用在软件开发领域可以理解为将软件开发过程中形成的具有一定价值的成果物(Java领域诸如类、配置、静态资源等),内部文件保持有机联系,遵循文件的相应规律统一整理的过程。JAR文件设计的目的在于有的时候想向用户提供一个单独的文件,而不是包含大量类文件的目录结构。JAR文件就是为了此目的而设计的,既可以节省空间和改善性能。一个JAR文件既可以包含类文件,也可以包含图像和声音等其它类型的文件,甚至可以包含JAR等资

2021-02-04 11:54:58 6281 1

原创 Spring注解之@Import用法解析

前言:最近在回顾阅读Springboot源码时发现框架层面大量使用@Import注解,特别是Springboot自动装配机制更是大量使用该注解,搜索部分结果图如下。简单来说就是Springboot中用到了Spring中的@Import注解来帮助实现自动装配。那么本篇博客就来结合@Import注解源码,学习下该注解的日常使用以便进一步理解Springboot自动装配原理。Spring中@Import注解的出现是Spring迈向注解化道路上重要的一步,一般结合@Configuration注解来使用来导入

2021-01-30 11:20:15 699

原创 maven的聚合和继承详解(2021版)

使用场景什么是聚合什么是继承

2021-01-22 22:06:07 1242

原创 java -jar命令引导启动Springboot项目的那点事

前言:java -jar命令并不是专门用于启动Springboot项目的,而是Java官方用于运行jar包中某个字节码文件的通用命令。比如通过java -jar XXX.jar来运行应用时,如不做特殊设置就要求在jar文件中必须包含META-INF/MANIFEST.MF文件,且通过类似Main-Class: org.springframework.boot.loader.JarLauncher来指定需要运行的字节码类文件全路径名,有点类似jre中的java-cp XXX.jarorg.springf...

2021-01-19 21:38:05 1530 3

原创 spring-boot-maven插件repackage(goal)的那些事

前言:在打包Springboot项目成jar包时需要在pom.xml使用spring-boot-maven-plugin来增加Maven功能,在我的上一篇博客<<Maven生命周期和插件的那些事(2021版)>>中已经介绍过Maven和插件的关系,在此不再赘述,感兴趣的小伙伴可以点击链接了解下。那么到底spring-boot-maven插件到底增加了哪些功能并没有深入探讨,下面针对Maven的package命令,分使用和不适用spring-boot-maven插件两种情境下的控制台输

2021-01-14 19:46:04 25271 7

原创 getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getSchemeSpecificPart()返回内容解析

当通过java -jar或者命令行mvn spring-boot:run的方式启动springboot项目时,会引导执行如下代码:public static void main(String[] args) throws Exception { new JarLauncher().launch(args);}调用JarLauncher不带参数的构造方法创建JarLauncher对象,根据Java的继承特性会调用父类中的createArchive方法,官方代码实现如下:protected

2021-01-08 12:40:30 3284 2

原创 Maven生命周期和插件的那些事(2021版)

前言:在日常开发中我们经常使用IDE提供的MAVEN功能,如下图所示,通过右键->run maven build的方式或者通过命令行运行maven命令的方式来对项目进行构建。在我们通过简单操作就可以对项目进行clean(清理)、default(包括校验、编译、打包、测试等)、site(部署),在背后有好多知识点,本篇博客就对这些知识点进行整理归纳。一、什么是Maven的生命周期:在没有Maven之前,每个项目的开发人员一般都会干这么几件事情:清理、编译、测试和部署。不同的公司以及不同的项目

2021-01-07 21:47:04 2096 4

原创 获取iview中表单组件Table的选中数据

背景:在做某系统的审批中心时,新增了审批消息一键已读和删除功能,用iview的表单组件-Table实现消息列表展示,效果如下图所示:在实现一键已读或一键删除时需要获取当前消息列表中所有选中项,通过与服务端API交互来改变消息状态或删除消息。iview官方文档仅提供单选、全选或者选中项发生变化时的监听,并没有提供获取选中项的方法。通过查看官方demo和源码,发现可以通过this.$refs.table组件ref值.getSelection()的方式获取table选中项,下面在官方demo的基础上修改下

2021-01-03 12:40:48 5503 1

原创 记一次“Shiro+任务调度”开发过程中出现UnavailableSecurityManagerException解决思路

背景介绍:某工厂设备管理项目中一个定时任务用于生成设备维护工单,在点击下方立即执行按钮时,会抛出下图所示的异常信息java.util.concurrent.ExecutionException: com.sugon.utils.RRException: 执行定时任务失败 at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.

2021-01-03 11:04:29 984 4

原创 基于redis(v3.2+)实现“附近的人”功能

背景介绍:目前随着电商、社交、游戏和代购等的流行,“附近的人”这一功能提供了一种便捷的方式允许同一地区或者一定距离范围内的用户进行相互交流的途径,一般都是在用户点击某个菜单或按钮时记录用户的坐标信息,拿微信的“附近的人”功能举例子,如下图所示,当你在点击附近的人时微信服务端会提示获取你所在位置的经纬度,记录到服务端,右上角的小脚印就表示你的经纬度信息被记录。然后服务端会根据你的位置信息拉取附近同样在服务器端有位置记录的用户信息,按照距离进行排序。一般来说“附近的人”功能只要能否大体反应距你多少米或千

2021-01-02 14:16:24 523

原创 Springboot项目结构浅析

每当我们通过IDE、spring官网gui或者maven命令行创建SpringBoot项目后,大致会有如下结构的项目,这个时候第一个念头就是对于默认创建的内容,我需要保留哪些,哪些删除掉。针对这个问题,本文对于陌生内容作出解释说明,对于项目必要内容,诸如src、pom.xml之流就不做解释,重点解释其它内容;1、.gitignore文件由于目前大多数应用开发使用git作为代码版本管理工具,所以官方默认提供该文件,作为不纳入git版本管理项的初始配置文件,里面定义了最常见的文件或目录的版本控制忽略

2020-12-31 20:20:52 1163 1

原创 基于TOMCAT简单搭建文件服务器

背景:最近接了个工厂项目,里面有个需求:内网环境中,PAD端和PC端可以预览或下载公共文件,公共文件类别包括但不限于各种图片、媒体格式、PDF、WORD和EXCEL。结合目前工厂实际运维环境,可以总结出关键信息:内网环境安全问题无需过多关注、不考虑上传、允许不同端跨域访问静态资源。搭建文件服务器方式有多种,下面利用tomcat提供的功能实现文件服务器搭建,本文截图是在windows,其它操作系统基本一致:1、找到并编辑tomcat安装目录/config/server.xml,在Host元素内新增Co

2020-12-26 16:58:29 1302

原创 Springboot实现邮件发送(2020最新版)

在正式讲解如何用Springboot发送邮件之前,先普及三个概念:1、邮件协议,简单理解下:小明给小红发了一封邮件,指的是小明登录邮箱客户端(比如通过浏览器登录QQ、163、126等),将需要发送的内容已邮件的方式发送到邮件服务器,等小红同样登录邮箱客户端后客户端去邮件服务器获取小红这个账户应该获取的邮件列表并下载到客户端,这样小红在客户端就可以查看小明发送过来的邮件,大体过程如下图,画的粗糙不要介意:2、通俗来说我们以通过浏览器登录网址的形式或者从邮箱服务提供商官网下载的邮箱客户端登录自己的账

2020-12-19 22:02:05 1826 1

原创 Visual Studio二次安装时无法更改安装位置解决方案

背景:去年年底因为一个C#项目,安装过Visual Studio,当时采用的是默认安装,即安装到C盘。最近有个VB的桌面小项目,想安装Windows开发平台负载时发现C盘剩余空间不足15G,随起了卸载重新安装的想法,卸载后重新安装时,发现默认安装位置呈现灰色,不可更改,网络上解决方案好多说的比较单一,那么我在此总结下,方便自己和后来者。 本质:出现这个问题的本质原因为上一次安装卸载不彻底(一般指的是软件从硬盘里移除了,但写到注册表里面的配置信息并没有删除干净),导致后续安...

2020-12-17 08:49:08 19791 14

原创 Oracle中日期和时间字段的日常使用

本文目的是记录日常开发中用到的知识点,不涉及具体业务,只关注技术,方便自己和后来者。目前正在做一个工厂项目,说到工厂项目肯定会有关于产线和人员的排班时长计算,一般一条排班信息包括开始时间、结束时间以及人员或产线的标识。那么常见需求比如统计某个月份产线或者人员的工作时长、计算设备开动率、OEE等。以上需求都涉及到计算每次排班时长(结束时间-开始时间)的操作,这个时长计算在数据库端或者服务器端都可以进行,本文重点介绍下通过oracle相关函数来计算时长,老规矩,先贴表结构和数据样例,大家自行查看:下

2020-12-16 11:04:34 1337 1

原创 IntelliJ IDEA插件安装最全详解

本文将从以下三个角度来讲解IDEA插件相关知识:为什么要安装IDEA插件? IDEA插件的本质是什么? 如何安装?一、为什么要安装IDEA插件:比如日常开发中需要统计代码行数,需要在IDE种通过GIT、GITEE、SVN等版本管理工具等进行代码管理,需要对现有代码进行某种公司编码规约的校验等,这些功能本身在IDE中不支持或者说缺乏的。那么就需要通过从外界获取的方式,将需要的功能引入到IDE中,当然插件必须确保自身能够适配当前版本的IDE确保能被安装应用,当IDEA完成插件安装后会以比如多出一个

2020-10-12 21:49:12 4495 1

原创 浅谈微信公众平台和微信开放平台的区别

许多做微信开发的小伙伴在刚开始接触的时候,普遍面临的一个问题是什么是微信公众平台,什么是微信开放平台这么一个问题,本人最开始也很困扰,也查阅了一些资料,后来开发过程中才渐渐清晰起来,本文的主旨就是给大家再次普及下这些概念,方便自己和未来者! 微信平台化由来: 在正式的谈它们的区别之前,咱们先搞清楚微信除了后面这些通用场景:PC端网站或系统的微信登陆,APP端的微信登...

2019-11-23 09:41:52 14981

原创 Springboot缓存实战笔记之概念篇

看过好多博客,在介绍Springboot缓存时,直接讲解使用,第一步把冰箱门打开...之类的,并没有对缓存概念做一些常规介绍,任何技术首先要做的就是去了解概念,本篇基于我自身阅读过的一些书籍,自身觉得比较重要的概念,以笔记的形式记录下,方便自己以及后来者,后续陆续会有缓存常见架构+使用的博客,请关注后续;关于缓存:只要是稍微做过点项目的同学肯定都会听到缓存这么个词汇,缓存并不神秘,缓存主要用来...

2019-03-24 19:41:39 319 1

原创 记录一次IDEA开发JavaWeb项目时JS中文乱码排错方法

大家经常遇到乱码问题,我一般习惯性的把编码问题归结为两种:编码层面的乱码:指的是那些需要修改项目内的代码或配置来解决的乱码问题,比如有的时候从数据库获取的数据是乱码、发送ajax请求时,获取到的数据乱码等,这种都需要进行新增或修改适当代码或配置来解决; 非编码层面的乱码:指的是那些修改项目外在的一些东西,比如服务器编码没有设置、开发环境中没有设置编码、开发工具编码问题等原因造就的乱码;只要...

2018-11-21 09:01:39 5976 9

原创 从无到有整合SpringMVC-MyBatis项目(3):整合SpringMVC+Mybatis

 本篇博客来讲解如何整合SSM(SpringMVC+Spring+Mybatis),代码已上传至GIT在正式整合之前,有几个概念需要提前了解下:1、Spring框架,也有人称呼为容器框架,编程领域的容器指的是有一种或多种手段将第三方框架、组件等纳入到容器中,进行生命周期等的管理,从而使得我们可以在容器中直接通过某个类来使用或操作某个组成或功能,不需要在单独使用对应框架API;2、Myb...

2018-11-09 21:33:36 675 1

原创 从无到有整合SpringMVC-MyBatis项目(2):搭建SpringMVC项目

       前言:本次搭建SpringMVC项目,建立在已完成从无到有整合SpringMVC-MyBatis项目(1):搭建JavaWeb项目 的基础上,本篇的重点在于如何将SpringMVC框架引入到普通的JavaWeb项目中去,项目基于SpringMVC4.3.18版本进行搭建,所有配置亲测可用;        疑难点分析:搭建SpringMVC项目的难点在于如何建立起各种XXX.xml...

2018-11-08 22:36:39 413

原创 从无到有整合SpringMVC-MyBatis项目(1):搭建JavaWeb项目

前言:        近日有个销售类网站的项目,用了很久的Springboot,突发奇想回到过去,基于SpringMVC-MyBatis框架搭建项目,惭愧的是有些配置已记不清楚,所以决定写篇博客来记录下整个搭建过程,已回顾已有知识体式,方便自己和后来者,本次项目搭建采用的开发工具是IDEA2018.2.2版本,采用MAVEN,特此提醒;博客将分为以下三篇博客来逐渐讲解完成SSM项目搭建:...

2018-11-08 20:11:44 752

原创 记录一次svn报错:[Previous operation has not finished; run 'cleanup' if it was interrupted] 的排错过程

前言:由于目前客户习惯使用SVN管理代码,所以仍在使用SVN做代码管理,管理方式虽然落伍,但客户粑粑就是上帝~~ 今天在改完十几个类文件批量提交时,在代码提交SVN服务器过程中,电脑突然性卡死一大会没有反应,果断采取关闭然后重启开发工具的方式,重启开发工具后,发现代码仍然提示为未提交状态,执行提交时报错,提示需要执行clean up,果断右键执行clean up,又提...

2018-11-04 16:40:27 47917 16

原创 HTTP会话那些事

本篇文章的目的是增进初学者或者有一定工作经验的开发人员进一步的认识了解“会话”,去探究下为什么需要会话以及会话的作用,废话不多说,开拔~开篇思考这么一个我们日常的行为,大家每天都会通过网络了解各种知识,比如我们去购物网站进行购物,去各种博客论坛去浏览、回复各种感兴趣的东西,这些行为的本质就是对目标服务器上的资源发送了来自同一客户端的多个请求,比如我们可以不用登陆,就可以把各种感兴趣的商品放置到

2018-01-15 16:15:39 398

原创 漫谈Servlet(一)

在正式谈Servlet之前,首先看看JavaEE API规范对Servlet的定义:Servlet是一个运行在Web服务器中的Java小程序。Servlet将会接收和响应来自Web客户端的请求,使用HTTP(超文本传输协议)进行通讯。(一)初始ServletServlet是所有Web应用程序的核心类,它是唯一的既可以直接处理和响应用户请求,也可以将处理工作委托给应用中的其他部分的类。除非某

2017-03-13 21:41:45 641

空空如也

空空如也

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

TA关注的人

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