
java
文章平均质量分 59
演员¹²¹³⁸
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
@TransactionEventListener的关键源码整理
根据Class对象找到每个方法,挑选出被@EventListener注解标记的方法,然后交由对应的org.springframework.context.event.EventListenerFactory来创建监听器适配器,并将监听器适配器添加到容器的监听器集合中(当然这里不变一定是监听器适配器,创建并添加监听器也行,只不过目前现状都是采用的适配器,如果自己实现监听器,在监听器直接处理也行,只不过由适配器处理更加的灵活,有点类似于代理、委托的感觉)。事务同步器适配器做了空实现。原创 2025-01-21 16:44:36 · 544 阅读 · 0 评论 -
补码是如何定义出来的(或者说补码是如何产生的)
我们拿最简单的负数运算来举例,我们来看 -1+1=0这个运算,用4位的二进制数来表示,负数位置由于我们不知道应该如何表示,那就暂时这么表示:-1+0001=0000,我们很自然的就可以想到,这里面的0000是可以通过位的溢出来实现,因此0000可以用10000来表示,那么这个-1就应该是1111,这样才能保证-1+1=0(这个0其实相当于10000,只不过高位1溢出了)。PS:用4位二进制数举例子是因为8位太长了,道理都是相同的,位数太长没啥必要,还挺费眼睛的。原创 2024-10-04 00:33:17 · 2123 阅读 · 9 评论 -
Spring Boot的自动装配中的@ConditionalOnBean条件装配注解在Spring启动过程中,是如何保证处理顺序靠后的
Spring Boot的自动装配中的@ConditionalOnBean条件装配注解在Spring启动过程中,是如何保证处理顺序靠后的@ConditionalOnBean条件装配的顺序就是Spring的DeferredImportSelector接口延迟处理机制来保证的。原创 2023-09-30 13:27:38 · 3478 阅读 · 0 评论 -
String类型的JVM层面原理总结(字符串常量池-StringTable、运行时常量池、intern、JVM的ldc)
String类型的JVM层面原理总结(字符串常量池-StringTable、运行时常量池、intern、JVM的ldc)原创 2023-01-08 11:48:09 · 232 阅读 · 0 评论 -
Java注解简介
Java注解是一种标注。Java中的类、方法、变量、参数、包等均可以被注解标注从而添加额外的信息。相比于直接修改代码的硬编码方式,基于注解的这种松耦合的信息添加方式更受欢迎。1.元注解随便打开一个注解类,会发现它们中也包含注解。这些用来注解其他注解的注解,称为元注解。元注解一共有五个,分别是@Target、@Retention、@Documented、@Inherited、@Repeatable,下面分别进行介绍。@Target 注解用来声明注解可以用在什么地方,它的值需要从枚举类Element原创 2022-03-29 12:48:05 · 656 阅读 · 0 评论 -
序列化与反序列化
序列化是把对象转换为字节序列的过程;反序列化是把字节序列恢复为对象的过程。对象的序列化主要有两个目的:一是将对象转化成字节后保存在存储介质中,即为了持久化对象;二是将对象转化成字节后在网络上传输,即为了传输对象。而与之对应,将字节还原为对象的过程就是反序列化。在 Java中,要表明一个类的对象是可序列化的,则必须继承 Serializable接口或其子接口 Externalizable接口。Externalizable接口的使用稍复杂,将在 22.1.3节中介绍,这一节先介绍 Serializable接原创 2022-03-22 12:51:28 · 120 阅读 · 0 评论 -
Java的异常介绍
“异常”代表程序运行中遇到了意料之外的事情,为了表征异常,Java标准库中内建了一些通用的异常,这些类以 Throwable为父类。而 Throwable又派生出 Error类和 Exception类两大子类。· Error及其子类,代表了 JVM自身的异常。这一类异常发生时,无法通过程序来修正。最可靠的方式就是尽快停止 JVM的运行。· Exception 及其子类,代表程序运行中发生了意料之外的事情。这些意外的事情可以被 Java异常处理机制处理。而 Exception类及其子类又可以划分为两大原创 2022-03-22 12:41:45 · 713 阅读 · 0 评论 -
记 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 · 352 阅读 · 0 评论 -
Mockito源码浅析——核心逻辑
一、Mockito源码逻辑简介 Mockito是一个Mock框架,让你用简单干净的API写漂亮的测试代码。Mockito通过ByteBuddy动态字节码生成技术生成mock类型(你要模拟类的代理类),默认通过objenesis框架生成mock类型的对象实例,mock实例对象的所有方法都会调用MockHandlerImpl对象实例的handle方法。 该文章主要从三个部分进行讲解:mock代理对象创建,mock对象方法的打桩,mock对象方法的入参验证。二、mock代理...原创 2021-10-11 21:37:00 · 1371 阅读 · 0 评论 -
单元测试Mockito框架——基本用法总结和示例
前言至于什么是单元测试Mockito框架以及它的作用就不在这里赘述了,百度一下会有很多介绍;这里主要是写一些干货,是在日常编写单元测试会用到的内容总结。总结和示例示例主要采用一个完整的TEST类来演示,注解版本和非注解版本都会写;至于具体的细节解释则会在代码示例中以注解的形式给出。半个月内写完这篇文章。...原创 2021-09-13 09:54:20 · 171 阅读 · 0 评论 -
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 · 254 阅读 · 0 评论 -
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 · 702 阅读 · 0 评论 -
单点登录、权限认证解决方案
待整理原创 2021-06-26 14:14:19 · 315 阅读 · 0 评论 -
Mockito关于抽象类的问题
真实调用抽象类需要中的方法需要真实调用,那么用@InjectMocks是不管用的,需要如下代码: DefaultCreateOrderTemplate defaultCreateOrderTemplate; @Before public void setUp() { defaultCreateOrderTemplate = mock(DefaultCreateOrderTemplate.class, Answers.CALLS_REAL_METHODS);原创 2021-05-20 16:22:52 · 4607 阅读 · 3 评论 -
java线程的六种状态以及转换
1.双向箭头:状态可以互相转换;单向箭头:状态只能单向转换;2.NEW:创建java线程初始对象,线程还未运行起来,调用start方法会变成RUNNABLE状态;3.RUNNABLE:运行中,可运行,阻塞(操作系统);...原创 2020-10-10 00:13:37 · 225 阅读 · 0 评论 -
字母和数字交替输出,并保证字母永远排在前面
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 · 343 阅读 · 0 评论 -
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 · 762 阅读 · 0 评论 -
融资租赁资产管理系统(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 · 817 阅读 · 0 评论 -
java的多态成员访问特点
成员变量:编译看左边,运行看左边 静态变量:编译看左边,运行看左边成员方法:编译看左边,运行看右边 静态方法:编译看左边,运行看左边原创 2020-06-01 07:50:48 · 181 阅读 · 0 评论 -
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 · 134 阅读 · 0 评论 -
eclipse添加本地jdk方法
原创 2020-04-21 00:31:53 · 908 阅读 · 0 评论 -
eclipse启动tomcat堆内存溢出问题解决
-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m原创 2020-04-21 00:08:34 · 321 阅读 · 0 评论 -
form表单形式导出Excel
<a href="javascript:void(0)" onclick="exportExcel()">导出1</a>// 导出,使用这种方式 可以,//使用 ajax请求不可以导出excel,因为导出excel,实际上是文件下载,后台需要往前端(浏览器)写文件流的。而Ajax请求获取数据都是“字符串”,整个交互传输用的都是字符串数据,它没法解析后台返回的文件流...原创 2020-02-27 13:02:50 · 1686 阅读 · 0 评论 -
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 · 123 阅读 · 0 评论 -
jar包+源码下载地址
common:http://commons.apache.org/;原创 2019-11-12 22:54:07 · 489 阅读 · 0 评论 -
servlet生命周期
Servlet的生命周期是由servlet的容器来控制的。分为3个阶段:初始化阶段、运行阶段、销毁阶段。初始化阶段:初始化阶段步骤:ØServlet容器加载servlet类,把它的. Class文件中的数据读到内存中。ØServlet容器创建servletConfig对象。servletConfig对象包含了servlet的初始化配置信息。此外servlet容器还会使得servle...原创 2019-11-10 22:01:27 · 101 阅读 · 0 评论 -
开发Struts2项目必须添加的类库文件
名称 (版本号和后缀名省略)说明struts2-coreStruts2的核心类库xwork-core(Struts2.5中已被合并至struts2-core包)Xword的核心类库ognlOgnl表达式语言类库commons-loggingLog4j日志支持类库freemarkerFreemarker模板语言支持类库commons-io...原创 2019-09-16 13:35:59 · 231 阅读 · 0 评论 -
Servlet技术及结构体系
Servlet实质上就是按Servlet规范编写的java类,但他可以处理Web应用中的相关请求。 Servlet是一个标准,它由Sun公司定义,其具体细节由Servlet容器进行实现,如Tomcat、JBoss等。 Serializable是java.io包中的序列化接口,Servlet和ServletConfig是javax.servlet包中定义的对象,这两个对象定义了Servlet的基...原创 2019-09-16 16:05:49 · 184 阅读 · 1 评论 -
Servlet和JSP的区别
角色不同:JSP页面可以存在HTML代码和java代码并存的情况,而Servlet需要承担客户请求与业务处理的中间角色,只有调用固定的方法才能将动态内容输出为静态HTML,所以,JSP更具有显示层的角色。 编程方法不同:Servlet与JSP在编程方法上存在很大的差别,使用Servlet开发Web应用程序需要遵循Java的标准,而JSP需要遵循一定脚本语言规范。在Servlet代码中,需要调用S...原创 2019-09-16 16:26:56 · 132 阅读 · 0 评论 -
hibernate笔记
1.JavaEE三层结构 web层:Struts2框架 service层:spring框架 dao层:hibernate框架2.什么是hibernate框架(重点) hibernate框架应用在javaee三层结构中dao层框架 在dao层里面对数据库crud操作,使用hibernate实现crud操作,hibernate底层代码就是jdbc进行封装,使用...原创 2019-09-16 19:31:08 · 158 阅读 · 0 评论 -
Java Web学习笔记
1.常见的状态码: 404:资源不存在; 200:一切正常;(一般看不见) 403:权限不足; 300/301:页面重定向(跳转); 500:服务器内部错误;(代码有误) 其他编码:需要积累;2.jsp:在html中嵌套的java代码;3.在项目/WEB-INF/web.xml中设置 默认的 初始页面: <welcome-fil...原创 2019-09-16 19:32:29 · 237 阅读 · 0 评论 -
Java代码中关于Properties的使用
Properties文件为本地资源文本文件,以“消息/消息文本”的格式存放数据。使用Properties对象时,首先需创建并实例化该对象,代码如下:private static Properties prop = new Properties();再通过文件输入流对象加载Properties文件,代码如下:prop.load(new FileInputStream(propFileNa...原创 2019-09-16 19:45:03 · 244 阅读 · 0 评论 -
Class.forName(String className)和Class.forName(String className).newInstance()两个方法
Class.forName(String className)这个方法传入一个类型的全路径的名字(也就是带包的完整名字),会返回一个字节码类型(也就是Class类型)的实例如:Class clazz = Class.forName("com.dean.Person");然后再用这个字节码类型的实例clazz调用newInstance()方法会返回一个Object类型的对象如下:Obje...转载 2019-09-16 20:06:21 · 369 阅读 · 0 评论 -
JSP页面中包含文件的两种方法(include)
1.<%@include%>指令用来在JSP页面中包含另一个文件。包含的过程是静态的,即在指定文件属性值时,只能是一个包含相对路径的文件名,而不能是一个变量,也不可以在所指定的文件后面添加任何参数。其语法格式如下:<%@include file="fileName"%>2.<jsp:include>动作元素可以指定加载一个静态或动态的文件,但运行结果...原创 2019-09-17 21:24:21 · 3223 阅读 · 0 评论 -
正则表达式
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。1.普通字符:普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。2.非打印字符:非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:字符 描述 \cx 匹配由x指明的控制字符。例如,...原创 2019-09-17 21:24:41 · 162 阅读 · 0 评论 -
java时间戳 10位和13位分别是怎么来的?
问题1:为什么会生成13位的时间戳,13位的时间戳和10时间戳分别是怎么来的经过百度得知,原来java的date默认精度是毫秒,也就是说生成的时间戳就是13位的,而像c++或者php生成的时间戳默认就是10位的,因为其精度是秒。问题2:13位时间戳如何转换成10位时间戳本来以为java中有设置可以修改其时间精度,后来在百度上没有找到,就只能采用其它方法来转化,这里提供两种方式来转换。第一种...转载 2019-09-17 23:23:08 · 1657 阅读 · 0 评论 -
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 · 771 阅读 · 0 评论 -
IO流为什么必须手动关闭,不能像其他的方法坐等GC处理。
读一个文件,忘记关闭了流,你在操作系统里对这个文件的写,删除等操作就会报错,告诉你这个文件被某个进程占用,这是为什么呢? java是从c++设计来的,但是无论是C语言还是C++,都需要手动释放内存,java不需要。 因为java在对象的引用被消除之后,正常情况下,内存资源是会被垃圾回收。 使用完IO流,必须手动回收,这是为了回收系统资源。 一般来说,需要自己close的东西...原创 2019-09-25 22:40:26 · 2417 阅读 · 1 评论 -
ResultSet的absolute()方法
java.sql.ResultSet接口boolean absolute(int row)throws SQLException将指针移动到此 ResultSet 对象的给定行编号。如果行编号为正,则将指针移动到相对于结果集开头的给定行编号。第一行为行 1,第二行为行 2,依此类推。如果给定行编号为负,则将指针移动到相对于结果集末尾的绝对行位置。例如,调用方法 absolute(-1) ...原创 2019-09-27 22:36:12 · 1878 阅读 · 0 评论 -
异常打印e.toString()、e.getMessage()、e.printStackTrace()区别
e.toString(): 获得异常种类和错误信息 java.lang.ArithmeticException: / by zeroe.getMessage():获得错误信息 / by zeroe.printStackTrace():在控制台打印出异常种类,错误信息和出错位置等...原创 2019-09-28 22:34:19 · 401 阅读 · 0 评论