自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot的自动装配中的@ConditionalOnBean条件装配注解在Spring启动过程中,是如何保证处理顺序靠后的

Spring Boot的自动装配中的@ConditionalOnBean条件装配注解在Spring启动过程中,是如何保证处理顺序靠后的@ConditionalOnBean条件装配的顺序就是Spring的DeferredImportSelector接口延迟处理机制来保证的。

2023-09-30 13:27:38 2535

原创 Mockito源码浅析——核心逻辑

一、Mockito源码逻辑简介 Mockito是一个Mock框架,让你用简单干净的API写漂亮的测试代码。Mockito通过ByteBuddy动态字节码生成技术生成mock类型(你要模拟类的代理类),默认通过objenesis框架生成mock类型的对象实例,mock实例对象的所有方法都会调用MockHandlerImpl对象实例的handle方法。 该文章主要从三个部分进行讲解:mock代理对象创建,mock对象方法的打桩,mock对象方法的入参验证。二、mock代理...

2021-10-11 21:37:00 1195

原创 String类型的JVM层面原理总结(字符串常量池-StringTable、运行时常量池、intern、JVM的ldc)

String类型的JVM层面原理总结(字符串常量池-StringTable、运行时常量池、intern、JVM的ldc)

2023-01-08 11:48:09 189

原创 Java注解简介

Java注解是一种标注。Java中的类、方法、变量、参数、包等均可以被注解标注从而添加额外的信息。相比于直接修改代码的硬编码方式,基于注解的这种松耦合的信息添加方式更受欢迎。1.元注解随便打开一个注解类,会发现它们中也包含注解。这些用来注解其他注解的注解,称为元注解。元注解一共有五个,分别是@Target、@Retention、@Documented、@Inherited、@Repeatable,下面分别进行介绍。@Target 注解用来声明注解可以用在什么地方,它的值需要从枚举类Element

2022-03-29 12:48:05 624

原创 序列化与反序列化

序列化是把对象转换为字节序列的过程;反序列化是把字节序列恢复为对象的过程。对象的序列化主要有两个目的:一是将对象转化成字节后保存在存储介质中,即为了持久化对象;二是将对象转化成字节后在网络上传输,即为了传输对象。而与之对应,将字节还原为对象的过程就是反序列化。在 Java中,要表明一个类的对象是可序列化的,则必须继承 Serializable接口或其子接口 Externalizable接口。Externalizable接口的使用稍复杂,将在 22.1.3节中介绍,这一节先介绍 Serializable接

2022-03-22 12:51:28 97

原创 Java的异常介绍

“异常”代表程序运行中遇到了意料之外的事情,为了表征异常,Java标准库中内建了一些通用的异常,这些类以 Throwable为父类。而 Throwable又派生出 Error类和 Exception类两大子类。· Error及其子类,代表了 JVM自身的异常。这一类异常发生时,无法通过程序来修正。最可靠的方式就是尽快停止 JVM的运行。· Exception 及其子类,代表程序运行中发生了意料之外的事情。这些意外的事情可以被 Java异常处理机制处理。而 Exception类及其子类又可以划分为两大

2022-03-22 12:41:45 668

原创 记 2022-03-03 线上系统响应缓慢 频繁FullGC问题

事件时间及地点2022年03月03日 周四 北京 京东总部4号楼事件现象描述线上系统 某一台机器 的许多接口 发生报警,提示响应时间较长,也就是系统响应慢; 线上一共12台机器,并不是固定的一台服务器报警; 每隔2个小时左右就会发生一次此现象; 查看对应机器的线上监控,发现CPU很高,并且发生了频繁的FullGC;问题排查过程用web页面操作服务器,发生问题的机器生成heap dump堆转储文件; 将文件下载到本地以后用java的jdk下的bin目录中的jvisualvm打开堆转储

2022-03-07 20:14:04 309

原创 单元测试Mockito框架——基本用法总结和示例

前言至于什么是单元测试Mockito框架以及它的作用就不在这里赘述了,百度一下会有很多介绍;这里主要是写一些干货,是在日常编写单元测试会用到的内容总结。总结和示例示例主要采用一个完整的TEST类来演示,注解版本和非注解版本都会写;至于具体的细节解释则会在代码示例中以注解的形式给出。半个月内写完这篇文章。...

2021-09-13 09:54:20 125

原创 EasyExcel的导入和导出

导入:下面是从http请求流中读取数据流,其他形式的数据流道理相同;逻辑代码: @PostMapping(value = "import", consumes = "multipart/*", headers = "content-type=multipart/form-data") public String import(MultipartHttpServletRequest request) { log.info("import批量录入数据开始");

2021-07-22 20:35:53 644

原创 单点登录、权限认证解决方案

待整理

2021-06-26 14:14:19 269

原创 TCP协议为什么要经过三次握手而不是两次呢

待编辑

2021-06-25 21:53:08 78

原创 Mockito关于抽象类的问题

真实调用抽象类需要中的方法需要真实调用,那么用@InjectMocks是不管用的,需要如下代码: DefaultCreateOrderTemplate defaultCreateOrderTemplate; @Before public void setUp() { defaultCreateOrderTemplate = mock(DefaultCreateOrderTemplate.class, Answers.CALLS_REAL_METHODS);

2021-05-20 16:22:52 3769 3

原创 ES常用指令

#显示各个分片的状态GET /_cat/shards?v#显示集群健康值GET /_cluster/health#新建索引PUT /test_index?pretty#查询所有索引GET /_cat/indices?v#删除索引DELETE /test_index?pretty#排序GET /product/_search?sort=price:desc#关键词查询+排序GET /product/_search?q=name:phone&sort=price:desc#查

2021-04-01 00:06:54 219

原创 2020-11-18记录FullGC排查过程

系统突然发生宕机,由于前期已经发现系统卡顿现象,因此将GC日志打开了,登录服务器查看日志,top指令发现CPU占用100,java进程内存占用4.7G,疯狂打印FullGC日志; top -Hp pid查看,发现是垃圾回收的线程占用的,当然这过程需要十进制向十六进制转换pid,同时jstack查看线程信息; jmap导出dump文件,由于文件较大,且当前服务器下载速率较低,因此使用scp复制到190服务器,然后用winSCP下载到本地; 接着使用jvisualVM打开堆dump文件; 发现char[

2020-11-18 22:07:03 188

原创 java线程的六种状态以及转换

1.双向箭头:状态可以互相转换;单向箭头:状态只能单向转换;2.NEW:创建java线程初始对象,线程还未运行起来,调用start方法会变成RUNNABLE状态;3.RUNNABLE:运行中,可运行,阻塞(操作系统);...

2020-10-10 00:13:37 174

原创 字母和数字交替输出,并保证字母永远排在前面

import java.util.concurrent.CountDownLatch;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockTest { static ReentrantLock lock = new ReentrantLock(); static Condition cond1 = lock.ne.

2020-10-10 00:00:50 295

原创 java对象的创建过程--编码演示

源码class T { int m = 8;}T t = new T();汇编码0 new #2 <T> //在堆中为对象开辟空间,并且为属性附零值(0或null),m=03 dup 4 invokespecial #3 <T.<init>> //调用构造函数,并对属性赋值,此例是m=87 astore_1 //将创建好的对象地址,赋值给变量t8 return...

2020-09-26 21:05:43 74

原创 Oracle创建表空间及用户--亲测有效

创建表空间create tablespace FLAS_LOG--表空间名称datafile '/oracle/oradata/flas_log/flas_log.dbf'--表空间的文件地址size 1M autoextend on next 50M maxsize unlimited;--autoextend on:自增;next 50M:自增的大小;maxsize unlimited:不限制最大空间创建用户create user FLAS_LOG--用户名identified by

2020-09-08 00:02:56 95

原创 struts2中获取request文件流

public class InterfaceServiceImplAction extends BaseFormBean{private Map<String,Object> dataMap;private File file;private String fileFileName;private String appId;private DocBizManageBo docBizManageBo;private DocManageBo docManageBo;p...

2020-09-03 00:42:42 697

原创 融资租赁资产管理系统(FLAS)项目运维经验记录总结--org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

问题:xml解析抛异常,异常信息如下:javax.servlet.ServletException: javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not foundat org.apache.jasper.servlet.JspServlet.service(JspServlet.java:268)at javax.servlet.

2020-08-23 02:42:00 749

原创 Maven下载、配置及idea配置

下载地址:http://maven.apache.org/download.cgi选择这个下载:Binary zip archive下载后解压,然后建立仓库目录repository,然后修改配置文件;配置文件所在路径:F:\apache-maven-3.6.3\conf配置文件主要内容:配置本地仓库:<localRepository>F:\apache-maven-3.6.3\repository</localRepository>配置阿里仓库镜像:&

2020-08-14 00:55:49 104

原创 java的多态成员访问特点

成员变量:编译看左边,运行看左边 静态变量:编译看左边,运行看左边成员方法:编译看左边,运行看右边 静态方法:编译看左边,运行看左边

2020-06-01 07:50:48 147

原创 eclipse添加本地jdk方法

2020-04-21 00:31:53 870

原创 eclipse启动tomcat堆内存溢出问题解决

-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

2020-04-21 00:08:34 212

原创 Select级联

$("select[name='payeeBankName']").change(function(){nameAndAcount();});//添加 值改变 的监听function nameAndAcount(){//联动逻辑 函数 //收款行 var bank = $("select[name='payeeBankName']").val(); //账号 var appe...

2020-02-27 19:18:27 139

原创 form表单形式导出Excel

<a href="javascript:void(0)" onclick="exportExcel()">导出1</a>// 导出,使用这种方式 可以,//使用 ajax请求不可以导出excel,因为导出excel,实际上是文件下载,后台需要往前端(浏览器)写文件流的。而Ajax请求获取数据都是“字符串”,整个交互传输用的都是字符串数据,它没法解析后台返回的文件流...

2020-02-27 13:02:50 1573

原创 Oracle和MySQL 表结构和数据 与 用户和数据库名称之间的关系

Oracle:一个库可以有多个用户,每个用户有自己的表;MySql:多个用户共享每个库,每个库有自己的表;通俗来说就是,Oracle的表结构和数据 是与用户对应的,而MySQL的表结构和数据 是与数据库名称对应的;...

2020-02-23 12:03:21 847

原创 Struts2实现原理

1.获取请求路径;(具体的action)2.到src下面找struts.xml,使用dom4j解析得到xml文件中内容,用请求路径中具体的action值匹配xml中action标签下name属性的值是否一致;3.匹配name属性值,找到所在的action标签中的另一个属性class的值,得到的是action全路径,使用反射实现功能;(反射代码:Class clazz = Class...

2020-01-31 20:14:19 91

原创 JAVA方法重写规则

两同两小一大原则:两同:方法名和参数列表相同两小:返回值或声明异常比父类小(或相同)一大:访问修饰符比父类的大(或相同)

2020-01-16 14:38:13 114

原创 jar包+源码下载地址

common:http://commons.apache.org/;

2019-11-12 22:54:07 460

原创 servlet生命周期

Servlet的生命周期是由servlet的容器来控制的。分为3个阶段:初始化阶段、运行阶段、销毁阶段。初始化阶段:初始化阶段步骤:ØServlet容器加载servlet类,把它的. Class文件中的数据读到内存中。ØServlet容器创建servletConfig对象。servletConfig对象包含了servlet的初始化配置信息。此外servlet容器还会使得servle...

2019-11-10 22:01:27 78

原创 java集合

java集合

2019-10-07 20:04:04 82

转载 request.getRemoteAddr()和request.getRemoteHost()

System.out.println("request.getRemoteAddr(): " + request.getRemoteAddr());System.out.println("request.getRemoteHost(): " + request.getRemoteHost());得到的结果相同(局域网内试验的结果...

2019-09-30 21:56:48 1077

原创 mysql保留字

mysql保留字如下表:ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHARACTER CHEC...

2019-09-29 22:13:08 838 1

原创 异常打印e.toString()、e.getMessage()、e.printStackTrace()区别

e.toString(): 获得异常种类和错误信息 java.lang.ArithmeticException: / by zeroe.getMessage():获得错误信息 / by zeroe.printStackTrace():在控制台打印出异常种类,错误信息和出错位置等...

2019-09-28 22:34:19 338

原创 ResultSet的absolute()方法

java.sql.ResultSet接口boolean absolute(int row)throws SQLException将指针移动到此 ResultSet 对象的给定行编号。如果行编号为正,则将指针移动到相对于结果集开头的给定行编号。第一行为行 1,第二行为行 2,依此类推。如果给定行编号为负,则将指针移动到相对于结果集末尾的绝对行位置。例如,调用方法 absolute(-1) ...

2019-09-27 22:36:12 1704

原创 IO流为什么必须手动关闭,不能像其他的方法坐等GC处理。

读一个文件,忘记关闭了流,你在操作系统里对这个文件的写,删除等操作就会报错,告诉你这个文件被某个进程占用,这是为什么呢?  java是从c++设计来的,但是无论是C语言还是C++,都需要手动释放内存,java不需要。  因为java在对象的引用被消除之后,正常情况下,内存资源是会被垃圾回收。  使用完IO流,必须手动回收,这是为了回收系统资源。  一般来说,需要自己close的东西...

2019-09-25 22:40:26 2296 1

转载 java中的结果集的行数和列数

java中的结果集的行数和列数文章分类:Java编程在Java中,获得ResultSet的总行数的方法有以下几种。第一种:利用ResultSet的getRow方法来获得ResultSet的总行数Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);...

2019-09-24 22:30:10 709

转载 MySQL中Date,DateTime,TimeStamp和Time的解释和区别

Date名称 解释 显示格式 YYYY-MM-DD 显示范围 1601-01-01 到 9999-01-01 应用场景 当业务需求中只需要精确到天时,可以用这个时间格式 后台取值 @JSONField(format=”yyyy-MM-dd”) DateTime名称 解释 格式 显示YYYY-MM-D...

2019-09-17 23:35:12 305

转载 java时间戳 10位和13位分别是怎么来的?

问题1:为什么会生成13位的时间戳,13位的时间戳和10时间戳分别是怎么来的经过百度得知,原来java的date默认精度是毫秒,也就是说生成的时间戳就是13位的,而像c++或者php生成的时间戳默认就是10位的,因为其精度是秒。问题2:13位时间戳如何转换成10位时间戳本来以为java中有设置可以修改其时间精度,后来在百度上没有找到,就只能采用其它方法来转化,这里提供两种方式来转换。第一种...

2019-09-17 23:23:08 1564

空空如也

空空如也

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

TA关注的人

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