我一直在使用这个(和这个)脚本来删除旧的sharepoint备份,但它会删除所有备份而不是14天以上的备份.
我通过powershell_ise.exe运行它并在其中包含的行下面放置一个断点$_.SPStartTime,它显示$_.SPStartTime =好像没有填充日期.我查看里面$sp.SPBackupRestoreHistory.SPHistoryObject,包含我期望的数据.
有问题的部分是在这一行:
# Find the old backups in spbrtoc.xml
$old = $sp.SPBackupRestoreHistory.SPHistoryObject |
? { $_.SPStartTime -lt ((get-date).adddays(-$days)) }
Run Code Online (Sandbox Code Playgroud)
我得到了所有的日期输出(我期望).这告诉我'where'或'?'中的问题 - 我知道它们是可以互换的.无论如何,$ old似乎总是为空.
按照要求:
<?xml version="1.0" encoding="utf-8"?>
<SPBackupRestoreHistory>
<SPHistoryObject>
<SPId>a8a03c50-6bc2-4af4-87b3-caf60e750fa0</SPId>
<SPRequestedBy>ASERVER\AUSER</SPRequestedBy>
<SPBackupMethod>Full</SPBackupMethod>
<SPRestoreMethod>None</SPRestoreMethod>
<SPStartTime>01/09/2011 00:00:13</SPStartTime>
<SPFinishTime>01/09/2011 00:05:22</SPFinishTime>
<SPIsBackup>True</SPIsBackup>
<SPConfigurationOnly>False</SPConfigurationOnly>
<SPBackupDirectory>E:\Backups\spbr0003\</SPBackupDirectory>
<SPDirectoryName>spbr0003</SPDirectoryName>
<SPDirectoryNumber>3</SPDirectoryNumber>
<SPTopComponent>Farm</SPTopComponent>
<SPTopComponentId>689d7f0b-4f64-45d4-ac58-7ab225223625</SPTopComponentId>
<SPWarningCount>0</SPWarningCount>
<SPErrorCount>0</SPErrorCount>
</SPHistoryObject>
<SPHistoryObject>
<SPId>22dace04-c300-41d0-a9f1-7cfe638809ef</SPId>
<SPRequestedBy>ASERVER\AUSER</SPRequestedBy>
<SPBackupMethod>Full</SPBackupMethod>
<SPRestoreMethod>None</SPRestoreMethod>
<SPStartTime>01/08/2011 00:00:13</SPStartTime>
<SPFinishTime>01/08/2011 00:05:26</SPFinishTime>
<SPIsBackup>True</SPIsBackup>
<SPConfigurationOnly>False</SPConfigurationOnly>
<SPBackupDirectory>E:\Backups\spbr0002\</SPBackupDirectory>
<SPDirectoryName>spbr0002</SPDirectoryName>
<SPDirectoryNumber>2</SPDirectoryNumber>
<SPTopComponent>Farm</SPTopComponent>
<SPTopComponentId>689d7f0b-4f64-45d4-ac58-7ab225223625</SPTopComponentId>
<SPWarningCount>0</SPWarningCount>
<SPErrorCount>0</SPErrorCount>
</SPHistoryObject>
</SPBackupRestoreHistory>
Run Code Online (Sandbox Code Playgroud) 我试图?在Postgres数据库中存储一些文本(例如),但是当检索此值时,它在屏幕上显示为?.我不确定为什么这样做,我的印象是它是一个UTF-8不支持的角色,但是是UTF-8,但是,从第一个答案来看,这是一个不正确的假设.
原始问题(可能仍然有效):
我已经阅读过关于UTF-8 Surrogate对的内容,它可以实现我的要求,并且我已经看到了一些涉及该
stringinfo对象的示例TextElementEnumerators,但我无法找出实际的概念证明.有人可以提供一个示例,说明如何编写和读取UTF-16(可能使用此代理对概念)到postgres数据库.谢谢.
更新的问题:为什么将?字符作为问号从数据库返回?
我们使用NPGSQL访问数据库和VB.Net.
我想将一个对象数组拆分为多个包含不超过 10 个元素的数组。
花了很长时间查看示例,我能找到的最接近的是 C# 中的示例:
Enumerable.Range(0, 100).Select((Value, Index) => new {Value, Index})
.GroupBy(p => p.Index/10)
.Select(g => g.Select(p => p.Value).ToList())
Run Code Online (Sandbox Code Playgroud)
它在 LinqPad 中运行并工作,所以我尝试将其转换为 VB.Net:
Enumerable.Range(0, 100).Select(Function(Value, Index) New With {Value, Index}) _
.GroupBy(Function(x) x.Index / 10) _
.Select(Function(g) g.Select(Function(p) p.Value).ToList())
Run Code Online (Sandbox Code Playgroud)
但这并没有给出相同的结果,尽管看起来应该如此。
显然这只是一个例子,我真的希望它能够处理一系列海关对象。(加分点:为什么这两个例子不等价?)。
我一直想发送可以跨网站串行化的对象,比如字典或异常(因为我很反常).
我知道例如在字典中,我不应该发送自定义对象(作为值部分),以防我在Web服务上升级类库,但不在客户端上,因为这会导致字节数组不匹配它无法在另一端正确反序列化.
但我没有看到异常或图像对象等问题?
还有其他原因,比如我应该注意的性能问题吗?
如果我仔细使用它,这是一种有效的Web服务方法吗?这更像是一个理论问题,因此任何对答案的阐述都将受到赞赏.谢谢.
我有一个类,其中有两个方法,一个调用一个创建并执行多个线程的类,另一个是一个事件处理程序,它处理在这些线程完成时引发的事件(然后再次调用第一个方法).
我知道处理事件的方法在引发事件的线程中运行.因此,我SyncLock一个成员变量,说明正在运行多少个线程并从中减去一个:
SyncLock Me ' GetType(me)
_availableThreads -= 1
End SyncLock
Run Code Online (Sandbox Code Playgroud)
所以我有几个问题:
主要问题:我是否应该在类中的任何地方使用SyncLock'ing _availableThreads - 即在创建线程的方法中(在创建线程时添加1)
与此问题相关的附带问题:
我通常会同步SyncLock当前的实例,但我已经看到了SyncLocks类型的代码,那么同步锁定SyncLock(Current Instance)和_availableThreads?之间的区别是什么?
这两者之间会有性能差异吗?并且有什么小的我可以锁定以上不影响其他任何东西 - 可能是一个单独的'挂锁'对象创建的唯一目的是锁定类中的东西?
注意:_available线程的唯一目的是控制在任何给定时间可以运行的线程数,并且线程处理可能需要数小时才能运行的作业.
码:
Public Class QManager
Private _maxThreadCount, _availableThreads As Integer
Public Sub New(ByVal maxThreadCount As Integer)
Me.MaximumThreadCount = maxThreadCount
End Sub
Public Sub WorkThroughQueue()
//get jobs from queue (priorities change, so call this every time)
Dim jobQ As Queue(Of QdJobInfo) = QueueDAO.GetJobList
//loop job queue while there are jobs and we have threads …Run Code Online (Sandbox Code Playgroud) 搜索后,我没能找到一个很容易理解的解释,为什么额外的4个使用时对加BlockCopy方法(如图所示这里,这里,这里,这里)
该文件说:
顾名思义,BlockCopy方法整体复制一个字节块,而不是一次复制一个字节.因此,如果src和dst引用相同的数组,并且srcOffset + count -1的范围与dstOffset + count - 1的范围重叠,则重叠字节的值在复制到目标之前不会被覆盖.在以下示例中,名为arr的数组中的字节0-16的值将复制到字节12-28.尽管范围重叠,但源字节的值已成功复制.
但是我并没有真正明白这一点,并希望有人能够以不同的方式解释它(或发布一个解释这个的资源的链接),以及为什么需要添加这些额外的4个字节.
为清楚起见,这里是我所指的代码:
作为压缩方法的一部分:
byte[] gzBuffer = new byte[compressed.Length + 4];
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
Run Code Online (Sandbox Code Playgroud)
作为解压缩方法的一部分:
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
Run Code Online (Sandbox Code Playgroud) .net ×3
vb.net ×2
bytearray ×1
compression ×1
copy ×1
encoding ×1
linq ×1
postgresql ×1
powershell ×1
sharepoint ×1
synclock ×1
utf-16 ×1
web-services ×1