摘要(Abstract)
配置管理数据库(英语:configuration management database)是与IT系统所有组件相关的信息库。它包含IT基础架构配置项的详细信息。和CMDB类似的信息库已经被IT部门使用了多年,但CMDB的概念源自ITIL。在ITIL里面,CMDB是IT环境下重要部件的权威配置。CMDB帮助组织理解这些部件之间的关系,并跟踪它们的配置。CMDB是ITIL框架的配置管理流程中的基础部分。CMDB的实现一般需要“联合”,即从其它数据源,如资产管理系统,获取数据并纳入CMDB中,期间数据的控制权仍然在数据源。联合有别于ETL,期间数据是复制进CMDB的。
CMDB记录配置项,以及它们的重要属性和之间的关系。配置管理人员通常用如下三个可配置的属性来描述配置项:
技术方面
属主
关系
成功实施CMDB的关键要素是对配置项信息的自动发现,以及对信息变动的跟踪。
CMDB包含元数据,因此和元数据库的概念有重合,这两者都在大型IT机构使用。配置管理强调数据如何保持更新,这是元数据库过去以来的一个弱项。
主题(Topic)
项目(Project)
leopiccionia/easyprint
dmasior/string-builder
rmarinsky/stringBuilderBuilder
RayStudio36/StringBuilder.lua
mebigfatguy/stringb
cavaliercoder/c-stringbuilder
retailcoder/VBA-StringBuilder
Isameru/stringbuilder
mlennig/Chapter1_Arrays_and_Strings
Katherina233/String-StringBuilder--
csj147/csj147.String-StringBuffer-StringBuilder
magiclen/node-stringbuilder
icheckmateu/StringTest
Aaron0525/String-and-Stringbuilder
tylerb33/IATC-PerformanceMeasure
amikunov/Large-Object-Heap-Fix-For-.NET-String-Builder
fan764093434/String-StringBuffur-StringBuilder
onofujoHawk/connection-database-jdbc-query-builder
FolkerKinzel/Strings
darshank15/Advanced-Problem-Solving---Assign-2
joeliu926/StringBuffer
sluizin/MaQiaoStringBuilder
DVR98/ManipulatingStrings
punit81/myapp
javaalgorithm
> descriptors = new HashMap(); private static final String MD = "MessageDigest"; private static final String SIG = "Signature"; private static final String KPG = "KeyPairGenerator"; private static final String KG = "KeyGenerator"; private static final String AGP = "AlgorithmParameters"; private static final String KF = "KeyFactory"; private static final String SKF = "SecretKeyFactory"; private static final String CIP = "Cipher"; private static final String MAC = "Mac"; private static final String KA = "KeyAgreement"; private static final String KS = "KeyStore"; private static final String SR = "SecureRandom"; Token getToken() { return this.token; } public SunPKCS11() { super("SunPKCS11-Dummy", 1.8D, "SunPKCS11-Dummy"); this.LOCK_HANDLER = new Object(); throw new ProviderException("SunPKCS11 requires configuration file argument"); } public SunPKCS11(String var1) { this((String)checkNull(var1), (InputStream)null); } public SunPKCS11(InputStream var1) { this(getDummyConfigName(), (InputStream)checkNull(var1)); } private static T checkNull(T var0) { if (var0 == null) { throw new NullPointerException(); } else { return var0; } } private static synchronized String getDummyConfigName() { int var0 = ++dummyConfigId; return "---DummyConfig-" + var0 + "---"; } /** @deprecated */ @Deprecated public SunPKCS11(String var1, InputStream var2) { super("SunPKCS11-" + Config.getConfig(var1, var2).getName(), 1.8D, Config.getConfig(var1, var2).getDescription()); this.LOCK_HANDLER = new Object(); this.configName = var1; this.config = Config.removeConfig(var1); if (debug != null) { System.out.println("SunPKCS11 loading " + var1); } String var3 = this.config.getLibrary(); String var4 = this.config.getFunctionList(); long var5 = (long)this.config.getSlotID(); int var7 = this.config.getSlotListIndex(); boolean var8 = this.config.getNssUseSecmod(); boolean var9 = this.config.getNssUseSecmodTrust(); Module var10 = null; String var13; if (var8) { Secmod var11 = Secmod.getInstance(); DbMode var12 = this.config.getNssDbMode(); String var14; try { var13 = this.config.getNssLibraryDirectory(); var14 = this.config.getNssSecmodDirectory(); boolean var15 = this.config.getNssOptimizeSpace(); if (var11.isInitialized()) { String var16; if (var14 != null) { var16 = var11.getConfigDir(); if (var16 != null && !var16.equals(var14)) { throw new ProviderException("Secmod directory " + var14 + " invalid, NSS already initialized with " + var16); } } if (var13 != null) { var16 = var11.getLibDir(); if (var16 != null && !var16.equals(var13)) { throw new ProviderException("NSS library directory " + var13 + " invalid, NSS already initialized with " + var16); } } } else { if (var12 != DbMode.NO_DB) { if (var14 == null) { throw new ProviderException("Secmod not initialized and nssSecmodDirectory not specified"); } } else if (var14 != null) { throw new ProviderException("nssSecmodDirectory must not be specified in noDb mode"); } var11.initialize(var12, var14, var13, var15); } } catch (IOException var20) { throw new ProviderException("Could not initialize NSS", var20); } List var26 = var11.getModules(); if (this.config.getShowInfo()) { System.out.println("NSS modules: " + var26); } var14 = this.config.getNssModule(); if (var14 == null) { var10 = var11.getModule(ModuleType.FIPS); if (var10 != null) { var14 = "fips"; } else { var14 = var12 == DbMode.NO_DB ? "crypto" : "keystore"; } } if (var14.equals("fips")) { var10 = var11.getModule(ModuleType.FIPS); var9 = true; var4 = "FC_GetFunctionList"; } else if (var14.equals("keystore")) { var10 = var11.getModule(ModuleType.KEYSTORE); var9 = true; } else if (var14.equals("crypto")) { var10 = var11.getModule(ModuleType.CRYPTO); } else if (var14.equals("trustanchors")) { var10 = var11.getModule(ModuleType.TRUSTANCHOR); var9 = true; } else { if (!var14.startsWith("external-")) { throw new ProviderException("Unknown NSS module: " + var14); } int var27; try { var27 = Integer.parseInt(var14.substring("external-".length())); } catch (NumberFormatException var19) { var27 = -1; } if (var27 < 1) { throw new ProviderException("Invalid external module: " + var14); } int var30 = 0; Iterator var17 = var26.iterator(); while(var17.hasNext()) { Module var18 = (Module)var17.next(); if (var18.getType() == ModuleType.EXTERNAL) { ++var30; if (var30 == var27) { var10 = var18; break; } } } if (var10 == null) { throw new ProviderException("Invalid module " + var14 + ": only " + var30 + " external NSS modules available"); } } if (var10 == null) { throw new ProviderException("NSS module not available: " + var14); } if (var10.hasInitializedProvider()) { throw new ProviderException("Secmod module already configured"); } var3 = var10.libraryName; var7 = var10.slot; } this.nssUseSecmodTrust = var9; this.nssModule = var10; File var23 = new File(var3); if (!var23.getName().equals(var3) && !(new File(var3)).isFile()) { String var25 = "Library " + var3 + " does not exist"; if (this.config.getHandleStartupErrors() == 1) { throw new ProviderException(var25); } else { throw new UnsupportedOperationException(var25); } } else { try { if (debug != null) { debug.println("Initializing PKCS#11 library " + var3); } CK_C_INITIALIZE_ARGS var24 = new CK_C_INITIALIZE_ARGS(); var13 = this.config.getNssArgs(); if (var13 != null) { var24.pReserved = var13; } var24.flags = 2L; PKCS11 var28; try { var28 = PKCS11.getInstance(var3, var4, var24, this.config.getOmitInitialize()); } catch (PKCS11Exception var21) { if (debug != null) { debug.println("Multi-threaded initialization failed: " + var21); } if (!this.config.getAllowSingleThreadedModules()) { throw var21; } if (var13 == null) { var24 = null; } else { var24.flags = 0L; } var28 = PKCS11.getInstance(var3, var4, var24, this.config.getOmitInitialize()); } this.p11 = var28; CK_INFO var29 = this.p11.C_GetInfo(); if (var29.cryptokiVersion.major < 2) { throw new ProviderException("Only PKCS#11 v2.0 and later supported, library version is v" + var29.cryptokiVersion); } else { boolean var32 = this.config.getShowInfo(); if (var32) { System.out.println("Information for provider " + this.getName()); System.out.println("Library info:"); System.out.println(var29); } if (var5 < 0L || var32) { long[] var31 = this.p11.C_GetSlotList(false); if (var32) { System.out.println("All slots: " + toString(var31)); var31 = this.p11.C_GetSlotList(true); System.out.println("Slots with tokens: " + toString(var31)); } if (var5 < 0L) { if (var7 < 0 || var7 >= var31.length) { throw new ProviderException("slotListIndex is " + var7 + " but token only has " + var31.length + " slots"); } var5 = var31[var7]; } } this.slotID = var5; CK_SLOT_INFO var33 = this.p11.C_GetSlotInfo(var5); this.removable = (var33.flags & 2L) != 0L; this.initToken(var33); if (var10 != null) { var10.setProvider(this); } } } catch (Exception var22) { if (this.config.getHandleStartupErrors() == 2) { throw new UnsupportedOperationException("Initialization failed", var22); } else { throw new ProviderException("Initialization failed", var22); } } } } private static String toString(long[] var0) { if (var0.length == 0) { return "(none)"; } else { StringBuilder var1 = new StringBuilder(); var1.append(var0[0]); for(int var2 = 1; var2 < var0.length; ++var2) { var1.append(", "); var1.append(var0[var2]); } return var1.toString(); } } public boolean equals(Object var1) { return this == var1; } public int hashCode() { return System.identityHashCode(this); } private static String[] s(String... var0) { return var0; } private static int[] m(long var0) { return new int[]{(int)var0}; } private static int[] m(long var0, long var2) { return new int[]{(int)var0, (int)var2}; } private static int[] m(long var0, long var2, long var4) { return new int[]{(int)var0, (int)var2, (int)var4}; } private static int[] m(long var0, long var2, long var4, long var6) { return new int[]{(int)var0, (int)var2, (int)var4, (int)var6}; } private static void d(String var0, String var1, String var2, int[] var3) { register(new SunPKCS11.Descriptor(var0, var1, var2, (String[])null, var3)); } private static void d(String var0, String var1, String var2, String[] var3, int[] var4) { register(new SunPKCS11.Descriptor(var0, var1, var2, var3, var4)); } private static void register(SunPKCS11.Descriptor var0) { for(int var1 = 0; var1 < var0.mechanisms.length; ++var1) { int var2 = var0.mechanisms[var1]; Integer var3 = var2; Object var4 = (List)descriptors.get(var3); if (var4 == null) { var4 = new ArrayList(); descriptors.put(var3, var4); } ((List)var4).add(var0); } } private void createPoller() { if (this.poller == null) { SunPKCS11.TokenPoller var1 = new SunPKCS11.TokenPoller(this); Thread var2 = new Thread(var1, "Poller " + this.getName()); var2.setDaemon(true); var2.setPriority(1); var2.start(); this.poller = var1; } } private void destroyPoller() { if (this.poller != null) { this.poller.disable(); this.poller = null; } } private boolean hasValidToken() { Token var1 = this.token; return var1 != null && var1.isValid(); } synchronized void uninitToken(Token var1) { if (this.token == var1) { this.destroyPoller(); this.token = null; AccessController.doPrivileged(new PrivilegedAction