小编Jul*_*iet的帖子

我应该如何修改我的Queue类以允许用户在F#中创建未指定类型的空队列?

Queue在F#中创建了一个不可变的如下:

type Queue<'a>(f : 'a list, r : 'a list) =    
    let check = function
        | [], r -> Queue(List.rev r, [])
        | f, r -> Queue(f, r)

    member this.hd =
        match f with
        | [] -> failwith "empty"
        | hd :: tl -> hd

    member this.tl =
        match f, r with
        | [], _ -> failwith "empty"
        | hd::f, r -> check(f, r)

    member this.add(x) = check(f, x::r)

    static member empty : Queue<'a> = Queue([], [])
Run Code Online (Sandbox Code Playgroud)

我想创建一个空的实例 …

f# data-structures

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

在线性时间中查找两个排序列表中的公共元素

我有一个排序的输入列表:

let x = [2; 4; 6; 8; 8; 10; 12]
let y = [-8; -7; 2; 2; 3; 4; 4; 8; 8; 8;]
Run Code Online (Sandbox Code Playgroud)

我想编写一个与SQL INNER JOIN类似的函数.换句话说,我想返回x和y的笛卡尔积,其中只包含两个列表中共享的项:

join(x, y) = [2; 2; 4; 4; 8; 8; 8; 8; 8; 8]
Run Code Online (Sandbox Code Playgroud)

我写了一个天真的版本如下:

let join x y =
    [for x' in x do
        for y' in y do
            yield (x', y')]
    |> List.choose (fun (x, y) -> if x = y then Some x else None)
Run Code Online (Sandbox Code Playgroud)

它运作,但这运行O(x.length * y.length).由于我的两个列表都已排序,我认为可以获得我想要的结果O(min(x.length, …

language-agnostic algorithm f#

6
推荐指数
2
解决办法
6122
查看次数

良好的数据结构,可以有效地插入/查询任意属性

我正在开发一个项目,其中Arrays是所有内容的默认数据结构,每个查询都是以下列形式的线性搜索:

  • 需要一个具有特定名称的客户? customer.Find(x => x.Name == name)
  • 需要具有特定唯一ID的客户? customer.Find(x => x.Id == id)
  • 需要特定类型和年龄的客户? customer.Find(x => x is PreferredCustomer && x.Age >= age)
  • 需要特定名称和年龄的客户? customer.Find(x => x.Name == name && x.Age == age)

在几乎所有情况下,查找的标准都是明确定义的.例如,我们仅按一个或多个属性Id,Type,Name或Age搜索客户.我们很少搜索任何其他内容.

是否有一个好的数据结构来支持这些类型的任意查询,而查找优于O(n)?.NET的任何开箱即用的实现?

c# data-structures

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

报告上的参数验证

我是SSRS的新手,所以如果这个问题太简单,我道歉:

我有一个报告,它接受一个名为"金额"的参数.我想将有效输入限制为货币值> = 0,并在用户输入不正确的值时弹出错误消息.

我不想在我的存储过程中验证输入并抛出异常,因为SSRS向从另一台机器访问报告的用户显示非常通用的"'someTable'查询执行失败"消息,而我的业务不想转向在"启用远程错误"标志上.

如何向报告参数添加输入验证并通知用户输入错误?

是的,我已经用Google搜索了,但运气不好.提前致谢 :)

validation report reporting-services

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

如何在数据库中选择具有特定名称的所有表

如何在数据库中选择具有特定名称的所有表名?

sql-server

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

如何将OCaml与iPhone API接口?

我想开始为iPhone开发应用程序,但我真的很想使用OCaml而不是Objective-C.经过一些谷歌搜索,似乎这肯定是可能的,但我还没有找到任何实际编译的代码片段.

是否可以使用OCaml编写iPhone应用程序?如果是这样,你能提供一个片段来演示如何从OCaml调用Cocoa API吗?

iphone interop ocaml

5
推荐指数
2
解决办法
1712
查看次数

在请求之间保持弹簧状态

如果这是一个初学者问题,我是新手,很抱歉,但手册不清楚(至少不适合我)

我的问题是:如何在春天的请求之间共享状态?我可以使用ModelMap将数据从控制器发送到视图,但是ModelMap中的数据不会被视图发送回下一个控制器.我怎么能用春天做到这一点?

以下是我的源代码的一部分.在第二个控制器中,modelMap不包含我在第一个控制器中存储在modelMap中的数据.我怎么能在春天保持控制器之间的状态?

非常感谢你的帮助.

@RequestMapping(value = "find/something", method = RequestMethod.GET)
public String foo(@RequestParam("parent") Parent parent, ModelMap modelMap) {    
...
    modelMap.addAttribute("question_index", 42);
    modelMap.addAttribute("something", new Something());
    modelMap.addAttribute("data", new Data());
    return "some/view";
}

<form:form action="bla" method="POST"  modelAttribute="data">
...// using Something() and 42
</form:form>

@RequestMapping(value = "bla", method = RequestMethod.POST)    
public String bla(@ModelAttribute("data") Data data, BindingResult result, ModelMap modelMap) {
System.out.println(modelMap); // doesn't contain question_index, or something
}
Run Code Online (Sandbox Code Playgroud)

java session spring state

5
推荐指数
2
解决办法
9199
查看次数

如何使用PHP,倾斜图像等制作照片效果?

如何使图像效果在PHP中旋转和倾斜图像?

我想知道神奇的底层东西,我应该研究什么样的php扩展并学习如何实现这一点,任何好的教程在线制作出酷炫的图像效果?

php image-processing

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

当给出非变量时,为什么空期望T_PAAMAYIM_NEKUDOTAYIM?

<?php
define('foo', 'bar');

if (empty(foo)) {
  echo 'qux';
}
Run Code Online (Sandbox Code Playgroud)

http://codepad.org/G1TSK1c6
解析错误:语法错误,意外的')',预计第4行为T_PAAMAYIM_NEKUDOTAYIM

我知道empty()只允许将变量作为参数传递,但是::当我给它一个常量时,为什么它会期望一个T_PAAMAYIM_NEKUDOTAYIM(即)?

php variables constants

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

再次双重检查锁定和C#

最近我一直在重构我的一些C#代码,我发现了一些双重检查锁定实践.那时我不知道这是一个不好的做法,我真的想摆脱它.

问题是我有一个应该被懒惰地初始化并且经常被许多线程访问的类.我也不想将初始化移动到静态初始化器,因为我计划使用弱引用来保持初始化对象在内存中保持太长时间.但是,如果需要,我想"恢复"对象,确保以线程安全的方式发生这种情况.

我想知道是否在C#中使用ReaderWriterLockSlim并在第一次检查之前输入UpgradeableReadLock,然后如果需要,为初始化输入写锁定将是可接受的解决方案.以下是我的想法:

public class LazyInitialized
{
    private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();

    private volatile WeakReference _valueReference = new WeakReference(null);
    public MyType Value
    {
        get
        {
            MyType value = _valueReference.Target as MyType;
            _lock.EnterUpgradeableReadLock();
            try
            {
                if (!_valueReference.IsAlive) // needs initializing
                {
                    _lock.EnterWriteLock();
                    try
                    {
                        if (!_valueReference.IsAlive) // check again
                        {
                            // prevent reading the old weak reference
                            Thread.MemoryBarrier(); 
                            _valueReference = new WeakReference(value = InitializeMyType());
                        }
                    }
                    finally
                    {
                        _lock.ExitWriteLock();
                    }
                }
            }
            finally
            {
                _lock.ExitUpgradeableReadLock();
            }
            return value;
        } …
Run Code Online (Sandbox Code Playgroud)

c# locking readerwriterlockslim double-checked-locking

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