我需要找到raven数据库中的文档数量,以便我可以正确地将文档分页.我有以下实现 -
public int Getcount<T>()
{
IQueryable<T> queryable = from p in _session.Query<T>().Customize(x =>x.WaitForNonStaleResultsAsOfLastWrite())
select p;
return queryable.Count();
}
Run Code Online (Sandbox Code Playgroud)
但如果计数太大,那么它会超时.
我尝试了常见问题解答中建议的方法 -
public int GetCount<T>()
{
//IQueryable<T> queryable = from p in _session.Query<T>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite())
// select p;
//return queryable.Count();
RavenQueryStatistics stats;
var results = _session.Query<T>()
.Statistics(out stats);
return stats.TotalResults;
}
Run Code Online (Sandbox Code Playgroud)
这总是返回0.
我究竟做错了什么?
如何为输入参数匹配union中元素的值,例如 - 如果我使用以下符号模拟方法 -
struct SomeStruct
{
int data1;
int data2;
};
void SomeMethod(SomeStruct data);
Run Code Online (Sandbox Code Playgroud)
如何在参数中使用正确的值调用此方法的模拟?
我有以下测试跳过 -
[Test]
public void RavenPagingBehaviour()
{
const int count = 2048;
var eventEntities = PopulateEvents(count);
PopulateEventsToRaven(eventEntities);
using (var session = Store.OpenSession(_testDataBase))
{
var queryable =
session.Query<EventEntity>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()).Skip(0).Take(1024);
var entities = queryable.ToArray();
foreach (var eventEntity in entities)
{
eventEntity.Key = "Modified";
}
session.SaveChanges();
queryable = session.Query<EventEntity>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()).Skip(0).Take(1024);
entities = queryable.ToArray();
foreach (var eventEntity in entities)
{
Assert.AreEqual(eventEntity.Key, "Modified");
}
}
}
Run Code Online (Sandbox Code Playgroud)
PopulateEventsToRaven只是将2048个非常简单的文档添加到数据库中.
第一个跳过组合获得前1024个doucuments修改文档,然后提交更改.
下一个跳过组合再次想要获得前1024个文档,但这次它得到文档号1024到2048,因此测试失败.为什么这样,我会再次期待第一个1024?
编辑:我已经变了,如果我不修改文档,行为就好了.
我已经开始使用Boost池作为boost / pool / singleton_pool.hpp中定义的单例,因为我需要重复分配很多相同大小的结构。正如我之前使用malloc一样,性能得到了惊人的提高。
我分配的对象由生产者线程放入列表中,而使用者线程将这些对象移到另一端并释放对象。但是当我释放对象时,任务管理器中进程的内存使用量永远不会减少。我猜这是因为池库预先分配了一定数量的内存?
同样,当生产者的数据速率增加时,总内存使用量似乎以块为单位增加了约10k,但即使在调用池中的对象空闲后也从未减少。
我想定期做一些整理工作以释放内存块,以减少进程的整体内存使用量。这可能吗?我不能使用purge_memory,因为这将意味着我必须在农产品和消费者之间同步净化。顺便说一句,purge_memory是否释放了块,即减少了任务管理器中的内存使用量?
我在MS Windows中编程。
谢谢Niladri
PS-我尝试通过将池排序(ordered_malloc)来使用release_memory,但它始终返回false。
更新:
尚未尝试使用purge_memory,因为该池在两个线程之间共享。但是已经发现release_memory仅适用于有序池,并且释放内存的速度很慢,因为它仅释放没有分配的内存块。
我敢肯定,清除会更快。
我正在学习lucene和ravendb上的绳索 - 我在Raven中有以下文件 -
{
"InternalEvent": {
"Desec": "MachineInfo: 1F8BFBFF000106A5_2103933941_00155D365607_WIN-UWJJ7OPR9TM_1, UserInfo: NT AUTHORITY\\LOCAL SERVICE_3, ProcessInfo: \\Device\\HarddiskVolume1\\Windows\\System32\\taskeng.exe, Pid: 5772, ObjInfo: , EventId: New Process Stopped",
"MachineInfo": "1F8BFBFF000106A5_2103933941_00155D365607_WIN-UWJJ7OPR9TM_1",
"UserInfo": "NT AUTHORITY\\LOCAL SERVICE_3",
"ProcessInfo": "\\Device\\HarddiskVolume1\\Windows\\System32\\taskeng.exe",
"Pid": 5772,
"ObjInfo": "",
"EventId": "New Process Stopped",
"Occured": "2011-08-08T23:25:31.8220000+01:00"
},
"Key": "6c4abf6a-156e-4224-8eac-72cde756b3c6"
}
Run Code Online (Sandbox Code Playgroud)
我正在查询数据库 -
var searchValue = "InternalEvent:Desec:(" + String.Join(" AND ", searchTerms) + ")";
var eventEntities = session.Advanced.LuceneQuery<EventCacheEntity>()
.WaitForNonStaleResultsAsOfLastWrite()
.Skip(0)
.Take(_pageLimit)
.Where(searchValue);
Run Code Online (Sandbox Code Playgroud)
搜索任何类似的东西,如果searchTerms只有一个术语,如机器,它肯定在字段desec.我究竟做错了什么?
我对lucene查询语法中的嵌套字段不太确定 - 即Internalevent:Desec ??
我需要从桌面上打开的所有窗口中提取所有文本。SendMessage对于 Windows 应用程序来说,使用+来实现此功能相对容易WM_GETTEXT。
但这种技术不适用于 Java 应用程序。有没有办法从 Java 应用程序中提取文本,还是徒劳无功?
我正在使用buildroot来构建Linux固件。我如何只进行一次干净的重建linux内核(而不必花费一个小时来构建整个程序)?
我试过了 -
make linux-rebuild
Run Code Online (Sandbox Code Playgroud)
但这并不干净。
我也尝试过
make linux-reconfigure && make linux-rebuild
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
ps脚本从powershell执行!我已将执行优先级更改为不受限制.但是当我运行一个简单的脚本时,我得到以下内容
