小编use*_*465的帖子

使用Git与Intellij Idea的最佳实践

简而言之:使用Intellij Idea(9)和Git的最佳实践是什么?

上下文

我们最近升级到Intellij创意版本9,并开始使用Git在现有项目上使用新功能.

我们主要使用git命令行来更好地学习该工具.但是我们认为我们会选择蜂巢头脑来找出git最佳实践的想法.

Idea UI与CVS和Git类似,但底层实现略有不同.

示例问题

例如: - 使用CVS,当我们有多个产品版本时,我们每个人都会拥有1-0,2-0,3-0等分支的本地副本,每个分支都有自己的Intellij文件(即.ipr,.iws等)."git方式"似乎有一个项目并使用'git branch'来切换分支.这很好,但是当你改变分支时,它会为想法创造巨大的开销(因为它必须重新加载每个已更改的文件,包括签入的jar).那么:你们每个"主要版本"还有一个单独的项目(.git),或者有一个项目并使用"git branch"吗?

- 使用Autostash是个好主意吗?

- 您是否自动将每个修改添加到您的git提交?或者稍后使用"git add"?

你有什么变化吗?

- 合并的最佳方式?

- 任何其他提示/提示/为你工作的东西等.

最后评论

我们仍然"在cvs中思考",所以这部分习惯于git; 部分已经习惯了Idea的Ui for git.

这些是相当基本的问题,因为我们仍然主要使用命令行.另外我听说10有更好/更强/更快的git集成工具

谢谢

git intellij-idea

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

如何从powershell控制台查看日志文件?(即powershell相当于'less')

PowerShell相当于'less'是什么?

我看到'更多',但它缺乏我依赖的一些功能(例如搜索文件)

我寻找一个寻呼机(相当于'少'),它允许一次搜索(匹配或忽略大小写),多个文件等.

我们的一些服务器运行Windows 2008,我缺乏安装cygwin的管理员权限

我听过Windows 2008,MSFT一起行动并提供了一些易于管理的工具.

更新:

我应该给出一些背景信息:

  • 我对动力壳知之甚少
  • 新服务器上有2008年
  • 虽然我喜欢以前的许多工具,但dos提示不是其中之一
  • 我希望Powershell有相当于grep,ls,less,xargs等等
  • 我知道powershell给了我们这些工具
  • 我很快解开了我的问题.

谢谢

windows powershell less

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

java垃圾收集日志条目"Full GC(System)"是否意味着一些名为System.gc()的类?

垃圾收集日志中的"Full GC(System)"条目是什么意思?那个类叫System.gc()?

我的垃圾收集日志有两个不同的"完整gc"条目类型?一个用'System'这个词,另一个没有.有什么不同?

(更新:我搜索了这个词并没有找到明确的答案,只有几个问题.所以我想我会发布它).

系统:

164638.058:[全GC (系统) [PSYoungGen:22789K-> 0K(992448K)] [PSOldGen:1645508K-> 1666990K(2097152K)] 1668298K-> 1666990K(3089600K)[PSPermGen:164914K-> 164914K(166720K)],5.7499132 secs] [次:用户= 5.69 sys = 0.06,真= 5.75秒]

无系统:

166687.013:[Full GC [PSYoungGen:126501K-> 0K(922048K)] [PSOldGen:2063794K-> 1598637K(2097152K)] 2190295K-> 1598637K(3019200K)[PSPermGen:165840K-> 164249K(166016K)],6.8204928 secs] [时间:用户= 6.80 sys = 0.02,真实= 6.81秒]

GC选项

我们与gc相关的java内存选项是:-Xloggc:../ server/pe/log/jvm_gc.log -XX:+ PrintGCTimeStamps -XX:+ PrintGCDetails

我们没有'-XX:+ DisableExplicitGC',所以有些错误的类可能会调用System.gc()

fwiw,我们完整的jvm选项:

-Xms3072m -Xmx3072m -XX:+ HeapDumpOnOutOfMemoryError -XX:-UseGCOverheadLimit -Xloggc:../ server/pe/log/jvm_gc.log -XX:+ PrintGCTimeStamps -XX:+ PrintGCDetails -XX:MaxPermSize = 256m -XX:+ UseCompressedOops

提前致谢,

java garbage-collection

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

用于分析脱机Java堆转储(.hprof)的工具或技巧

是否有任何工具允许.hprof文件的离线分析(包括摘要/排序/筛选)?或者你可以在批处理模式下运行VisualVM,hat等吗?

我对可以输入.hprof文件,处理它并生成报告的内容感兴趣.

我假设您需要传递一系列选项来配置报告,所以如果您知道任何有用的提示,请称重.

最好是可编写脚本的,这样我就可以一次运行一堆.

java visualvm heap-dump

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

如何最好地实现2002年代J2EE应用程序的现代化?

我有这个朋友......

我有这个朋友谁在2000年初开始的java ee应用程序(j2ee)应用程序上工作.目前,他们在这里和那里添加了一个功能,但是有一个很大的代码库.多年来,该团队缩减了70%.

[是的,"我有这个朋友".这是我,试图幽默地注入少年高中辅导员的耻辱]

Java,Vintage 2002

该应用程序使用EJB 2.1,struts 1.x,DAO等与直接jdbc调用(存储过程和预准备语句的混合).没有ORM.对于缓存,它们使用OpenSymphony OSCache和本地缓存层的混合.

在过去几年中,他们花了很多精力来使用ajax技术和库来实现UI的现代化.这主要涉及javascript库(jquery,yui等).

客户端

在客户端,缺少从struts1到struts2的升级路径阻碍了它们迁移到struts2.其他Web框架变得流行(wicket,spring,jsf).Struts2不是"明显的赢家".将所有现有的UI从Struts1迁移到Struts2/wicket /等似乎并没有以非常高的成本提供太多的边际收益.他们不希望拼凑出各种技术(如Struts2中的子系统X,Wicket中的子系统Y等),因此开发人员使用Struts 1编写新功能.

服务器端

在服务器端,他们考虑转向ejb 3,但从未有过大的推动力.开发人员都熟悉ejb-jar.xml,EJBHome,EJBRemote,"ejb 2.1原样"代表了阻力最小的路径.

关于ejb环境的一个大抱怨:程序员仍假装"ejb服务器在独立的jvm中运行而不是servlet引擎".没有任何应用服务器(jboss/weblogic)强制执行此分离.该团队从未在应用服务器的单独盒子上部署ejb服务器.

ear文件包含同一jar文件的多个副本; 一个用于'web层'(foo.war/WEB-INF/lib),另一个用于服务器端(foo.ear /).app服务器只加载一个jar.重复使得含糊不清.

高速缓存

至于缓存,它们使用多个缓存实现:OpenSymphony缓存和本地缓存.Jgroups提供群集支持

怎么办?

问题是:团队目前有多余的周期来投资现代化应用程序?聪明的投资者会在哪里花钱?

主要标准:

1)提高生产力.特别是减少了开发新子系统功能和减少维护的时间.2)性能/可扩展性.

他们不关心时尚或技术的街头信誉.

你们都推荐什么?

在持久性方面将 所有内容(或仅新开发)切换到JPA/JPA2?
直接冬眠?等待Java EE 6?

在客户端/ Web框架方面:将(部分或全部)迁移到struts2?便门?JSF/JSF2?

至于缓存: 兵马俑?的Ehcache?相干?坚持他们拥有的东西?如何最好地利用64位jvms提供的巨大堆大小?

提前致谢.

java caching jdbc java-ee

21
推荐指数
1
解决办法
1571
查看次数

Java阻塞问题:为什么JVM会在许多不同的类/方法中阻塞线程?

更新:这看起来像一个内存问题.一个3.8 Gb的Hprof文件表明,当发生"阻塞"时,JVM正在转储它的堆.我们的运营团队发现该站点没有响应,进行了堆栈跟踪,然后关闭了该实例.我相信他们在堆转储完成之前关闭了网站.日志没有错误/异常/问题证据 - 可能是因为JVM在生成错误消息之前被杀死了.

原始问题我们最近出现了应用程序出现的情况 - 最终用户 - 要挂起.我们在应用程序重启之前得到了一个堆栈跟踪,我发现了一些令人惊讶的结果:527个线程,463个线程状态为BLOCKED.

在过去 过去被阻塞的线程通常有这个问题:1)一些明显的瓶颈:例如一些数据库记录锁定或文件系统锁定问题导致其他线程等待.2)所有被阻塞的线程将阻塞相同的类/方法(例如jdbc或文件系统clases)

不寻常的数据 在这种情况下,除了应用程序类(包括jdbc和lucene调用)之外,我还看到了各种类/方法被阻止,包括jvm内部类,jboss类,log4j等.

问题 是什么会导致JVM阻止log4j.Hierarchy.getLogger,java.lang.reflect.Constructor.newInstance?显然有些资源"稀缺",但哪些资源?

谢谢

堆栈跟踪摘录

http-0.0.0.0-80-417" daemon prio=6 tid=0x000000000f6f1800 nid=0x1a00 waiting for monitor entry [0x000000002dd5d000]
   java.lang.Thread.State: BLOCKED (on object monitor)
                at sun.reflect.GeneratedConstructorAccessor68.newInstance(Unknown Source)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
                at java.lang.Class.newInstance0(Class.java:355)
                at java.lang.Class.newInstance(Class.java:308)
                at org.jboss.ejb.Container.createBeanClassInstance(Container.java:630)

http-0.0.0.0-80-451" daemon prio=6 tid=0x000000000f184800 nid=0x14d4 waiting for monitor entry [0x000000003843d000]
   java.lang.Thread.State: BLOCKED (on object monitor)
                at java.lang.Class.getDeclaredMethods0(Native Method)
                at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
                at java.lang.Class.getMethod0(Class.java:2670)

"http-0.0.0.0-80-449" daemon prio=6 tid=0x000000000f17d000 nid=0x2240 waiting for monitor entry …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection locking blocking concurrent-programming

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

访问日志重放进行负载测试?Jmeter陷阱和竞争对手

上下文

我们希望使用"重播"Web服务器访问日志来生成负载测试.我想起了JMeter,因为我最近阅读了关于在云中使用jmeter的博客文章(例如,启动了一些Amazon EC2实例来生成负载)

多年来我听说过JMeter重播访问日志的能力,但在审查这个功能时,我发现了以下内容.

访问日志采样器

  • 作用:

    • 重新创建会话,即处理jsessionId令牌(认为它试图通过IP地址估计会话);
  • 才不是:

    • 处理POST数据(即使您可以配置apache/tomcat将后期数据写入访问日志,jmeter访问日志采样器只处理'常见'日志格式).

发布数据对于重新创建实际负载会有很长的路要走.

此外,该文档将访问日志采样器描述为"alpha代码",即使它已有8年历史.它似乎没有积极维护.(这比Gmail的测试版要长.)

HttpPerf

另一篇博客文章向我指出了httpperf工具.我已经开始阅读了它:

摘要

  • 从真实用户数据生成负载测试"脚本"的最佳方法是什么?
  • 最适合你的是什么?
  • 各种工具的优缺点?

performance jmeter load-testing performance-testing

13
推荐指数
1
解决办法
4700
查看次数

Sql Server JDBC连接重置错误:仅在Amazon EC2上

背景:云

我们有一个基于Java的Web应用程序,我们通常在自己的服务器上托管.最近,我们使用Amazon Web Services(AWS EC2)云来托管实例.

这种"云设置"与我们典型的"现场"设置相匹配:应用服务器的一台服务器,数据库服务器的另一台服务器.(多个应用服务器指向同一个数据库服务器)

问题 在这个云设置中,我们在数据库和jdbc驱动程序之间接收间歇性的"通过对等错误重置连接",其中(看似)随机间隔和代码库中的随机点,数据库连接失败.

以下是日志的一些错误摘录

堆栈跟踪示例1:

at com.participate.pe.genericdisplay.client.taglib.GenDisplayViewTag.doStartTag(GenDisplayViewTag.java:77)
    ... 75 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:170)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(SQLServerConnection.java:304)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.getMetaData(SQLServerConnection.java:1734)
    at org.jboss.resource.adapter.jdbc.WrappedConnection.getMetaData(WrappedConnection.java:354)
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪示例2

    at java.lang.Thread.run(Thread.java:619)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1368)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1355)
    at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1532)
    at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:3274)
    at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:4437)
    at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:4389)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(SQLServerConnection.java:1457)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectionCommand(SQLServerConnection.java:1462)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.setAutoCommit(SQLServerConnection.java:1610)
    at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.checkTransaction(BaseWrapperManagedConnection.java:429)
Run Code Online (Sandbox Code Playgroud)

技术环境

  • Jboss 4.2.2.GA(Jboss-Web 2.0/Tomcat 6)
  • MSSQL 2005 2.0 jdbc驱动程序

有些观点

  • 我们从未在我们自己的环境(即自己的数据中心)中运行应用程序多年来看到这个问题
  • 这让我得出结论"亚马逊网络环境正在发生一些有趣的事情".我可能错了/遗漏了某些东西/等等.
  • 此问题仅发生在我们的应用程序中.我们有其他java和php应用程序没有这个问题.另一个java应用程序使用不同的jdbc驱动程序(jtds,afaik)
  • 它似乎不是一个简单的连接超时

问题

-谁看过这个吗? …

sql-server jboss jdbc amazon-ec2 java-ee

12
推荐指数
1
解决办法
8606
查看次数

如何编译和jar字节相同的jar文件,即MD5匹配除非.java(以及.class)更改?

摘要

如何让ant从相同的.class文件中重复生成与字节相同的jar文件?

背景

我们的构建过程执行以下操作:

  1. 从另一个应用程序的源存储库获取web-services-definition(wsdl)文件
  2. 运行wsdl2java生成.java文件供Web服务客户端使用(即我们的应用程序)
  3. 编译java文件
  4. 从编译器输出生成.jar文件
  5. 检查'artifact'jar文件到源代码管理中

注意:我们执行了最后一步,因此开发人员可以访问此jar文件,而无需自行构建.我们使用一个特殊的'derived'目录来区分源和工件.

问题

即使源文件没有改变,我们也无法获得生成字节相同的.jar文件的蚂蚁,即每个构建生成一个略有不同的jar(具有不同的MD5)

我检查了互联网,并在5年前找到了这个问题:

如果我使用ANT编译一些代码并创建一个jar和相关的md5文件,那么即使代码没有改变,md5文件中的校验和也是不同的.任何想法都是为什么它如此规避?我怀疑某处有一些时间戳信息.

http://www.velocityreviews.com/forums/t150783-creating-new-jar-same-code-different-md5.html

根据回复,我尝试了以下方法:

  1. 在震动之前,在所有.class文件上将时间戳设置为"0"
  2. 指定清单文件,并将此清单的时间戳设置为0

[注意:第二步似乎无效.见下文]

每次构建之后,.jar文件仍然具有不同的MD5总和.

CSI:Jar文件

我没有进行过检查和检查,并且罐子的内容和时间戳在"不同"的罐子之间匹配,但有一个例外:META-INF/MANIFEST.MF的不同时间戳.

   <-- touch classes and manifest to set consistent timestamp across builds -->
   <touch millis="0">
    <fileset dir="${mycompany.ws.classes.dir}"/>
   </touch>
   <touch millis="0" file="mymanifest.mf"/>

   <jar destfile="${derived.lib.dir}/mycompanyws.jar"
        manifest="mymanifest.mf"
        basedir="${mycompany.ws.classes.dir}"
        includes="**/com/mycompany/**,**/org/apache/xml/**" 
    />
Run Code Online (Sandbox Code Playgroud)

其他选择

如果.java文件已经更改,我们可以使用更高级的ant编程来检查.jar文件.

java ant jar

12
推荐指数
2
解决办法
3906
查看次数

Mybatis Generator:分离出"自动生成"和"手动编辑文件"的最佳方法是什么

我正在使用Mybatis(用于持久化java到数据库)和Mybatis Generator(用于从数据库模式自动生成映射器xml文件和java接口)的项目.

Mybatis生成器在生成基本crud操作所需的文件方面做得很好.

上下文

对于某些表/类,我们需要比MyBatis Generator工具生成的"crud stuff"更多的"东西"(代码查询等).

有没有办法拥有"两全其美",即使用自动生成以及"自定义代码".如何分离和构建"手动编辑的文件"和"自动生成的文件".

提案

我正在考虑以下内容,即表格"Foo"

自动生成

  • FooCrudMapper.xml
  • 接口FooCrud.java

(其中"Crud"代表"创建读取更新删除")

手编辑

  • FooMapper.xml
  • 界面Foo扩展了FooCrud

概念:如果架构发生了变化,您可以随时安全地自动生成"Crud"xml和.java文件,而不会消除任何自定义更改.

问题

  • mybatis会正确处理这种情况,即这个映射器是否会正确执行自动生成的"crud代码"?

    FooMapper fooMapper = sqlSession.getMapper(FooMapper.class);

  • 你推荐什么方法?

编辑1:*我们的数据库设计使用"核心表"("元素"),其他表"扩展"该表并添加额外的属性(共享密钥).我查看了文档和来源得出结论,我不能将Mybatis Generator与这样的'扩展'结合使用而不需要任何手动编辑:

即这不起作用.-ElementMapper扩展"ElementCrudMapper"-FooMapper.xml扩展"ElementCrudMapper"和"FooCrudMapper"

谢谢大家!

mybatis mybatis-generator

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