![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 78
topEngineerr
个人邮箱drstime@163.com。欢迎交流。
展开
-
锁-spring shedlock
背景spring shedlock用于在分布式服务的情况下执行定时任务,例如定时删除数据库中的一些数据,做数据迁移等等操作。这项技术在项目的分布式服务中大量使用。使用的主要原因有以下几点:定时任务的业务需要,要在服务service正常运行的过程当中同时在背后执行一些操作,满足我们的业务需要,定时任务也就是schedule task必不可少。 分布式服务的要求。试想下面一个场景: 随着业务增长,有一天单个服务service的压力过大,一个服务支撑不住了,我们要考虑部署多个服务来分散压力。这时问题就原创 2022-03-30 16:42:18 · 2967 阅读 · 0 评论 -
服务器performance优化总结
本文的总结经验大多基于postgres数据库避免使用lower函数todo查询时默认不返回counttodo创建正确得index1.order by后面跟的多个条件需要建立联合索引,否则不会进行index scan根据sql调整index:order by creation_date desc, id asc limit 10, you need to create index(creation_date desc, id asc).order by creation_.原创 2021-07-08 17:39:20 · 255 阅读 · 0 评论 -
Mock bean失败一直为null
原来的代码如下:@Componentpublic class TargetChargeFinder { @Autowired ChargeRepository chargeRepository;mock beanchargeRepository一直失败,且其值一直为null。原因在于,测试的地方,对于TargetChargeFinder没有采取注入的方式加入测试类当中,而是new的 private TargetChargeFinder finder;..原创 2021-04-15 16:34:11 · 4709 阅读 · 0 评论 -
Junit5详解
Junit5是当前最新的测试框架。在junit5当中,一些之前使用的注解和测试方法被新的注解替换掉了。使用junit5的测试结构如下:import org.junit.jupiter.api.AfterAll;import org.junit.jupiter.api.AfterEach;import org.junit.jupiter.api.Assertions;import org.junit.jupiter.api.BeforeAll;import org.junit.jupiter..原创 2020-09-30 15:45:46 · 1034 阅读 · 0 评论 -
spring boot test 端口号一直为0
用springboot 2.2和junit5时,我需要完成一些integrationtest.在写integrationtest时我有如下的代码用于启动一个测试环境:import org.junit.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.boot....原创 2020-09-29 16:38:12 · 686 阅读 · 0 评论 -
Spring data jpa 删除效率及分析
代码如下: @Query("DELETE FROM UsageRecordEntity u where u.customerNumber = ?1") void deleteByCustomerNumber(String customerNumber);报错如下:Caused by: java.lang.IllegalStateException: You cannot call getSingleResult() on this query. It is the incorrect q原创 2020-09-22 13:38:45 · 1481 阅读 · 0 评论 -
java8升级java11问题
在java8升级到java11,安装完成之后。打开cmd,执行命令java -version,却得到下面的错误:<JAVA_HOME>/lib/ext exists, extensions mechanism no longer supported; Use -classpath instead..Error: Could not create the Java Virtual...原创 2020-02-01 15:29:22 · 3758 阅读 · 0 评论 -
jms基础
1. JMS基本概念 JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业应用的开发。它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。P2P 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。 对于点到点模型,消息...转载 2015-11-15 10:51:42 · 279 阅读 · 0 评论 -
java中的语法糖
Table of Contents概述语法糖:泛型与类型擦出泛型和重载自动装箱,自动拆箱,与遍历循环条件编译概述在博客java重要基础知识汇总中,我们提到了内部类是一种java的语法糖。事实上java除了内部类还提供了另外一些语法糖,用于方便程序员的代码开发。但是值得注意的是,语法糖对代码不会带来任何实质性的功能上的变化。他仅仅是编译器做的一些'把戏'.语法糖在各种编程...原创 2019-03-22 11:55:08 · 1599 阅读 · 0 评论 -
[java] synchronized关键字用法及实现原理详解
目录synchronized修饰方法synchronized代码块static静态synchronized方法与synchronized(class)代码块对比synchronized底层实现原理同步代码块实现原理同步方法实现原理线程私有的变量锁重入是什么?如何实现的?Synchronized优化自旋锁锁消除锁粗化偏向锁轻量级锁Synch...原创 2018-06-07 18:15:49 · 6624 阅读 · 0 评论 -
[java] Spring Data JPA注解@Version乐观锁是如何实现的
Table of Contents背景介绍什么是JPA什么是乐观锁?使用场景是什么?JPA乐观锁的实现原理数据库的行级锁乐观锁哪些数据类型可以作为乐观锁的判定条件其他背景介绍@Version是jpa里提供的一个注解,其作用是用于实现乐观锁。在JPA的帮助下实现乐观锁十分简单,只需将我们的一个java的entity加上一个由@version修饰的字段即可。然后...原创 2019-01-16 18:17:10 · 9079 阅读 · 3 评论 -
批处理框架spring batch基础知识介绍
Table of Contentsspring batch简介Spring Batch架构介绍Spring Batch核心概念介绍什么是Job什么是JobInstance什么是JobParameters什么是JobExecution什么是Step什么是StepExecution什么是ExecutionContext什么是JobRepository...原创 2019-01-10 12:29:27 · 119326 阅读 · 30 评论 -
[java] 关于main方法的一切
Table of Contents概述为什么main方法必须是static的?为什么main方法必须是void的?为什么main方法必须是public的?其他概述Java中的main方法,是一个java应用程序的入口,无论一个java的应用多么复杂庞大,或是多么的小,只要他是一个可以运行的java程序那么必然就要有一个main方法。main方法的定义格式通常固定如下:...原创 2018-11-12 15:18:09 · 5908 阅读 · 4 评论 -
一个方法返回值的类型应该怎么定义
在做开发时遇到了这样一个问题,有一个方法我需要对一个json的字符串做一些处理,处理完成之后再返回,但是返回的需要并不明确,返回多种类型的对象从功能上讲都是一样的,如Object,String.伪代码如下:public ?? adaptTheMetadataByLanguage(String json) { ObjectMapper mapper = new Obje...原创 2018-07-24 17:55:07 · 9068 阅读 · 0 评论 -
[java] System类深度解析
概述大部分写的第一个java功能,应该都是如下这行代码:System.out.println("hello world");这里即用到了System类,本篇文章就将分析System类的实现原理。在java里面System类是一个final修饰的类,意味着它的方法和属性都不能被修改。System 类包含了多个有用的字段和方法,它不能被实例化。在system类提供的功能当中,有标准...原创 2018-08-30 23:08:45 · 593 阅读 · 0 评论 -
[java] Integer类解析
本篇文章基于jdk1.8概述Integer类定义如下:public final class Integer extends Number implements Comparable<Integer> {}它是一个final修饰的类,意味着它不可被继承,也提供了相对比较完善的功能。Integer类是原始类型int的包装类,一个Integer类的对象包含有一个单独...原创 2018-08-31 17:32:56 · 314 阅读 · 0 评论 -
jsp和js的区别
该篇入门转自《JSP高级编程》一书。希望大家在看完本入门之后能分清楚jsp(Java Server Pages)和js(JavaScript)的区别。希望这两篇文档对大家能有所帮助!................................................................................................................转载 2015-11-28 11:12:07 · 410 阅读 · 0 评论 -
tomact登录问题
仅限于帮助刚开始学习Javaweb朋友们。言简意赅的说,就是在使用tomact时,安装好后我们可以通过浏览器,输入http://localhost:8080,访问tomact,但是若要管理tomact上的webapp,则需要登录,这时我们需要进行以下配置即可,找到tomact安装目录,我的是这个D:\dr\tomcat7\apache-tomcat-7.0.63-windows-x64\apa...原创 2015-08-15 10:34:41 · 364 阅读 · 0 评论 -
[java] 反射和多态实现原理详解以及对比
Table of Contents反射和多态多态什么是多态java里多态的具体用法多态的实现原理反射什么是反射反射的实现原理反射的应用反射的弊端反射相关类反射应用实例一些问题private修饰的方法可以通过反射访问,那么private意义何在?反射和多态的区别反射和多态事实上,反射和多态这两种技术并无直接联系,之所以把它们放在一起...原创 2018-08-22 21:39:49 · 5624 阅读 · 1 评论 -
Junit知识总结
背景知识JUnit 是针对Java 编程语言的最流行的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。目前最新的Junit版本是Junit5,要求java8以上的版本。什么是单元测试所谓单元测试是测试应用程序的功能是否能够按需要正常运行的代码。单元测试是一个对单一实体(类或方法)的测试。单元测试可以由两...原创 2019-09-03 16:19:53 · 553 阅读 · 0 评论 -
StackOverFlow异常记录
在写cglib动态代理实现aop的代码的时候,发现运行测试程序报出了stackoverflow异常,话不多说直接上代码:CGLibProxy实现如下:import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.proxy.MethodProxy;...原创 2019-08-19 17:48:17 · 720 阅读 · 2 评论 -
java里的ClassNotFoundException
1.Caused by: java.lang.ClassNotFoundException: org.springframework.security.oauth2.common.util.RandomValueStringGeneratorClassNotFoundException是一个非运行时异常,且常常出现在项目启动时。它的意思简单明了,就是指项目启动时,或者执行某一个功能时,需要的C...原创 2019-06-19 15:16:23 · 3333 阅读 · 0 评论 -
jdk包结构及用途分析
Table of Contents概述jdk包总览rt.jar包结构分析概述jdk是每一个使用java的人员每一天都在使用的东西,博主也已经研究了jdk源代码中的一些类了,本篇博客是想从jdk包结构的角度去拆分jdk的源代码包,以提供从设计角度的一个理解。本篇博客基于jdk1.8jdk包总览jdk的包如下图所示:该图是直接从jdk的包目录截取出来的图,我们常...原创 2019-05-29 17:49:17 · 3007 阅读 · 0 评论 -
java如何获取当前日期和时间
本篇博客主要总结java里面关于获取当前时间的一些方法System.currentTimeMillis()获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响,得到的结果是时间戳格式的。例如:1543105352845 我们可以将时间戳转化成我们易于理解的格式SimpleDateFormat formatter= new S...原创 2019-06-12 18:11:36 · 389813 阅读 · 17 评论 -
使用spring batch实现数据迁移实例
Table of Contents数据迁移Data migration概述数据迁移的类型及其挑战一个数据迁移代码实例spring cloud data flow介绍在使用Spring Bacth以及Spring Cloud data flow时遇到的问题收集问题1问题2问题3问题4问题5问题6问题7问题8问题9数据迁移Data migra...原创 2019-05-17 10:59:22 · 3267 阅读 · 0 评论 -
使用spring data Querydsl 实现动态查询功能
Table of Contents概述定义查询请求google-like查询特定字段的类sql查询使用Spring DataQuerydsl利用Spring Query DSL实现动态查询实现过程中的难题主表包含多个子表数据时的AND查询概述本篇博客主要将介绍的是利用spring query dsl框架实现的服务端查询解析和实现介绍。查询功能是在各种应...原创 2019-05-02 16:48:05 · 6015 阅读 · 1 评论 -
Intelij Idea设置条件断点
使用断点进行调试是每一个开发者必不可少的一项技能,在调试程序的时候,我们常常会在我们想要分析问题的代码行加上断点,让程序执行到此行时被暂停,便于我们分析问题。一般情况下,基本的断点功能足以满足我们的需求,但是有的情况或者调试的条件更苛刻的时候,只使用基本的断点功能就会显得不太够用。举例说明,现在在程序里有下面这样一行代码:String str = generateAString();该行...原创 2019-04-17 14:38:43 · 2253 阅读 · 0 评论 -
[java] Runtime类解析
概述每一个java application都有一个Runtime类的单例,这个实例允许应用程序访问一些程序所运行的环境的接口。此类不能被应用程序实例化。getRuntime方法程序当前的runtime实例可以通过getRuntime方法得到,代码如下: private static Runtime currentRuntime = new Runtime(); /**...原创 2018-09-01 13:30:17 · 413 阅读 · 0 评论 -
[Java] Class类是一个怎样的存在
类与对象的概念在Java的体现当中有一个非常特殊的类,即Class类。我们知道java是一门面向对象的编程语言,java中的类是程序员用来表达一个具体问题的抽象的,那么Class类其实就可以简单理解为表达java中的类的共同特点的一个抽象。在深入这个问题之前不妨先再次明确一下类与对象分别的概念是什么。在面向对象的概念当中,类:是指的具有相同属性性质的一类事物的一个抽象。例如:车,人,...原创 2018-07-16 16:08:15 · 1173 阅读 · 3 评论 -
[java] 深度解析容器
容器,和我们平常说的集合是指的一个概念。为什么需要容器如果一个程序只包含固定数量的且其生命期都是已知的对象,那么这是一个非常简单的程序。但是通常,程序问题根据运行时才知道的某些条件支创建新对象。在此之前,不会知道所需对象的数量,甚至不知道确切的类型。这是一个编程语言设计角度的问题,为了解决这个普遍的编程问题,需要在任意时刻任意位置创建任意数量的对象。不能依靠创建命名的引用来持有每一个对...原创 2018-07-19 00:08:10 · 220 阅读 · 0 评论 -
[java] 停止线程
在java中有几种方法可以终止正在运行的线程使用退出标志,使线程正常退出, 使用interrupt方法中断线程 使用stop方法强行终止线程->已作废。 异常法停止线程。推荐。在代码适当的位置抛出InterruptedException。我们知道在java当中遇到线程时当前线程会停止。 使用return与interupt()结合也能停止线程。不如异常法。这里着重介绍第二种方法,...原创 2018-07-07 19:16:13 · 577 阅读 · 0 评论 -
[java] ConcurrentHashMap
在分析ConcurrentHashMap的实现原理之前,先来介绍一下hashmap以及hashtable的特点和可能存在的问题.TreeMap//todoHashTablehashTable,它是线程安全的,它在所有涉及到多线程操作的都加上了synchronized关键字来锁住整个table,这就意味着所有的线程都在竞争一把锁,在多线程的环境下,它是安全的,但是无疑是效率低下的,尤...原创 2018-07-09 19:27:37 · 321 阅读 · 0 评论 -
[Java] 由多线程想到的
在自己尝试写一个死锁的程序的时候,需要去尝试起两个线程起来。我定义了一个类去实现了Runnable接口。然后再到main方法里面想要去起动这个线程,调用他的start方法。于是我写了如下代码Thread threadA = new ThreadA(a,b);编译器提示报错,由于我当时对于起线程记忆得并不熟练,因此一直没有想起来如何把它改对。 后来突然想起来应该把new出来的ThreadA...原创 2018-07-02 14:52:23 · 158 阅读 · 0 评论 -
[编程与其他] 二
分析解决问题的能力来自于两个方面:第一是个人对自身已知事物的认识和理解的程度,第二是个人在遇到问题时理解问题(也可以说是翻译问题)的能力。以软件开发的例子来说,遇到了一个错误,首先要看懂和理解这个错误本身是一个什么样的错误,第二是若已经完全理解了这个错误,基于你目前的知识水平,认知和能力,或者是通过一定渠道获取帮助之后的水平和能力,能否解决这个问题。...原创 2018-02-27 13:54:02 · 146 阅读 · 0 评论 -
[java] static关键字总结
Table of Contents概述修饰类的变量修饰方法修饰代码块静态导入包用法static关键字与java内存概述static 在java体系里的地位:java语言的一个修饰符,属于非访问修饰符,所谓访问修饰符就是控制访问权限的修饰符,如public,protected,private,default再来看看static翻译成中文的意思:静止...原创 2017-12-28 14:52:56 · 1504 阅读 · 3 评论 -
[Java] Object 类深度解析
Table of Contents(1) registerNatives(2) getClass(3) hashCodehash 的定义Java 中 hash 值的含义(4) equals(5) clone(6) toString(7) notify(8) notifyAll(9) wait(long timeout)(10) wait(long t...原创 2017-12-27 11:28:33 · 638 阅读 · 0 评论 -
Bug records
建了一个project 目录不知道怎么回事建到一个java项目里面去了启动的时候一直报错:objc[14867]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/java (0x10dac44c0) and /原创 2017-12-25 11:29:47 · 198 阅读 · 0 评论 -
Java12主要更新介绍
Table of Contentsjava12支持Unicode11在Linux系统上提供POSIX_SPAWN选项JVM 常量API支持压缩数格式日语中新的一个方形字符支持在备用存储设备上分配java的堆中的老年代ZGC: 并发的类卸载新的命令行Flag-XX:+ExtensiveErrorReportsjava.security.manager添加了新...原创 2018-10-24 17:42:39 · 3847 阅读 · 0 评论 -
[java] 关键字new是如何实现的
目录概述什么时候我们可以new一个类虚拟机处理new指令的流程一些问题1.两种new对象方式的区别2.变量初始化的默认值3.构造方法4.new一个对象时的内存空间担保?5. 关于局部变量6. 静态变量是在何时初始化的?与对象实例化有什么关系?7.使用Class类提供的newInstance和使用关键字new有哪些不同?概述在java里面创建一...原创 2018-07-24 23:53:37 · 24733 阅读 · 12 评论 -
[java] 数组
数组基本介绍在大多数的时候,我们仅仅只需要知道:对于一个数组,我们可以创建并组装它,通过使用整型的索引值访问它们的元素,并且它的尺寸不能改变。但是在有的时候是需要在数组上执行更加复杂的操作,并且程序员需要做出决策到底是使用数组还是使用其他容器。数组与其他种类的容器之间的区别有三方面效率类型保存基本数据类型的能力 在java当中,数组是效率最高的存储和随机访问对象引用序列...原创 2018-09-02 19:46:47 · 186 阅读 · 0 评论