小编Dav*_*ita的帖子

PostgreSQL查询不使用索引

我有一个非常简单的数据库模式,它在以下列上有一个多列b树索引:

PersonId, Amount, Commission
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试使用以下查询选择表:

explain select * from "Order" where "PersonId" = 2 AND "Commission" > 3
Run Code Online (Sandbox Code Playgroud)

Pg正在扫描索引并且查询非常快,但是如果我尝试以下查询:

explain select * from "Order" where "PersonId" > 2 AND "Commission" > 3
Run Code Online (Sandbox Code Playgroud)

即使索引存在,它也会执行顺序扫描.甚至这个查询

explain select * from "Order" where "Commission" > 3 
Run Code Online (Sandbox Code Playgroud)

做顺序扫描.有人在乎解释原因吗?:-)

非常感谢你.

UPDATE

该表包含1亿行.我创建它只是为了测试PostgreSQL对MS SQL的性能.该表已经是VACUUMED.我正在运行Core I5 2500k四核CPU和8 GB内存.

以下是此查询的解释分析结果:

explain ANALYZE select * from "Order" where "Commission" BETWEEN 3000000 AND 3000010  LIMIT 20 


Limit  (cost=0.00..2218328.00 rows=1 width=24) (actual time=28043.249..28043.249 rows=0 loops=1)
  ->  Seq Scan on "Order"  (cost=0.00..2218328.00 rows=1 …
Run Code Online (Sandbox Code Playgroud)

postgresql indexing

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

Task.ContinueWith 从调用线程

我试图从创建任务的线程(不是 GUI 线程)执行ContinueWith 中的Func。我试过这个代码:

SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());

var scheduler = TaskScheduler.Current.FromCurrentSynchronizationContext();
Console.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId);
var t = Task.Factory.StartNew(() =>
{
    Console.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId);
})
.ContinueWith(
    _ => Console.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId),
    // Specify where to execute the continuation
    scheduler
);

t.Wait();
Run Code Online (Sandbox Code Playgroud)

但调用者线程和 .ContinueWith 线程有所不同。知道为什么吗?我得到以下结果:

1 3 3

看起来传递调度程序会导致ContinueWith从正在执行实际任务的线程执行,我希望它从创建任务的线程执行,在本例中为1。

谢谢

c# multithreading asynchronous task-parallel-library

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

C++模板类和返回类型作为约束

抱歉这个愚蠢的问题,但我对C++很陌生.

我有一个AlertInfoBase在我的项目中调用的基类.它有几十个子类.现在我想要一个类模板,它将有一个方法filter().此方法将始终返回引用AlertInfoBase.这是代码:

template <class T>
class AlertInfoFilter
{
public:
    AlertInfoFilter() { }
    AlertInfoBase & filter(T & alertInfo)
    {
        return alertInfo;
    }
};
Run Code Online (Sandbox Code Playgroud)

如您所见,方法过滤器只返回传递的参数.我的目标是创建filter()使用模板专门化的替代实现,但这不是我现在的问题/问题.我面临的一件奇怪的事情是,当我将一个类的实例传递给filter()子类的实例时AlertInfoBase,一切都按预期工作.它返回相同的引用,但是当我传递一个没有实现的类的实例时AlertInfoBase,项目不会编译.实际上这是我想要的那种行为,但有些澄清为什么会发生这种情况会很好.编译器是否足够聪明,猜测由于返回类型,我使用不正确的参数填充方法?

谢谢

PS我正在使用MinGW编译器.

c++ templates return-type

2
推荐指数
1
解决办法
161
查看次数

IDA Pro中的调试部分是什么?

我尝试用我糟糕的装配技巧来分析一个dll文件,所以请原谅我,如果我无法实现非常微不足道的事情.我的问题是,在调试应用程序时,我发现我只在调试会话中寻找的代码,在我停止调试器后,地址消失了.dll看起来不会被混淆,因为许多代码都是可读的.看一下截图.我正在寻找的代码位于debug376部分的地址07D1EBBF.BTW,我在哪里获得这个debug376部分?

所以我的问题是,如何在不调试的情况下找到此功能?谢谢

UPDATE

好吧,正如我所说,一旦我停止调试器,代码就会消失.我甚至无法通过字节序列找到它(但我可以在调试模式下).当我启动调试器时,代码不会立即被反汇编,我应该在那个地方添加一个硬件断点,只有当断点被击中时,IDA才会显示反汇编的代码.看一下这个截图 您会看到我感兴趣的代码行,如果程序没有在调试模式下运行,则该代码行不可见.我不确定,但我认为它类似于在运行时解包代码,这在设计时是不可见的.

无论如何,任何帮助将不胜感激.我想知道为什么代码被隐藏,直到断点命中(它显示为"db 8Bh"等)以及如何在没有调试的情况下找到该地址(如果可能).BTW,这可能是来自不同模块(dll)的代码吗?

谢谢

更新2

我发现debug376是在运行时创建的一个段.这么简单的问题:我怎样才能找到这个细分来自哪里:)

reverse-engineering ida disassembly

2
推荐指数
1
解决办法
5192
查看次数

应用程序是否应处于运行状态以触发意图?

我有一个非常简单的IntentReceiver来在时间变化时接收事件.这是代码:

public class IntentRec extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("IntentRec", intent.getAction());
    }
}

<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
    <receiver android:name=".IntentRec">
        <intent-filter>
            <action android:name="android.intent.action.TIME_SET"/>
        </intent-filter>
    </receiver>
    <activity android:name="MyActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>
Run Code Online (Sandbox Code Playgroud)

但是,我在应用程序运行时收到了意图.但是如果我关闭(使用强制关闭)应用程序,则不会调用onReceive.所以我的问题是,我是否只在监听器应用程序运行时收到意图?我认为意图设计为在应用程序未运行时运行目标侦听器类.

谢谢

android android-intent

2
推荐指数
1
解决办法
796
查看次数

使用protobuf反序列化对象列表

我正在构建一个带有套接字通信的C#服务器和python客户端应用程序.服务器将序列化的对象列表发送到客户端,但我不知道(也找不到)如何在python中反序列化列表.任何帮助,将不胜感激.

python protocol-buffers protobuf-net

2
推荐指数
1
解决办法
4138
查看次数

从数组中选择特定数字的概率

我正在挠头2天,无法弄清楚我的代码有什么问题.可以说我有2个数组:

Array1[33]: 0..31 (it has 2 fives)
Array2[32]: 0..31 (it has one five)
Run Code Online (Sandbox Code Playgroud)

现在我想计算从第一个数组中随机选取5的概率和从第二个数组中随机选择5的概率.我用这个公式做到这一点:

(2M / 33) * (1M / 32)
Run Code Online (Sandbox Code Playgroud)

这是粗略的0.001894.现在,如果我运行周期足够长,比如1000,000,0我应该期望'5''5'大约上升18940次,但是当我运行测试时这不会发生.这是代码:

public class Program
{
    private static List<int> numbers1 = new List<int>();
    static Random random = new Random(Guid.NewGuid().GetHashCode());
    private static List<int> numbers2 = new List<int>();

    static void Main(string[] args)
    {
        for (int i = 0; i < 33; i++)
        {
            numbers1.Add(i);
            numbers2.Add(i);
        }

        numbers1.Add(5);

        while (true)
        {
            var counter = 0;
            for (int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

.net c# math probability

2
推荐指数
1
解决办法
517
查看次数

检查给定路径是否是特殊文件夹路径?

在 Windows 上,可以使用SHGetKnownFolderPathor获取任何特殊文件夹路径SHGetSpecialFolder(如果我没记错的话)。但是,我想要相反的,我有一个路径,想知道它属于哪个特殊文件夹(如果有)。我更喜欢这种方法,因为要找出给定的路径是否在特定的特殊文件夹中,我必须为所有用户枚举所有特殊文件夹,这有点难看,但如果没有其他方法,天空是极限:)

我搜索了它,但找不到任何有用的东西。那么 WinApi 是否有一个功能可以做到这一点?

谢谢。

windows winapi special-folders

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

“git svn clone”:users.txt 中未定义作者?

我在从 Git 克隆 svn 存储库时遇到问题。我已经定义了 users.txt 文件,其中包含在 SVN 存储库中做出贡献的所有用户。然后我执行以下命令来克隆 SVN repo:

git svn clone --no-metadata --authors-file=C:/temp/Migration/AES_Exchange/users.txt https://some.url.com
/repos/Exchange Git_SVN
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息: "Author: SVNAdmin not defined in C:/temp/Migration/AES_Exchange/users.txt file"

即使该用户是在 users.txt 文件中定义的。

SVNAdmin = svnadmin <svnadmin@sss.com>
adaraz = adaraz <adaraz@sss.com>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

谢谢

svn git

2
推荐指数
1
解决办法
2553
查看次数

当容器在localhost接口上侦听时Docker端口转发不起作用

我有无法解决的端口转发问题。我在VM中运行Linux,并且正在使用该VM中的docker。例如,当我尝试从docker compose设置端口转发时:

ports:
   - "3080:3080"
Run Code Online (Sandbox Code Playgroud)

它仅在容器中运行的应用程序正在侦听0.0.0.0:3080的情况下起作用。问题是,我正在码头化的大多数应用程序都在监听localhost。0.0.0.0以外的任何接口都会导致端口转发不起作用。您是否知道为什么会这样或如何解决?

我在跑:

Docker版本17.05.0-CE,内部版本89658be

docker-compose版本1.17.1,构建未知

谢谢

PS我发现了一个临时的解决方法。我为容器指定了网络模式“主机”,强制容器使用主机OS网络,但是这种方法在MacOS上不起作用。

docker docker-compose docker-networking docker-network

2
推荐指数
1
解决办法
2369
查看次数