
JAVA基础
yinni11
这个作者很懒,什么都没留下…
展开
-
实战Spring Boot 2.0之过滤器和拦截器
用户认证授权、日志记录MDC、编码解码、UA检查、多端对应等都需要通过拦截请求来进行处理。这时就需要Servlet、Filter、Listener、Interceptor这几种组件。而把非Spring Boot项目转换成Spring Boot项目,需要沿用以前的这些代码,所以有必要了解这它们的用法和生命周期。正文1. 几种组件介绍1.1. 监听器Liste...转载 2020-02-11 22:24:34 · 630 阅读 · 0 评论 -
Spring Boot实战:拦截器与过滤器
一、拦截器与过滤器 在讲Spring boot之前,我们先了解一下过滤器和拦截器。这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的。在分析两者的区别之前,我们先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想。在面向对象编程的过程中,我们很容易通过继承、多态来解决纵向扩展。但是对于横向的功能,比如,在所有的service方法中开启事务,或者统一记录日志等功能...转载 2020-02-10 12:29:18 · 236 阅读 · 0 评论 -
JVM如何判断一个Java对象是否可以回收
总所周知,Java将程序员从内存管理中解放出来,使得我们在编写代码的时候不用手动的分配和释放内存,内存管理的任务由JVM承担起来。本文就将讲解JVM在回收对象之前,如何判断一个对象是否应该被回收。在此之前,我们先来复习一个和Java对象回收有关的知识,那便是finalize方法,这是一个在Object类中定义的方法,如果我们重写了finalize方法,那么在对象被回收之前将会调用finaliz...转载 2018-08-31 14:19:43 · 3652 阅读 · 0 评论 -
Java GC如何判断对象是否为垃圾
查找内存中不再使用的对象 引用计数法 引用计数法就是如果一个对象没有被任何引用指向,则可视之为垃圾。这种方法的缺点就是不能检测到环的存在。 2.根搜索算法 根搜索算法的基本思路就是通过一系列名为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相...转载 2018-08-31 14:44:07 · 214 阅读 · 0 评论 -
instanceof关键字的使用
可以用instanceof判断一个类是否实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。instanceiof的语法格式如下:对象 instanceof 类(或者接口),它的返回值为boolean型。...转载 2018-08-24 15:11:33 · 240 阅读 · 0 评论 -
运算符
.右移运算符>>(有符号)用来将一个数的各二进制位全部右移若干位.例如:a = a>>2,使a的各二进制位右移两位,移到右端的低位被舍弃,最高位则移入原来高位的值. (正数右移是正数,负数右移是负数)如:a = 00110111,则a>>2=00001101,b=11010011,则b>>2 = 11110100 右移一位相当于除2 取商,而且...转载 2018-08-31 19:18:32 · 562 阅读 · 0 评论 -
Dump分析工具Eclipse Memory Analyzer
Eclipse安装Eclipse Memory Analyzer先在eclipse上方的菜单栏中选择首先,打开Help->Install new software->work with右边的Add...弹出如下对话框输入如下下载地址:http://archive.eclipse.org/mat/1.2/update-site/一直选择NEXT,直至完成. ...转载 2018-09-01 20:21:58 · 1894 阅读 · 0 评论 -
使用 Eclipse Memory Analyzer 进行堆转储文件分析
概述对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题提供了重要的依据。通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资深人士进...转载 2018-09-01 20:47:22 · 151 阅读 · 0 评论 -
HashMap为什么线程不安全?
就正式说一下多线程环境中,hashmap会有什么样的问题。问题主要出在扩容时的ReHash操作。1.会导致hashmap出现链表闭环,一旦进入了闭环get数据,程序就会进入死循环,所以导致HashMap是非线程安全的 转载于:https://baijiahao.baidu.com/s?id=1608218863498884604&wfr=spider&for=pc...转载 2018-09-05 15:15:34 · 191 阅读 · 0 评论 -
concurrent中的condition的使用场景或者原理
1. 调用condition.await方法后线程依次尾插入到等待队列中,如图队列中的线程引用依次为Thread-0,Thread-1,Thread-2....Thread-8;2. 等待队列是一个单向队列。通过我们的猜想然后进行实验验证,我们可以得出等待队列的示意图如下图所示:同时还有一点需要注意的是:我们可以多次调用lock.newCondition()方法创建多个condition对...转载 2018-09-03 20:07:09 · 1220 阅读 · 0 评论 -
内存溢出的解决思路
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。 引起内存溢出的原因有很多种,常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3.代码中存在死循环或循环产生过多重复的对象实体; 4.使用的第三方软件中的BUG;...转载 2018-08-31 12:06:24 · 565 阅读 · 0 评论 -
JAVA中因为书写不规范,容易产生内存溢出的注意事项
对于有语言编译基础的同志,要注意了.如果你是刚学java的.那么下面你必须要看.当然本人也是一样.也会出现下面某些错误.所以本人总结了一些.当然都是个人看法.不代表就是对的.也许有些是错的.同时也希望熟悉JAVA的高高手指出.或者有更好的看法或建议.都可以和我沟通.大家一齐来学习.同时这也是对自己的一种提高.在项目应用中.往往都是面临复杂的业务.而且用户量增加.内存使用自然就会增大.还...转载 2018-08-31 11:39:04 · 521 阅读 · 0 评论 -
使用JSONObject生成和解析json
1. json数据类型类型 描述 Number 数字型 String 字符串型 Boolean 布尔型 Array 数组 Object 对象 null 空值 (1)json中不区分整数、小数等类型,而统一使用Number来存储数字。(2)Array表示数组,以中括号"[]"括起来,元素之间以逗号分隔,元素可以为任意类型。...转载 2018-08-13 19:14:53 · 170 阅读 · 0 评论 -
各个JSON技术的比较
JSON技术的调研报告一 、各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmo...转载 2018-08-13 19:29:36 · 197 阅读 · 0 评论 -
net.sf.json.JSONObject 和org.json.JSONObject 的差别。
一、创建json对象String str = "{\"code\":\"0000\", \"msg\":{\"availableBalance\":31503079.02}}org.json.JSONObject:JSONObject json = new JSONObject(str);net.sf.json.JSONObject:JSONObject json = JSON...转载 2018-08-13 19:36:54 · 380 阅读 · 0 评论 -
Java json串生成及转bean
package com;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import net.sf.ezmorph.bean.MorphDynaBean;import net.sf.json.JSONArray;import net....转载 2018-08-13 19:38:27 · 319 阅读 · 0 评论 -
深入理解Java类加载器(1):Java类加载原理解析
1 基本信息 每个开发人员对Java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败等技术问题,对理解java虚拟机的连接模型和java语言的动态性都有很大帮助。 ...转载 2018-08-17 17:27:21 · 135 阅读 · 0 评论 -
Java序列化之排除被序列化字段(transient/静态变量)
我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(...转载 2018-08-20 19:30:01 · 7493 阅读 · 0 评论 -
深入理解JAVA序列化
如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件。那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认识,包括父类序列化的问题、静态变量问题、transient 关键字的影响、序列化 ID 问题。在笔者实际开发过程中,就多次遇到序列化的问题,在该文章中也会与读者分享。引言 将Java对象序列化为二进制文件的 Java ...转载 2018-08-20 20:10:37 · 109 阅读 · 0 评论 -
jvm的优化设置及设置的意义的总结
一、概述JVM的性能优化基本上是面试过程中经常问到的问题,今天在这里做的总结。垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(如数据库连接,网络IO等资源)虽然java不需要开发人员显示的分配和回收内存,这对开发人员确实降低了不少编程难度,但也可能带来一些副作用:1. 有可能不知不觉浪费了很多内存2. JVM花费过多时间来进行内存回收3. 内存泄露因此,作...转载 2018-08-31 00:13:04 · 350 阅读 · 0 评论 -
Java Web(一) Servlet详解!!
这篇文章到上一篇,距离的有点遥远呀,隔了大概有两个月把,中间在家过了个年,哈哈~ 现在重新开始拾起,最近在看一本个人觉得很棒的书,《Java Web 整合开发王者归来》,现在写的这一系列基本上是从该本书上总结出来了,个人认为觉得比较重要的和需要理解的,因为我发现,隔了这么久没学习,以前的很多东西都忘光了,比如最简单的,什么是Servlet?我都回答不上来,以前也只是简单的会创建servle...转载 2018-09-13 17:50:30 · 178 阅读 · 0 评论 -
java中的抽象类和抽象方法
抽象方法:在类中没有方法体的方法,就是抽象方法。抽象类:含有抽象方法的类就叫抽象类。抽象类中的抽象方法必须被实现!如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类!抽象类中的普通方法,可以不必实现。1 用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。例如 :abstract class Animal { /...转载 2018-10-14 21:26:16 · 1240 阅读 · 0 评论 -
系统内部集成测试(System Integration Testing) SIT 用户验收测试(User Acceptance Testing) UAT
系统内部集成测试(System Integration Testing) SIT用户验收测试(User Acceptance Testing) UAT SIT在前,UAT在后,UAT测完才可以上线转载 2018-12-20 11:51:58 · 2778 阅读 · 0 评论 -
字符串中的模糊匹配---即Java在字符串中查找匹配的子字符串
示例:在源字符串“You may be out of my sight, but never out of my mind.”中查找“my”的个数。输出:匹配个数为2三种方法:1.通过String的indexOf方法2. 通过正则表达式3. 通过String的split方法其中第一种方法只能用于精确匹配,第二三种则可以...转载 2019-03-13 20:33:51 · 36165 阅读 · 3 评论 -
大数据量(例如几十万或者几百万的量)怎么导入到excel中
现有的方案是:1. 数据量达到N行(例如:100行的时候)就往磁盘中写数据(就是将结果先写到磁盘的导入文件中,最后直接导出) 思考:前端直接导出这么大的文件,能导出吗?实现方案:POI 解决写入excel内存溢出POI写入excel表下面是结构图大批量数据读取写入的问题在项目中遇到二十万行数据要写入到excel中时会内存溢出,一般方法是调大tomcat...转载 2019-04-28 20:48:20 · 5470 阅读 · 1 评论 -
在MAC中查看Excel中一个sheet中的最大行数
首先点击行序号位置选中表格中任意一行单元格。使用 Command + 向下的尖头就可以看到C原创 2019-06-04 14:22:47 · 783 阅读 · 0 评论 -
使用@JsonFormat时间格式化注解使用解决问题
在数据库中定义的startRunTime为Timesmysql中定义为Timestamp在数据库表中startRunTime定义的为Date类型。但是最后将数据库中的数据转换为Po对象的时候,出现了第一张图的问题,startRunTime格式显示有错误。没有经过格式化的数据使用@JsonFormat时间格式化注解使用解决问题@JsonFormat注解是...转载 2019-06-21 19:35:24 · 3955 阅读 · 0 评论 -
Java之两个Set集合的交集、差集和并集
一、求交集注:场景是读取两个文件,把文件内容放到Set中,求两个文件之间的共同元素。在这里只写对Set的操作。public static void main(String[] args) throws Exception { String path1 = "path1"; String path2 = "path2"; Set<String> set1 = re...转载 2019-07-25 16:42:32 · 19085 阅读 · 0 评论 -
@Autowired注入为null的几种情况
1.在应用的Filter或Listener中使用了@Autowired,原因:因为Filter和Listener加载顺序优先于spring容器初始化实例,所以使用@Autowired肯定为null了~~解决:用ApplicationContext根据bean名称(注意名称为实现类而不是接口)去获取bean,随便写个工具类即可ApplicationContext的工具类:@Co...转载 2019-07-22 14:39:40 · 9568 阅读 · 0 评论 -
BeanUtils的使用
深copypublic static <T> T copyInstance(Object source, Class<T> tClass) { if (null == source) { return null; } T target; try { target = tClass.newInstance...原创 2019-08-16 17:09:26 · 167 阅读 · 0 评论 -
JAVA中的Date和Timestamp
在Po中定义的字段startRunTime类型为Date,如上图,没有格式化。但是数据库中是TimeStamp类型。此处需要类型格式化注解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")...原创 2019-09-30 14:43:35 · 388 阅读 · 0 评论 -
Spring基础之的StringUtils类
在Spring的包spring-core-4.3.2.jar中的org.springframework.util中提供了StringUtils类,提供了字符串的处理。 List集合转化为用符号隔开的字符串 StringUtils.join(list,",");字符串包含检查例1: 检查字符串(参数1)是否包含字符串(参数2).StringUtils.contain...转载 2018-04-02 21:30:03 · 1164 阅读 · 0 评论 -
StringBuilder在字符串前面加字符
StringBuilder sb = new StringBuilder();sb.append( "B" ); // 追加一个字符:Bsb.insert( 0 , "A" ); // 在最前面插入一个:A那么sb的结果就是:AB转载 2019-03-21 12:02:55 · 34167 阅读 · 0 评论 -
Java 科学计数法
1 科学计数法的概念1.1 有效数字在一个近似数中,从左边第一个不是0的数字起,到精确到的位数止,这中间的所有数字都叫做这个近似数的有效数字例如:890314000保留三位有效数字为8.90×10的8次方 (四舍)839960000保留三位有效数字为8.40×10的8次方 (五入)0.00934593保留三位有效数字为9.35×10的-3次方1.2 E记号大多数计算器及计算...转载 2019-03-21 11:19:20 · 12641 阅读 · 0 评论 -
@Resource与@Autowired注解的区别
一、写本博文的原因年初刚加入到现在的项目时,在使用注解时我用的@Resource。后来,同事:你怎么使用@Resource注解?我:使用它有错吗?同事:没错,但是现在都使用@Autowired。我:我研究一下。在大学,学习J2EE实训时一直使用的是@Resource注解,后来我就养成习惯了。现在对这两个注解做一下解释:@Resource默认按照名称方式进行bean匹配,@Autowir...转载 2018-10-15 10:12:51 · 120 阅读 · 0 评论 -
TypeReference
1. 基础使用在fastjson中提供了一个用于处理泛型反序列化的类TypeReference。import com.alibaba.fastjson.TypeReference;List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {});如下写法有更好的性...转载 2018-11-19 11:35:57 · 3597 阅读 · 0 评论 -
Java Builder模式的写法和lombok插件@Builder注解的支持
1. Builder模式简化get set方法,只需要定义一个静态公共的内部类即可public class User { private Integer id; private String name; private String address; private User() { } private User(User origin) ...转载 2018-11-24 10:38:07 · 319 阅读 · 0 评论 -
今日踩坑之window、Mac上CSV(UTF-8编码)用Excel打开乱码
遇到的问题如下: 今天有个功能是导入CSV文件,因为开发环境是在MAC上,MAC用GBK格式编码的CVS文件,所以在代码处理的时候,一直用UTF-8的方式进行编码的时候,处理的结果就是乱码。 发现问题是:用文本编辑器查看了CSV的文件编码格式是GBK,才找到问题所在。(我记得之前也遇到过CSV的编码的问题,他们也是用文本编辑NotePad++查看了编码格式,但是问题...转载 2018-11-26 09:44:16 · 7717 阅读 · 0 评论 -
跳板机(运维堡垒主机)
本文整理自 http://vps.zzidc.com/vpsjishu/847.html 跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。 跳板机,是运维堡垒主机的另个称呼。企业为了服务器的安全,通常所有的ssh连接都是通过跳板机来完成,以便于对ssh连接进行验证和管理,对运维人员的远程登录进行集中管理...转载 2019-02-11 10:46:33 · 2242 阅读 · 0 评论 -
String.Split(String regex)方法之设置多个分隔符
我们知道String变量有一个split方法,这个方法用于分割String字符串,返回值为一个String型的数组。例如:String str = "苹果,香蕉,火龙果";此时我们需要以逗号","为分隔符,将这句话切割开,则使用:String[] array = str.split(",");但是,有的时候遇到这种情况呢:String str = "5+2-64*36+25/65...转载 2019-03-19 15:48:36 · 4993 阅读 · 1 评论