• Java杂记


    maven指令

    mvn clean package 依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
    mvn clean install 依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段
    mvn clean compile

    0.
    <? super T>表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类

    函数式编程
    @FunctionalInterface
    interface Converter<F, T> {
    T convert(F from);
    }
    Converter<String, Integer> converter = (from) -> Integer.valueOf(from);
    Integer converted = converter.convert("123");
    System.out.println(converted); // 123

    1.Stream流式

    模板: strings.stream().filter/map/collect/sorted(? -> ?).collect(Collectors.toList()/.joining()/.toMap()/.groupingBy()) /.count() ;
    list.foreach(System.out :: println);
    map 方法用于映射每个元素到对应的结果,以下代码片段使用 map 输出了元素对应的平方数: map用集合转换
    filter 方法用于通过设置的条件过滤出元素。以下代码片段使用 filter 方法过滤出空字符串:
    limit 方法用于获取指定数量的流。 以下代码片段使用 limit 方法打印出 10 条数据
    sorted 方法用于对流进行排序。以下代码片段使用 sorted 方法对输出的 10 个随机数进行排序:

    anyMatch(),只要有一个元素匹配传入的条件,就返回 true。
    allMatch(),只有有一个元素不匹配传入的条件,就返回 false;如果全部匹配,则返回true。
    noneMatch(),只要有一个元素匹配传入的条件,就返回 false;如果全部匹配,则返回 true。

    并行Streams 多个线程来操作Stream
    values.parallelStream().sorted().count()

     例子:

    allRoleOfEmployee.getResultObj().stream().anyMatch(i -> i.getRoleId() == role);
    Map<Integer, SalerSignInRelCount> onceHomeworkCountMap = onceHomeworkCountList.stream()
    .collect(Collectors.toMap(SalerSignInRelCount::getStaffId, salerSignInRelCount -> salerSignInRelCount));


    2.
    @ControllerAdvice 全局捕获异常


    3.
    String :: new
    interface PersonFactory<P extends Person> {
    P create(String firstName, String lastName);
    }


    4. 三元式
    BizPlatformTypeEnum platformTypeEnum = crmBizPlatform == null ?
    BizPlatformTypeEnum.getByCode(loginEmployee.getMajorSubject()) : BizPlatformTypeEnum.getByCode(crmBizPlatform);

    5.
    泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用 add 方 法,而<? super T>不能使用 get 方法,作为接口调用赋值时易出错。
    说明:扩展说一下 PECS(Producer Extends Consumer Super)原则:
    第一、频繁往外读取内容的,适合用<? extends T>。
    第二、经常往里插入的,适合用<? super T>。

    6..数组 集合 相互转换
    集合->数组 list.toArray(array)
    类 Arrays.asList()把数组转换成集合,本质上返回对象是Arrays的内部类,只是转换接口,数据仍是数组。不能使用add remove clear方法

    7.
    不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator
    方式,如果并发操作,需要对 Iterator 对象加锁

    8.遍历map集合
    使用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历。keySet遍历两次,消耗性能

    9. boolean返回值
    return a==b&&a==c;

    10.查询模板
    返回用Result模板接受
    查询模板接口BizQueryTemplate()传入一个回调接口BizServiceCallback<T> T为doquery()返回结果类型

    Result<List<AdUserDispatchedDto>> query =
    BizQueryTemplate.query(new BizServiceCallback<List<AdUserDispatchedDto>>() {
    @Override
    public void checkParams() throws Exception {

    }

    @Override
    public List<AdUserDispatchedDto> doQuery() throws Exception {
    // 新老noteType的转化
    List<Integer> noteTypeList = null;
    if (noteType != null) {
    noteTypeList = NewNoteType.val4Search(noteType);
    }
    return adUserInfoRepository.queryAccessibleAdUser(staffIdList, grade, operatorStaffId, noteTypeList,
    System.currentTimeMillis(), queryCondition, source, orderType, pageNum, pageSize);
    }
    });

    11.断言
    Spring Assert 用于字符判断 否则抛出异常(自定义的异常)
    Assert.notNull(Object object, "object is required") - 对象非空
    Assert.isTrue(Object object, "object must be true") - 对象必须为true
    Assert.notEmpty(Collection collection, "collection must not be empty") - 集合非空
    Assert.hasLength(String text, "text must be specified") - 字符不为null且字符长度不为0
    Assert.hasText(String text, "text must not be empty") - text 不为null且必须至少包含一个非空格的字符
    Assert.isInstanceOf(Class clazz, Object obj, "clazz must be of type [clazz]") - obj必须能被正确造型成为clazz 指定的类

    12.BigDecimal
    BigDecimal进行截断和四舍五入可用setScale方法
    new BigDecimal("4.278").setScale(3,RoundingMode.HALF_UP); //保留三位小数,四舍五入

    13.非空判断
    数组 groupIds[] (groupIds != null && groupIds.length > 0)
    字符串 StringUtils.isEmpty("") StringUtils.isNotEmpty(); StringUtils.isBlank(""); //是否为空长度为0或者空白符
    集合 CollectionUtils.isNotEmpty(list);
    数字 NumberUtils.isNumber(); //判断是否为数字

    14. Duplicate 冲突

    15.SQL语句
    select
    case when (p.gid>0 or rscu.user_id>0) then 1 else 0 end as introduction
    from 表名
    模糊查询: and u.nick_name like concat('%',#{nickName},'%')

    16.boolean的结果 可以通过判断相关联
    boolean hasLeadingPlusSign = start == 1 && chars[0] == '+';

    17. 根据传入的类型 找到所有该类型的类的集合
    ApplicationContext.getBeansOfType(Class<T> clazz); return Map<String,T>

    18. JSON数据转化成对应的类
    JSON.parseObject(hit.getSourceAsString(), UserExtDo.class)

    19.三元式
    sb.append(e == this ? "(this Collection)" : e);

    20.
    HashMap 使用 HashMap(int initialCapacity) 初始化, 正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即 loader
    factor)默认为 0.75,如果暂时无法确定初始值大小,请设置为 16(即默认值)

    21.遍历Map
    // 传统的Map迭代方式
    for (Map.Entry<String, Object> entry : infoMap.entrySet()) {
    System.out.println(entry.getKey() + ":" + entry.getValue());
    }
    // JDK8的迭代方式
    infoMap.forEach((key, value) -> {
    System.out.println(key + ":" + value);
    });

  • 相关阅读:
    解放双手,数据库智能调参CDBTune等你来测
    选择:成本和安全?我都要!
    腾讯云Redis全面升级,性能提升400%,可用性高达5个9
    腾讯云数据库TDSQL大咖论道 | 基础软件的过去、现在、未来
    Nginx配置http强制跳转https
    golang从实践到放弃 牧羊人
    基于 libclang 编译 C 文件的坑( error: unknown type name 'uint8_t' )
    在一个数组里过滤掉另一个数组
    接口自动化测试小结
    批处理(BAT)读取目录下所有目录并写入变量中
  • 原文地址:https://www.cnblogs.com/ttaall/p/13189153.html
Copyright © 2020-2023  润新知