有人可以建议当前的"最佳实践" Date
和Calendar
类型.
当编写新的代码,它是最好的总是青睐Calendar
过Date
,还是有地方的情况Date
是比较合适的数据类型?
Typescript目前(或有计划)支持安全导航操作员?.
即:
var thing = foo?.bar
// same as:
var thing = (foo) ? foo.bar : null;
Run Code Online (Sandbox Code Playgroud)
此外,这个运营商有一个更常见的名称(它很难谷歌).
我确定这是一个很好的理由,但有人可以解释为什么java.util.Set
界面缺乏get(int Index)
,或任何类似的get()
方法?
似乎套装非常适合放入物品,但我找不到从中检索单个物品的优雅方式.
如果我知道我想要第一个项目,我可以使用set.iterator().next()
,但是否则我似乎必须转换为数组来检索特定索引处的项目?
从集合中检索数据的适当方法是什么?(除了使用迭代器)
我确信它被排除在API之外意味着有一个很好的理由不这样做 - 有人可以开导我吗?
编辑: 这里有一些非常好的答案,还有一些说"更多背景".特定场景是一个dbUnit测试,我可以合理地断言查询返回的集只有一个项目,我试图访问该项目.
但是,没有这种情况,这个问题更有效,因为它仍然更受关注:
集合和列表之间有什么区别.
感谢所有人在下面的精彩答案.
有人可以澄清一下AngularJS控制器的生命周期是什么吗?
考虑以下示例:
var demoApp = angular.module('demo')
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/home', {templateUrl: '/home.html', controller: 'HomeCtrl'})
.when('/users',{templateUrl: '/users.html', controller: 'UsersCtrl'})
.when('/users/:userId', {templateUrl: '/userEditor.html', controller: 'UserEditorCtrl'});
});
demoApp.controller('UserEditorCtrl', function($scope, $routeParams, UserResource) {
$scope.user = UserResource.get({id: $routeParams.userId});
});
Run Code Online (Sandbox Code Playgroud)
例如:
在上面的示例中,当我导航到时/users/1
,加载了用户1,并将其设置为$scope
.
然后,当我导航到时/users/2
,加载用户2.是UserEditorCtrl
重用的相同实例,还是创建了新实例?
我有一个使用Bootstrap标记的表单,如下所示:
<form class="form-horizontal">
<fieldset>
<legend>Legend text</legend>
<div class="control-group">
<label class="control-label" for="nameInput">Name</label>
<div class="controls">
<input type="text" class="input-xlarge" id="nameInput">
<p class="help-block">Supporting help text</p>
</div>
</div>
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud)
那里有很多样板代码,我想减少到一个新的指令 - form-input,如下所示:
<form-input label="Name" form-id="nameInput"></form-input>
Run Code Online (Sandbox Code Playgroud)
产生:
<div class="control-group">
<label class="control-label" for="nameInput">Name</label>
<div class="controls">
<input type="text" class="input-xlarge" id="nameInput">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我通过一个简单的模板工作了很多.
angular.module('formComponents', [])
.directive('formInput', function() {
return {
restrict: 'E',
scope: {
label: 'bind',
formId: 'bind'
},
template: '<div class="control-group">' +
'<label class="control-label" for="{{formId}}">{{label}}</label>' +
'<div class="controls">' +
'<input type="text" class="input-xlarge" id="{{formId}}" name="{{formId}}">' +
'</div>' …
Run Code Online (Sandbox Code Playgroud) 在ORM/Lazy加载实体的上下文中,我对术语"水合"的理解如下:
"Hydrating"描述了填充使用延迟加载获取的实体的一些或所有先前未填充的属性的过程.
例如:Author
从数据库加载类:
@Entity
class Author
{
@Id
long id;
List<Book> books;
}
Run Code Online (Sandbox Code Playgroud)
最初,books
未填充集合.
据我所知,books
从数据库加载集合的过程称为"保湿"集合.
这个定义是否正确,并且是常见的术语?我应该在这个过程中使用另一个更常见的术语吗?
我在OSX上从JDK 1.7升级到问题 - > 1.8.升级已经完成,但javac仍然返回1.7作为版本.
我从Oracle的主页下载了JDK 8_u5,然后运行安装程序.
我还在安装后采取了以下步骤:
> export JAVA_HOME=`/usr/libexec/java_home -v 1.8` (Executed in my .bashrc file)
> echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
> javac -version
javac 1.7.0_21
> $JAVA_HOME/bin/javac -version
javac 1.7.0_21
> $JAVA_HOME/bin/java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我已经完成并删除了Java 1.7(和所有其他JDK版本),然后重新运行安装程序:
> ls /Library/Java/JavaVirtualMachines
jdk1.8.0_05.jdk
Run Code Online (Sandbox Code Playgroud)
仍然没有用,javac报告版本为1.7.0_21
> which javac
/usr/bin/javac
> ls -ltra /usr/bin/javac
[snipped] /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
Run Code Online (Sandbox Code Playgroud)
在该路径中,Current
是一个符号链接A
.内容A/Commands …
我发现从Hibernate中的集合中删除时不会删除孤立记录.我必须做一些简单的错误,(这是Hibernate-101!),但我找不到它..
鉴于以下内容:
public class Book {
@ManyToOne
@NotNull
Author author;
}
public class Author
{
@OneToMany(cascade={CascadeType.ALL})
List<Book> books;
}
Run Code Online (Sandbox Code Playgroud)
以下更新代码:
Author author = authorDAO.get(1);
Book book = author.getBooks().get(0);
author.getBooks().remove(0);
authorDAO.update(author);
Run Code Online (Sandbox Code Playgroud)
AuthorDAO片段:
@Override
public void update(T entity) {
getSession().update(entity);
}
Run Code Online (Sandbox Code Playgroud)
以下测试失败:
Author author = author.get(1);
assertEquals(0,author.getBooks().size()); // Passes
Book dbBook = bookDAO.get(book.getId())
assertNull(dbBook); // Fail! dbBook still exists!
assertFalse(author.getBooks().contains(dbBook) // Passes!
Run Code Online (Sandbox Code Playgroud)
总之,我发现:
book.getAuthor().getBooks()
,那个集合中不存在书这种"感觉"就像我没有冲洗会话或强制更新 - 但我不确定我应该在哪里做这件事.沿着这条路线,其他可能影响的点:
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
,但是,我已经在一个普通的旧JUnit测试中重新创建了它.任何建议将不胜感激!
编辑: 感谢您的所有反馈.下面的评论,我已经添加@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
到父母,所以它现在:
public class …
Run Code Online (Sandbox Code Playgroud) 我遇到了NonUniqueObjectException
Hibernate抛出的问题.
阅读文档和这篇博客文章,我将调用替换update()
为merge()
,并解决了问题.
我相信我理解异常的原因,以及为什么更改方法在断开连接的对象和会话边界方面解决了问题.
我的问题是:鉴于它merge()
总会解析为会话对象,或者如果它不存在则检索它,调用merge()通常是一个比更安全的替代方案update()
吗?
使用merge()
结束有update()
什么缺点?
angular.module('myModule')
多次呼叫的行为是什么?
例如,我希望在单独的.js文件中定义我的路由和我的指令.
这样安全吗?
例如:
//routes.js
angular.module('app',['$strap'])
.config(function($routeProvider, $locationProvider) {
...
});
//directives.js
angular.module('app')
.directive('formInput', function() {
...
Run Code Online (Sandbox Code Playgroud)
此外,多次定义依赖项的影响是什么?这是添加剂还是最后一次胜利?
例如:
java ×6
angularjs ×3
hibernate ×3
javascript ×3
calendar ×1
collections ×1
date ×1
java-8 ×1
jpa ×1
lazy-loading ×1
macos ×1
orm ×1
orphan ×1
session ×1
set ×1
typescript ×1