.Net缓存小结(中)
System.Web.Caching.Cache
Cache:用于在Http请求期间保存页面或者数据。Cache的使用可以大大的提高整个应用程序的效率。它允许将频繁访问的服务器资源存储在内存中,当用户发出相同的请求后服务器不是再次处理而是将Cache中保存的数据直接返回给用户,可以看出Cache节省的时间是服务器处理的时间。Cache实例是每一个应用程序专有的,其生命周期就是应用程序周期,应用程序重启将重新创建其实例。
注意:如果要使用缓存的清理、到期管理、依赖项等功能必须使用Insert或者Add方法方法添加信息
Cache所具有的功能
// 实现用于 Web 应用程序的缓存。 此类不能被继承。 public sealed class Cache : IEnumerable {// 摘要: // 用于 System.Web.Caching.Cache.Insert(System.String,System.Object) 方法调用中的 absoluteExpiration// 参数中以指示项从不到期。 此字段为只读。public static readonly DateTime NoAbsoluteExpiration;//// 摘要: // 用作 System.Web.Caching.Cache.Insert(System.String,System.Object) 或 System.Web.Caching.Cache.Add(System.String,System.Object,System.Web.Caching.CacheDependency,System.DateTime,System.TimeSpan,System.Web.Caching.CacheItemPriority,System.Web.Caching.CacheItemRemovedCallback)// 方法调用中的 slidingExpiration 参数,以禁用可调到期。 此字段为只读。public static readonly TimeSpan NoSlidingExpiration;// 摘要: // 初始化 System.Web.Caching.Cache 类的新实例。public Cache();// 摘要: // 获取存储在缓存中的项数。//// 返回结果: // 存储在缓存中的项数。public int Count { get; }//// 摘要: // 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物理内存百分比。//// 返回结果: // 可供应用程序使用的物理内存百分比。public long EffectivePercentagePhysicalMemoryLimit { get; }//// 摘要: // 获取可用于缓存的字节数。//// 返回结果: // 可用于缓存的字节数。public long EffectivePrivateBytesLimit { get; }// 摘要: // 获取或设置指定键处的缓存项。//// 参数: // key:// 表示缓存项的键的 System.String 对象。//// 返回结果: // 指定的缓存项。public object this[string key] { get; set; }// 摘要: // 将指定项添加到 System.Web.Caching.Cache 对象,该对象具有依赖项、到期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。//// 参数: // key:// 用于引用该项的缓存键。//// value:// 要添加到缓存的项。//// dependencies:// 该项的文件依赖项或缓存键依赖项。 当任何依赖项更改时,该对象即无效,并从缓存中移除。 如果没有依赖项,则此参数包含 null。//// absoluteExpiration:// 所添加对象将到期并被从缓存中移除的时间。 如果使用可调到期,则 absoluteExpiration 参数必须为 System.Web.Caching.Cache.NoAbsoluteExpiration。//// slidingExpiration:// 最后一次访问所添加对象时与该对象到期时之间的时间间隔。 如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将到期并从缓存中移除。// 如果使用绝对到期,则 slidingExpiration 参数必须为 System.Web.Caching.Cache.NoSlidingExpiration。//// priority:// 对象的相对成本,由 System.Web.Caching.CacheItemPriority 枚举表示。 缓存在退出对象时使用该值;具有较低成本的对象在具有较高成本的对象之前被从缓存移除。//// onRemoveCallback:// 在从缓存中移除对象时所调用的委托(如果提供)。 当从缓存中删除应用程序的对象时,可使用它来通知应用程序。//// 返回结果: // 如果添加的项之前存储在缓存中,则为表示该项的对象;否则为 null。//// 异常: // System.ArgumentNullException:// key 或 value 参数设置为 null。//// System.ArgumentOutOfRangeException:// slidingExpiration 参数设置成小于 TimeSpan.Zero 或大于一年。//// System.ArgumentException:// 为要添加到 Cache 中的项设置 absoluteExpiration 和 slidingExpiration 参数。public object Add(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);//// 摘要: // 从 System.Web.Caching.Cache 对象检索指定项。//// 参数: // key:// 要检索的缓存项的标识符。//// 返回结果: // 检索到的缓存项,未找到该键时为 null。public object Get(string key);//// 摘要: // 检索用于循环访问包含在缓存中的键设置及其值的字典枚举数。//// 返回结果: // 要循环访问 System.Web.Caching.Cache 对象的枚举数。public IDictionaryEnumerator GetEnumerator();//// 摘要: // 向 System.Web.Caching.Cache 对象插入项,该项带有一个缓存键引用其位置,并使用 System.Web.Caching.CacheItemPriority// 枚举提供的默认值。//// 参数: // key:// 用于引用该项的缓存键。//// value:// 要插入缓存中的对象。//// 异常: // System.ArgumentNullException:// key 或 value 参数为 null。public void Insert(string key, object value);//// 摘要: // 向 System.Web.Caching.Cache 中插入具有文件依赖项或键依赖项的对象。//// 参数: // key:// 用于标识该项的缓存键。//// value:// 要插入缓存中的对象。//// dependencies:// 所插入对象的文件依赖项或缓存键依赖项。 当任何依赖项更改时,该对象即无效,并从缓存中移除。 如果没有依赖项,则此参数包含 null。//// 异常: // System.ArgumentNullException:// key 或 value 参数为 null。public void Insert(string key, object value, CacheDependency dependencies);//// 摘要: // 向 System.Web.Caching.Cache 中插入具有依赖项和到期策略的对象。//// 参数: // key:// 用于引用该对象的缓存键。//// value:// 要插入缓存中的对象。//// dependencies:// 所插入对象的文件依赖项或缓存键依赖项。 当任何依赖项更改时,该对象即无效,并从缓存中移除。 如果没有依赖项,则此参数包含 null。//// absoluteExpiration:// 所插入对象将到期并被从缓存中移除的时间。 要避免可能的本地时间问题(例如从标准时间改为夏时制),请使用 System.DateTime.UtcNow// 而不是 System.DateTime.Now 作为此参数值。 如果使用绝对到期,则 slidingExpiration 参数必须为 System.Web.Caching.Cache.NoSlidingExpiration。//// slidingExpiration:// 最后一次访问所插入对象时与该对象到期时之间的时间间隔。 如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将到期并被从缓存中移除。// 如果使用可调到期,则 absoluteExpiration 参数必须为 System.Web.Caching.Cache.NoAbsoluteExpiration。//// 异常: // System.ArgumentNullException:// key 或 value 参数为 null。//// System.ArgumentOutOfRangeException:// 将 slidingExpiration 参数设置为小于 TimeSpan.Zero 或大于一年的等效值。//// System.ArgumentException:// 为要添加到 Cache 中的项设置 absoluteExpiration 和 slidingExpiration 参数。public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration);//// 摘要: // 将对象与依赖项、到期策略以及可用于在从缓存中移除项之前通知应用程序的委托一起插入到 System.Web.Caching.Cache 对象中。//// 参数: // key:// 用于引用对象的缓存键。//// value:// 要插入到缓存中的对象。//// dependencies:// 该项的文件依赖项或缓存键依赖项。 当任何依赖项更改时,该对象即无效,并从缓存中移除。 如果没有依赖项,则此参数包含 null。//// absoluteExpiration:// 所插入对象将到期并被从缓存中移除的时间。 要避免可能的本地时间问题(例如从标准时间改为夏时制),请使用 System.DateTime.UtcNow// 而不是 System.DateTime.Now 作为此参数值。 如果使用绝对到期,则 slidingExpiration 参数必须设置为 System.Web.Caching.Cache.NoSlidingExpiration。//// slidingExpiration:// 缓存对象的上次访问时间和对象的到期时间之间的时间间隔。 如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将到期并被从缓存中移除。// 如果使用可调到期,则 absoluteExpiration 参数必须设置为 System.Web.Caching.Cache.NoAbsoluteExpiration。//// onUpdateCallback:// 从缓存中移除对象之前将调用的委托。 可以使用它来更新缓存项并确保缓存项不会从缓存中移除。//// 异常: // System.ArgumentNullException:// key、value 或 onUpdateCallback 参数为 null。//// System.ArgumentOutOfRangeException:// 将 slidingExpiration 参数设置为小于 TimeSpan.Zero 或大于一年的等效值。//// System.ArgumentException:// 为要添加到 Cache 中的项设置 absoluteExpiration 和 slidingExpiration 参数。 - 或 - dependencies// 参数为 null,absoluteExpiration 参数设置为 System.Web.Caching.Cache.NoAbsoluteExpiration// 并且 slidingExpiration 参数设置为 System.Web.Caching.Cache.NoSlidingExpiration。public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemUpdateCallback onUpdateCallback);//// 摘要: // 向 System.Web.Caching.Cache 对象中插入对象,后者具有依赖项、到期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。//// 参数: // key:// 用于引用该对象的缓存键。//// value:// 要插入缓存中的对象。//// dependencies:// 该项的文件依赖项或缓存键依赖项。 当任何依赖项更改时,该对象即无效,并从缓存中移除。 如果没有依赖项,则此参数包含 null。//// absoluteExpiration:// 所插入对象将到期并被从缓存中移除的时间。 要避免可能的本地时间问题(例如从标准时间改为夏时制),请使用 System.DateTime.UtcNow// 而不是 System.DateTime.Now 作为此参数值。 如果使用绝对到期,则 slidingExpiration 参数必须为 System.Web.Caching.Cache.NoSlidingExpiration。//// slidingExpiration:// 最后一次访问所插入对象时与该对象到期时之间的时间间隔。 如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将到期并被从缓存中移除。// 如果使用可调到期,则 absoluteExpiration 参数必须为 System.Web.Caching.Cache.NoAbsoluteExpiration。//// priority:// 该对象相对于缓存中存储的其他项的成本,由 System.Web.Caching.CacheItemPriority 枚举表示。 该值由缓存在退出对象时使用;具有较低成本的对象在具有较高成本的对象之前被从缓存移除。//// onRemoveCallback:// 在从缓存中移除对象时将调用的委托(如果提供)。 当从缓存中删除应用程序的对象时,可使用它来通知应用程序。//// 异常: // System.ArgumentNullException:// key 或 value 参数为 null。//// System.ArgumentOutOfRangeException:// 将 slidingExpiration 参数设置为小于 TimeSpan.Zero 或大于一年的等效值。//// System.ArgumentException:// 为要添加到 Cache 中的项设置 absoluteExpiration 和 slidingExpiration 参数。public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);//// 摘要: // 从应用程序的 System.Web.Caching.Cache 对象移除指定项。//// 参数: // key:// 要移除的缓存项的 System.String 标识符。//// 返回结果: // 从 Cache 移除的项。 如果未找到键参数中的值,则返回 null。public object Remove(string key); }
System.Web.Caching.Cache
贴一些测试代码 没有全部测试
//Cache测试方法 public static void CacheTest() {//创建缓存Cache cache = HttpRuntime.Cache;cache.Insert("1", "我是静态缓存");cache.Insert("2", "我是依赖一个文件,", new CacheDependency(@"D:\1.txt"));cache.Insert("3", "我是绝对到期时间,创建后10秒过期", null, DateTime.Now.AddSeconds(10), Cache.NoSlidingExpiration);cache.Insert("4", "我是弹性到期时间,超过10秒不用我,我就消失了", null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(10));cache.Insert("5", "我可以设定优先级,哈哈", null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(10),CacheItemPriority.High, null);var addCache = cache.Add("5", "我是AddCache,添加相同名的cache我会返回之前的data,而却不执行任何操作,删除我会委托跳转哦", null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration, CacheItemPriority.Low, Notice);//获取缓存var result = cache.Get("5").ToString();//清除单个缓存HttpRuntime.Cache.Remove("5");//清空全部缓存IDictionaryEnumerator emptyCache = HttpRuntime.Cache.GetEnumerator();//检索用于循环访问包含在缓存中的键设置及其值的字典枚举数。int count = HttpRuntime.Cache.Count;//获取存储在缓存中的项数。for (int i = 0; i < count; i++){emptyCache.MoveNext();//将位置移动到下一个缓存项HttpRuntime.Cache.Remove(emptyCache.Entry.Key.ToString());//清空缓存 } } /// <summary> /// 删除Add插入的cache时 委托的方法 /// </summary> /// <param name="key">cache 标志</param> /// <param name="value">cache 值</param> /// <param name="reason">Remove</param> public static void Notice(string key, object value, CacheItemRemovedReason reason) {Cache cache = HttpRuntime.Cache;var result = cache.Get("5"); }
System.Web.Caching.Cache
这里有更详细的介绍:System.Web.Caching.Cache类 缓存 各种缓存依赖
输出缓存OutputCache
webform
OutputCache 以声明的方式控制 ASP.NET 页或页中包含的用户控件的输出缓存策略。
语法如下:
<%@ OutputCache=""
Duration="#ofseconds" //页或用户控件进行缓存的时间(以秒计)
//用于指定输出缓存项的位置。其属性值是OutputCacheLocation枚举值,它们是Any、Client、Downstream、None、 Server和ServerAndClient。
//默认值是Any,表示输出缓存可用于所有请求,包括客户端浏览器、代理服务器或处理请求的服务器上。
Location="Any | Client | Downstream | Server | None | ServerAndClient "
Shared="True | False" //确定用户控件输出是否可以由多个页共享
VaryByControl="controlname" //用于更改用户控件的输出缓存。这些字符串代表用户控件中声明的 ASP.NET 服务器控件的 ID 属性值。
//表示自定义输出缓存要求的任意文本。如果赋予该属性的值为 browser,缓存将随浏览器名称和主要版本信息的不同而异。
//如果输入自定义字符串,则必须在应用程序的 Global.asax 文件中重写 GetVaryByCustomString 方法。
VaryByCustom="browser | customstring"
VaryByHeader="headers" //根据HTTP响应头信息,缓存多个不同版本的响应文档 Accept-Language|User-Agent|Cookie
VaryByParam="parametername" //分号分隔的参数列表,用于使输出缓存发生变化
VaryByContentEncoding="encodings" //基于内容变化的编码,用于更改输出缓存
CacheProfile="cache profile name | ''" //Cache配置节名称
NoStore="true | false" //是否阻止敏感信息的二级存储
SqlDependency="database/table name pair | CommandNotification" //标识一组数据库/表名称对 的字符串值,页或控件的输出缓存依赖于这些名称对
ProviderName="Provider Name" //标识要使用的自定义输出缓存提供程序
%>
在web.config中配置outputcache:
<%@ OutputCache CacheProfile="CacheWebconfig" %>
Web.config
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheWebconfig" duration="30"
varyByParam="none" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
Webconfig中Add节点里面的各个属性和OutPutCache相对应,OutputCache优先于outputCacheProfiles配置
.Net MVC
输出缓存在.net mvc中 封装成了一个特性OutputCacheAttribute 直接在控制器上加特性就能实现,功能如下:
// 摘要: // 表示一个特性,该特性用于标记将缓存其输出的操作方法。 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)] public class OutputCacheAttribute : ActionFilterAttribute, IExceptionFilter {// 摘要: // 初始化 System.Web.Mvc.OutputCacheAttribute 类的新实例。public OutputCacheAttribute();// 摘要: // 获取或设置缓存配置文件名称。//// 返回结果: // 缓存配置文件名称。public string CacheProfile { get; set; }//// 摘要: // 获取或设置子操作缓存。//// 返回结果: // 子操作缓存。public static System.Runtime.Caching.ObjectCache ChildActionCache { get; set; }//// 摘要: // 获取或设置缓存持续时间(以秒为单位)。//// 返回结果: // 缓存持续时间。public int Duration { get; set; }//// 摘要: // 获取或设置位置。//// 返回结果: // 位置。public OutputCacheLocation Location { get; set; }//// 摘要: // 获取或设置一个值,该值指示是否存储缓存。//// 返回结果: // 如果应存储缓存,则为 true;否则为 false。public bool NoStore { get; set; }//// 摘要: // 获取或设置 SQL 依赖项。//// 返回结果: // SQL 依赖项。public string SqlDependency { get; set; }//// 摘要: // 获取或设置基于内容变化的编码。//// 返回结果: // 基于内容变化的编码。public string VaryByContentEncoding { get; set; }//// 摘要: // 获取或设置基于自定义项变化的值。//// 返回结果: // 基于自定义项变化的值。public string VaryByCustom { get; set; }//// 摘要: // 获取或设置基于标头变化的值。//// 返回结果: // 基于标头变化的值。public string VaryByHeader { get; set; }//// 摘要: // 获取或设置基于参数变化的值。//// 返回结果: // 基于参数变化的值。public string VaryByParam { get; set; }// 摘要: // 返回一个值,该值指示子操作缓存否处于活动状态。//// 参数: // controllerContext:// 控制器上下文。//// 返回结果: // 如果子操作缓存处于活动状态,则为 true;否则为 false。public static bool IsChildActionCacheActive(ControllerContext controllerContext);//// 摘要: // 此方法是 System.Web.Mvc.IActionFilter.OnActionExecuted(System.Web.Mvc.ActionExecutedContext)// 的实现并支持 ASP.NET MVC 基础结构。它不应直接在您的代码中使用。//// 参数: // filterContext:// 筛选器上下文。public override void OnActionExecuted(ActionExecutedContext filterContext);//// 摘要: // 此方法是 System.Web.Mvc.IActionFilter.OnActionExecuting(System.Web.Mvc.ActionExecutingContext)// 的实现并支持 ASP.NET MVC 基础结构。它不应直接在您的代码中使用。//// 参数: // filterContext:// 筛选器上下文。public override void OnActionExecuting(ActionExecutingContext filterContext);//// 摘要: // 此方法是 System.Web.Mvc.IExceptionFilter.OnException(System.Web.Mvc.ExceptionContext)// 的实现并支持 ASP.NET MVC 基础结构。它不应直接在您的代码中使用。//// 参数: // filterContext:// 筛选器上下文。public void OnException(ExceptionContext filterContext);//// 摘要: // 此方法是 System.Web.Mvc.IResultFilter.OnResultExecuted(System.Web.Mvc.ResultExecutedContext)// 的实现并支持 ASP.NET MVC 基础结构。它不应直接在您的代码中使用。//// 参数: // filterContext:// 筛选器上下文。public override void OnResultExecuted(ResultExecutedContext filterContext);//// 摘要: // 在操作结果执行之前调用。//// 参数: // filterContext:// 筛选器上下文,它封装有关使用 System.Web.Mvc.AuthorizeAttribute 的信息。//// 异常: // System.ArgumentNullException:// filterContext 参数为 null。public override void OnResultExecuting(ResultExecutingContext filterContext); }
OutputCacheAttribute
贴几个示例:也没有全部测试,基本格式都一样
[OutputCache(Duration = 30)]//缓存整个页面30秒
public ActionResult Index(){...}
//根据Id值 缓存整个页面30秒 如果Id值改变 页面重新缓存 之前的页面没过期之前还是缓存状态再次访问时不会重新加载
[OutputCache(Duration = 30, VaryByContentEncoding = "id")]
public ActionResult Index(int? id){...}
//根据Http消息头信息值 缓存整个页面30秒 Accept-Language表示语言版本 当网站有多种语言版本时,可以为每种语言都进行缓存
[OutputCache(Duration = 30, VaryByHeader = "Accept-Language")]
public ActionResult Index(){...}
//用webconfig配置缓存
[OutputCache(Duration = 30, CacheProfile = "CacheTest")]
public ActionResult Index(){...}
//webconfig配置如下:
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheTest" duration="60"
varyByParam="none" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
OutputCache优先于outputCacheProfiles配置 所以缓存30秒之后就会失效
就写这么多吧 有时间了再补充
转载于:https://www.cnblogs.com/atxgs/articles/4482960.html
.Net缓存小结(中)相关推荐
- 显示android缓存文件,android – 使用ACTION_VIEW在缓存目录中打开文件
我一直在寻找这个,但我无法让它正常工作.让我解释. 我有一个Android应用程序,可以将文件(图像,文档,-)保存在缓存目录中.起初我曾经使用getExternalCacheDir()方法并将它们保 ...
- 缓存系统中的三座大山
缓存系统中的三座大山 文章目录 缓存系统中的三座大山 一.什么是缓存 1.无处不在的缓存 2.高并发系统中的缓存 2.1 缓存系统的作用 2.2 缓存系统访问流程 二.缓存系统的三大问题 1.1缓存雪 ...
- android picasso 三级缓存,Android中图片的三级缓存浅析
图片的三级缓存机制一般是指应用加载图片的时候,分别去访问内存,文件和网络而获取图片数据的一种行为.以下内容只是简单的介绍了三级缓存的思想和大致流程,还有很多细节未进行处理,如果想深入研究可以在Gith ...
- 从MAC缓存表中我们看到的问题
从MAC缓存表中我们看到的问题 截图一: 截图二: 这是同一个网内的两台主机,运行命令后同样为192.168.1.1,为什么两台主机的网关MAC不一样呢?现在我们来解密这个疑问:局域网内安装有聚生网管 ...
- Alluxio在多级分布式缓存系统中的应用
1. 前言 随着移动互联网的发展,越来越多的业务数据和日志数据需要用户处理.从而,用数据去驱动和迭代业务发展.数据处理主要包括:计算和查询.计算主要为离线计算.实时流计算.图计算.迭代计算等:查询主要 ...
- 亿级流量、高并发与高性能场景下的电商详情页架构_2(缓存架构中的Redis)
亿级流量.高并发与高性能场景下的电商详情页架构_2(缓存架构中的Redis) 缓存架构一定要学好的Redis,缓存架构中的高可用,高并发,海量数据,备份,随时可恢复,缓存架构要支持这些,则redis一 ...
- 05-如何全部清除redis缓存数据库中的缓存数据
在redis缓存数据库的使用过程中,有时会遇到因为连接不同的数据库导致redis缓存数据库中缓存了多个数据库的信息,产生脏数据进而影响程序的正常运行 如何一次性清除所有的缓存数据让redis重新缓存? ...
- 设置log缓存_Redis中缓存击穿 缓存穿透 缓存雪崩解决方案
戳上方蓝字 "给自己一个smile" 关注我 并 置顶星标! 你的关注意义重大! 目录 1. 缓存击穿 2. 缓存穿透 3. 缓存雪崩 4. ...
- .Net缓存小结(下)
Memcached分布式缓存 概念 Memcached 是一个高性能的分布式内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度. 具有以下特点: .协议简单: 使用简单的基于文本行的协议, ...
最新文章
- php: 通过key获取多维数组中的值
- [JDK8]性能优化之使用LongAdder替换AtomicLong
- unity 给图片边缘_Unity Shader 屏幕后效果——边缘检测
- python实现中文图片文字识别--OCR about chinese text--tesseract
- eclipse error pages打红X的解决方法
- Hyper-V 虚拟机快照:常见问题
- Java与C语言比较(Java参考书中摘录)
- 如何修改 匿名类型 中的属性值 ?
- Spring Bootstrap中具有配置元数据的高级配置
- Android 下拉式抽屉折叠动画
- html的opacity标签,css中opacity是什么意思
- 深度linux_深度:图文带你走进Linux系统结构
- RHEL5中配置vsftpd搭建FTP服务器
- python关闭文件-python_文件的打开和关闭
- STM32 FreeRTOS系列教程(一)FreeRTOS简介
- 度度熊的午饭时光[2017百度之星资格赛 1004]
- 相控阵天线(三):直线阵列天线低副瓣综合(切比雪夫、泰勒分布、SinZ-Z和Villeneuve分布、含python代码)
- 劳动者可以拒绝加班吗
- 50个BA分析工具第四个-Business Case
- 315Mhz RF射频解码 串口输出方案(支持2262/1527多种编码方式)
热门文章
- android studio如何创建工程,android studio如何创建一个子module并引入主工程
- java swing 禁用鼠标事件_Java学习笔记:swing中树控件,设置树节点的图标,按钮美化,鼠标事件,禁止鼠标双击...
- liferay namespace用法
- C#三层架构第九课之反射和工厂模式实现多数据库访问
- Asp.Net就业课之三验证控件
- IDEA新建maven项目漏掉webapp目录解决方法
- Spring整合mybatis 1 查询
- 技术晋升的评定与博弈
- python赋值语句对错_深入理解Python中变量赋值的问题
- 远程桌面提示:身份验证错误 要求的函数不受支持