小编End*_*ace的帖子

如何检查用户是否具有SQL Server 2008 R2中的系统管理员权限

我有一个应用程序,只允许访问数据库上系统管理员的用户.我可以从c#代码执行什么sql脚本或查询,给定用户名,可以确定他/她是否具有系统管理员权限系统规格:sql2008R2 db,.net 2.0,c#

sql-server security sql-server-2008

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

如果使用接口应该一个类总是严格实现一个接口

提出这个问题的更好方法是如下例子:这两种方法的优点和缺点是什么?一个总是优于另一个或在特定情况下?如果使用Approach1,使用界面会没有意义吗?既然任何人都可以访问公共方法呢?

public interface IDoSomething
{
  void Method1(string operation, User user, string category)
  void Method2(string operation, User user)
  void Method3(string operation)
}

//Approach1
Class A: IDoSomething
{                              
  public void Method1(string operation, User user, string category)
  {
   //do some db logic here...
  }

  public void Method2(string operation, User user)
  {
    Method1(operation, user, "General");
  }

  public void Method3(string operation)
  {
    Method1(operation, User.GetDefaultUser(), "General");
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

//Approach2
Class A: IDoSomething
{                              
  void IDoSomething.Method1(string operation, User user, string category)
  {
   //do some logic here... …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns class

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

如何访问Grafana时间间隔范围以获取到ElasticSearch页面的DrillDown链接

我正在尝试在Grafana图表中将向下钻取链接添加到Elastic搜索链接。我可以使用面板中已定义的变量,但是在创建用于弹性搜索的URL时,我也想利用当前时间间隔。

我曾尝试根据不同的在线帖子在URL中使用以下变量,希望当单击URL时将它们替换为Grafana。

  • $ __间隔
  • $ timeInterval
  • $间隔

但是,nonw已转换为当前选择的时间范围值。

例如:Grafana中的网址:

https://elastic.local.dev/app/kibana#/discover?_g=(refreshInterval :( 暂停:!t,值:10000),时间:(fromnow- $ __ interval,mode:quick,to:now ))&_ a =(列:!(_ source),索引:'logs- *',间隔:自动,查询:(语言:lucene,查询:'严重性:FATAL%20AND%20%20 环境:$ environment '),排序:!('@ timestamp',desc))

用户单击图表时的预期网址:

https://elastic.local.dev/app/kibana#/discover?_g=(refreshInterval :( 暂停:!t,值:10000),时间:(from:now- 1h,mode:quick,to:now) )&_ a =(列:!(_ source),索引:'logs- *',间隔:自动,查询:(语言:lucene,查询:'严重性:FATAL%20AND%20%20 环境:开发 '),排序: !('@ timestamp',desc))

用户单击图表时的实际网址:

https://elastic.local.dev/app/kibana#/discover?_g=(refreshInterval :( 暂停:!t,值:10000),时间:(fromnow- $ __ interval,mode:quick,to:now ))&_ a =(列:!(_ source),索引:'logs- *',间隔:自动,查询:(语言:lucene,查询:'严重性:FATAL%20AND%20%20 环境:开发 '),排序:!('@ timestamp',desc))

$ environment变量已按预期替换,但未替换$ __ interval变量,这导致在尝试显示页面时Elastic Search无法正确解析URL。

SingleStat图表的向下钻取链接

elasticsearch grafana

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

捕获对象属性的更改

我的应用程序中有多个业务对象(C#、Winforms、WinXP)。当用户在 UI 上执行某些操作时,这些对象中的每一个都会被应用程序的不同部分修改和更新。每次修改后,我需要首先检查发生了什么变化,然后记录对对象所做的这些更改。记录此内容的目的是创建对应用程序中正在进行的活动的全面跟踪。

这些对象中的许多包含其他对象的列表,并且这种嵌套可以有几个级别深。任何解决方案的 2 个主要要求是

  1. 尽可能准确地捕捉变化
  2. 将性能成本保持在最低水平。

例如一个业务对象:

public class MainClass1
{
    public MainClass1()
    {
        detailCollection1 = new ClassDetailCollection1();
        detailCollection2 = new ClassDetailCollection2();
    }

    private Int64 id;
    public Int64 ID
    {
        get { return id; }
        set { id = value; }
    }

    private DateTime timeStamp;
    public DateTime TimeStamp
    {
        get { return timeStamp; }
        set { timeStamp = value; }
    }

    private string category = string.Empty;
    public string Category
    {
        get { return category; }
        set { category …
Run Code Online (Sandbox Code Playgroud)

c# audit enterprise

5
推荐指数
1
解决办法
3541
查看次数

构造函数内部或外部的成员初始化

两种初始化哪一种更好?

public class ServiceClass
{
    private DataManager dataManager = new DataManager();
    private Dictionary<string, string> stringDictionary = new Dictionary<string, string>();
    private Dictionary<string, DateTime> timeDictionary = new Dictionary<string, DateTime>();
    public ServiceClass()
    {
        //other object creation code
    }
}
Run Code Online (Sandbox Code Playgroud)

或者

public class ServiceClass
{
    private DataManager dataManager;
    private Dictionary<string, string> stringDictionary;
    private Dictionary<string, DateTime> timeDictionary;
    public ServiceClass()
    {
       dataManager = new DataManager();
       stringDictionary = new Dictionary<string, string>();
       timeDictionary = new Dictionary<string, DateTime>();
       //other object creation code
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# coding-style

5
推荐指数
2
解决办法
1221
查看次数

TFS未在目标位置显示Dev分支以进行合并

s/w版本:TFS2008服务器,VS2010,windows xp

我在TFS中有以下分支结构

  • $/Root/Main Branch
  • $ /根/开发/ PROJECT1

几个月前,Project1从主分公司分支出来.现在我需要将Main Branch中的最新代码合并到Project1分支.在此期间,一些新文件夹被添加到主分支.(主分支/ CoreDataClasses/..).因此,当我尝试使用合并向导将此新文件夹合并到Project1分支时,我在目标分支列表中看不到Project1分支.为什么TFS没有在目标分支列表中显示我的dev分支?

merge tfs tfs2008 visual-studio-2010 visual-studio

5
推荐指数
1
解决办法
5366
查看次数

反射测试未显示预期数字

我已经编写了一些测试代码,用于比较使用直接属性访问或使用委托的反射或反射的性能.但是我得到的结果令人费解,因为它表明反射并不比直接属性访问慢得多(约4%),我认为这不是真的.有人能告诉我,我在这里做错了吗?


对于5000件物品,我得到以下结果

  • 直接访问:32.2609秒
  • 反射:33.623秒反射
  • 使用代表:31.7981秒

码:

private static Random random = new Random((int)DateTime.Now.Ticks);
Private Dictionary<string, Delegate> delegateList = new Dictionary<string, Delegate>(); 
private List<ReflectClass1> dataList = new List<ReflectClass1>();

    private void TestMethod2<T>()
    {
        foreach (var propertyInfo in typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance))
        {
            if (propertyInfo.PropertyType.BaseType != typeof(ValueType))
            {
                Func<T, object> getPropDelegate =
                    (Func<T, object>) Delegate.CreateDelegate(typeof (Func<T, object>), null, propertyInfo.GetGetMethod());
                delegateList.Add(propertyInfo.Name, getPropDelegate);
            }
            //else
            //{
            //    Type propertyType = propertyInfo.PropertyType.GetType();
            //    delegateList.Add(propertyInfo.Name,
            //                     Delegate.CreateDelegate(typeof(Func<T, TResult>), null, propertyInfo.GetGetMethod()));
            //}
        }
    }
    //http:_//stackoverflow.com/questions/1122483/c-random-string-generator     
    private string RandomString(int size) …
Run Code Online (Sandbox Code Playgroud)

c# reflection performance delegates c#-4.0

5
推荐指数
1
解决办法
337
查看次数

协议缓冲消息的字节顺序

背景:

C++程序在服务器上运行,并在协议缓冲区文件中输出网络数据.数据包含IP地址和端口等.ip和端口在文件中保存为uint32值.C++程序在带有intel处理器的linux服务器上运行

我有一个C#应用程序读取此文件并使用数据进行分析.C#应用程序在带有intel处理器的Windows 7机器上运行.我正在使用Jon Skeet的protobuf-csharp端口来读取C#中的protobuf.

在读取数据时,我看到ip和port值的字节顺序是大端,我需要在我的应用程序中使用它之前将其反转.

题:

即使机器处理器是intel(我搜索的是使用小端格式),协议是否以大端格式缓冲输出值?

有什么方法可以在将数据保存到文件时强制字节顺序为小端,以便在读取时节省处理?

c# protocol-buffers

5
推荐指数
1
解决办法
2480
查看次数

单个sqlconnection中的多个sqltransactions

我有一些要执行的代码,如下所示。但是在第二次迭代中,我不断收到异常“此SqlTransaction已完成;它不再可用”。有人可以帮我指出我在这里做错了吗?谢谢!

    SqlConnection cn = (SqlConnection)SqlConnectionManager.Instance.GetUserConnection(user);
 cn.Open();
 try
 {
    foreach (Master mRecord in masterList)
  {
   if (sqlTransaction == null)
       sqlTransaction = cn.BeginTransaction();
   SqlCommand cm = cn.CreateCommand();
   cm.Transaction = sqlTransaction;
   cm.CommandType = CommandType.StoredProcedure;
   cm.CommandText = "pr_InsertRecords";
       try
   {
    cm.ExecuteNonQuery();
    Debug.WriteLine("Auditor.Write: end sql table value param");
    sqlTransaction.Commit();
    sqlTransaction.Dispose();
   }
   catch (Exception Ex)
   {
    Debug.WriteLine(" Exception message: " + Ex.Message);
    if (Ex.InnerException != null)
    {
     Debug.WriteLine("Inner exception message" + Ex.InnerException.Message);
    }
    sqlTransaction.Rollback();
   }
  }
 }
 finally
 {
        cn.Close();
      }
Run Code Online (Sandbox Code Playgroud)

c# database sqlconnection sqltransaction

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

提高并发字典访问效率c#

我有一个列表,由多个后台线程访问以进行更新/读取.更新操作包括插入和删除.

为了在没有同步问题的情况下同时执行此操作,我在类中使用了一个私有只读对象的锁.

为了最大限度地减少我在读取数据时需要锁定列表的时间,我会对其进行深度克隆并返回深度克隆并解锁字典以进行插入/删除更新.

因此,每次读取列表都会增加我的服务的内存消耗.

需要注意的一点是,插入/删除是包含列表的类的内部.但阅读是为了公共消费.

我的问题是:

有什么办法,我可以避免克隆列表并仍然使用它同时使用读/写锁读取?

public class ServiceCache
    {
        private static List<Users> activeUsers;
        private static readonly object lockObject = new object();
        private static ServiceCache instance = new ServiceCache();

        public static ServiceCache Instance
        {
            get
            {
                return instance;
            }
        }

        private void AddUser(User newUser)
        {
            lock (lockObject)
            {
                //... add user logic
            }
        }

        private void RemoveUser(User currentUser)
        {
            lock (lockObject)
            {
                //... remove user logic
            }
        }

        public List<Users> ActiveUsers
        {
            get
            {
                lock (lockObject)
                {
                    //The cache …
Run Code Online (Sandbox Code Playgroud)

c# concurrency locking list c#-4.0

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

带有许多字符串变量导致内存问题的类

背景:我有一个2类A和B.A类包含1个int64,1个int,1个datetime,6个字符串,1个字节[]和一个B类对象列表.

B类包含2个Int64,1个枚举(4个值),5个字符串.

A类和B类之间具有主要的细节关系.A类的列表中可以有0个或更多B类对象.

这些对象用于存储我们的数据库的搜索结果.

我们有一个SOA架构.客户端可以使用特定日期范围和一组固定标准进行搜索.我们在服务上使用这些来收集搜索结果并将它们分批推送到客户端.发送每个批次后,我们从服务中删除这些对象.

问题:如果用户进行的搜索返回200k结果(A类+ B类组合计数),则服务内存消耗将跳跃200mb.但是,如果后续搜索仅返回少量结果,则内存不会返回其先前的状态.当我查看服务的性能计数器时,我发现gen2对象占用了大量内存.

在不尝试执行GC.Collect()的情况下,如何确保更快地返回内存?我虽然在A类和B类上使用IDisposable接口,但由于它们中的大多数字段都是字符串,我不知道如何强制处理它们.

.net c# performance memory-leaks memory-management

0
推荐指数
1
解决办法
186
查看次数