我有一个巨大的excel文件,有大量的列,看起来像这样: -
Column1 Column2 Column3 Column4 Column5
abc def ghi
mno pqr
......
Run Code Online (Sandbox Code Playgroud)
这是我编写的用于打印这些值的代码:
try {
FileInputStream inputStr = new FileInputStream(fileName);
XSSFWorkbook xssfWork = new XSSFWorkbook(inputStr) ;
XSSFSheet sheet1 = xssfWork.getSheetAt(0);
Iterator rowItr = sheet1.rowIterator();
while ( rowItr.hasNext() ) {
XSSFRow row = (XSSFRow) rowItr.next();
System.out.println("ROW:-->");
Iterator cellItr = row.cellIterator();
while ( cellItr.hasNext() ) {
XSSFCell cell = (XSSFCell) cellItr.next();
System.out.println("CELL:-->"+cell.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
此代码生成的输出是: -
ROW:-->
CELL:-->Column1
CELL:-->Column2
CELL:-->Column3
CELL:-->Column4
CELL:-->Column5
ROW:-->
CELL:-->abc …
Run Code Online (Sandbox Code Playgroud) 我发现HTML表单只支持两种enctype类型.他们是application/x-www-form-urlencoded
和multipart/form-data
.我知道multipart/form-data
我需要上传文件时使用.我application/x-www-form-urlencoded
什么时候使用?它是默认形式的enctype吗?
我有一个电影租赁系统的现有数据库.每部电影都有一个评级属性.在SQL中,他们使用约束来限制此属性的允许值.
CONSTRAINT film_rating_check CHECK
((((((((rating)::text = ''::text) OR
((rating)::text = 'G'::text)) OR
((rating)::text = 'PG'::text)) OR
((rating)::text = 'PG-13'::text)) OR
((rating)::text = 'R'::text)) OR
((rating)::text = 'NC-17'::text)))
Run Code Online (Sandbox Code Playgroud)
我认为使用Java枚举将约束映射到对象世界会很好.但由于"PG-13"和"NC-17"中的特殊字符,因此不可能简单地采用允许的值.所以我实现了以下枚举:
public enum Rating {
UNRATED ( "" ),
G ( "G" ),
PG ( "PG" ),
PG13 ( "PG-13" ),
R ( "R" ),
NC17 ( "NC-17" );
private String rating;
private Rating(String rating) {
this.rating = rating;
}
@Override
public String toString() {
return rating;
}
}
@Entity
public class Film …
Run Code Online (Sandbox Code Playgroud) 我知道upper()
Java和其他框架中有很多方法,比如Apache commons lang,它将String转换为全部大写.
有没有提供任何公共库等的方法isUpper(String s)
和isLower(String s)
方式,检查在字符串中所有字符都是大写或小写?
编辑:
关于转换为Upper并与之比较的许多好答案.我想我应该更具体一点,并说我已经想到了这一点,但我希望能够使用现有方法.
关于可能在apache.commons.lang.StringUtils中包含此内容的好评.有人甚至提交了一个补丁(20090310).希望我们很快就会看到这一点. https://issues.apache.org/jira/browse/LANG-471
编辑:
我需要这种方法的方法是将有时会全部大写的酒店名称大写.如果它们都是小写或大写,我只想把它们大写.我确实遇到了一些帖子中提到的非字母字符的问题,最后做了类似这样的事情:
private static boolean isAllUpper(String s) {
for(char c : s.toCharArray()) {
if(Character.isLetter(c) && Character.isLowerCase(c)) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
这个讨论和不同的解决方案(有不同的问题),清楚地表明在commons.lang中需要一个好的实体isAllUpper(String s)方法.
在那之前,我猜这myString.toUpperCase().equals(myString)
是最好的方式.
名为EJB的方法Aby
调用另一个名为的EJB方法Bob
Bob
标有 @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
bob
交易提交?:a)bob
调用结束时
b)aby
调用结束时
c)其他.什么时候?
我正在使用Apache Commons DBCP(commons-dbcp.jar
)连接池.
一旦我从池中获得了连接,它就会被包含在课堂中org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
.
我的要求是将一个字符串数组传递给Oracle中的pl/sql存储过程.
以下是我在以下代码片段中所做的事情:
Connection dbConn = ConnectionManager.ds.getConnection();
//The above statement returns me an connection wrapped in the class
//org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.
org.apache.commons.dbcp.DelegatingConnection del = new org.apache.commons.dbcp.DelegatingConnection(dbConn.getConnection());
con = del.getInnermostDelegate();
cs = con.prepareCall("call SP_NAME(?,?,?,?)");
oracle.sql.ArrayDescriptor arDesc= oracle.sql.ArrayDescriptor.createDescriptor("ARRAY_NAME", (OracleConnection) con);
CallableStatement c_stmt = conn.prepareCall("begin update_message_ids_ota
(:x); end;" );
c_stmt.setArray( 1, array_to_pass );
c_stmt.execute();
Run Code Online (Sandbox Code Playgroud)
在执行上面的代码时,我得到以下异常:
java.lang.ClassCastException:org.apache.commons.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper无法在oracle.sql.ArrayDescriptor.createDescriptor中强制转换为oracle.jdbc.OracleConnection
我试图在几乎所有的网站和论坛中找到解决方案,但无法得到满意的答案或解决方案.
背景:我有一个使用JSP的Web项目.IDE是Eclipse.tomcat的配置是:资源发生变化时自动发布,发布间隔为"1秒".
classes文件夹中的属性文件,用于保存一些设置.它也可以由servlet动态修改.修改操作由JSP中的save按钮触发.
问题:经过几次保存操作后,Tomcat自带了java.lang.OutOfMemoryError: PermGen space
.
日志消息
java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:108)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:58)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:297)
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1064)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4238)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3083)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:404)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1279)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1571)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1560)
at java.lang.Thread.run(Thread.java:662)
Run Code Online (Sandbox Code Playgroud) 我想知道如何编写适用于多个id或多个类的css块:
就像是:
.class1, .class2 {
...
}
Run Code Online (Sandbox Code Playgroud)
要么
#id1, #id2 {
...
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何做两种情况(希望是跨浏览器兼容).谢谢.
更新:为了使它更有趣,这也有效吗?
#id tr, #id2 tr {
}
Run Code Online (Sandbox Code Playgroud)
?
尝试针对java 1.7编译我的应用程序我发现在javax.sql.CommonDataSource中添加了一个新方法(在jsDataSource中也是如此) - .getParentLogger()
.您可以将CommonDataSource:1.7与CommonDataSource进行比较:1.6
对我来说,这种变化肯定会破坏向后兼容 例如,我的应用程序(包含DataSource的实现)甚至不会在没有代码更改的情况下针对1.7进行编译.
根据我的观点,这应该是非常有力的理由 - 但我不能google甚至一个.有人可以解释这种变化背后的原因吗?应该如何处理它 - 对我而言,这是我第一次遇到与java的向后不兼容,所以我这里没有任何"最佳实践"......
我有像这样的双向关系......
Person.java
public class Person{
@JsonIgnore
@OneToMany(targetEntity=PersonOrganization.class, cascade=CascadeType.ALL,
fetch=FetchType.EAGER, mappedBy="person")
private Set<PeopleOrg> organization;
.....
}
Run Code Online (Sandbox Code Playgroud)
PersonOrganization.java
public class PersonOrganization{
@JsonIgnore
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="PERSONID", nullable=false)
private Person person;
}
Run Code Online (Sandbox Code Playgroud)
即使使用@JsonIgnore
注释,我在尝试检索Person记录时也会收到无限递归错误.我在1.6版本中尝试过新的注释.@JsonBackReference
和@JsonManagedReference
.即使这样,我也会得到无限的递归..
随着@JsonBackReference("person-organization")
上Person
和@JsonManagedReference("person-organization")
上PersonOrganization
org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.entity.Person["organization"]->org.hibernate.collection.PersistentSet[0]->com.entity.PersonOrganization["person"]->com.entity.Person["organization"]->org.hibernate.collection.PersistentSet[0]...
Run Code Online (Sandbox Code Playgroud)
即使我交换了注释,我仍然会遇到此异常..如果映射或我使用JSON注释的方式有问题,请告诉我.谢谢