java
文章平均质量分 64
大碍桃花开
记录工作 记录成长 记录生活
展开
-
记mybatis一级缓存引起的一次oom
记mybatis一级缓存引起的oom排查过程解决方案最近做了一个同步数据的需求,需要将代理人学习课程的记录同步至ck,便于数据分析及对应报表查询导出等功能。线上大约十几万代理人,课程五十门左右,累计大约五百万的数据。于是写了个定时任务计算学习结果后插入到clickhouse中。上代码:代码很简单,刚做的时候考虑到数据量较大 没有一次性处理数据,而是分课程去循环处理代理人学习课程的数据,每次根据课程id查出的代理人课程数据也就十几w条,然后再切割数组,每次批量插入一千条,插入完成后,再将此课程数据置原创 2022-02-10 23:53:38 · 2321 阅读 · 0 评论 -
利用AOP及Interceptor封装链路id、接口统一返回结果Result对象
链路id封装实现及使用现有模块在返回结果中统一封装了响应码code及响应信息msg, 遇到报错时通过报错信息无法快速定位到报错相关的日志信息,查看日志不是很方便{code: “-1”, msg: “系统繁忙”, content: null}封装链路id后,可根据此id作为关键字查找日志,日志信息中会包含整个请求中的相关日志,定位问题会方便很多{“code”: “1”,“msg”: “success”,“content”: {“page”: 1,“pageSize”: 10,“tot原创 2021-11-07 17:46:46 · 1656 阅读 · 0 评论 -
java精品博文汇总
基础Hash Mapa. https://joonwhee.blog.csdn.net/article/details/78996181b. https://blog.csdn.net/v123411739/article/details/106324537concurrentHashMap扩容源码解析:https://blog.csdn.net/ZOKEKAI/article/details/90051567AQS线程池synchronizedvoliate原创 2021-05-06 22:44:02 · 443 阅读 · 0 评论 -
HashMap源码再探(JDK1.8源码解析)
再看这篇文章之前,建议先 看一下这篇文章了解一下hashMap在jdk7中的实现:HashMap源码再探(JDK1.7源码解析)hashmap类结构从类图可以看出 HashMap 集合实现了 Cloneable 接口以及 Serializable 接口,分别用来进行对象克隆以及将对象进行序列化。我们可以看到HashMap已经继承了AbstractMap而AbstractMap类实现了Map接口,那为什么HashMap还要在实现Map接口呢?据 java 集合框架的创始人JoshBloch描述原创 2020-10-15 00:39:04 · 228 阅读 · 0 评论 -
HashMap源码再探(JDK1.7源码解析)
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,本文会对java集合框架中HashMap的实现原理进行讲解,并对JDK7的HashMap源码进行分析。一、什么是哈希表在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组.转载 2020-10-13 21:52:25 · 287 阅读 · 0 评论 -
main函数初探
main方法初探题外话main函数的类是怎么被虚拟机识别加载至内存的jvm的运行机制jvm的启动细节1---launchjvm的启动细节2---classloader题外话刚学java的同学肯定都知道main方法是一个程序的入口,为我们创建了一个主线程,作为一个老油条了,今天学习springboot项目启动时发现也是通过main方法启动的,于是就触发了我的好奇心,main函数是怎么被执行的呢?被执行之前虚拟机帮我们做了些什么呢?想了解springboot启动流程和autoconfig的同学请看这里:原创 2020-08-04 01:11:12 · 1625 阅读 · 1 评论 -
Synchronized原理分析
文章简介synchronized想必大家都不陌生,用来解决线程安全问题的利器。同时也是Java高级程序员面试比较常见的面试题。这篇文正会带大家彻底了解synchronized的实现。内容导航什么时候需要用Synchronizedsynchronized的使用synchronized的实现原理分析什么时候需要用Synchronized想必大家对synchronized都不陌生,主...转载 2019-12-15 23:25:28 · 185 阅读 · 0 评论 -
详解synchronized与Lock的区别与使用
###引言:昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchronized的使用过程一些常见问题的总结,最后是参照源码和说明文档,对Lock的使用写了几个简单的Demo。请大家批评指正。技术点:1、线程与进程:在开始之前先把进程与线程进行区分一下,一个程序最...转载 2019-12-15 23:24:07 · 437 阅读 · 0 评论 -
java方法调用之重载、重写的调用原理
前一段时间看了《深入理解JVM》第三部分虚拟机执行子系统的内容,看到了重载与重写在JVM层面的调用原理(详见8.3 方法调用一节),但是没有写成博客总结一下,这里讨论讨论。在讨论过程中,难免会涉及到 字节码指令 相关的内容,这部分内容请查看博文: 由常量池 运行时常量池 String intern方法想到的(二)之class文件及字节码指令 。结论1.重载(overload)方法 对重...转载 2019-12-12 20:36:44 · 1172 阅读 · 0 评论 -
五分钟搞懂什么是红黑树
五分钟搞懂什么是红黑树(全程图解)18-09-04 星925 + 关注献花(2) 收藏 前戏红黑树,对很多童鞋来说,是既熟悉又陌生。熟悉是因为在校学习期间,准备面试时,这是重点。然后经过多年的荒废,如今已经忘记的差不多了。如果正在看文章的你,马上快要毕业,面临着找工作的压力;又或者你觉得需要将这块知识重新复习一遍;又或...转载 2019-11-25 22:17:43 · 262 阅读 · 0 评论 -
CAP理论的理解
CAP理论的理解 </h2> <div class="postbody"> CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中:一致性(Consistency)可用性(Availability)分区容错性(Partition tolerance)最多满足其中的两个特性。也就是下图...转载 2019-11-19 20:58:56 · 207 阅读 · 0 评论 -
Java 8 ConcurrentHashMap源码分析
ConcurrentHashMap是HashMap的线程安全版本的实现版本,关于HashMap的分析总结,可以参考文章Java 8 HashMap源码分析。本文将基于java 8中的Java 8 实现来分析ConcurrentHashMap,与之前版本的ConcurrentHashMap实现来看,java 8中做了较大调整,本文仅分析java 8的实现,java 8 之前的实现暂不做分析。为了更好...转载 2019-11-18 23:37:55 · 205 阅读 · 0 评论 -
针对Fortify工具扫描出几大漏洞的解决办法总结
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-08-28 21:39:15 · 3919 阅读 · 2 评论 -
Fortify SCA快速入门以及常见问题解决方法
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-08-28 21:35:41 · 5618 阅读 · 0 评论 -
java 防止JS注入(使用ESAPI进行编码)
今天在做报表导入的时候遇到测试在excel数据里面填了一段js代码,导致数据回显到页面的时候弹一个框出来,这个框我想大家都懂了,又恰好逢项目在做代码安全扫描,扫描工具使用的是Fortify关于ESAPI的介绍可查看:https://blog.csdn.net/qq_35623773/article/details/100126615安全工具推荐使用ESAPI.encoder().encod...原创 2019-08-28 21:22:00 · 5355 阅读 · 1 评论 -
java 防止js注入----ESAPI结合Top10安全开发实战
ESAPI(Enterprise Security API)是一个免费开源的Web应用程序API,目的帮助开发者开发出更加安全的代码,并且它本身就很方便调用。根据下面的图,我将会介绍OWASP上10种类型的漏洞所对应的API使用方法,大概有十多个接口。相关API介绍可以查看官方文档:https://www.javadoc.io/doc/org.owasp.esapi/esapi/2.1.0...转载 2019-08-28 20:54:36 · 4349 阅读 · 0 评论 -
Java8 Optional 使用
转载: http://www.importnew.com/22060.html转载 2018-11-19 21:40:05 · 117 阅读 · 0 评论 -
java stream 使用
转载: https://blog.csdn.net/io_field/article/details/54971761转载 2018-11-19 21:42:40 · 144 阅读 · 0 评论 -
Executor和Semaphore 搭建线程池
new Thread()的缺点调用new Thread()创建的线程缺乏管理,线程之间可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。不利于扩展,比如如定时执行、定期执行、线程中断采用线程池的优点重用存在的线程,减少对象创建、消亡的开销,性能佳可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞提供定时执行、定期执行、单线程、并发数控制等功能...原创 2018-11-22 23:22:26 · 993 阅读 · 0 评论 -
Java中利用反射查找使用指定注解的类
先扫描指定包下的所有的class文件,再找注解是@Controller文件的类文件,再找RequestMapping是/about的方法,并执行应用:java项目里用纯servlet写的项目 ,就可以做自己的注解映射路由了定义注解Controller.java@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@...转载 2019-01-05 17:29:45 · 2944 阅读 · 1 评论 -
Java中的注解是如何工作的?
什么是注解?用一个词就可以描述注解,那就是元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。比如,下面这段代码:@Overridepublic String toString() { return "This is String Representation of current object.";}上面的代码中,我重写了toString()方法并使用了@Ove...转载 2019-01-05 17:39:55 · 1027 阅读 · 1 评论 -
java多线程面试题
什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支 持,它也是一个很好的卖点。线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,...转载 2019-02-23 20:57:29 · 119 阅读 · 0 评论 -
JAVA基础——异常详解
JAVA基础——异常详解 阅读目录一、异常简介二、try-catch-finally语句三、throw和throws关键字四、java中的异常链五、结束语JAVA异常与异常处理详解回到顶部一、异常简介什么是异常?异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域的情况,称之为异常。java中异常的体系是怎么样的呢?1...转载 2019-02-26 22:09:12 · 290 阅读 · 0 评论 -
jdk8 map computeIfAbsent用法
使用map 封装数据时 sonar 建议使用 computeIfAbsent 方法来替代已经写好的code. private List<UserPO> getActiveAdminUsers(Map<String, List<UserPO>> companyAdminUsersMap, String companyId) {// List...原创 2019-03-06 22:41:05 · 940 阅读 · 0 评论 -
为什么要用枚举实现单例模式(避免反射、序列化问题)
为什么要用枚举实现单例模式(避免反射、序列化问题) 1 引言 相信如果能看到我这篇博客的小伙伴,肯定都看过Joshua Bloch大神说过的这句话:“单元素的枚举类型已经成为实现Singleton的最佳方法”。其实,第一次读到这句话,我连其中说的单元素指什么都不知道,尴尬。后来,网上看了搜索了好几篇文章,...转载 2019-05-14 21:56:55 · 312 阅读 · 1 评论 -
java Native 关键字详解及自己实现一个Native方法的调用
Java中Native关键字的作用初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法:public native int hashCode();为什么有个native呢?这是我所要学习的地方。所以下面想要总结下native。一、认识 native 即 JNI,Java Native Interface凡是一种语言,都希望是纯。比如解决某一个方案...转载 2019-05-15 21:40:49 · 2663 阅读 · 0 评论 -
Java项目中classpath路径详解
《Java项目中classpath路径详解》 项目里用到了classpath路径来引用文件,那么classpath指的是哪里呢我首先把上面的applicationContext.xml文件放在了src目录下发现可以。那么classpath到底是哪里呢,在网上看了几篇博客画黄线部分解释了我放在src目录下能用classpath:访问的问...转载 2019-06-28 23:31:15 · 1231 阅读 · 0 评论 -
Java中SPI机制深入及源码解析
SPI,Service ProviderInterface,主要是被框架的开发人员使用,比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,mysql和postgresql都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现。当服务的提供者提供了一种接口的实现之后,需要在classpath下的META-INF/services/目录里创建...转载 2019-07-15 22:44:02 · 161 阅读 · 0 评论 -
java 读取json格式文件
private String readJsonFile(String filePath) { try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { return IOUtils.toString(reader); } catch (IOException e) { ...原创 2018-11-21 21:42:22 · 547 阅读 · 0 评论