Java基础
文章平均质量分 65
Java基础
隔壁阿布都
这个作者很懒,什么都没留下…
展开
-
JVM内存溢出排查
如果是方法区内存溢出,可能是因为使用了过多的静态变量、常量池被大量占用,或者第三方框架(如Hibernate、Spring)产生了大量的动态类。这些工具可以帮助识别哪些对象占用了过多的内存,以及这些对象是如何被引用的。通过查看GC日志,可以了解垃圾回收的情况,包括回收的频率、回收的对象数量等。内存泄露是导致内存溢出的常见原因。通过工具分析堆转储文件,可以检查是否存在无用的对象被长时间持有引用,导致无法被GC回收。如果堆内存确实不足,可以考虑调整JVM的启动参数,如增加-Xmx参数的值以增大堆内存的最大值。原创 2024-03-22 22:47:20 · 564 阅读 · 0 评论 -
Java类的加载过程
JVM有三大类加载器,包括Bootstrap根加载器、Extension类加载器和System类加载器,它们之间遵循父委托机制,即子类加载器在加载类之前,会先委托父类加载器去加载,只有当父类加载器无法加载到类时,子类加载器才会尝试自己去加载。请注意,虽然上述五个步骤是Java类加载的主要过程,但在实际应用中,类的加载可能受到多种因素的影响,如类的使用方式、类加载器的配置等。类加载器根据类的全限定名查找并读取类的字节码文件,然后将其转换为内部数据结构,并创建一个Class对象来表示这个类。原创 2024-03-21 22:56:44 · 476 阅读 · 0 评论 -
Java 动态代理和静态代理知识点速记
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用反射机制动态创建而成。原创 2023-06-13 17:31:29 · 96 阅读 · 0 评论 -
一个批量修改文件名的工具类
一个批量修改文件名的工具类。原创 2023-02-13 15:28:42 · 165 阅读 · 1 评论 -
计算机网络相关知识点
OSI,TCP/IP,五层协议的体系结构,以及各层协议OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。每一层的协议如下:物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关)数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)网络层:IP、ICMP、ARP、RARP、OSPF、IPX、原创 2022-02-10 16:43:44 · 288 阅读 · 0 评论 -
对称加密 CBC 模式 JAVA 工具类
package com.eversec.ctf.util;import java.io.UnsupportedEncodingException;import java.nio.charset.StandardCharsets;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.Security;import javax.crypto.Ci.原创 2021-06-23 18:17:00 · 669 阅读 · 0 评论 -
Java中阻塞队列类型介绍
Java中的几种阻塞队列Java中的BlockingQueue接口是一个线程安全的存取队列,适用于生产者消费者的应用场景中,支持两个附加操作:生产者线程会一直不断的往阻塞队列中放入数据,直到队列满了为止。队列满了后,生产者线程阻塞等待消费者线程取出数据。 消费者线程会一直不断的从阻塞队列中取出数据,直到队列空了为止。队列空了后,消费者线程阻塞等待生产者线程放入数据。BlockingQueue接口BlockingQueue提供四种不同的处理方法。 抛出异常 返回特殊值 .原创 2021-03-31 18:02:26 · 2265 阅读 · 0 评论 -
Synchronized实现原理
一.同步的基本思想目的:为了保证共享数据在同一时刻只被一个线程使用,我们有一种很简单的实现思想,就是1.在共享数据里保存一个锁 ,当没有线程访问时,锁是空的。2.当有第一个线程访问时,就 在锁里保存这个线程的标识 并允许这个线程访问共享数据。3.在当前线程释放共享数据之前,如果再有其他线程想要访问共享数据,就要 等待锁释放 。Jvm同步的实现jvm中有以下三种锁(由上到下越来越“重量级”):偏向锁轻量级锁重量级锁重量级锁二.Synchronized 原理JVM规范转载 2021-03-25 16:33:57 · 314 阅读 · 0 评论 -
面试题:java 的双亲委派模式了解么?
什么是双亲委派机制当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。双亲委派机制的作用1、防止重复加载同一个.class。通过委托去向上面问一问,加载过了,就不用再加载一遍。保证数据安全。2、保证核心.class不能被篡改。通过委托方式,不会去篡改核心.clas,即使篡改也不会去加载,即使加载也不会是同一个.class对象了。不同的加载器加载同一个.class也不是同一个Class对象。这样保证转载 2020-11-05 16:13:35 · 587 阅读 · 0 评论 -
HashMap 实现原理
HashMap的实现原理:利用key的hashCode重新hash计算出当前对象的元素在数组中的下标 存储时,如果出现hash值相同的key,此时有两种情况。(1)如果key相同,则覆盖原始值;(2)如果key不同(出现冲突),则将当前的key-value放入链表中 获取时,直接找到hash值对应的下标,在进一步判断key是否相同,从而找到对应值。 理解了以上过程就不难明白HashMap是如何解决hash冲突的问题,核心就是使用了数组的存储方式,然后将冲突的key的对象放入链表中,一旦发现冲突就在原创 2020-11-04 15:44:40 · 120 阅读 · 0 评论 -
正确区分@Autowire和@Resource注解的区别
大家都知道这两个注解可以实现bean的注入@Autowired 这个是spring的注解 org.springframework.beans.factory.annotation.Autowired@Resource 这属于java自带的注解 javax.annotation.Resource@Autowired默认是按照类型来注入的,默认情况下要求依赖对象必须存在。如果允许依赖对象为null,需设置required属性为false,需要按名字注入的话可以跟@Qualifi.原创 2020-10-28 23:29:40 · 1398 阅读 · 0 评论 -
五分钟快速理解数据库设计三大范式
数据库设计范式什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。什么是三大范式:第一范式:当关系模式R的所有属性都不能再分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全原创 2020-10-26 15:38:41 · 269 阅读 · 0 评论 -
十分钟弄懂 java 中==、equals、hashCode 的区别
先来个总结:==运算符是判断两个对象是不是同一个对象,即他们的地址是否相等 object类中equals与==是等效的 覆写equals更多的是追求两个对象在逻辑上的相等,你可以说是值相等,也可说是内容相等。(覆盖以后,覆盖equals时总要覆盖hashCode ) hashCode用于返回对象的hash值,主要用于查找的快捷性,因为hashCode也是在Object对象中就有的,所以所...原创 2019-10-14 16:34:49 · 378 阅读 · 1 评论 -
JavaMail 之 搜索邮件
JavaMail在javax.mail.search包中定义了一个用于创建搜索条件的SearchTerm类,应用程序创建SearchTerm类的实例对象后,就可以调用Folder.Search(SearchTerm st)方法搜索邮件夹中符合搜索条件的所有邮件。SearchTerm是一个抽象类,JavaMail提供了22个实现子类以帮助应用程序创建不同的搜索条件,这22个类可分为两大类型,如下所示转载 2017-05-31 19:02:34 · 3800 阅读 · 2 评论 -
OAuth 2.0 详细介绍
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。一、应用场景为了理解OAuth的适用场合,让我举一个假设的例子。有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲...转载 2018-09-05 10:05:54 · 5302 阅读 · 1 评论 -
JAVA中创建一个子类的执行过程
1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 3.其次,初始化父类的普通成员变量和代码块,再执行父类的构造方法;4.最后,初始化子类的普通成员变量和代码块,再执行子类的构造方法; ...原创 2018-07-26 17:15:32 · 2881 阅读 · 0 评论 -
使用POI 导出word模板文件
maven依赖<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version></dependency>自定义XWPFDocu...原创 2019-03-21 11:29:32 · 5147 阅读 · 14 评论 -
Maven scope 属性介绍
scope的属性详解:1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit。3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要...转载 2019-04-03 17:18:21 · 314 阅读 · 0 评论 -
Spring Boot 文件通过zip压缩包 批量下载
最近项目中新增了一个需求:要求批量下载之前信息导出的word 文件,也就是批量下载。数据是保存在ES 中,导出word 的功能也是写好的。我的思路:传入数据ID分别导出word 文件到服务器某个文件夹。 根据文件地址将所有文件打包成zip文件到服务器某个地址 根据zip文件地址进行下载存在问题:批量导出word 文档,由于数据量大可能会非常耗时。解决:采用的异步方式分...原创 2019-06-05 11:18:43 · 10073 阅读 · 3 评论 -
用java五分钟 pdf转word 轻松搞定
最近家人有个pdf 文档需要转成word ,我觉得很轻松就在网上搜索工具,竟然没有找到好用的工具,有几个像样的竟然需要银子??pdf转换这么难吗?为什么需要花钱才能解决?强大的java,好用的apache 工具系列解决不了么?所以决定研究一下。首先找到了apache pdf 解析的依赖包:<dependency> <groupId>o...原创 2020-08-28 11:05:09 · 16972 阅读 · 12 评论 -
将外部 jar 安装到本地仓库 使用maven
mvn install:install-file -Dfile=C:\\Users\\admin\Desktop\\lib\\xxx-api-1.0.0.39.jar -DgroupId=com.other.dsp -DartifactId=dsp -Dversion=1.0.0 -Dpackaging=jar-Dfile:文件在本地的存放位置-DgroupId:<groupI...原创 2019-08-23 19:20:57 · 304 阅读 · 0 评论 -
idea Lombok安装及使用
Lombok使用介绍在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写。IDEA中的安装打开IDEA的Setting –> 选择Plugins选项 –> 选择Browse repositories –> 搜索lombok –> 点击安装 –> 安装完成重启IDEA –> 安装成功...转载 2018-08-29 14:25:51 · 2672 阅读 · 0 评论 -
JVM 垃圾回收机制
垃圾回收如何定义垃圾有两种方式,一种是引用计数(但是无法解决循环引用的问题);另一种就是可达性分析。判断对象可以回收的情况:显示的把某个引用置位NULL或者指向别的对象局部引用指向的对象弱引用关联的对象垃圾回收的方法Mark-Sweep标记-清除算法这种方法优点就是减少停顿时间,但是缺点是会造成内存碎片。Copying复制算法这种方法不涉及到对象的删除,只是把可用的对象从一个地方拷贝到另一个地方,...原创 2018-06-07 15:21:06 · 494 阅读 · 1 评论 -
postfix中限制认证用户使用的sender address
前言:默认情况下,杂postfix中,a用户主要通过了smtp认证,当a发送邮件时候,发送人地址可以随便写 现在我们想设置限制a用户的发送人地址 达到的要求 (1)a用户只能使用a-email地址发送邮件 (2)外面的用户可以发送邮件给我们服务器用户时候第(2)点看起来有点多余, 但是如果配置错误的话:第(1)点实现了,第(2)点就有问题 本文将使用reje转载 2017-06-25 21:23:16 · 1929 阅读 · 0 评论 -
java IE11浏览器文件下载的文件名乱码
项目中有用到文件下载功能,之前在处理下载时对IE浏览器下文件下载名进行过处理,但是功能上线后,业务反馈,IE11文件下载,文件名依然乱码。打印User-Agent字符串如下:IE11 User-Agent字符串:Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like GeckoIE6~IE10版本的User-Agent字符串:原创 2017-06-15 09:32:51 · 5650 阅读 · 2 评论 -
Cause: net.sf.cglib.beans.BulkBeanException 解决方法
使用Ibatis时候经常会出现此错误,由于 在查询数据库 有些为number字段 为空了,在进行转换时候出现了异常。附上默认值即可。原创 2017-06-02 13:31:51 · 1240 阅读 · 0 评论 -
Java Web开发Session超时设置
在Java Web开发中,Session为我们提供了很多方便,Session是由浏览器和服务器之间维护的。Session超时理解为:浏览器和服务器之间创建了一个Session,由于客户端长时间(休眠时间)没有与服务器交互,服务器将此Session销毁,客户端再一次与服务器交互时之前的Session就不存在了。 设置Session超时时间方式:方式一: 在web.xml中转载 2017-06-16 15:20:47 · 276 阅读 · 0 评论 -
Java 系统属性和环境变量的获取
Java为我们提供了System.getProperties()/getProperties(String key)方法来获取系统的属性 和System.getenv()/System.getenv()来获取环境变量。 1.系统属性的获取,如://返回默认的临时文件路径String property=System.getProperty("java.io.tmpdir");System.ou...原创 2017-04-27 17:36:44 · 834 阅读 · 0 评论 -
Spring线程池ThreadPoolTaskExecutor配置及详情
ThreadPoolTaskExecutor配置 1 spring thread pool executor --> 2 bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> 3 线程池维护原创 2017-05-25 13:33:57 · 4384 阅读 · 0 评论 -
ibatis动态SQL语句
最近参与了一个项目负责项目的二次开发,项目中用的是Ibatis .ibatis是mybatis的前身,在2010年7\8月份ibatis所项目移到了google,就将ibatis3.x正式改名为mybatis3.x了。虽然两者用法很相似,但是某些标签还是有差别,用惯了MyBatis,回头用ibatis会觉得别扭。 特整理一下项目常用的动态sql,以备查阅。动态SQL语句1)二元原创 2017-05-24 10:09:26 · 850 阅读 · 0 评论 -
Quartz Cron表达式
1、 CronTrigger时间格式配置说明CronTrigger配置格式:格式: [秒] [分] [小时] [日] [月] [周] [年]序号说明是否必填允许填写的值允许的通配符1秒是0-59 , - * /2分原创 2017-04-18 15:55:27 · 252 阅读 · 0 评论 -
mybatis 中# 与$ 的用法
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的原创 2017-08-09 11:47:48 · 827 阅读 · 0 评论 -
SVN更新后显示 A\R\U\C\G代表的含义
U:表示从服务器收到文件更新了 G:表示本地文件以及服务器文件都已更新,而且成功的合并了 其他的如下: A:表示有文件或者目录添加到工作目录 R:表示文件或者目录被替换了. C:表示文件的本地修改和服务器修改发生冲突转载 2017-08-28 09:57:57 · 2490 阅读 · 0 评论 -
Window安装Redis并设置为开机启动
一、下载windows版本的Redis去官网找了很久,发现原来在官网上可以下载的windows版本的,现在官网以及没有下载地址,只能在github上下载,官网只提供linux版本的下载官网下载地址:http://redis.io/downloadgithub下载地址:https://github.com/MSOpenTech/redis/tags二、安装Redis转载 2018-01-03 14:03:47 · 438 阅读 · 0 评论 -
JVM 内存模型
一、内存模型Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的,由Java虚拟机通过解释执行(解释器)或编译执行(即时编译器)来完成,故Java内存模型,也就是指Java虚拟机的运行时内存模型。作为Java开发人员来说,并不需要像C/C++开发人员,需要时刻注意内存的释放,而是全权交给虚拟机去管理,那么有就必要了解虚拟机的运行时内存是如何构成的。运...转载 2018-06-07 11:35:48 · 214 阅读 · 0 评论 -
Spring 中@Transactional 注解的使用
先来看看异常的分类error是一定会回滚的这里Exception是异常,他又分为运行时异常RuntimeException和非运行时异常 可查的异常(checked exceptions):Exception下除了RuntimeException外的异常不可查的异常(unchecked exceptions):RuntimeException及其子类和错误(Error)如果不对...转载 2018-05-29 17:59:27 · 1213 阅读 · 0 评论 -
swagger注释API详细说明
API详细说明注释汇总作用范围 API 使用位置 对象属性 @ApiModelProperty 用在出入参数对象的字段上 协议集描述 @Api 用于controller类上 协议描述 @ApiOperation 用在controller的方法上 Response集 @ApiResponses 用在controlle...转载 2018-06-05 16:53:42 · 6892 阅读 · 0 评论 -
面试题,Servlet 线程安全吗?
Servlet的工作原理:首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没doGet,doPost等等这些方法的,HttpServlet中定义了...原创 2018-06-04 14:05:00 · 2080 阅读 · 0 评论 -
idea mavan 导出依赖jar包
IntelliJ IDEA14之后的版本,没有import project选项,需要在File-New-Project form existing sources,然后基本就都知道咋弄了,然后勾上Import maven projects automatically选项,接下来要把SDK配置好,即找到jdk1.8的位置,最后确认。然后系统会自动下载依赖包,在依赖包下载完之前,整个项目结构是不会显示原创 2018-04-08 18:51:32 · 2317 阅读 · 0 评论 -
Tomcat 8 调优配置
Tomcat 8 配置设置 Tomcat 相关变量:sudo vim /usr/program/tomcat8/bin/catalina.sh在配置文件的可编辑内容最上面(98 行开始),加上如下内容(具体参数根据你服务器情况自行修改):JAVA_HOME=/usr/program/jdk1.8.0_72CATALINA_HOME=/usr/program/tomcat8CATALINA_OP...转载 2018-02-22 17:30:39 · 496 阅读 · 0 评论