小编And*_*s_D的帖子

Git分支从哪里开始,它的长度是多少?

偶尔我会被问到,git上某个分支的启动是什么,或者是否在特定分支上创建了某个提交.分支的终点非常清楚:分支标签所在的位置.但是 - 它从哪里开始?琐碎的答案是:在我们创建该分支的那个提交上.但据我所知,这些信息就是为什么我会问这个问题,在第一次提交后丢失了.

只要我们知道我们分支的提交,我们就可以绘制图表来说明:

A - B - C - - - - J     [master]
     \
      D - E - F - G     [branch-A]
           \
            H - - I     [branch-B]
Run Code Online (Sandbox Code Playgroud)

我在提交时创建了branch-B,E这就是"开始".我知道,因为我做到了.但其他人能否以同样的方式认识到它?我们可以绘制相同的图形:

A - B - C - - - - J     [master]
     \
      \       F - G     [branch-A]
       \     /
        D - E
             \
              H - I     [branch-B]
Run Code Online (Sandbox Code Playgroud)

所以,现在看图表,哪个分支开始E,哪一个在B?提交D两个分支的成员还是我们可以清楚地决定它是属于分支A还是分支B?

这听起来有点哲学,但实际上并非如此.监事有时想知道,当一个分支已经开始(它通常标志着一个任务开始)和其分支的一些变化属于(得到一些改变的目的 - 是它需要的工作),我会想知道git是否提供信息(工具,命令)或定义来正确回答这些问题.

git version-control git-branch

64
推荐指数
8
解决办法
1万
查看次数

Mockito - 如何验证模拟从未被调用过

我正在寻找一种方法来验证Mockito,在测试期间没有与给定模拟器的任何交互.对于具有验证模式的给定方法,很容易实现never(),但我还没有找到完整模拟的解决方案.

我实际想要实现的目标:在测试中验证,没有任何内容打印到控制台.jUnit的一般想法是这样的:

private PrintStream systemOut;

@Before
public void setUp() {
    // spy on System.out
    systemOut = spy(System.out);
}

@After
public void tearDown() {
    verify(systemOut, never());  // <-- that doesn't work, just shows the intention
}
Run Code Online (Sandbox Code Playgroud)

A PrintStream有很多方法,我真的不想用每个单独的验证验证每个方法 - 对于System.err...来说也是如此

所以我希望,如果有一个简单的解决方案,我可以,鉴于我有一个很好的测试覆盖率,迫使软件工程师(和我自己)删除他们的(我的)调试代码,System.out.println("Breakpoint#1");或者e.printStacktrace();在提交更改之前或之前.

java junit mockito

49
推荐指数
4
解决办法
3万
查看次数

用于循环优化

List<String> flowers = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

我的for循环目前看起来像这样......

for (int i = 0; i < flowers.size(); i++) {
...
}
Run Code Online (Sandbox Code Playgroud)

或者我应该改变它看起来像下面给出的代码

int size = flowers.size();
for (int i = 0; i < size; i++) {
...
}
Run Code Online (Sandbox Code Playgroud)

哪个性能更高(假设我有大量的花),我猜它应该是后者.

java optimization coding-style

45
推荐指数
5
解决办法
3万
查看次数

未经检查的ArrayAdapter调用

当我实例化我的ArrayAdapter(编译正常)时,我收到以下警告:

warning: [unchecked] unchecked call to ArrayAdapter(android.content.Context,int,java.util.List<T>) as a member of the raw type android.widget.ArrayAdapter
      ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(CFAMain.this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
Run Code Online (Sandbox Code Playgroud)

这是问题所在:

ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(CFAMain.this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
Run Code Online (Sandbox Code Playgroud)

任何人都有任何想法,为什么它给我这个警告?

java android warnings compiler-warnings

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

安装python包以纠正anaconda环境

我已经设置了anaconda并创建了一个python 3.3环境.现在我想安装一些包(数据集).安装说明要求克隆git repo并运行

python setup.py install
Run Code Online (Sandbox Code Playgroud)

但现在这些包未安装到环境site-packages文件夹,而是安装到另一个anaconda位置.

解决这个问题的正常步骤是什么?新手兼容的解决方案是首选.操作系统是MacOSX,就是这种情况,它是相关的.

python setup.py anaconda

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

Tomcat没有自动部署war文件

我按照以下步骤操作

  • 关闭Tomcat
  • 部署了一个时间戳为12月1日的war文件
  • 启动Tomcat - 这为已部署的war文件创建了展开的目录.
  • 停止Tomcat
  • 使用时间戳为12月3日的新文件更新了war文件
  • 重启Tomcat

我发现当我重新启动Tomcat时,先前展开的文件夹中的现有文件未更新.war文件的更新是否已更新相关的jsp,类文件?

我查看了文档,发现了这个http://tomcat.apache.org/tomcat-5.5-doc/config/host.html."自动应用程序部署"下的以下引用

除了发生在启动时自动部署,您还可以请求新的XML配置文件,WAR文件或子目录都在下降到的appBase(或
CATALINA_HOME/conf目录/ [引擎名称]/[host_name]等在$根据上述规则,将自动部署Tomcat运行时的XML配置文件目录.自动部署程序还将跟踪Web应用程序以进行以下更改:

  • 对WEB-INF/web.xml文件的更新将触发Web应用程序的重新加载
  • 对已扩展的WAR的更新将触发取消部署(删除扩展的webapp),然后部署
  • 对XML配置文件的更新将触发取消部署(不删除任何扩展目录),然后部署关联的Web应用程序

由于上面的第2点,文件是否已自动更新?

autodeploy在server.xml中设置为true

java tomcat war java-ee

30
推荐指数
3
解决办法
9万
查看次数

CSCI的官方定义(计算机软件配置项)

我正在寻找CSCI /配置项的最正式定义 - 不仅仅是它是什么,而是当合同定义了应作为配置项开发的子系统时我们必须提供/期望的内容.

我花一些时间与我的著名搜索工具,发现有很多的解释为CSCI(维基百科,简称目录,...),但我还没有找到一个标准或指针标准(如ISO-XXX),但它告诉(1)它是什么以及(2)哪些必须被从一个QM/CM点完成.

我只问,因为验收测试期间,承包商QM代表所说的那样,CI只要求不要忘了CI的配置计划,并分配序列号......我希望看到一些SRS,SDD,ICD,SVD,这些子系统的SIP,......文件和验收测试文件......

configuration-management

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

在本地网络中使用Sonatype nexus

我已经成功地为Java应用程序创建了一个小型软件工程环境(SEE),其中包括基于maven和nexus的其他工具.我的实际问题是 - 并不是一个真正的惊喜 - nexus通常需要访问互联网才能从中央存储库获取所请求的工件.但SEE必须严格脱机,并且无法改变它(安全原因).

我的第一个快速解决方案是镜像连接到互联网的机器上的nexus/maven安装,运行一些标准的pom来填充镜像连接并通过CD-ROM将缓存迁移到目标系统.蛮丑的.我真的不希望调整该过程来获取工件或新工件的更新.实际上,我们现在通常只是导入我们需要的库并使用来自中央和其他人的官方库来创建新的工件(使用nexus).

有没有人面临同样的挑战,找到了更聪明,更有效的方法?

编辑

感谢所有的答案,我想我必须更准确地解决实际问题以及我正在考虑的解决方案:我认为我必须创建,填充和同步一个私有的"中央"存储库,基于中央和互联网上的其他回购,或者确切地说:两个相同的存储库.一个连接到互联网,另一个连接到本地网络.然后我可以保持互联网连接的存储库"最新"并通过DVD将更改复制到本地存储库 - 这对于Nexus是可见的.

会有用吗?是否有关于如何在私有服务器上设置"中心"之类的文档,是否有一种同步所选工件的机制?

(我不想在开始时发表我的想法,因为我希望得到完全不同的想法)

编辑2 - "最佳实践" - 根据要求添加

我们在与互联网完全脱节的环境中使用maven的"最佳实践":

  • 我们在中央服务器上安装了nexus,以便软件开发工作站有一台服务器可以与之通信(这是我们自己的artefact存储库)
  • 我们将POM文件导出到具有Internet访问权限的工作站,清除了该计算机上的本地存储库并执行了dependency:go-offline(插件).这将使用所有必需的artedfacts填充本地存储库
  • 我们将此本地存储库导入安全环境并将所有插件添加到nexus(只复制文件 - 结构相同)

每周使用所有POM文件执行此操作(可以自动执行),并且您拥有一个非常稳定且可用的本地存储库.

java maven-2 nexus

16
推荐指数
1
解决办法
7624
查看次数

将String中的单个char转换为小写

我喜欢用getter方法'猜测'属性名称.因此'getSomeAttribute'将转换为'someAttribute'.

通常我会这样做

String attributeName = Character.toLowerCase(methodName.indexOf(3)) 
                       + methodName.substring(4);
Run Code Online (Sandbox Code Playgroud)

很难看,对吧?我通常把它隐藏在一个方法中,但有人知道更好的解决方案吗?

java

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

java.lang.UnsatisfiedLinkError中

我正在尝试使用JMS访问MQ队列.我得到了以下

java.lang.UnsatisfiedLinkError: no mqjbnd05 in java.library.path
Run Code Online (Sandbox Code Playgroud)

我过世了

-Djava.library.path="C:\Program Files\IBM\WebSphere MQ\java\lib"
Run Code Online (Sandbox Code Playgroud)

作为在eclipse中运行程序时的VM参数.这个问题在网上讨论得很多,但没有任何结论.有人解决了吗?TIA.

java jms ibm-mq

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