java基础
文章平均质量分 83
深山猿
不断进化的深山猿
展开
-
rpc调用无法获取异常信息解决
例如,当使用HttpClient发送请求时,如果服务器返回的响应内容为空,但是响应头信息或者状态码不为空,那么Response的返回内容就是空的,但是HttpResponse的实体可能不为空,可以通过调用getEntity方法获取实体。3. 网络传输过程中出现异常,这种情况下Response的返回内容是空的,但是HttpResponse的实体可能不为空,因为网络传输过程中可能只传输了部分内容,或者传输过程中出现了错误,但是已经传输的内容仍然可以被获取。但不会获取失败的详情。怎么处理才能拿到详细的错误信息?原创 2023-07-04 14:57:49 · 1915 阅读 · 0 评论 -
Orika的MapperFacade 了解与使用
开发中,会出现对象之间的相互转化,或者是根据某一对象转化成另一个对象。一般如果手动get和set还是比较费时费力的,此时可以使用Orika的MapperFacade。别的方式还有dozer JMapper mapStruck等方式。效率:因为Orika的设计思路是预先通过javaassist把JavaBean之间的映射关系一次性生成目标拷贝方法代码。 这样就可以避免在Bean 映射环节一次次的读取映射规则。 从而实现效率上的提高。这里以Springboot集成MapperFactory为实例。原创 2020-10-30 09:52:16 · 15761 阅读 · 3 评论 -
guava引入与使用
其实我用guava差不多大半年时间了,发现guava真的特别好用,又会使代码变得很简洁,最近又系统的学习了一下,大致讲一下????什么是guava呢?guava就是类库,是java api的增强与扩展,里面有大量的方法供我们使用,使用之前需要引入包 1 2 3 4 5 6 7 8 <dependencies> <!--guava依赖--> <...原创 2020-10-15 09:52:36 · 4381 阅读 · 1 评论 -
后端开发规范
开发规范命名规范【强制】避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命名,使可理解性降低。【强制】杜绝完全不规范的缩写,避免望文不知义。为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达;如果实在过长需采用缩写需要注释其含义。反例:AbstractClass“缩写”成 AbsClass;condition“缩写”成 condi;Function 缩写”成 Fu,此类随意缩写严重降低了代码的可阅读性。【推荐】如果模块、接口、类、方法使.原创 2020-09-15 11:10:54 · 377 阅读 · 0 评论 -
新的时间处理工具joda
时间处理是在项目中经常用到的,时间处理一共三个,new Date().getYear(); 该方式已经弃用,第二种:calendar,用的最多,但实际用起来并不方便,现在推荐的是第三种:使用joda包里面的时间处理工具。使用方式如下:1 引入maven包 <dependency> <groupId>joda-time</groupId> <artifactId>joda-ti.原创 2020-05-19 21:05:12 · 1538 阅读 · 0 评论 -
java中引用传递与值传递
1. Java的数据类型所谓数据类型,是编程语言中对内存的一种抽象表达方式,我们知道程序是由代码文件和静态资源组成,在程序被运行前,这些代码存在在硬盘里,程序开始运行,这些代码会被转成计算机能识别的内容放到内存中被执行。因此数据类型实质上是用来定义编程语言中相同类型的数据的存储形式,也就是决定了如何将代表这些值的位存储到计算机的内存中。所以,数据在内存中的存储,是根据数据类型来划...转载 2019-10-29 18:13:03 · 877 阅读 · 0 评论 -
Deque 和 queue的基础方法,功能区分
queueadd 插入成功或异常offer 插入成功或失败(false)remove 返回并移除成功或异常poll 返回并移除成功或nullelemennt 返回不移除,空返回异常peek 返回不移除,空返回nulldequeaddFirstaddlastremoveFirst 移除pollFirst 返回并移除getFirst 返回但不移除,空会抛出异常...原创 2019-10-23 18:11:58 · 735 阅读 · 0 评论 -
理解java,解释执行和编译执行 jvm jre jdk
jvm jdk 和 jre下载jdk -- java development kitmac下安装jdk后路径如下:jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/ext/zipfs.jar!/这里面有三个概念:jvm jre jdkJVM – java virtual ...原创 2019-10-12 11:59:53 · 484 阅读 · 1 评论 -
java 实现多文件动态上传
多文件可编辑上传<form action="../reportset/add.action" name="queryForm" enctype="multipart/form-data" method="post" ><input type="button" onclick="addFileInput()" value="添加文件行"></input&g...原创 2019-06-29 09:59:47 · 546 阅读 · 0 评论 -
java 泛型理解
https://blog.csdn.net/u011240877/article/details/53545041转载 2019-09-06 18:09:39 · 76 阅读 · 0 评论 -
int 和Integer
int 基本数据类型 0 指向常量池Integer 封装对象 null 指向堆Integer --> int 的时候可能出现nullExceptionInteger有哪些方法?静态,非静态 拆装箱调用什么方法?自动拆装箱发生在什么时间?Integer value = Integer.valueOf(22); //装箱int i1 = Integer.parseIn...原创 2019-09-07 10:54:09 · 142 阅读 · 0 评论 -
equal、hashCode、comparator和comparable接口
1 重写equals方法 为什么需要重写hashCodeo1 euqal o2,但是hashCode不同,那么以map中put方法为例:先hashCode,后equal,hashCode不同,那么不会放到同一个链表中,所以两个对象都能放到map中,但是两个对象可能equals,这就出现了map中key相同的问题所以Java对于eqauls方法和hashCode方法是这样规定的:如果两个...原创 2019-09-10 18:26:20 · 253 阅读 · 0 评论 -
list map set底层原理分析与关系
数组 ArrayList LinkedList VectorArrayList 底层是数组,在数组的基础上提供动态大小数组的功能,扩容调用System.arrayCopy函数Vector 方法上增加了synchronizedLinkedList 链表查找上:ArrayList快,直接下标定位,LinkedList需要指针移动插入节点:ArrayList需要拷贝,linkedLis...原创 2019-09-10 18:42:27 · 366 阅读 · 0 评论 -
Arrays.sort排序算法
java默认的排序算法及思路List.sort() 还是 Collections.sort底层的排序都是调用了Arrays.sort()方法Arrays.sort方法如下:public static <T> void sort(T[] a, Comparator<? super T> c) { if (c == null) { sort(...转载 2019-09-11 12:01:48 · 841 阅读 · 0 评论 -
io初步理解与使用
inputStream和InputstreamReader和writer分别怎么用?有什么联系?InputStream 是接口File(path);FileInputStream(file); ---- read write对应于byte[],所以字节流InputStreamReader(fileInputStream); ----read write对应于char[],所以字符流Bu...原创 2019-09-19 18:52:18 · 480 阅读 · 0 评论 -
面向对象的理解:封装 继承 多态 实例化过程 接口和抽象类 上下转型
接口和抽象类相同点都不能被实例化一般都有抽象方法不同:类:仅能实现多个,继承仅能一个;抽象类可以实现接口、继承抽象类,接口不可以方法:抽象类可以有实现方法,声明抽象方法需要带abstract;接口有默认实现,不需要abstract属性:接口属性必须是public static final;不允许子类修改扩展性: 接口增加方法,实现类必改;抽象类增加方法,子类直接享用接口所有...原创 2019-09-30 17:35:25 · 177 阅读 · 1 评论 -
byte\char\string\stringBuilder和stringBuffer
byte和char的区别于联系byte 1字节,有符号,一般表示数字,-127--128char 2字节,无符号(0-65535),java中一般用来表示一个字符如 a,’中‘;也可以用来表示数字;java中 unicode编码 1char=2byte=16bithttps://blog.csdn.net/luoweifu/article/details/7770588 char和byt...原创 2019-06-24 18:19:50 · 324 阅读 · 0 评论 -
json与dto互转
javaimport com.alibaba.fastjson.JSON;// dto 转 jsonString json = JSON.toJSONString(dto);// json 转 dtoDTO dto = JSON.parseObject(str, DTO.class);// json转ListList<DTO> cboardDataSyncDtos...原创 2019-06-01 10:24:02 · 13302 阅读 · 0 评论 -
java对象加载的过程,有哪些类加载器?双亲委派模型,为什么使用双亲委派模型,如何自定义类加载器?什么时候自定义?
java类的加载需要经历以下过程1) 编译:.java文件编译后生成.class字节码文件2) 加载:类加载器负责根据一个类的全限定名来读取此类的二进制字节流到JVM内部,并存储在运行时内存区的方法区,然后将其转换为一个与目标类型对应的java.lang.Class对象实例3) 链接 : 原始的类信息平滑的转入jvm的过程验证:格式(class文件规范) 语义(final类是否有子...原创 2017-09-27 17:55:06 · 4294 阅读 · 3 评论 -
Ascii,Unicode和utf-8的发展演变,java下字符和字节关系
出现ascii码:开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态,此时传输英文的各种字母字符或控制码足够了.出现GB2312和GBK后来计算机在中国使用,大家使用中文,但是中文很多7千多个中文,都需要表示,所以将ascii码改造(即一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,注意此时一定大于127)后产生了GB...原创 2017-09-21 21:05:54 · 237 阅读 · 0 评论 -
java InputStream,FileInputStream,InputStreamReader,FileReadr,BufferedReader之间的区别
先来点基础知识:1字节=8bit(位)Java中但是utf-8下:1字符 = 1字节1字符 = 3字节(中文)Unicode下: 1字符 = 2字节 InputStream和FileInputStream区分:InputStream是接口,不能实例化,FileInputStream是InputStream的实现类,用以读取字节流 FileReader原创 2017-09-22 16:11:42 · 1083 阅读 · 0 评论 -
理解阻塞非阻塞同步和异步
理解流的发展与演化需要先理解一些概念。家庭主妇在用热水器烧水,水没开的时候一直等着,别的啥也不干,这就是阻塞。但是如果烧水的时候同时去洗菜,就是非阻塞。家庭主妇烧水用的是不带报警器的热水器,则该主妇需要不时自己过来看水是否烧开,此为同步;如果热水器有报警功能,水烧开后自动报警通知改主妇,则为异步。阻塞非阻塞:有数据返回前是否等待阻塞:请求方发送数据后,线程得不到返回值就一直等.非阻塞:...原创 2017-09-22 16:14:03 · 221 阅读 · 0 评论 -
jdk8的特性
1语言新特性新增了lambda表达式 和函数接口Lambda表达式实例:Arrays.asList( "a", "b", "d" ).forEach( e -> {System.out.print( e );System.out.print( e );} );函数接口:函数接口指的是只有一个函数的接口,这样的接口可以隐式转换为Lambda表达式。...原创 2018-07-17 15:49:21 · 8541 阅读 · 0 评论 -
静态代理 动态代理 cglib原理区分 设计模式
本文主要从三个方面介绍代理模式,什么是代理模式,提供了什么好处;代理模式的三种实现方式;三种代理的区别首先简单说明下为什么需要代理模式:为其他对象提供一种代理以控制对这个对象的访问,可以隔离客户端和委托类的中介。我们还可以借助代理来在增加一些功能,而不需要修改原有代码。重点是代理模式的三种实现方式:先给出简单的接口和实现类:public interface IHello { ...原创 2018-10-16 20:31:34 · 9564 阅读 · 0 评论 -
java反射的原理,作用
什么是反射,反射原理Java反射的原理:java类的执行需要经历以下过程,编译:.java文件编译后生成.class字节码文件加载:类加载器负责根据一个类的全限定名来读取此类的二进制字节流到JVM内部,并存储在运行时内存区的方法区,然后将其转换为一个与目标类型对应的java.lang.Class对象实例连接:细分三步 验证:格式(class文件规范) 语义(final类是否有子类)...原创 2018-10-17 14:31:44 · 46107 阅读 · 6 评论 -
mvn多运行环境,用参数来打包不同的配置文件
每一个maven工程(比如web项目),开发人员在开发时,会使用一种配置文件,比如数据库配置,而测试环境可能使用另一种配置文件。打包完成后,手动调整配置文件,工作重复度很高,可以实现maven根据参数区分不同的运行环境,打包不同的配置文件。1为不同的环境分别建配置文件夹,笔者的配置文件目录如下(其实prod和test包中仅仅需要application.properties即可,因为只有...原创 2018-10-30 16:19:34 · 10507 阅读 · 0 评论 -
SimpleDateFormat线程安全问题解决
使用SimpleDateFormat在多线程下处理日期但得出的结果却是错误的,这是因为SimpleDateFormat方法是非线程安全的。示例代码:class MyThread extends Thread { private SimpleDateFormat sdf; private String dateString; public MyThread(Simpl...转载 2018-11-06 20:15:57 · 7153 阅读 · 0 评论 -
反射方式调用enum的方法
代码中存在很多结构相似的枚举,需要分别调用其方法名称相同的方法,所以选择使用反射调用枚举代码如下:package com.ruisitech.bi.enums.bireport;/** * @author:mazhen * @date:2018/9/13 11:46: * @description:用户类型枚举 */public enum UserTypeEnum { ...原创 2018-11-07 15:43:23 · 14626 阅读 · 1 评论 -
正则表达式的正确使用方式
开发中会经常遇到正则表达式的使用,下面给出正则表达式使用的三种方式,并指出正确方式:public class Test { static String regEx = "^baike"; // 此处预编译,可以提高效率 static Pattern pattern = pattern = Pattern.compile(regEx);; // 在方法体内...原创 2018-11-13 18:37:31 · 7486 阅读 · 0 评论 -
理解根目录,getClass().getResourceAsStream和getClass().getClassLoader().getResourceAsStream的区别
1理解根目录:经常会看到如下配置:<value>classpath*:/application.properties</value> <value>classpath:/application.properties</value>这里的classpath怎么理解呢,其实指的就是根目录,关于根目录,需要了解:1、src不是c...原创 2018-11-08 14:21:22 · 20476 阅读 · 0 评论 -
java回调机制用的理解与实例
生活场景如下:Wang写数学题,有一道比较难,需要问Li,Li也不会,要先回家一趟问问老爸怎么做,这个时候有wang如下三种选择:1)一直等待Li回来,期间啥也不干同步方式2) 等等再过来看Li回来没,异步future方式3)wang把电话留下来,让LI回来时打电话给自己。异步callback方式其中联系方式 就是回调函数,也就是其他人在完成任务后会调用的函数而留下联系方式...原创 2018-12-02 17:19:35 · 7048 阅读 · 1 评论 -
java实现excel下载功能实例
其实需求很简单,就是点击按钮后,向后台传入查询条件,然后根据查询条件获取满足条件的记录通过excel下载。方案一:使用ajax方式不可以原因导出excel算是文件下载了,后台需要向前台(浏览器)写文件流,而ajax请求获取的数据的都是字符串(此点当时在调试页面的时候,Response响应中满是乱码的字符串文本),它没法解决后台返回的文件流,但是浏览器可以。换句话说 ajax貌似实现不了文件...原创 2018-12-11 14:48:44 · 19404 阅读 · 0 评论 -
dto序列化的原因、方法、原理、注意点
程序在运行时实例化出对象,这些对象存在于内存中,随着程序运行停止而消失,但如果我们想把某些对象(一般都是各不相同的属性)保存下来或者传输给其他进程,在程序终止运行后这些对象仍然存在,可以在程序再次运行时读取这些对象的信息,或者在其他程序中利用这些保存下来的对象信息恢复成实例对象。这种情况下就要用到对象的序列化和反序列化。 其实很早就知道的,在Java中常见的几个类,如:I...原创 2019-01-23 21:30:29 · 5237 阅读 · 0 评论 -
面试题:如果某个对象想在 GC 中生存 1 次怎么办
想在对象生命周期中至少被GC一次后存活,最简单的方法是重写Object的finalize()。Finalize调用流程:GC时,当对象变成(GC Roots)不可达时,若该对象覆盖(重写)了finalize方法并且未执行过finalze方法,则将其放入F-Queue队列,由一低优先级线程执行该队列中对象的finalize方法;否则直接将其回收。执行finalize方法完毕后,GC会再次判断原创 2017-09-28 16:40:15 · 1898 阅读 · 0 评论