从可我怎么用C语言格式的数字1123456789
来1,123,456,789
?我试过使用,printf("%'10d\n", 1123456789);
但这不起作用.
你能告诉我什么吗?解决方案越简单越好.
我有以下问题说明
使用
+
符号替换字符串中的所有字符,但方法中给定字符串的实例除外
所以例如,如果给出的字符串是,abc123efg
并且他们希望我替换除了每个实例之外的每个字符,123
那么它将成为+++123+++
.
我认为正则表达式可能是最好的,我想出了这个.
str.replaceAll("[^str]","+")
Run Code Online (Sandbox Code Playgroud)
其中str是一个变量,但它不允许我使用该方法而不将其放在引号中.如果我只想替换变量字符串str我该怎么做?我用字符串手动输入它运行它,它在方法上工作,但我可以输入一个变量吗?
截至目前我相信它正在寻找字符串"str"而不是变量字符串.
这是除了两个以外的很多情况的输出权:(
开放测试用例列表:
plusOut("12xy34", "xy") ? "++xy++"
plusOut("12xy34", "1") ? "1+++++"
plusOut("12xy34xyabcxy", "xy") ? "++xy++xy+++xy"
plusOut("abXYabcXYZ", "ab") ? "ab++ab++++"
plusOut("abXYabcXYZ", "abc") ? "++++abc+++"
plusOut("abXYabcXYZ", "XY") ? "++XY+++XY+"
plusOut("abXYxyzXYZ", "XYZ") ? "+++++++XYZ"
plusOut("--++ab", "++") ? "++++++"
plusOut("aaxxxxbb", "xx") ? "++xxxx++"
plusOut("123123", "3") ? "++3++3"
Run Code Online (Sandbox Code Playgroud) 当我运行"Behat"步骤时,Behat错误处理程序将"尝试获取非对象属性"错误转换为异常.
这非常有用,因为它会将步骤标记为失败,并允许测试运行在下一个场景中继续.
但是,"对非对象调用成员函数"错误是致命的,并立即停止测试执行(包括中止将结果写入xml).这是无益的.
我的问题是:
这两个错误有什么区别?它们是不同的"错误级别"吗?记录在哪里?我搜索过PHP网站和Google,并且找不到规范的参考,只是关于调试每个错误的特定实例的很多问题.
有没有办法将后一个错误转换为异常,而不是完全停止脚本?在我看来,null
用" ->
" 取消引用" " 将是一个"无法恢复,例如内存分配问题"的错误.
更新:
看起来这只是PHP的一个已知问题.看到:
有人说这是"按设计",但我认为这只是在将对象添加到PHP之前定义的错误级别的假象.在一个非OO语言中,调用一个不存在的函数是一个严重的错误,我可以看到它如何被描述为"致命"或"不可恢复"(尽管,在非OO语言中,函数可以定义在即时,即使看起来过于悲观).现在,既然你可以$a->f()
对任何旧版本做" " $a
,那么" f
"可能不存在的可能性更大,而且它似乎不应该是一个致命错误(参见Java,这将是一个NullPointerException).
我想这会引出一个新问题:
_ 3.如何修补PHP以使"对非对象的成员函数调用"错误非致命,而不会大幅破坏向后兼容性,以及您可以采取哪些步骤来最大化该补丁被PHP接受的可能性?
更新2重新修补PHP:
在PHP内部邮件列表中有一些有限的支持来进行此修复.现在我只需编写补丁来修复此问题并创建RFC.
我可以将Maven配置为选择冲突的"最新"依赖,而不是"最近"吗?
"最新"是Ivy和其他合理的依赖管理器的默认值,请参阅http://ant.apache.org/ivy/history/2.2.0/settings/conflict-managers.html
我发现"最近"的策略很少是我想要的.
我正在使用Maven 3.3.3,但如果需要我可以切换版本.
我知道如何在个别冲突上覆盖Maven的选择,但我更愿意更改默认值,这样我就不必一次检测并修复每个冲突.
(参见关于"依赖调解" 的Maven文档)
我想在我的SBT + Spray应用程序中添加一个集成测试阶段.
理想情况下,它就像Maven,具有以下阶段:
compile
:该应用程序已构建test
:运行单元测试pre-integration-test
:该应用程序在单独的过程中启动integration-test
:运行集成测试; 他们向在后台运行的应用程序发出请求,并验证是否返回了正确的结果post-integration-test
:先前启动的应用程序实例已关闭我在使这个工作上遇到了很多麻烦.我能遵循一个有效的例子吗?
1)单独的"它"代码库:
我首先将SBT文档的"集成测试"部分中显示的代码添加到新文件中project/Build.scala
.
这允许我在"src/it/scala"下添加一些集成测试,并使用"sbt it:test"运行它们,但我看不到如何添加一个pre-integration-test
钩子.
问题" 确保'重新启动'任务自动在它之前运行:测试 "似乎解决了如何设置这样一个钩子,但答案对我不起作用(请参阅我的评论).
此外,将上述代码添加到我的build.scala已经停止了"sbt re-start"任务的工作:它尝试以"it"模式运行应用程序,而不是"默认"模式.
2)"测试"代码库中的集成测试:
我正在使用IntelliJ,而单独的"it"代码库确实让它感到困惑.它无法编译该目录中的任何代码,因为它认为缺少所有依赖项.
我尝试粘贴来自SBT文档的" 使用共享源的附加测试配置 "中的代码,但是我收到了编译错误:
[error] E:\Work\myproject\project\Build.scala:14: not found: value testOptions
[error] testOptions in Test := Seq(Tests.Filter(unitFilter)),
Run Code Online (Sandbox Code Playgroud)
我能遵循一个有效的例子吗?
我正在考虑放弃通过SBT设置它,而是添加一个测试标志,将测试标记为"集成"并编写外部脚本来处理这个问题.
我修复了一个文件,并将其提交到我的git
存储库.
一段时间后,我发现它已经退步了.我想知道在提交修复已经取出来,所以我想git bisect
和git log --all -S TERM
,在"期限"是由我的修补程序和出现无处可在项目中添加一个字符串.
我发现git bisect
归咎于一个无关的提交,我发现git log --all -S TERM
只列出了我添加TERM的提交,并没有列出任何提交已删除它,即使它不再在"master"的文件中.
经过一些手动搜索后,我发现两个分支之间存在合并提交.一个分支有我的修复,一个没有.合并作者选择了没有我修复的分支(奇怪,因为文件中没有冲突).
我的问题是:
git bisect
找不到合并更改?关于此限制,我在联机帮助页中没有看到任何内容.有没有不同的方法来使用它会在上面的场景中找到错误的合并?git log --all -S TERM
列出合并提交?该联机帮助页显示它列出了"引入或删除实例"的提交.合并提交不会删除我的字符串吗?有没有不同的方法来使用它会在上面的场景中找到错误的合并?git bisect
和git log -S
是在上述情况下没用,什么是找到坏合并的有效途径?如果没有这些工具,我需要花很长时间才能找到问题的变化.(在Java中使用静态初始化器是一个好主意是否超出了这个问题的范围.)
我在Scala应用程序中遇到死锁,我认为这是由编译类中的互锁静态初始化器引起的.
我的问题是如何检测和诊断这些死锁 - 我发现当涉及静态初始化程序块时,死锁的正常JVM工具似乎不起作用.
这是一个简单的Java应用程序示例,它在静态初始化程序中死锁:
public class StaticDeadlockExample implements Runnable
{
static
{
Thread thread = new Thread(
new StaticDeadlockExample(),
"StaticDeadlockExample child thread");
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
System.out.println("in main");
}
public static void sayHello()
{
System.out.println("hello from thread " + Thread.currentThread().getName());
}
@Override
public void run() {
StaticDeadlockExample.sayHello();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你启动这个应用程序,它会死锁.死锁时(来自jstack
)的堆栈跟踪包含以下两个死锁线程:
"StaticDeadlockExample child thread" prio=6 tid=0x000000006c86a000 nid=0x4f54 in Object.wait() [0x000000006d38f000]
java.lang.Thread.State: RUNNABLE
at …
Run Code Online (Sandbox Code Playgroud) 如何判断给定时间git存储库中的版本?
假设我有一个共享存储库,几个用户可以在其中推送更改,我想在过去的某一天冻结快照.
如果有人在11:30进行本地提交,但只在12:30将其推送到中央回购,我可以在以后检测到吗?
我是否可以检测到有人在12:00之后是否已经篡改了本地提交的记录提交日期为11:30,然后将其推送到上游?
Hibernate中Postgresql的默认标识符生成器是SequenceGenerator [1].即Hibernate将SELECT nextval('hibernate_sequence')
在执行INSERT foo (id, ...) VALUES (123, ...)
会话提交之前生成ID .
但是,PostgreSql支持自动增量id列(参见例如[2]),并且支持自动增量的所有其他数据库的默认生成器是使用该功能[3],并执行省略id值的插入并查询数据库以获取新的id(在会话提交之前,但在会话的事务中).
我已经看到最近的一些讨论[4]表明,由于插入前会话提交不匹配,前一策略总体上更好.
如果SequenceGenerator更好(根据[4]),为什么它不是支持它的数据库的默认值(见[3])?
如果IdentityGenerator更好,为什么Postgres支持前者时PostgreSql显式选择SequenceGenerator(按照[2])?
我试图找到重写Postgres方言中默认值的决定的历史(见[1]),但我在GitHub中找不到相关的提交.我已经将代码跟回到SVN存储库,但是在r11563中添加了PostgreSQLDialect文件,其中有一条无用的提交消息"maven migration"[5].我似乎无法再追溯历史了.任何人都可以找到添加此覆盖的提交吗?也许提交消息中有更多信息.
提前致谢.
[4] http://nhforge.org/blogs/nhibernate/archive/2009/03/20/nhibernate-poid-generators-revealed.aspx
关于Shiro记得我的功能我几乎没有问题:
CipherKey
?java ×4
git ×2
scala ×2
c ×1
deadlock ×1
formatting ×1
git-bisect ×1
hibernate ×1
maven ×1
nhibernate ×1
numbers ×1
php ×1
postgresql ×1
regex ×1
remember-me ×1
sbt ×1
shiro ×1