我正在尝试在 NextJS 中制作一个单页应用程序,但我开始认为这是不可能的。谁能告诉我怎么做?
我的第一次尝试是使用哈希路由器:
<HashRouter>
<div>
<NavLink to="/">Home</NavLink>
<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>
<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?
我编写了自己的面试风格问题,并对我解决方案的大问题提出了疑问.我将在下面说明问题和我的解决方案,但首先让我说明显的解决方案涉及嵌套循环并且是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) 我有一个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.