小编r_h*_*ney的帖子

在Sql Server中按位AND

我有一个非常典型的情况.我们有一个名为Users的表,它有一个名为Branches(varchar 1000)的列.

该组织可以拥有1000个分支机构.因此,如果用户有权访问分支1,5和10,则分支字符串将如下所示:

1000100001000000000 ......

(即,根据分支的编号,用户具有分支访问权限的位置为1).请不要建议更好的数据存储选项,这是从遍布各大洲的遗留应用程序中找到的.

现在给出了这个背景(考虑到可以有> 10000个用户),我想搜索有权访问任何一组给定分支的所有用户,例如查找有权访问任何一个分支的所有用户10,65,90或125.

一个简单的解决方案是将所需的分支集(即10,65,90,125)转换为分支字符串(00000010100等),然后使用标量UDF迭代两个分支字符串并在第一次匹配出现时返回true 2个分支字符串有1个,如果在公共位置没有1,则为false.

除此之外,我还可以选择在C#中搜索应用程序.其中一些用户具有特权(大约1000或更多),并且他们的数据在应用程序中缓存,因为它经常被访问.但对于没有特权的其他用户,数据仅在db中.

我在这里有两个问题:1)对于数据库搜索,除了我提到的UDF方法之外,还有更好的方法.2)对于特权用户,在性能方面更好,在应用程序中搜索(进一步可以基于UDF中的分支字符串上的for循环,或者作为2个分支数组上的Linq Intersect运算符,即Linq Intersect在[1,5,9,50,80,200]和[6,90,256,300]等.)数据库搜索会产生更快的结果还是基于应用程序的搜索?

考虑在这两种情况下可能还有其他搜索参数,例如,姓氏以.开头.

我目前的方法是首先在其他参数(如Last name starts with)上为这两种情况过滤db中的行.然后使用标量UDF根据分支过滤此结果集,然后返回结果.

sql-server bit-manipulation

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

Sql Server - 外部应用与子查询

请考虑Sql Server中的以下2个语句:

这个使用嵌套子查询:

    WITH cte AS
(
    SELECT TOP 100 PERCENT *
    FROM Segments
    ORDER BY InvoiceDetailID, SegmentID
)
SELECT *, ReturnDate =
                (SELECT TOP 1 cte.DepartureInfo
                    FROM cte
                    WHERE seg.InvoiceDetailID = cte.InvoiceDetailID
                        AND cte.SegmentID > seg.SegmentID), 
            DepartureCityCode =
                (SELECT TOP 1 cte.DepartureCityCode
                    FROM cte
                    WHERE seg.InvoiceDetailID = cte.InvoiceDetailID
                        AND cte.SegmentID > seg.SegmentID)
FROM Segments seg
Run Code Online (Sandbox Code Playgroud)

这使用OUTER APPLY运算符:

    WITH cte AS
(
    SELECT TOP 100 PERCENT *
    FROM Segments
    ORDER BY InvoiceDetailID, SegmentID
)
SELECT seg.*, t.DepartureInfo AS ReturnDate, t.DepartureCityCode …
Run Code Online (Sandbox Code Playgroud)

sql sql-server common-table-expression

7
推荐指数
1
解决办法
8856
查看次数

SharePoint安全性继承基础实现

我的问题有两部分.如果我有一个包含10K文档的文档库,并且所有文档都设置为从库中继承权限,该库本身具有包含500个用户的显式ACL(即库不从站点继承安全性),则:

  1. 是否为每个设置为继承安全性的文档在SharePoint数据库中复制ACL.
  2. 如果我在列表中添加其他用户,则其底层实现中的SharePoint是否需要将该用户进一步添加到10K文档ACL.

如果1)的答案为否,那么2)的答案可能本身也不是,仍然希望确定并因此单独列出.

这对我们来说很重要的原因是:

  1. DL上有很多用户,DL继承安全性的文档很多.如果每个文档复制相同的内容,则意味着需要增加存储空间.
  2. 通过SP api呼叫在DL上频繁更新安全性.如果它需要按文件复制,我们需要在进行api调用时考虑相同的时间.

sharepoint sharepoint-security sharepoint-online

7
推荐指数
1
解决办法
150
查看次数

线程静态,ASP.NET和异步处理程序

请考虑这些sceanrios:

  1. 异步.ashx处理程序
  2. 异步.asmx Web服务方法
  3. 同步MVC 5控制器动作方法

我试图找出一种方法来设置"逻辑"特定数据,这些数据可以在"逻辑"http请求期间一致地访问,即,如果数据是在"BeginExecute"部分中的线程中设置的,那么该异步处理程序您会考虑,即使ASP.NET在不同的OS/.Net线程上执行"EndExecute"部分,该数据也可以在该asnc处理程序的"EndExecute"部分中使用.

此外,我希望在第二个请求被分配给先前分配给第一个http请求的线程的时候,在随后的http请求中,在"BeginExecute"部分中设置的任何OS/.Net线程中的数据都不可用.它位于"BeginExecute"部分,但是当第一个http请求进入异步操作时,该线程被释放(并且它可能仍在完成其异步操作).

我相信.Net中的"逻辑线程"或"逻辑线程上下文"这个词实际上意味着我提到的相同的"逻辑"操作流程(而不是继续重新分配的底层OS/.Net线程).如果从工作流角度来看,每个http请求都是一个新的"逻辑"操作(即使多个用户按顺序或并行调用相同的Web服务,每个请求都是一个新的和部分逻辑操作),并且在此意思是,"逻辑"操作是一次性的,不能重复.但是,相同的底层OS/.Net线程可以根据其可用性到达时映射到"逻辑"操作.

另外,我想将此数据公开为HttpContext.Current类的静态属性.对于某些人来说,这可能会让人感到意外,但如果您使用的是异步.asmx Web服务方法,则HttpContext.Current无法正常工作.我确信我已经阅读了网上的内容,其中说HttpContext.Current应该总是返回正确的HttpContext,但我在.asmx web-methods的EndExecuteMethod中看到它为null.如果有人可以确认我是否正确地做出我的最后陈述,那将是很好的,但这个陈述不是我试图在这里提出的整体问题.

在阅读了大量文献后(例如log4net.ThreadContext和log4net.LogicalThreadContext之间有什么区别?,http://msmvps.com/blogs/jon_skeet/archive/2010/11/08/the-importance-of-context -and-a-question-of-explicitness.aspx,http://blog.stephencleary.com/2013/04/implicit-async-context-asynclocal.html以及更多包括MSDN文档),以下是我的推论:

  1. ThreadStatic是底层OS/.Net线程的本地,而不是"逻辑"操作,因此在我的例子中; 如果第二个http请求被分配了与第一个线程的"BeginExecute"相同的线程,则在"BeginExecute"中的第一个http请求中设置的数据将在下一个http请求中可见.如果它恰好被.Net重新分配给另一个线程,那么这个数据在"EndExecute"中将不可用(在绝大多数情况下会发生这种情况).
  2. 对于我的用例,Thread.SetData甚至更成问题.它需要传入数据槽,如果我从Thread.GetNamedDataSlot的返回值传入数据槽,则该信息可在app域中获得; 由于命名数据​​槽在线程之间共享.
  3. CallContext.SetData类似于ThreadStatic(这意味着它不被app域共享,但是如果它们被分配到相同的底层OS/.Net线程,则不同的http请求将看到相同的数据).CallContext.SetData提供了一个额外的能力来编组RPC调用的上下文数据,这与当前提出的问题无关.
  4. 然后是ThreadLocal类(.Net 4/.Net 4.5).它本来可以解决我问题的一部分,我可以在BeingExecute操作的stateObject中传递它,并从endExecute操作的相同stateObject参数中提取.从这个角度来看,ThreadLocal似乎是为.Net的异步支持编写的.但是当我需要像HttpContext.Current那样访问它时它将无法工作,因为我无法看到保留"逻辑线程静态"实例(除非我在之前的3分中说错了).
  5. 最后似乎CallContext.LogicalSetData做了我打算实现的目标.使用CallContext.LogicalSetData和CallContext.LogicalGetData方法的集合,我应该能够实现HttpContext.Current这样的影响,它可以正常地用于"逻辑任务执行".

现在来问题:

  1. 我上面说的一切都是正确的.请更正我所做的任何和所有不正确的声明.
  2. 我错过了什么其他选项可用于.Net中的线程静态类功能.
  3. CallContext.LogicalSetData/LogicalGetData是否将上下文数据传递给RPC调用(msdn页面没有明确提及,http://msdn.microsoft.com/en-us/library/system.runtime.remoting.messaging.callcontext.logicalsetdata (v = vs.110).aspx).
  4. 使用CallContext.LogicalSetData/LogicalGetData是否有任何缺点(性能明智或其他方面).
  5. 本页介绍了LogicalSetData的写时复制行为:http://blog.stephencleary.com/2013/04/implicit-async-context-asynclocal.html.在异步处理程序/异步MVC 5操作方法的上下文中,如果使用logicalsetdata保存引用类型并稍后更改引用类型的状态会产生什么影响.什么是复发.
  6. 对于mutation/logicalsetdata/async,我仍然无法通过改变对象来看出问题是什么.当异步方法启动时,写入时复制行为将在下次调用logicalsetdata时触发上下文数据的副本.这是一个浅层副本,因此我的参考对象现在实际上由2个逻辑上下文共享,并且在另一个上下文中的更改在我通常期望的引用类型中是可见的.

一个很长的问题,有很多参考文献,但希望我做得很好,答案也会让其他人受益.

c# asp.net multithreading asynchronous threadstatic

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

挂钩到SharePoint服务器端

请注意我说的是将我的代码注入SharePoint服务器端(通过包/加载项等),而不是使用Microsoft.SharePoint.dll或通过Web服务访问SharePoint.

所以我的问题是,我需要自定义文档库的工作方式,包括自定义权限管理.我一直在浏览Microsoft.SharePoint.dll分析其工作的内部情况.以下是我的观察:

  1. SPDocumentLibrary提供管理文档库的核心逻辑.但是,它WebPart本身并不是一个.
  2. 文档库的实际Web部件呈现可能由ListViewWebPart或派生类处理.
  3. 实际上有一个SPPictureLibrary类使我假设可以继承SPDocumentLibrary类以在Document库上提供自定义行为.
  4. WebPartAdder.SiteWebPartGalleryProvider在某种程度上连接SPDocumentLibrary到其WebPart内部Microsoft.SharePoint.WebPartPages.WebPartAdder.AddSources方法.

现在所有这些都是客户端,这一切都不会发生在SharePoint服务器本身(afaik)上.但是我在SPSecurableObject那个SPDocumentLibrary/ SPList覆盖上看到了可覆盖的方法,具体来说:

  1. CheckPermissions
  2. GetUserEffectivePermissionInfo
  3. GetUserEffectivePermissions
  4. EffectiveBasePermissions

我真正想要做的是能够覆盖CheckPermissions/ EffectiveBasePermissionsSPDocumentLibrary内部SharePoint服务器上注入我的自定义逻辑.

我现在将我的研究转移到SharePoint服务器端dll并理解它们.但我希望得到一些关于这是否可行/指向正确方向的专家意见.Microsoft的标志(特别是考虑ASP.NET 2.0/ASP.NET MVC作为基准)是可扩展性/提供者框架.它们为开箱即用的"东西"提供了出色的提供程序,但您可以通过继承/实现某些东西来替换默认提供程序来创建类.所以:

  1. 我可以注入SharePoint服务器端吗?我理想的解决方案是创建一个SPDocumentLibrary派生类(服务器端),并将其注入,以便在实例化文档库时,我的类对象被创建(而不是SPDocumentLibrary假设它也是类服务器端.我仍然需要"反映"SharePoint服务器端类).
  2. 如果1)是nopes,我是否可以创建自定义WebPart以使用SharePoint文档库,使其具有本机文档库的感觉,但仍允许我在SPDocumentLibrary访问该Web部件时使用派生类(请再次注意,我所有的讨论都围绕着SharePoint服务器端,即我的代码在SharePoint的地址空间/ w3wp进程中执行.
  3. 为什么我们有逻辑SPSite.EffectiveBasePermissions可言.我的意思是它应该是CSOM,它应该只负责序列化/反序列化由/发送到服务器的内容.但是,我看到这个被覆盖的属性中的精细逻辑围绕着权限推断.
  4. 如果1)和2)都是无操作(字面意思:)),在SharePoint根据这些权限采取任何操作之前,在SharePoint的地址空间中操作时,是否有任何选项可以操纵SharePoint有效权限.

我知道这是一个很长的问题,但希望我能很好地完成我的研究.

sharepoint sharepoint-2010 sharepoint-2013 sharepoint-online sharepoint-2016

5
推荐指数
0
解决办法
122
查看次数

PHP:将虚拟路径转换为物理路径

是否可以将服务器相对虚拟路径转换为PHP中的物理路径?

例如,如果我有一个网址:

/home/index.php
Run Code Online (Sandbox Code Playgroud)

然后从某些其他脚本中找到index.php的物理路径?

php

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

将字节数组转换为IPAddress

.Net IPAddress类GetAddressBytes方法可用于将IPAddress转换为字节数组.

我的问题是我有这些字节数组,如何将它们转换回IPAddress对象,或IP字符串?(对于IPv4和IPv6都有一个解决方案很重要).

.net ip-address

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

我们可以 RDP / 安装第三方软件到 Azure App Service Web App

我在这方面阅读了大量文献(见下面的链接)。经典与新 Azure 管理门户、角色与应用服务、Azure 网站与 Azure Web 应用的存在只会使问题复杂化。虽然我相信我对这些术语有很好的理解,而后者在上述比较中或多或少是前者的改进后的化身,但文献主要使用这些术语编写,不一定描述新管理中可用的选项门户网站。

所以我真正期待非常清楚的是:

  1. 我可以 RDP 到 Azure 应用服务 Web 应用底层计算资源吗?
  2. 我可以将自定义的第三方软件组件(例如 Crystal Reports)安装到 Azure App Service Web App 底层计算资源吗?

参考文献 1

参考文献2

参考文献 3

参考文献 4

参考文献 5

参考文献 6

rdp azure azure-web-app-service

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