小编jai*_*jai的帖子

在Java中避免使用多个If语句

我编写了一个像这样的方法.但我想这应该进行重构.任何人都可以建议避免使用这多个if语句的最佳方法吗?

private String getMimeType(String fileName){
  if(fileName == null) {
    return "";   
  } 
  if(fileName.endsWith(".pdf")) {
    return "application/pdf";   
  }
  if(fileName.endsWith(".doc")) {
    return "application/msword";  
  }
  if(fileName.endsWith(".xls")) {
    return "application/vnd.ms-excel"; 
  }
  if(fileName.endsWith(".xlw")) {
    return "application/vnd.ms-excel"; 
  }
  if(fileName.endsWith(".ppt")) {
    return "application/vnd.ms-powerpoint"; 
  }
  if(fileName.endsWith(".mdb")) {
    return "application/x-msaccess"; 
  }
  if(fileName.endsWith(".rtf")) {
    return "application/rtf"; 
  }
  if(fileName.endsWith(".txt")) {
    return "txt/plain"; 
  }
  if(fileName.endsWith(".htm") || fileName.endsWith(".html")) {
    return "txt/html"; 
  }
  return "txt/plain"; 
}
Run Code Online (Sandbox Code Playgroud)

我不能在这里使用switch-case,因为我的'条件'是java.lang.String.

java

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

构建框架时需要考虑的事项

我们正计划构建一个框架:一个成本估算框架,将在我们组织的各个领域中使用.

高级要求是这样的:如果我开发某种产品,我会花多少钱?生成的成本将用于与供应商引用的成本进行比较,并决定选择哪个供应商.

现在,我的问题是: 在开发框架时需要考虑哪些事项?

我很少想到:

  1. 通过抽象类和接口实现高级需求
  2. 提供可能对Framework用户有用的实用程序类.
  3. 考虑应该是什么内部 - 一种元数据 - 不应该向框架用户显示.
  4. 设计模式使用像模板一样.
  5. 输入类的属性和方法.

java frameworks

10
推荐指数
2
解决办法
7514
查看次数

为什么Spring框架被称为"非侵入式"?

Spring框架是非 - INTRUSIVE.

你能详细说明一下吗?

谢谢 :)

java spring dependency-injection

10
推荐指数
2
解决办法
3692
查看次数

如何在Groovy中对数组进行迭代?

public class ArrayTest{
  public static void main(String[] args){
    String[] list = {"key1", "key2", "key3"};
    String[] list2 = {"val1", "val2", "val3"};

    for(int i = 0; i < list.length; i++){
      ilike(list[i], list2[i];        
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在Groovy中编写上面的代码?

实际上,它是一个grails应用程序,我想在上面做类似的事情.

arrays iteration grails groovy

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

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

在企业应用程序(EAI)中存储用户凭据的位置?

背景/上下文

我们正在开发一个事件通知服务.高级别的应用程序如下所示: 高水平流动

我们的开发范围涉及小部件和ENS.

" ENS "充当用户感兴趣的某些类型事件的集中点.任何想知道这些类型的事件何时发生的用户都会注册ENS,它按顺序识别事件并将通知与订阅相匹配.

想要subcibe的用户应该是集成应用程序的有效用户(db,sap system等)

事件顺序:

在此输入图像描述

现在我的问题是:

存储Users db,sap等凭据的最佳实践是什么.

编辑 用户应该多久进行一次身份验证?应该是每次传递消息吗?(正如@duffymo提到的,如果我使用这个策略,它会影响源系统)

附加信息: ENS是网络服务.

ENS轮询SAP(和其他应用程序),这就是问题变得更加复杂的地方.在SAP中,存在数据级授权.因此,并非所有用户都可以查看所有事件/数据.

如果SAP已推送数据以及有权查看的用户信息,则根本没有问题.

案例1:调度程序由ENS启动

  1. 用户订阅订阅.在订阅时,将在SAP系统中检查用户的授权.如果没问题,那么他将被允许进行订阅.
  2. 调度程序在预定时间运行.
  3. 调度程序识别订阅的用户.
  4. 如果发生事件,则调度程序使用存储的用户凭证(在ENS中执行)进行POLL.
  5. 如果有更改,请通知用户.

Disadvs在这里:

  • 用户凭据存储在外部某处 - 安全团队可能不接受它
  • 如果多个用户订阅了同一条信息,则Reduntant命中

案例2:调度程序由WIDGET引导.用户信用卡仅存储在用户本地计算机中.Diadv:

  • 如果订阅是每天,并且用户系统/小部件未启动.用户可能会错过周末发生的通知.
  • 如果多个用户订阅了同一条信息,则Reduntant会命中服务器.

java notifications store credentials

9
推荐指数
1
解决办法
1100
查看次数

如何避免SQL查询中的DIVIDE BY ZERO错误

SELECT  YEAR, period, round((1- sum(rej_qty) / sum(recd_qty))*100, 0)   
 FROM   TAB_A
 WHERE  sid = '200'
 AND    sdid IN ('4750')
 AND
(
       (
          YEAR ='2011'
       AND    period IN('01_JAN')
       )
OR
       (
          YEAR = '2010'
       AND    period IN('02_FEB','03_MAR','04_APR','05_MAY','06_JUN','07_JUL','08_AUG','09_SEP','10_OCT','11_NOV','12_DEC')
       )
)
group by year, period
Run Code Online (Sandbox Code Playgroud)

对于特定月份,recd_qty为零,因为我得到了DIVIDE BY ZERO错误.

有什么方法可以避免DIVIDE BY ZERO错误吗?

我有什么方法可以忽略那个特定的月份?

sql oracle9i divide-by-zero

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

INNER JOIN关键字| 有没有使用它们

SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name

SELECT * FROM TableA, TableB
where TableA.name = TableB.name
Run Code Online (Sandbox Code Playgroud)

哪种方式首选,为什么?使用像JOIN这样的关键字时会有任何性能差异吗?

谢谢

sql join

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

通常,在应用程序中放置SQL查询的位置?

在应用程序中放置SQL查询的最佳位置是什么?

查询可能很大,需要格式化.

使用StringBuilder附加查询看起来非常混乱.

将它们存储在文件中并在每次发出请求时读取它们 - 看起来都是个坏主意.(但我认为从文件读取可以放在静态块中)

java sql

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

如何检查参数中是否存在参数?

for ( boldParam in [para1, para2, para2, para4, para5] ) {
    if(/* boldParam exists in params */)
        ilike(boldParam,'%' + params.boldParam + '%')
    }
}
Run Code Online (Sandbox Code Playgroud)

我想写上面的内容.我试图避免以下多个if语句:

if (params.para1)
     ilike('para1','%' + params.para1+ '%')
if (params.para2)
     ilike('para2','%' +params.para2+ '%')
if (params.para3)
     ilike('para3','%' + params.para3+ '%')
Run Code Online (Sandbox Code Playgroud)

grails groovy

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