我正在尝试使用转置表来实现alpha-beta min-max prunning增强功能.我用这个伪代码作为参考:
http://people.csail.mit.edu/plaat/mtdf.html#abmem
function AlphaBetaWithMemory(n : node_type; alpha , beta , d : integer) : integer;
    if retrieve(n) == OK then /* Transposition table lookup */
        if n.lowerbound >= beta then return n.lowerbound;
        if n.upperbound <= alpha then return n.upperbound;
        alpha := max(alpha, n.lowerbound);
        beta := min(beta, n.upperbound);
    if d == 0 then g := evaluate(n); /* leaf node */
    else if n == MAXNODE then
        g := -INFINITY; a := alpha; /* save original alpha value */
        c …Run Code Online (Sandbox Code Playgroud) algorithm chess artificial-intelligence minmax alpha-beta-pruning
我需要在资源字典后面添加代码,如本问题所述.(我知道这不是一个好习惯,但它应该基于链接问题的评论工作.)我用x:Class属性引用代码:
XAML(单独的资源字典文件):
<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="MyNamespace.MyStandardResources">
    ...
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
码:
using System.Windows;
namespace MyNamespace
{
    public partial class MyStandardResources : ResourceDictionary
    {
        public MyStandardResources()
        {
            InitializeComponent();
        }
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)
这会导致运行时解析器异常:
分析器内部错误:对象编写器 ' xClassNotDerivedFromElement '.System.Windows.Application.LoadComponent中的[Line:xxx Position:xxx].
资源包含在带有ResourceDictionary.MergedDictionaries标记的App.xaml中.
我在 Raspberry Pi 上使用 sqlite 来存储传感器读数。表结构很简单:
CREATE TABLE IF NOT EXISTS sensors(id INTEGER PRIMARY KEY AUTOINCREMENT, codename TEXT, name TEXT)
CREATE TABLE IF NOT EXISTS sensorvalues(id INTEGER PRIMARY KEY AUTOINCREMENT, sensorid INTEGER, value DECIMAL(10,2), time DATETIME, FOREIGN KEY(sensorid) REFERENCES sensors(id))
Run Code Online (Sandbox Code Playgroud)
每次我将记录插入到“sensorvalues”表(大约 20 个字节的数据)时,iotop 都会显示大约 30Kb 被写入磁盘。为了保护 SD 卡免受损坏,我想尽量减少写入永久内存的数据。我知道完全写入 20 个字节是不可能的,因为 IO 操作使用页面结构和缓冲区,但是每次提交写入 30Kb 似乎太多了。有什么方法可以调整 sqlite 以将写入的数据量最小化到必要的最小值?
我在树莓派(raspbian系统)上使用mysql服务器来存储传感器读数。每分钟将一条长度为20字节的记录插入mysql表。
但是iotop命令显示mysqld进程每分钟写入200K。我想最大程度地减少写入sd卡的数据量,以延长其耐用性(我已经应用了一些修复程序来防止sd卡损坏,例如日志和其他黑客的tmpfs)。
当只有20B的数据插入表时,为什么mysqld写入200K字节?有没有办法在上述情况下最小化写入,调整mysql服务器?
有趣的是,vmstat命令不会在“ io / bo”列中显示太多写入磁盘的数据
我使用的是MySQL服务器版本5.5.33-0 + wheezy1和innoDB表。
更新:
Bill在下面的详尽回答使我意识到,使用mysql服务器对于简单的传感器记录来说是一个过大的杀伤力。最终我迁移到了sqlite。对于相同的表结构,sqlite每个事务写入的字节数比mysql少6倍(约30kb),这对于RPi sd卡来说更好。我仍在进行优化,因为如前所述,每个事务仅写入20b的实际数据。
我希望从datatemplate生成的元素看起来有所不同,具体取决于模型中的某些属性.例如,我希望以各种颜色显示文本,或者为每个生成的元素显示不同的图像或路径绘图.我知道如何一般地做到这一点,但我正在寻找一种解决方案,允许设计师在不触及代码的情况下编辑Expression Blend中的视觉细节.例如最简单的解决方案:
   <DataTemplate>
        <StackPanel Orientation="Horizontal"> 
            <Image Source="{Binding MyImageSource}"/>
            <TextBlock Width="200"  Text="{Binding MyText}" Forecolor="{Binding MyColor}"></TextBox> 
        </StackPanel> 
    </DataTemplate> 
Run Code Online (Sandbox Code Playgroud)
其中'MyImageSource'和'MyColor'是项目模型(ImageSource和Brush类型)的属性,不能满足我的需求,因为我不想分配这些值.我希望设计师这样做.我的模型不是'MyImageSource'和'MyColor'属性,而是具有类型为enum或string(或其他类型)的'ItemType'或'ItemStyle'属性.我不是在寻找"宗教"MVVM的严格解决方案.我唯一的要求是避免设计师等待我按照他的指示纠正代码,例如"将列表Y中的X类型的项目颜色更改为#FFAACC",因为它似乎在某种程度上违反了SoC规则.
编辑(根据答案):
我找到了bendewey 在这里描述的类似解决方案- 它需要使用ItemsSource属性为控件派生自定义控件.为每种元素类型使用不同数据模板的想法很简洁,但在我看来,它涵盖了我们想要为每个项目生成完全不同的可视元素的情况.当元素仅在某些颜色和图像上有所不同(并且除此之外还包含许多常见元素),那么为每个元素类型创建单独的数据模板将导致不必要的代码(xaml)重复.在这种情况下,弗拉德的解决方案更适合.除了两个人之外还有其他技术吗?
返回 Json 的操作上的 OutputCache 属性不起作用 - 当我在浏览器中多次点击操作 URL 时,每次我在 VS2012 中激活断点(看起来 OutputCache 属性被忽略)。这是我的代码:
public class ApiController : GenericControllerBase
{
    [OutputCache(Duration = 300, VaryByParam = "type;showEmpty;sort;platform")]
    public JsonResult GetCategories(string type, bool? showEmpty, string sort, string platform)
    {
        ///... creating categoryResults object
        return Json(new ApiResult() { Result = categoryResults }, JsonRequestBehavior.AllowGet);
    }
}   
Run Code Online (Sandbox Code Playgroud)
GenericControllerBase 继承自 Controller。在从 GenericControllerBase OutputCache 继承的其他控制器中,按预期工作,但它们返回 View() 而不是 Json。作为一个实验,我添加了 VaryByCustom 参数并检查了 global.asax 文件中的 GetVaryByCustomString 方法也没有被命中,因此缓存功能被完全忽略。我使用 MVC3 和 autofac 进行服务注入(但其他使用 autofac 注入的控制器与 OutputCache 一起正常工作)。
可能是什么问题呢?什么会阻止 OutputCache 功能?它是否可能与缓存整个响应有关?在我的项目中使用 OutputCache 的所有其他操作都是在视图中嵌入 @Html.Action(...) …
.net ×3
raspberry-pi ×2
silverlight ×2
xaml ×2
ajax ×1
algorithm ×1
asp.net-mvc ×1
caching ×1
chess ×1
code-behind ×1
csrf ×1
data-binding ×1
io ×1
json ×1
linux ×1
minmax ×1
mysql ×1
outputcache ×1
security ×1
sqlite ×1