Java
文章平均质量分 60
风清月明.
这个作者很懒,什么都没留下…
展开
-
Mybatis —— @Options注解实现执行参数配置
记录下Mybtias注解方式如何配置 SQL执行超时时长、Statement类型等。原创 2022-10-10 23:50:45 · 838 阅读 · 1 评论 -
Java —— 获取用户真实IP工具类
用户获取Htttp请求发起客户端IP地址的Java工具类原创 2022-03-02 16:49:43 · 357 阅读 · 0 评论 -
Java —— 内存泄露排查
最近发现服务器内存使用持续增长且增长速率大,怀疑是内存泄露导致的。 最终定位到是因为程序中存在线程池频繁创建但未销毁问题导致线程泄露,进而影响内存使用增长。 Tips:本文不记录排错过程,只记录可疑点及排错命令。1. 套路① 查看内存使用,对相隔一段时间的应用内存使用情况进行对比(top命令等),确认内存存在缓慢上升的情况② jstat -gccapacity 【pid】查看JVM各部分内存使用增长是否符合top命令展示的应用内存使用增长。如果符合,则使用MAT工具分析JVM堆栈情况,原创 2021-11-13 13:06:42 · 2804 阅读 · 0 评论 -
问题排查 —— OLAP平台获取查询引擎连接严重耗时
一、问题说明BI平台出现了查询时快时慢的问题,查看监控发现获取连接部分耗时飙升,相关监控如下:正常情况下获取连接耗时P99都在100ms以内,但是从某天开始,其耗时飙升到峰值时需要262k毫秒,严重拖慢了查询耗时。二、原因查明1. 数据库连接池系统中使用的C3P0连接池,连接参数部分只设置了jdbcUrl、username、password、maxPoolSize和minPoolSize。 其中,maxPoolSize为20,minPoolSize为1。2. Impala连接参数Impala原创 2021-10-24 19:25:13 · 2088 阅读 · 0 评论 -
Spring —— 基于注解的Aop在同一类下产生嵌套时切面不生效问题产生原因及解决
一、背景介绍由于程序中大量方法需要监控执行耗时,因此写了基于注解的Aop类来减少重复代码,主要作用是通过环绕通知在方法执行前后进行耗时计算,最后输出到日志/监控。相关代码如下:// 注解@Retention(RetentionPolicy.RUNTIME)@Target(value = {ElementType.METHOD})public @interface AddExecTime{ String processName();}/** * 用于记录各过程耗时ms的Aop类原创 2021-10-07 19:49:15 · 2657 阅读 · 3 评论 -
Maven — maven filtering OTS parsing error incorrect file size in WOFF head 产生原因及两种解决方案
背景说明前端静态资源文件放在后端SpringBoot项目resources文件夹下,多环境打包后前端页面出现了图标及文字未按预期样式显示的情况,查看浏览器控制台发现出现如下错误。 OTS parsing error: incorrect file size in WOFF header原因定位先来看看配置的Maven pom内容。<build> <finalName>project-name</finalName> <pl原创 2021-09-09 14:34:12 · 2880 阅读 · 1 评论 -
不得不知的Web知识 —— HttpClient中SocketTimeOut、ConnectionTimeOut与ConnectionManagerTimeOut区别
资料来源:https://www.baeldung.com/httpclient-timeout背景:最近用HttpClient设置SocketTimeOut时发现自己原本理解有误,借此查阅资料并做记录Connection Timeout作用:自请求发起开始与远程服务器建立连接的最长等待时间。Socket Timeout作用:指最长等待数据的时间,或建立连接后两个数据包之间的最大传输时间间隔。Connection Manager Timeout作用:自发起请求起,等待获取来自.原创 2021-09-08 21:34:55 · 601 阅读 · 0 评论 -
SpringMVC —— @ResponseBody原理
#mermaid-svg-gtBLgQ9AnSJoXXb4 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-gtBLgQ9AnSJoXXb4 .label text{fill:#333}#mermaid-svg-gtBLgQ9AnSJoXXb4 .node rect,#mermaid-svg-gtBLgQ9AnS原创 2021-08-11 12:55:53 · 919 阅读 · 0 评论 -
Web —— 何为跨域?为何出现?如何解决?
目录一、同源策略1. 简介2. 例子3. 作用二、跨域资源共享(CORS)1. 简介2. CORS实现机制3. 简单请求 & 非简单请求简单请求非简单请求三、 CORS实现方案1. JSONP2. 反向代理服务器3. 服务端实现CORS① 过滤器Filter② @CrossOrigin③ Spring框架 注入 跨域配置类(推荐)一、同源策略1. 简介同源策略,它是由Netscape提出的一个著名的安全策略。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百度tab页执行原创 2021-08-03 15:24:28 · 373 阅读 · 0 评论 -
Web —— @CrossOrigin实现跨域原理
文章目录零、上篇回顾一、SpringMVC执行流程二、HanndlerMapping中如何实现CORS? —— 基于Spring 5.3.9 版本1. AbstractHandlerMapping2x. CorsProcessor类三、思考零、上篇回顾Web —— 何为跨域?为何出现?如何解决?一、SpringMVC执行流程让我们先来回顾一下SpringMVC执行流程,其中CORS的实现主要在HandlerMapping实现。 二、HanndlerMapping中如何实现CORS? —— 基于Sp原创 2021-08-03 15:18:58 · 506 阅读 · 2 评论 -
Redis —— SpringBoot工程下的GeoHash工具类
一、依赖引入 <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!--redis连接依赖--> <depend原创 2021-08-02 14:58:19 · 740 阅读 · 1 评论 -
Maven —— 获取特定依赖的 源码/JavaDoc包
一、所需命令示例用的依赖是Guava <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1.1-jre</version> </dependency>相关maven命令#原创 2021-07-18 13:08:13 · 670 阅读 · 0 评论 -
Java并发知识 —— 可用于限流的Semaphore类
一、Semaphore类简介Semaphore 通常我们叫它信号量, 可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。通常用于那些资源有明确访问数量限制的场景,常用于限流。比如:数据库连接池,同时进行连接的线程有数量限制,连接不能超过一定的数量,当连接达到了限制数量后,后面的线程只能排队等前面的线程释放了数据库连接才能获得数据库连接。二、Semaphore类说明1. Semaphore类结构2. Semaphore类方法acquire作用:获取一个Per原创 2021-07-17 14:39:11 · 195 阅读 · 1 评论 -
Java —— LocalDateTime实现的时间工具类
import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;public class TimeUtil { private static DateTimeFormatter UTIL_DEFAULT_DATE_TIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private static DateTimeFormatte原创 2021-05-21 13:14:57 · 196 阅读 · 0 评论 -
Flink —— 入门案例 之 批处理与流处理实现word count
目录一、依赖引入二、Flink批处理实现word count1. 代码2. 结果三、Flink流处理实现word count1. 代码2. 结果一、依赖引入 <!-- flink-java依赖,artifactId后面为scala版本号--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>fl原创 2021-05-03 15:31:46 · 556 阅读 · 0 评论 -
Java —— 基于注解的AOP切面实现 接口调用记录
一、预期效果对所有@RequestMapping注解的接口全部记录接口调用情况并记入日志。二、实现代码tips: 这里使用了Lombok的@Slf4j实现日志@Aspect@Component@Slf4jpublic class ReportApiCallTimesAspect { /*调用次数记录前缀,方便根据前缀获取所有接口的数据*/ public static final String WEB_API_CALL_COUNT = "web_api_call_count"; /原创 2021-04-19 21:23:45 · 1565 阅读 · 0 评论 -
Java —— JDBC关闭Statement后是否还需要关闭ResultSet?
一、问题描述下面的代码使用了try-with-resource语法,会自动关闭Connection和Statement,是否还需要关闭ResultSet?Statement关闭后ResultSet会被回收么?二、JDBC规范JDBC规范4.3中有对Statement关闭后是否需要关闭ResultSet进行说明。应用调用了 statement.close 表明其已经完成了 statement 的使用。所有的 statment 对象都将在创建他们的 connection 被关闭时 一起被关闭。但在原创 2021-04-07 17:58:13 · 6716 阅读 · 1 评论 -
Springboot —— 解决Access denied for user ‘‘@‘localhost‘ (using password: NO)
1. 问题描述测试SpringBoot程序接口时报错了,出现了如下异常java.sql.SQLException: Access denied for user ''@'172.18.0.1' (using password: NO) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.23.jar:8.0.23] at com.mysql.原创 2021-03-14 11:50:49 · 732 阅读 · 0 评论 -
SpringBoot —— 后端拦截器配置跨域
@Componentpublic class CrossOriginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.setHeader("Access-Contro原创 2021-03-13 23:20:24 · 210 阅读 · 0 评论 -
Java —— 常见对象类型简写及意义
文章目录1、PO(Persistant Object)2、VO (View Object)3、AO (Application Obejct)4、BO (Business Object)5、DO (Domain Object)6、DTO (Data Transfer Object)DTO与VO区别:7、DAO(Data access object)8、POJO (Plain Ordinary Java Object)1、PO(Persistant Object)持久对象,PO仅仅用于表示数据,除了gett原创 2021-03-12 13:02:02 · 610 阅读 · 0 评论 -
Mybatis-plus —— Invalid bound statement异常
错误截图org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误原因对于IDEA系列编辑器,XML 文件是不能放在 java 文件夹中的,IDEA 默认不会编译源码文件夹中的 XML 文件。解决方法方法一. 将文件转到resource文件夹下 # 这里mapper是resource下的文件夹,xml在此文件夹下 mapper-locations: classpath*:mapper原创 2020-09-19 10:12:21 · 107 阅读 · 0 评论 -
JVM关键总结(四)——垃圾回收器及调优命令与工具
文章目录原创 2020-04-12 12:18:46 · 173 阅读 · 0 评论 -
JVM关键总结(三)——分代与垃圾回收算法
文章目录原创 2020-04-12 09:34:14 · 426 阅读 · 0 评论 -
JVM关键总结(二)——JVM内存结构
文章目录一、JVM内存结构图二、运行时数据区内容三、直接内存四、笔记目录一、JVM内存结构图二、运行时数据区内容方法区(Method Area,线程共有)方法区别名Non-Heap,此区域为各个线程共享的内存区域,用于存储 类信息、静态变量、常量和即时编译代码。方法区中有块区域称为运行时常量池(Runtime Constant Pool),用于存放编译器生成的符号引用和字面量(值本身...原创 2020-04-11 18:44:49 · 194 阅读 · 0 评论 -
JVM关键总结(一)——类加载机制
文章目录一、类加载流程二、 类的生命周期及各阶段工作三、类加载阶段四、疑难一、类加载流程类加载分为加载、连接和初始化三个阶段,每个阶段对应了不同的任务。二、 类的生命周期及各阶段工作生命周期加载——验证——准备——解析——初始化——使用——卸载其中验证、准备及解析为类加载流程中连接阶段工作。各阶段工作加载:类加载器使用全限定名将.class文件加载入内存,可以通过本地磁盘...原创 2020-04-10 15:38:55 · 164 阅读 · 0 评论 -
Java高并发系列(四)——轻量级同步机制volatile
11原创 2020-04-03 21:23:26 · 178 阅读 · 0 评论 -
Java高并发系列(三)——重量级同步机制synchronized
目录原创 2020-04-01 00:23:49 · 141 阅读 · 0 评论 -
Java高并发系列(二)——JMM模型与并发三大问题
#TOC原创 2020-03-31 00:29:25 · 198 阅读 · 0 评论 -
Java高并发系列(一)——概念篇
开篇时间:2020-03-28完篇时间:······一、并发基础概念同步&异步同步方法:一旦开始调用同步方法,调用者必须等到方法调用得到结果后才能返回,之后才能进行下一个动作。异步方法:异步方法开始之后,方法调用会立刻返回,不用等到方法结果返回即可继续进行下一个动作。等到异步调用真正完成且需要用到结果时,则会通知调用者。并发&并行并发(concurren...原创 2020-03-29 13:34:00 · 196 阅读 · 0 评论 -
JavaAPI笔记(五)——3. IO字节流
一、字节流关系图二、输入字节流InputStream类(抽象类)这个抽象类是表示输入字节流的所有类的超类。方法表:AudioInputStream类(InputStream类直接子类)音频输入流是具有指定音频格式和长度的输入流。 长度以采样帧而不是字节表示。 提供了几种从流中读取一定数量字节的方法。音频输入流可以支持标记。 设置标记时,会记住当前的位置,以便以后可以返回。...原创 2020-03-27 00:13:51 · 151 阅读 · 0 评论 -
JavaAPI笔记(五)——2. IO字符流 之 Writer相关类
一、字符流Writer类关系图二、Writer类(抽象类)类说明:此类为字符输出流的抽象类,该类的子类必须实现的是writer(Char[],int,int)方法,flush(),close() 三个方法。实际上大多数子类为了性能或新特性会override一些已定义的方法。唯一字段:与Reader类一样有lock字段,当Writer子类需要同步时,应该考虑使用writer抽象类...原创 2020-03-26 21:23:28 · 348 阅读 · 0 评论 -
CentOS 7之yum实现JDK1.8安装及配置
一、配置Java环境原创 2020-03-20 14:04:03 · 366 阅读 · 1 评论 -
Webmagic——Selenium使用时遇到的异常
一、Selenium简介Selenium官方文档:https://www.selenium.dev/documentation/en/传统爬虫爬取静态页面比较容易,但如果是动态页面就很难爬取。因此Selenium与爬虫结合,来解决这个问题。Selenium 相当于直接在浏览器中运行,就像真实用户所做的一样。想了解更多请前往这个链接。http://www.selenium.org.cn/二、...原创 2020-03-17 13:50:14 · 1484 阅读 · 0 评论 -
Java——JDK1.8安装及配置
一、下载exe安装程序下载地址:Oracle JDK可能需要登录oracle账号,没有的话顺便注册一个。二、安装JDK原创 2020-03-13 15:42:47 · 140 阅读 · 0 评论