小编AT-*_*017的帖子

算法的时空复杂度 - 大O符号

我试图分析一个简单算法的Big- O -otation,并且我已经用了一段时间了.所以我根据以下代码的规则进行分析并试图弄清楚这是否正确:

public int Add()
{
  int total = 0; //Step 1

  foreach(var item in list) //Step 2
  {
    if(item.value == 1) //Step 3
    {
      total += 1; //Step 4
    }
  }
  return total;
}
Run Code Online (Sandbox Code Playgroud)
  1. 如果指定变量或集合,则在这种情况下,根据Big O的规则确定复杂度为O(1).所以第一阶段将是O(1) - 这意味着无论输入大小是什么,程序将执行相同的时间和内存空间.

  2. 第二步是foreach循环.循环中有一点很清楚.根据输入,循环迭代或运行.作为示例,对于输入10,循环迭代10次并且持续20次,20次.完全取决于输入.根据Big O的规则,复杂性将是O(n) - n是输入的数量.因此,在上面的代码中,循环根据列表中的项目数进行迭代.

  3. 在此步骤中,我们定义一个确定条件检查的变量(参见编码中的步骤3).在这种情况下,根据Big O规则,复杂度为O(1).

  4. 以相同的方式,在步骤4中,也没有变化(参见编码中的步骤4).如果条件检查为真,则total变量将值递增1.因此我们写 - 复杂度O(1).

因此,如果上述计算是完美的,那么最终的复杂性如下:

O(1) + O(n) + O(1) + O(1) or (O(1) + O(n) * O(1) + …
Run Code Online (Sandbox Code Playgroud)

algorithm big-o

6
推荐指数
1
解决办法
759
查看次数

三层架构与存储库模式

我正在尝试在 ASP.NET MVC 项目中使用三层体系结构和存储库模式。但在某些情况下,三层架构和存储库模式看起来几乎相同。所以我尝试研究以下内容以使其更加清晰:

存储库模式

N层架构

在那之后,我进入了以下实现代码,并希望有一些建议以更有效的方式改进实现:

型号- 部门类:

public class Department
{
   public int DepartmentID { get; set; }
   public string Code { get; set; }
   public string DepartmentName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

接口- IRepository 接口:

public interface IRepository
{
   public int Add(Student aStudent); //For Adding Students
   public int Add(Department aDepartment);  //For Adding Departments
} 
Run Code Online (Sandbox Code Playgroud)

DAL - DepartmentGateway 类:

public class DepartmentGateway : IRepository
{
   /****Repository Pattern - Starts****/
   Gateway aGateway = new Gateway();
   public int …
Run Code Online (Sandbox Code Playgroud)

sql asp.net-mvc three-tier repository-pattern

3
推荐指数
1
解决办法
2587
查看次数

在Windows服务中调用Web服务

我使用了一个简单的Windows服务来使方法在特定时间工作,它工作正常.之后我已经尝试过:

protected override void OnStart(string[] args)
{
    this.WriteToFile("Simple Service started {0}");
    this.ScheduleService();
}

protected override void OnStop()
{
    this.WriteToFile("Simple Service stopped {0}");
    this.Schedular.Dispose();
}

private Timer Schedular;

public void ScheduleService()
{
    try
    {
        Schedular = new Timer(new TimerCallback(SchedularCallback));
        string mode = ConfigurationManager.AppSettings["Mode"].ToUpper();
        this.WriteToFile("Simple Service Mode: " + mode + " {0}");

        //Rest of the code here
    }
    catch(Exception ex)
    {
        WriteToFile("Simple Service Error on: {0} " + ex.Message + ex.StackTrace);

        //Stop the Windows Service.
        using (System.ServiceProcess.ServiceController serviceController = new System.ServiceProcess.ServiceController("SimpleService")) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net web-services windows-services

2
推荐指数
1
解决办法
6768
查看次数

将指纹数据插入数据库表时出错

我正在从事一个目前已经建成并投入运行的项目。但是当我尝试将指纹从设备插入数据库表时出现问题。让我写一下它之前运行良好。但是当我设置新计算机或将项目移动到新环境中时,它会抛出异常:

由于以下错误,检索 CLSID 为 {00853A19-BD51-419B-9269-2DABE57EB61F} 的组件的 COM 类工厂失败:80040154 类未注册(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。

这是一个使用ZkemKeeper的指纹考勤系统,dll文件随项目一起附上。这是代码片段:

/**This is a list of the users from database that uses fingerprint system - Starts**/
List<AttMachineBO> lstfrom = new List<AttMachineBO>();

for (int i = 0; i < dgv_Machine.Rows.Count; i++)
{
   if (dgv_Machine.Rows[i].Cells[0].Value == null)
   {
      dgv_Machine.Rows[i].Cells[0].Value = false;
   }

   if ((bool)dgv_Machine.Rows[i].Cells[0].Value == true)
   {
      AttMachineBO obj = new AttMachineBO();
      obj.Mechine_No = dgv_Machine.Rows[i].Cells[1].Value.ToString();
      obj.Machine_Name = dgv_Machine.Rows[i].Cells[2].Value.ToString();
      obj.IP_Address = dgv_Machine.Rows[i].Cells[3].Value.ToString().Trim();

      lstfrom.Add(obj);
   }
} 
/**This is a list of the users …
Run Code Online (Sandbox Code Playgroud)

c# dll device zkemkeeper

2
推荐指数
1
解决办法
7589
查看次数

SQL Server中的哈希表数据结构

在过去的几天里,我一直在阅读一本关于数据结构的电子书,坦率地说,许多事情已经从我的脑海里消失了.只是审查它们并试图再次澄清.我正在浏览哈希表并再次熟悉它.所以我知道并且听说过,SQL Server在内部使用散列表,stackoverflow.com和forums.asp.net的许多线程询问在SQL Server中存储临时数据时是否创建散列表.因此,让我举一个我在使用临时表的存储过程中使用的示例:(避免它并且它太长了.仅举例)

第一名:

CREATE PROCEDURE [dbo].[Orders]
    @OrderLine int
AS
BEGIN
    DECLARE @t1 TABLE(Date1 date, 
                      OrderID VARCHAR(MAX), 
                      EmployeeName VARCHAR(MAX), 
                      DeliveryDate date, 
                      StoreName VARCHAR(MAX),
                      DeliveryAddress VARCHAR(MAX), 
                      ItemName VARCHAR(MAX), 
                      Quantity FLOAT)

    INSERT INTO @t1(Date1, OrderID, EmployeeName, DeliveryDate, StoreName, DeliveryAddress, ItemName, Quantity)
        (SELECT DISTINCT 
             CONVERT(VARCHAR(11), DemandOrder.POCreationDate, 6) AS DemandOrderDate, 
             DemandOrder.OrderID, EmployeeDetails.EmployeeName,
             CONVERT(DATE, DemandOrder.DeliveryDate) AS ExpectedDeliveryDate, 
             StoreDetails.StoreName,
             DemandOrder.DeliveryAddress, Item.ItemName, 
             DemandOrderLine.Quantity 
         FROM 
             DemandOrder 
         INNER JOIN 
             DemandOrderLine ON DemandOrder.OrderID = DemandOrderLine.OrderID 
         INNER JOIN 
             Item on DemandOrderLine.ItemID=Item.ItemID 
         INNER JOIN 
             EmployeeDetails ON EmployeeDetails.EmployeeID = DemandOrder.EmployeeID 
         INNER JOIN 
             StoreDetails …
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures hashtable sql-server-2008

1
推荐指数
1
解决办法
2万
查看次数