自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA实现全排列和组合排列

JAVA通过递归实现全排列和组合排列

2023-06-21 17:48:00 2365

原创 解决在树状结构节点共用同个对象的问题

深拷贝的实际运用。

2023-03-31 14:14:20 235 1

原创 合理利用泛型擦除

泛型擦除

2023-02-09 22:51:27 291

原创 ThreadLocal讲解(包含使用不当导致的内存泄漏问题)

ThreadLocal讲解

2022-10-06 22:53:01 636

原创 获取泛型对应的类

获取泛型对应的类。

2022-09-04 01:40:15 1537

原创 Optional的应用

Optional的应用

2022-08-09 22:08:14 108

原创 浅析Spring浅拷贝 BeanUtils.copyProperties方法

浅析BeanUtils.copyProperties方法

2022-08-09 00:39:19 1377

原创 浅析java String类型

浅析String

2022-07-03 18:46:08 101

原创 根据Apache Poi写了个基于Web的Excel文件生成工具

基于Apache poi工具包封装了ExcelUtils工具包。

2022-06-22 15:25:42 144

原创 简单介绍Optional用法

java8新特性,Optional

2022-06-02 00:21:10 1843

原创 简单举例JAVA回调函数的实现

来自维基百科的对回调(Callback)的解释:In computer programming, a callback is any executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at a given time. This execution may be immediate as in a synchronous call.

2022-03-11 00:17:50 1499

原创 手动构建starter组件

之前的帖子说过,使用依赖尽量使用starter相关的依赖。因为这些相关的依赖会根据配置文件配置相关的类。比如在Spring中整合使用redis。那么在快速开发中,推荐使用spring-boot-starter-data-redis依赖,它会根据配置文件默认配置好redisTemplate等相关类。那么接下来介绍如何构建starter组件。首先对于自定义的starter(第三方),官方推荐的命名是xx-spring-boot-starter,只有Spring官方的starter命名是spring-boot

2022-02-20 22:13:54 437

原创 简单了解泛型<T> T的用法

此处的<T>类似于占位符,告诉编译器我返回的是泛型,而不是T类。只有搭配了<T>之后,后面的T才是泛型,而不是某个T.class。下面介绍<T> T的两种用法。1.方法参数带Tpublic class Test { //这里的泛型受入参类型影响,跟入参类型保持一致 public static <E> List<E> getListFromArray(E[] array) { List<E> resu

2022-02-07 19:32:03 1424

原创 使用@Autowired实现工厂模式

首先一个大前提,这些“商品”都有统一的标准和行为(因为不知道具体要的哪个实现类,所以要有个抽象类或者接口,因此需要统一的标准和行为)。所以首先设计抽象类或者接口public abstract class Animal { private String name ="animals"; //getName()和say()可以写成抽象的,但是这么写可以保证即使拿不到对应的产品,也有默认的方法实现。 public void say(){ System.out.print

2022-01-23 12:58:19 1230

原创 Spring快速开发推荐使用starter相关的依赖

因为在Spring的约定中,starter的组件是提供开箱即用的组件,他会默认配置好一些参数,所以依赖使用推荐优先选择starter相关的,可以简化配置。

2022-01-22 17:48:46 904

原创 tomcat环境的jdk版本跟Spring项目的jdk版本不一致也可能导致404

最近在docker tomcat中部署项目时,ip:(tomcat)端口号能跳到tomcat的信息。 然后ip:端口号/项目名 404,看了下目录,项目是解压的了。但是却404,排查了下,发现原来是tomcat jdk版本与项目版本不一致。 docker下载最新的tomcat没有使用我本地的jdk,而是使用了最新版的jdk,导致jdk版本不一致无法解析项目,然后页面报404。最后指定tomcat的jdk版本即可。指定tomcat的jdk...

2022-01-19 21:38:16 1039

原创 善用泛型实现接收JSON数据(含公共参数的)

在接收含有公共参数的多个JSON数据时,可以善用泛型简化定义对象。比如以下两个json对象。{userId:"", #用户ID num:"", #购买数量 car:{ #具体的产品 name:"", type:"" } }{userId:"", num:"", phone:{ name:"", rom:"" } }假设有以上两种json的数据,他们都包含相同的参数userId,num,但是产品不相同,产生的JSON对象不同,所以可以

2022-01-19 19:37:22 905

原创 独立Tomcat运行多Spring项目

这里使用的是Tomcat监听多端口, 而非单一端口,若是单一端口,可以直接在Tomcat安装目录下的webapps下放入相应的war项目,然后通过ip:端口号/项目名/ ,进行访问。而这里因为Spring项目使用了不同的端口,所以要修改Tomcat的Server.xml文件,使得单一 Tomcat监听对应的端口。首先先复制多n份项目,直接从原始的webapps目录中复制,要多添加几个Spring项目就复制多几份,并且修改对应的目录名。 我的目录如下:复制完之后在对应的webapps下添加你所要部署的

2022-01-16 15:33:26 580

原创 Spring编写统一异常处理

Spring全局异常处理

2021-12-25 20:29:52 656

原创 Oracle更新字段属性

低精度转高精度直接--修改单个字段ALTER TABLE 表名 modify(字段名1 新属性);--修改多个ALTER TABLE 表名 modify (字段名1 新属性,字段名2 新属性);如果高精度转低精度会报错如下: ORA-01440:要减小精度和标准,则要修改的列必须为空两种方法1.如果修改的字段比较多,可以考虑先备份表,再转移数据。--备份:create table 备份表名 as select * from 原始表名;--删除原始表内的数据:delete f

2021-11-07 14:32:31 2177

原创 Git版本回退

前两天遇到了个情况,自己新增了接口,发现后面需求变更了,需要删除掉,于是想着版本回退,这里就顺便介绍下Git版本回退方法。Git版本回退有两种方法,一种是reset,另外一种是revert。下面来介绍这两种方法。Git reset 是一种看来相对暴力的方式,他会以删除Log日志版本记录的形式回退到指定版本。但是之前的版本其实可以在reflog里面查看。#首先使用该方法查看版本号,后面可以接-n,n为数量,指定展示前几个版本记录。git log #xxx换成你想回退的版本号。git reset -

2021-10-13 14:44:57 296

原创 枚举类实现单例模式

为何要使用枚举类实现单例模式,是因为枚举类可以避免序列化和反射实例化多个的情况。在序列化中,通过ObjectInputStream的readObject0()方法中可以看到调用了readEnum()方法,而readEnum是通过类名和类对象类找到一个唯一的枚举对象,找到后赋值返回。而反射的newInstance是直接不实例化枚举类的对象,会直接报“Cannot reflectively create enum objects”,即不能用反射来创建枚举类型。因此Effective JAVA书中推荐使用枚举类实

2021-10-08 15:06:17 1289 1

原创 不使用锁解决懒汉式单例线程安全问题

先来看常见的使用锁解决懒汉式单例线程安全问题的例子/** * @author ZJX * @date 2021/10/8 * @description */public class LazySingleton { public static User user; public static User superUser(){ if(user == null) { //这里可以不直接锁User类,可以在当前类添加个变量,锁变量。

2021-10-08 09:39:14 196

原创 使用反射和泛型实现简单工厂模式

先来看常见的工厂模式/** * @author ZJX * @date 2021/10/7 * @description */public class DeviceFactory { public USB create(String device){ if("Mouse".equals(device)){ return new Mouse(); } else if("KeyBoard".equals(device)){

2021-10-07 23:50:50 194

原创 编程讲解@Resource和@Autowired区别

1、@Autowired由Spring提供,只按照byType注入2、@Resource由J2EE提供,默认按照byName自动注入。@Resource有两个重要的属性:name和type。Spring将@Resource注解的name属性解析为bean的名字,type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。@

2021-10-06 19:56:00 346

原创 泛型T,?,K,V

为什么要使用泛型?第一是泛化。可以用T代表任意类型Java语言中引入泛型是一个较大的功能增强不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了,这带来了很多好处。第二是类型安全。泛型的一个主要目标就是提高Java程序的类型安全,使用泛型可以使编译器知道变量的类型限制,进而可以在更高程度上验证类型假设。如果不用泛型,则必须使用强制类型转换,而强制类型转换不安全,在运行期可能发生ClassCastException异常,如果

2021-10-02 22:54:50 524

原创 利用反射机制和注解构造JSONObject对象

有这想法是因为公司业务的原因。具体看代码: JSONObject jsonObject = new JSONObject(); p.put("I_PAGING", queryChannelHomeSubscribeDetails.getPaging()); p.put("I_PAGENO", queryChannelHomeSubscribeDetails.getPageNo()); p.put("I_PAGELENGTH", queryChannelHo

2021-09-30 16:13:16 345

原创 Set toArray()方法 ClassCastException Object cannot be cast to Integer

这是因为直接使用 set.toArray()方法返回的是Object[]数组。Object是所有类型的父类,但是Object[]是数组,与Integer[]数组是平级关系,两者无父子关系,所以不能进行强制转换。解决思路有两种:1.拿到Object数组后,拿到单个Object后转换成Interger或者其他类型。2.在toArray()中传入Set参数类型的数组。不推荐方法1。 //拿到Set集合 Set<Integer> integers = map.keySet();

2021-09-27 11:21:38 327

原创 POST传输数据并且接收文件(附前后端代码)

上期为了省事,以form表单传输数据。但是要上线生产经过测试发现,部分数据会存在问题。并且IE浏览器无法下载文件的。现在重新更新以JSON数据传输并且下载文件。if (res.RESULT.length > 0) { console.log(res.RESULT); var xhr = new XMLHttpRequest(); //URL替换成服

2021-09-17 14:59:10 1316

原创 xhr.send发送中文在IE浏览器乱码问题

之前写了个xhr.send以POST传输数据并且接收文件流,但是发现在IE浏览器传输数据会乱码,在谷歌等浏览器等不会出现异常。原因是要让IE浏览器指定以UTF-8形式编码传输数据。方法如下: xhr.setRequestHeader("Content-Type", 'application/json;charset=UTF-8');...

2021-09-17 13:51:11 324

原创 使用JdbcTemplate连接Oracle数据库YML配置

datasource.url有两种写法,一种是通过服务名连接数据库,一种是通过SID连接数据库。1.通过服务名连接spring: datasource: #通过服务名连接数据库,ip替换成服务器ip,port替换成Oracle端口,一般是1521,serviceName改成数据库服务名 url: jdbc:oracle:thin:@ip:port/serviceName#注意此处是/ driver-class-name: oracle.jdbc.

2021-09-13 00:29:03 2287

原创 Oracle存储过程获取入参出参(顺序,名字,类型,入参/出参)

调用SQL语句。--PROCEDURE_NAME为过程名,自行替换要查询的过程名--POS为顺序SELECT A.POSITION POS,A.ARGUMENT_NAME NAME,A.DATA_TYPE TYPE,A.IN_OUT FROM SYS.ALL_ARGUMENTS A,USER_OBJECTS D WHERE A.OBJECT_ID = D.OBJECT_ID AND A.DATA_LEVEL = 0 AND D.OBJECT_TYPE='PROCEDURE' AND D.O

2021-09-12 21:37:56 3389

原创 POST方法接收文件(含服务器接收方式说明)

今天遇到了个需求,要求客户端发送文件后,经过服务器处理后再返回给客户端。一开始想着GET和POST的主要区别是传输数据方式不同,对于文件接收应该不受影响,结果试了下直接通过AJAX POST请求能够传输文件,但是接收不了文件。在网上看了下,用AJAX的POST请求接收文件,得以BLOB流的形式规定响应格式。具体如下: $('#template',container).click(function () { $.ajax( {

2021-09-10 18:38:34 3136

原创 正则表达式匹配数字(可为整数或带小数包括0)

正则表达式如下:([1-9]\d*(\.[0-9]*[1-9])?)|(0\.\d*[1-9])|[0]

2021-09-09 15:45:29 1482

原创 <el-select/>display设置成none后设置成inline等其他属性无法显示的问题

使用ELEMENTUI select组件时,如果使用display直接作用在组件节点上,一旦设置成none后,会破坏组件原本的属性,即使后面设置成inline等其他可显示属性,也无法显示。正常做法:在想要设置显示/隐藏的组件外添加一层<div></div>,然后通过设置div的display控制组件的隐藏和显示,在select组件中不做display的设置。 <div id="labelId" style="display:none"> <el-selec

2021-08-30 17:01:32 1035

原创 @media css样式自定义适应屏幕分辨率

@media screen 主要定义在电脑屏幕、手机和平板适配问题。例如我产品的需求是,显示宽度不超过2560px时,按钮占比占屏幕90%,超过2560px分辨率时,占比91%;这里也可以设置成固定像素,根据需求自定义设置。/* 不超过2560px显示样式*/@media screen and (max-width: 2560px) { .input_title { width: 85%; }}/*超过2560px显示样式*/@media screen and (min-wi

2021-08-29 23:13:02 980

原创 Vue<router-view></router-view>学习心得

今天看到个Vue项目结构中使用到了<router-view></router-view>,于是了解学习了用法。首先来看router下的index.jsexport default new Router({ mode: 'history', routes: [ { //首页跳转到/homepage path: '/', redirect:'/homepage', name:'zhuye' }, { //这是ho

2021-08-27 18:11:00 3421

原创 分享自己使用JAVAFX写的JAVA音乐播放器

由于国内关于JAVAFX的学习资料较少,因此想着分享自己的JAVAFX的项目供人参考学习。首页:还能通过网络获取歌词其实还有音频剪辑的功能,但是目前只限定在截取MP3格式的。但是播放的是能播放多种格式的音乐。最后附上源码地址:源码地址...

2021-08-26 14:53:24 502

原创 @Resoure作用在字段和set方法上的区别

原文链接

2021-08-26 14:20:29 162

原创 JQuery中$(this)与this

this和${this}都要包含在一个方法体中,this和${this}都是用来指代该方法体对应的对象。this代表的是js对象,${this}代指的是JQuery对象。JS对象不能调用JQuery封装的方法访问样式。 $('#btnQuery').click(function (){ //不论是this还是${this},都是代指btnQuery这个节点元素。 this.style.display = 'none';//隐藏节点

2021-08-26 09:55:34 402

空空如也

空空如也

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

TA关注的人

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