我编写了一个像这样的方法.但我想这应该进行重构.任何人都可以建议避免使用这多个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.
我们正计划构建一个框架:一个成本估算框架,将在我们组织的各个领域中使用.
高级要求是这样的:如果我开发某种产品,我会花多少钱?生成的成本将用于与供应商引用的成本进行比较,并决定选择哪个供应商.
现在,我的问题是: 在开发框架时需要考虑哪些事项?
我很少想到:
Spring框架是非 - INTRUSIVE.
你能详细说明一下吗?
谢谢 :)
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应用程序,我想在上面做类似的事情.
背景/上下文
我们正在开发一个事件通知服务.高级别的应用程序如下所示:

我们的开发范围涉及小部件和ENS.
" ENS "充当用户感兴趣的某些类型事件的集中点.任何想知道这些类型的事件何时发生的用户都会注册ENS,它按顺序识别事件并将通知与订阅相匹配.
想要subcibe的用户应该是集成应用程序的有效用户(db,sap system等)
事件顺序:

现在我的问题是:
存储Users db,sap等凭据的最佳实践是什么.
编辑 用户应该多久进行一次身份验证?应该是每次传递消息吗?(正如@duffymo提到的,如果我使用这个策略,它会影响源系统)
附加信息: ENS是网络服务.
ENS轮询SAP(和其他应用程序),这就是问题变得更加复杂的地方.在SAP中,存在数据级授权.因此,并非所有用户都可以查看所有事件/数据.
如果SAP已推送数据以及有权查看的用户信息,则根本没有问题.
案例1:调度程序由ENS启动
Disadvs在这里:
案例2:调度程序由WIDGET引导.用户信用卡仅存储在用户本地计算机中.Diadv:
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错误吗?
我有什么方法可以忽略那个特定的月份?
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查询的最佳位置是什么?
查询可能很大,需要格式化.
使用StringBuilder附加查询看起来非常混乱.
将它们存储在文件中并在每次发出请求时读取它们 - 看起来都是个坏主意.(但我认为从文件读取可以放在静态块中)
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)