小编use*_*449的帖子

Next.JS单页应用?

我正在尝试在 NextJS 中制作一个单页应用程序,但我开始认为这是不可能的。谁能告诉我怎么做?

我的第一次尝试是使用哈希路由器:

<HashRouter>
                <div>
                    <NavLink to="/">Home</NavLink>
                    &nbsp;&nbsp;
                    <NavLink to="/purchaseComplete">Purchase Complete</NavLink>
                </div>    
                <div>
                    <Route exact path="/" Component={Default} />      
                    <Route path="/purchaseComplete" Component={PurchaseComplete} />
                </div>
            </HashRouter>
Run Code Online (Sandbox Code Playgroud)

但是在浏览器中我看到“不变失败:浏览器历史需要一个 DOM”

然后我尝试使用 StaticRouter:

<StaticRouter location="/" context={staticContext}>
                <div>
                    <NavLink to="/">Home</NavLink>
                    &nbsp;&nbsp;
                    <NavLink to="/purchaseComplete">Purchase Complete</NavLink>
                </div>    
                <div>
                    <Switch>
                        <Route exact path="/" Component={Default} />              
                        <Route path="/purchaseComplete" Component={PurchaseComplete} />
                    </Switch>
                </div>
            </StaticRouter>
Run Code Online (Sandbox Code Playgroud)

这将呈现两个链接,但单击它们时没有任何反应。

在 NextJS 教程中,他们在开始时讨论了 SPA,但随后他们只向您展示了如何制作具有多个页面的应用程序。

我开始认为在 NextJS 中构建 SPA 是不可能的。任何人都可以证实这一点吗?或者有人可以告诉我如何在 Next JS 中构建 SPA?

single-page-application next.js

8
推荐指数
2
解决办法
2万
查看次数

大O - 总是输入的大小?

我编写了自己的面试风格问题,并对我解决方案的大问题提出了疑问.我将在下面说明问题和我的解决方案,但首先让我说明显的解决方案涉及嵌套循环并且是O(n 2).我相信我找到了一个O(n)解决方案,但后来我意识到它不仅取决于输入的大小,还取决于输入的最大值.看起来我的O(n)的运行时间只是技术性的,它可以很容易地在O(n 2)时间运行或在现实生活中更糟.

问题是:对于给定正整数数组中的每个项目,打印数组中所有其他项目,这些项目是当前项目的倍数.

示例输入:

[2 9 6 8 3]
Run Code Online (Sandbox Code Playgroud)

示例输出:

2: 6 8
9:
6:
8:
3: 9 6
Run Code Online (Sandbox Code Playgroud)

我的解决方案(在C#中):

private static void PrintAllDivisibleBy(int[] arr)
{
    Dictionary<int, bool> dic = new Dictionary<int, bool>();
    if (arr == null || arr.Length < 2)
        return;

    int max = arr[0];
    for(int i=0; i<arr.Length; i++)
    {
        if (arr[i] > max)
            max = arr[i];
        dic[arr[i]] = true;
    }

    for(int i=0; i<arr.Length; i++)
    {
        Console.Write("{0}: ", arr[i]);
        int …
Run Code Online (Sandbox Code Playgroud)

algorithm big-o integer

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

SQL唯一字段:并发错误?

我有一个DB表,其字段必须是唯一的.假设该表称为"Table1",唯一字段称为"Field1".

我计划通过执行SELECT来查看是否存在任何Table1记录,其中Field1 = @ valueForField1,并且只有在没有这样的记录存在时才更新或插入.

问题是,我怎么知道这里没有竞争条件?如果两个用户都在写入Table1的表单上单击"保存"(几乎完全相同的时间),并且它们具有相同的Field1值,则不可能发生以下情况吗?

User1进行SQL调用,执行select操作并确定Field1 = @ valueForField1中没有现有记录.User1的进程被User2的进程抢占,该进程也找不到Field1 = @ valueForField1的记录,并执行插入.允许User1的进程再次运行,并在Field1 = @ valueForField1中插入第二条记录,违反了Field1唯一的要求.

我怎么能阻止这个?我被告知交易是原子的,但为什么我们也需要表锁?我之前从未使用过锁,我不知道在这种情况下是否需要锁.如果进程尝试写入锁定表会发生什么?它会阻止并重试吗?

我正在使用MS SQL 2008R2.

sql sql-server concurrency sql-server-2008-r2

2
推荐指数
1
解决办法
228
查看次数