小编Mar*_*itt的帖子

Java日期与日历

有人可以建议当前的"最佳实践" DateCalendar类型.

当编写新的代码,它是最好的总是青睐CalendarDate,还是有地方的情况Date是比较合适的数据类型?

java calendar date

358
推荐指数
10
解决办法
18万
查看次数

打字稿是否支持?运营商?(而且,它叫什么?)

Typescript目前(或有计划)支持安全导航操作员?.

即:

var thing = foo?.bar
// same as:
var thing = (foo) ? foo.bar : null;
Run Code Online (Sandbox Code Playgroud)

此外,这个运营商有一个更常见的名称(它很难谷歌).

typescript

255
推荐指数
8
解决办法
13万
查看次数

为什么java.util.Set没有get(int index)?

我确定这是一个很好的理由,但有人可以解释为什么java.util.Set界面缺乏get(int Index),或任何类似的get()方法?

似乎套装非常适合放入物品,但我找不到从中检索单个物品的优雅方式.

如果我知道我想要第一个项目,我可以使用set.iterator().next(),但是否则我似乎必须转换为数组来检索特定索引处的项目?

从集合中检索数据的适当方法是什么?(除了使用迭代器)

我确信它被排除在API之外意味着有一个很好的理由不这样做 - 有人可以开导我吗?

编辑: 这里有一些非常好的答案,还有一些说"更多背景".特定场景是一个dbUnit测试,我可以合理地断言查询返回的集只有一个项目,我试图访问该项目.

但是,没有这种情况,这个问题更有效,因为它仍然更受关注:

集合和列表之间有什么区别.

感谢所有人在下面的精彩答案.

java collections set data-structures

234
推荐指数
10
解决办法
19万
查看次数

AngularJS控制器的生命周期是什么?

有人可以澄清一下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重用的相同实例,还是创建了新实例?

  • 如果它是一个新实例,是什么触发了第一个实例的破坏?
  • 如果它被重用,这是如何工作的?(即,加载数据的方法似乎在创建控制器时运行)

javascript angularjs

199
推荐指数
1
解决办法
7万
查看次数

在指令中自定义模板

我有一个使用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)

javascript angularjs

98
推荐指数
3
解决办法
10万
查看次数

澄清术语:"保湿"实体:从数据库中获取属性

在ORM/Lazy加载实体的上下文中,我对术语"水合"的理解如下:

"Hydrating"描述了填充使用延迟加载获取的实体的一些或所有先前未填充的属性的过程.

例如:Author从数据库加载类:

@Entity
class Author
{
     @Id
     long id;
     List<Book> books;
}
Run Code Online (Sandbox Code Playgroud)

最初,books未填充集合.

据我所知,books从数据库加载集合的过程称为"保湿"集合.

这个定义是否正确,并且是常见的术语?我应该在这个过程中使用另一个更常见的术语吗?

java orm hibernate jpa lazy-loading

66
推荐指数
2
解决办法
2万
查看次数

升级到Java8后,javac仍显示1.7

我在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 …

java macos java-8

37
推荐指数
2
解决办法
4万
查看次数

Hibernate在更新集合时删除孤立

我发现从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(),那个集合中不存在书

这种"感觉"就像我没有冲洗会话或强制更新 - 但我不确定我应该在哪里做这件事.沿着这条路线,其他可能影响的点:

  • 我正在用装饰的JUnit测试中执行上述操作 @RunWith(SpringJUnit4ClassRunner.class)
  • 我最初在一个装饰的更新例程中遇到了这个问题@Transactional,但是,我已经在一个普通的旧JUnit测试中重新创建了它.

任何建议将不胜感激!

编辑: 感谢您的所有反馈.下面的评论,我已经添加@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)到父母,所以它现在:

public class …
Run Code Online (Sandbox Code Playgroud)

java hibernate orphan

30
推荐指数
2
解决办法
5万
查看次数

Hibernate:更新()下的merge()的缺点

我遇到了NonUniqueObjectExceptionHibernate抛出的问题.

阅读文档和这篇博客文章,我将调用替换update()merge(),并解决了问题.

我相信我理解异常的原因,以及为什么更改方法在断开连接的对象和会话边界方面解决了问题.

我的问题是:鉴于它merge()总会解析为会话对象,或者如果它不存在则检索它,调用merge()通常是一个比更安全的替代方案update()吗?

使用merge()结束有update()什么缺点?

java session hibernate

29
推荐指数
1
解决办法
4万
查看次数

AngularJS多次定义angular.module()

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)

此外,多次定义依赖项的影响是什么?这是添加剂还是最后一次胜利?

例如:

javascript angularjs

29
推荐指数
3
解决办法
3万
查看次数