通过查看的代码Collections类,我才知道,当我们正在使用的方法unmodifiableList(List list)或者unmodifiableCollection(Collection c)它不是创建一个新的对象,但它返回同一个对象的引用,并覆盖其可以修改方法List[ add,addall,remove,retainAll. ..]
所以我跑了这个测试:
List modifiableList = new ArrayList();
modifiableList.add ( 1 );
List unmodifiableList = Collections.unmodifiableList( modifiableList );
// unmodifiableList.add(3); // it will throw the exception
modifiableList.add ( 2 );
System.out.println( unmodifiableList );
Run Code Online (Sandbox Code Playgroud)
结果是[ 1,2 ].
现在重点是为什么它指的是同一个对象?为什么不创建新对象?
假设一个普通的JFrame,我试图在框架可见之前获取插入值.一旦框架可见,我就可以得到这些值(我想我可以在屏幕外创建jframe),但是想知道是否有某种方法可以让Java在可见性之前设置插图.在此调用之前,所有插入值均为零.
Net,我正在尝试获取框架客户区的确切尺寸 - 或者说更好,我正在尝试创建一个具有非常特定的客户区尺寸的JFrame.
提前致谢.
我的系统中有一个实体,它自然需要一个标识符,以便可以唯一标识.假设数据库用于使用Hibernate生成标识符,使用本机策略,那么显然应用程序代码没有分配标识符的可靠性.现在,该实体的实例在被持久化并获取其标识符之前是否可以被认为是有效的?或者我应该使用其他策略为我的实体分配其标识符,以便在调用其构造函数时获取其标识符?
我想问一个关于JSP和Java的问题.我正在编写JSP页面并且有一个bean类.在类中,我有一个getter函数,它将在jsp页面中返回一个double var.我使用以下代码显示数字.
<p> the value of AB is <%=obj.getValue() %> <p>
Run Code Online (Sandbox Code Playgroud)
我希望显示器会如下所示
the value of AB is 0.45
Run Code Online (Sandbox Code Playgroud)
但是,真正的显示如下
the value of AB is 0.4569877987
Run Code Online (Sandbox Code Playgroud)
我只想显示最后两位数.我该怎么做才能展示我想要的东西.我应该修改JSP页面还是Java类变量?谢谢.
我的JSP页面需要根据它们所处的环境(开发,生产,沙箱等)显示不同的信息.我希望每个环境都有一个属性文件,其中包含它们可能需要的所有参数.如何在JSP页面中引用此文件的属性?
我的想法是:
更新 - 我应该提到我使用的是Spring 3.0和Spring webmvc.所以,如果有一些最好的实践方法,使用Spring做到这一点,这是理想的!
在用户进行身份验证时重置会话cookie被认为是一种很好的安全做法.
如何用Java做到这一点?
到目前为止我的尝试是成功的,但我想知道是否有更好的方法:
public static HttpSession resetSessionId(HttpSession session,
HttpServletRequest request) {
session.invalidate();
session = request.getSession(true);
return session;
}
Run Code Online (Sandbox Code Playgroud) 我有一些hibernate @OneToMany映射的问题.就像这里一样
@Entity
@Table(name = "albums")
@SequenceGenerator(name = "ALBUMS_SEQ", sequenceName = "albums_seq", allocationSize = 1)
public class AlbumDs {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ALBUMS_SEQ")
private Integer id;
private Integer ownerId;
private String name;
private String description;
private Date created;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "albumId", insertable = true, updatable = true)
private Set<UserAlbumDs> users = new HashSet<UserAlbumDs>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getOwnerId() { …Run Code Online (Sandbox Code Playgroud) 我有一个域对象类User(它是一个JPA实体):
@Entity
public class User {
private String name;
private boolean enabled = true;
// getters/setters
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用Spring 3 MVC提供REST API以允许客户端创建新用户:
@Controller
public class UserController {
@RequestMapping(value="/user", method=RequestMethod.POST)
@ResponseBody
public String createRealm(@RequestBody User user) {
user.setEnabled(true); // client is not allowed to modify this field
userService.createUser(user);
...
}
}
Run Code Online (Sandbox Code Playgroud)
它的伟大工程,但我不知道这是否是一个好主意,使用域对象作为@RequestBody,因为我要保护一些领域不应该由("已启用",在这种情况下,IE)的客户端直接进行修改.
这些替代方案的优缺点是什么:
第二种选择如下:
@Entity
public class User {
private String name;
private boolean enabled = true;
// getters/setters …Run Code Online (Sandbox Code Playgroud) 我知道这个错误意味着mysql列不接受该值,但这很奇怪,因为该值适合Java UTF-8编码的字符串,而mysql列是utf8_general_ci.此外,除了这些之外,所有utf8角色到目前为止都已正常工作.
用例是:我正在导入推文.有问题的推文是:https://twitter.com/bakervin/status/210054214951518212 - 您可以看到两个"奇怪"的字符(以及它们之间的两个奇怪的空格).问题是 - 如何处理:
我正在查看EhCache统计数据,我看到这些数字:
CacheMisses:75977
CacheHits:38151InMemoryCacheMisses:4843
InMemoryCacheHits:38151
"memory"是唯一的存储 - 没有堆外和没有磁盘存储(overflowToDisk="false", diskPersistent="false").那么这两个意味着什么呢?我希望它们是相同的(命中是相同的),但是失误差别很大.