我经常在 Vim 中使用 Quickfix 视图。那里的文本总是添加一个前缀||。
因此,例如,当我从该缓冲区复制/粘贴等时,我会默认包含这些字符。
有办法禁用这个吗?我没有运气找到任何文档或配置......
我最近遇到了一个问题,既不是unique_ptr也不shared_ptr是正确的解决方案。所以,我正在考虑发明另一种智能 ptr(如下所述),但我心里想“我当然不是第一个想要这个的人”。
所以我的高级问题是:
std::功能)来实现这一点,也许我遗漏了什么?要求:
unique_ptr
shared_ptr的行为不同)。weak_ptr, 但要与单一所有权模型一起使用。激励示例:
假设我正在迭代一个接口指针列表,在它们上调用方法。其中一些方法可能会导致列表中稍后的项目被删除。
使用普通指针,我会得到那些已删除项目的悬空引用。
建议设计:
让我们调用拥有指针my_ptr和非拥有引用my_weak_ptr。
对于给定的对象,我们可能有这样的图表:
_______
my_ptr<Obj> owner ---------> |Obj* | -------> [Obj data ... ]
+----> |count|
| +--> |_____|
my_weak_ptr<Obj> A ---+ |
|
my_weak_ptr<Obj> B -----+
Run Code Online (Sandbox Code Playgroud)
my_ptr将有一个与unique_ptr. 在内部,它将存储一个指向“控制块”的指针,该指针实际上只是“真实”指针和控制块本身的引用计数。在销毁时,my_ptr将控制块指针设置为 NULL 并减少引用计数(并删除控制块,如果合适)。
my_weak_ptr将是可复制的,并且有一些get()方法可以返回真实的Obj*. 用户将负责在使用它之前检查它是否为 NULL。在销毁时,my_weak_ptr将减少计数(并删除控制块,如果合适)。
缺点是每次访问都要通过内存两跳。对于my_ptr …
我想从一个非常大的表(数百万行)上的复杂查询的结果中选择一些随机行。
我正在使用 SQL Server 2008,有效地执行此操作的正确方法似乎是TABLESAMPLE子句。
注 1:我对流行的“order by NEWID()”解决方案不感兴趣 - 它对于大型表来说效率低下。
注 2:由于我的查询很复杂,如果可能的话,我不想首先计算它的 COUNT。
注3:由于结果集很大,我不想自己遍历它,就像这里建议的那样。
最重要的是我正在使用 LINQ。具体来说,就是 LINQ-To-Entities。
是否有一种 LINQ 友好的方式来使用 TABLESAMPLE?
即使没有直接支持,是否有某种方法可以在 LINQ 中编写大部分查询,然后执行少量手动 SQL 来执行 TABLESAMPLE?
我有LINQ查询,它是以零碎的方式构建的,如下所示:
var initialQuery = from item in MyContext where xxx == yyy select item;
var furtherQuery = from item in initialQuery where bla == foo select new { some stuff };
// more code here...
// eventually:
var yetAnotherQuery = (from item in furtherQuery ...)
.OrderBy(my_condition);
// As far as I know, the following query should still maintain the order of the previous one
// see: https://stackoverflow.com/questions/911942/are-subqueries-in-linqtosql-guaranteed-to-be-in-the-same-order-as-their-parent
var stillAnotherQuery = (from item in yetAnotherQuery
select item.data_I_care_about)
.Distinct();
// And finally... …Run Code Online (Sandbox Code Playgroud) 我是第一次尝试使用Database Tuning Advisor.
我相信我已经解决了所有与权限相关的问题 - 需要SHOWPLAN,需要'DTA_tuninglog'的SELECT权限等.
然而,根据"建议",它没有显示任何内容.
它确实运行并且似乎正在工作,并且其输出中没有看起来很糟糕的错误,但没有给出建议.
我甚至尝试使用可怕的查询(大量的表扫描)创建一个虚拟数据库,使用索引显然可以做得更好,但它也没有显示任何建议.
也许我真正的问题是:我如何知道DTA何时实际工作,而我有一些配置问题导致它不产生输出?
有没有人有指针?
更多信息:
我正在使用'调整选项'的默认值
在数据库中使用的物理设计结构(PDS): 索引
采用分区策略: 无分区
要保留在数据库中的物理设计结构(PDS): 保留所有现有的PDS
在我的实际问题的这个简化版本中,我有两个表:User和Metadata.每个用户可以通过FKEY拥有与其相关联的不同数量的元数据条目.
这个Linq编译好:
var user = from u in Context.Users
join m in Context.Metadata
on u.id equals m.userid
select new { u.id, m.value }
Run Code Online (Sandbox Code Playgroud)
但是,如果我将'on'子句行替换为:
on new { u.id } equals new { m.userid }
Run Code Online (Sandbox Code Playgroud)
它无法使用此错误进行编译:
error CS1941: The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'Join'.
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么?
并获得奖励积分:
我最终试图完成这样的查询:
var user = from u in Context.Users
join m in Context.Metadata
on new { u.id, …Run Code Online (Sandbox Code Playgroud) 假设我想在vim中创建一个地图,它将调用ex命令作为其工作的一部分.并假设ex命令将寄存器名称作为输入.
这是一个玩具示例:
nmap <leader>p :put x
Run Code Online (Sandbox Code Playgroud)
问题是总是会使用'x'寄存器.但在打字时,我希望能够写:
"a<leader>p
Run Code Online (Sandbox Code Playgroud)
要使用'a'寄存器,或者:
"b<leader>p
Run Code Online (Sandbox Code Playgroud)
使用'b'寄存器.
有没有办法可以将'当前正常模式寄存器'传递给'ex'命令?
set -e当通过扩展调用这些函数时,Bash 中的选项似乎会在函数内部重置$(...)。
这让我很惊讶,我不确定这是否是一个错误。我无法在(通常相当详尽的)Bash 联机帮助页中找到此行为的描述。
注意:这里还有一些其他类似的帖子:
但它们都没有涉及$(...),这在联机帮助页中也没有真正讨论。
我在优秀的Bash FAQ 105中也找不到对此问题的参考。
这是一个小程序来演示这个问题:
echo "Initial: $-"
set -eu
echo "After set: $-"
function foo() {
echo "Inside foo: $-"
}
foo
function bar() {
false # I'd expect this to immediately fail
echo "Inside bar: $-"
}
# When a $(...) construct is involved, 'bar' runs to completion!
x=$(bar)
echo "We should never …Run Code Online (Sandbox Code Playgroud) 假设我有一个数据框,d其中有一列包含 Python 数组作为值。
>>> d = pd.DataFrame([['foo', ['bar']], ['biz', []]], columns=['a','b'])
>>> print d
a b
0 foo [bar]
1 biz []
Run Code Online (Sandbox Code Playgroud)
现在,我想过滤掉那些有空数组的行。
我尝试了各种版本,但到目前为止没有运气:
试图将其检查为“真实”值:
>>> d[d['b']]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/myname/.local/lib/python2.7/site-packages/pandas/core/frame.py", line 2682, in __getitem__
return self._getitem_array(key)
File "/home/myname/.local/lib/python2.7/site-packages/pandas/core/frame.py", line 2726, in _getitem_array
indexer = self.loc._convert_to_indexer(key, axis=1)
File "/home/myname/.local/lib/python2.7/site-packages/pandas/core/indexing.py", line 1314, in _convert_to_indexer
indexer = check = labels.get_indexer(objarr)
File "/home/myname/.local/lib/python2.7/site-packages/pandas/core/indexes/base.py", line 3259, in get_indexer
indexer = self._engine.get_indexer(target._ndarray_values)
File "pandas/_libs/index.pyx", …Run Code Online (Sandbox Code Playgroud) 最近,在使用自定义分配器代码和放置 new+delete 时,我注意到一些令我惊讶的事情:当调用虚拟析构函数时,它会写入对象即将被释放的内存。
这是为什么?
(更新) 旁白:我对这里的实际行为更感兴趣,而不是 C++ 标准所说的,我确信它没有指定这种行为。
这里有一个小程序来演示:
#include <new>
#include <cstring>
#include <iostream>
using std::cout;
using std::endl;
struct Interface {
virtual ~Interface() = default;
};
struct Derived : public Interface {
};
alignas(Derived) unsigned char buffer[sizeof(Derived)];
int main() {
memset(buffer, 0xff, sizeof(buffer));
cout << "Initial first byte: 0x" << std::hex << (int)buffer[0] << endl;
// Create an instance, using 'data' as storage
Derived *pDer = ::new (buffer) Derived();
cout << "After ctor, first byte: 0x" << std::hex …Run Code Online (Sandbox Code Playgroud) linq ×3
c++ ×2
sql-server ×2
vim ×2
bash ×1
c++14 ×1
gcc ×1
gcc4 ×1
pandas ×1
performance ×1
python ×1
random ×1
shell ×1
vim-quickfix ×1