小编Car*_*ter的帖子

如何编写更高效的代码

世纪的问题?我基本上想知道如果我将这段代码写成几个不同的变量或者我使用的是小数组,哪个会更有效.

int x = 34;
int y = 28;
int z = 293;
Run Code Online (Sandbox Code Playgroud)

VS

double coordinate[3] = {34, 28, 293};
Run Code Online (Sandbox Code Playgroud)

我有一个坐标结构,我将按以下方式使用:

typedef struct coordinates_t {
    double x = 0.0;
    double y = 0.0;
    double z = 0.0;

} coordinates;


typedef struct car_t {
    coordinates start; // car starting point
    coordinates location; // car current Location
    coordinates targCarVector; // Vector to car from target
    coordinates altitude; // Altitude of car
    coordinates distance; // Distance from car start to current position
} …
Run Code Online (Sandbox Code Playgroud)

c performance premature-optimization

3
推荐指数
3
解决办法
5273
查看次数

为什么java中的静态方法只接受其方法中的final或非final变量,而不是静态?

为什么java中的静态方法只接受其方法中的final或非final变量,而不是静态?

例如,我有以下方法:

public static void myfunc(int somethig)
{                                      
  int a=10;                            
  final int b=20;                      
  static int c=30;   //gives Error why?
}
Run Code Online (Sandbox Code Playgroud)

java android

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

android,imageview拉伸

我正在尝试使用可绘制的png来获取我的imageview以填充显示(我不关心比率).但是,fill_parent不起作用,据我所知,没有背景设置为RelativeLayout?

问候

RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:onClick="toggleAdvice"



   ImageView
    android:id="@+id/advice_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:src="@drawable/pratbubbla_gron"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
Run Code Online (Sandbox Code Playgroud)

android imageview

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

如何在SQL中打印表及其内容的结构

我使用Oracle SQL(iSQL plus)创建了一个简单的数据库.如何打印表结构及其内容?

sql database printing oracle

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

使用带有条件运算符的Min/Max

我试图运行查询以查找最大值和最小值,然后使用条件运算符.但是,当我尝试运行以下查询时,它给出了错误 - "滥用aggregate:min()".

我的查询是:

SELECT a.prim_id, min(b.new_len*36) as min_new_len, max(b.new_len*36) as max_new_len
FROM tb_first a, tb_second b
WHERE a.sec_id = b.sec_id AND min_new_len > 1900 AND max_new_len < 75000
GROUP BY a.prim_id
ORDER BY avg(b.new_len*36);
Run Code Online (Sandbox Code Playgroud)

有什么建议?

sql

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

Eclipse中的重构工具

我的需求非常简单:我希望在整个Eclipse项目中objClass1.method1()通过调用来更改方法调用objClass2.method2().不幸的是,我找不到能够做到这一点的插件.你能帮我吗?

编辑:

为了更准确,它objClass1是第三方库的一部分,所以我需要更改方法调用.我不能从方法定义开始.当我右键单击method1调用时,我的"重构"菜单中没有"重命名"选项.

我不想更改或重命名我的方法.我想在整个项目中用另一个电话交换一个电话.

需要做的事情的一个例子:

在重构之前:

Injector injector=Guice.createInjector(new IContactModule());
Run Code Online (Sandbox Code Playgroud)

重构后:

Injector injector=IContactInjectorSingleton.getInjector();
Run Code Online (Sandbox Code Playgroud)

这需要在我的项目中完成几个点.

java eclipse refactoring eclipse-plugin

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

正在重新传递ActiveMQ的消息(PooledConnectionFactory misconfig suspect)

我有一个应用程序,它使用Spring MessageListenerContainers和ActiveMQ.我已将其配置为使用PooledConnectionFactory,遵循activemq的文档.

我的方案如下:

  • 队列中有两个java-app使用者(2个不同的tomcats)
  • 主从属activemq代理,具有故障转移URL
  • 已配置PooledConnectionFactory
  • 骆驼在应用程序上
  • activemq 5.8.0,commons-pool 1.6

一切似乎都运行正常,但偶尔会将消息重新传递给消费者,这会导致应用程序错误.

在日志之后我怀疑这个错误是由Spring的PooledConnectionFactory bean定义中的一些错误配置引起的,该定义关闭甚至使用的连接然后强制在当前会话上回滚并因此重新传递消息

池的spring配置如下:

<bean id="AMQconnFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL">
            <value>${activemq_url}?initialReconnectDelay=100&amp;timeout=3000&amp;jms.prefetchPolicy.all=1&amp;jms.redeliveryPolicy.initialRedeliveryDelay=300000
            </value>
        </property>
    </bean>
    <bean id="sharedConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" abstract="true">
        <property name="connectionFactory" ref="AMQconnFactory" />
        <property name="maxConnections" value="30" />
    </bean>

    <bean id="MotionJMSConnectionFactory" parent="sharedConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
        init-method="start" destroy-method="stop" />

<bean id="sharedListenersProps" abstract="true" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="maxConcurrentConsumers" value="1" />
        <property name="concurrentConsumers" value="1" />
        <property name="connectionFactory" ref="MotionJMSConnectionFactory" />
        <property name="sessionTransacted" value="true" />
        <property name="transactionTimeout" value="300"/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

指向我的方向的日志如下:

[TRACE] (ActiveMQMessageConsumer.java:494) (09:48:16,412) - ID:bbiovx01.bglobal.bcorp-56155-1365791814916-1:3222:1:1 received message: MessageDispatch {commandId = 0, responseRequired …
Run Code Online (Sandbox Code Playgroud)

spring activemq-classic pool

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

避免使用布尔标志作为属性

首先,我想说我在重构方面没有太多经验,也不知道这是否是偏离主题的.

我正在使用给定代码,其中使用了许多布尔属性,由于可读性,我想避免使用它,并且我不知道如何以正确的方式处理它.

class MyClass(){
    boolean a;
    ...
    void function(){
        ...
        a = true;
        ...
    }

    void anotherFunction(){
        ...
        if(a == true){
            //do something
        } else {
            //do something else
        }
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

boolean a在多个使用function人就像这样,在anotherFunctions的运行有关的代码a.由于使用了多个属性和局部变量,因此很难理解代码和依赖关系,而且我很难重构它anotherFunction.重构这一点的努力可能非常高.

我一直试图避免使用像这样的布尔值,因为在我看来这不是一个好习惯.如果我错了,请不要犹豫,纠正我.

现在我想知道我是否应该重构代码并花费精力?在这种情况下是否可以使用某种模式?

refactoring design-patterns boolean

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

在TDD重构之后编写更多单元测试

这是我们一遍又一遍地讨论过的事情,人们的意见在这方面似乎有很大不同.

基本问题,在进行TDD时,应该在循环的重构步骤之后添加额外的单元测试.我不是在谈论你的下一个测试开始你的下一个周期,而是测试以涵盖由于重构而产生的任何变化.

这可能最好用现实生活中的例子来解释.在TDD周期的绿色之后,我们有以下代码:

    public bool ShouldVerifyDomain
    {
        get
        {
            return this.Orders.SelectMany(x => x.Items).Any(x => x.Product.RequiresDomainVerification);
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在,我看看这个,并想一想,linq语句可能有点整洁,更容易阅读,而不是违反Demeter,让我们重构一下.所以我创建了以下内容Order:

 public bool HasItemsThatRequireDomainVerification
 {
     get
     {
          return this.Items.Any(x => x.Product.RequiresCascadeDomainVerification);
     }
 }
Run Code Online (Sandbox Code Playgroud)

并修改ShouldVerifyDomain为:

  public bool ShouldVerifyDomain
  {
      get
      {
           return this.Orders.Any(x => x.HasItemsThatRequireDomainVerification);
      }
  }
Run Code Online (Sandbox Code Playgroud)

好吧,那看起来好一点,我对此感到高兴.让我们继续我的列表上的下一个测试......但是......等等,我们现在HasItemsThatRequireDomainVerification通过另一个对象上的属性测试该属性....是一个真正的单元测试还是我应该添加一个测试(s )直接测试HasItemsThatRequireDomainVerification.

我的感受?我不认为它会增加很多价值.我认为这会增加套件的维护负担,花费时间并没有真正让我们对未来的变化更有信心.

它能给我们带来什么?公共界面的"文档" Order.

思考?

c# tdd unit-testing

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

跨线程的对象可见性

我对跨线程发布数据和数据更改存在一般性疑问.考虑例如以下类.

public class DataRace {
  static int a = 0;

  public static void main() {
    new MyThread().start();
    a = 1;
  }

  public static class MyThread extends Thread {
    public void run() { 
      // Access a, b.
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

让我们关注main().

明确地

new MyThread().start();
a = 1;
Run Code Online (Sandbox Code Playgroud)

我们在MyThread启动后更改共享变量a,因此可能不是线程安全的发布.

a = 1;
new MyThread().start();
Run Code Online (Sandbox Code Playgroud)

但是这次a中的更改是在新线程中安全发布的,因为Java语言规范(JLS)保证线程A在启动线程B时可见的所有变量对线程B都是可见的,这实际上就像是Thread.start()中的隐式同步.

new MyThread().start();
int b = 1;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在生成两个线程之后分配新变量时,是否可以保证新变量将安全地发布到所有线程.即如果var b被另一个线程访问,它是否保证看到它的值为1.请注意,我之前没有讨论对b的任何后续修改(当然需要同步),但是第一次完成分配由jvm.

谢谢,

java concurrency

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