自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

干货小抽屉

都是干货

  • 博客(110)
  • 收藏
  • 关注

原创 Java中XML转JSONObject

无论是接口测试还是开发中,有时候会遇到接口返回回来的的数据是XML类型的,此时又不想单独写一套XML转Java Bean,因为毕竟XML作为返回结果相对来说还是没有JSON那么主流,而且以JSON字段设计的Bean对象属性不一定吻合XML,那么就需要将XML转成JSON后,再按解析JSON处理了。前段时间刚好遇到这种需求,就将实现方式分享给大家。相关依赖基于maven管理依赖,需要在pom文件中加入下面dependency,解析JSON用阿里的fastjson,解析xml用jdom:&l.

2020-08-05 16:44:37 2423

原创 Spring @Async 使用简单案例

百度上的讲解已经有很多了这里直接发使用案例吧1.启动类加注解 @EnableAsync2.定义自己要实现的方法 加注解 @Async3.Controller中调用看一下运行结果:查询user的结果已经返回了 异步方法执行 延迟10s后输出内容...

2020-07-31 16:44:45 681

原创 Spring在代码中获取bean的几种方式

方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的utils类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSupport方法四:继承自抽象类WebApplicationObjectSupport方法五:实现接口ApplicationContextAware方法六:通过Spring提供的ContextLoader获取spring中bean的方式总结:方法一:在初始化时保存Applic...

2020-07-23 17:57:11 345

原创 Spring的两种动态代理:Jdk和Cglib 的区别和实现

一、原理区别:java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换如何强制使..

2020-07-23 17:43:47 174

原创 GC 垃圾收集器

GC 垃圾收集器Java 堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法;年老代主要使用标记-整理垃圾回收算法,因此java 虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK1.6 中Sun HotSpot 虚拟机的垃圾收集器如下:Serial (单线程,复制算法)Serial(英文连续)是最基本垃圾收集器,使用复制算法,曾经是JDK1.3.1 之前新生代唯一的垃圾收集器。Serial 是一个单线程的收集器,它不但只会使用一个CPU 或一条线程

2020-07-23 11:40:52 96

原创 如何判断一个常量是废弃常量,如何判断一个类是无用的类

如何判断一个常量是废弃常量:运行时常量池主要回收的是废弃的常量。那么,我们如何判断一个常量是废弃常量呢?假如在常量池中存在字符串"abc" ,如果当前没有任何String对象引用该字符串常量的话,就说明常量"abc"就是废弃常量,如果这时发生内存回收的话而且有必要的话," abc"就会被系统清理出常量池。注意:我们在可能是把Java内存区域讲的最清楚的一篇文章也讲了JDK1.7及之后版本的JVM已经将运行时常量池从方法区中移了出来,在Java堆(Heap) 开辟了一块区域存放运行时常池.

2020-07-23 11:23:38 911

原创 Centos7上安装docker

转自:https://www.cnblogs.com/yufeng218/p/8370670.html一、安装docker1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过uname -r命令查看你当前的内核版本 $ uname -r2、使用root权限登录 Centos。确保 yum 包更新到最新。$ sudo yum update3、卸载旧版本(如果安装过旧版本的话)...

2020-07-03 12:10:00 95

原创 VMware安装CentOS7

https://blog.csdn.net/qq_42545206/article/details/90301472

2020-07-03 11:49:42 100

原创 SpringBoot项目中集成Quartz实现定时调度任务

一、Quartz1、简介起初是OpenSymphony组织提供的一个功能丰富的开源作业调度框架官网:http://www.quartz-scheduler.org/纯java编写,用法简单而功能强大。2、特点强大的作业调度功能作为spring默认的调度框架,极易与spring无缝整合,实现灵活可配置的调度功能,quartz提供了调 度运行环境持久化机制,可以保存并恢复调度现场,即使系统因故障关闭也不会造成调度现场的数据丢失。灵活的应用方式允许我们灵活定义触发器的调度时间规则,并可以将

2020-06-30 14:47:10 389

原创 Integer的equals方法

在写代码的时候发现Integer也有equals方法。那么它和string的equals方法有什么区别呢?这是Integer的方法源码:public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }可以看见是把对比的对象看是不是In...

2020-06-10 17:52:27 3580

原创 Windows环境下安装Redis

下载地址:https://github.com/MicrosoftArchive/redis/releasesRedis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载Redis-x64-xxx.zip压缩包到 D 盘redis文件夹下。网盘下载:链接:https://pan.baidu.com/s/1ZRzMaS5eqCPaotX5DljY3w&shfl=sharepset提取码:spf0一.Redis临时服务1.打开cmd,进入..

2020-06-05 14:20:06 143

原创 MySQL 5.7详细下载安装配置教程

文章已经写的很详细了,我补充一下(一定要看)1.官网的样式有变化,自己找找下载位置2.配置my.ini文件的时候注意你下载的mysql版本号和解压的路径,不要无脑复制粘贴3.my.ini查看属性别弄成my.ini.txt或者其他,这就很蠢了,会让你my.ini不起作用https://blog.csdn.net/weixin_43395911/article/details/99702121...

2020-06-05 11:53:23 136

原创 IoC(控制反转)的主要组件和注入的两种方式

一.IoC的主要组件:(1).Spring框架的两个最基本和最重要的包是org.springframework.beans.factory(该包中的主要接口是BeanFactory)和org.springframework.context包(该包中的主要接口是ApplicationFactory)。这两个包中的代码提供了Spring IoC特性的基础。(2).Spring IoC框架的主要组件有:Beans、配置文件(beans.xml或applicationContext.xml)、BeanFac

2020-05-13 15:52:23 274

原创 动态代理核心类 - ProxyCreatorSupport

动态代理主要的相关类类 主要作用AdvisedSupport 注册被代理目标对象、通知,和需要代理的接口ProxyCreatorSupport 注册和触发监听器,借助DefaultAopProxyFactory获取代理DefaultAdvisorAdapterRegistry 将Advice包装成Advisor(DefaultPointcutAdvisor); 借助AdvisorAdapter,将Advisor包装成MethodInterceptorDefaultAdvis...

2020-05-13 15:51:43 503

原创 ArrayList 扩容原理

面试中经常问到的问题之一就是List的扩容机制了,他是怎么做到扩容的,大家都能答出来底层是数组,复制一个数组来扩容,但是再具体一点来说,大家就不知道该怎么说了,如果不看源码说这么多确实就差不多了,但是看了源码你会说的更多,更详细,更具体,本篇主要看的是jdk1.8 至于其他版本大同小异,看看就知道了,言归正传1)List扩容实现步骤 总的来说就是分两步:1、扩容 把原来的数组复制到另一个内...

2020-05-13 15:45:56 115

原创 哈希冲突、哈希冲突的解决方法

首先,什么是哈希表?什么又是哈希冲突?①哈希表是基于数组的一种存储方式.它主要由哈希函数和数组构成。当要存储一个数据的时候,首先用一个函数计算数据的地址,然后再将数据存进指定地址位置的数组里面。这个函数就是哈希函数,而这个数组就是哈希表。②哈希冲突是指哈希函数算出来的地址被别的元素占用了,也就是,这个位置有人了。好的哈希函数会尽量避免哈希冲突。那么发生了哈希冲突,要怎么解决呢?解决哈希冲突有以下几种方法:①开放定址法:这种方法也称再散列法,其基本思想是:当关键字key的哈希地址p=H(key

2020-05-13 15:43:50 638

原创 Postman中post的数据类型

Postman中post的数据类型post中有以下数据类型1、form-data2、x-www-form-urlencoded3、raw4、binaryPostman请求不同的post数据类型from-datamultipart/form-data,它将表单的数据组织成Key-Value形式,也可以上传文件,当上传的字段是文件时,会有 content-t...

2020-04-01 15:03:33 2497

原创 实体Entity转化为Map互转

问题:如何将entity转换为map类型,并通过键值获取值第一种方法:依赖包解决。第一步:引入pom依赖<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>...

2020-03-09 11:53:44 2294

转载 java 实现自动派单(自动分配任务)

需求:最近要实现一个自动派单功能,就是如果有任务来了,那么任务平均分配给现有的员工,如果之前取了任务的员工下次来任务时就分配给下一个,如果有新员工则将员工添加到队列的最后,如果有员工离职就将员工信息从队列里移除。实现:1.写一个定时任务,定时将任务放入任务队列中TaskQueue,并将员工放入User队列中,如果员工已存在则不添加,如果新员工则加入队列中,如果员工不存在了就从队列...

2020-02-28 18:22:49 5478 2

转载 srpingboot整合了@Validated、@NotBlank、@NotNull、@NotEmpty的使用

首先,在dto实体你想要做验证的属性前,加上@NotBlank/NotNull/NotEmpty注解:他们的区别如下:@NotBlank:只用在String上,表示传进来的值不能为null,而且调用trim()后,长度必须大于0@NotNull:不能为null,但可以为empty(分配了内存空间,但值为空)@NotEmpty:不能为null,而且长度必须大于0然后在service层...

2019-12-06 16:28:55 3390

转载 手把手教你如何玩转Activiti工作流

https://blog.csdn.net/Cs_hnu_scw/article/details/79059965

2019-11-21 09:40:27 232

原创 SpringBoot整合Shiro权限框架

Shiro是一个非常不错的权限框架,它提供了登录和权限验证功能,如果想去了解它的话可以去Shiro官网学习点击打开1.创建数据库脚本SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for module-- ---------------...

2019-11-19 16:21:56 164

原创 Invalid bound statement (not found): com.java.....问题解决

错误原因:dao层(又叫mapper接口)跟mapper.xml文件没有映射解决方法(1)打开spring-context.xml配置文件(2)找到class为org.mybatis.spring.SqlSessionFactoryBean 这个bean(3)找到name为mapperLocations的property(4)在list标签中添加一个value例如:...

2019-10-29 13:24:56 476

原创 Mybatis批量插入(mapper文件)

连接配置mysql的批量更新需要主动设置,即在数据库的连接url上加上 &allowMultiQueries=true即可spring.datasource.url=jdbc:mysql://localhost:3306/sheep2?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true1Ma...

2019-10-22 15:14:27 1835

原创 死锁产生的原因以及解决方法

一.什么是死锁?   死锁是由于两个或以上的线程互相持有对方需要的资源,导致这些线程处于等待状态,无法执行。二.产生死锁的四个必要条件   1.互斥性:线程对资源的占有是排他性的,一个资源只能被一个线程占有,直到释放。   2.请求和保持条件:一个线程对请求被占有资源发生阻塞时,对已经获得的资源不释放。   3.不剥夺:一个线程在释放资源之前,其他的线程无法剥夺占用。   ...

2019-10-18 19:47:19 188

原创 kettle表输出和插入/更新的区别

kettle表输出和插入/更新的区别源表、目标表共有的字段,表输入不会更改,只同步新的字段。插入/更新,会更新,同时亦会插入新的字段表输出抽取数据比插入更新更快,插入更新不会有主键冲突...

2019-10-16 18:52:34 4473

转载 Java对象的创建过程

对象的创建过程:类加载检查-->分配内存-->初始化零值-->设置对象头-->执行init方法1、类加载检查:虚拟机遇到一条new指令时,先检查这个指令的参数能否在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被ji加载、解析和初始化过。如果没有,则先进行类的加载过程。2、分配内存:有两种方式指针碰撞:假设Java堆中的内存是规整的,用过的...

2019-10-16 15:56:58 57

转载 IDEA配置GIT

注:此方法可用于配置gitlab也可用于配置github1.在github中创建一个账号:https://github.com/join?source=header-home2.下载并安装git:https://git-scm.com/downloads3.安装成功后打开Git Bash,输入下列命令,设置git全局用户名和邮箱4.在IDEA中设置Git,在File-->...

2019-10-15 14:14:12 83

转载 Kettle入门教程

最近做的项目用到了ETL工具Kettle,这个工具相当好用,可以将各种类型数据作为数据流,经过处理后再生成各种类型的数据。正如其名“水壶”,将各个地方的水倒进水壶里,再用水壶倒入不同的容器。不过一来初学乍用,二来对此任务不是很感兴趣,研究的不是很深入,可能是以一种不科学的方法使用的,但观教程,常用的内容似乎也涉及到了,并且Y大说过,要善于总结,于是有了这篇,作为入门说明吧。一、下载与安装...

2019-10-15 14:12:21 190

原创 jdk代理和cglib代理的联系与区别

https://mp.weixin.qq.com/s/YeNXq8VkP-IlqZ8rBv486w导读:1、JDK动态代理原理是什么?为什么不支持类的代理?2、JDK动态代理实例3、CGLib代理原理是什么?4、CGLib代理实例5、JDK动态代理与CGLib代理的区别是什么?6、总结注:阅读本文之前可以先阅读:什么是代理模式?1. J...

2019-09-18 19:07:55 155

转载 50道SQL练习题及答案与详细分析

网上流传较广的50道SQL训练,奋斗了不知道多久终于写完了。前18道题的难度依次递增,从19题开始的后半部分算是循环练习和额外function的附加练习,难度恢复到普通状态。第9题非常难,我反正没有写出来,如果有写出来了的朋友还请赐教。这50道里面自认为应该没有太多错误,而且尽可能使用了最简单或是最直接的查询,有多种不相上下解法的题目我也都列出了,但也欢迎一起学习的朋友进行讨论和解法优化啊~...

2019-09-12 18:51:29 205

转载 小乌龟SVN合并分支到主干、合并主干到分支,工具操作

分支合并到主干分支库中单元测试通过的源代码要合并到主干,例如有一个开发中的代码 branches -> dev 需要合并到主干 trunk。步骤:第一个步骤:在本地副本上进行操作,选择主干上的源代码文件,右键选择tortoiseSVN菜单,点击合并。(将trunk代码 拉回本地,checkout到本地。在trunk 代码上 使用merge)如图第二个步骤:选择merge t...

2019-06-24 17:14:57 9576

原创 清空logs目录下start.out日志内容方法

在使用vim编辑器的时候,有时候编辑一个文件,而文件内容比较多,如果需要快速清空整个文件,可以使用一下命令: 在命令模式下,首先执行 gg 这里是跳至文件首行 再执行:dG 这样就清空了整个文件!还有一种方法就要退出VIM,然后使用echo -> file ,这样也能快速清空文件内容。但是一定要指明路径,否则所有叫这个文件名的都会被清空echo -> /home/appuser...

2019-06-21 11:31:50 631

转载 java中获取文件或文件夹的路径方法

获取当前类的所在工程路径;如果不加“/”File f = new File(this.getClass().getResource("").getPath());System.out.println(f);结果:C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin\com\test获取当前类的绝对路...

2019-06-20 10:42:17 15438

原创 引用slf4j中Logger.info只打印出文字没有数据

引的是 slf4j 包import org.slf4j.Logger;import org.slf4j.LoggerFactory;private static Logger logger = LoggerFactory.getLogger(TsfTest.class);logger.info("打印参数:",map);只能打印出:2019-06-14 17:52:07....

2019-06-14 17:56:31 2422 1

原创 本地Maven仓库有jar包 ,但是项目引用不到

找到本地maven仓库的要引用的jar包的目录下,只留下jar和pom删除其他的文件即可。其他文件似乎是缓存文件,有兴趣的可以查查,留言告诉我。

2019-06-12 16:17:20 20190 1

转载 java设置job时间 例:每小时一次

每天每小时(整点)执行一次:0 0 0/1 * * ?例1:每隔5秒执行一次:*/5 * * * * ?例2:每隔5分执行一次:0 */5 * * * ?在26分、29分、33分执行一次:0 26,29,33 * * * ?例3:每天半夜12点30分执行一次:0 30 0 * * ? (注意日期域为0不是24)每天凌晨1点执行一次:0 0 1 * * ?每天上午10:15执...

2019-05-29 15:24:01 12376

原创 linux查看日志tail中文不是乱码 vim中文是乱码

修改服务器端, 在/etc/vim/vimrc(或/etc/vimrc)文件末尾加上set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936set termencoding=utf-8set encoding=utf-8

2019-05-23 14:29:06 4079

原创 Linux kill、kill-15、kill-9区别

kill和kill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。kill -15 pid(默认)执行完该指令后,操作系统会发送一个 SIGTERM 信号给对应的程序。当程序接收到该信号后,可能会发生以下几种情况的一种:当前程序立刻停止;程序释放相应资源,然后再停止;程序可能仍然继续运行。大部分程序会先释...

2019-05-22 11:13:47 27306

转载 Java环境变量配置方法(Windows)

编写一个Java程序后,如果想让自己编写的代码可以正常运行,我们便需要对它进行编译和运行,而Java环境变量的配置就显得尤为重要,本篇文章,我们来谈一谈关于Java环境变量配置的一些方法。方法一:1.右击“我的电脑”——>选择“属性”——>选择“高级系统设置”——>选择“环境变量”。这时,会打开这样一个窗口:2. 我们在系统变量中点击“新建”,会弹出这样一个窗口:...

2019-05-17 18:57:58 73

空空如也

空空如也

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

TA关注的人

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