JAVA
墨笙弘一
这个作者很懒,什么都没留下…
展开
-
Mac查看JDK安装路径
1、在终端执行如下命令:/usr/libexec/java_home -V2、在结果展示中找需要查看的jdk版本的位置即可原创 2022-01-19 21:36:14 · 7360 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap spaceat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)at org.springframework原创 2020-06-26 11:15:21 · 1102 阅读 · 1 评论 -
Mapped Statements collection does not contain value for
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.xxx.xxx.原创 2020-06-26 11:02:29 · 243 阅读 · 0 评论 -
查询性能优化
背景说明:业务是保险的业务,分享一篇查询性能优化的文章。本人目前负责的出单业务和业务介入等模块。为何做这个查询的性能优化?由于产品升级,多被保人多险种多责任的出单,一个关系单下多个被保人的保单查询耗时多我们是以被保人的维度落的保单数据,也就是说一个关系单多个被保人多个险种,那么一条保单会对应多个险种数据,其次还有责任,特约,被保人的数据等,导致查询耗时很慢保全服务调用保单接口易出现超时现象,同时查询19个被保人数据。如何发现这个查询慢?使用jmeter工具对单个接口进行压测,优化前20并原创 2020-06-21 11:19:37 · 295 阅读 · 0 评论 -
Java微服务性能优化
最近在做微服务的性能优化,下面是对这次优化中,采用的方法和调整策略:使用JMeter进行接口压测使用JProfiler对压测过程中进行记录,分析接口耗时,内存等通过jvm命令,分析内存使用使用阿里巴巴Arthas,对程序进行监控使用sleuth来分析整条链路以后下面会分别按照上面5个方面来进行总结...原创 2020-06-14 21:32:18 · 985 阅读 · 0 评论 -
性能优化JProfiler学习和使用
jprofiler架构图原创 2020-06-14 21:26:26 · 262 阅读 · 0 评论 -
性能诊断工具Arthas
最近在做项目的微服务性能优化,快结尾了,做一下总结,里面关于使用到阿里巴巴的arthas的地方和心得Bootstrap ArthasEXAMPLES: java -jar arthas-boot.jar <pid> java -jar arthas-boot.jar --target-ip 0.0.0.0 java -jar arthas-boot.jar --telnet-port 9999 --http-port -1 java -jar arthas-boot.jar原创 2020-06-13 11:27:04 · 492 阅读 · 0 评论 -
String_format异常
背景:输出的钱的格式需要是千分位分隔,所以采用String的format产生异常的代码如下:public static void main(String[] args) { System.out.println(String.format("%1$,d","99999999")); }异常信息如下:Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.St原创 2020-05-21 19:33:58 · 580 阅读 · 0 评论 -
请求报文首字母大写问题解决方案
在和对方系统进行对接的时候,发现一个问题,对方给的请求报文和返回报文中的字段都是首字母大写的,那么再通过feign调用的时候,你传给对方的请求入参也应该和报文保持一致,示例如下:{ "Name":"zhangsan", "Age":"12", "Address":"上海市天潼路wework"} 下面是我们定义的DTO:package com.learn.java.eight...原创 2020-04-18 09:59:40 · 2282 阅读 · 0 评论 -
构造器、重载和this关键字
1.构造器1)定义:具有和类同名的一种方法,可以用来在类加载的时候初始化对象。比如:public class Constructor {<span style="white-space:pre"> </span>//下面的方法为该类的默认构造方法 public Constructor(){ /** * 初始化参数列表 */ }}...原创 2015-11-05 15:49:02 · 1648 阅读 · 0 评论 -
Java的基本数据类型
因为前段时间在面试的时候,被问到这个问题了,所以在这里总结一下这个。大多数人应该都了解JAVA中的基本数据类型只有8种,但是你如果看过thinking in java的话,你会发现里面的基本数据类型有9种JAVA基本数据类型 基本数据类型 大小 默认值 包装器类型 boolean 无 false Boolean char 16-b...原创 2015-11-05 11:13:50 · 426 阅读 · 0 评论 -
finalize关键字和垃圾回收的一些知识
1.finalize()方法1)finalize()的工作原理:假定一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收时候做一些重要的清理工作。2)JAVA中的对象并非总是被垃圾回收:a)垃圾可能不被垃圾回收b)垃圾回收并不等于“析构”c)垃圾回收只与内存有关使用垃圾回收的唯一原因是为了回收程序不再使用的内存,所以对于与垃...原创 2015-11-05 16:21:17 · 703 阅读 · 0 评论 -
Java中的访问控制
1.访问控制存在的原因:1)让客户端程序员无法触及及他们不应该触及的部分,因为这部分对数据类型的内部操作来说是必需的,但并不是用户解决特定问题所需的接口的一部分2)允许库的设计者可以改变类的内部工作方式而不用担心会影响到客户端程序员。2.Java中有3个关键字来作为访问控制的修饰符1)public:紧随其后的元素对于任何人都是可用的。2)private:除了类型的创建者和类中的...原创 2015-11-05 09:15:00 · 553 阅读 · 0 评论 -
初始化及类的加载
1.java中所有事物都是对象,每个类的编译代码都存在于它自己的独立文件中。该文件只在需要使用程序代码时才会被加载。一般来说,可以说:“类的对象在初次使用时才加载。”这通常是指加载发生于创建类的第一个对象之时,但是当访问static域或者static方法时,也会发生加载 。初次使用之处也是static初始化发生之处。所有的static对象和static代码段都会在加载时依照程序中的顺序而依次初...原创 2015-11-06 19:38:15 · 543 阅读 · 0 评论 -
内部类
1.内部类的定义:把一个类定义到另外一个类的内部的这种类的定义形式,称其被定义在类的内部的类叫做内部类比如:<span style="font-size:14px;">public class InnerClass { class Content{ }}</span>上述代码中的Content为InnerClass的内部类,而InnerClass...原创 2015-11-07 15:11:36 · 408 阅读 · 0 评论 -
final关键字
Java中使用到final关键字的三种情况:数据、方法和类1.final用来修饰数据1)用来表明该数据是恒定不变的2)对于编译期常量这种情况,编译器可以将该常量值带入任何可能用到它的计算式中,意思就是说,在编译时执行计算式,这样可以减轻运行时的负担。在JAVA中,这类的常量必须是基本的数据类型,并且是以final关键字表示。在对这个常量进行定义的时候,必须对其进行赋值。3)当对对象...原创 2015-11-06 18:37:22 · 404 阅读 · 0 评论 -
字符串
1.String1)String对象是不可变的,通过API文档我们可以知道String是被final修饰的,因此String对象是一种不可变的对象。String类中的每一个看起来都会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容,最开始的String对象的内容并未改变。例如:<span style="font-size:14px;...原创 2015-11-08 18:44:48 · 390 阅读 · 0 评论 -
异常处理
1.相关概念的介绍1)异常情形:是指阻止当前方法或作用域继续执行的问题。2)监控区域:一段可能产生异常的代码,并且后面跟着处理这些异常的代码。3)try块:如果在方法的内部或者在方法内部调用某个方法抛出异常,这个方法将在抛出异常的过程中结束,如果不希望该方法结束,可以在方法内设置一个特殊的块来捕获异常,这个块就叫做try块4)异常处理程序:抛出的异常必须在某个地方进行处理,处理这个...原创 2015-11-08 12:03:07 · 1080 阅读 · 0 评论 -
容器
1.容器的作用及分类1)容器的作用:用来保存对象2)容器的分类:a)Collection接口是一个独立元素的序列,这些元素都服从一条或多条规则。b)Map是一组成对的“键值对”对象,允许使用键来查找值2.List1)List必须按照插入元素的顺序来保存元素,所以List是一个有序可以重复的容器。2)List下面又有AarrayList和LinkedList两个子类...原创 2015-11-11 18:41:12 · 355 阅读 · 0 评论 -
多线程
1.并发的多面性并发解决的问题大致可以分为两种:1)速度问题并发是用于多处处理器编程的基本工具。 并发通常是提高运行在单处理器上的程序的性能。2)设计可管理性解决这个问题可以使用协作多线程。 JAVA的线程机制是抢占式的,这表示了调度机制会周期性的中断线程,将上下文切换到另外一个线程,从而为每个线程都提供时间片,使得每个线程都会分配到数量合理的时间去驱动它的...原创 2015-11-12 15:45:19 · 338 阅读 · 0 评论 -
Java分页
1.网站中常见的分页样式1)采用传统的分页方式,可以明确获得数据信息,如有多少数据,显示多少页等2)采用下拉式的分页方式,一般无法获取明确的数据数量相关的信息,但是在分页操作之后,仍然可以看到之前查询的数据。2.常见的分页方式1)使用List接口中的subList(int startIndex,int endIndex)方法实现分页List<E> sub...原创 2015-12-03 22:24:03 · 455 阅读 · 0 评论 -
死锁
1.定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。 2.产生死锁的四个必要条件; (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4) 循环等待条件:若干进程原创 2016-03-02 21:54:46 · 294 阅读 · 0 评论 -
线程
1.线程的概念: 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建原创 2016-03-03 20:48:43 · 414 阅读 · 0 评论 -
JDK1.7的新特性
前几天面试被问到了,所以查了一下,总结了一下JDK1.7的新特性switch表达式中可以支持string了,JDK1.7之前是不支持string类型的,只支持byte,short,int,enum数据类型,JDK1.7switch开始支持string类型了。运用List List = new ArrayList<>(); 即泛型实例化类型自动推断语法上支持集合,而不一定是数组新增一些取环境信原创 2016-03-03 20:58:05 · 495 阅读 · 0 评论 -
猜数游戏(JAVA)
GuessGame.javapackage com.wondersgroup.game;/** * 猜数游戏 * * @author Administrator * */public class GuessGame { // 创建3个player对象 Player p1; Player p2; Player p3; // 启动游戏 pub原创 2016-07-23 18:43:11 · 1386 阅读 · 0 评论 -
JAVA语言的基本概念
1.JAVA的工作方式 (1)编写源代码文件 (2)用编译器运行源代码,编译器会检查错误,如果有错误需要改正才可以产生正确输出,如果你用的是eclipse等开发工具,会直接有红色线提示你写的源代码错误,或者会在console控制台打印出来你的错误,如果你用的是dos下面进行javac编译的话,你需要根据dos下面提示的错误,去你的.java文件中进行修改。 (3)编译器会产生出字节码。比如在d原创 2016-09-10 12:08:20 · 759 阅读 · 0 评论 -
生成日期时间戳
大多数导出文件除了文件名字以后,后面都需要有时间戳,下面这句代码可以实时生成日期时间戳,精确到秒:String date = new java.text.SimpleDateFormat("yyyyMMddHH24MIss").format(new java.util.Date());原创 2016-10-10 15:32:22 · 1088 阅读 · 0 评论 -
默认显示当前日期
有个需求是检索条件中的日期默认显示当前日期,这个实现方式有两种: (1)在前台通过js实现 (2)在后台通过java代码实现,然后在前台通过取值就可以默认显示 我是通过第二种的方式实现的这种效果: 后台代码我写在action里面,实现如下:Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFor原创 2016-10-10 15:52:50 · 9118 阅读 · 0 评论 -
JAVA基础.类与对象
先简单总结一些类与对象的基础知识,以后再继续更新补充: 1.实例变量:对象本身已知的事物,代表对象的状态,并且该类型的每一个对象都会有独立的一份该类型的值。 2.方法:对象可以执行的动作 3.对象:对象是通过类来就进行创建的,对象也可以当做实例,一般对象都带有实例变量和方法 4.一般会有两个类,一个是主类,另外一个是类是测试类用来测试主类,测试类的命名为主类名+Test,其中测试类里面是建立原创 2016-09-26 22:24:41 · 428 阅读 · 0 评论 -
JAVA基础.数组
这里总结了一下JAVA数组,后面会更新和补充 1.数组的声明: int[] arr;//声明的是一个名为arr的int类型的一维数组 int[][] arr;声明的是一个名为arr的int类型二维数组 2.数组的创建 arr = new int[3];//创建一个名为arr数组大小为3的整形数组 array = new int[3][];//创建一个名为array的二维数组, ps:如原创 2016-09-26 22:28:10 · 267 阅读 · 0 评论 -
JAVA.方法
一个对象的行为需要靠方法来体现,所以对于方法做了一些总结: 1.方法属于类中的一部分,通过类中对象调用方法,来使得对象产生行为 2.方法没有返回值时声明得时候声明为void类型; public void getName(){ }3.方法也可以有返回值类型,该类型可以是基本数据类型也可以是引用类型 public int getNumber(){ return 3;原创 2016-09-26 22:30:43 · 225 阅读 · 0 评论 -
JAVA.实例变量和局部变量
单独提一下局部变量和实例变量: 1.实例变量声明在类中不是声明在方法中,局部变量声明在方法中 2.实例变量有默认值,局部变量没有默认值。 3.局部变量如果在使用之前没有进行初始化,那么在程序编译的过程中会出现错误,而实例变量不会。因此局部变量必须在使用之前进行初始化。 实例变量的声明和初始化,如果一个实例变量被声明了,但是没有被初始化,那么他们都是有默认值得,可以采取我最后这段代码进行测试验原创 2016-09-26 22:31:54 · 501 阅读 · 0 评论 -
JAVA.集合
以后用到集合的时候会很多,集合也有很多的具体分类,以后补充 1.ArrayList (1)方法 add(Object elem):向list中添加对象参数 remove(int index):在索引参数中移除对象 remove(Object elem):移除该对象 contains(Object elem):如果和对象参数匹配,返回true isEmpty():如果list中没有元素返原创 2016-09-26 22:36:32 · 245 阅读 · 0 评论 -
JAVA基础.JAVA基础语法
这块主要说了一下java的数据类型和变量命名规则: 1.JAVA的数据类型 JAVA的数据类型分为基本的数据类型和引用类型 2.基本的数据类型有四类八种(按照java编程思想上面的相关介绍,其中Void也属于一种数据类型) (1)整形:byte,short,int,long (2)浮点型:float,double (3)布尔型:boolean (4)字符型:char 3.引用类型原创 2016-09-26 22:26:51 · 266 阅读 · 0 评论 -
JAVA基础Object类
1.Object类是所有类的根基类或者父类,所有的类都是从Object类继承来的 2.Object类的方法 (1)protected Object clone() 创建和返回该对象的一个copy (2)boolean equals(Object obj) 判断是否有对象和这个对象相等 (3)protected void finalize()由对象的垃圾回收器调用时,垃圾回收确定不存在对原创 2016-09-28 10:21:50 · 308 阅读 · 0 评论 -
[JAVA基础]String的format
String类的格式化问题format: (1)数字格式化 (2)日期格式化 两者都可以采用String类中的format方法(JDK1.5开始支持),格式化说明最多会包括5部分(不包括%符号)。[]中的都是可选内容,必要的部分是%和type,而且格式化说明的顺序是有规定的必须按照这个顺序来指定,规则如下所示:%[argument number][flags][width][.precisio原创 2016-10-13 19:41:33 · 446 阅读 · 0 评论 -
继承机制
继承,一种IS-A的关系,C++和JAVA的继承又是有所区别的,JAVA的继承机制,只支持单继承不支持多继承,C++却可以支持多继承。 1.JAVA中只支持单继承,也就是说一个类只可以继承一个类。 2.继承的关键字是extends 3.JAVA种的继承是单向的,不会是多向的 4.被继承的类叫做父类或者超类,继承的类叫做子类 5.子类可以继承父类的所有东西,除了私有的实例变量和方法是不能继承原创 2016-10-17 20:14:51 · 468 阅读 · 0 评论 -
栈和堆
1.堆也叫做可以垃圾回收的堆,堆上存放的是对象 2.栈上面存放的是方法和实例变量,局部变量 3.实例变量声明在类中,实例变量存在于所属的对象中 4.局部变量和方法参数都是声明在方法中,都是暂时的,生命周期只限于方法被调用完和执行完毕。 5.引用变量的声明,创建和赋值 Dog dog = new Dog(); Dog dog—-是声明一个Dog的引用变量 new Dog—-是创建一个Do原创 2016-10-17 20:16:26 · 187 阅读 · 0 评论 -
抽象类和接口
1.抽象类和抽象方法1)当一个类用abstract关键字修饰的时候,那么这个类就叫做抽象类2)抽象类中可以有抽象方法,也可以没有抽象方法,也允许存在非抽象的方法。3)抽象方法是一个方法被用abstract关键字修饰的时候,那么这个方法就叫做抽象方法4)如果一个类中含有被abstract修饰的抽象方法,那么该类必须被abstract关键字修饰,使他成为一个抽象类5)抽象方法是一种...原创 2015-11-07 10:27:15 · 491 阅读 · 0 评论 -
方法的重写和重载
方法的重载overload和重写override 1.方法的重写override (1).方法的重写只发生在继承中,子类可以重写继承自父类的方法 (2).重写方法的参数类型顺序个数必须保持一致,并且返回值类型必须兼容,返回父类声明的返回类型或者返回该类型的子类型 (3).不能降低方法的访问控制权限,方法的访问控制权限必须和父类相同,也可以比父类的访问权限更大,但是万万是不可以小于父类的访问控原创 2016-10-17 20:24:24 · 683 阅读 · 0 评论