
java基础
刘翔UP
生活中的20%是由发生在你身上的事情组成,
而另外的80%则是由你对所发生的事情如何反应所决定。
懂得接受,懂得控制情绪,调整心态的人,才能拥有更多的幸福。
只有消化了坏情绪,才能痛痛快快地拥抱好运气。
只有把握好情绪,我们才能更好地把握人生。
加油
展开
-
URL路径地址中特殊字符和编码对照表
原创 2021-05-27 14:31:38 · 679 阅读 · 0 评论 -
java字符串清除掉所有特殊字符
/** *只允许字母和数字 // String regEx ="[^a-zA-Z0-9]"; *清除掉所有特殊字符 * @param jsonPath * @return */ private String stringFilter(String jsonPath) { String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; Pattern..原创 2021-01-27 19:12:56 · 2570 阅读 · 0 评论 -
为什么要实现Serializable接口?serialVersionUID 写与不写
一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。什么情况下需要序列化?a)当你想把的内存中的对象写入到硬盘的时候;b)当你想用套接字在网络上传送对象的时候;c)当你想通过RMI传输对象的时候;再稍微解释一下:a)比如说你的内存不够用了,那计算机就转载 2020-09-15 13:41:31 · 3448 阅读 · 0 评论 -
2020-09-14
Spring MVC-拦截器今天就是把有关拦截器的知识做一个总结。1.拦截器概述1.1 什么是拦截器?Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。要使用Spring MVC中的拦截器,就需要对拦截器类进行定义和配置。通常拦截器类可以通过两种方式来定义。1.通过实现HandlerInterceptor接口,或继承Ha...转载 2020-09-14 17:11:45 · 746 阅读 · 0 评论 -
TimSort --Arrays.sort()和Collections.sort()使用的是MergeSort,而在Java 7中,内部实现换成了TimSort
乔西:在JDK1.7以前我们几乎就是按照MergeSort来实现Arrays.sort()的。只是细节上略有差别。当集合小于7的时候我们使用插入排序。当集合大于7的时候,先通过递归分解,把集合分解成若干等于7的子集合。我们再采用插入排序来进行子集合的排序。这是因为插入排序在小集合排序上最坏时间复杂度和MergeSort的运算量差不多,但最好情况优于MergeSort。具体的实现你可以通过Arrays里legacyMergeSort()看到,不过你动作要快,因为我们准备把它移除掉。小育:为什么要移除.转载 2020-09-14 14:15:58 · 339 阅读 · 0 评论 -
手写一个并行处理任务的工具类
TaskDisposeUtils是一个并行处理的工具类,可以传入n个任务内部使用线程池进行处理,等待所有任务都处理完成之后,方法才会返回。比如我们发送短信,系统中有1万条短信,我们使用上面的工具,每次取100条并行发送,待100个都处理完毕之后,再取一批按照同样的逻辑发送。import org.springframework.util.CollectionUtils;import java.util.List;import java.util.concurrent.CountDownLat.转载 2020-07-30 15:27:20 · 267 阅读 · 0 评论 -
JVM参数配置
JVM参数设置基本参数通过一张图来了解如何通过参数来控制各区域的内存大小image控制参数 -Xms设置堆的最小空间大小。 -Xmx设置堆的最大空间大小。 -XX:NewSize设置新生代最小空间大小。 -XX:MaxNewSize设置新生代最大空间大小。 -XX:PermSize设置永久代最小空间大小。 -XX:MaxPermSize设置永久代最大空间大小。 -Xss设置每个线程的堆栈大小。没有直接设置老年代的参数,但是可以设置堆...转载 2020-07-15 17:09:01 · 226 阅读 · 0 评论 -
Java获取时间与Linux不一致
Java获取时间与Linux不一致版权问题描述 遇到一个问题,web显示的时间比服务器时间快12小时。Tomcat和MySQL安装在同一台服务器,系统是centos7,且服务器时间和MySQL时间一致,均是当前北京时间。解决思路1、首先查看后端传给前端的时间戳; 发现后端传过去的时间已经快了12小时,说明web显示异常是后端问题;2、打印业务的日志,发现date显示的时间正常,但是date.getTime()对应的时间戳不正常:logger.info("date =...转载 2020-07-13 17:27:32 · 1229 阅读 · 0 评论 -
java int 求百分比 保证结果综合为1
java int 求百分比 保证结果综合为1直接取保留两位小数会导致数据之和不为 1 ,利用BigDecimal 取20 位 (根据需求取精度)1、ROUND_UP舍入远离零的舍入模式。在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。注意,此舍入模式始终不会减少计算值的大小。 public static String formatP...原创 2020-03-05 11:08:13 · 1864 阅读 · 1 评论 -
Collections.sort的使用
javaBean 中的指定属性Collections.sort(pageResponse.getList(), new Comparator<LinkCustomListResourceResponse>() { @Override public int compare(LinkCustomListResourceRespon...原创 2019-12-16 19:04:44 · 395 阅读 · 0 评论 -
本地zookeeper当当网config toolkit 管理配置
在大型集群和分布式应用中,配置数据不宜分散到集群结点中,应该集中起来统一管理。本文主要介绍如何使用这个开源工具。1、首先从github下载该项目源码:[plain]view plaincopygitclonehttps://github.com/dangdangdotcom/config-toolkit.git2、将config-zk-web这个maven...转载 2019-10-29 17:05:25 · 349 阅读 · 1 评论 -
JSON技术-Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean
一 、各个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,ezmorph-1.0.转载 2015-08-18 16:08:27 · 4343 阅读 · 0 评论 -
有return的情况下try catch finally的执行顺序
在try-catch-finally中, 当return遇到finally: 1.在try catch块里return的时候,finally也会被执行。 2.return 语句会把后面的值复制到一份用来返回,如果return的是基本类型的,finally里对变量的改动将不起效果,如果 return 的是引用类型的,改动将可以起效果。 3.finally里的r转载 2016-12-07 14:27:13 · 384 阅读 · 0 评论 -
Hashmap实现原理和重写Hashmap
1.HashMap的数据结构 数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为“链表的数组” ,如图: 从上图我们可以发现哈希表是由数组+链表组转载 2017-03-07 15:44:34 · 5295 阅读 · 0 评论 -
log 日志查看
log 日志查看记录来自: http://blog.youkuaiyun.com/teamlet/article/details/38046409tail - f 10000 catalina.out 查看日志倒数1000 条grep "ERROR" catalina.out 关键字 ERROR 查询grep "ERROR" catalina.out >...原创 2017-11-30 17:01:52 · 4813 阅读 · 0 评论 -
java对象 Comparable compareTo排序
这里所说到的Java中的排序并不是指插入排序、希尔排序、归并排序等具体的排序算法。而是指执行这些排序算法时,比较两个对象“大小”的比较操作。我们很容易理解整型的 i>j 这样的比较方式,但当我们对多个对象进行排序时,如何比较两个对象的“大小”呢?这样的比较 stu1 > stu2 显然是不可能通过编译的。为了解决如何比较两个对象大小的问题,JDK提供了两个接口 java.lang.Co...转载 2018-04-11 11:26:48 · 5772 阅读 · 0 评论 -
java如何对map进行排序详解
一、简单介绍Map在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度。HashMap最多只允许...转载 2018-04-11 11:55:01 · 447 阅读 · 0 评论 -
java实体Bean 父子类转换
开发中遇到一个问题,父类转子类问题public class StudentCityArea extends Student{ private static final long serialVersionUID = -4004994377623377635L; private String province; private String city; pr...原创 2018-07-26 17:36:07 · 2757 阅读 · 0 评论 -
七牛的java-sdk会报错 com java.lang.NoSuchMethodError: org.json.JSONStringer.object()Lorg/json/JSONWriter
七牛的java-sdk实现getToken过程中,执行putPolicy.token()会报错 com java.lang.NoSuchMethodError: org.json.JSONString原因是 spring-boot-configuration-processor 与qiniu 的sdk 中的jar 冲突,需要排除jar 包 <dependency> ...原创 2018-10-10 09:52:48 · 2047 阅读 · 0 评论 -
Drools的 rules 字符串 在SpringBoot 热部署 中不能正常执行
描述:开发项目中遇到一大坑,drools 在他的 SpringBoot中始终不执行 ,最后发现他的是SpringBoot 热部署 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifac...原创 2018-12-04 10:49:05 · 1434 阅读 · 1 评论 -
字符串长度计算(包含中文)
public static int lengthWithCh(String value) { int valueLength = 0; String chinese = "[\u0391-\uFFE5]"; /* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */ for (int i = 0; i <...原创 2019-07-03 15:17:05 · 4853 阅读 · 0 评论 -
压缩20M文件从30秒到1秒的优化过程
有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的,所以就直接上网找了一个例子改了一下用了,改完以后也能使用,但是随着前端所传图片的大小越来越大的时候,耗费的时间也在急剧增加,最后测了一下压缩20M的文件竟然需要30秒的时间。压缩文件的代码如下。public static void zipFileNoBuffe...转载 2019-08-16 18:52:19 · 528 阅读 · 0 评论 -
常用的正则表达式集锦
1.验证数字:只能输入1个数字 表达式 ^\d$ 描述 匹配一个数字 匹配的例子 0,1,2,3 不匹配的例子 2.只能输入n个数字 表达式 ^\d{n}$ 例如^\d{8}$ 描述 匹配8个数字 匹配的例子 12345678,22223334,12344321 不匹配的例子 3.只能输入至少n个数字 表达式 ^\d{转载 2016-12-06 14:09:14 · 1662 阅读 · 0 评论 -
按值传递还是按引用传递详细解说
1:按值传递是什么指的是在方法调用时,传递的参数是按值的拷贝传递。示例如下:[java] view plain copy public class TempTest { private void test1(int a){ //做点事情 } public static void main(String[] arg转载 2016-12-12 15:14:45 · 7849 阅读 · 0 评论 -
lombok 简化java代码注解 理解
lombok 注解: lombok 提供的注解不多,可以参考官方视频的讲解和官方文档。 Lombok 注解在线帮助文档:http://projectlombok.org/features/index. 下面介绍几个我常用的 lombok 注解: @Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提转载 2015-09-10 16:30:46 · 320 阅读 · 0 评论 -
synchronized与static synchronized 的区别
1.synchronized与static synchronized 的区别 synchronized是对类的当前实例进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是“类的当前实例”, 类的两个不同实例就没有这种约束了。那么static synchronized恰好就是要控制类的所有实例的访问了,static synchronized是限制线程同转载 2015-09-09 16:46:51 · 280 阅读 · 0 评论 -
CascadeType属性说明
CascadeType属性说明CascadeType.PERSIST只有A类新增时,会级联B对象新增。若B对象在数据库存(跟新)在则抛异常(让B变为持久态) CascadeType.MERGE指A类新增或者变化,会级联B对象(新增或者变化) CascadeType.REMOVE只有A类删除时,会级联删除B类; CascadeType.ALL包含所有; Casca转载 2015-09-09 11:27:59 · 533 阅读 · 0 评论 -
Callable与Future的介绍
Callable与Future 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。Callable的接口定义如下;public interface Callable { V call() throws Exception; }转载 2015-08-19 10:33:11 · 323 阅读 · 0 评论 -
apache StopWatch基本使用
有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录操作的java类,当然还有一些其他转载 2015-09-09 16:06:27 · 4544 阅读 · 0 评论 -
Immutable(不可便)集合-提供了ImmutableList,ImmutableSet和ImmutableMap来包装集合。
大家都知道JDK提供了Collections.UnmodifiableList(),Collections.UnmodifiableSet()和Collections.unmodifiableMap()这些包装方法。事实上它们的实现都是包装了原来的集合对象,然后在add,put,remove这样的方法上面抛出UnsupportedOperationException。这样就实现了Unmodifia转载 2015-08-10 10:42:03 · 4159 阅读 · 0 评论 -
StringUtils 的使用
. public static boolean isEmpty(String str) 判断某字符串是否为空,为空的标准是 str==null或 str.length()==0 下面是 StringUtils 判断是否为空的示例: StringUtils.isEmpty(null) =true StringUtils.isEmp原创 2015-08-10 11:37:51 · 324 阅读 · 0 评论 -
java中Collections.sort排序详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能;如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的。compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。equals(obj)方法:仅当指定的对象也是一个 Compara转载 2015-08-07 10:01:19 · 1526 阅读 · 0 评论 -
substring() intValue() valueOf()
int len=50; len = Integer.valueOf(str.substring(j+1)).intValue()比如说有个String str="12345";substring函数是取一个string子串,如果j=1,那么str.substring(j+1)就是取从第二位开始的子串,所以str.substring(j+1)等于"345"; valu原创 2015-08-10 13:42:00 · 521 阅读 · 0 评论 -
深入浅出 EJB3.1(上)
深入浅出 EJB3.1(上)Enterprise Java Beans(简称EJB)是Java Enterprise Edition(简称Java EE)平台上的服务端组件架构模型,目标极力于快速并简化分布式,事务处理,安全以及便携式的应用程序。 EJB在其2.*时代也叱诧风云过,由于能够解决许多企业应用程序的需求而被广泛采纳。但这只是EJB成功的表象,越来越多的质疑声转载 2015-08-20 18:53:42 · 837 阅读 · 0 评论 -
深入浅出 EJB3.1(下)
EJBBean编程企业应用JVMGlobal JNDI names(统一的全局JNDI命名) 该特性已经渴望很久了,终于在EJB3.1 中得以实现。原来EJB的全局JNDI命名方式都是供应商各自的实现版本,在布署的时候有很多问题。同一个应用程序中的那些session beans在不同供应商的容器中很可能JNDI命名就不同,造成客户端的调用代码必须得调整修改。除此之外,支持EJ转载 2015-08-20 18:55:33 · 469 阅读 · 0 评论 -
每一次new InitialContext()方法花费大概100毫秒到200毫秒之间,而每一次lookup()大概要花10毫秒到30毫秒之间
最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结——小心new InitialContext()。在做客户端的时候,发现连接服务器,搜索数据库,然后返回结果集。每一次执行的时候,第一次总要花更多的时间,之后每一次操作时间就要快很多了。期间找了很多方法,都行不通。一开始以为是Ejb服务器建立服务消耗时间,后来觉得不对,因为Jboss启动的时候,已经将服务启动了。转载 2015-08-21 10:44:25 · 1190 阅读 · 0 评论 -
java js 代码得到最近几个月日期
java 代码得到最近几个月日期 Calendar c = Calendar.getInstance(); String endtime=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()).toString(); String time=request.getPa原创 2016-12-01 11:09:00 · 1073 阅读 · 0 评论 -
Java:DocumentBuilderFactory调用XML的方法实例
首先得到:得到 DOM 解析器的工厂实例 DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();然后从 DOM 工厂获得 DOM 解析器 DocumentBuilder dombuilder=domfac.newDocumentBuilder(); )把要解析的 XML 文档转化为输入转载 2015-12-07 16:55:35 · 373 阅读 · 0 评论 -
导出excel功能(解决大数据量问题)
目前我们做的系统,导出excel功能都存在一个问题,如果数据量一大(比如上万条以上的记录),如果用传统的方式导出excel速度都很慢,甚至最终导致内存益出,最终死机;(请大伙最好都确认一下各自负责的系统存在的问题)例如:三明移动公司的积分系统,因需求所需,客户如果要导出20多万条记录的话,系统速度都很慢,最终导致内存益出死机;原本以为是频繁把数据放在集合的原因,可是我又有分页觉得不是主要原...转载 2015-09-28 10:50:12 · 10877 阅读 · 2 评论 -
java 回调的同步回调和异步回调
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。 同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用; 回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口; 异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件转载 2016-01-25 10:47:40 · 1105 阅读 · 0 评论