asp.net(C#)海量数据表高功用分页算法(易懂,不应用存款和储蓄进度)

兼任集团战略性的中长时间战略,定位产品研发比重

        
无论怎么样的小卖部,都会为团结的年份定义1个财务指标及今后的财务拉长指标。财务目的是战略发展的最后目的。财务的实践的襟怀是公司战略的进行和达成的指示器。财务目的一般是和可度量的好处唇揭齿寒的—比如,运行受益、ROI(投资回报)。一般景色下,财务战略是简化的,能够由此增销和节省本钱来获取更加多的入账。但,任何事情都有背景的,客户的亲切、六西格玛的品质执行等都能够抓好销售的增强和节约。一般请况下,咱们把财务执行的立异归纳于八个大旨的章程—收益增添和生产率提高。

        在无数铺面首先考虑的是现阶段的财务战略如何保管,保险当前的财务战略的除此之外会选择三种艺术:增强客户关系(通过市集表现),获取新的客户,扩张现有产品销售、附加价值销售、新产品的行销;增强内部的做事生产率,节约产品的资金(对于软件出品,方今已平稳和干练的软件出品,扶助在产品销售的基金(如,实施、服务开销)也十分的大)。

        
新产品、附加价值的行销,以后早已变成集团财务战略增加的要紧的关注点。我们都明白,新产品的研究开发、附加价值的换代,不是长时间就能一呵而就的,越发是对软件商店,一般都须求长达一年的年华,那样,新产品的研究开发,只万幸本财政年度扩展基金,而无法增收。而现有产品的确能够做到那么些指标。

        
在产品安排中,兼顾现有产品和新产品的预算比例和投入比重,是一对一关键。对于软件商店,现有产品和新产品,一般很难脱离衔接难题(比如,升级、版本包容等),对于那一个制品的连片设计,要凭借于系统架构的总体考虑,其实,产品的宏图中,首当其冲的是成品的架构划设想计,而架构设计一般很难为投资者所观望集镇收益。在许多商家,平常被忽视,从而不可能更好的狠抓具有竞争优势的出品布局。

        
在自家所领会的小卖部中,忽略产品的架构划设想计占绝超过一半,它们最后靠公司“牌子”(笔者把通过人脉关系也归入那类,所以加了个引号)和附加服务的不二法门来弥补那么些不足。架构所发生的结果(也即,后台的制品和看法)对于市集可销售的产品来讲,是个无形的资金。那个无形的资金要是能够更好的转换来有形的本金,将会生出非常的大利润拉长点。前边,作者会谈到什么更换无形资金财产为有形资金财产。

        
一言以蔽之,在考虑深远指标(新产品、附加价值)和长期目的(现有产品)之间赢得平衡时,把辅助短时间产品提升的成品架构(业务架构+技术框架结构)也充足考虑进入,并学会怎么着把产品架构转换为可盈利的市镇产品的措施。

        在小编的查证中,关怀深切目的的软件商店比关怀长时间目的的软件集团少的多,能够平衡好两者关系的软件公司更少。大家看自己和本身的四个对象的谈话记录。

本次,笔者先为乙公司的爱侣:

作者:“你们未来重庆大学忙什么?”

乙集团朋友:“忙XXX产品。”

本身:“XXX产品不是早便是产品了呗,还有不少事要做啊?”

乙企业朋友:“是的,现在,大家的研究开发核心的十分九以上的力量都在尊敬这么的产品。这一个产品的框架结构并未做好,大家都以在该代码,改来改去。”

本身:“那样的保卫安全格局,不是符合规律的成品珍视格局,你们的远非质量控制体系吗?你们没有对产品结构认真举行统一筹划吧?”

乙集团朋友:“质控种类曾经有了,依旧控制不住品质。产品架构据书上说过,但,公司的那个头头脑脑好像也不懂,说是下2个本子变化比较大,扩展了架构划设想计,好像没多少个在干。笔者也领会过,那多少人只是笑,在那之中1个说‘有起名,没实际’”

自家:“你们的下七个出品,肯定是漫长支撑你们的末Tesla品的”

乙公司朋友:“这几个不假,集团高层平昔都在宣扬这一个概念。至于能成为何,大家也不知情”

由此看来,乙公司确实有明显的长时间指标的设计打算,可惜,全部规划执行的保证种类不足。

一致,笔者也和甲集团的仇敌聊了聊。

本人:“小编听大人讲,你们集团平素是项目为主”

甲公司情人:“是的,公司向来正是这么。可是,大家商户相比重视重用的提炼,今后曾经提炼了成都百货上千的选取组件和底蕴块”

作者:“你们公司尚未考虑产品化”

甲公司情人:“小编也听我们老总说,公司正在向产品化转向,希望丰富利用那一个重用组件,而且尤其组建了贰个化解方案事业部,希望能够由此方案的分解,把一些产品能够分类出来,还准备建立产品委员会”

本身“你们这一个产品委员会和缓解方案事业部,人数众多呢?它们能赚取吗?”

甲集团情人:“近年来还不曾见毛利,据商行决策者讲,这一个今后的对象。毛利依然靠大家近来的八个事业部来保持。投入的人口也不少,可是,依然尚未我们现在的多。大概,1:3的涉嫌,也正是,大家有贰个人,它们有1私房“

大家从自身的这么些情侣中,得不出更现实的投资比例,但从大体上环境的讲述中,能够看出来,它们在专职长时间和漫长产品战略的接入格局和投入比重中远距离相当大。

 

未完待续……

相关小说:

自笔者心中中的软件出品的战略性设计制定和实施(二)http://www.cnblogs.com/Abbott/archive/2009/06/08/1499124.html

自家心头中的软件出品的韬略安插制定和履行(一)http://www.cnblogs.com/Abbott/archive/2009/06/07/1498239.html

        

 

率先创立一张表(必要ID自动编号):
create table redheadedfile(
id int identity(1,1),
filenames nvarchar(20),
senduser nvarchar(20),
primary key(id)
)
然后大家写入50万条记下:
declare @i int
set @i=1
while @i<=500000
begin
    insert into redheadedfile(filenames,senduser)
values(‘作者的分页算法’,’陆俊铭’)
    set @i=@i+1
end
GO
用Microsoft Visual Studio .NET
2002创造一张WebForm网页(本人起名webform8.aspx)
前台代码片段如下(webform8.aspx):
<%@ Page language=”c#” Codebehind=”WebForm8.aspx.cs”
AutoEventWireup=”false” Inherits=”WebApplication6.WebForm8″ %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” >
<HTML>
 <HEAD>
  <title>WebForm8</title>
  <meta content=”Microsoft Visual Studio .NET 7.1″
name=”GENERATOR”>
  <meta content=”C#” name=”CODE_LANGUAGE”>
  <meta content=”JavaScript” name=”vs_defaultClientScript”>
  <meta content=”http://schemas.microsoft.com/intellisense/ie5
name=”vs_targetSchema”>
 </HEAD>
 <body MS_POSITIONING=”GridLayout”>
  <form id=”Form1″ method=”post” runat=”server”>
   <asp:datalist id=”datalist1″
AlternatingItemStyle-BackColor=”#f3f3f3″ Width=”100%” CellSpacing=”0″
    CellPadding=”0″ Runat=”server”>
    <ItemTemplate>
     <table width=”100%” border=”0″ cellspacing=”0″
cellpadding=”0″>
      <tr>
       <td width=”30%”

align=”center”><%#DataBinder.Eval(Container.DataItem,”filenames”)%></td>
       <td width=”30%”

align=”center”><%#DataBinder.Eval(Container.DataItem,”senduser”)%></td>
       <td width=”30%”

align=”center”><%#DataBinder.Eval(Container.DataItem,”id”)%></td>
      </tr>
     </table>
    </ItemTemplate>
   </asp:datalist>
   <div align=”center”>共<asp:label id=”LPageCount”
Runat=”server” ForeColor=”#ff0000″></asp:label>页/共

<asp:label id=”LRecordCount” Runat=”server”
ForeColor=”#ff0000″></asp:label>记录
    <asp:linkbutton id=”Fistpage” Runat=”server”

CommandName=”0″>首页</asp:linkbutton>    <asp:linkbutton
id=”Prevpage” Runat=”server” CommandName=”prev”>

上一页</asp:linkbutton>    <asp:linkbutton
id=”Nextpage” Runat=”server”

CommandName=”next”>下一页</asp:linkbutton>    <asp:linkbutton
id=”Lastpage” Runat=”server”

CommandName=”last”>尾页</asp:linkbutton>    当前第<asp:label
id=”LCurrentPage” Runat=”server”

ForeColor=”#ff0000″></asp:label>页    跳页<asp:TextBox
ID=”gotoPage” Runat=”server” Width=”30px”

MaxLength=”5″ AutoPostBack=”True”></asp:TextBox></div>
  </form>
 </body>
</HTML>
后台代码片段如下(webform8.aspx.cs)
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Configuration;

namespace WebApplication6
{
 /// <summary>
 /// WebForm8 的摘要表明。
 /// </summary>
 public class WebForm8 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.LinkButton Fistpage;
  protected System.Web.UI.WebControls.LinkButton Prevpage;
  protected System.Web.UI.WebControls.LinkButton Nextpage;
  protected System.Web.UI.WebControls.LinkButton Lastpage;
  protected System.Web.UI.WebControls.DataList datalist1;
  protected System.Web.UI.WebControls.DropDownList mydroplist;
  protected System.Web.UI.WebControls.Label LPageCount;
  protected System.Web.UI.WebControls.Label LRecordCount;
  protected System.Web.UI.WebControls.Label LCurrentPage;
  protected System.Web.UI.WebControls.TextBox gotoPage;
  const int PageSize=20;//定义每页突显记录
  int
PageCount,RecCount,CurrentPage,Pages,JumpPage;//定义多少个保存分页参数变量
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   if(!IsPostBack)
   {
    RecCount = Calc();//通过Calc()函数获取总记录数
    PageCount = RecCount/PageSize +
OverPage();//总括总页数(加上OverPage()函数幸免有余数造成彰显

数据不完全)

    ViewState[“PageCounts”] = RecCount/PageSize –

ModPage();//保存总页参数到ViewState(减去ModPage()函数防止SQL语句执行时溢出查询范围,可以用存储进度分页算法来驾驭那句)
    ViewState[“PageIndex”] = 0;//保存2个为0的页面索引值到ViewState
    ViewState[“JumpPages”] =
PageCount;//保存PageCount到ViewState,跳页时判断用户输入数是不是当先页

码范围
    //显示LPageCount、LRecordCount的状态
    LPageCount.Text = PageCount.ToString();
    LRecordCount.Text = RecCount.ToString();
    //判断跳页文本框失效
    if(RecCount <= 20)
     gotoPage.Enabled = false;
    TDataBind();//调用数据绑定函数TDataBind()实行数据绑定运算
   }
  }
        //总计余页
  public int OverPage()
  {
   int pages = 0;
   if(RecCount%PageSize != 0)
    pages = 1;
   else
    pages = 0;
   return pages;
  }
        //计算余页,幸免SQL语句执行时溢出查询范围
  public int ModPage()
  {
   int pages = 0;
   if(RecCount%PageSize == 0 && RecCount != 0)
    pages = 1;
   else
    pages = 0;
   return pages;
  }
        /*
   *总结总记录的静态函数
  
*作者在此处运用静态函数的理由是:倘诺引用的是静态数据或静态函数,连接器会优化转移代码,去掉动态重定位项(对

海量数据表分页效果更显眼)。
   *可望大家给予意见、如有不科学的地点望指正。
  */
  public static int Calc()
  {
   int RecordCount = 0;
   SqlCommand MyCmd = new SqlCommand(“select count(*) as co from
redheadedfile”,MyCon());
   SqlDataReader dr = MyCmd.ExecuteReader();
   if(dr.Read())
    RecordCount = Int32.Parse(dr[“co”].ToString());
   MyCmd.Connection.Close();
   return RecordCount;
  }
        //数据库连接语句(从Web.Config中赢得)
  public static SqlConnection MyCon()
  {
   SqlConnection MyConnection = new
SqlConnection(ConfigurationSettings.AppSettings[“DSN”]);
   MyConnection.Open();
   return MyConnection;
  }
       
//对多个按钮(首页、上一页、下一页、尾页)重返的CommandName值实行操作
  private void Page_OnClick(object sender, CommandEventArgs e)
  {
   CurrentPage =
(int)ViewState[“PageIndex”];//从ViewState中读取页码值保存到CurrentPage变量中开始展览参数运


            Pages =
(int)ViewState[“PageCounts”];//从ViewState中读取总页参数运算

   string cmd = e.CommandName;
   switch(cmd)//筛选CommandName
   {
    case “next”:
     CurrentPage++;
     break;
    case “prev”:
     CurrentPage–;
     break;
    case “last”:
     CurrentPage = Pages;
     break;
    default:
     CurrentPage = 0;
     break;
   }
   ViewState[“PageIndex”] =
CurrentPage;//将运算后的CurrentPage变量再一次保存至ViewState
   TDataBind();//调用数据绑定函数TDataBind()
  }

  private void TDataBind()
  {
   CurrentPage =
(int)ViewState[“PageIndex”];//从ViewState中读取页码值保存到CurrentPage变量中展开按钮失

效运算
   Pages =
(int)ViewState[“PageCounts”];//从ViewState中读取总页参数实行按钮失效运算
   //判断三个按钮(首页、上一页、下一页、尾页)状态
   if (CurrentPage + 1 > 1)
   {
    Fistpage.Enabled = true;
    Prevpage.Enabled = true;
   }
   else
   {
    Fistpage.Enabled = false;
    Prevpage.Enabled = false;
   }
   if (CurrentPage == Pages)
   {
    Nextpage.Enabled = false;
    Lastpage.Enabled = false;
   }
   else
   {
    Nextpage.Enabled = true;
    Lastpage.Enabled = true;
   }
            //数据绑定到DataList控件
   DataSet ds = new DataSet();
   //大旨SQL语句,举行查询运算(决定了分页的功效:))
   SqlDataAdapter MyAdapter = new SqlDataAdapter(“Select Top
“+PageSize+” * from redheadedfile where id

not in(select top “+PageSize*CurrentPage+” id from redheadedfile order
by id asc) order by id asc”,MyCon());
   MyAdapter.Fill(ds,”news”);
   datalist1.DataSource = ds.Tables[“news”].DefaultView;
   datalist1.DataBind();
   //显示Label控件LCurrentPaget和文本框控件gotoPage状态
   LCurrentPage.Text = (CurrentPage+1).ToString();
   gotoPage.Text = (CurrentPage+1).ToString();
   //释放SqlDataAdapter
   MyAdapter.Dispose();
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所不可或缺的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
 
  /// <summary>
  /// 设计器帮忙所需的情势 – 不要接纳代码编辑器修改
  /// 此办法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Fistpage.Command += new
System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
   this.Prevpage.Command += new
System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
   this.Nextpage.Command += new
System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
   this.Lastpage.Command += new
System.Web.UI.WebControls.CommandEventHandler(this.Page_OnClick);
   this.gotoPage.TextChanged += new
System.EventHandler(this.gotoPage_TextChanged);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
        //跳页代码
  private void gotoPage_TextChanged(object sender, System.EventArgs
e)
  {
   try
   {
    JumpPage =
(int)ViewState[“JumpPages”];//从ViewState中读取可用页数值保存到JumpPage变量中
    //判断用户输入值是或不是超过可用页数范围值
    if(Int32.Parse(gotoPage.Text) > JumpPage
Int32.Parse(gotoPage.Text) <= 0)
    

Response.Write(“<script>alert(‘页码范围越界!’);location.href=’WebForm8.aspx'</script>”);
    else
    {
     int InputPage = Int32.Parse(gotoPage.Text.ToString()) –
1;//转换用户输入值保存在int型

InputPage变量中
     ViewState[“PageIndex”] =
InputPage;//写入InputPage值到ViewState[“PageIndex”]中
     TDataBind();//调用数据绑定函数TDataBind()再一次进行数量绑定运算
    }
   }
      //捕获由用户输入不正确数据类型时造成的不胜
   catch(Exception exp)
   {
   
Response.Write(“<script>alert(‘”+exp.Message+”‘);location.href=’WebForm8.aspx'</script>”);
   }
  }
 }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图