我想要一个div在这里盘旋时出现的箭头也会掉落一个阴影.箭头来自CSS:
.arrow {
position:absolute;
margin-top:-50px;
left:80px;
border-color: transparent transparent transparent #ccff66;
border-style:solid;
border-width:20px;
width:0;
height:0;
z-index:3;
_border-left-color: pink;
_border-bottom-color: pink;
_border-top-color: pink;
_filter: chroma(color=pink);
}
Run Code Online (Sandbox Code Playgroud)
我想申请的影子设置是:
-moz-box-shadow: 1px 0px 5px #888;
-webkit-box-shadow: 1px 0px 5px #888;
box-shadow: 1px 0px 5px #888;
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=0, Color='#888888')";
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=0, Color='#888888');
Run Code Online (Sandbox Code Playgroud)
将阴影设置粘贴到箭头中的问题是阴影应用于整个跨度框并导致框阴影而不是箭头的阴影.
PS我想尝试尽可能不使用explorercanvas,因为我正在尝试最小化html中的脚本标记.但是,如果必须请提供代码.
如果我知道一个集合是另一个集合的子集,并且我想找到差异,那么最有效的方法是什么?
恩.PSEUDO CODE
> set<int> set1 = {1 2 3 4 5 6 7 8 9 10}
> set<int> set2 = {5 6 7}
Run Code Online (Sandbox Code Playgroud)
我想减去set2来自set1:
这里的答案是
{1 2 3 4 8 9 10}
Run Code Online (Sandbox Code Playgroud) 抱歉尴尬的标题,但我找不到更好的标题.
考虑这个示例代码(除了说明问题之外没有任何目的):
#include <vector>
void FooBar(int);
void func1()
{
static std::vector<int> vec {1, 2, 3, 4};
for (auto & v : vec)
FooBar(v);
}
void func2()
{
for (auto & v : std::vector<int> {1, 2, 3, 4})
FooBar(v);
}
Run Code Online (Sandbox Code Playgroud)
可以在此处找到对此的反汇编
在func1静态vec向量中应该在启动时一劳永逸地构造.实际上上面提到的godbolt上的反汇编表明静态的初始化vec只在第一次调用时完成,func1而不是在启动时完成,但这不是重点.
现在考虑func2:这里向量直接在for语句中声明为"内联"(不确定这是如何实际调用的),但当然每次func2调用时都会构造该向量.
是否有静态声明向量的方式与里面for的语句,像for (auto & v : static std::vector<int> { 1, 2, 3, 4})这是不幸的是没有合法的C++.
我最近读了一本关于系统软件的书。其中有一个我不理解的例子。
volatile T* pInst = 0;
T* GetInstance()
{
if (pInst == NULL)
{
lock();
if (pInst == NULL)
pInst = new T;
unlock();
}
return pInst;
}
Run Code Online (Sandbox Code Playgroud)
为什么作者要检查(pInst == NULL)两次?
我有下面列出的代码,并在运行时报告堆栈溢出.我使用pass by value来showTest().我期望它会将Test结构的副本复制到堆栈(推送到堆栈),然后在函数调用结束时Test释放结构(弹出堆栈).所以我打三次电话.它应该推入堆栈并在每个函数调用结束时弹出.
如果每次调用函数时它都会按下并弹出堆栈,我看不到任何堆栈问题.但是,当我运行此代码时,它会在第一行报告堆栈溢出异常main.(我使用Visual Studio 2017.)
如果我删除其中一个showTest()函数调用,那么我可以让它工作.
任何反馈都将受到高度赞赏.
#include <iostream>
struct Test
{
static int Userid;
int data[100000] = { };
Test()
{
++Userid;
};
};
int Test::Userid = 0;
void showTest(Test i_myint)
{
std::cout << "test" << std::endl;
}
int main()
{
Test *pint = new Test();
showTest(*pint);
Test *pint2 = new Test();
showTest(*pint2);
Test *pint3 = new Test();
showTest(*pint3);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 这是一个常见的访谈问题(根据一些访谈网站)但我在互联网上找不到正常答案 - 有些是错误的,有些指向复杂的理论我期望在访谈中不需要(如Bressenham算法).
问题很简单:
圆方程为:x ^ 2 + y ^ 2 = R ^ 2.给定R,尽可能最好地绘制0,0居中的圆而不使用任何浮点(没有trigo,平方根等,只有整数)
首先,我知道有很多关于多语言功能的答案,我找不到我想要的答案.
我想到了三种可以使用的方法.每次我向Web表单界面添加新值时,我都需要使用PHP创建语言文件.
前两个类似 - 在特定语言文件中使用数组或定义,并在运行开始时包含它.但在这种情况下,我可能会加载数千个定义或数组,只是为了在每个页面中使用一些.
第三种方法是创建每次使用关键字或完整短语调用的函数,并使用IF-s或switch选择正确的术语(如果不匹配则返回调用的键).
最好的方法是什么?我决定做一些测试.我尝试了三种不同的方法,并测量了它所花费的时间和内存:
我定义了一个数组(22个值),并从1到1,000,000运行它 - 检查调用值 - 三个中的一个,通过使用%运算符选择要使用的内容并将其设置在变量上
我使用相同的数组(22个值)并使用函数调用它 - return $arr[$string];(只是为了方便的工作方式和能够根据需要将其更改为不同的方式)
我创建了一个包含字符串列表的函数,并使用switch- > case我选择了返回的字符串
那么,现在问题是什么是正确的选择 - 更喜欢时间或更喜欢记忆.
如果站点很大并且需要大量内存 - 我无法更改它,因为它是使用数组构建的 - 如果它与函数一起工作,我总是可以改变它.
我目前正在玩x86 Assember,以提高我的低级编程技能.目前,我在32位保护模式下的寻址方案面临一些问题.
情况如下:
我有一个程序加载在0x7e0,它将CPU切换到保护模式并跳转到代码中的相应标签:
[...]
code to switch CPU in Protected Mode
[...]
jmp ProtectedMode
[...]
bits 32
ProtectedMode:
.halt:
hlt
jmp .halt
Run Code Online (Sandbox Code Playgroud)
到目前为止这个工作绝对正常."jmp ProtectedMode"在没有显式远跳的情况下工作以清除预取队列 - 因为该程序加载了偏移量0(开头的org 0) - 导致代码段指向正确的位置.
我现在的问题是,在"ProtectedMode"标签中我想跳转到另一个加载到0x8000的程序(我用内存转储检查了这个,加载函数确实正常工作,程序正确加载到0x8000) .
由于CPU现在处于ProtectedMode而不再是RealMode,因此寻址模式不同.ProtectedMode使用描述符选择器查找基址和描述符表中的限制,以添加给定的偏移量并检索物理地址(据我所知).因此,在进入ProtectedMode之前必须安装GDT.
我看起来如下:
%ifndef __GDT_INC_INCLUDED__
%define __GDT_INC_INCLUDED__
;*********************************
;* Global Descriptor Table (GDT) *
;*********************************
NULL_DESC:
dd 0 ; null descriptor
dd 0
CODE_DESC:
dw 0xFFFF ; limit low
dw 0 ; base low
db 0 ; base middle
db 10011010b ; access
db 11001111b ; granularity
db 0 …Run Code Online (Sandbox Code Playgroud) 我发现了一种情况,代码在 C++17 下编译成功,但在 C++20 下编译失败。
这阻止了我们将现有的代码设计升级到更新的标准。
为什么这不能在 C++20 下编译?这似乎是对向后兼容性的奇怪破坏。
当我尝试为模板类专业化的构造函数/析构函数授予友好关系时会发生错误。
我正在使用带有 Ninja 的 MSVC 进行编译。
在 C++17 下编译成功。
在 C++20 下,我收到以下错误:
error C2838: '{ctor}': illegal qualified name in member declaration
error C2838: '{dtor}': illegal qualified name in member declaration
Run Code Online (Sandbox Code Playgroud)
这是在 C++20 下导致错误但在 C++17 下编译成功的代码的简化复制:
template<typename T, int V> class B {};
// specialization of class B
template<typename T> class B<T, 0> {
private:
T _t; // private data member
public:
constexpr inline B(T* p, int i) noexcept; // B constructor …Run Code Online (Sandbox Code Playgroud) 我有一个类似的数组[A,B,C,D].我想在for循环中访问该数组,如as
var arr = [A,B,C,D];
var len = arr.len;
for(var i = 0;i<arr.len;i++){
0 - A,B,C
1 - B,C,D
2 - C,D,A
3 - D,A,B
}
Run Code Online (Sandbox Code Playgroud)
我想在JavaScript中访问它,任何想法?