Java
liuhmmjj
对计算机编程很有兴趣
展开
-
java8 List根据元素对象属性去重
使用Collectors.collectingAndThen链式对List根据元素对象属性去重。原创 2022-12-02 11:16:57 · 6860 阅读 · 0 评论 -
有想加入字节跳动的吗
北京 上海 杭州 南京 深圳 成都都有岗位 ,开发 测试 算法 大数据 产品 运营 销售 等岗位都有,要求本科及以上学历,想来试试的把简历发我邮箱liuhmmjj@163.com原创 2020-12-02 11:10:30 · 340 阅读 · 0 评论 -
JAVA树形目录结构表并将其拼接成树形JSON
表结构:CREATE TABLE `t_node` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键id', `org_id` int(11) NOT NULL COMMENT 'id', `org_name` varchar(50) NOT NULL COMMENT '名称', `parent_id` int(11) NOT NULL COMMENT '父id', `type_level` int(11) NOT NULL原创 2020-08-05 17:55:09 · 2911 阅读 · 0 评论 -
Java利用反射进行对象深拷贝与类型转换
Java利用反射进行对象赋值与类型转换首先利用反射创建目标类对象,获取当前对象以及目标类所有的成员,然后对这些属性双层循环遍历比较变量名,变量名称相等则进行赋值。获取成员属性时注意点:class.getDeclaredFields()能获取所有属性(public、protected、default、private),但不包括父类属性,相对的class.getFields() 获取类的属性(public),包括父类;这两者并不能满足我们的需求,我们需要的是要获取到子类以及父类的所有权限属性(pub原创 2020-06-04 16:10:31 · 4425 阅读 · 1 评论 -
BigDecimal格式化与工具类
由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。以利用BigDecimal对货币和百分比格式化为例。首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用,最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比。例子:import java.math.BigDe原创 2020-06-04 11:25:59 · 5447 阅读 · 0 评论 -
用BigDecimal解决doule类型相减时可能存在的误差
double类型的两个数相减可能存在误差,比如System.out.println(2099 - 1999.9);的结果为99.09999999999991可以用BigDecimal解决:public class TestDouble { //两个Double数相减 public static Double sub(Double d1, Double d2) { if (d1 == null || d2 == null) { return n原创 2020-05-14 10:56:38 · 6206 阅读 · 0 评论 -
Java中finally和return执行顺序
总结: 1 finally语句在return语句执行之后return返回之前执行的 2 finally块中的return语句会覆盖try块中的return返回 3 如果finally语句中没有return语句覆盖返回值,那么原来的返回值可能因为finally里的修改而改变也可能不变 4 try块里的return语句在异常的情况下不会被执行,这样具体返回哪个看情况 5 当发生异常后,catch中的return执行情况与未发生异常时try中return的执行情况完全原创 2020-05-11 11:57:35 · 11243 阅读 · 4 评论 -
Java 通过BufferedImage缩放和裁剪图片
通过BufferedImage对图片进行缩放和裁剪读取图片//读取图片 通过JAVA自带的ImageIO里面的read方法BufferedImage bufImage = ImageIO.read(File input);BufferedImage bufImage = ImageIO.read(URL input);BufferedImage bufImage = ImageIO.read(InputStream input);BufferedImage bufImage = Imag原创 2020-05-11 11:10:18 · 14293 阅读 · 0 评论 -
java 实现根据对象某属性对List中的对象元素去重
可以利用TreeSet与java8提供的stream filter对List进行去重代码:public class TestRemoveDup { /** * TreeSet的本质是一个"有序的,并且没有重复元素"的集合,它是通过TreeMap实现的。 * TreeSet注意事项: * 如果向TreeSet集合中添加元素的时...原创 2020-03-13 10:34:58 · 8344 阅读 · 0 评论 -
java 获取当前时间所在月份的每周日期区间
获取当前时间所在月份的每周日期区间(每周的起始日是周一,结束日期是周日)例子:假设当前时间是2020-03-04,那么这个月跨度有6周。第一周2020-03-01 ,2020-03-01)第二周 (2020-03-02,2020-03-08)第三周 (2020-03-09,2020-03-15)第四周 (2020-03-16,2020-03-22)第五周 (2020-03-...原创 2020-03-04 17:59:10 · 7757 阅读 · 1 评论 -
关于JDK lambda表达式与匿名内部类的等价实现却出现了截然不同的结果原因分析
发现了一个很奇怪的现象,先上代码:public interface A { int f(); default A cf(A other){ return new A(){ @Override public int f() { int i = this.f(); ...原创 2020-02-12 11:02:45 · 5483 阅读 · 0 评论 -
JDK8 按List中元素对象的多字段对List进行排序
利用Java8按照元素对象的多字段对List进行排序实例对象public class WarningRule implements Serializable { private String hour; private String content; //类型排序字段 private Integer order; public WarningRu...原创 2020-02-06 15:59:11 · 10884 阅读 · 0 评论 -
java计算两个字符串日期的相差天数
分别用jdk8和之前的版本进行计算public class Test { public static long dayDiff(String date1, String date2,String format) { if (null == date1 || null == date2) { return -1; } ...原创 2020-01-17 16:09:19 · 7534 阅读 · 1 评论 -
Java8 时间处理 - LocalDate,LocalDateTime,Instant
Java 8通过发布新的Date-Time API来进一步加强对日期与时间的处理。 旧版的 Java 中,日期时间 API 存在诸多问题 :非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。时区...原创 2019-10-23 20:44:27 · 7124 阅读 · 0 评论 -
生产者-消费者模型的Java实现
生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。问题出现在当缓冲区已经满了,而此时生产者还想向其中放入一个新的数据项的情形,其解决方法是让生产者此时进行休眠,等待消费者从缓冲区中取走了一个或者多个数据后再去唤醒它。...原创 2016-07-08 20:57:32 · 6261 阅读 · 0 评论 -
java类里的成员变量是自身的对象问题
今晚看单例模式饿汉时想到一个问题:假如java类里的成员变量是自身的对象,则新建该类对象时内存中怎么分配空间,我感觉似乎死循环了。举个例子:package day810;class B { private String b = "Hello"; private B a = new B();}public class A { public static void main(S原创 2016-08-10 23:10:07 · 12838 阅读 · 4 评论 -
java NIO
为什么要使用 NIO? NIO 的创建目的是为了让 Java 程序员可以实现高速 I/O 而无需编写自定义的本机代码。NIO 将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。 原来的 I/O 库(在 java.io.*中) 与 NIO 最重要的区别是数据打包和传输的方式。原来的 I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。原创 2016-09-01 10:26:27 · 10921 阅读 · 0 评论 -
Java枚举使用以及枚举实现单例模式
JDK 1.5 之前需要自定义枚举类JDK 1.5 新增的enum关键字用于定义枚举类若枚举只有一个成员,则可以作为一种单例模式的实现方式。枚举类型是指由一组固定的常量组成合法值的类型,枚举提供了编译时的类型安全,枚举类型还允许添加任意的方法和域,并实现任意的接口。Java枚举类型背后的基本想法非常简单:她们就是通过共有的静态final域为每个枚举常量导出实际的类。因为没有可以访问...原创 2016-08-22 00:24:12 · 16365 阅读 · 1 评论 -
HashMap源码分析以及四种遍历方法
package day05;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;/* *...原创 2016-08-01 11:20:34 · 7355 阅读 · 0 评论 -
ArrayList源码分析
ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新转载 2016-08-19 18:23:34 · 5604 阅读 · 1 评论 -
java比较器Comparable接口和Comaprator接口
java的比较器有两类,分别是Comparable接口和Comparator接口。一、其实很简单,单从字面理解就基本明白1. Comparable:“可比较的”,(欲参与比较的对象对应的元素类需实现Comparable接口)使用这种策略来比较时,两个对象(这里两个对象是指一个类的两个不同实例)本身必须是“可比较的”,比较的标准由对象所在的类来定义,这种可比较的能力是对象本身固有的,转载 2016-08-01 14:11:33 · 882 阅读 · 0 评论 -
java List删除元素问题及解决办法
先看一个例子:删除List中值为2的元素:List list = new ArrayList(); list.add(1); list.add(2); list.add(2); list.add(3); list.add(4); System.out.println("----------list大小1:--"+list.size()); for (int i原创 2016-08-02 21:49:48 · 16422 阅读 · 4 评论 -
System.arraycopy
ArrayList源码中的删除 /* * Private remove method that skips bounds checking and does not * return the value removed. */ private void fastRemove(int index) { modCount++; ...原创 2018-09-30 10:14:53 · 4135 阅读 · 0 评论 -
eclipse怎么查看开发包jar里源代码
最近我打算学习一下谷歌的类库Guava,下载了Guava-r09.jar包,以及源码,为了可以方面的看其源码,我将其源码导入,下面是导入的方法:我用的是eclipse,在Eclipse查看开发包jar源码的方法如下:1.选择项目,右键中单击【Properties】2.【Java Build Path】-【Configure Build Path】-【Libraries】,在下面原创 2016-07-30 20:50:35 · 69269 阅读 · 1 评论 -
回调函数透彻理解Java
回调函数,第一次见是在Java编程思想中,以及后来的观察者模式也应用了回调函数的思想。但是一直都没有重视,终于在一次面试的时候吃亏了,越来越理解为什么很多人说Java编程思想这本书要一遍遍的看,吃透! 首先在网络上搜索很多文章介绍什么是回调函数,看的云里雾里的。后来自己一步步分解终于理解了,记录如下。 从维基百科上面摘抄定义:(看完本篇文章再来理解这个定转载 2016-08-14 20:09:44 · 824 阅读 · 0 评论 -
maven setting.xml
<!--Licensed to the Apache Software Foundation (ASF) under oneor more contributor license agreements. See the NOTICE filedistributed with this work for additional informationregarding copyright o原创 2017-05-14 09:28:32 · 4831 阅读 · 0 评论 -
centos6.5安装jdk7和tomcat8
安装说明系统环境:centos-6.5安装方式:rpm安装 软件:jdk-7-linux-x64.rpm下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html检验系统原版本[root@admin ~]# java转载 2017-11-07 15:01:56 · 4631 阅读 · 0 评论 -
java String类
String类 1、String对象的初始化由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s = “Java语言”;转载 2015-11-19 11:04:14 · 435 阅读 · 0 评论 -
java8 List转Map,并进行分组过滤求和等操作
定义实体类:public class Person { private String name; private Integer age; public Person() { } public Person(String name, Integer age) { this.name = name; this.age ...原创 2019-10-09 16:58:28 · 7769 阅读 · 0 评论 -
驼峰命名法(CamelCase)和下划线命名法(UnderScoreCase)之间的转换
因为数据库表的字段名通常是用下划线命名法,但前端通常传的是驼峰命名法的字符串,我要将其转化为下划线命名法的字符串去数据库表中进行查询。例:select *fromuse where user_name=.....这时就要把userName转为user_name。我们可以使用Google guava的Guava CaseFormat类进行转换。com.google.common....原创 2019-09-29 17:07:22 · 7885 阅读 · 0 评论 -
Java8:利用Lambda表达式、方法引用以及增强版Comparator对List进行排序
本文主要是利用java8来对List进行排序:通过举例进行讲解,首先创建一个简单实例:public class Student implements Comparable<Student>{ private String name; private Integer age; private Float score; public Studen...原创 2019-05-17 10:55:43 · 9645 阅读 · 0 评论 -
ArrayList扩容问题
基于JDK1.8版本 ArrayList底层是基于数组实现的, 其不是线程安全的,只能用在单线程环境下。 实现了Serializable接口,因此它支持序列化,能够通过序列化传输; 实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问; 实现了Cloneable接口,能被克隆。public class ArrayList<E> ex...原创 2018-12-14 15:19:30 · 12139 阅读 · 0 评论 -
Java中PropertyDescriptor使用以及问题总结
一、软件包 java.beans 包含与开发 beans 有关的类二、PropertyDescriptor PropertyDescriptor 描述 Java Bean 通过存储器方法导出的一个属性构造方法:PropertyDescriptor(String propertyName, Class<?> beanClass)PropertyDe...原创 2018-08-30 14:28:02 · 25607 阅读 · 1 评论 -
Java常用代码段
将 String 转换为 int 类型int i = Integer.parseInt("1234");如何检查一个字符串是否为数字使用 Apache Commons Lang 中的 StringUtils.isNumericString str = "1254";boolean b =StringUtils.isNumeric(str);遍历HashMap中元素的最佳方...原创 2018-09-04 16:12:42 · 5026 阅读 · 0 评论 -
Maven项目读取resources下文件
网上有问答如下:问: new FileInputStream("src/main/resources/all.properties") new FileInputStream("./src/main/resources/all.properties") 上面两个无法读取maven下资源文件目录下的文件嘛,总是提示找不到该路径,这么写错了嘛,但是我的其他maven可以读取答: 要取编译后的路...原创 2018-06-25 09:42:05 · 17482 阅读 · 2 评论 -
Mybatis中javaType和jdbcType对应关系
Mybatis中javaType和jdbcType对应关系 JDBCType JavaType CHAR String VARCHAR String LONGVARCHAR String NUMERIC java.math.BigDecimal原创 2017-12-02 10:50:18 · 4681 阅读 · 0 评论 -
java中i=i++问题分析
12inti = 0;i = i++;结果还是0为什么?程序的执行顺序是这样的:因为++在后面,所以先使用i,“使用”的含义就是i++这个表达式的值是0,但是并没有做赋值操作,它在整个语句的最后才做赋值,也就是说在做了++操作后再赋值的,所以最终结果还是0让我们看的更清晰点:转载 2016-07-09 18:57:54 · 2275 阅读 · 0 评论 -
java找出一个数组中出现次数最多且最大的那个元素
比如,一个数组为:[1, 1, 3, 5, 6, 6, 6, 8, 8, 9, 2, 8, 3 ]同时符合最大且次数最多的就是8。思路:最简单的办法就是采用两层for循环去遍历,时间复杂度为O(n2),其次可以先用快速排序将数组排序,然后再找次数最多且最大的数,时间复杂度O(NLogN),第三种方法可以采用HashMap,这种方式时间复杂度为O(N),但是需要空间复杂度O(N)下面原创 2016-07-09 18:53:42 · 25317 阅读 · 5 评论 -
Java关键字instanceof
instanceof是Java的一个二元操作符,和==,>,它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例。package com.liuhui.java8.s1;class Vehicle{ // 交通工具 // ...原创 2015-12-02 22:18:24 · 555 阅读 · 1 评论 -
HTTP请求中浏览器的缓存机制
在HttpServlet类中定义了一个getLastModified方法,其完整语法定义如下: protected long getLastModified(HttpServletRequest req) 其中的返回值表示自1970年1月1日的0点0分0秒开始计算的一个毫秒数,HttpServlet类中定义的getLastModified方法总是返回一个负数,在HttpServlet子类中原创 2015-12-02 10:29:58 · 5118 阅读 · 1 评论