java:基于guava ClassPath工具实现基于包名(package)的类扫描

news/2024/9/22 16:03:36/

google的guava库提供了一个类路径扫描的实用工具ClassPath(参见说明: https://github.com/google/guava/wiki/ReflectionExplained#classpath)工具,适用于非android的Java平台搜索类。基于它可以设计一个过滤包名的搜索工具。

导入依赖库

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>20.0</version>
</dependency>

实现代码:GuavaPackageScanner.java

java">import java.io.IOException;
import java.util.LinkedHashSet;import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.common.reflect.ClassPath;
import com.google.common.reflect.ClassPath.ClassInfo;public class GuavaPackageScanner  {private final ClassPath classpath ;private final ClassLoader classLoader;private volatile ImmutableSet<Class<?>> classes;public GuavaPackageScanner() {try {this.classLoader = Thread.currentThread().getContextClassLoader();classpath = ClassPath.from(classLoader);} catch (IOException e) {throw new RuntimeException(e);}}private ImmutableSet<Class<?>> getClasses() {if(null == classes) {synchronized (this) {if(null == classes) {classes = FluentIterable.from(classpath.getResources()).filter(ClassInfo.class).transform(new ClassInfoClassBuilder()).filter(Predicates.notNull()).toSet();System.out.printf("%d classes loaded\n",classes.size());}}}return classes;}public LinkedHashSet<Class<?>> getClasses(final String packagename) throws IOException {return Sets.newLinkedHashSet(Iterables.filter(getClasses(), new PackageFilter(packagename)));}private class ClassInfoClassBuilder implements Function<ClassInfo,Class<?>>{@Overridepublic Class<?> apply(ClassInfo input) {try {return Class.forName(input.getName(), false, classLoader);} catch (Throwable e) {}return null;}};private static class PackageFilter implements Predicate<Class<?>>{private String packagename;public PackageFilter(String packagename) {this.packagename = packagename;}@Overridepublic boolean apply(Class<?> input) {return input.getPackage().getName().startsWith(packagename);}}
}

调用示例:
PackageScannerTest.java


import static org.junit.Assert.*;import java.util.LinkedHashSet;import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class PackageScannerTest {public static final GuavaPackageScanner GUAVA_PACKAGE_SCANNER = new GuavaPackageScanner();@Testpublic void test6GuavaGetClasses() {try {/** 搜索com.google.common.base包下的所有类输出类名 */ LinkedHashSet<Class<?>> urls = GUAVA_PACKAGE_SCANNER.getClasses("com.google.common.base");for(Class<?> url:urls) {System.out.printf("class:%s\n",url);}System.out.printf("class count:%d\n",urls.size());} catch (Throwable e) {e.printStackTrace();fail();}}}

输出:

3677 classes loaded
class:class com.google.common.base.Absent
class:class com.google.common.base.AbstractIterator 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . A b s t r a c t I t e r a t o r 1 class:class com.google.common.base.AbstractIterator 1class:classcom.google.common.base.AbstractIteratorState
class:class com.google.common.base.AbstractIterator
class:class com.google.common.base.Ascii
class:class com.google.common.base.CaseFormat$1
class:class com.google.common.base.CaseFormat$2
class:class com.google.common.base.CaseFormat$3
class:class com.google.common.base.CaseFormat$4
class:class com.google.common.base.CaseFormat 5 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C a s e F o r m a t 5 class:class com.google.common.base.CaseFormat 5class:classcom.google.common.base.CaseFormatStringConverter
class:class com.google.common.base.CaseFormat
class:class com.google.common.base.CharMatcher 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r 1 class:class com.google.common.base.CharMatcher 1class:classcom.google.common.base.CharMatcherAnd
class:class com.google.common.base.CharMatcher A n y c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r Any class:class com.google.common.base.CharMatcher Anyclass:classcom.google.common.base.CharMatcherAnyOf
class:class com.google.common.base.CharMatcher A s c i i c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r Ascii class:class com.google.common.base.CharMatcher Asciiclass:classcom.google.common.base.CharMatcherBitSetMatcher
class:class com.google.common.base.CharMatcher B r e a k i n g W h i t e s p a c e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r BreakingWhitespace class:class com.google.common.base.CharMatcher BreakingWhitespaceclass:classcom.google.common.base.CharMatcherDigit
class:class com.google.common.base.CharMatcher F a s t M a t c h e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r FastMatcher class:class com.google.common.base.CharMatcher FastMatcherclass:classcom.google.common.base.CharMatcherForPredicate
class:class com.google.common.base.CharMatcher I n R a n g e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r InRange class:class com.google.common.base.CharMatcher InRangeclass:classcom.google.common.base.CharMatcherInvisible
class:class com.google.common.base.CharMatcher I s c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r Is class:class com.google.common.base.CharMatcher Isclass:classcom.google.common.base.CharMatcherIsEither
class:class com.google.common.base.CharMatcher I s N o t c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r IsNot class:class com.google.common.base.CharMatcher IsNotclass:classcom.google.common.base.CharMatcherJavaDigit
class:class com.google.common.base.CharMatcher J a v a I s o C o n t r o l c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r JavaIsoControl class:class com.google.common.base.CharMatcher JavaIsoControlclass:classcom.google.common.base.CharMatcherJavaLetter
class:class com.google.common.base.CharMatcher J a v a L e t t e r O r D i g i t c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r JavaLetterOrDigit class:class com.google.common.base.CharMatcher JavaLetterOrDigitclass:classcom.google.common.base.CharMatcherJavaLowerCase
class:class com.google.common.base.CharMatcher J a v a U p p e r C a s e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r JavaUpperCase class:class com.google.common.base.CharMatcher JavaUpperCaseclass:classcom.google.common.base.CharMatcherNamedFastMatcher
class:class com.google.common.base.CharMatcher N e g a t e d c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r Negated class:class com.google.common.base.CharMatcher Negatedclass:classcom.google.common.base.CharMatcherNegatedFastMatcher
class:class com.google.common.base.CharMatcher N o n e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r None class:class com.google.common.base.CharMatcher Noneclass:classcom.google.common.base.CharMatcherOr
class:class com.google.common.base.CharMatcher R a n g e s M a t c h e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C h a r M a t c h e r RangesMatcher class:class com.google.common.base.CharMatcher RangesMatcherclass:classcom.google.common.base.CharMatcherSingleWidth
class:class com.google.common.base.CharMatcher$Whitespace
class:class com.google.common.base.CharMatcher
class:class com.google.common.base.Charsets
class:class com.google.common.base.CommonMatcher
class:class com.google.common.base.CommonPattern
class:class com.google.common.base.Converter$1$1
class:class com.google.common.base.Converter 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C o n v e r t e r 1 class:class com.google.common.base.Converter 1class:classcom.google.common.base.ConverterConverterComposition
class:class com.google.common.base.Converter F u n c t i o n B a s e d C o n v e r t e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C o n v e r t e r FunctionBasedConverter class:class com.google.common.base.Converter FunctionBasedConverterclass:classcom.google.common.base.ConverterIdentityConverter
class:class com.google.common.base.Converter R e v e r s e C o n v e r t e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . C o n v e r t e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . D e f a u l t s c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . E n u m s ReverseConverter class:class com.google.common.base.Converter class:class com.google.common.base.Defaults class:class com.google.common.base.Enums ReverseConverterclass:classcom.google.common.base.Converterclass:classcom.google.common.base.Defaultsclass:classcom.google.common.base.EnumsStringConverter
class:class com.google.common.base.Enums
class:class com.google.common.base.Equivalence 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . E q u i v a l e n c e 1 class:class com.google.common.base.Equivalence 1class:classcom.google.common.base.EquivalenceEquals
class:class com.google.common.base.Equivalence E q u i v a l e n t T o P r e d i c a t e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . E q u i v a l e n c e EquivalentToPredicate class:class com.google.common.base.Equivalence EquivalentToPredicateclass:classcom.google.common.base.EquivalenceIdentity
class:class com.google.common.base.Equivalence W r a p p e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . E q u i v a l e n c e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . E x t r a O b j e c t s M e t h o d s F o r W e b c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . F i n a l i z a b l e P h a n t o m R e f e r e n c e c l a s s : i n t e r f a c e c o m . g o o g l e . c o m m o n . b a s e . F i n a l i z a b l e R e f e r e n c e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . F i n a l i z a b l e R e f e r e n c e Q u e u e Wrapper class:class com.google.common.base.Equivalence class:class com.google.common.base.ExtraObjectsMethodsForWeb class:class com.google.common.base.FinalizablePhantomReference class:interface com.google.common.base.FinalizableReference class:class com.google.common.base.FinalizableReferenceQueue Wrapperclass:classcom.google.common.base.Equivalenceclass:classcom.google.common.base.ExtraObjectsMethodsForWebclass:classcom.google.common.base.FinalizablePhantomReferenceclass:interfacecom.google.common.base.FinalizableReferenceclass:classcom.google.common.base.FinalizableReferenceQueueDecoupledLoader
class:class com.google.common.base.FinalizableReferenceQueue D i r e c t L o a d e r c l a s s : i n t e r f a c e c o m . g o o g l e . c o m m o n . b a s e . F i n a l i z a b l e R e f e r e n c e Q u e u e DirectLoader class:interface com.google.common.base.FinalizableReferenceQueue DirectLoaderclass:interfacecom.google.common.base.FinalizableReferenceQueueFinalizerLoader
class:class com.google.common.base.FinalizableReferenceQueue$SystemLoader
class:class com.google.common.base.FinalizableReferenceQueue
class:class com.google.common.base.FinalizableSoftReference
class:class com.google.common.base.FinalizableWeakReference
class:interface com.google.common.base.Function
class:class com.google.common.base.FunctionalEquivalence
class:class com.google.common.base.Functions 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . F u n c t i o n s 1 class:class com.google.common.base.Functions 1class:classcom.google.common.base.FunctionsConstantFunction
class:class com.google.common.base.Functions F o r M a p W i t h D e f a u l t c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . F u n c t i o n s ForMapWithDefault class:class com.google.common.base.Functions ForMapWithDefaultclass:classcom.google.common.base.FunctionsFunctionComposition
class:class com.google.common.base.Functions F u n c t i o n F o r M a p N o D e f a u l t c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . F u n c t i o n s FunctionForMapNoDefault class:class com.google.common.base.Functions FunctionForMapNoDefaultclass:classcom.google.common.base.FunctionsIdentityFunction
class:class com.google.common.base.Functions P r e d i c a t e F u n c t i o n c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . F u n c t i o n s PredicateFunction class:class com.google.common.base.Functions PredicateFunctionclass:classcom.google.common.base.FunctionsSupplierFunction
class:class com.google.common.base.Functions T o S t r i n g F u n c t i o n c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . F u n c t i o n s c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . J d k P a t t e r n ToStringFunction class:class com.google.common.base.Functions class:class com.google.common.base.JdkPattern ToStringFunctionclass:classcom.google.common.base.Functionsclass:classcom.google.common.base.JdkPatternJdkMatcher
class:class com.google.common.base.JdkPattern
class:class com.google.common.base.Joiner$1
class:class com.google.common.base.Joiner$2
class:class com.google.common.base.Joiner 3 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . J o i n e r 3 class:class com.google.common.base.Joiner 3class:classcom.google.common.base.JoinerMapJoiner
class:class com.google.common.base.Joiner
class:class com.google.common.base.MoreObjects 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . M o r e O b j e c t s 1 class:class com.google.common.base.MoreObjects 1class:classcom.google.common.base.MoreObjectsToStringHelper V a l u e H o l d e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . M o r e O b j e c t s ValueHolder class:class com.google.common.base.MoreObjects ValueHolderclass:classcom.google.common.base.MoreObjectsToStringHelper
class:class com.google.common.base.MoreObjects
class:class com.google.common.base.Objects 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . O b j e c t s 1 class:class com.google.common.base.Objects 1class:classcom.google.common.base.ObjectsToStringHelper V a l u e H o l d e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . O b j e c t s ValueHolder class:class com.google.common.base.Objects ValueHolderclass:classcom.google.common.base.ObjectsToStringHelper
class:class com.google.common.base.Objects
class:class com.google.common.base.Optional$1$1
class:class com.google.common.base.Optional$1
class:class com.google.common.base.Optional
class:class com.google.common.base.PairwiseEquivalence
class:interface com.google.common.base.PatternCompiler
class:class com.google.common.base.Platform 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P l a t f o r m 1 class:class com.google.common.base.Platform 1class:classcom.google.common.base.PlatformJdkPatternCompiler
class:class com.google.common.base.Platform
class:class com.google.common.base.Preconditions
class:interface com.google.common.base.Predicate
class:class com.google.common.base.Predicates 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s 1 class:class com.google.common.base.Predicates 1class:classcom.google.common.base.PredicatesAndPredicate
class:class com.google.common.base.Predicates C o m p o s i t i o n P r e d i c a t e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s CompositionPredicate class:class com.google.common.base.Predicates CompositionPredicateclass:classcom.google.common.base.PredicatesContainsPatternFromStringPredicate
class:class com.google.common.base.Predicates C o n t a i n s P a t t e r n P r e d i c a t e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s ContainsPatternPredicate class:class com.google.common.base.Predicates ContainsPatternPredicateclass:classcom.google.common.base.PredicatesInPredicate
class:class com.google.common.base.Predicates I n s t a n c e O f P r e d i c a t e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s InstanceOfPredicate class:class com.google.common.base.Predicates InstanceOfPredicateclass:classcom.google.common.base.PredicatesIsEqualToPredicate
class:class com.google.common.base.Predicates N o t P r e d i c a t e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s NotPredicate class:class com.google.common.base.Predicates NotPredicateclass:classcom.google.common.base.PredicatesObjectPredicate 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s 1 class:class com.google.common.base.Predicates 1class:classcom.google.common.base.PredicatesObjectPredicate 2 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s 2 class:class com.google.common.base.Predicates 2class:classcom.google.common.base.PredicatesObjectPredicate 3 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s 3 class:class com.google.common.base.Predicates 3class:classcom.google.common.base.PredicatesObjectPredicate 4 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s 4 class:class com.google.common.base.Predicates 4class:classcom.google.common.base.PredicatesObjectPredicate
class:class com.google.common.base.Predicates O r P r e d i c a t e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . P r e d i c a t e s OrPredicate class:class com.google.common.base.Predicates OrPredicateclass:classcom.google.common.base.PredicatesSubtypeOfPredicate
class:class com.google.common.base.Predicates
class:class com.google.common.base.Present
class:class com.google.common.base.SmallCharMatcher
class:class com.google.common.base.Splitter$1$1
class:class com.google.common.base.Splitter$1
class:class com.google.common.base.Splitter$2$1
class:class com.google.common.base.Splitter$2
class:class com.google.common.base.Splitter$3$1
class:class com.google.common.base.Splitter$3
class:class com.google.common.base.Splitter$4$1
class:class com.google.common.base.Splitter$4
class:class com.google.common.base.Splitter 5 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . S p l i t t e r 5 class:class com.google.common.base.Splitter 5class:classcom.google.common.base.SplitterMapSplitter
class:class com.google.common.base.Splitter S p l i t t i n g I t e r a t o r c l a s s : i n t e r f a c e c o m . g o o g l e . c o m m o n . b a s e . S p l i t t e r SplittingIterator class:interface com.google.common.base.Splitter SplittingIteratorclass:interfacecom.google.common.base.SplitterStrategy
class:class com.google.common.base.Splitter
class:class com.google.common.base.StandardSystemProperty
class:class com.google.common.base.Stopwatch 1 c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . S t o p w a t c h c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . S t r i n g s c l a s s : i n t e r f a c e c o m . g o o g l e . c o m m o n . b a s e . S u p p l i e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . S u p p l i e r s 1 class:class com.google.common.base.Stopwatch class:class com.google.common.base.Strings class:interface com.google.common.base.Supplier class:class com.google.common.base.Suppliers 1class:classcom.google.common.base.Stopwatchclass:classcom.google.common.base.Stringsclass:interfacecom.google.common.base.Supplierclass:classcom.google.common.base.SuppliersExpiringMemoizingSupplier
class:class com.google.common.base.Suppliers M e m o i z i n g S u p p l i e r c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . S u p p l i e r s MemoizingSupplier class:class com.google.common.base.Suppliers MemoizingSupplierclass:classcom.google.common.base.SuppliersSupplierComposition
class:interface com.google.common.base.Suppliers S u p p l i e r F u n c t i o n c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . S u p p l i e r s SupplierFunction class:class com.google.common.base.Suppliers SupplierFunctionclass:classcom.google.common.base.SuppliersSupplierFunctionImpl
class:class com.google.common.base.Suppliers S u p p l i e r O f I n s t a n c e c l a s s : c l a s s c o m . g o o g l e . c o m m o n . b a s e . S u p p l i e r s SupplierOfInstance class:class com.google.common.base.Suppliers SupplierOfInstanceclass:classcom.google.common.base.SuppliersThreadSafeSupplier
class:class com.google.common.base.Suppliers
class:class com.google.common.base.Throwables$1
class:class com.google.common.base.Throwables
class:class com.google.common.base.Ticker$1
class:class com.google.common.base.Ticker
class:class com.google.common.base.Utf8
class:class com.google.common.base.Verify
class:class com.google.common.base.VerifyException
class:class com.google.common.base.internal.Finalizer
class:interface com.google.common.base.package-info
class count:162


http://www.ppmy.cn/news/1433194.html

相关文章

【matlab】【数值分析】针对特殊矩阵的追赶法的matlab实现

【matlab】【数值分析】针对特殊矩阵的追赶法的matlab实现 三对角循环Toeplitz三对角五对角Latex公式源码文件参考资料 原文链接&#xff1a; 点我&#xff01;这就是本人的博客喵&#xff0c;快来看喵&#xff01; 下面的追赶法算法原理不予介绍&#xff0c;在参考文献中有原…

数据结构(Wrong Question)

一、绪论 1.1 数据结构的基本概念 D 因为抽象数据类型&#xff08;ADT&#xff09;描述了数据的逻辑结构和抽象运算&#xff0c;通常用&#xff08;数据对象&#xff0c;数据对象&#xff0c;基本操作集&#xff09;这样的三元组来表示&#xff0c;从而可构成一个完整的数据结…

web测试基础知识

目录 web系统的基础 web概念(worldwideweb) 网络结构 发展 架构 B/S C/S P2P 工作原理 静态页面 动态页面 web客户端技术 浏览器的核心--渲染引擎 web服务器端技术 web服务器 应用服务器 集群环境 数据库 案例-URL 协议类型 主机名 端口 IP地址 分类 …

(css)鼠标移出样式不变

(css)鼠标移出样式不变 需求&#xff1a;列表鼠标移入切换样式&#xff0c;移出保持不变 <divv-for"(item, index) of newsList":key"index"class"news-list":class"{active : change index}"tabindex"1"mouseenter&quo…

tcp服务器端与多个客户端连接

如果希望Tcp服务器端可以与多个客户端连接&#xff0c;可以这样写&#xff1a; tcpServernew QTcpServer(this);connect(tcpServer,SIGNAL(newConnection()),this,SLOT(onNewConnection())); void MainWindow::onNewConnection() {QTcpSocket *tcpSocket;//TCP通讯的Sockettcp…

kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ producer 实战

1、MQTT介绍 MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议&#xff0c;设计用于连接低带宽、高延迟或不可靠网络的设备。 MQTT 是基于发布/订阅模式&#xff08;Publish/Subscribe&#xff09;的协议&#xff0c;其中设备可以发布消息到一个主题&…

C++:运算符重载和“const”成员

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;运算符重载》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 赋值运算符重载1. 运算符重载2.赋值运算符重载第一个点第二个点&…

分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测

分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测 目录 分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.RIME-BP霜冰优化BP神经网络多特征分类预测&#xff08;Matlab实现完整源码和数据&a…