我们通常会在业务逻辑中进行不必要的检查以避免失败.
例如.
1. public ObjectABC funcABC(){
ObjectABC obj = new ObjectABC;
..........
..........
//its never set to null here.
..........
return obj;
}
ObjectABC o = funABC();
if(o!=null){
//do something
}
Run Code Online (Sandbox Code Playgroud)
如果我们确定它永远不会为null,为什么我们需要这个null检查?这是一个好习惯吗?
2. int pplReached = funA(..,..,..);
int totalPpl = funB(..,..,..);
funA() just puts a few more restriction over result of funB().
Double percentage = (totalPpl==0||totalPpl<pplReached) ? 0.0 : pplReached/totalPpl;
Run Code Online (Sandbox Code Playgroud)
我们需要'totalPpl<pplReached'检查吗?
问题是:我们不是通过进行此类检查来吞下一些基本问题吗?通过进行这些检查可以避免理想地显示的问题.
推荐的方式是什么?
我使用HSQLDB编写junits,我的查询是这样的:
String queryStr = "from ManualUrlBatchModel where status IN(:status) group by batchUser order by creationTime";
Query query = getSession(requestType).createQuery(queryStr);
query.setParameterList("status", status);
Run Code Online (Sandbox Code Playgroud)
我在给定状态下检索每个用户一个批次(取决于创建时间FIFO顺序).
它适用于端到端测试,但在编写junits时失败.
例外说:
Caused by: java.sql.SQLException: Not in aggregate function or group by clause: org.hsqldb.Expression@164f8d4 in statement [select manualurlb0_.manual_url_batch_id as manual1_7_, manualurlb0_.creation_time as creation2_7_, manualurlb0_.modification_time as modifica3_7_, manualurlb0_.attribute_list as attribute4_7_, manualurlb0_.batch_name as batch5_7_, manualurlb0_.batch_user as batch6_7_, manualurlb0_.input_s3_key as input7_7_, manualurlb0_.locale as locale7_, manualurlb0_.notify_when_complete as notify9_7_, manualurlb0_.output_s3_key as output10_7_, manualurlb0_.processed_url_count as processed11_7_, manualurlb0_.s3_bucket as s12_7_, manualurlb0_.status as status7_, manualurlb0_.submitted_url_count as …Run Code Online (Sandbox Code Playgroud) 我有一个表T,其中列通常定义.
@Entity
@Table(name="T")
public class T {
@Column(name="test_id")
private Long testId;
}
Run Code Online (Sandbox Code Playgroud)
给定实体属性"testId",我想获得相应的DB列名称(即"test_id").怎么可能实现?
编辑1: 我希望将此列保留在与testId相比具有实际DB列名(test_id)的单独位置.我使用HQL从DB获取这些值,它具有键作为实体名称(即testId),我想在DB中使用实际的列名.
有两个函数 A 和 B 用事务注释定义。
我从 A 呼叫 B。
@Transactional(value=Constants.READ_WRITE_REQUEST)
public int A(....){
B();
}
@Transactional(propagation=Propagation.REQUIRES_NEW,value=Constants.READ_WRITE_REQUEST)
public int B(....){
C();
}
@Transactional(value=Constants.READ_WRITE_REQUEST)
public int C(....){
...
}
Run Code Online (Sandbox Code Playgroud)
它导致了
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
Run Code Online (Sandbox Code Playgroud)
我从函数 B 中删除了 Propagation.REQUIRES_NEW,问题得到了解决。
是因为旧事务持有锁而创建了新事务吗?对此有何想法?
我遇到了这个问题,同时尝试自动装配一个可运行的类,并在不同的调用中创建它的不同实例并将其保存在一个数组中.
xml配置是:
<bean name="threadName" Class="ABC" scope="prototype" />
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我正在尝试这样的事情:
public class ThreadHandler{
@Autowired
private ABC threadName;
//getter
ABC getThreadName(){
return threadName;
}
public void someFunction(){
List<ABC> abc = new ArrayList(ABC>();
for (int i=0;i<SOME_CONST;i++){
ABC tName = getThreadName();
abc.add(tName);
tName.start();
}
}
Run Code Online (Sandbox Code Playgroud)
}
让我们ABC成为一个班级Thread/Runnable/Callable.
通过这种方式,它会抛出java.lang.IllegalThreadStateException.但是,如果我使用它,它的工作正常ABC tName =appContext.getBean("threadName",ABC.class);
为什么会这样?
在尝试从getMethod获取对象时,我们不会获得新实例吗?
请处理这个琐碎的问题.
我得到一些"SOME_DOMAIN?q\x3dnintendo+mathe\x26um\x3d1\x26ie\x3dUTF-8\x26tbm\x3dshop\x26cid\x3d8123694338777545283\x26sa\x3dX\x26ei\x3dL8cjUJmHO8L30gGa1ICgCw\x26ved\x3d0CI4BEIIIMAk"包含一些转义字符的URL .
删除这些十六进制字符的最佳方法是什么?我有这个下面的片段,它解决了我现在的问题,但看起来不是一个可靠的解决方案.
url = url.replace("\\x2F","/");
url = url.replace("\\x26","&");
url = url.replace("\\x3d","=");
url = url.replace("\\x2F","/");
url = url.replace("\\x2F","/");
Run Code Online (Sandbox Code Playgroud)
我没有遇到过这个问题,但URL之间可能会出现空格.应该URLDecoder.decode解决我的问题?
好心劝告.
谢谢
请处理这个基本问题。
我曾经使用 @Autowired 注释,其中可以使用该类的键/值格式为属性(类变量)赋予一个值。
<bean id="class" class="a.b.c.Class" lazy-init="true">
<property name="var1" value="${var1}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
我将 Class 更改为带有不需要自动装配的组件扫描选项的 @Component 。我现在如何添加属性变量?
另外,我不想在编写 Junit 时遇到麻烦。
谢谢,
我在参数中使用两个查询,并在其中填充了PreparedStatementusing setLong和setStringoperation。
查询1
SELECT A, B FROM TABLE1 WHERE A in (SELECT A FROM TABLE2 WHERE C in (?,?,?) )
Run Code Online (Sandbox Code Playgroud)
查询2
SELECT A, B FROM TABLE1 WHERE A in (?,?)
Run Code Online (Sandbox Code Playgroud)
有人告诉我它为每个可能的设置大小创建一个唯一的查询,并污染了Oracle的SQL缓存。另外,由于大小不固定,oracle可以为每个查询选择不同的执行计划。
可以应用哪些优化来使其更好?
如果我创建大小为50的子句列表并使用伪/冗余变量填充其余的列表,那会好吗?
如果我没看错,那么除非将其提取出来并再次用作语句列表,否则很难优化条款中的选择语句。
如果这是微不足道的道歉.
我试图运行此代码 - http://oreilly.com/pub/h/974#code从Yahoo!获取URL 目录.
我无法获得谷歌API基本密钥,并在网上发现它不再需要了.
我也需要google.wsdl,并在Google的API常见问题解答(http://code.google.com/apis/soapsearch/api_faq.html#tech4)上找到它可以从http://api.google.com/上获取GoogleSearch.wsdl正在抛出404错误.
它也不是必需的吗?如果是,那么只需通过减少参数数量来改变方法调用就可以了吗?
有没有人对这个问题有任何想法?
我们有大量数据,我们想对它们执行一些操作。删除重复项是主要操作之一。
前任。
a,me,123,2631272164
yrw,wq,1237,123712,126128361
yrw,dsfswq,1323237,12xcvcx3712,1sd26128361
Run Code Online (Sandbox Code Playgroud)
这是文件中的三个条目,我们希望在第一列的基础上删除重复项。因此,应删除第 3 行。每行可能有不同数量的列,但我们感兴趣的列将始终存在。
在内存中操作看起来不可行。
另一种选择是将数据存储在数据库中并从中删除重复项,但这也不是一项简单的任务。我应该遵循什么设计将数据转储到数据库并删除重复项?
我假设人们一定遇到过这样的问题并解决了它。
我们通常如何解决这个问题呢?
PS:请将此视为现实生活问题而不是面试问题;)
我想将DataTables用于表格的各种功能.我无法解决这个问题.
我的代码是:
<script type="text/javascript" src="<%=Constants.JSROOTURL%>jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery.dataTables.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="//datatables.net/download/build/jquery.dataTables.nightly.js"></script>
<script type="text/javascript">
var jq = jQuery.noConflict();
jq(document).ready( function(){
jq("#results").dataTable();
});
</script>
Run Code Online (Sandbox Code Playgroud)
错误说:
Uncaught TypeError: Object [object Object] has no method 'dataTable' imageValidation.html:234
(anonymous function) imageValidation.html:234
n jquery.min.js:2
o.fireWith jquery.min.js:2
e.extend.ready jquery.min.js:2
c.addEventListener.B
Run Code Online (Sandbox Code Playgroud)
任何的意见都将会有帮助.
java ×7
spring ×3
autowired ×2
sql ×2
algorithm ×1
components ×1
datatable ×1
dbunit ×1
file-io ×1
google-api ×1
hibernate ×1
hsqldb ×1
jquery ×1
jquery-ui ×1
junit ×1
large-files ×1
oracle ×1
perl ×1
transactions ×1
url ×1
url-encoding ×1
wsdl ×1
yahoo ×1