小编jwd*_*jwd的帖子

Vim Quickfix 前缀双杠“||” - 解释?

我经常在 Vim 中使用 Quickfix 视图。那里的文本总是添加一个前缀||

因此,例如,当我从该缓冲区复制/粘贴等时,我会默认包含这些字符。

有办法禁用这个吗?我没有运气找到任何文档或配置......

vim vim-quickfix

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

另一种类型的智能 ptr,比如带有弱引用的 unique_ptr?

我最近遇到了一个问题,既不是unique_ptr也不shared_ptr是正确的解决方案。所以,我正在考虑发明另一种智能 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 …

c++ smart-pointers c++14

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

使用 LINQ(ala TABLESAMPLE)从大型结果集中有效地选择随机行

我想从一个非常大的表(数百万行)上的复杂查询的结果中选择一些随机行。

我正在使用 SQL Server 2008,有效地执行此操作的正确方法似乎是TABLESAMPLE子句。

注 1:我对流行的“order by NEWID()”解决方案不感兴趣 - 它对于大型表来说效率低下。

注 2:由于我的查询很复杂,如果可能的话,我不想首先计算它的 COUNT。

注3:由于结果集很大,我不想自己遍历它,就像这里建议的那样。

最重要的是我正在使用 LINQ。具体来说,就是 LINQ-To-Entities。

是否有一种 LINQ 友好的方式来使用 TABLESAMPLE?

即使没有直接支持,是否有某种方法可以在 LINQ 中编写大部分查询,然后执行少量手动 SQL 来执行 TABLESAMPLE?

linq sql-server random linq-to-entities sql-server-2008

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

LINQ - 如何保存我的(复杂)结果?

我有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)

linq linq-to-entities

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

数据库调优顾问 - 为什么它没有给我任何结果?

我是第一次尝试使用Database Tuning Advisor.

我相信我已经解决了所有与权限相关的问题 - 需要SHOWPLAN,需要'DTA_tuninglog'的SELECT权限等.

然而,根据"建议",它没有显示任何内容.

它确实运行并且似乎正在工作,并且其输出中没有看起来很糟糕的错误,但没有给出建议.

我甚至尝试使用可怕的查询(大量的表扫描)创建一个虚拟数据库,使用索引显然可以做得更好,但它也没有显示任何建议.

也许我真正的问题是:我如何知道DTA何时实际工作,而我有一些配置问题导致它不产生输出?

有没有人有指针?



更多信息:

我正在使用'调整选项'的默认值

在数据库中使用的物理设计结构(PDS): 索引

采用分区策略: 无分区

要保留在数据库中的物理设计结构(PDS): 保留所有现有的PDS

sql-server performance sql-server-2008 database-tuning

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

这个Linq为什么不编译?

在我的实际问题的这个简化版本中,我有两个表:UserMetadata.每个用户可以通过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)

linq linq-to-entities

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

在映射到ex命令时传递寄存器名称

假设我想在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'命令?

vim

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

当通过“$(...)”运行时,bash“set -e”重置内部函数?

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)

bash shell

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

过滤掉 Pandas DataFrame 中的“空数组”值

假设我有一个数据框,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)

python pandas

3
推荐指数
2
解决办法
3243
查看次数

为什么虚拟析构函数写入内存?

最近,在使用自定义分配器代码和放置 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)

c++ gcc gcc4 virtual-destructor

3
推荐指数
1
解决办法
101
查看次数