我目前正在评估以下问题的可能解决方案:
必须在多个客户端之间同步一组数据条目,其中每个客户端可以仅查看(或甚至知道存在)数据的子集.每个客户"拥有"一些元素,并且其他人可以阅读或修改这些元素的决定可能只由所有者做出.为了使这种情况更加复杂,每个元素(以及每个元素修订版)必须具有对所有客户端都相同的唯一标识符.
虽然后者听起来像CouchDB的完美任务(并且基于文档的数据模型完全符合我的需求),但我不确定CouchDB的认证/授权子系统是否能够满足这些要求:虽然应该可以重写写入使用验证功能访问,似乎没有办法授权读取访问.我为此问题找到的所有解决方案都建议通过处理授权的代理(或应用程序层)来路由所有CouchDB请求.
因此,问题是:是否可以实现过滤对数据库的请求的授权层,以便只授予请求客户端具有读访问权限的文档并仍然使用CouchDB的复制机制?简化,这将是某种"选择性复制",其中只复制一些文档而不是整个数据库.
我还要感谢有关复制如何工作的一些详细信息的说明.CouchDB维基甚至"明确指南"都不是那么具体.
我有一个JSF2应用程序,它呈现一个包含复杂内容的大表.不幸的是,每个请求最多需要6秒钟来处理.在阶段监听器中使用简单的调试输出,我可以看到性能损失在处理组件树的所有阶段上均匀分布.所以我启动了一个分析器来查看详细情况,发现在一个简单的请求中评估了超过300.000个ValueExpressions.
他们解决了没有任何逻辑的非常简单的getter,所以问题不是执行这些表达式背后的代码,而是解析表达式字符串并调用getter方法.这导致了一些问题:
1.)有没有办法加快方法表达式的解析.也许隐藏的"启用缓存"标志或其他东西.
2.)似乎大多数表达式不是在渲染响应阶段内进行评估,实际需要它们,但在其他阶段.例如,styleClass在渲染阶段之外的任何其他阶段中,似乎没有必要解决.我可以阻止这个吗?
3.)当然,最小化facelets页面中EL表达式的数量应该有助于获得更多性能,但似乎我不能真正做到这一点:许多属性(如styleClass上面提到的例子)实际上依赖于表行,但是只能在列上设置.因此,有10列,每个表达式都经常被评估.我已经看到了一些示例,其中rowClasses表的属性用于有条件地设置行的样式,但由于表是可排序的,如果不滚动我自己的排序机制,这将无法工作.有没有更好的方法来实现这个?
4.)一个更简单的问题:是否有一种方法可以在组件树中缓存变量(就像ui:repeat提供对列表内容的访问并解析表达式只获取列表一次,但只是一个变量)?
非常感谢您的所有答案和提示!
编辑:
经过进一步调查,我发现每个rendered=#{someExpression}表达式在渲染响应阶段每行评估6次.我知道JSF可能不止一次地调用我的getter,但我认为这是因为它们可以在每个阶段调用.在渲染过程中,这些值不应该改变,所以我猜它们可以被缓存.
单步执行调试器中的代码,它看起来javax.faces.component.ComponentStateHelper(出现在导致已计算方法调用的每个堆栈跟踪中)提供了一个映射来完成这种缓存.但是,这似乎并不像我预期的那样有效,并且总是重新评估表达式......
我自己在Windows上使用C++的位图来处理:
HBITMAP hBitmap;
Run Code Online (Sandbox Code Playgroud)
在这张图片上,我想做一些图像识别,模式分析,这种事情.在我在大学的学习中,我在Matlab中完成了这项工作,根据他们的位置很容易得到单个像素,但我不知道如何在Windows下用C++做到这一点 - 我还没有真正能够明白我到目前为止所阅读的内容.我已经看到一些漂亮的Bitmap类的引用,它允许你setPixel()和getPixel()等等,但我认为这是与.net.
我应该如何将HBITMAP变成我可以轻松玩的东西?我需要能够获得RGBA信息.是否有库允许我使用数据而无需了解DC和BitBlt等等?