基础内容
Java基础内容
qq_42243639
这个作者很懒,什么都没留下…
展开
-
java知识点
拦截器和过滤器的区别:1.拦截器是基于java的反射机制的,而过滤器是基于函数回调。 2.拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 4.拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时...原创 2020-08-31 14:22:19 · 98 阅读 · 0 评论 -
sql笔记
in查询优化使用in语句查询,可能会导致页面查询慢,甚至进一步影响java虚拟机内存溢出。可使用 exists语句的方式代替in语句(两者的查询时间复杂度一个是O(1),一个是O(n), in拼接的参数越多时, 查询效率差距越明显)select * from tb_user t where concat(t.user_id, '_', t.username) in ('1_Tom','2_Jerry','3_Nacy');使用exists替换:1.select * from tb_user .原创 2020-08-31 14:22:06 · 160 阅读 · 0 评论 -
软件帮助及JAVA开发规范
https://www.cnblogs.com/xpybsh/p/12703269.html原创 2020-08-25 18:01:26 · 156 阅读 · 0 评论 -
Java开发必备技巧
1 调试技巧一般的IDE工具都有以下调试功能,本文以 IntelliJ IDEA 为例1.1 计算表达式以下是实际开发中很容易遇到的一种场景:调试下面的代码时,validate() 返回值为true, 正常的逻辑是进入function1,而我们想要查看的结果是function2的返回值boolean validate = validate();String s = null;if(validate) { s = function1();} else { s = functio原创 2020-08-25 17:57:54 · 316 阅读 · 0 评论 -
自定义Feign客户端的使用
1 概述Java在进行http调用时, 通常会使用以下几种方式:HttpClientHttpUrlConnectionRestTemplateFeign其中,RestTemplate 和 Feign相对于前面两种调用方式来说明显起来明显更加优雅和方便,也更符合我们的语法习惯。 而RestTemplate 和 Feign的使用各有优缺点,相对Feign而言,RestTemplate 使用更加灵活,有较好的扩展性。而Feign虽然扩展性一般,但在处理一些简单调用时,不管是开发体验,还是可读性以及可原创 2020-08-25 16:52:50 · 257 阅读 · 0 评论 -
业务代码解耦方案与案例
1 概述在实际开发中, 很多业务类的承担的功能较多较杂,给维护和扩展带来了很大的麻烦。本文通过开发中的实际案例进行讲解,以单一职责为原则,对业务代码进行拆分,达到解耦合的目的。2 案例2.1 案例代码//获取治超案件列表Page<OverrunRecordEntity> caseList = overrunRecordMapper.getCaseList(pageParamDto);if(!caseList.isEmpty()) { final Set<String&g原创 2020-08-25 16:42:08 · 517 阅读 · 0 评论 -
Mybatis原理
简介Mybatis是一款非常优秀的半自动化持久层框架,主要着力点在于 POJO 与 SQL 之间的映射关系。然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO 。Mybatis技术原理Mybatis的工作内容主要包括以下两个部分:加载配置,构建SqlSessionFactory。使用SqlSessionFactory构建SqlSession,由S...原创 2020-08-25 16:36:22 · 233 阅读 · 0 评论 -
Sql优化案例分析
目的本文以多编号查询为例,结合以往sql优化的经验与互联网上主流的观点,从原理层面对其进行批判分析与总结,并通过实际的比对测试进行验证。本文的目的是以案例的形式,提供一种探究分析的思路和方法,在面对截然不同的环境与观点时,能够快速看清本质,给出最优方案。背景使用多个编号作为sql查询条件时,一般的选择是使用in和exists。下面列举一些开发中实际的案例:2016年,由于现场业务数据的增加,本人维护的某个平台(使用oracle数据库)很多模块出现了查询效率慢的问题,而后针对这些模块进行了一系列的.原创 2020-08-25 10:29:45 · 286 阅读 · 1 评论 -
堆空间溢出问题排查
1.案例背景在一次系统测试过程中,测试人员反馈平台业务功能不可用,请求协助排查。我首先查看运管平台-状态监控,检查服务运行情况,发现状态显示服务运行正常,初步判断可能是服务假死造成的,而能造成服务假死的多半是jvm出问题了。查看运管日志,发现异常日志出现Java heap space,即jvm堆内存溢出。本文将介绍一下我的分析思路与处理过程。2.排查思路首先,根据本人目前所掌握的jvm知识与经验,猜测引起内存溢出有以下几种情况:内存中加载的数据量过于庞大,如一次从数据库取出过多数据;集合类中有原创 2020-06-12 20:56:23 · 1168 阅读 · 0 评论 -
metaspace内存溢出问题
1.案例背景在系统测试过程中,在平稳运行一段时间后,测试人员反馈营运车辆报警与数据服务组件数据服务(cvalarm-data)的业务功能不可用,请求研发协助排查。发现异常后,我首先查看运管平台-状态监控,检查服务运行情况,发现状态显示服务运行正常,初步判断可能是服务假死造成的,而能造成服务假死的多半是jvm出问题了。查看运管日志,发现异常日志出现Java heap space,即jvm堆内存溢出。本文将介绍一下分析思路与处理过程。2.排查思路作为一个java开发,工作或者学习过程中多多少少会了解些j原创 2020-06-12 20:46:18 · 2508 阅读 · 0 评论 -
组件内存分析
1.背景新体系下服务的内存占用情况逐渐被关注,本文将对组件的内存使用情况做个分析与优化。2.jvm内存区域java服务内存主要分为两大类:堆内存和非堆内存。2.1 堆内存堆内存是我们通常最熟悉的部分,它是存储由应用程序创建的对象的位置。堆空间内存默认分配情况:老年代 : 三分之二的堆空间 新生代 : 三分之一的堆空间 eden区: 8/10 的新生代空间。survivor0 : 1/10 的新生代空间,survivor1 : 1/10 的新生代空间。2.2 非堆内存非堆内存分为几个不同的原创 2020-06-12 20:20:11 · 296 阅读 · 0 评论 -
new一个对象的过程
java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。我们先假设是第一次使用该类,这样的话new一个对象就可以分为两个过程:加载并初始化类和创建对象。一、类加载过程(第一次使用该类) java是使用双亲委派模型来进行类的加载的,所以在描述类加载过程前,我们先看一下它的工作过程:双亲委托模型的工作过程是:如果一个类加载器(ClassLoader)收到了类加载的请求,它首先不会自己去尝试加载这个类原创 2020-06-08 20:15:31 · 775 阅读 · 0 评论