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

server/2024/9/23 11:56:48/

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/server/12663.html

相关文章

行列视(RCV)数据安全如何保障?

答&#xff1a;行列视&#xff08;RCV&#xff09;生产数据应用系统涉及生产、经营、管理等业务的各种指标&#xff0c;数据安全行非常重要&#xff0c;为此&#xff0c;在数据安全方面做了如下管理&#xff1a; 用户安全&#xff0c;采用强用户口令、内网用户限定及绑定设备等…

6大类最新AI工具,共计39个分类梳理!

你好&#xff0c;我是郭震 俗话说&#xff0c;工欲善其事必先利其器&#xff0c;用好AI工具一定事半功倍&#xff01;这也是AI技术革命带给我们最能感知到的地方之一。 这篇文章总结了6大类AI工具&#xff0c;分别包括&#xff1a;问答&#xff0c;图像&#xff0c;视频&#x…

【人工智能】航天科技的未来:探索航天器设计与优化的技术进展

前言 本文探讨了航天科技领域中的重要议题&#xff1a;航天器设计与优化。航天器设计与优化是航天领域中的核心工作之一&#xff0c;涉及到航天器的结构设计、性能优化、动力系统、热控系统等多个方面。本文详细介绍了航天器设计与优化的内容&#xff0c;包括结构设计、性能优化…

git基础教程(10) git push将本地修改推送到远端

git push 命令用于将本地分支的更新推送(上传)到远程仓库。命令的基本语法为: git push [<repository> [<refspec>...]]<refspec>的格式是<+><src>:<dst> 你可以理解成: git push <远程仓库名称> <本地分支名称>:<远…

scss 和css 的区别 scss变量和css变量的区别

scss 和 css 的区别 语法差异&#xff1a; CSS 使用大括号 {} 和分号 ; 来定义样式规则和属性。SCSS 使用了 Sass 的语法&#xff0c;它允许使用类似编程语言的结构&#xff0c;如变量、嵌套规则、混合&#xff08;mixins&#xff09;和继承等。 嵌套规则&#xff1a; 在 SCSS …

架构师系列-MYSQL调优(八)- 索引多表优化案例

用户手机认证表 该表约有11万数据,保存的是通过手机认证后的用户数据关联字段: user_id CREATE TABLE mob_autht (id int(11) NOT NULL AUTO_INCREMENT COMMENT 标识,user_id int(11) NOT NULL COMMENT 用户标识,mobile varchar(11) NOT NULL COMMENT 手机号码,seevc_pwd varc…

ARM GPIO模拟IIC获取温湿度

IIC.c #include "iic.h" extern void printf(const char *fmt, ...); /** 函数名 &#xff1a; delay_us* 函数功能&#xff1a;延时函数* 函数参数&#xff1a;无* 函数返回值&#xff1a;无* */ void delay_us(void) {unsigned int i 2000;while (i--); } /** 函…

MySQL-索引

黑马程序员JavaWeb开发教程 文章目录 一、索引-介绍二、索引-结构三、索引-操作语法1、语法2、练习3、 注意事项 一、索引-介绍 概念&#xff1a;索引是帮助数据库高效获取数据的数据结构优缺点 优点&#xff1a; 提高数据查询的效率&#xff0c;降低数据库的IO成本通过索引列…