当您使用PDO与MSSQL的驱动程序,你实际使用freetds的低级别的驱动程序.执行存储过程有一些不同的方法 - 语言查询和RPC调用.
FreeTDS还支持TDS协议版本4.2和7.x. 它们之间的主要区别之一是存储过程调用的行为.Microsoft将协议4.2中的行为更改为7.0,而不是从语言查询返回输出参数.语言查询主要将文本查询发送到包装到TDS包中的服务器.
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)");
$value = 'Hello!';
$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);
$stmt->execute();
print "The output is $value\n";
Run Code Online (Sandbox Code Playgroud)
实际上你发送的东西就像"EXEC sp_takes ....".如果您使用MSSQL运行上面的示例,您将获得TDS7.х中的空输出参数和4.2的预期结果.为什么我们不能使用4.2并且开心?它有很多局限性:
prepared statements不支持动态查询(也称为).所以,4.2不是变种.
$stmt = mssql_init('sp_takes_string_returns_string');
$value = 'Hello!';
mssql_bind($stmt, 1, $value, SQLVARCHAR, true, false, 4000);
mssql_execute($stmt);
print "The output is $value\n";
Run Code Online (Sandbox Code Playgroud)
使用上面的示例和php中的本机mssql扩展,您可以使用TDS 7.2获得正确的结果.实际上,您使用该代码发送二进制RPC数据包.
是否有任何方法可以使用PDO和MSSQL驱动程序对存储过程进行RPC调用?
使用QML JumpList的最小工作示例(如果在c ++中使用QWinJumpList,则行为相同).
import QtQuick 2.3
import QtQuick.Window 2.2
import QtWinExtras 1.0
Window {
visible: true
JumpList {
JumpListCategory {
visible: true
title: "Test"
JumpListLink {
title: "Test Link"
executablePath: "http://google.com"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
启动应用程序后,您可以在Windows任务栏中的应用程序上按鼠标右键,并查看如下内容:
如果按下Test Link菜单项,则http://google.com应该打开带有url 的默认浏览器,因为它使用shell执行.这在Windows 7,8,8.1中运行良好.
在Windows 10中,当您不用手将应用程序固定到任务栏时,这不起作用.完成此操作后,链接正在运行.
为什么这样以及如何解决?
更新1:这个奇怪的行为在Qt 5.5,5.5.1,5.6和Windows 10上的master分支测试 - 开发,首次发布的家庭版,最终的家,亲.结果是一样的 - 不起作用.此外,例如,chrome使用自定义列表(该site部分),它可以很好地工作而不固定.
更新2:这是我的qt bug QTBUG-49486关于这个并且与它有关QTBUG-48751.但问题是现在Qt开发人员也不知道如何解决这个问题.
我按照安装说明进行操作:https://www.tensorflow.org/versions/master/get_started/os_setup.html#pip_install
我在Mac OS X 10.11上使用python 2.7.11(Anaconda).我查了但是我的电脑上已经安装了setuptools 18.5.
并遇到了错误
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.6.0-py2-none-any.whl
The directory '/Users/my_name/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/my_name/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and …Run Code Online (Sandbox Code Playgroud) Redis团队为Redis 5.0 引入了新的Streams数据类型.由于Streams从第一个视图看起来像Kafka主题,因此找到使用它的真实世界示例似乎很奇怪.
在流介绍中,我们与Kafka流进行了比较:
我们与Kafka,RabbitMq和NATS有一些项目.现在我们深入研究Redis流,尝试将其用作"pre kafka cache",在某些情况下使用Kafka/NATS替代方案.现在最关键的一点是复制:
和帽子战略.Redis Streams真正的"上限资源"是内存,所以要存储多少项目或使用哪种上限策略并不是那么重要.因此,每当您的消费者失败时,您将获得峰值内存补偿或消息丢失带帽.
我们使用Kafka作为RTB竞标者前端,每秒处理约1,100,000条消息,有效载荷约为120字节.使用Redis,我们在写入时有大约170 mb/sec的内存消耗,而对于512 gb的RAM服务器,我们已经为大约50分钟的数据写了"保留".因此,如果处理系统此时处于脱机状态,我们就会崩溃.
您能否详细介绍一下Redis Streams在现实世界中的用法,有些情况下您可能会尝试自己使用它?或者Redis Streams可能会使用不大量的数据?
问题在哪里:
我们使用RabbitMQ作为任务队列.其中一项具体任务 - 向Vkontakte社交网络发送通知.他们api限制每秒请求和此限制根据您的应用程序大小.只需3个电话就可以获得少于10万人的应用程序,依此类推.所以我们需要人为地限制对他们的服务请求.现在这个逻辑基于应用程序.这很简单,虽然每个队列只能使用一个工作人员,但只需设置睡眠(300毫秒)并保持冷静.但是当你应该使用N个工作者时,这种同步变得微不足道.
如何使用RabbitMQ限制吞吐量?
基于上面的故事.如果可能的话,设置预取大小不仅基于消息,而且基于此逻辑的时间可以非常简单.例如,"每次获取的qos到1条消息不会快于1次,以秒为单位"等等.
我是ko-worker库的开发者。我添加了 phar 可执行文件作为守护程序应用程序的功能。并发现 phar 和进程分叉 undex linux 的奇怪行为。每次主进程分叉超过 1 个孩子时,我都会遇到这样的错误
include(phar:///opt/www/worker.phar/vendor/path/to/file.php):
failed to open stream: phar error: internal corruption of phar
"/opt/www/worker.phar" (crc32 mismatch on file "vendor/path/to/file.php")
in `phar:///opt/www/worker.phar/vendor/composer/ClassLoader.php` line 412
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/env php
<?php
Phar::mapPhar('worker.phar');
require_once 'phar://worker.phar/vendor/autoload.php';
//Execute next going fork code more then one 1 time
...
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
// we are the parent
...
} …Run Code Online (Sandbox Code Playgroud) 例如,我们有大量的对象列表,如下所示:
class KeyStatisticEntry:
def __init__(self, value=""):
self.usedBytes = len(value)
self.encoding = get_string_encoding(value)
@property
def total(self):
overhead = get_object_overhead(self.usedBytes)
if self.encoding == 'some value':
return overhead
else:
return self.usedBytes + overhead
@property
def aligned(self):
return some_func_with(self.usedBytes)
# Here is lots of calculated properties on basis of existing properties
Run Code Online (Sandbox Code Playgroud)
我们需要关注这个对象的许多矩阵 - 它的属性的最小值,最大值,总和,平均值,stdev值.目前我使用这样的代码:
used_bytes = []
total_bytes = []
aligned_bytes = []
encodings = []
for obj in keys.items():
used_bytes.append(obj.usedBytes)
total_bytes.append(obj.total)
aligned_bytes.append(obj.aligned)
encodings.append(obj.encoding)
total_elements = len(used_bytes)
used_user = sum(used_bytes)
used_real = sum(total_bytes)
aligned …Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的情况,我不知道有什么问题
我需要检查目录中是否存在至少一个带模式的文件.
IF EXIST d:\*Backup*.* (
ECHO "file exist"
) ELSE (
ECHO "file not exist"
)
Run Code Online (Sandbox Code Playgroud)
如果在d:\我有一个文件x_Backup.txt和一个文件夹Backup我得到file exist但是如果我只有文件夹Backup我再次得到file exist,似乎路径中的点被忽略.
在使用 PHP7 将 Web 应用程序移植到服务器时,我遇到了一个问题:我无法让 mssql_connect 工作。我发现 mssql 在 PHP7 上不起作用(或永远不会起作用)。
在 Ubuntu(Nginx、php-fpm)上使用 PHP7 连接到 MSSQL 的最快方法是什么?
这是Qt(LTS 5.6.2)中的数字比较的疯狂字符串QML JavaScript实现:
console.log("240000000000" == "3776798720");
console.log("240000000000" === "3776798720");
console.log("240000000000" === "3776798721");
Run Code Online (Sandbox Code Playgroud)
输出是:
true
true
false
Run Code Online (Sandbox Code Playgroud)
它看起来像字符串解释为(u)int32和高字节丢失:
240000000000 == 0x37E11D6000
3776798720 == 0xE11D6000
Run Code Online (Sandbox Code Playgroud)
这个bug也会影响对象:
var g = {};
var h = "240000000000";
g[h] = h + "BUG";
console.log(JSON.stringify(g, null, 2));
console.log(g["3776798720"], g["240000000000"]);
Run Code Online (Sandbox Code Playgroud)
输出:
qml: {
"3776798720": "240000000000BUG"
}
qml: 240000000000BUG 240000000000BUG
Run Code Online (Sandbox Code Playgroud)
如您所见,钥匙已损坏.该值可以通过两个不同的字符串获得.
有没有选择在没有修补Qt的情况下解决这个问题?或者至少在Qt中可能出现问题的大致位置可以改善自己?
ps这里还有我的同事报告的QTBUG-56830.
我在 redis 中有一个哈希集,如下所示。
"abcd" : {
"rec.number.984567": "value1",
"rec.number.973956": "value2",
"rec.number.990024": "value3",
"rec.number.910842": "value4",
"rec.number.910856": "...",
"other.abcd.efgh": "some value",
"other.xyza.blah": "some other value"
"..." : "...",
"..." : "...",
"..." : "...",
"..." : "..."
}
Run Code Online (Sandbox Code Playgroud)
如果我调用 hgetall abcd,它会给我哈希中的所有字段。我的目标是仅获取哈希集中以“rec.number”开头的字段。当我打电话时
redis-cli hmget "abcd" "rec.number*",
Run Code Online (Sandbox Code Playgroud)
它给了我这样的结果
1)
Run Code Online (Sandbox Code Playgroud)
有没有办法只检索那些以我的预期模式开头的键的数据?我只想检索这些键,因为我的数据集包含许多其他不相关的字段。
php ×3
redis ×3
windows ×3
qml ×2
qt ×2
aggregate ×1
apache-kafka ×1
batch-file ×1
c++ ×1
cmd ×1
filter ×1
fork ×1
freetds ×1
javascript ×1
linux ×1
list ×1
macos ×1
path ×1
pdo ×1
phar ×1
php-7 ×1
pip ×1
python ×1
rabbitmq ×1
redis-cli ×1
sql-server ×1
task-queue ×1
taskbar ×1
tensorflow ×1
ubuntu ×1
vk ×1