小编Jac*_*k M的帖子

为什么indexedDB使用"版本"?

我刚刚学习了indexedDB,这是我对建立数据库的理解.您调用.open(dbName)以获取数据库实例.如果用户的计算机上不存在此名称的数据库(例如,如果这是他们第一次访问该站点),则会触发onUpdateNeeded事件,因此您应该在其中执行初始化操作,例如创建ObjectStores.

现在,您还可以传入一个版本 - .open(dbName, version)- 如果数据库存在但使用较低版本,则会强制执行onUpdateNeeded事件.现在,我可以看到这个的效用......但为什么有一个整数参数?如果"版本"参数的要点是强制更新,为什么不只是有一个forceUpdate标志?为什么有一个整数版本参数,因此在调试代码时需要增加更多,可能在经过多天的调试后达到156版本?

是否在某些功能中使用的版本除了强制更新之外我还没有意识到,如果不是,它背后的基本原理是什么?另外,您是打算在开发期间不断更改版本,但是一旦应用程序发布就保持修复,或者您是否应该在应用程序的整个生命周期中不断更改它?

javascript indexeddb

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

我怎样才能有一个接受"my type"类型参数的抽象方法?

假设我有一个带抽象方法的抽象类Animal

public abstract Animal mateWith(Animal mate);
Run Code Online (Sandbox Code Playgroud)

问题是,如果我创建子类Snake和Armadillo,那么这样的调用将是合法的:

mySnake.mateWith(myArmadillo);
Run Code Online (Sandbox Code Playgroud)

但我只希望蛇能够与蛇交配.我需要能够定义这样的东西:

public abstract Animal_Of_My_Class mateWith(Animal_Of_My_Class mate);
Run Code Online (Sandbox Code Playgroud)

这在Java中可行吗?

java oop abstract-class

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

使按钮元素填充可用宽度

这个网站上有很多"填充可用空间"的问题,但是我的问题有点特别,因为我已经有了一个解决方案,但它对按钮不起作用.我想了解为什么这对按钮不起作用,以及我如何使其工作.我想这只是我需要覆盖的按钮元素的一些浏览器风格.

我有两个浮动元素(固定宽度,如果重要)包装div.右边的元素有固定的宽度,左边的元素应占用剩余的宽度.

我可以通过将正确的元素设置为具有固定的宽度来实现这一点float: right,并且使左元素没有任何特殊样式.这适用于div.它也适用于跨度,但只有我设置display: block它们.对于按钮,我根本无法使用它.我尝试了块,内联块以及width我在MDN上可以找到的每个模糊值.

http://jsfiddle.net/wjFbD/2/


我不知道为什么我没想到只是将div中的按钮包裹起来.这是我想出的:

http://jsfiddle.net/SkczB/2/

这涉及到overflow: hidden 盒子格式化上下文技巧(我怀疑它会在这里出现,但是看不到它适合它的位置).强调:

  1. 这两个按钮用div按钮包装在div中.
  2. 这些div按照我在上面第三段中概述的技巧进行格式化.右边的div有浮动:右边和固定宽度,左边的div没有特殊的样式.
  3. 我们现在应用框格式化上下文技巧.左边的div被赋予溢出:隐藏,这使得它为右浮动的div腾出空间.
  4. 我们现在可以向右侧div应用左边距,并更改其宽度,左侧div将始终为正确的大小.
  5. div为我们创建了所需的"填充可用宽度"效果,现在我们只需将按钮放在div中并给它们100%的高度和宽度.
  6. 如果它是左键你想要有一个固定的宽度,那么基本上重复上面的步骤,左右交换.

html css css-float

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

使用 CSS 部分重叠元素

我想部分重叠多个 HTML 元素 - 比如说 DIV - 如下图所示。黑色边框的矩形(Hanafuda卡片)代表我想要重叠的元素。

在此处输入图片说明

使用 Javascript 我确定我可以想出一些东西,但我想知道是否有纯 CSS 解决方案。我考虑过相对定位,但问题是每张卡都需要沿着 x 轴越来越大的偏移。

理想情况下,我希望重叠的程度取决于有多少空间,以便在狭窄时元素会更多地聚集在一起,但这是次要的,我不介意使用 JS 来完成它。

html css

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

当我设置边框半径时,角消失了

下面的代码:

app = QApplication([])
mainWindow = QMainWindow()
mainWindow.show()
textEdit = QTextEdit()
mainWindow.setCentralWidget(textEdit)

app.setStyleSheet("""
QTextEdit
{
    margin: 10px;
    border: 1px solid black;
    border-radius: 20px;
}
""")
app.exec_()
Run Code Online (Sandbox Code Playgroud)

产生这样的结果:

在此输入图像描述

奇怪的是,如果我设置背景颜色,角会按预期显示:

在此输入图像描述

当我删除边框半径时,在这两种情况下,角都显示得很好,更奇怪的是,我实际上可以通过设置背景颜色来快速修复这个问题:白色。边距与问题无关,我只是这样设置,以便更容易看到问题。这里发生了什么?看起来与this question中的CSS/webkit问题类似。

qt pyqt qtstylesheets

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

为什么调用indexedDB.deleteDatabase阻止我进行任何进一步的交易?

如果我现在进入我的浏览器控制台(我正在使用Chrome),请在此页面上输入

indexedDB.open("MyDB").onsuccess = function(e) { console.log("success"); };
Run Code Online (Sandbox Code Playgroud)

我立即在控制台中收到"成功"消息.我可以根据自己的喜好多次这样做,而且效果很好.但是如果我打字的话

indexedDB.deleteDatabase("MyDB").onsuccess = function(e) { console.log("success"); };
Run Code Online (Sandbox Code Playgroud)

我没有得到"成功"的消息.不仅如此,如果我再次尝试.open再次呼叫,我也不会收到"成功"消息.我怎样才能治愈这种奇怪的疾病.deleteDatabase,以及究竟发生了什么?

(PS:正如我完成了这个答案的输入,我认为来自呼叫的"成功"消息.deleteDatabase最终确实通过了,大约两分钟后我打了电话 - 但问题仍然存在).

javascript indexeddb

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

为什么 git checkout 不删除新文件?

假设我创建(但不提交)一个文件file.txt,然后输入git checkout HEADgit checkout HEAD .。我认为git checkout基本上用您提供的提交时的快照覆盖了您当前的工作文件,所以我认为这会删除file.txt. 但事实并非如此。为什么?

git version-control git-checkout git-reset git-clean

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

如何使用 Java 11 在 Ubuntu 上运行 JHipster 应用程序?

我正在尝试运行由 JHipster 5.7 生成的应用程序。当我尝试运行该mnvw文件时,我得到:

[WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:
You are running an incompatible version of Java. JHipster requires JDK 1.8
Run Code Online (Sandbox Code Playgroud)

后跟一串错误和运行失败。我确实在使用 JDK 版本 11。我在网上找到了一些看似相关的 信息,但我很难真正理解其中的任何含义,甚至完全确定它是否与我的问题相关。

为了避免 XY 问题,我只会以最一般的、笨拙的方式提出我的问题:当我安装了 JDK 11 时,如何在 Ubuntu (18.10) 上运行 JHipster 5 应用程序?(如果答案是安装不同版本的 Java,这很好,但我不知道如何执行此操作或如何告诉 JHipster 使用该版本)。

ubuntu jhipster

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

如何运行协程而不等待它?

我有一个非异步函数,如下所示:

def do_stuff(on_finished):
    result = # complicated calculations here
    on_finished(result)
Run Code Online (Sandbox Code Playgroud)

我传入的回调看起来或多或少像这样:

async def on_finished(self, result):
    response = await post_over_http(result)
    self.last_status = response.status 
Run Code Online (Sandbox Code Playgroud)

当我打电话时do_stuff,我想要发生的是这样的:

  1. do_stuff执行并调用on_finished
  2. on_finished执行,通过 HTTP 发布结果,然后立即返回。
  3. do_stuff现在立即返回。
  4. 随后,HTTP 响应返回,执行返回到 的第二行on_finished

重要的是,我不希望 do_stuff 是 async。出于架构原因,我希望do_stuff与网络代码的异步性质隔离,因此我不想仅仅因为使用它的某些代码是异步的而将其设为异步。

在 JavaScript 中这不会有问题 - 基本上将上述代码直接转录为 JavaScript,我将获得所需的行为。onFinished将返回一个 Promise,它doStuff不会等待并立即返回,但是当 Promise 稍后解析时,第二行运行onFinished。这在Python中可能吗?我不确定如何实现它。通过上面的代码,我想我只是在最后一行创建了一个协程,do_stuff但从未调用它。

python python-asyncio

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

普通的C++程序没有写入文件

这些行是main()的唯一内容:

fstream file = fstream("test.txt", ios_base::in | ios_base::out);
string word;
while (file >> word) { cout << word + " "; }
file.seekp(ios::beg);
file << "testing";
file.close();
Run Code Online (Sandbox Code Playgroud)

程序正确地输出文件的内容("愤怒的狗"),但是当我之后打开文件时,它仍然只是说"愤怒的狗",而不是像我期望的那样"测试狗".

完整计划:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    fstream file = fstream("test.txt", ios_base::in | ios_base::out);
    string word;
    while (file >> word) { cout << word + " "; }
    file.seekp(ios::beg);
    file << "testing";
    file.close();
}
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
1
解决办法
229
查看次数