小编Ass*_*vie的帖子

如何在SQL中有效地计算列值的出现次数?

我有一张学生桌:

id | age
--------
0  | 25
1  | 25
2  | 23
Run Code Online (Sandbox Code Playgroud)

我想查询所有学生,还有一个额外的专栏,用于计算同一年龄段的学生人数:

id | age | count
----------------
0  | 25  | 2
1  | 25  | 2
2  | 23  | 1
Run Code Online (Sandbox Code Playgroud)

这样做最有效的方法是什么?我担心子查询会很慢,我想知道是否有更好的方法.在那儿?

sql performance

152
推荐指数
5
解决办法
35万
查看次数

git:在提交消息中显示索引差异作为注释

git commit打开邮件编辑器显示一个简要的状态,这样的事情:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Your branch is ahead of 'origin/master' by 26 commits.
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   Showcase/src/com/gigantt/BorderArea.mxml
#   modified:   Showcase/src/com/gigantt/Client.mxml
#   modified:   Showcase/src/com/gigantt/GraphItem.mxml
#
Run Code Online (Sandbox Code Playgroud)

我如何调整git以显示要提交的差异?我知道它可能是一个很长的差异,但仍然......非常有用.

git

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

Git责备没有历史

当我在文件上运行git blame(使用msysgit)时,我总是得到以下类型的打印输出:

00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   1) package co
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   2) {
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   3)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   4)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   5)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   6)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   7)      impor
Run Code Online (Sandbox Code Playgroud)

即它显示所有行都没有提交.

我在许多文件上尝试了这个,它有许多提交 - 总是相同的结果.我也试过使用相对/完整路径,但它似乎没有区别.

当我尝试使用TortoiseGit的责任时,它总是将每一行显示为在第一次提交时最后一次提交:

替代文字

甚至想,正如我所说的,这些文件的历史实际上有数十次提交.

想法?

编辑 - 更多信息

  • Git blame在GitHub上工作正常,这个repo是托管的.
  • 如果我将它克隆到Linux机器并在那里负责,它也可以正常工作
  • 似乎只在msysgit上这不起作用

git blame msysgit

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

批处理文件中的打印时间(毫秒)

如何在Windows批处理文件中打印时间(以毫秒为单位)?

我想测量批处理文件中行之间的时间,但是Windows的"time/T"不会打印毫秒.

windows time batch-file

59
推荐指数
3
解决办法
17万
查看次数

Git如何解决合并问题?

通过使分支非常便宜,SVN使分支变得更容易,但合并仍然是SVN中的一个真正的问题--Git据说可以解决这个问题.

Git能实现这一目标吗?

(免责声明:我所知道的关于Git的全部内容都是基于Linus讲座 - 这里的总git noob)

svn git version-control

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

RAII与例外

我们在C++中使用RAII的次数越多,我们就越发现自己的析构函数会进行非平凡的释放.现在,解除分配(终结,但是你想要调用它)可能会失败,在这种情况下,异常实际上是让楼上的任何人知道我们的释放问题的唯一方法.但是再说一次,抛出析构函数是一个坏主意,因为在堆栈展开期间可能会抛出异常.std::uncaught_exception()让你知道什么时候发生,但不是更多,所以除了让你在终止之前记录一条消息之外你没有太多可以做的,除非你愿意让你的程序处于未定义的状态,其中一些东西被解除分配/最终化而一些不是.

一种方法是使用无抛出析构函数.但在许多情况下,这只是隐藏了一个真正的错误.例如,我们的析构函数可能会因为抛出某些异常而关闭一些RAII管理的数据库连接,并且这些数据库连接可能无法关闭.这并不一定意味着我们可以在此时终止程序.另一方面,记录和跟踪这些错误并不是每个案例的真正解决方案; 否则我们就不需要开始例外了.使用无抛出析构函数,我们还发现自己必须创建应该在销毁之前调用的"reset()"函数 - 但这只会破坏RAII的整个目的.

另一种方法是让程序终止,因为这是你可以做的最可预测的事情.

有些人建议链接异常,以便一次可以处理多个错误.但老实说,我从来没有真正看到用C++完成的工作,我也不知道如何实现这样的东西.

所以它是RAII或例外.不是吗?我倾向于无抛出的破坏者; 主要是因为它保持简单(r).但我真的希望有一个更好的解决方案,因为,正如我所说,我们使用RAII的次数越多,我们发现自己越多地使用执行非平凡事情的dtors.

附录

我正在添加链接到我发现的有趣的主题文章和讨论:

c++ destructor exception raii

48
推荐指数
4
解决办法
7380
查看次数

在Visual Studio中的项目之间共享预编译的标头

我有一个包含许多Visual C++项目的解决方案,所有这些项目都使用PCH,但有些项目具有特定的编译器开关以满足项目特定的需求.

大多数这些项目在各自的stdafx.h(STL,boost等)中共享相同的头文件集.我想知道是否可以在项目之间共享PCH,这样我就可以拥有一个普通的PCH而不是编译每个项目的PCH,解决方案中的大多数项目都可以使用.

似乎可以将PCH的位置指定为项目设置中的共享位置,因此我有预感这可行.我还假设所有使用共享PCH的项目中的所有源文件都必须具有相同的编译器设置,否则编译器会抱怨PCH与正在编译的源文件之间的不一致.

有没人试过这个?它有用吗?

一个相关的问题:这样的碎片PCH应该过于包容,还是会损害整体构建时间?例如,共享PCH可能包含许多广泛使用的STL标头,但某些项目可能只需要<string><vector>.当优化器必须丢弃由PCH拖入项目的所有未使用的东西时,使用共享PCH节省的时间是否必须在构建过程的稍后时间回收?

c++ precompiled-headers pch visual-c++

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

ASP.Net错误:"应用程序池的标识无效"

我的ASP.Net Web服务无法运行,因为应用程序池由于遇到身份危机而无法启动.

我在应用程序池中使用的用户是域用户,它是本地管理员,它在IIS_WPG中,我已经将其"作为操作系统权限的一部分" - 没有.纳达.每次都无法启动应用程序池.

将用户添加到IIS_WPG通常是缺少的,但我想还有其他的东西.

我试过的事情:

  • 将用户添加到IIS_WPG
  • 将用户添加到本地管理员组并添加"作为操作系统的一部分"权限.
  • aspnet_regiis -ga
  • 重新启动...
  • 检查密码
  • 重新创建应用程序池并仅为其分配我的应用程序

ps如果我使用网络服务用户,那一切都有效 - 这只是我的"自定义"用户失败了.使用此用户登录(以交互方式)可以正常工作.

编辑:

解决方案如接受的答案中所述(将"作为服务登录"权限添加到应用程序池的标识用户).

我将在尝试将"作为服务登录"权限添加到域用户时添加以供将来参考的用户:

"此设置与运行Windows 2000 Service Pack 1或更早版本的计算机不兼容...."

知道这与Windows 2000无关,只是域的组策略阻止您将此权限分配给用户.

asp.net

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

在批处理脚本中生成带有时间戳的唯一文件名

在我的.bat文件中,我想基于日期时间为文件/目录生成唯一的名称.

例如

Build-2009-10-29-10-59-00
Run Code Online (Sandbox Code Playgroud)

问题是%TIME%不会这样做,因为它包含文件名中非法的字符(例如:).

tr批处理文件中有类似的东西吗?

任何其他想法如何解决这个问题(除了批处理解释器之外不需要额外的命令行实用程序)?

windows filenames timestamp batch-file

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

我应该规范我的数据库吗?

在为数据库(例如MySQL)设计模式时,会出现是否完全规范化表格的问题.

一方面连接(和外键约束等)非常慢,另一方面,您获得冗余数据和不一致的可能性.

这里的"优化最后"是正确的方法吗?即创建一个由书本标准化的数据库,然后查看可以非规范化的内容以实现最佳速度增益.

对于这种方法,我担心的是,我将采用可能不够快的数据库设计 - 但在那个阶段重构模式(同时支持现有数据)将非常痛苦.这就是为什么我很想暂时忘记我所学到的关于"正确"RDBMS实践的一切,并尝试一次"平台"方法.

这个数据库是否会插入重量会影响决定吗?

mysql database optimization rdbms

31
推荐指数
5
解决办法
5583
查看次数