【commons-beanutils专题】003- PropertyUtils 专题

文章目录

  • 【commons-beanutils专题】003- PropertyUtils 专题
  • 一、准备
    • 0、PropertyUtils 主要作用
    • 1、引入 commons-beanutils 依赖
    • 2、pom.xml 文件
    • 3、实体类
    • 4、前置代码
  • 二、暂时不知道有什么用的功能
    • 1、清空所有属性的描述信息
    • 2、重置 BeanIntrospectors 的缓存属性描述符信息
    • 3、添加一个 BeanIntrospector
    • 4、移除一个 BeanIntrospector
  • 三、浅拷贝
  • 四、获取对象的属性描述
  • 五、获取属性值
    • 1、指定索引属性值,适用于属性是 list 或 array 的情况
    • 2、指定索引属性值,适用于属性是 list 或 array 的情况
    • 3、获取 map 属性,适用于属性是 map 的情况
    • 4、获取 map 属性,适用于属性是 map 的情况
    • 5、获取嵌套属性,属性是对象的情况
    • 6、获取属性
  • 六、获取属性描述
    • 1、获取属性描述 - 通过对象
    • 2、获取属性描述 - 通过类
    • 3、获取属性描述数组
  • 七、获取属性类型
    • 1、获取已为此属性注册的任何显式 PropertyEditor Class
    • 2、获取属性类型
  • 八、判断属性可读可写
    • 1、判断一个属性是否为可读属性
    • 2、判断一个属性是否为可写属性
  • 九、设置属性值
    • 1、设置指定索引属性值,适用于属性是list或者array的情况
    • 2、设置指定索引属性值,适用于属性是list或者array的情况
    • 3、设置指定属性值,适用于属性是 map 的情况
    • 4、设置指定属性值,适用于属性是 map 的情况
    • 5、设置属性值
    • 6、设置简单属性值
  • 十、完整代码
  • 十一、常见错误
    • 1、java.lang.NoSuchMethodException: Property 'name' has no getter method in class 'class com.zibo.zibo2022.main.Tag'
      • 答案:

一、准备

0、PropertyUtils 主要作用

主要用于通过反射技术操作对象的属性:获取属性、设置属性、获取属性描述、浅拷贝等

1、引入 commons-beanutils 依赖

<!--引入依赖commons-beanutils-->
<dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.4</version>
</dependency>

2、pom.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.1</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.zibo</groupId><artifactId>zibo2022</artifactId><version>0.0.1-SNAPSHOT</version><name>zibo2022</name><description>zibo2022</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--引入依赖commons-beanutils--><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.4</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.1</version><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

3、实体类

package com.zibo.zibo2022.property_utils.entity;import java.util.List;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @author zibo* @date 2022/7/14 0014 18:41*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {/*** 名字*/private String name;/*** 年龄*/private Integer age;/*** 地址*/private String address;/*** 朋友*/private Friend friend;@Data@NoArgsConstructor@AllArgsConstructorpublic static class Friend {private String name;private Integer age;private String address;}/*** 爱好*/private List<String> hobbies;/*** 学校*/private Map<String, String> schoolMap;}

4、前置代码

Map<String, String> schoolMap = new HashMap<>();
schoolMap.put("高中", "某高中");
schoolMap.put("大学", "某大学");
Student student = new Student("訾博", 22, "北京", new Student.Friend("刘备", 26, "北京"), Arrays.asList("篮球", "足球"), schoolMap);

二、暂时不知道有什么用的功能

1、清空所有属性的描述信息

// 1、清空所有属性的描述信息
// 说明:清除任何类加载器加载的所有类的任何缓存属性描述符信息。这在丢弃类加载器以实现类重新加载的情况下很有用。
PropertyUtils.clearDescriptors();

2、重置 BeanIntrospectors 的缓存属性描述符信息

// 2、重置 BeanIntrospectors 的缓存属性描述符信息
// 说明:将注册的 BeanIntrospector 对象重置为初始默认状态。
PropertyUtils.resetBeanIntrospectors();

3、添加一个 BeanIntrospector

// 3、添加一个 BeanIntrospector
// 说明:添加一个 BeanIntrospector ,当需要获取类的属性描述符时调用该对象。
PropertyUtils.addBeanIntrospector(DefaultBeanIntrospector.INSTANCE);

4、移除一个 BeanIntrospector

// 4、移除一个 BeanIntrospector
// 说明:移除指定的 BeanIntrospector 。
BeanIntrospector instance = DefaultBeanIntrospector.INSTANCE;
PropertyUtils.removeBeanIntrospector(instance);

三、浅拷贝

// 5、复制属性
// 说明:经测试这是一种浅拷贝!
try {Student student1 = new Student();// 参数:目标对象,源对象PropertyUtils.copyProperties(student1, student);System.out.println(student);// Student(name=訾博, age=22, address=北京, friend=Student.Friend(name=刘备, age=26, address=北京), hobbies=[篮球, 足球], schoolMap={大学=某大学, 高中=某高中})System.out.println(student1);// Student(name=訾博, age=22, address=北京, friend=Student.Friend(name=刘备, age=26, address=北京), hobbies=[篮球, 足球], schoolMap={大学=某大学, 高中=某高中})
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

四、获取对象的属性描述

// 6、获取属性描述
// 说明:经测试发现,含所有属性和 class 属性
try {Map<String, Object> map = PropertyUtils.describe(student);map.forEach((key, value) -> System.out.println(key + ":" + value));// address:北京// hobbies:[篮球, 足球]// friend:Student.Friend(name=刘备, age=26, address=北京)// name:訾博// schoolMap:{大学=某大学, 高中=某高中}// class:class com.zibo.zibo2022.property_utils.entity.Student// age:22
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

五、获取属性值

1、指定索引属性值,适用于属性是 list 或 array 的情况

// 7、指定索引属性值,适用于属性是 list 或 array 的情况
try {Object property = PropertyUtils.getIndexedProperty(student, "hobbies[0]");System.out.println(property); // 篮球
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

2、指定索引属性值,适用于属性是 list 或 array 的情况

// 8、指定索引属性值,适用于属性是 list 或 array 的情况
try {Object property = PropertyUtils.getIndexedProperty(student, "hobbies", 1);System.out.println(property); // 足球
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

3、获取 map 属性,适用于属性是 map 的情况

// 9、获取 map 属性,适用于属性是 map 的情况
try {Object property = PropertyUtils.getMappedProperty(student, "schoolMap(高中)");System.out.println(property); // 某高中
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

4、获取 map 属性,适用于属性是 map 的情况

// 10、获取 map 属性,适用于属性是 map 的情况
try {Object property = PropertyUtils.getMappedProperty(student, "schoolMap", "大学");System.out.println(property); // 某大学
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

5、获取嵌套属性,属性是对象的情况

// 11、获取嵌套属性,属性是对象的情况
try {Object property = PropertyUtils.getNestedProperty(student, "friend.name");System.out.println(property); // 刘备
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

6、获取属性

// 12、获取属性
try {Object property = PropertyUtils.getProperty(student, "name");System.out.println(property); // 訾博
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

六、获取属性描述

1、获取属性描述 - 通过对象

// 13、获取属性描述 - 通过对象
try {PropertyDescriptor propertyDescriptor = PropertyUtils.getPropertyDescriptor(student, "name");System.out.println(propertyDescriptor);// 好强大呀!// java.beans.PropertyDescriptor[name=name; values={expert=false; visualUpdate=false; hidden=false;// enumerationValues=[Ljava.lang.Object;@204f30ec; required=false}; propertyType=class java.lang.String;// readMethod=public java.lang.String com.zibo.zibo2022.property_utils.entity.Student.getName();// writeMethod=public void com.zibo.zibo2022.property_utils.entity.Student.setName(java.lang.String)]
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

2、获取属性描述 - 通过类

// 14、获取属性描述 - 通过类
try {PropertyDescriptor propertyDescriptor = PropertyUtils.getPropertyDescriptor(Student.class, "name");System.out.println(propertyDescriptor);// java.beans.PropertyDescriptor[name=name; values={expert=false; visualUpdate=false; hidden=false;// enumerationValues=[Ljava.lang.Object;@527740a2; required=false}; propertyType=class java.lang.String;// readMethod=public java.lang.String java.lang.Class.getName()]
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

3、获取属性描述数组

// 15、获取属性描述数组
PropertyDescriptor[] propertyDescriptors = PropertyUtils.getPropertyDescriptors(student);
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {System.out.println(propertyDescriptor); // 太多了,不写了
}

七、获取属性类型

1、获取已为此属性注册的任何显式 PropertyEditor Class

// 16、获取已为此属性注册的任何显式 PropertyEditor Class
try {Class<?> propertyEditorClass = PropertyUtils.getPropertyEditorClass(student, "name");System.out.println(propertyEditorClass); // 此处返回为 null ,具体不知道何用
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

2、获取属性类型

// 17、获取属性类型
try {Class<?> propertyType = PropertyUtils.getPropertyType(student, "name");System.out.println(propertyType); // class java.lang.String
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

八、判断属性可读可写

1、判断一个属性是否为可读属性

// 18、判断一个属性是否为可读属性
boolean isReadable = PropertyUtils.isReadable(student, "name");
System.out.println(isReadable); // true

2、判断一个属性是否为可写属性

// 19、判断一个属性是否为可写属性
boolean isWriteable = PropertyUtils.isWriteable(student, "name");
System.out.println(isWriteable); // true

九、设置属性值

1、设置指定索引属性值,适用于属性是list或者array的情况

// 20、设置指定索引属性值,适用于属性是list或者array的情况
try {PropertyUtils.setIndexedProperty(student, "hobbies[0]", "da篮球");System.out.println(student.getHobbies()); // [da篮球, 足球]
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

2、设置指定索引属性值,适用于属性是list或者array的情况

// 21、设置指定索引属性值,适用于属性是list或者array的情况
try {PropertyUtils.setIndexedProperty(student, "hobbies", 1, "足da球");System.out.println(student.getHobbies()); // [da篮球, 足da球]
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

3、设置指定属性值,适用于属性是 map 的情况

// 22、设置指定属性值,适用于属性是 map 的情况
try {PropertyUtils.setMappedProperty(student, "schoolMap(高中)", "某da高中");System.out.println(student.getSchoolMap()); // {大学=某大学, 高中=某da高中}
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

4、设置指定属性值,适用于属性是 map 的情况

// 23、设置指定属性值,适用于属性是 map 的情况
try {PropertyUtils.setMappedProperty(student, "schoolMap", "大学", "某da大学");System.out.println(student.getSchoolMap()); // {大学=某da大学, 高中=某da高中}
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

5、设置属性值

// 24、设置属性值
try {PropertyUtils.setProperty(student, "name", "某da学生");System.out.println(student.getName()); // 某da学生
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

6、设置简单属性值

// 25、设置属性值
try {PropertyUtils.setSimpleProperty(student, "name", "某da&da学生");System.out.println(student.getName()); // 某da学生
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);
}

十、完整代码

package com.zibo.zibo2022.property_utils.main;import com.zibo.zibo2022.property_utils.entity.Student;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanIntrospector;
import org.apache.commons.beanutils.DefaultBeanIntrospector;
import org.apache.commons.beanutils.PropertyUtils;/*** @author zibo* @date 2022/7/14 0014 18:41*/
public class Main {public static void main(String[] args) {Map<String, String> schoolMap = new HashMap<>();schoolMap.put("高中", "某高中");schoolMap.put("大学", "某大学");Student student = new Student("訾博", 22, "北京", new Student.Friend("刘备", 26, "北京"), Arrays.asList("篮球", "足球"), schoolMap);// 看不懂,暂且搁置// 1、清空所有属性的描述信息// 说明:清除任何类加载器加载的所有类的任何缓存属性描述符信息。这在丢弃类加载器以实现类重新加载的情况下很有用。PropertyUtils.clearDescriptors();// 2、重置 BeanIntrospectors 的缓存属性描述符信息// 说明:将注册的 BeanIntrospector 对象重置为初始默认状态。PropertyUtils.resetBeanIntrospectors();// 3、添加一个 BeanIntrospector// 说明:添加一个 BeanIntrospector ,当需要获取类的属性描述符时调用该对象。PropertyUtils.addBeanIntrospector(DefaultBeanIntrospector.INSTANCE);// 4、移除一个 BeanIntrospector// 说明:移除指定的 BeanIntrospector 。BeanIntrospector instance = DefaultBeanIntrospector.INSTANCE;PropertyUtils.removeBeanIntrospector(instance);// 5、复制属性// 说明:经测试这是一种浅拷贝!try {Student student1 = new Student();// 参数:目标对象,源对象PropertyUtils.copyProperties(student1, student);System.out.println(student);// Student(name=訾博, age=22, address=北京, friend=Student.Friend(name=刘备, age=26, address=北京), hobbies=[篮球, 足球], schoolMap={大学=某大学, 高中=某高中})System.out.println(student1);// Student(name=訾博, age=22, address=北京, friend=Student.Friend(name=刘备, age=26, address=北京), hobbies=[篮球, 足球], schoolMap={大学=某大学, 高中=某高中})} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 6、获取属性描述// 说明:经测试发现,含所有属性和 class 属性try {Map<String, Object> map = PropertyUtils.describe(student);map.forEach((key, value) -> System.out.println(key + ":" + value));// address:北京// hobbies:[篮球, 足球]// friend:Student.Friend(name=刘备, age=26, address=北京)// name:訾博// schoolMap:{大学=某大学, 高中=某高中}// class:class com.zibo.zibo2022.property_utils.entity.Student// age:22} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 7、指定索引属性值,适用于属性是 list 或 array 的情况try {Object property = PropertyUtils.getIndexedProperty(student, "hobbies[0]");System.out.println(property); // 篮球} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 8、指定索引属性值,适用于属性是 list 或 array 的情况try {Object property = PropertyUtils.getIndexedProperty(student, "hobbies", 1);System.out.println(property); // 足球} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 9、获取 map 属性,适用于属性是 map 的情况try {Object property = PropertyUtils.getMappedProperty(student, "schoolMap(高中)");System.out.println(property); // 某高中} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 10、获取 map 属性,适用于属性是 map 的情况try {Object property = PropertyUtils.getMappedProperty(student, "schoolMap", "大学");System.out.println(property); // 某大学} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 11、获取嵌套属性,属性是对象的情况try {Object property = PropertyUtils.getNestedProperty(student, "friend.name");System.out.println(property); // 刘备} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 12、获取属性try {Object property = PropertyUtils.getProperty(student, "name");System.out.println(property); // 訾博} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 13、获取属性描述 - 通过对象try {PropertyDescriptor propertyDescriptor = PropertyUtils.getPropertyDescriptor(student, "name");System.out.println(propertyDescriptor);// 好强大呀!// java.beans.PropertyDescriptor[name=name; values={expert=false; visualUpdate=false; hidden=false;// enumerationValues=[Ljava.lang.Object;@204f30ec; required=false}; propertyType=class java.lang.String;// readMethod=public java.lang.String com.zibo.zibo2022.property_utils.entity.Student.getName();// writeMethod=public void com.zibo.zibo2022.property_utils.entity.Student.setName(java.lang.String)]} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 14、获取属性描述 - 通过类try {PropertyDescriptor propertyDescriptor = PropertyUtils.getPropertyDescriptor(Student.class, "name");System.out.println(propertyDescriptor);// java.beans.PropertyDescriptor[name=name; values={expert=false; visualUpdate=false; hidden=false;// enumerationValues=[Ljava.lang.Object;@527740a2; required=false}; propertyType=class java.lang.String;// readMethod=public java.lang.String java.lang.Class.getName()]} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 15、获取属性描述数组PropertyDescriptor[] propertyDescriptors = PropertyUtils.getPropertyDescriptors(student);for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {System.out.println(propertyDescriptor); // 太多了,不写了}// 16、获取已为此属性注册的任何显式 PropertyEditor Classtry {Class<?> propertyEditorClass = PropertyUtils.getPropertyEditorClass(student, "name");System.out.println(propertyEditorClass); // 此处返回为 null ,具体不知道何用} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 17、获取属性类型try {Class<?> propertyType = PropertyUtils.getPropertyType(student, "name");System.out.println(propertyType); // class java.lang.String} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 18、判断一个属性是否为可读属性boolean isReadable = PropertyUtils.isReadable(student, "name");System.out.println(isReadable); // true// 19、判断一个属性是否为可写属性boolean isWriteable = PropertyUtils.isWriteable(student, "name");System.out.println(isWriteable); // true// 20、设置指定索引属性值,适用于属性是list或者array的情况try {PropertyUtils.setIndexedProperty(student, "hobbies[0]", "da篮球");System.out.println(student.getHobbies()); // [da篮球, 足球]} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 21、设置指定索引属性值,适用于属性是list或者array的情况try {PropertyUtils.setIndexedProperty(student, "hobbies", 1, "足da球");System.out.println(student.getHobbies()); // [da篮球, 足da球]} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 22、设置指定属性值,适用于属性是 map 的情况try {PropertyUtils.setMappedProperty(student, "schoolMap(高中)", "某da高中");System.out.println(student.getSchoolMap()); // {大学=某大学, 高中=某da高中}} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 23、设置指定属性值,适用于属性是 map 的情况try {PropertyUtils.setMappedProperty(student, "schoolMap", "大学", "某da大学");System.out.println(student.getSchoolMap()); // {大学=某da大学, 高中=某da高中}} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 24、设置属性值try {PropertyUtils.setProperty(student, "name", "某da学生");System.out.println(student.getName()); // 某da学生} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}// 25、设置属性值try {PropertyUtils.setSimpleProperty(student, "name", "某da&da学生");System.out.println(student.getName()); // 某da学生} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {throw new RuntimeException(e);}}}

十一、常见错误

1、java.lang.NoSuchMethodException: Property ‘name’ has no getter method in class ‘class com.zibo.zibo2022.main.Tag’

答案:

用BeanUtils.getProperty获取属性的类必须是public,否则会报此错误!

【commons-beanutils专题】003- PropertyUtils 专题相关推荐

  1. BeanUtils.copyProperties VS PropertyUtils.copyProperties

    1. 通过反射将一个对象的值赋值个另外一个对象(前提是对象中属性的名字相同). 2. BeanUtils.copyProperties(obj1,obj2); 经常闹混不知道是谁给谁赋值,无意中先到& ...

  2. Commons BeanUtils包学习2

    2019独角兽企业重金招聘Python工程师标准>>> Commons BeanUtils包学习2 博客分类: 中间件 java 一.简介: BeanUtils提供对 Java反射和 ...

  3. beanutil 批量copy_Apache Commons Beanutils对象属性批量复制(pseudo-singleton)

    Apache Commons Beanutils为开源软件,可在Apache官网http://commons.apache.org/proper/commons-beanutils/download_ ...

  4. 二次函数回归方程_高三专题||【导数专题四】利用导数研究函数图形专项习题...

    · 识别左边二维码 下载材料 [答案] 识别二维码,下载材料 材料内容: 适合范围: 01 高三 [高三]||专题:导数在研究函数单调性中的应用 [高三]||专题:含参数导数的专题问题 高三||[专题 ...

  5. [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置

    LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...

  6. BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别

    转自:http://www.cnblogs.com/fayf/articles/1272982.html 一.简介:BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对J ...

  7. [ 浙江大学 程序设计专题 ] 四个专题代码 报告 PPT共享

    [原创]转载请注明出处,请勿用于作弊 专题一: 链接: https://pan.baidu.com/s/11xCwvuPHDkTPeOB_yzJWnw 提取码: prup 专题二: 链接: https ...

  8. 【mysql优化专题】本专题终极总结(共12篇)

    本专题目录如下: 一.为什么要进行mysql优化?(重点) 二.增删改优化,多数人都会忽略的优化 三.关于单表查询,可以这么优化 四.关于多表查询,不得不看的优化 五.索引优化(重点中的重点) 六.表 ...

  9. 机械设备行业专题:摩托车专题-大排量和电动化新兴赛道正在崛起

    本期内容提要:   本周专题:摩托车种类较多,燃油车目前仍是主流,仍以小排量为主. 2020 年我国摩托车总销量中占比最大的是 50-150ml 排量的摩托车,占 比达到 71%,其次是 150-2 ...

  10. [4G5G专题-1]:专题导读

    目录 1. 专题概述 2. 5G总体架构 3. 5G协议栈 4. 主要接口 5. 协议标准 6. 专题结构划分 6. 其他参考资料 1. 专题概述 由于5G共用了4G大部分的无线接入网的技术标准 ,因 ...

最新文章

  1. AI最佳论文都在这里了!(非常全,快领!)
  2. 在从1到n的正数中1出现的次数
  3. vijos1056-图形面积【离散化】
  4. python切片操作的几种格式_【Python杂记】第四篇:序列切片
  5. j计算机专业英语题库,计算机专业英语单词习题
  6. 解决方案:OpenResty 网站首页数据缓存
  7. 【嵌入式设计】嵌入式低功耗设计
  8. java list填入table_JavaFX从ObservableList填充TableView
  9. js的基本类型有哪些?引用类型有哪些?(二)------null和undefined的区别
  10. 51单片机入门——LCD1602
  11. python 调用海康linux下psdatacall_demo,实现获取视频码流并返回到python,以及上传信息到人脸库的方法
  12. Android 获取文件后缀名
  13. 面试官问“你还有什么需要了解的吗”——应该这样回答
  14. RocketMQ(消息中间件)
  15. 爱快做无线打印服务器,听说爱快路由器也支持NAS了?
  16. Django/Python发送HTML邮件 (包含图片)
  17. ms17-010(永恒之蓝)漏洞利用
  18. [区块链笔记1] 入坑区块链 智能合约solidity基础
  19. 记时,耗时,Stopwatch
  20. 贪玩蓝月服务器维护需多少时间,贪玩蓝月手游冠军1804服开服时间表_贪玩蓝月手游新区开服预告_第一手游网手游开服表...

热门文章

  1. 航空三字代码表_国际国内城市三字代码查询-城市航空代码表;
  2. 苹果手表出现,请在iphone 打开apple watch 应用,前生Passcode,轻点密码重试
  3. 解决vue+php跨域问题
  4. linux下可执行文件无法执行问题定位排查
  5. Ubuntu使用总结二
  6. linux教程 课件ppt,Linux操作系统实用教程全集 教学课件 中文PPT版
  7. 局部阈值分割法matlab,求matlab图像直方图阈值分割算法(包含预处理步骤)
  8. InfoPath基础应用教程-2 表单中的规则(1)
  9. MCU_ZigBee协议栈相关函数总结
  10. 9.深入浅出:集成运放内部电路分析——参考《模拟电子技术基础》清华大学华成英主讲