java
文章平均质量分 51
外外外
这个作者很懒,什么都没留下…
展开
-
内存溢出————举例分析dump下的hprof文件
第一步:下载分析工具 内存溢出分析工具:Eclipse Memory Analyzer 下载地址:http://www.eclipse.org/mat/downloads.php第二步:开始分析hprof文件 将hprof文件导入Eclipse Memory Analyzer可看到上图: 1.Dominator Tree:可以列出占用内存最大的线程,以及线程下面的那些对象占用的空间 2.Leak ...原创 2018-06-27 10:27:39 · 42763 阅读 · 4 评论 -
Integer对象的比较
先了解两个知识点1.==与equals()如果等式两边是基本数据类型,是值的比较如果等式两边是对象,是对象地址的比较equals():对于Object对象,就是比较对象的地址:public boolean equals(Object obj) { return (this == obj);}对于Integer对象,对equals()方法进行了重写,改成了值的比较:public boolean equals(Object obj) { if (obj instanceof Intege原创 2021-04-01 14:28:45 · 1110 阅读 · 0 评论 -
int 数值溢出
int:4字节,1个字节8位(bit),第一位符号标识正负,所以int的取值范围为-2^31 - 2^31-1(-2147483648 ~ 2147483647)long:8字节,取值范围-263~263-1(-18446744073709551616 ~ 18446744073709551615)int 在标识一些时间的字段时,很容易超出使用范围,如对一个redis的key设置过期时间,之前过期时间是3天,32436001000=259200000<2147483647,没什么问题后来产品要原创 2021-04-01 11:47:23 · 3324 阅读 · 0 评论 -
Collator实现中文排序
1.建一个中文排序的工具类/** * 比较器工具类 */public class ComparatorUtils { //当前环境设置成 CHINA 中文 private static Collator collator=Collator.getInstance(Locale.CHINA); public static int compare(String o1, String o2) { //调用内部的方法,进行比较。 return co原创 2021-01-06 11:28:48 · 1109 阅读 · 0 评论 -
日志常见问题
日志常见问题1.不要用System.out.println()打的日志只会显示在控制台,不会进入日志文件,而且这个方法内部是用了synchronized的,是同步的2.不要使用 e.printStackTrace()其源码:public void printStackTrace() {printStackTrace(System.err);}也是打在控制台的3.输出异常信息,不要...原创 2020-04-18 00:22:04 · 501 阅读 · 0 评论 -
注解应用:打印日志
注解应用:打印日志1.定义注解/** * 打印 */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Inheritedpublic @interface MethodLog { /** * 需要打印入参 * @return */ boolean needPri...原创 2020-04-14 22:51:15 · 294 阅读 · 0 评论 -
序列化常见问题
举例说明序列化常见问题1.例子,将OrderTimeCostDTO的对象序列化,再反序列化@Testpublic void m1() throws IOException, ClassNotFoundException { OrderTimeCostDTO otc =OrderTimeCostDTO.builder().cutTime(new Date()).build(); Obje...原创 2020-04-14 16:28:54 · 923 阅读 · 0 评论 -
springMvc自带的jackson不支持yyyy-MM-dd HH:mm:ss的这种格式
解决方式1.网上有很多兼容方式:https://blog.csdn.net/qq906627950/article/details/795038012.使用阿里提供的JSONObject来做数据的转换(推荐)原创 2020-03-18 11:11:00 · 390 阅读 · 0 评论 -
@Data的坑
@Data注解中包括了@EqualsAndHashCode注解,该注解重写了equals()和hashcode()方法,两个对象的判断不再根据地址而是根据内容,可能导致问题:内容相同的两个对象放在一个set中,其中一个会被覆盖解决方式:1.用@Setter,@Getter代替@Data2.将内容相同的值做汇总(一般传参用set也是想保证内容的唯一性,推荐)...原创 2020-03-18 11:10:16 · 1547 阅读 · 1 评论 -
goupby()分组后的排序
HashMap是无序的,HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方。所以在按照一定顺序put进HashMap中,然后遍历出HashMap的顺序跟put的顺序不同LinkedHashMap实现了有序的HashMap,LinkedHashMap取键值对时,是按照你放入的顺序来取的(查询sql可以按key值做下排序),即可实现分组后的排序TreeMap就...原创 2020-03-18 11:09:04 · 100 阅读 · 0 评论 -
JAVA复制对象和集合的工具类
JAVA复制对象和集合的工具类因为BeanUtils.copyProperties(Object source, Object target),只能复制对象,不能复制数组和集合,所以决定写个工具类来解决public class CopyUtils { /** * 复制对象 */ public static <T,K> T convert(K s...原创 2020-03-17 17:41:11 · 1392 阅读 · 2 评论 -
java.util.NoSuchElementException: No value present
代码: private Boolean isPackageInfoExist(ResultDTO<List<TransportPackageDTO>> listResultDTO,TransportPackageDTO transportPackageDTO){ List<TransportPackageDTO> transportPac...原创 2019-03-04 14:27:35 · 2499 阅读 · 0 评论 -
java 可变参数 String... params
一些框架源码中可能会出现可变参数:public abstract class IJobHandler { /** * job handler * @param params * @return * @throws Exception */ public abstract ReturnT<String> execute(String... params) th...原创 2019-02-25 15:19:37 · 2789 阅读 · 0 评论 -
Java8 groupby() 分组后的排序问题
java8 groupby() 分组后的排序问题一.groupingBy()的源码 public static &lt;T, K, D, A, M extends Map&lt;K, D&gt;&gt; Collector&lt;T, ?, M&gt; groupingBy(Function&lt;? super T, ? extends K&gt; classi原创 2019-02-15 15:47:07 · 12658 阅读 · 1 评论 -
==与equals()的区别(1)
==:比较地址 equals():Object的一个方法,也是比较地址 区别:当变量的类型为String时: ==用于判别两字符串在内存中的地址是否相同 equals()用于判别两字符串的内容是否相同(String这个类重写了equals()这个方法) 例:public class Test { public static void main原创 2017-11-16 14:46:31 · 616 阅读 · 0 评论 -
NIO之Buffer
buffer状态由三个变量显示: position:跟踪已经写了多少数据或读了多少数据,它指向的是下一个字节来自哪个位置 limit:代表还有多少数据可以取出或还有多少空间可以写入,它的值小于等于capacity。 capacity:代表缓冲区的最大容量,一般新建一个缓冲区的时候,limit的值和capacity的值默认是相等的。具体实现代码:package sort;import java原创 2017-12-05 17:52:33 · 174 阅读 · 0 评论 -
Can not deserialize instance of java.lang.Integer out of START_OBJECT token 错误解决
今天在跟前端联调一个新的接囗时遇到这个错误 ,错误代码 /** * 扫描车牌号码得到车辆信息 * @param plateId * @return */ @RequestMapping(value = "scanPlateNumber") @ResponseBody public ResponseResult scanPlateN...原创 2018-06-26 16:16:28 · 32023 阅读 · 2 评论 -
IllegalStateException: Duplicate spring bean id orgQueryService解决
现象应用任务运行异常: exception is java.lang.IllegalStateException: Duplicate spring bean id orgQueryService排查orgQueryService的bean是写在spring-dubbo-consumer.xml中的,而且这个bean确实只有一个再看报错信息可以看到spring-dubbo-consum...原创 2018-10-29 10:30:50 · 4280 阅读 · 1 评论 -
责任链模式的一个应用
这里写自定义目录标题概念应用例子概念责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链,使多个对象都有机会处理同一个请求。这种模式中请求的发送者和接收者,以及接收者间都是解耦的。应用过滤器复杂的ifelse判断,选用于判断条件和内容都复杂,或者内容复杂的情况OA系统中的审批例子之前看到这个模式感觉很适合现在项目中运输路线的...原创 2018-11-07 18:01:04 · 166 阅读 · 0 评论 -
Java 8系列之Lambda表达示
1.Lambda的基本语法(parameters) -&gt; expression 或(请注意语句的花括号)(parameters) -&gt; { statements; }2.Lambda表达示的使用场景在函数式接口上使用Lambda表达式函数式接口就是只定义一个抽象方法的接口Lambda表达式允许你直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实...原创 2018-12-02 15:16:59 · 598 阅读 · 0 评论 -
Java 8系列之StreamApi
Stream的三个操作步骤1.创建Stream2.中间操作3.终止操作1.创建Stream @Test public void creatStream(){ //1.通过Collection系列集合提供的stream()或者parallelStream(); List&lt;String&gt; list=new ArrayList&lt;S...原创 2018-12-02 15:39:16 · 1059 阅读 · 0 评论 -
Java 8系列之Collector
Collector组成Supplier supplier(): 创建新的结果结BiConsumer&amp;lt;A, T&amp;gt; accumulator(): 将元素添加到结果容器BinaryOperator combiner(): 将两个结果容器合并为一个结果容器Function&amp;lt;A, R&amp;gt; finisher(): 对结果容器作相应的变换Set&amp;lt;Colle原创 2018-12-02 16:38:08 · 724 阅读 · 0 评论 -
Java 8系列之Optional
1.创建Optional对象1. 声明一个空的Optional //1.empty:返回一个空的 Optional 实例 Optional&amp;amp;lt;Student&amp;amp;gt; optStudent = Optional.empty();2. 依据一个非空值创建Optional Student student1 = new Student(&amp;quot;mm&a原创 2019-01-06 18:04:19 · 294 阅读 · 1 评论 -
Java 8系列之Future
一.基本概念1.并发与并行2.同步API与异步API同步API:你调用了某个方法,调用方在被调用方运行的过程中会等待,被调用方运行结束返回,调用方取得被调用方的返回值并继续运行。即使调用方和被调用方在不同的线程中运行,调用方还是需要等待被调用方结束运行,这就是阻塞式调用。异步API:你调用了某个方法,被调用方直接返回,或者至少在被调用方计算完成之前,将它剩余的计算任务交给另一个线程去做,...原创 2019-01-26 11:40:14 · 3998 阅读 · 0 评论 -
TIMEZONE 本地时间---格林时间
//第一种方法 Calendar calendar = Calendar.getInstance(); Date date = calendar.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'",Locale.US);//设置时间转换格式 S原创 2017-08-25 17:05:28 · 899 阅读 · 0 评论