小编Nic*_*oft的帖子

结合mingw和git

我在D:\ mingw中安装了MinGW.我的Git用C安装:\ Program Files文件\饭桶.我想使用MinGW开发/编译并使用git进行版本控制.

我想我必须使用正确的路径,但有些路径是硬编码的.像msys mount脚本调用/bin/msysmnt.exe一样

所以我有两个选择:1.使用git的shell(能够在提示符下显示分支)2.使用mingw(msys)的shell - 拥有正确的路径

无论我选择哪个,我必须使其他功能在其下工作.

git shell mingw

39
推荐指数
5
解决办法
4万
查看次数

c ++ std :: ostringstream vs std :: string :: append

在使用某种缓冲的所有示例中,我看到它们使用流而不是字符串.std :: ostringstream和<<运算符与使用string.append有何不同.哪一个更快,哪一个使用更少的资源(内存).

我知道的一个区别是你可以输出不同的类型到输出流(如整数),而不是字符串:: append接受的有限类型.

这是一个例子:

std::ostringstream os;
os << "Content-Type: " << contentType << ";charset=" << charset << "\r\n";
std::string header = os.str();
Run Code Online (Sandbox Code Playgroud)

VS

std::string header("Content-Type: ");
header.append(contentType);
header.append(";charset=");
header.append(charset);
header.append("\r\n");
Run Code Online (Sandbox Code Playgroud)

显然使用流更短,但我认为append返回对字符串的引用,因此它可以像这样写:

std::string header("Content-Type: ");
header.append(contentType)
  .append(";charset=")
  .append(charset)
  .append("\r\n");
Run Code Online (Sandbox Code Playgroud)

使用输出流,您可以执行以下操作:

std::string content;
...
os << "Content-Length: " << content.length() << "\r\n";
Run Code Online (Sandbox Code Playgroud)

但是内存使用和速度呢?特别是在大循环中使用时.

更新:

更清楚的问题是:我应该使用哪一个?为什么?是否有首选或其他的情况?对于性能和内存......我认为基准测试是唯一的方法,因为每个实现都可能有所不同.

更新2:

好吧,我不清楚我应该从答案中使用什么,这意味着他们中的任何一个都会完成这项任务,再加上矢量. Cubbi在DietmarKühl的基础上做了很好的基准测试,最大的不同是这些物体的构造.如果您正在寻找答案,您也应该检查一下.我会等待更多的其他答案(看看以前的更新),如果我没有得到一个,我想我会接受Tolga的答案,因为他的建议使用矢量已经完成之前意味着矢量应该是更少的资源饥饿.

c++ string stream

32
推荐指数
2
解决办法
2万
查看次数

git日志格式

我需要有这样的格式:

git log --decorate --graph --oneline --date-order
Run Code Online (Sandbox Code Playgroud)

但我也需要它:

  1. 包含日期(短)
  2. 有相同的颜色

我试过了:

git log --decorate --graph --oneline --date-order \
--date=short --pretty=format:"%h %ad %s"
Run Code Online (Sandbox Code Playgroud)

但它更难阅读(没有颜色),也不包括分支/标签


最接近的简单解决方案是(感谢VonC):

git log --graph --pretty=format:'%C(yellow)%h%Creset \
-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \
--abbrev-commit --date=short
Run Code Online (Sandbox Code Playgroud)

git format logging

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

如何在没有本地repo的情况下在远程运行git命令

我有一个名为'git-export'的脚本,它可以帮助我导出远程存储库.它运行如下:

git-export http://host.com/git-repo <-t tag or -b branch or -c commit> /local/dir
Run Code Online (Sandbox Code Playgroud)

在它用于导出本地存储库之前,我使用了以下命令:

从分支获取提交:

git branch -v --no-abbrev|awk '($1=="'$BRANCH'") || ($1 == "*" && $2 == "'$BRANCH'"){if($1 == "*"){print $3;}else{print $2;}}'
Run Code Online (Sandbox Code Playgroud)

要么

git rev-parse -q --verify $BRANCH^{commit}
Run Code Online (Sandbox Code Playgroud)

通过标记获取提交:

git rev-parse -q --verify $TAG^{commit}
Run Code Online (Sandbox Code Playgroud)

我也有脚本列出标签,版本(标签,从v开始),我使用git branch -v来显示分支....

问题是:如何在没有本地的情况下在远程存储库上执行这些操作.是否有一些通用的方法来查询远程.例如:git --remote=http://host.com/repo branch -vgit --remote=http://host.com/repo log

Resion:如果我想在远程主机上安装软件,我只想

  1. 列表版本,分支等
  2. 导出特定版本/分支/提交并显示提交的SHA1,无论我导出哪一个(通过导出我的意思git archive --remote=<repo>|tar x)

编辑:

我不想动作运行远程命令.我想将远程存储库与本地命令一起使用并将其格式化.

tags git branch export

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

64位机器上的32位或64位虚拟机速度更快(vmware)

我有64位主机操作系统的64位主机.我想安装一个虚拟机(1GB或更小的RAM),但我不知道哪个会显示更好的性能.我听说64位硬件/软件的唯一优势是每个进程可以处理超过2 GB的内存,而且它实际上比32位慢.

因此,最好安装32位guest虚拟机操作系统/操作系统或64位.

我认为我将运行的软件是32位,所以无论如何它都会运行/不运行/使用32位库.但是,如果我有64位版本的软件怎么办?

vmware 64-bit 32-bit

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

带有独占锁定的MySQL InnoDB死锁(FOR UPDATE)

我这样做是为了确保只运行一次这个进程的实例(伪代码php/mysql innodb):

START TRANSACTION
$rpid = SELECT `value` FROM locks WHERE name = "lock_name" FOR UPDATE
$pid = posix_getpid();
if($rpid > 0){
  $isRunning = posix_kill($rpid, 0);
  if(!$isRunning){ // isRunning
    INSERT INTO locks values('lock_name', $pid) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`)
  }else{
    ROLLBACK
    echo "Allready running...\n";
    exit();
  }
}else{ // if rpid == 0 -
  INSERT INTO locks values('lock_name', $pid) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`)
}
COMMIT

...............

//free the pid
INSERT INTO locks values('lock_name', 0) ON DUPLICATE …
Run Code Online (Sandbox Code Playgroud)

mysql deadlock innodb transactions

6
推荐指数
2
解决办法
6904
查看次数

Linux - 如何在C中更改分叉进程的信息

标题可能听起来有点奇怪,ps aux我看到了这个:

root     20953  0.0  0.0   9528  1280 ?        Ss   Apr28   0:07 sendmail: accepting connections
Run Code Online (Sandbox Code Playgroud)

"接受连接"就像是sendmail进程的标题.它不是一个参数因为cat /proc/20953/cmdline返回sendmail: accepting connections(空格而不是0x00):

# cat /proc/20953/cmdline |hexdump -C
00000000  73 65 6e 64 6d 61 69 6c  3a 20 61 63 63 65 70 74  |sendmail: accept|
00000010  69 6e 67 20 63 6f 6e 6e  65 63 74 69 6f 6e 73     |ing connections|
0000001f
Run Code Online (Sandbox Code Playgroud)

/ proc fs中的参数用空字节分隔:

# cat /proc/26511/cmdline |hexdump -C
00000000  2f 62 69 …
Run Code Online (Sandbox Code Playgroud)

c linux gcc fork

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

phpunit - 如何格式化输出

我想像这样格式化 PHPUnit 输出:

1/15. ATestCaseTest ... passed (3/3), time: 0ms
  1/59. DISABLED_test1 ... skipped , time: 0ms
  2/59. test2 ... passed , time: 1497ms
  3/59. test3 ... passed , time: 593ms

2/15. AnotherTestCaseTest ... passed (2/2), time: 0ms
  4/59. Test4 ... passed , time: 49ms
  5/59. Test5 ... passed , time: 0ms
.....


  Test cases run: 15/15, tests passed: 58/59, Asserts: 100/100, Failures: 0, Exceptions: 0
Run Code Online (Sandbox Code Playgroud)

“通过”将为绿色,跳过 - 橙色,失败 - 红色

摘要行还将有颜色编码 - 如果一切都通过(或跳过)则为绿色,如果失败则为红色

我没有找到 phpunit 类的任何文档。只有快速指南类型的文档,只有几个示例: https: //phpunit.de/manual/4.8/en/extending-phpunit.html

我尝试查看代码/注释,但对于我需要完成的简单任务来说,这似乎太多了。 …

formatting phpunit output

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

OAuth中授权代码的目的是什么

在oauth中,您使用客户端ID /密码进行请求以获取授权码。然后,您再次发出请求,以将授权代码交换为访问令牌。我的问题是:

为什么需要两步过程而不是首先获得访问令牌?如何使整个过程更安全?还是还有其他原因。

我说的是服务器端应用程序(例如php),它从远程服务器而不是javascript请求授权。

api oauth server-side oauth-2.0

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

IntelliJ IDEA 15 场景生成器未显示所有控件

我对内置的 Scene Builder 有问题。使用独立的 Scene Builder 时,一切正常。我是否搞砸了 IntelliJ Idea 中的某些设置,或者这是一个错误。

我使用 IntelliJ Idea 15.0.3(64 位)和 Scene Builder 2.0。

我在 IntelliJ 中改变的一件事是堆大小。这是我的idea64.exe.vmoptions 文件:-Xms512m -Xmx2048m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=256m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=256m net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow

我将 -Xmx 增加到 2GB,因为它抱怨它需要更多的内存......饥饿的 Java......这也是我切换到 64 位版本的原因。32 位不想用超过 1.1GB 的堆启动。我注意到关于对话框的 SceneBuilder 说“操作系统:Windows 7、x86、6.1”。使用 64 JRE 有问题吗?它是java,下面的内容无关紧要......

当我尝试使用 32 位 JRE 运行的想法的 Scene Builder 时,我会发布更新。

更新: IntelliJ 与 32 位 JRE 的行为方式相同。

在 IntelliJ Idea 15 中构建的场景构建器

java javafx intellij-idea scenebuilder

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