string Thumbprint = "C2489D912F247C187AA14B1291A6fB612281225D";
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection certificates =
  store.Certificates.Find(X509FindType.FindByThumbprint,
Thumbprint, false);

1、X509Store:表示 X.509 存储区,该存储区是保留和管理证书的物理存储区。 此类不能被继承。

   //
// 摘要:
// 表示 X.509 存储区,该存储区是保留和管理证书的物理存储区。 此类不能被继承。
public sealed class X509Store
{
//
// 摘要:
// 使用当前用户存储区的个人证书初始化 System.Security.Cryptography.X509Certificates.X509Store 类的新实例。
public X509Store();
//
// 摘要:
// 使用指定的存储区名称初始化 System.Security.Cryptography.X509Certificates.X509Store 类的新实例。
//
// 参数:
// storeName:
// 一个表示存储区名称的字符串值。 有关更多信息,请参见 System.Security.Cryptography.X509Certificates.StoreName。
public X509Store(string storeName);
//
// 摘要:
// 使用指定的 System.Security.Cryptography.X509Certificates.StoreName 值初始化 System.Security.Cryptography.X509Certificates.X509Store
// 类的新实例。
//
// 参数:
// storeName:
// 指定 X.509 证书存储区名称的枚举值之一。
public X509Store(StoreName storeName);
//
// 摘要:
// 使用指定的 System.Security.Cryptography.X509Certificates.StoreLocation 值初始化 System.Security.Cryptography.X509Certificates.X509Store
// 类的新实例。
//
// 参数:
// storeLocation:
// 指定 X.509 证书存储区位置的枚举值之一。
public X509Store(StoreLocation storeLocation);
//
// 摘要:
// 使用 HCERTSTORE 存储区的 Intptr 句柄初始化 System.Security.Cryptography.X509Certificates.X509Store
// 类的新实例。
//
// 参数:
// storeHandle:
// HCERTSTORE 存储区的句柄。
//
// 异常:
// T:System.ArgumentNullException:
// storeHandle 参数为 null。
//
// T:System.Security.Cryptography.CryptographicException:
// storeHandle 参数指向了无效的上下文。
public X509Store(IntPtr storeHandle);
//
// 摘要:
// 使用指定的 System.Security.Cryptography.X509Certificates.StoreName 和 System.Security.Cryptography.X509Certificates.StoreLocation
// 值初始化 System.Security.Cryptography.X509Certificates.X509Store 类的新实例。
//
// 参数:
// storeName:
// 指定 X.509 证书存储区名称的枚举值之一。
//
// storeLocation:
// 指定 X.509 证书存储区位置的枚举值之一。
//
// 异常:
// T:System.ArgumentException:
// storeLocation 不是有效位置或者 storeName 不是有效名称。
public X509Store(StoreName storeName, StoreLocation storeLocation);
//
// 摘要:
// 使用一个字符串初始化 System.Security.Cryptography.X509Certificates.X509Store 类的新实例,该字符串表示
// System.Security.Cryptography.X509Certificates.StoreName 枚举中的一个值和 System.Security.Cryptography.X509Certificates.StoreLocation
// 枚举中的一个值。
//
// 参数:
// storeName:
// 一个字符串,表示 System.Security.Cryptography.X509Certificates.StoreName 枚举中的值。
//
// storeLocation:
// 指定 X.509 证书存储区位置的枚举值之一。
//
// 异常:
// T:System.ArgumentException:
// storeLocation 包含无效值。
public X509Store(string storeName, StoreLocation storeLocation); //
// 摘要:
// 返回位于 X.509 证书存储区中的证书集合。
//
// 返回结果:
// 证书集合。
public X509Certificate2Collection Certificates { get; }
//
// 摘要:
// 获取 X.509 证书存储区的位置。
//
// 返回结果:
// 证书存储区的位置。
public StoreLocation Location { get; }
//
// 摘要:
// 获取 X.509 证书存储区的名称。
//
// 返回结果:
// 证书存储区的名称。
public string Name { get; }
//
// 摘要:
// 获取 HCERTSTORE 存储区的 System.IntPtr 句柄。
//
// 返回结果:
// HCERTSTORE 存储区的句柄。
//
// 异常:
// T:System.Security.Cryptography.CryptographicException:
// 存储区未打开。
public IntPtr StoreHandle { get; } //
// 摘要:
// 将证书添加到 X.509 证书存储区。
//
// 参数:
// certificate:
// 要添加的证书。
//
// 异常:
// T:System.ArgumentNullException:
// certificate 为 null。
//
// T:System.Security.Cryptography.CryptographicException:
// 未能将证书添加到存储区。
public void Add(X509Certificate2 certificate);
//
// 摘要:
// 将证书集合添加到 X.509 证书存储区。
//
// 参数:
// certificates:
// 要添加的证书集合。
//
// 异常:
// T:System.ArgumentNullException:
// certificates 为 null。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
public void AddRange(X509Certificate2Collection certificates);
//
// 摘要:
// 关闭 X.509 证书存储区。
public void Close();
//
// 摘要:
// 打开 X.509 证书存储区或创建新存储区,具体取决于 System.Security.Cryptography.X509Certificates.OpenFlags
// 标志设置。
//
// 参数:
// flags:
// 枚举值的按位组合,指定打开 X.509 证书存储区的方式。
//
// 异常:
// T:System.Security.Cryptography.CryptographicException:
// 该证书不可读。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.ArgumentException:
// 存储区包含无效值。
public void Open(OpenFlags flags);
//
// 摘要:
// 从 X.509 证书存储区移除证书。
//
// 参数:
// certificate:
// 要移除的证书。
//
// 异常:
// T:System.ArgumentNullException:
// certificate 为 null。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
public void Remove(X509Certificate2 certificate);
//
// 摘要:
// 从 X.509 证书存储区移除一系列证书。
//
// 参数:
// certificates:
// 要移除的一系列证书。
//
// 异常:
// T:System.ArgumentNullException:
// certificates 为 null。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
public void RemoveRange(X509Certificate2Collection certificates);
}

  

2、StoreName:

   //
// 摘要:
// 指定要打开的 X.509 证书存储区的名称。
public enum StoreName
{
//
// 摘要:
// 其他用户的 X.509 证书存储区。
AddressBook = ,
//
// 摘要:
// 第三方证书颁发机构 (CA) 的 X.509 证书存储区。
AuthRoot = ,
//
// 摘要:
// 中间证书颁发机构 (CA) 的 X.509 证书存储区。
CertificateAuthority = ,
//
// 摘要:
// 吊销的证书的 X.509 证书存储区。
Disallowed = ,
//
// 摘要:
// 个人证书的 X.509 证书存储区。
My = ,
//
// 摘要:
// 受信任的根证书颁发机构 (CA) 的 X.509 证书存储区。
Root = ,
//
// 摘要:
// 直接受信任的人和资源的 X.509 证书存储区。
TrustedPeople = ,
//
// 摘要:
// 直接受信任的发行者的 X.509 证书存储区。
TrustedPublisher =
}

3、StoreLocation:

    //
// 摘要:
// 指定 X.509 证书存储区的位置。
public enum StoreLocation
{
//
// 摘要:
// 当前用户使用的 X.509 证书存储区。
CurrentUser = ,
//
// 摘要:
// 分配给本地计算机的 X.509 证书存储区。
LocalMachine =
}

4、OpenFlags

    //
// 摘要:
// 指定打开 X.509 证书存储区的方式。
[Flags]
public enum OpenFlags
{
//
// 摘要:
// 以只读方式打开 X.509 证书存储区。
ReadOnly = 0,
//
// 摘要:
// 以读写方式打开 X.509 证书存储区。
ReadWrite = 1,
//
// 摘要:
// 以允许最高级访问的方式打开 X.509 证书存储区。
MaxAllowed = 2,
//
// 摘要:
// 仅打开现有存储区。如果不存在任何存储区,System.Security.Cryptography.X509Certificates.X509Store.Open(System.Security.Cryptography.X509Certificates.OpenFlags)
// 方法不会创建新的存储区。
OpenExistingOnly = 4,
//
// 摘要:
// 打开 X.509 证书存储区并添加存档证书。
IncludeArchived = 8
}

5、public X509Certificate2Collection Find(X509FindType findType, object findValue, bool validOnly);

        //
// 摘要:
// 使用 System.Security.Cryptography.X509Certificates.X509FindType 枚举和 findValue 对象所指定的搜索条件搜索
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection 对象。
//
// 参数:
// findType:
// System.Security.Cryptography.X509Certificates.X509FindType 值之一。
//
// findValue:
// 作为对象的搜索条件。
//
// validOnly:
// 如果仅允许从搜索中返回有效的证书,则为 true;否则为 false。
//
// 返回结果:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection 对象。
//
// 异常:
// T:System.Security.Cryptography.CryptographicException:
// findType 无效。
public X509Certificate2Collection Find(X509FindType findType, object findValue, bool validOnly);

  

6、X509FindType

    //
// 摘要:
// 指定通过 System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法搜索的值的类型。
public enum X509FindType
{
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串表示证书的指纹。
FindByThumbprint = 0,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串表示证书的主题名称。 与 System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectDistinguishedName
// 枚举值所提供的相比,这是一种不太具体的搜索方式。 通过使用 System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName
// 值,System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法将使用提供的值执行不区分大小写的字符串比较。 例如,如果将“MyCert”传递给 System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法,该方法将查找主题名称中包含该字符串的所有证书,而不考虑其他主题值。 按可分辨名称搜索的精确性较高。
FindBySubjectName = 1,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串表示证书的主题可分辨名称。 与 System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName
// 枚举值所提供的相比,这是一种更具体的搜索方式。 通过使用 System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectDistinguishedName
// 值,System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法将对整个可分辨名称执行不区分大小写的字符串比较。 按主题名称搜索的精确性较低。
FindBySubjectDistinguishedName = 2,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串表示证书颁发者的名称。 与 System.Security.Cryptography.X509Certificates.X509FindType.FindByIssuerDistinguishedName
// 枚举值所提供的相比,这是一种不太具体的搜索方式。 通过使用 System.Security.Cryptography.X509Certificates.X509FindType.FindByIssuerName
// 值,System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法将使用提供的值执行不区分大小写的字符串比较。 例如,如果将“MyCA”传递给 System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法,该方法将查找颁发者名称中包含该字符串的所有证书,而不管其是否包含其他颁发者值。
FindByIssuerName = 3,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串表示证书的颁发者可分辨名称。 与 System.Security.Cryptography.X509Certificates.X509FindType.FindByIssuerName
// 枚举值所提供的相比,这是一种更具体的搜索方式。 通过使用 System.Security.Cryptography.X509Certificates.X509FindType.FindByIssuerDistinguishedName
// 值,System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法将对整个可分辨名称执行不区分大小写的字符串比较。 按颁发者名称搜索的精确性较低。
FindByIssuerDistinguishedName = 4,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,它表示通过证书对话框显示的或 System.Security.Cryptography.X509Certificates.X509Certificate.GetSerialNumberString
// 方法返回的证书的序列号,但不包含空格。
FindBySerialNumber = 5,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个以当地时间表示的 System.DateTime 值。 可使用 System.DateTime.Now 查找当前有效的所有证书。
FindByTimeValid = 6,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个以当地时间表示的 System.DateTime 值。 值不必处于将来时间。 例如,通过从 System.DateTime.Now的
// System.Security.Cryptography.X509Certificates.X509FindType.FindByTimeValid 的
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 操作的结果中采用去年最后一天的 System.Security.Cryptography.X509Certificates.X509FindType.FindByTimeNotYetValid
// 的 System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 操作的结果的交集,可以使用 System.Security.Cryptography.X509Certificates.X509FindType.FindByTimeNotYetValid
// 来查找已在当前年中有效的证书。
FindByTimeNotYetValid = 7,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个以当地时间表示的 System.DateTime 值。 例如,通过从 System.DateTime.Now 的
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 操作的结果中消除今年的最后一天的 System.Security.Cryptography.X509Certificates.X509FindType.FindByTimeExpired
// 的 System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 操作的结果,可以查找有效期截止到今年年底的所有证书。
FindByTimeExpired = 8,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串表示证书的模板名,如“ClientAuth”。 模板名为 X509 3 版扩展名,指定证书的使用。
FindByTemplateName = 9,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串表示证书的应用程序策略友好名称或对象标识符(OID,或 System.Security.Cryptography.Oid)。
// 例如,可以使用“加密文件系统”或“1.3.6.1.4.1.311.10.3.4”。 对于将要本地化的应用程序,由于友好名称经过本地化处理,因此必须使用 OID
// 值。
FindByApplicationPolicy = 10,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串表示证书策略的友好名称或对象标识符(OID,或 System.Security.Cryptography.Oid)。
// 最佳做法是使用 OID,如“1.3.6.1.4.1.311.10.3.4”。 对于将要本地化的应用程序,由于友好名称经过本地化处理,因此必须使用 OID。
FindByCertificatePolicy = 11,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串描述要查找的扩展名。 对象标识符 (OID) 常用于指示 System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法搜索扩展名与 OID 值相匹配的所有证书。
FindByExtension = 12,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个表示密钥用法的字符串或一个表示位掩码(包含所有请求的密钥用法)的整数。 对于字符串值,一次只能指定一种密钥用法,但是可以按级联序列使用
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法以使请求用法交叉。 例如,可以将 findValue 参数设置为“KeyEncipherment”或整数(0x30 指示“KeyEncipherment”和“DataEncipherment”)。
// 还可以使用 System.Security.Cryptography.X509Certificates.X509KeyUsageFlags 枚举的值。
FindByKeyUsage = 13,
//
// 摘要:
// System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(System.Security.Cryptography.X509Certificates.X509FindType,System.Object,System.Boolean)
// 方法的 findValue 参数必须是一个字符串,该字符串用十六进制值表示主题密钥标识符,如 UI 中显示的“F3E815D45E83B8477B9284113C64EF208E897112”。
FindBySubjectKeyIdentifier = 14
}

  

C#获取数字证书的更多相关文章

  1. certbot 获取数字证书失效问题

    title: certbot 获取数字证书失效问题 author: Narule date: 2021-02-18 10:45:00 +0800 categories: [Technology^技术, ...

  2. android利用数字证书对程序签名

     签名的必要性 1.  防止你已安装的应用被恶意的第三方覆盖或替换掉. 2.  开发者的身份标识,签名可以防止抵赖等事件的发生. 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同 ...

  3. 转: 在.NET中操作数字证书

    作者:玄魂出处:博客2010-06-23 12:05 http://winsystem.ctocio.com.cn/19/9492019.shtml .NET为我们提供了操作数字证书的两个主要的类,分 ...

  4. android 利用数字证书对程序签名

    签名的必要性 1.  防止你已安装的应用被恶意的第三方覆盖或替换掉. 2.  开发者的身份标识,签名可以防止抵赖等事件的发生. 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样 ...

  5. 数字证书简介及Java编码实现

    1.数字证书简介 数字证书具备常规加密解密必要的信息,包含签名算法,可用于网络数据加密解密交互,标识网络用户(计算机)身份.数字证书为发布公钥提供了一种简便的途径,其数字证书则成为加密算法以及公钥的载 ...

  6. 数字签名、数字证书的原理以及证书的获得java版

    数字签名原理简介(附数字证书) 首先要了解什么叫对称加密和非对称加密,消息摘要这些知识. 1. 非对称加密 在通信双方,如果使用非对称加密,一般遵从这样的原则:公钥加密,私钥解密.同时,一般一个密钥加 ...

  7. 在.NET中操作数字证书(新手教程)

    .NET为我们提供了操作数字证书的两个主要的类,分为为: System.Security.Cryptography.X509Certificates.X509Certificate2类, 每个这个类的 ...

  8. xamarin uwp数字证书公钥私钥

    对于数字证书存储导入到电脑中,采用如下方式: /// <summary> /// 导入证书 /// </summary> /// <param name="ra ...

  9. C#编程总结(十一)数字证书

    C#编程总结(十一)数字证书 之前已经通过文章介绍了数字证书的基础知识,包括加密和数字签名. 具体可见: 1.C#编程总结(七)数据加密——附源码 2.C#编程总结(八)数字签名 这里来讲述数字证书的 ...

随机推荐

  1. [SQL基础教程] 4-4 事务

    [SQL基础教程] 4 数据更新 4-4 事务 事务 需要在同一处理单元中执行的一系列更新处理的集合 创建事务 事务开始语句; DML语句1; DML语句2; . . . 事务结束语句; 事务开始语句 ...

  2. 中兴电信光纤猫F450获取管理员密码方法

    初衷:为了完成端口映射,一开始以为电信光猫不支持自定义路由,因为通过useradmin登录进去后没有找到对应的选项.一番了解之后,原来光猫有超级密码,电信装机时是不会告诉你的,电信客服一般也不会告诉你 ...

  3. netty中级篇(2)

    上一篇 netty入门篇(1) 一.编码解码技术 如何评价一个编解码技术: 是否支持跨语言,或者说支持的语言是否丰富 编码码流大小,影响传输速度 编码和解码的性能,即时间 类库是否精致,API是否方便 ...

  4. yarn的调度器

    三种调度器 1.FIFO Scheduler 把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,等最前面的应用需求满足后再给下一个分配,以 ...

  5. ios_swift开发资源整理

    目录 1.苹果官方资源 2.国内外视频网站推荐 3.中文文档 4.demo网站 5.开发工具推荐 6.国内外开发网站论坛 7.技术博客推荐 8.书籍推荐 9.第三方框架推荐 10.第三方发布平台 11 ...

  6. Unity灯光详解

    Lights will bring personality and flavor to your game. You use lights to illuminate the scenes and o ...

  7. openstack私有云布署实践【16.3 Windows Server2008 R2 只有C盘分区镜像制作】

    之所以要只有C盘分区镜像,是因为在创建VM或者调整云主机的硬盘大小时,它能自动扩容.无需人工介入   参考http://www.iyunv.com/thread-45149-1-1.html的灵感   ...

  8. Jersey+Spring+Maven环境搭建

    第一步:创建一个Maven工程.加入Jersey.Spring.Jersey+Spring的依赖包,以及内嵌的Tomcat7插件: pom.xml文件如图所示: <project xmlns=& ...

  9. RTMP直播应用与延时分析

    直播应用中,RTMP和HLS基本上可以覆盖所有客户端观看,HLS主要是延时比较大,RTMP主要优势在于延时低. 一.应用场景 低延时应用场景包括:  .  互动式直播:譬如2013年大行其道的美女主播 ...

  10. Tomcat下的work目录

    work目录只是tomcat的工作目录,也就是tomcat把jsp转换为class文件的工作目录,这也正是为什么它叫work目录而不是cache目录的原因. jsp,tomcat的工作原理是当浏览器访 ...