`

java8技巧

    博客分类:
  • Java
 
阅读更多

String skuMarkBinary = Integer.toBinaryString(Integer.parseInt(skuMark));

 String value = skuMarkBinary.charAt(skuMarkBinary.length()-index-1)+"";  

 

changeDelivery
updateCargoDelivery 
// post domain event
domainEventPublisher.publish(new CargoBookDomainEvent(cargo));
eventBus里面有register注册方法和决定方法

 

 /**

 * 超级会员

 */

public class SuperVipPayService implements UserPayService, InitializingBean{

    @Override

    public BigDicimal quote(BigDecimal orderPrice){

        return 8折价格;

    } 

    

    @Override

    public void afterPropertiesSet(){

        UserPayServiceStrategyFactory.register("SuperVip", this);

    }

 

 

public class UserPayServiceStrategyFactory{

    private static Map<String, UserPayService> services = new ConcurrentHashMap<String, UserPayService>();
    
    public static UserPayService getByUserType(String type){
        return services.get(type);
    }
    
    public static void register(String userType, UserPayService userPayService){
        Assert.notNull(userType, "userType can't be null");
        services.put(userType, userPayService);
    }
} 


class Entity{
    public Integer id;
    public Integer colA;
    public BigDecimal colB;
    public Object colB;
}
List转Map
Map<Integer, Entity> map = entityList.stream().collect(Collectors.toMap(k->k.getId(), k->k);
分组
Map<Integer, List<Entity>> = entityList.stream().collect(Collectors.groupingBy(Entity::getId);
过滤
List<Entity> = entityList.stream().filter(k -> k.getColA.equals(1)).collect(Collectors.toList());
求和
//decimal
List<Entity> = entityList.stream().map(k -> k.getColB()).reduce(BigDecimal.ZERO, BigDecimal::add) 
//int
 List<Entity> = entityList.stream().mapToInt(k -> k.getColA()).sum()


Sum(*)  group by a, b

Map<String, AdmSelfSkuSaleQtyMEntity> partMergeResult =
batchGoodsSales
        .stream()
        .collect(Collectors.groupingBy(
                x -> x.getGoodsId() + "," + x.getWarehouseId() + "," + x.getSaleMonth(),
                Collectors.reducing(
                        null,
                        x -> x,
                        AdmSelfSkuSaleQtyMEntity::add
                )
        ));


Merge

monthlyResult = Stream
   .concat(monthlyResult.entrySet().stream(), partMergeResult.entrySet().stream())
   .collect(Collectors.toMap(
           Map.Entry::getKey,
           Map.Entry::getValue,
           AdmSelfSkuSaleQtyMEntity::add
   ));

 

 

  1. domain:基础实体类
    |-- domain
    |--|-- entity:存放DO结尾的数据库实体类
    |--|-- bo:存放BO结尾的业务实体类
    |--|-- enums:存放全局的枚举类。

inner-api包目录
|--|-- domain
|--|--|--|-- dto:DTO实体类
|--|--|--|-- query:用于封装请求参数的实体类
|--|--|--|-- enums:枚举类
|--|--|--|-- constant:常量类
|--|-- service:服务接口

 

 

 


1)结果实体类:

(1)service层以BO结尾

(2)mananger层DO结尾

(3)dao层以DO结尾

(4)jsf传输层以DTO结尾

(5)controller层传递给页面以VO结尾

2)请求实体类:

上层向下层提交请求的时候,如果没有封装成对象,则用Param结尾的实体,负责为BO或DO,具体如下:

写请求:

(1)controller层Param结尾

(2)service层BO结尾

(3)mananger层DO结尾

(4)dao层DO结尾

查请求:

(1)controller层Param结尾

(2)service层Query结尾

(3)mananger层Query结尾

(4)dao层Query结尾

实体类转换工具BeanUtils.copyProperties

public OrderBO getById(Integer id) {
    OrderDO orderDO = orderManager.getById(id);
    if (orderDO == null) {
        return null;
    }
    OrderBO orderBO = new OrderBO();
    BeanUtils.copyProperties(orderDO, orderBO);
    return orderBO;
}



public class BeanUtils extends org.springframework.beans.BeanUtils {
 
    public static void copyProperties(Object source, Object target) throws BeansException {
        copyProperties(source, target, null, (String[]) null);
    }
 
 
    private static void copyProperties(Object source, Object target, Class<?> editable, String... ignoreProperties)
            throws BeansException {
 
        Assert.notNull(source, "Source must not be null");
        Assert.notNull(target, "Target must not be null");
 
        Class<?> actualEditable = target.getClass();
        if (editable != null) {
            if (!editable.isInstance(target)) {
                throw new IllegalArgumentException("Target class [" + target.getClass().getName() +
                        "] not assignable to Editable class [" + editable.getName() + "]");
            }
            actualEditable = editable;
        }
        PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable);
        List<String> ignoreList = (ignoreProperties != null) ? Arrays.asList(ignoreProperties) : null;
 
        for (PropertyDescriptor targetPd : targetPds) {
            Method writeMethod = targetPd.getWriteMethod();
            if (writeMethod != null && (ignoreProperties == null || (!ignoreList.contains(targetPd.getName())))) {
                PropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass(), targetPd.getName());
                if (sourcePd != null) {
                    Method readMethod = sourcePd.getReadMethod();
                    if (readMethod != null &&
                            ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) {
                        try {
                            if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {
                                readMethod.setAccessible(true);
                            }
                            Object value = readMethod.invoke(source);
                            if (value != null) {
                                if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {
                                    writeMethod.setAccessible(true);
                                }
                                writeMethod.invoke(target, value);
                            }
                        }
                        catch (Exception ex) {
                            throw new FatalBeanException("Could not copy property '" + targetPd.getName() + "' from source to target", ex);
                        }
                    }
                }
            }
        }
    }
}

 

 客户端提交的数据又问题:

   sattus: 422  ;  messags:密码无效。  校验不通过

 

The 422 (Unprocessable Entity) status code means the server understands the content type of the request entity (hence a 415(Unsupported Media Type) status code is inappropriate), and the syntax of the request entity is correct (thus a 400 (Bad Request) status code is inappropriate) but was unable to process the contained instructions.

 

 

 

 

 

一、

我们不能用常规操作文件的方法来读取ResourceJar.jar中的资源文件res.txt,但可以通过Class类的getResourceAsStream()方法来获取 ,这种方法是如何读取jar中的资源文件的,这一点对于我们来说是透明的。我们将Resource.java改写成:

 

public void getResource() throws IOException{  

        //返回读取指定资源的输入流  

        InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");   

        BufferedReader br=new BufferedReader(new InputStreamReader(is));  

        String s="";  

        while((s=br.readLine())!=null)  

            System.out.println(s);  

    }  

 

(二)

 

x比如test.jar根目录下有个a.txt,可以用下面的代码获取:

 

URL url=new URL("jar:file:/C:/test.jar!/a.txt"); 

InputStream in=url.openStream(); 

byte b[]=new byte[1000]; 

in.read(b);

 

 

 File f=new File("C:/ResourceJar.jar!/resource/res.txt");

当然不可能,因为".../ResourceJar.jar!/resource/...."并不是文件资源定位符的格式 (jar中资源有其专门的URL形式: 

{*}jar:<url>!/

 

 

现在实现

  • 采用流的方式进行处理,同时读取流时设置编码utf-8
  • 使用InputStream inputStream=this.getClass().getResourceAsStream("") 会指定要加载的资源路径与当前类所在包的路径一致。因此能正常读取文件。
分享到:
评论

相关推荐

    java编程技巧典型案例解析

    Java编程技巧典型案例解析 在Java编程领域,掌握高效、实用的编程技巧对于提升代码质量、优化性能以及提高开发效率至关重要。本资料集旨在通过一系列典型示例,深入剖析Java编程中的常见问题及其解决策略,帮助...

    Java编程技巧典型案例解析

    在Java编程领域,掌握高效的编程技巧对于提升代码质量和开发效率至关重要。《Java编程技巧典型案例解析》一书聚焦于这些关键技巧,通过24个精心挑选的源代码案例,深入浅出地展示了Java编程中的精华所在。以下是根据...

    Java8默认方法和多继承Java开发Java经验技巧共8

    Java8的默认方法是语言设计中的一个重要创新,它...通过阅读"Java8默认方法和多继承Java开发Java经验技巧共8页.pdf.zip"这份文档,相信你可以深入理解这两个重要概念,并将其应用到实际项目中,提升你的Java开发技能。

    Java 8编程入门官方教程

    本书主要面向初学者,旨在帮助读者快速掌握Java 8的基础知识和编程技巧,并能够运用这些知识进行实际开发工作。 #### 二、Java 8简介 Java 8是Java平台的一个重要版本,它于2014年3月发布。相比之前的版本,Java 8...

    java-8-tutorial:演示Java 8功能

    这是Java 8功能和增强功能的完整指南。 本指南中的示例已在我们的本地开发环境中进行了测试。 您可以简单地从Github克隆并尝试... Java 8技巧和最佳实践 从我们的Github存储库下载源代码: https://github.com/Ramesh

    java8refers:参考此以获得Java8技巧

    这个压缩包文件“java8refers-main”很可能包含了一些关于Java 8技术的指南、示例代码或者教程,帮助开发者更好地理解和掌握Java 8的核心特性。下面将详细阐述Java 8的关键知识点。 1. **lambda表达式**:Java 8 最...

    Java8的6个问题Java开发Java经验技巧共5页.p

    这里我们将深入探讨Java8的六个关键问题,以及如何在Java开发中运用这些经验技巧。 首先,让我们来看Java8的第一个问题:Lambda表达式。Lambda表达式是Java8最显著的特征之一,它允许我们以简洁的方式编写匿名函数...

    Java8新特性终极指南Java开发Java经验技巧共27

    Java 8是Java语言发展的一个重要里程碑,引入了许多新的特性和改进,极大地提升了开发效率和代码质量。以下是对这些新特性的详细解析: 1. **Lambda表达式**:Java 8最大的变革之一就是引入了Lambda表达式,它使得...

    java分页技巧1

    在实际项目中,如"73_传智播客汤阳光OA项目视频__阶段8__分页技巧__实现第一个分页功能(回复列表中的分页).avi"所示,可能还会涉及到更多细节,例如动态调整每页大小、处理非法页码输入、优化分页组件的用户体验等...

    Java8并行流中自定义线程池操作示例

    Java8并行流中自定义线程池操作示例主要介绍了Java8并行流中自定义线程池操作,结合实例形式分析了并行流的相关概念、定义及自定义线程池的相关操作技巧。 1. 概览 Java8引入了流的概念,流是作为一种对数据执行...

    JMH简介Java开发Java经验技巧共8页.pdf.zi

    【标题】:“JMH简介Java开发Java经验技巧共8页.pdf.zi” 指向的是一份关于Java开发和优化技术的文档,特别提到了Java Microbenchmark Harness(JMH),这是一项强大的性能测试框架,用于Java、JavaScript、JVM语言...

    现代Java技巧——用简单方法解决Java 8和Java 9的困难问题

    在Java SE 8中引入函数式编程概念对于这种古老的面向对象语言来说是一个巨大的变化。 Lambda表达式,方法引用和流从根本上改变了语言的习惯用法,许多开发人员一直试图追赶。 这本《现代Java技巧》相信会对大家有所...

    java 技巧 与 实例

    在学习Java时,掌握一些实用技巧和常见实例能显著提高编程效率。以下是一些关键知识点的详细解释: 1. **字符串处理**: - `String.trim()`:这个方法用于去除字符串两端的空白字符。例如,`String b = " hello ...

    java程序设计技巧1001个实例

    8. **Swing和JavaFX**:这两是Java的图形用户界面(GUI)库。100.010可能通过实例展示了如何使用Swing构建窗口应用程序。 9. **网络编程**:Java提供了丰富的API进行网络编程,如Socket和ServerSocket。100.011可能...

    java poi技巧总结

    Java POI 技巧总结 Java POI 是一个流行的库,允许开发者在Java应用程序中创建、修改和读取Microsoft Office格式的文件,如Excel(.xlsx 和 .xls)。本总结将详细探讨如何利用POI库进行Excel文件的操作,包括创建...

    java 核心技术 高级部分第10版 java 8 介绍

    《Java核心技术:高级部分第10版 - Java 8 介绍》是一本深入探讨Java编程高级特性的权威书籍,特别关注了Java 8这一重要版本的新功能和改进。本书是Java开发者进阶学习的重要资源,旨在帮助读者充分利用Java 8的新...

    JAVA笔试题&面试技巧

    "JAVA笔试题&面试技巧"这个资源显然旨在帮助求职者们提升在这个领域的专业知识和应试能力。以下是一些关键的知识点,涵盖了Java的基础、进阶以及面试策略。 1. **Java基础**: - **语法**:了解基本的Java语法,...

    JAVA程序设计技巧1001例

    在《JAVA程序设计技巧1001例》中,我们深入探讨了Java编程的各种实用技巧和最佳实践,这些实例旨在帮助开发者提升技能,优化代码,提高程序效率。本书覆盖了从基础到高级的广泛主题,适合各个层次的Java开发者学习。...

    java数据库开发技巧

    8. **ORM框架(Object-Relational Mapping)**: Hibernate和MyBatis等ORM框架简化了Java与数据库的交互,通过映射对象和表,降低了代码复杂度,提升了开发效率。 9. **数据库设计优化**:理解范式理论,进行合理的...

    ikm_java_8.pdf

    通过以上分析,我们了解了Java 8中关于多线程安全的一些技巧、JavaScript表单验证的基本原理、如何在Servlet中读取初始化参数以及Swing组件类型的区别。这些知识点对于开发高质量的Java应用程序至关重要。

Global site tag (gtag.js) - Google Analytics