摘要(Abstract)
流程模型,策略模型,资源模型以用户为中心的场景感知与分析技术 叶剑 朱珍民 陈援非 何哲 摘要 以用户为中心,基于场景感知实现任务计算是普适计算所追求的目标之一。但怎样从高维、非线性, 并且具有一定耦合度的情境数据中提取场景特征,使计算系统能够在复杂的场景变化中完成用户的计算要 求,是研究的难点和热点。本文主要研究在复杂的普适计算环境中,面向以用户为中心的计算需求实现智 能场景感知。研究内容包括建立分布式模糊推理模型和参数学习方法;基于流形学习和云模型方法,研究 场景特征分析技术,实现场景特征提取;基于场景感知,建立用户偏好计算模型,实现以用户为中心的普 适计算模型。 关键词 情境感知 场景分析 模糊推理 用户偏好模型
1 引言 普适计算环境的特点是具有随时随地访问信息和不可见的计算能力,计算透明性和无处 1 v 不在是普适计算重点强调的技术特性。因此,普适计算以人为本而不是以计算机为中心,迎 6 合了信息空间与物理空间的融合趋势,成为国际上一个蓬勃发展的研究热点。在动态的普适 6 计算环境中,用户任务的精确执行与环境的情境 (如地点、时间)以及用户的个性化信息(如 1 0 偏好等)紧密相关,因此用户任务是场景依存的。场景感知的最终目的就是为普适计算环境 0 中的用户任务计算提供决策支持。但围绕用户这一中心,重用采集的场景信息,对场景做出 . 3 准确分析和判断,仍然是普适计算技术实现过程中困扰我们的难题。它不仅具有重要的理论 0 7 意义,而且在移动运营增值服务、智能家居、城市综合信息服务领域有着广泛的应用前景。 1 当前,具有普适计算特征的研究项目对于物理空间特征的定义还停留在情境(又称为上 0 2 下文)层面,通过对诸如位置、时间、用户身份、计算能力等情境的感知,获得高层情境语 : 义。这种方式引发了“情境鸿沟”[1][2] 问题,使得系统提供的情境信息与用户需要获得的情 v i 境之间
主题(Topic)
项目(Project)
asciidisco/plugin.video.netflix
CastagnaIT/plugin.video.netflix
DATL4G/MimeMagic-Android
PasiSalenius/LightMQTT
momo19971103/Connecting-to-the-Network
emilsvennesson/script.module.inputstreamhelper
iammelvink/whats-the-weather
iammelvink/guess-the-celebrity
addradio/mpeg-audio-streams
DanSilva41/java-io
MJCoderMJCoder/Ex6_9_ExceptionDemo
> 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