生产数据库中,大批数据更新时应分批执行

<div><div><div>实际生产中,可能由于需求的变化需要对数据库中的数据做统一的更新。这时由于项目已经上线好久时间,数据库中的数据也已经很多了。这时的更新操作如果一次执行,可能对数据库造成数据阻塞,给用户的浏览造成问题。比较好的做法是每更新一批数据后,就停顿一定的时间。<div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><div align="left">         public void ProcessRequest(HttpContext context)</div><div align="left">        {</div><div align="left">            context.Response.ContentType = "text/html";</div><div align="left"> </div><div align="left">            Entities db = new Entities();</div><div align="left"> </div><div align="left">            int page = 1;</div><div align="left"> </div><div align="left">            while (true )</div><div align="left">            {</div><div align="left">                int take = page 1000;</div><div align="left">                int skip = (page - 1) 1000;</div><div align="left">                var links = db.XXX.OrderBy(p=>p.ContentID).Take(take).Skip(skip).Select(p => new { p.ContentID, p.DownIDs }).ToList();</div><div align="left"> </div><div align="left">                if (links.Count() == 0)</div><div align="left">                {</div><div align="left">                    break;</div><div align="left">                }</div><div align="left"> </div><div align="left">               </div><div align="left">                for (int i = 0; i < links.Count; i++)</div><div align="left">                {</div><div align="left">                    string[] downIDs = new string[] { };</div><div align="left">                    if (string .IsNullOrEmpty(links[i].DownIDs))</div><div align="left">                    {</div><div align="left">                        continue;</div><div align="left">                    }</div><div align="left"> </div><div align="left">                    downIDs = links[i].DownIDs.Split( ',');</div><div align="left"> </div><div align="left"> </div><div align="left">                    for (int j = 0; j < downIDs.Length; j++)</div><div align="left">                    {</div><div align="left">                        int contentId = links[i].ContentID;</div><div align="left">                        int downId = Convert .ToInt32(downIDs[j]);</div><div align="left">                        var query = db.YYY.FirstOrDefault(p => p.ContentID == contentId && p.DownID == downId);</div><div align="left">                        if (query == null )</div><div align="left">                        {</div><div align="left">                            db.YYY.Add( new Y{ ContentID = contentId, DownID = downId, DateAdded = DateTime .Now });</div><div align="left"> </div><div align="left">                        }</div><div align="left">                    }</div><div align="left"> </div><div align="left">                }</div><div align="left">                db.SaveChanges();</div><div align="left">                context.Response.Write( "<br>");</div><div align="left">                context.Response.Write(links.Count());</div><div align="left">                context.Response.Flush();</div><div align="left">                page++;</div><div align="left">                System.Threading. Thread.Sleep(100);</div><div align="left">            }</div></div></div></div>

阅读剩余部分 -

js多个tab切换简单不需要在body内添加事件

<p>不多说了贴代码了!注意的是a的里面的rel属性window.onload事件!在一个页面可以添加多个这样的效果,只需要在 onload事件添加就可以了。</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
<html>   
<head>   
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
<style>   
    {margin:0;padding:0;}   
    .clearfix:after {content:".";display:block;height:0;clear:both;visibility:hidden;}    
    
html .clearfix{height:1%;}   
    *+html .clearfix{height:1%;}   
    .clearfix{display:inline-block;}     
    .clearfix {display:block;}    
    ul{margin:10px 10px 0;}   
    ul li{background:#ddd; list-style:none;padding-top:5px; vertical-align:bottom}   
    ul li a{padding:5px 10px;margin-left:5px;text-decoration:none;font-size:12px;color:#000;float:left;}   
    ul li .crent{background:#fff;color:#f60;}   
    p{display:none;border:1px solid #ddd;border-top:none;margin:0 10px 10px;padding:5px;}   
</style>   
<title>Example</title>   
<script type="text/javascript">   
function $(objID){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&quot;string&quot;&nbsp;==&nbsp;typeof(objID)&nbsp;?&nbsp;document.getElementById(objID)&nbsp;:&nbsp;objID;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />function&nbsp;addEvt(tab,ct){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ctab&nbsp;=&nbsp;$(tab).getElementsByTagName("a");   
    var cdiv = $(ct).getElementsByTagName("p");   
    for(var i = 0;i<ctab.length;i++)   
    {    
        ctab[i].onclick =function std(){               
            for(var i = 0;i<ctab.length;i++){   
                if(i!=parseInt(this.rel-1))   
                {   
                    ctab[i].className="";   
                    cdiv[i].style.display="none";                      
                }   
            }   
            ctab[parseInt(this.rel)-1].className="crent";   
            cdiv[parseInt(this.rel)-1].style.display="block";   
        }   
    }   
}   
window.onload=function(){   
addEvt("tab","ct");   
addEvt("tab2","ct2");   
}   
</script>   
</head>   
<body>   
<div id="all1">   
  <ul class="ul_bigspace" id="tab">   
    <li class="clearfix"><a href="#" class="crent" rel="1">平面设计</a><a href="#" rel="2">包装设计</a><a href="#" rel="3">影视广告片</a><a href="#" rel="4">媒介资源</a><a href="#" rel="5">网站设计</a><a href="#" rel="6">网站设计</a></li>   
  </ul>   
  <div id="ct">   
    <p style="display:block;">1</p>   
    <p>2</p>   
    <p>3</p>   
    <p>4</p>   
    <p>5</p>   
    <p>6</p>   
  </div>   
  <br>   
  <ul class="ul_bigspace" id="tab2">   
    <li class="clearfix"><a href="#" class="crent" rel="1">平面设计</a><a href="#" rel="2">包装设计</a><a href="#" rel="3">影视广告片</a><a href="#" rel="4">媒介资源</a><a href="#" rel="5">网站设计</a><a href="#" rel="6">网站设计</a></li>   
  </ul>   
  <div id="ct2">   
    <p style="display:block;">1</p>   
    <p>2</p>   
    <p>3</p>   
    <p>4</p>   
    <p>5</p>   
    <p>6</p>   
  </div>   
</div>   
</body>   
</html>  </p>

阅读剩余部分 -

谷agent不能正常使用的解决办法

Go.Agent是 一个非常给力的软件,也是目前使用最多,最广泛的谷歌应用之一,七零八落介绍了不少Go.Agent的文章,但即使我们如何努力,也不可能兼顾到在所有的环 境中均进行go.agent的测试。这也导致了很多童鞋提出异议,当然也有不少的童鞋解决了问题后给出了反馈。基于Go.Agent的使用情况及收到的反馈信 息,七零八落针对Go.Agent无法访问的请况,收集整理如下:

阅读剩余部分 -

asp.net mvc中使用Dropdownlist

<div><p>例1:如果在Action方法中有如下代码:</p><p>List<SelectListItem> items = new List<SelectListItem>(); items.Add(new SelectListItem { Text = "Kirin", Value = "29" });
items.Add(new SelectListItem { Text = "Jade", Value = "28", Selected = true});
items.Add(new SelectListItem { Text = "Yao", Value = "24"});
ViewData["list"] = items;</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>在View中这样使用:<%=Html.DropDownList("list")%> </p><p>例2:如果Action中代码如下:</p><pre>List<SelectListItem> items = new List<SelectListItem>(); items.Add(new SelectListItem { Text = "Kirin", Value = "29" }); items.Add(new SelectListItem { Text = "Jade", Value = "28"}); items.Add(new SelectListItem { Text = "Yao", Value = "24"}); this.ViewData["list"] = items; this.ViewData["selected"] = 24;</pre><p>View中的代码如下:</p><pre><%=Html.DropDownList("selected", ViewData["list"] as IEnumerable<SelectListItem>)%></pre><pre> </pre><p>那么辅助方法将ViewData["list"]绑定为下拉框,然后从ViewData中获取key为selected的项,并将下list中Value值与该项的值相等的SelecteListItem设为默认选中项。</p><p>以上两种方法尽管可以实现DropDownList的正确显示,但并非最佳实践。</p><p> </p><p>最佳方法:</p><p>ASP.NET MVC为DropDownList和ListBox(都在html中使用select标记)准备了一个辅助类型:SelectList。SelectList继承自MultiSelectList,而后者实现了IEnumerable<SelectListItem>。也就是说,SelectList可以直接作为Html.DropDownList方法的第二个参数。</p><p>MultiSelectList包含四个属性,分别为:</p><ul> <li>Items:用于在select标记中出现的列表,通常使用option标记表示。IEnumerable类型。</li> <li>DataTextField:作为option的text项,string类型。</li> <li>DataValueField:作为option的value项,string类型。</li> <li>SelectedValues:选中项的value值,IEnumerable类型。</li></ul><p>显然,作为DropDownList来说,选中项不可能为IEnumerable,因此SelectList提供了一个新的属性:</p><ul> <li>SelectedValue:选中项的value值,object类型。</li></ul><p>同时,SelectList的构造函数如下所示:</p><pre>public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue) : base(items, dataValueField, dataTextField, ToEnumerable(selectedValue)) { SelectedValue = selectedValue; }</pre><p>于是我们的代码变为:</p><pre>var users = GetUsers(); var selectList = new SelectList(users, "Age", "Name", "24"); this.ViewData["list"] = selectList;</pre><pre><%=Html.DropDownList("list")%></pre><pre>这才是MVC最佳方案</pre></div>

阅读剩余部分 -

asp.net Web API

如果ajax请求数量增长,asp.net mvc基于JsonResult的控制器操作无法满足高级ajax请求,可以使用Web API来处理AJAX请求

注册Web API路由

routes.MapHttpRoute(
name:"defaultApi",
routeTemplate:"api/{controller}/{id}",
defaults:new{id=RouteParameter.Optional}
);

阅读剩余部分 -

WCF事务

<div><p>事务是并发控制的基本单位.是一个操作序列,这些操作要么执行,要么都不执行,它是不可分割的单元</p><p>WCF事务模式</p><p>None:不启用事务  </p><p>Client 客户端启用,强制服务参与</p><p>Service 服务启用</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>Client/Service:客户端或服务本身启用事务</p><p>WCF事务模式配置</p><p>Client/Service 最常见的一种事务模型,通常由客户端或服务本身启用一个事务,步骤:</p><p>1.选择一个支持事务的Binding 设置TransactionFlow=true</p><p>2.设置TransactionFlow(TransactionFlowOption.Allowed)</p><p>3.操作上启用事务,设置OperationBehavior(TransactionScopeRequired=true)</p><p>Client 客户端强制启用事务,强制服务必须参与事务,步骤:</p><p>1.选择一个支持事务的Binding 设置TransactionFlow=true</p><p>2.设置TransactionFlow(TransactionFlowOption.Mandatory)</p><p>3.操作上启用事务,设置OperationBehavior(TransactionScopeRequired=true)</p><p>Service事务 服务必须启用一个根事务,而且不参与任何外部事务,设置步骤:</p><p>1.选择任何一种Binding,设置TransactionFlow=false</p><p>2.设置TransactionFlow(TransactionFlowOption.NotAllowed)</p><p>3.操作上启用事务,设置OperationBehavior(TransactionScopeRequired=true)</p><p>WCF事务管理协议</p><p>WCF事务传播</p><p>//使用事务域</p><p>using(TransactionScope ts=new TransactionScope())</p><p>{</p><p>     //这里所有代码都会做为一个事务去执行</p><p>     Console.WriteLine("调一下服务");    </p><p>     .....</p><p>     ts.Complete(); //如果正常,通知事务管理器提交事务</p><p>}</p></div>

阅读剩余部分 -

浏览器缓存位置更改

<div><p>想换下浏览器缓存位置,以下是实践有效的解决方案</p><p>
一、Chrome浏览器缓存设置:
  有两种方法
   方法1:适用于win7用户的mklink命令
     1.指定位置创建Chrome 缓存文件的文件夹,例如 D:ChromeCache ,名字随意。
     2.删除 C:Users&quot;你的用户名"AppDataLocalGoogleChromeUser DataDefault 下的 Cache 文件夹,也就是Chrome 的默认缓存文件夹。</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>
     3.在运行里输入CMD回车
     4.运行以下命令:mklink /D "C:Users&quot;你的用户名"AppDataLocalGoogleChromeUser DataDefaultCache" "D:ChromeCache"

   方法2: 手动设置缓存
     Chrome浏览器的参数:
       -disk-cache-size 自定义缓存大小
       -disk-cache-dir  是上网缓存目录
       -user-data-dir   是用户数据目录
     右击Chrome浏览器快捷方式,选择属性--目标 在最后添加一个空格,并写上以上参数
例子:让上网缓存保存在D:cache中
     "C:Documents and SettingsAdministratorLocal SettingsApplication DataGoogleChromeApplicationchrome.exe" -user-data-dir=d:Cache

google浏览器离线版安装程序 地址 http://www.google.cn/intl/zh-CN/chrome/business/browser/
二、火狐浏览器缓存设置:
  在地址栏输入about:config  --> 
     1、右键新建字符串 "browser.cache.disk.parent_directory(硬盘缓存)" 设置值为你需要调整的路径,例如d:Firefox Cache。
     2、新建字符串“browser.cache.offline.parent_directory"(脱机缓存)”设置值为你需要调整的路径,例如d:Firefox Cache。
     3、检查 browser.cache.disk.enable和browser.cache.offline.enable两个字符串的值必须为 true 才可以保障设置的缓存路径有效。
     4、地址栏输入about:cache 查看缓存路径已经更改。
  当然火狐缓存设置用mklink的方式也是可以的。

三、IE浏览器缓存设置:Internet 选项 -> 浏览器历史 --> 设置。


四,如果想把浏览器缓存放到内存中运行
   这是可行的,这样做可以减少硬盘碎片,提升读写速度,从而快速浏览器网页
   用到一款软件(点这个链接),它可以将内存虚拟成一个磁盘,我自己用的
   安装好后,新建个Ram镜像,设好大小,把缓存指向新建的虚拟盘即可</p></div>

阅读剩余部分 -

随机文章

最近回复

分类

其它

友情连接

推广链接