Java
Simple-395
简单就好
展开
-
Java单元测试之Mock指定方法
单元测试时,假如你遇到某个内部方法无法正常调用;我们可以使用mock工具去解决,方法如下:原创 2022-07-15 18:09:48 · 2407 阅读 · 0 评论 -
MyBatis-Plus标准化查询之Wrapper构造器
业内褒贬不一的MyBatis-Plus大行其道,虽然笔者不想用,但总能接触到不少相关的系统。以下是一个简单的查询构造方法。备忘。原创 2022-01-07 15:40:57 · 258 阅读 · 0 评论 -
如何手工触发FullGC(附OpenJDK源码)
当笔者执行jmap -histo:hive命令时,发现JVM执行了一次FullGC。可以官方文档上并没有说这个命令会执行FullGC,查了不少资料并没有统一的意见。扒源码吧,请看下面两段。原创 2021-10-11 14:08:00 · 6386 阅读 · 2 评论 -
Java Excel导出组件POI升级4.0踩坑笔记
通常需要使用ali的easyexcel辅助,这样使用理便捷一些。但是,如果需要大批量导出时,比如百万级的导出。就需要使用原生的POI接口,目的是为使用它的高阶功能【流式导出】。为什么要升级4.0呢?就是为了这个可支持百万级导出的功能。原创 2021-08-12 14:24:30 · 697 阅读 · 0 评论 -
Axios/POST/Spring MVC使用示例
背景:Ajax的Post比较特殊,每次使用都要费尽周折,现将几种方法进行整理。原创 2021-07-29 16:25:50 · 474 阅读 · 0 评论 -
源码探秘-Tomcat 8.5.X
基础Http11表示Http 1.1;AJPNIO启动&停止ServerService接收请求(Connector)ConnectorProtocalHandlerProcessorAdaptorExecutorProtocolHandlerAbstractProtocolAbstractProcessor处理请求(Engine)EngineHostContextWrapper其他LifecycleContainer...原创 2021-05-31 17:59:17 · 123 阅读 · 0 评论 -
Java 8之元空间
Java 8之元空间由于运行时常量池是方法区的一部分,所以这两个区域的溢出测试可以放到一起进行。前面曾经提到HotSpot从JDK 7开始逐步“去永久代”的计划,并在JDK 8中完全使用元空间来代替永久代的背景故事。...原创 2020-10-31 23:35:08 · 245 阅读 · 0 评论 -
Java 8方法参数化常用接口
接口名入参出参FunctionTRSupplier()TConsumerT()Runnable()()BiFunctionT, URUnaryOperatorx1x2BinaryOperatorx1, x2x3PredicateTbooleanCallable()x throws ex原创 2020-09-23 19:03:57 · 534 阅读 · 0 评论 -
Hive进阶之UDF开发(Java版)
以下演示如何使用Java编写Hive UDF,添加依赖<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>2.0.1</version></dependency>代码实现import org.apache.hadoop.hive.ql.exec.U原创 2020-08-20 12:34:07 · 869 阅读 · 0 评论 -
解决Log4j2不能打印行号问题(AsyncLogger)
日志的输出格式已经指定了文件名、行号显示,可是打印出来却是空的,为什么?答案在这里:原创 2020-06-11 14:24:52 · 4817 阅读 · 0 评论 -
Spring注解失效问题(缓存失效、事务失效问题)
类中的方法调用同一个类中的另一个方法时,注解会失效;如:@Cacheable,@Transactional因为注解是通过代理类实现中,调用自身的方法当然不会生效。你明白了吗?...原创 2020-03-02 16:02:09 · 715 阅读 · 0 评论 -
Java历史版本官方下载地址(Java 6、Java 7、Java 8)
Java历史版本官方下载地址:1、Java 7官方下载地址;2、Java 8官方下载地址;原创 2019-05-24 13:20:55 · 99845 阅读 · 5 评论 -
使用Spring Data Commons实现数据的查询、分页及排序功能(Pageable)
使用Spring框架自带的Spring Data模块可以简单方便地实现数据的查询、分页及排序功能,请看以下示例:原创 2019-05-21 22:19:41 · 2612 阅读 · 1 评论 -
Maven常用命令(打印依赖&生成源码)
mvn clean install -Pdev指定profile打包mvn clean install -Dmaven.skip.test=true打包,跳过单元测试mvn clean install -pl cms-core,cms-web指定模块构建mvn dependency:tree &amp;gt; dep.log查看项目信赖关系(解决依赖冲突)...原创 2019-02-28 12:09:42 · 993 阅读 · 0 评论 -
Logback配置实例(logback.xml)
配置了两个appender,其中一个是写入到指定文件的,并且是Json格式的日志,专门使用了net.logstash.logback.encoder.LogstashEncoder这个encoder。为什么是Json呢?因为采集后解析起来方便啊,ELKStack知道吧,哈哈!另外,下面配置的日志格式还是带着色的!<?xml version="1.0" encoding="UTF-8"?...原创 2019-02-17 23:43:38 · 448 阅读 · 0 评论 -
正确的在派生类(子类)中使用lombok的@builder
@AllArgsConstructorpublic class Parent { private String a;}public class Child extends Parent { private String b; @Builder private Child(String a, String b){ super(a); this.b = ...原创 2018-12-26 12:42:57 · 10493 阅读 · 0 评论 -
HashMap源码学习(Java)
待补充。。。原创 2018-12-17 23:14:31 · 123 阅读 · 0 评论 -
Netty源码学习之Future和Promise
待补充。。。原创 2018-12-17 23:13:25 · 330 阅读 · 0 评论 -
图解JVM内存结构
如下图所示:1、左上方墨绿色区域(程序计数器、虚拟机栈、本地方法栈)为线程私有;2、左侧中间及下方蓝色区域(堆区、方法区)为堆为线程共享,也是JVM中最大的一块;其中-Xss512k表示单个线程可使用的最大内存;3、右侧褐色区域为直接内存,不受JVM管理(自动也不会被gc);但在Java程序运行中也会被占用,特意标记出来(不要再问JVM最大设置了2g,为什么系统的内存监视器上却显示为3g)!.........原创 2019-09-05 11:03:12 · 834 阅读 · 0 评论 -
Netty源码学习之EventLoop和EventLoopGroup
待补充。。。原创 2018-12-17 23:12:43 · 290 阅读 · 0 评论 -
Maven镜像源汇总(含国内、国外)
国内http://maven.aliyun.com/nexus/content/groups/public/http://maven.oschina.net/content/groups/public国外http://repo1.maven.org/maven2http://central.maven.org/maven2http://repo.maven.apache.org/mav...原创 2018-12-14 00:14:08 · 37407 阅读 · 0 评论 -
解决IDEA使用Maven模板创建项目时初始化过慢问题
选择模板后为Maven添加参数archetypeCatalog,值为internal。如图:创建完成后最好再添加一个repository就完善啦!这里原创 2018-12-14 00:11:58 · 1820 阅读 · 0 评论 -
Jenkins自动化部署工具简易教程(Java、Git、Maven、Tomcat)
准备建议在linux环境部署,windows环境也没有问题,实质上就是一个tomcat。运行环境centos、java、 git、maven下载安装包https://jenkins.io/download/安装安装jenkins将下载好的jenkins安装包解压后,会看到了下tomcat风格的目录,其实就是tomcat。将tomcat启动后,日志中会把访问地址及初始密码都打印出...原创 2018-11-27 09:31:22 · 483 阅读 · 0 评论 -
JVM参数配置详解(基于JDK7)
java -Xmx1g -Xms1g -Xmn700m -Xss228k默认设置-Xms为JVM启动时申请的最小内存,默认为操作系统物理内存的1/64但小于1G,-Xmx为JVM可申请的最大内存,默认为物理内存的1/4但小于1G,默认当空余堆内存小于40%时,JVM会增大Heap到-Xmx指定的大小,可通过-XX:MinHeapFreeRation来指定这个比列;当空余堆内存大于70%时,J...原创 2018-11-29 00:00:34 · 17681 阅读 · 1 评论 -
JDBC常用参数解析
Druid基本配置name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this);jdbcUrl:连接地址,如:mysql : jdbc:mysql://127.0.0.1:3306/test-db;username:用户名;pa...原创 2019-10-24 13:44:24 · 5864 阅读 · 1 评论 -
Tomcat启动异常问题解决方案
启动失败,无日志;编辑以下文件:/src/main/resources/logging.propertieshandlers=org.apache.juli.FileHandler,java.util.logging.ConsoleHandlerorg.apache.juli.FileHandler.level=FINEorg.apache.juli.FileHandler.direct...原创 2019-07-31 08:48:58 · 1271 阅读 · 0 评论 -
Swagger初步
Simplify API development for users, teams, and enterprises with the Swagger open source and professional toolset.(使用Swagger开源的专业化工具来帮助用户、团队及企业简化接口开发。)原创 2019-07-31 09:00:54 · 183 阅读 · 0 评论 -
Redis存储结构之列表(List)
经典场景:消息队列Redis列表只是字符串列表,按插入顺序排序。您可以向Redis列表的头部或尾部添加元素。常用的方法有:lpush、rpush、lpop、rpop、blpop、brpop、lrangeBLPOPBRPOPBRPOPLPUSHLINDEXLINSERTLLENLPOPLPUSHLPUSHXLRANGELREMLSETLTRIMRPOPRP...原创 2018-11-23 14:01:52 · 3263 阅读 · 0 评论 -
IDEA插件开发流程
1、启用 Plugin DevKit2、配置 IntelliJ Platform Plugin SDK3、配置文件<idea-plugin> <!-- 插件名称,别人在官方插件库搜索你的插件时使用的名称 --> <name>MyPlugin</name> <!-- 插件唯一id,不能和其他插件项目重复,所以推荐使用com....原创 2018-12-05 07:27:05 · 1182 阅读 · 0 评论 -
一键设置屏蔽IDEA项目目录下自动生成的文件或目录(.idea,.iml)
打开Settings页面,依次找到:Editor -> File Types -> Ignore file and folders:将需要忽略的文件或者目录名追加进去,保存即可。这里指定了一个文件*.iml和一个目录.idea。...原创 2018-12-14 10:39:25 · 3313 阅读 · 0 评论 -
IDEA:“Command line is too long”问题解决
背景(启动调试时的错误信息)Command line is too long. Shorten command line for Application or also for Spring Boot default configuration.解决打开项目根目录下的.idea/worksapce.xml文件;找到PropertiesComponent配置节;添加以下配置:<prop...原创 2019-03-12 14:11:07 · 5186 阅读 · 0 评论 -
Netty源码学习之ChannelPieline和ChannelHandler
待补充。。。原创 2018-12-17 23:11:56 · 223 阅读 · 0 评论 -
JVM庖丁解牛之GC Roots
在Java内存运行时的各个部分中,程序计数器、虚拟机栈、本地方法栈三个区域随线程生而生灭而灭,栈中的栈帧随方法的进入和退出而有条不紊的进行入栈和出栈操作。因此这几个区域的内存分配和回收都具有确定性,不需要过多考虑回收的问题。但是Java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也不一样,我们只有在程序处于运行期才能知道创建哪些对象,这部分的内存...原创 2018-12-17 22:48:47 · 326 阅读 · 0 评论 -
Spring初步
Spring祖谱,成员结构。原创 2018-11-30 07:58:24 · 117 阅读 · 0 评论 -
Spring缓存管理(Cacheable)
Spring的缓存管理可谓是相当的方便。与其他功能的风格一致,同样的在需要管理的地方添加一个注解,可以是方法,也可以是类。使用Spring Cache需要我们做两方面的事:声明某些方法使用缓存配置Spring对Cache的支持和Spring对事务管理的支持一样,Spring对Cache的支持也有基于注解和基于XML配置两种方式。下面我们先来看看基于注解的方式。基于注解的支持Spri...原创 2018-11-30 07:56:35 · 2936 阅读 · 0 评论 -
Spring单元测试
MockTestimport org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.Context...原创 2018-11-30 07:50:45 · 218 阅读 · 0 评论 -
Spring AOP基础
通知(Advice)通知定义了切面是什么以及何时使用。描述了切面要完成的工作和何时需要执行这个工作连接点(Joinpoint)程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时、异常被抛出时等等切入点(Pointcut)通知定义了切面要发生的“故事”和时间,那么切入点就定义了“故事”发生的地点,例如某个类或方法的名称,Spring 中允许我们方便的用正则表达式来指定...原创 2018-11-30 07:48:39 · 214 阅读 · 0 评论 -
Spring EL表达式解析
注入单一对象/*** 注入单一对象** @param expr #{user.id}.#{user.name}.#{user.tel}* @param data* @return*/public static String readExpr(String expr, Object data) { ExpressionParser parser = new SpelExpre...原创 2018-11-30 07:47:32 · 9013 阅读 · 0 评论 -
Spring Bean手工实例化方式
实例化容器ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");创建实例OrderService orderService = ctx.getBean(OrderService.class);其他@Qualifier类中同一类型对象定义了多个时,用Qualifier设置ID@Primary...原创 2018-11-30 07:45:41 · 663 阅读 · 0 评论 -
JVM内置工具使用介绍
命令行工具jpsJVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程jstatJVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据。示例jstat -gc 12306 250 20每250毫秒查询一次进程12306垃圾收集状况,一共查询20次###详细参数S0 Survior区使用比例...原创 2018-11-29 00:05:27 · 234 阅读 · 0 评论