我在一个大项目的维护团队(大约7k +班级)工作,我的日常工作主要是修复bug.但有时候,我没有工作的错误.当发生这种情况时,我花了大部分时间来寻找代码中的性能差距.事实上,我有超过7千个课程,这意味着找到这些差距并不明显.
所以我想知道在尝试提高系统性能时应该寻找哪些简单的东西?
我不是在询问具体的代码技术,而是一般的代码技术.例如:
String a = new String("")并将其更改为StringBuilder a = new StringBuilder();PreparedStatementDebug删除了所有日志记录,并Finest在可能的情况下删除了这些日志记录如您所见,这些更改很容易实现,因为它们不需要测量系统性能 - 我唯一需要做的就是使用Eclipse中的搜索工具.
我是Hibernate的新手,我有一个关于HQL左连接的问题.
我尝试离开加入2个表,患者和提供者,并继续获得"预期加入的路径!" 第二个表上的错误.如果有人可以帮助解决这个问题,请欣赏它!
这是2个表/类的映射:
patient.hbm.xmL:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.ccg.db.test">
<class name="patient" table="patient">
<id name="patientId" column="patientId" type="int">
<generator class="native"/>
</id>
<property name="patientName" type="string" >
<column name="patientName" />
</property>
<property name="providerId" type="string" >
<column name="provId" />
</property>
<many-to-one name="provider" column="providerId" class="provider" />
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
provider.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.ccg.db.test">
<class name="provider" table="provider">
<id name="providerId" column="providerId">
<generator class="native" />
</id>
<property name="providerName" column="providerName" />
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
POJO: …
我正在尝试动态地将视图添加到线性布局.我通过getChildCount()看到视图被添加到布局中,但即使在布局上调用invalidate()也不会让我看到孩子出现.
我错过了什么吗?
我有一个可以用dpad导航的ListView.它有一个页脚.我想阻止使用dpad导航到页脚.我已将页脚视图本身的focusable和focusableInTouchMode设置为false; 这没有区别(所以我推断它实际上并不是我所关注的焦点,而是选择).
如何防止页脚被选中?
我想用代码中的其他东西替换快门声(相机拍照时拍摄的声音).我希望它会像铃声或通知,但我没有看到任何其他任何关于它.我已经看过代码在拍摄照片之前使手机静音,并且在之后取消静音,但我更愿意用另一个mp3或ogg替换声音.
了解您是否拥有root电话,可以替换该文件.这不是我的应用程序的解决方案.
就在我的应用程序中.想法是设置它,然后取消它.有趣的是,在你输入一些东西后,重新阅读它,它有助于从不同的角度思考它.我已经使用下面的代码来关闭音频服务,我之前播放我的声音.作为一个伟大的解决方案.也许有一天,我们将能够设置它.
AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
mgr.setStreamMute(AudioManager.STREAM_SYSTEM, true);
Run Code Online (Sandbox Code Playgroud)
谢谢!
一旦JRE更新到7u21,我的Java applet就停止了工作.
简短的摘要:
我得到的例外是:netscape.javascript.JSException和
java.lang.NoClassDefFoundError.小程序工作正常,直到JRE 7u21.
applet使用Oracle的DeployJava.js嵌入到网页中.
小程序已签名,它使用LiveConnect来触发事件,它通过JNI访问USB和串行端口,它使用来自多个JAR文件的代码.
所有测试的桌面浏览器(Firefox,Chrome,IE8/9和Mac上的Safari)都会出现故障.
细节:
我有一个java applet,允许我的网站与USB设备通信.
小程序在过去一年中运作良好.
一旦JRE7更新21发布 - applet就停止了工作.
applet使用Oracle的DeployJava.js库托管在网页(ASP.NET)中.
它使用LiveConnect将事件提升回我的javascript代码.
我在JRE 7u21上遇到的第一个问题是第一次尝试通过LiveConnect引发事件时出现异常:
netscape.javascript.JSException: JavaScript error while calling "_notify"
at sun.plugin2.main.client.MessagePassingJSObject.newJSException(Unknown Source)
at sun.plugin2.main.client.MessagePassingJSObject.waitForReply(Unknown Source)
at sun.plugin2.main.client.MessagePassingJSObject.call(Unknown Source)
at <myapplet>.fireJavascriptEvent(Unknown Source)
at <myapplet>$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.asec.easypark.applets.HomeloadingApplet.start(Unknown Source)
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.start(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
为了缓解这个问题,我在applet的ant脚本中的'manifest'部分添加了以下行:
attribute name="Trusted-Library" value="true"
Run Code Online (Sandbox Code Playgroud)
我使用JDK 7u21构建了applet,它似乎有所帮助:
之后我开始收到另一个错误 - 所以我相信这个错误已经解决了,但它可能导致了下一个问题.
第二个问题是:applet从几个JAR文件调用代码.在第一次调用另一个JAR文件(不是applet的文件)中的代码失败时出现以下异常:
**java.lang.NoClassDefFoundError**: com/codeminders/hidapi/HIDManager
at <PackageInSecondJar>.communication.HIDTransmitter.open(Unknown Source)
at <PackageInSecondJar>.communication.HIDTransmitterSearcher.find(Unknown Source)
at <PackageInSecondJar>.communication.CompositeTransmitterSearcher.find(Unknown Source)
at <PackageInAppletJar>.communication.AppletCommunicationBroker.setupDeviceProxy(Unknown Source) …Run Code Online (Sandbox Code Playgroud) 在过去一年左右的时间里,我一直在开发我的TDD印章,以便我现在相当擅长基本要点 - 首先编写测试,模拟框架,测试尽可能小的东西,DI等.
但是我觉得还有很多事情我没有从单元测试中解脱出来.
例如,我经常发现这样并没有真正测试集成和整体单元测试大局观的什么我的代码是应该做的事情.随着一切被嘲笑,我发现我忽略了被测方法是否产生了我实际需要的结果,而不仅仅是他们所说的结果.当我开始转向BDD时,我发现这个问题只会加剧,导致浪费的开发时间和无效的测试.
另一个问题是单元测试需要大量维护才能使它们保持有序,从而减慢重构速度.
当我第一次开始单元测试时,像大多数人一样,我发现我写的内容实际上是集成测试.然而,这些测试有许多好处 - 它们更易于阅读,并且在我的程序API上充当了不错的文档.他们也倾向于更快地捕捉现实世界的问题,而不是单位测试,我发现他花了很多时间来定位只会因错误使用API而产生的边缘情况(例如空引用,除以0等).
你的想法是什么?您能否推荐能够解决更先进的单元测试并保持生产力和效率的优秀书籍,文章或实践?
编辑:只是一点点跟随问题,给出答案:所以基本上你说,尽管做了所有这个单位'测试'我真的没有测试代码......我回答,'但我想测试当代码!' 实际上,当我写了很多"较重"的集成测试时,我发现我的代码往往更快地达到正确状态,并且很早就发现了错误.如果没有集成测试的可维护性问题,是否有可能实现这一目标?
我经常从专业人士博客那里听到类似于有机会重构代码的事情.究竟是什么?用更简单和更少的行重写代码?这样做的目的是什么?
How can I change the first visible item in a list view (I searched a method such as setFirstVisiblePosition) ?
正如标题所示,这个测试名称只是顶部的一点吗?
WhenChargeIsGreaterThanRestingChargeButLessThanChargeRestApproachStep_OnUpdate_ChargeIsSetToRestingCharge
Run Code Online (Sandbox Code Playgroud)
关于如何改进这个的任何建议?或者它是好的吗?
下面是整个测试夹具,因此您可以获得一些上下文:)
public class NeuronTests
{
[Fact]
public void OnUpdate_NeuronFiresWhenChargeIsEqualToThreshold()
{
Neuron neuron = new Neuron();
bool fired = false;
neuron.Fired += (s, e) => fired = true;
neuron.Charge = Neuron.ChargeThreshold;
neuron.Update();
Assert.True(fired, "Neuron didn't fire");
}
[Fact]
public void OnUpdate_NeuronDoesntFireWhenChargeIsLessThanThreshold()
{
Neuron neuron = new Neuron();
bool fired = false;
neuron.Fired += (s, e) => fired = true;
neuron.Charge = Neuron.ChargeThreshold - 1f;
neuron.Update();
Assert.False(fired, "Neuron fired!");
}
[Fact]
public void OnUpdate_NeuronFiresWhenChargeIsGreaterThanThreshold()
{
Neuron neuron = new …Run Code Online (Sandbox Code Playgroud) android ×4
java ×3
listview ×2
tdd ×2
unit-testing ×2
applet ×1
audio ×1
c# ×1
camera ×1
drawable ×1
focus ×1
hibernate ×1
hql ×1
mixed-code ×1
performance ×1
refactoring ×1
security ×1
selection ×1
xunit.net ×1